SR-LIVO (LiDAR-Inertial-Visual Odometry and Mapping System with Sweep Reconstruction) is designed based on the framework of R3Live. We employ the sweep reconstruction method to align reconstructed sweeps with image timestamps. This allows the LIO module to accurately determine states at all imaging moments, enhancing pose accuracy and processing efficiency. In SR-LIVO, an ESIKF is utilized to solve state in LIO module, and utilize an ESIKF to optimize camera parameters in vision module respectively for optimal state estimation and colored point cloud map reconstruction.
SR-LIVO: LiDAR-Inertial-Visual Odometry and Mapping with Sweep Reconstruction
Authors: Zikang Yuan, Jie Deng, Ruiye Ming, Fengtian Lang and Xin Yang
SR-LIO: LiDAR-Inertial Odometry with Sweep Reconstruction
Authors: Zikang Yuan, Fengtian Lang, Tianle Xu and Xin Yang
SDV-LOAM: Semi-Direct Visual-LiDAR Odometry and Mapping
Authors: Zikang Yuan, Qingjie Wang, Ken Cheng, Tianyu Hao and Xin Yang
The colored point cloud map (left) and the x8 Real-Time Performance (right) on the sequence hku_campus_seq_00 of self-collected dataset from R3Live. On our currently hardware platform (Intel Core i7-11700 and 32 GB RAM) needs 30~34ms to handle a sweep with image under this environment.
New Features:
-
The Sweep Reconstruction module aligns the end timestamp of reconstructed sweep to the timestamp of captured image. Thus, the state of all image-captured moments can be solved by the more reliable LIO module instead of the hypersensitive VIO module.
-
In SR-LIVO, we utilize an ESIKF to solve state in LIO module, and utilize an ESIKF to optimize camera parameters in vision module respectively.
GCC >= 7.5.0
Cmake >= 3.16.0
Eigen3 >= 3.3.4
OpenCV >= 3.3
PCL == 1.8 for Ubuntu 18.04, and == 1.10 for Ubuntu 20.04
Ceres >= 1.14
OS | GCC | Cmake | Eigen3 | OpenCV | PCL | Ceres |
---|---|---|---|---|---|---|
Ubuntu 20.04 | 9.4.0 | 3.16.3 | 3.3.7 | 4.2.0 | 1.10.0 | 1.14 |
cd PATH_OF_LIVOX_ROS_DRIVER
source devel/setup.bash
cd ~
mkdir -p ~/SR-LIVO/src
cd SR-LIVO/src
git clone https://github.com/ZikangYuan/sr_livo.git
cd ..
catkin_make
Noted:
A. If you use the spinning LiDAR, please make sure the LiDAR point clouds have the "ring" channel information.
B. The warning message "Failed to find match for field 'time'." doesn't matter. It can be ignored.
C. Please create a folder named "output" before running. When SR-LIVO is running, the estimated pose is recorded in real time in the pose.txt located in the output folder.
D. we store the pose ground truth of the NTU_VIRAL dataset used by us as TUM format. Please download from Google drive.
1. Run on R3Live_Dataset
Before running, please type the following command to examine the image message type of ROS bag file:
rosbag info SEQUENCE_NAME.bag
If the image message type is sensor_msgs/Image, please type:
cd SR-LIVO
source devel/setup.bash
roslaunch sr_livo livo_r3live.launch
If the image message type is sensor_msgs/CompressedImage, please type:
cd SR-LIVO
source devel/setup.bash
roslaunch sr_livo livo_r3live_compressed.launch
Then open the terminal in the path of the bag file, and type:
rosbag play SEQUENCE_NAME.bag --clock -d 1.0
2. Run on NTU_VIRAL
Please go to the workspace of SR-LIVO and type:
cd SR-LIVO
source devel/setup.bash
roslaunch sr_livo livo_ntu.launch
Then open the terminal in the path of the bag file, and type:
rosbag play SEQUENCE_NAME.bag --clock -d 1.0
If you use our work in your research project, please consider citing:
@article{yuan2024sr,
author={Yuan, Zikang and Deng, Jie and Ming, Ruiye and Lang, Fengtian and Yang, Xin},
journal={IEEE Robotics and Automation Letters},
title={SR-LIVO: LiDAR-Inertial-Visual Odometry and Mapping With Sweep Reconstruction},
year={2024},
volume={9},
number={6},
pages={5110-5117}
}