/SDV-LOAM

[TPAMI 2023] A cascaded vision-LiDAR odometry and mapping system

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

SDV-LOAM

SDV-LOAM (LiDAR-Inertial Odometry with Sweep Reconstruction) is a cascaded vision-LiDAR odometry and mapping system, which consists of a LiDAR-assisted depth-enhanced visual odometry and a LiDAR odometry. At this stage, the released code is just the vision module of SDV-LOAM.

The implementation of our vision module is based on DSO, while we change it from monocular direct method to LiDAR-assisted semi-direct method with ROS interface. All the contributions of our vision module proposed in SDV-LOAM can be found in this code.

Related Work

SDV-LOAM: Semi-Direct Visual-LiDAR Odometry and Mapping

Authors: Zikang Yuan, Qingjie Wang, Ken Cheng, Tianyu Hao and Xin Yang

SR-LIVO: LiDAR-Inertial-Visual Odometry and Mapping with Sweep Reconstruction

Authors: Zikang Yuan, Jie Deng, Ruiye Ming, Fengtian Lang and Xin Yang

Installation

1. Requirements

GCC >= 5.4.0

Cmake >= 3.0.2

Eigen3 >= 3.2.8

PCL == 1.7 for Ubuntu 16.04, and == 1.8 for Ubuntu 18.04

ROS

Pangolin == 0.5 for Ubuntu 16.04

OpenCV == 2.4.9 for Ubuntu 16.04

Have Tested On:
OS GCC Cmake Eigen3 PCL Pangolin OpenCV
Ubuntu 16.04 5.4.0 3.16.0 3.2.8 1.7 0.5 2.4.9

2. Create ROS workspace

mkdir -p ~/SDV-LOAM/src
cd SDV-LOAM/src

3. Clone the directory and build

git clone https://github.com/ZikangYuan/SDV-LOAM.git sdv_loam
cd ..
catkin_make

Run on Public Datasets

Noted:

A. Both of the path of output pose, the path of camera parameters, the path of transformation parameters from LiDAR to camera, the ROS topic of images and LiDAR point clouds are set as the input parameters, users can change them on launch file.

B. The message type of input LiDAR point clouds must be sensor_msgs::PointCloud2.

C. There is some randomness in this code, and the result is not stable on part of sequences (e.g., KITTI-01). However, users can reproduce the results recorded in our paper by running it several times.

1. Generating ROS bag from KITTI-Odometry data

Both the frequency of images and LiDAR point clouds of KITTI-Odometry are 10 Hz, while they are strictly one-to-one. In addition, the motion distortion of LiDAR pont cluods have been calibrated in advance, therefore, users do not need to consider the effect of motion distortion when evaluation on KITTI-Odometry. Users can directly utilize the KITTI-Odometry to ROS bag tool to convert data of KITTI odometry to ROS bag format.

2. Generating ROS bag from KITTI-360 data

Both the frequency of images and LiDAR point clouds of KITTI-360 are 10 Hz, while they are strictly one-to-one. The motion distortion of LiDAR pont cluods have not been calibrated in advance, therefore, the motion calibration need to be processed in theory. However, we found that when the influence of motion distortion was taken into consideration in our visual module, the final pose estimation result would be worse. Therefore, we did not reserve the motion distortion module in this code. Users can also directly utilize the KITTI-360 to ROS bag tool to convert data of KITTI-360 to ROS bag format. Chinese users can also directly download KITTI-360 ROS bag from BaiDu Drive, while the password is d6w4.

3. Generating ROS bag from KITTI-CARLA data

Both the frequency of images and LiDAR point clouds of KITTI-CARLA are 10 Hz, while they are strictly one-to-one. The motion distortion of LiDAR pont cluods have not been calibrated in advance, but users can perform motion calibration using the KITTI-CARLA calibration tool. After motion calibration, users can also directly utilize the KITTI-CARLA to ROS bag tool to convert data of KITTI-CARLA to ROS bag format.

4. Run

After generating the ROS bag file, please go to the workspace of SDV-LOAM and type:

cd SDV-LOAM
source devel/setup.bash
roslaunch sdv_loam run.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{yuan2023sdv,
  author={Yuan, Zikang and Wang, Qingjie and Cheng, Ken and Hao, Tianyu and Yang, Xin},
  journal={IEEE Transactions on Pattern Analysis and Machine Intelligence}, 
  title={SDV-LOAM: Semi-Direct Visual–LiDAR Odometry and Mapping}, 
  year={2023},
  volume={45},
  number={9},
  pages={11203-11220},
}

Acknowledgments

Thanks for DSO.