ekf2-grav: accelerate tilt alignment

This commit is contained in:
bresch
2025-04-07 15:36:11 +02:00
committed by Mathieu Bresciani
parent c59101e8ed
commit 6a105bcbdb
2 changed files with 3 additions and 2 deletions
@@ -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<int32_t>(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);
@@ -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<int32_t>(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;