vectr-ucla / direct_lidar_inertial_odometry

[IEEE ICRA'23] A new lightweight LiDAR-inertial odometry algorithm with a novel coarse-to-fine approach in constructing continuous-time trajectories for precise motion correction.
MIT License
576 stars 115 forks source link

updateState not at the same timestamp in propagateState #11

Closed zerolover closed 1 year ago

zerolover commented 1 year ago

The propagateState is called every time an IMU message is received, while updateState update the state using Geometric Observer after scan to map. In Geometric Observer, errors between propagated and measured state are computed to perform state correction.

The timestamp of propagated state is at latest IMU timestamp(1678822355.936), while measured state is at Lidar timestamp(1678822355.870) if no motion correction, or median time of the scan(1678822355.870+0.025).

I think propagated state this->state and measured state pin/qin should describe state at the same timestamp.

Untitled

kennyjchen commented 1 year ago

Hi @zerolover -- yes, you are correct in that, ideally, the propagated and measured states should describe the same state at the same timestep when computing the observer's error. In practice though, sensor data comes in at different streams, and the LiDAR / IMU measurements may not temporally line up exactly. We haven't seen any significant issues with how we handle these two data streams and compute the error so far (especially since the time difference is quite small), but perhaps we will address this in a later release. Thanks for the question.