From 22c177c9514bc5023b7e44747c043097e16706de Mon Sep 17 00:00:00 2001 From: Paul Riseborough Date: Fri, 12 Feb 2016 14:34:12 +1100 Subject: [PATCH] EKF: Re-align yaw and magnetic field states when changing into GPS aiding mode --- EKF/control.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/EKF/control.cpp b/EKF/control.cpp index f071ab97e7..8420040d61 100644 --- a/EKF/control.cpp +++ b/EKF/control.cpp @@ -57,9 +57,15 @@ void Ekf::controlFusionModes() if (!_control_status.flags.gps) { if (_control_status.flags.tilt_align && (_time_last_imu - _time_last_gps) < 5e5 && _NED_origin_initialised && (_time_last_imu - _last_gps_fail_us > 5e6)) { - _control_status.flags.gps = true; + // Reset the yaw and magnetic field states + _control_status.flags.yaw_align = resetMagHeading(_mag_sample_delayed.mag); + + // If the heading is valid, reset the positon and velocity and start using gps aiding + if (_control_status.flags.yaw_align) { resetPosition(); resetVelocity(); + _control_status.flags.gps = true; + } } }