Patrick Pfreundschuh, Helen Oleynikova, Cesar Cadena, Roland Siegwart, and Olov Andersson. "COIN-LIO: Complementary Intensity-Augmented LiDAR Inertial Odometry" accepted at ICRA 2024. [ ArXiv | Video ]
Please cite our work if you are using COIN-LIO in your research.
@article{pfreundschuh2023coin,
title={COIN-LIO: Complementary Intensity-Augmented LiDAR Inertial Odometry},
author={Pfreundschuh, Patrick and Oleynikova, Helen and Cadena, Cesar and Siegwart, Roland and Andersson, Olov},
journal={arXiv preprint arXiv:2310.01235},
year={2023}
}
This package was developed on Ubuntu 20.04 using ROS Noetic. Other versions should also work but have not been tested and we do not guarantee support.
sudo apt-get install python3-catkin-tools libgoogle-glog-dev
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
catkin config --extend /opt/ros/$ROS_DISTRO
catkin config --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo
catkin config --merge-devel
cd ~/catkin_ws/src
git clone git@github.com:ethz-asl/coin-lio.git
cd COIN-LIO
catkin build coin_lio
To instead use docker, check out the repository locally, navigate to it, and:
cd docker/
./run_docker.sh -b
Which will build a docker image with a copy of the code checked out inside.
Your ~/data
folder will be mounted to /root/data
within the docker, so you
can download datasets and follow the rest of the tutorial below. On future runs,
you can simply use ./run_docker.sh
(without -b
) to not re-build the image.
The ENWIDE dataset sequences can be downloaded here. Run a sequence:
roslaunch coin_lio mapping_enwide.launch bag_file:=<example_bag_path.bag>
The Newer College Dataset sequences can be downloaded here. Run a sequence:
roslaunch coin_lio mapping_newer_college.launch bag_file:=<example_bag_path.bag>
Note on LiDAR type: COIN-LIO currently only supports data from Ouster LiDARs, as we use the calibration in the metadata file for the image projection model. Implementing different sensors is theoretically possible but requires a proper implementation of a projection model that works for the specific sensor. Contributions are welcome.
roslaunch coin_lio calibrate.launch bag_file:=<bag_path.bag> metadata_file:=<metadata_path.bag> point_topic:=<pointcloud_topic>
The evaluated column shift parameter will be printed at the end of the procedure.
Launch with settings for your data:
roslaunch coin_lio mapping.launch metadata_file:=<metadata_path.bag> column_shift:=<parameter from calibration> point_topic:=<pointcloud_topic> imu_topic:=<imu_topic>
Play your data:
rosbag play <bag_path.bag>
The line artifact removal filter can be tested and tuned using the provided notebook:
COIN-LIO builds on top of FAST-LIO2 for the point-to-plane registration. Our dashboard was inspired by DLIO. We thank the authors for open-sourcing their outstanding works.
We used ascii-image-converter for our ascii animation.