Multi - LiCa 多激光雷达标定

https://github.com/TUMFTM/Multi_LiCa

Multi - LiCa

Multi - LiDAR-to-LiDAR calibration framework for ROS 2 and non-ROS applications




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

Motion- and targetless multi - LiDAR-to-LiDAR Calibration Pipeline,
developed at the Institute of Automotive Technology, TUM

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

🐋 Docker Environment

  1. Build the Docker image:

    复制代码
    ./docker/build_docker.sh
  2. Run the container:

    复制代码
    ./docker/run_docker.sh

🖥 Local Build

  1. Install ROS2 humble (might work with other ROS2 distributions but wasn't tested):
    https://docs.ros.org/en/humble/Installation.html

  2. Create a ROS 2 workspace:

    复制代码
    mkdir -p ~/ros2_ws
    cd ~/ros2_ws
  3. Clone the repository:

    复制代码
    git clone git@github.com:TUMFTM/Multi_LiCa.git
  4. Install dependencies:

    复制代码
    cd Multi_LiCa
    pip install --no-cache-dir --upgrade pip
    pip install --no-cache-dir -r requirements.txt
  5. 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

  1. Configure the parameters to fit your data:

    复制代码
    vim config/<params-file>.yaml
  2. Launch the multi_lidar_calibrator node:

    复制代码
    ros2 launch multi_lidar_calibrator calibration.launch.py parameter_file:=/path/to/parameter/file

⚙️ Configuration

  • We provided a detailed parameter file with explanation with config/params.yaml

  • Configure config/params.yaml to fit your data. Depending on the application, you may need to specify the LiDARs, paths to .pcd files, or LiDAR topic names. You may also change GICP and RANSAC parameters.

  • In addition to LiDAR-to-LiDAR calibration, you can perform target LiDAR-to-ground/base calibration if your x,y translation and roll, yaw rotation are precisely known.

    If you are using to-base calibration, you may choose a URDF file to save the calibration so that it can be directly used in your ROS robot-state-publisher.

  • When running in a container, ensure that your local and container environments have the same ROS_DOMAIN_ID. If not, set it to be the same with export ROS_DOMAIN_ID=<ID>.

  • When using ROS 2, verify that the transformation guess is published on the /tf_static topic and that the data is published for all specified LiDARs.

🎞️ Demo

On default, the tool will launch a demo with data from OpenCalib.

It will open a window and will display three pointclouds and their initial transforms. You can inspect the files in the interactive window. After closing the window (press Q), the tool will calculate the transformations ans will print the results to the terminal, write them to the output directory and will display a windows with the transformed pointclouds.

Other OSS Calibration Frameworks

相关推荐
联犀12 小时前
如何工程化降低语音交互AI设备的延迟(小智ai,芙崽这样的ai设备)
人工智能
杉岩数据12 小时前
杉岩数据董事长陈坚:从数据存储到行业智能——杉岩的AI时代战略布局
人工智能
冬奇Lab12 小时前
Loop 工程到底是高深的新技术,还是炒冷饭?用训练一个识别狗的模型讲明白
人工智能
冬奇Lab12 小时前
一天一个开源项目(第260篇):Plannotator —— 给 AI 编码 Agent 配一块「可批注的审阅台」,计划和代码改动都能在浏览器里逐条批示
人工智能·开源·claude
泯泷12 小时前
语音,正在成为 AI Agent 最自然的接口
人工智能·llm·agent
杨凯凡13 小时前
IT日报|2026-11-13:GitHub 大规模凭据攻击、Signal 形式化验证、Claude 新模型与 AI 安全诉讼
人工智能·安全·github
一个天蝎座 白勺 程序猿14 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习
伞伞悦读14 小时前
【第83期】特征选择中的验证泄漏排查的实验与排查
人工智能·深度学习·机器学习
用户6976256825614 小时前
用 Alook 把本机编程 agent 拉进频道:Pi + MiniMax 实操
人工智能
P1Browser14 小时前
账号触发平台安全审核?拆解标准申诉流程与材料清单
大数据·人工智能·安全·多账号管理·指纹浏览器·账户安全·运营合规