EKF: Ensure normal yaw alignment using mag is performed if GPS method is not

This commit is contained in:
Paul Riseborough
2017-07-08 11:13:40 +02:00
committed by Lorenz Meier
parent d446f66105
commit ec2b54fde7
2 changed files with 14 additions and 6 deletions
+4 -4
View File
@@ -1050,7 +1050,7 @@ void Ekf::controlMagFusion()
if (!_control_status.flags.mag_3D) {
if (!_flt_mag_align_complete) {
// If we are flying a vehicle that flies forward, eg plane, then we can use the GPS course to check and correct the heading
if (_control_status.flags.fixed_wing) {
if (_control_status.flags.fixed_wing && _control_status.flags.in_air) {
_control_status.flags.yaw_align = realignYawGPS();
_flt_mag_align_complete = _control_status.flags.yaw_align;
} else {
@@ -1069,9 +1069,9 @@ void Ekf::controlMagFusion()
}
}
// use 3D mag fusion when airborne
_control_status.flags.mag_hdg = false;
_control_status.flags.mag_3D = true;
// only use one type of mag fusion at the same time
_control_status.flags.mag_3D = _flt_mag_align_complete;
_control_status.flags.mag_hdg = !_control_status.flags.mag_3D;
} else {
// save magnetic field state variances for next time