Home

Awesome

GRIL-Calib [ROS1 / ROS2]

Official implementation of our paper "GRIL-Calib: Targetless Ground Robot IMU-LiDAR Extrinsic Calibration Method using Ground Plane Motion Constraints".

About GRIL-Calib

<p align="center"><img src="./figs/GRIL-Calib-overview.png" width = "500" ></p>

🚀 ROS2 Support

If you want to use ROS2 version, check out humble branch.

Prerequisites (ROS1 version)

Set up your environment easily with Docker! 🐳

Requires Docker and the NVIDIA Container Toolkit installed.

1. Enter the /docker folder and make a docker image.

git clone https://github.com/Taeyoung96/GRIL-Calib.git
cd GRIL-Calib/docker
docker build -t gril-calib .

When you have finished it, use the command docker images and you can see the output below.

REPOSITORY                   TAG                   IMAGE ID         CREATED          SIZE
gril-calib                   latest                9f90339349a0     5 months ago     3.78GB

2. Make docker container (same path as above)

In /docker,

sudo chmod -R 777 container_run.sh
./container_run.sh <container_name> <image_name:tag>

:warning: You should change {container_name}, {docker image} to suit your environment.

./container_run.sh gril-calib-container gril-calib:latest 

If you have successfully created the docker container, the terminal output will be similar to the below.

================Gril-Calib Docker Env Ready================
root@taeyoung-cilab:/root/catkin_ws#

3. Build and run GRIL-Calib

Inside the docker container, build and run the package.

catkin_make
source devel/setup.bash

Run with a public dataset

The launch files for M2DGR, HILTI, and S3E, as experimented with in the paper, are shown below.

roslaunch gril_calib m2dgr_xxxx.launch
roslaunch gril_calib hilti_xxxx.launch
roslaunch gril_calib s3e_xxxx.launch

After running the launch file, you simply run the bag file for each sequence.

Run with your custom data

:warning: This version only supports Spinning LiDAR (Velodyne, Ouster), not Solid-state LiDAR.

The reason for this is that the LiDAR ground segmentation algorithm has only been tested on Spinning LiDAR.
If we could achieve ground segmentation, we could theoretically do it for a Solid-state LiDAR like Livox Avia.

Important parameters

Similar to LI-Init, edit config/xxx.yaml to set the below parameters:

Acknowledgments

Thanks to hku-mars/LiDAR_IMU_Init for sharing their awesome work!
We also thanks to url-kaist/patchwork-plusplus-ros for sharing LiDAR ground segmentation algorithm.

Citation

If you find our paper useful in your research, please cite us using the following entry:

@ARTICLE{10506583,
  author={Kim, TaeYoung and Pak, Gyuhyeon and Kim, Euntai},
  journal={IEEE Robotics and Automation Letters}, 
  title={GRIL-Calib: Targetless Ground Robot IMU-LiDAR Extrinsic Calibration Method Using Ground Plane Motion Constraints}, 
  year={2024},
  volume={9},
  number={6},
  pages={5409-5416},
  keywords={Calibration;Laser radar;Robot sensing systems;Robots;Optimization;Odometry;Vectors;Calibration and identification;sensor fusion},
  doi={10.1109/LRA.2024.3392081}}