forked from Archive/PX4-Autopilot
EKF: Don't make detection of indoor operation dependent on optical flow
This is required because it can take several seconds for an optical flow sensor operation to be confirmed and there are also many use cases for indoor operation where no optical flow is used.
This commit is contained in:
parent
1562a82dc2
commit
f59cd0f5b0
|
@ -1400,13 +1400,8 @@ void Ekf::controlMagFusion()
|
|||
_control_status.flags.mag_dec = false;
|
||||
}
|
||||
|
||||
// If optical flow is enabled there is no other aiding active and GPS checks are failing, then assume that we are operating
|
||||
// indoors and the magnetometer is unreliable. Becasue the optical flow sensor is body fixed, absolute yaw
|
||||
// wrt North is not required for navigation and it is safer not to use the magnetometer.
|
||||
if (((_params.fusion_mode & MASK_USE_OF) || _mag_use_inhibit)
|
||||
&& !_control_status.flags.gps
|
||||
&& !_control_status.flags.ev_pos
|
||||
&& ((_time_last_imu - _last_gps_pass_us > (uint64_t)5e6) || !(_params.fusion_mode & MASK_USE_GPS))) {
|
||||
// If GPS is not being used and there is no other earth frame aiding, assume that we are operating indoors and the magnetometer is unreliable.
|
||||
if ((!_control_status.flags.gps || !(_params.fusion_mode & MASK_USE_GPS)) && !_control_status.flags.ev_pos) {
|
||||
_mag_use_inhibit = true;
|
||||
} else {
|
||||
_mag_use_inhibit = false;
|
||||
|
|
Loading…
Reference in New Issue