From ff39b360f7825544a4911bda5ca900f480a8e9ac Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Mon, 13 Mar 2023 10:08:48 -0400 Subject: [PATCH] ekf2: update mag calibration requirements --- src/modules/ekf2/EKF2.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/modules/ekf2/EKF2.cpp b/src/modules/ekf2/EKF2.cpp index d7d977f97c..47be2e716f 100644 --- a/src/modules/ekf2/EKF2.cpp +++ b/src/modules/ekf2/EKF2.cpp @@ -2283,10 +2283,16 @@ void EKF2::UpdateGyroCalibration(const hrt_abstime ×tamp) void EKF2::UpdateMagCalibration(const hrt_abstime ×tamp) { - const bool bias_valid = (_ekf.control_status_flags().mag_hdg || _ekf.control_status_flags().mag_3D) + const bool bias_valid = (_param_ekf2_mag_type.get() == static_cast(MagFuseType::AUTO) + || _param_ekf2_mag_type.get() == static_cast(MagFuseType::MAG_3D)) + && _ekf.control_status_flags().tilt_align + && _ekf.control_status_flags().yaw_align && _ekf.control_status_flags().mag_aligned_in_flight + && (_ekf.fault_status().value == 0) && !_ekf.control_status_flags().mag_fault - && !_ekf.control_status_flags().mag_field_disturbed; + && !_ekf.control_status_flags().mag_field_disturbed + && !_ekf.warning_event_flags().stopping_mag_use + && !_ekf.warning_event_flags().emergency_yaw_reset_mag_stopped; const bool learning_valid = bias_valid && _ekf.control_status_flags().mag_3D; @@ -2294,7 +2300,7 @@ void EKF2::UpdateMagCalibration(const hrt_abstime ×tamp) bias_valid, learning_valid); // update stored declination value - if (!_mag_decl_saved) { + if (!_mag_decl_saved && !_ekf.control_status_flags().in_air) { float declination_deg; if (_ekf.get_mag_decl_deg(&declination_deg)) {