I am trying to understand the implementation of EKF. The one thing that’s confusing is the delayed fusion time horizon. After reading through the code, this is what I came up with. But I want to confirm if it’s in even close to being correct.
So basically, _imu_buffer_length
is decided based on the maximum of each sensor’s delay. Current time
is when you get a sensor data to fuse. And the delayed fusion time horizon
is when you’re applying the correction to the output states.
In every Ekf::update()
loop the states are predicted using _imu_sample_delayed
and _output_sample_delayed
, then the correction is calculated using _imu_sample_new
which is applied to the _output_buffer
.
Thanks!