ouster-ros
ouster-ros copied to clipboard
Point cloud motion compensation option
Is your feature request related to a problem? Please describe. Platform motion while the lidar is scanning can cause point cloud distortion which can get more pronounced as the linear velocity and/or angular rotation increases.
Describe the solution you'd like Use the internal IMU and external parameters (as needed) to perform motion compensation (e.g. https://www.mathworks.com/help/lidar/ug/motion-compensation-in-lidar-point-cloud.html). This could also enable more accurate sensor fusion when two or more lidars are present on a single platform.
Describe alternatives you've considered Make modifications to the driver and/or perform motion compensation external to the native driver prior to other nodes using the lidar data.
It would be great to have something from Ouster doing so. Meanwhile, you can try to do something similar to this:
Getting the emu information: https://github.com/chinitaberrio/SC-LeGO-LOAM/blob/ddc8315caa1be3132fd30255c8d823c453d58407/SC-LeGO-LOAM/LeGO-LOAM/src/mapOptmization.cpp#L669 Applying the transformations to the points: https://github.com/chinitaberrio/SC-LeGO-LOAM/blob/ddc8315caa1be3132fd30255c8d823c453d58407/SC-LeGO-LOAM/LeGO-LOAM/src/mapOptmization.cpp#L484
Or if you have an odometry source: https://github.com/ethz-asl/lidar_undistortion