Repository Summary
Description | Multi - LiDAR-to-LiDAR calibration framework for ROS2 and non-ROS applications |
Checkout URI | https://github.com/tumftm/multi_lica.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-02-17 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | calibration lidar av |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
multi_lidar_calibrator | 0.0.1 |
README
Multi - LiCa
Multi - LiDAR-to-LiDAR calibration framework for ROS 2 and non-ROS applications [](https://www.linux.org/) [](https://www.docker.com/) [](https://docs.ros.org/en/humble/index.html) [](https://arxiv.org/abs/2501.11088) [](https://doi.org/10.1109/MFI62651.2024.10705773)
Introduction
This project provides an extrinsic calibration framework for quickly calibrating multiple LiDAR sensors. It employs the Generalized Iterative Closest Point (GICP) algorithm for LiDAR-to-LiDAR extrinsic calibration and uses the RANdom SAmple Consensus (RANSAC) method to calibrate the pitch and z-distance to the ground of a single LiDAR, assuming other coordinates are known.
It has proven to be robust for different sensor setups and environments without the need of an initial guess.
We use a FPFH-based feature vector creation with an TEASER++ feature matching for the coarse alignment, which is used as initial guess for the GICP algorithm.
Overview

Limitations
- Our tool was specifically developed for motionless calibration.
- We assume that each LiDAR to be calibrated has either a directly overlapping FOV with the target LiDAR FOV or has overlap with other LiDAR(s) with overlap to the target. This can be cascading dependency to the target.
- We assume that the ground is flat and the environment is static.
- Input point clouds for the calibration are in sensor_msgs/PointCloud2 or in .pcd format.
Prerequisites
The bare minimum requirement for our tool is a Linux-based OS and Docker, as we provide a Docker image with our framework.
You do not need to build anything locally, but you are free to do so as described in the following section.
For the local build, you will need ROS 2 - humble, Python 3.10 with opend3d, scipy, ros2_numpy and pandas (optional).
Installation and Usage
We use submodules, therefore, use git clone --recurse-submodules git@github.com:TUMFTM/Multi_LiCa.git
🐋 Docker Environment
- Build the Docker image:
./docker/build_docker.sh
- Run the container:
./docker/run_docker.sh
🖥 Local Build
-
Install ROS2 humble (might work with other ROS2 distributions but wasn’t tested): https://docs.ros.org/en/humble/Installation.html
-
Create a ROS 2 workspace:
mkdir -p ~/ros2_ws
cd ~/ros2_ws
- Clone the repository:
git clone --recurse-submodules git@github.com:TUMFTM/Multi_LiCa.git
- Install dependencies:
cd Multi_LiCa
pip install --no-cache-dir --upgrade pip
pip install --no-cache-dir -r requirements.txt
- Source the ROS 2 environment and build the project using
colcon
:
source /opt/ros/$ROS_DISTRO/setup.bash
colcon build --symlink-install --packages-up-to multi_lidar_calibrator --cmake-args -DCMAKE_BUILD_TYPE=Release
⏯️ Usage
- Configure the parameters to fit your data:
vim config/<params-file>.yaml
File truncated at 100 lines see the full file