diff --git a/src/modules/ekf2/EKF/aid_sources/fake_pos_control.cpp b/src/modules/ekf2/EKF/aid_sources/fake_pos_control.cpp index 3e244412ab..c69c8c9150 100644 --- a/src/modules/ekf2/EKF/aid_sources/fake_pos_control.cpp +++ b/src/modules/ekf2/EKF/aid_sources/fake_pos_control.cpp @@ -78,7 +78,7 @@ void Ekf::controlFakePosFusion() const bool enable_valid_fake_pos = _control_status.flags.constant_pos || _control_status.flags.vehicle_at_rest; const bool enable_fake_pos = !enable_valid_fake_pos && (getTiltVariance() > sq(math::radians(3.f))) - && !(_params.imu_ctrl & static_cast(ImuCtrl::GravityVector)) + && !_control_status.flags.gravity_vector && _horizontal_deadreckon_time_exceeded; _control_status.flags.fake_pos = runFakePosStateMachine(enable_fake_pos, _control_status.flags.fake_pos, aid_src); diff --git a/src/modules/ekf2/EKF/aid_sources/gravity/gravity_fusion.cpp b/src/modules/ekf2/EKF/aid_sources/gravity/gravity_fusion.cpp index 8442e73d3b..bf8d47c539 100644 --- a/src/modules/ekf2/EKF/aid_sources/gravity/gravity_fusion.cpp +++ b/src/modules/ekf2/EKF/aid_sources/gravity/gravity_fusion.cpp @@ -61,7 +61,8 @@ void Ekf::controlGravityFusion(const imuSample &imu) // fuse gravity observation if our overall acceleration isn't too big _control_status.flags.gravity_vector = (_params.imu_ctrl & static_cast(ImuCtrl::GravityVector)) && (accel_lpf_norm_good || _control_status.flags.vehicle_at_rest) - && !isHorizontalAidingActive(); + && !isHorizontalAidingActive() + && _control_status.flags.tilt_align; // Let fake position do the initial alignment (more robust before takeoff) // calculate kalman gains and innovation variances Vector3f innovation = _state.quat_nominal.rotateVectorInverse(Vector3f(0.f, 0.f, -1.f)) - measurement;