diff --git a/EKF/control.cpp b/EKF/control.cpp index 698029e521..3300bef2ae 100644 --- a/EKF/control.cpp +++ b/EKF/control.cpp @@ -1393,11 +1393,12 @@ void Ekf::controlMagFusion() } // If optical flow is the only aiding source and GPS checks are failing, then assume that we are operating - // indoors and the magnetometer is unreliable. + // 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 (_control_status.flags.opt_flow && !_control_status.flags.gps && !_control_status.flags.ev_pos - && ((_last_gps_fail_us - _time_last_imu) < 5E6)) { + && ((_time_last_imu - _last_gps_pass_us) > 5E6)) { _mag_use_inhibit = true; } else { _mag_use_inhibit = false;