Continuous-Time Fixed-Lag Smoothing for LiDAR-Inertial-Camera SLAM
CLIC is a tightly-coupled multi-modal SLAM algorithms based on continuous-time fixed-lag smoothing, it supports a variety of sensor combinations, like the LiDAR-inertial and LiDAR-inertial-camera SLAM systems, and online timeoffset calibration is also naturally supported. More importantly, benefiting from the marginalization and the derived analytical Jacobians for optimization, the proposed continuous-time SLAM systems can achieve real-time performance regardless of the high complexity of continuous-time formulation.
Factor graphs of multi-sensor fusion. For more details, please refer to the paper. [arxiv]
-
ROS (tested with Melodic)
-
Eigen3
-
Ceres 1.14
-
OpenCV 3.3
-
yaml-cpp
sudo apt-get install libyaml-cpp-dev
-
Sophushas been included insrc/sophus_lib
mkdir -p ~/catkin_clic/src
cd ~/catkin_clic/src
git clone https://github.com/APRIL-ZJU/clic.git
git clone https://github.com/Livox-SDK/livox_ros_driver.git
cd ~/catkin_clic
catkin_make
source devel/setup.bash
-
Download ntu_viral_dataset or newer_college_dataset or LVI dataset or livox dataset.
-
Configure parameters in the
config/ct_odometry_***.yaml
file.config_path
: the path ofconfig
folderbag_path
: the file path of rosbag
-
Run on ntu viral dataset for example.
roslaunch clic odometry.launch config_path:=config/ct_odometry_ntu.yaml
The estimated trajectory is saved in the folder
./src/clic/data
.
This code was developed by Jiajun Lv and Xiaolei Lang from APRIL Lab in Zhejiang University.
For researchers that have leveraged or compared to this work, please cite the following:
@article{lv2023continuous,
title={Continuous-Time Fixed-Lag Smoothing for LiDAR-Inertial-Camera SLAM},
author={Lv, Jiajun and Lang, Xiaolei and Xu, Jinhong and Wang, Mengmeng and Liu, Yong and Zuo, Xingxing},
journal={IEEE/ASME Transactions on Mechatronics},
year={2023},
publisher={IEEE}
}
- The spline module is adapted from basalt.
- The lidar fearure module is adapted from LIO-SAM and loam_livox.
- The visual module is adapted from VINS-Mono.
- The IMU initializer module is adapted from open_vins.
Thanks for their excellent job!
The code is released under the GNU General Public License v3 (GPL-3).