/sr_livo

A LiDAR-inertial-visual odometry and mapping system based on the sweep reconstruction method

Primary LanguageC++GNU General Public License v2.0GPL-2.0

SR_LIVO

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.

Related Work

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

Demo Video (2023-12-28 Update)

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.

Pipeline

New Features:

  1. 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.

  2. 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.

Installation

1. Requirements

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

ROS

Livox_ROS_Driver

Have Tested On:
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

2. Create ROS workspace

cd PATH_OF_LIVOX_ROS_DRIVER
source devel/setup.bash
cd ~
mkdir -p ~/SR-LIVO/src
cd SR-LIVO/src

3. Clone the directory and build

git clone https://github.com/ZikangYuan/sr_livo.git
cd ..
catkin_make

Run on Public Datasets

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

Citation

If you use our work in your research project, please consider citing:

@article{yuan2023sr,
  title={SR-LIVO: LiDAR-Inertial-Visual Odometry and Mapping with Sweep Reconstruction},
  author={Yuan, Zikang, Deng, Jie, Ming, Ruiye, Lang, Fengtian and Yang, Xin},
  journal={arXiv preprint arXiv:2312.16800},
  year={2023}
}

Acknowledgments

Thanks for R3Live, CT-ICP, Fast-LIO and Open-VINs.