You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As far as I understand it, time1 is the stamp into which the state should be propagated, timestamp is the latest IMU stamp (the method is essentially called in the ROS IMU callback) and cache_t_off is the calibrated IMU-camera time offset. But if the time offset is defined as t_imu = t_cam + cache_t_off, i.e., the delay of camera messages, then it shouldn't be added to the IMU timestamps. It causes that the state is propagated much further into future than the latest available IMU measurement, which requires linear extrapolation using
In my case the state is extrapolated into the future by about 0.04 s each time, producing quite jerky behavior, which is mostly visible in the twist values. Sometimes it even causes large outliers because the IMU that I'm using sometimes produces data with incorrect timestamps. See the image - the red data is the original output, the blue data is output when i changed the code to be just double time1 = timestamp;.
The text was updated successfully, but these errors were encountered:
Hi, I think I found a bug in the propagation of IMU measurements.
The problematic code:
open_vins/ov_msckf/src/state/Propagator.cpp
Line 154 in 17b73cf
As far as I understand it,
time1
is the stamp into which the state should be propagated,timestamp
is the latest IMU stamp (the method is essentially called in the ROS IMU callback) andcache_t_off
is the calibrated IMU-camera time offset. But if the time offset is defined ast_imu = t_cam + cache_t_off
, i.e., the delay of camera messages, then it shouldn't be added to the IMU timestamps. It causes that the state is propagated much further into future than the latest available IMU measurement, which requires linear extrapolation usingopen_vins/ov_msckf/src/state/Propagator.h
Line 154 in 17b73cf
In my case the state is extrapolated into the future by about 0.04 s each time, producing quite jerky behavior, which is mostly visible in the
twist
values. Sometimes it even causes large outliers because the IMU that I'm using sometimes produces data with incorrect timestamps. See the image - the red data is the original output, the blue data is output when i changed the code to be justdouble time1 = timestamp;
.The text was updated successfully, but these errors were encountered: