This project is used for lidar point cloud undistortion. During the recording process, the lidar point cloud has naturally the distortion due to the affect of ego motion. Using the interpolation of ego motion, the distortion can be eliminated by transforming each point to the frame head or tail coordinate. Figures below show an example of undistortion. The left figure shows the row point cloud. The right figure shows the result of rotation distortion deskew. This repo is basically an addaptation of the following code made by Livox on ROS2.
Data type: rosbag
Topics:
- /livox/lidar type: sensor_msgs::msg::PointCloud2
- /livox/imu type: sensor_msgs::msg::Imu
- ROS2
- PCL
In your work space
colcon build
source install/setup.bash
ros2 run deskew-livox deskew_node
The member function UndistortPcl of the class ImuProcess defined in the header data_process.h, is used for the point cloud undistortion. The parameter Sophus::SE3d Tbe is the egomotion. If you can provide ego motion, just call this function. Otherwise, the function Process (also a member function of the class ImuProcess) is anothor choice, which uses the IMU data to deskew the rotation distortion.