[ICIP 2024] IMU-assisted Target-free Extrinsic Calibration of Heterogeneous LiDARs Based on Continuous-time Optimization
This is the repo. of IA-HeLiC, a calibration framework of heterogeneous LiDAR systems assisted by IMU. In this repo., we provided a ROS catkin package implementing IA-HeLiC.
Our paper is now published on ICIP 2024. Check out this link: IMU-assisted Target-free Extrinsic Calibration of Heterogeneous LiDARs Based on Continuous-time Optimization
This package runs on Ubuntu 20.04.6 LTS (Focal Fossa) with ROS Noetic, and requires the following libraries:
Library | Version |
---|---|
Boost | 1.71.0 |
Ceres | 1.14.0 |
Eigen | 3.3 |
fmt | 10.0.0 |
glog | 0.4.0 |
Kontiki | (included) |
Livox ROS Driver | 2.6.0 |
Livox-SDK | 2.2.0 |
OpenCV | 4.2.0 |
OpenMP | |
PCL | 1.10.0 |
ndt_omp | commit 0852c95 |
Sophus | 1.22.10 |
-
Run the following command in the terminal:
sudo apt-get install libboost-dev libceres-dev libceres1 libeigen3-dev libgoogle-glog-dev libopencv-dev libpcl-dev
-
Follow the installation guide of Livox-SDK.
-
Download fmt, ndt_omp and Sophus, and install them:
# install fmt git clone https://github.com/fmtlib/fmt.git cd fmt/ mkdir build && cd build cmake .. && make && sudo make install # install ndt_omp git clone https://github.com/koide3/ndt_omp.git cd ndt_omp/ mkdir build && cd build cmake .. && make && sudo make install # install Sophus git clone https://github.com/strasdat/Sophus.git cd Sophus/ mkdir build && cd build cmake .. && make && sudo make install
Put this package in a ROS workspace along with Livox ROS Driver and compile this package before running:
cd catkin_ws/
mkdir -p src/
cd src && catkin_init_workspace
git clone https://github.com/Livox-SDK/livox_ros_driver.git
git clone https://github.com/Yan-1999/IA-HeLiC.git
cd ..
catkin_make
IMPORTENT: Due to the data size, please ensure that you have at least 48G memory (32G pysical + 16G swap recommended) when running IA-HeLiC with these data sequences.
Download our dataset (Baidu Netdisk link, password: pqvm), and then edit the LiDAR trajectoy paths and output file path in config/calib_node.yaml
accordingly. It's highly recommended to decompress the bags first for faster reading speed:
# subsitute with your bag path
rosbag decompress /path/to/your/bag/seqX.bag
Then run the following command to calibrate (don't forget to source the setup.bash
first):
# subsitute with your bag path
roslaunch ia_helic calib_node.launch bag_path:=/path/to/your/bag/seqX.bag
Then you will see the calibration file in the path you given.
Preprocess the sensor data with LiDAR odometries is required to obtain LiDAR trajectoies. We've tested our IA-HeLiC with the following odometries:
Please provide IA-HeLiC with the LiDAR odometries in TUM format:
timestamp x y z q_x q_y q_z q_w
and the ROS bag with sensor data. Extrinsics between IMU and LiDAR are not required by IA-HeLiC.
Then edit the lidar_types
, lidar_odoms
, topics
and imu_acc_scale_by
items in config/calib_node.yaml
accordingly.
And now you are ready for calibration:
# subsitute with your bag path
roslaunch ia_helic calib_node.launch bag_path:=/path/to/your/bag/seqX.bag
@INPROCEEDINGS{10648154,
author={Yan, Zehao and Zhang, Lin and Wang, Zhong and Zhao, Shenjie},
booktitle={2024 IEEE International Conference on Image Processing (ICIP)},
title={IMU-Assisted Target-Free Extrinsic Calibration of Heterogeneous Lidars Based on Continuous-Time Optimization},
year={2024},
volume={},
number={},
pages={3327-3333},
keywords={Performance evaluation;Laser radar;Accuracy;Source coding;Data integration;Robot sensing systems;Calibration;LiDAR extrinsic calibration;target-free calibration;mechanical spinning LiDAR;solid-state LiDAR;LiDAR data fusion},
doi={10.1109/ICIP51287.2024.10648154}}
This implementation is based on the work of LVI-ExC and LI-Calib.