- 一、引言
-
二、基于标定物(Target-based)的联合标定方法
- 2.1 机械式与固态激光雷达硬件差异
-
2.2 机械式激光雷达
- 2.2.1 机械式 LiDAR 的困境与对策
-
2.2.2 机械式激光雷达与相机联合标定算法
- 2.2.2.1 lidar_camera_calibration (2017c)
- 2.2.2.2 ILCC (2017p)
- 2.2.2.3 plycal (2018c)
- 2.2.2.4 Matlab Lidar Toolbox (2018m)
- 2.2.2.5 extrinsic_lidar_camera_calibration (2020m)
- 2.2.2.6 velo2cam_calibration (2021c)
- 2.2.2.7 multiple-cameras-and-3D-LiDARs-extrinsic-calibration(2021)
- 2.2.2.8 cam_lidar_calibration(2024c)
- 2.3 固态激光雷达
- 三、无标定物的方法 (Targetless / Self-Calibration)
- 四、开源自动驾驶标定工具套件
一、引言
在自动驾驶的感知系统中,多传感器融合(Sensor Fusion)是通往高阶自动驾驶的必经之路。无论是前融合(Early Fusion)中的点云着色(Point Painting),还是后融合中的目标级关联,精准的联合标定(Extrinsic Calibration)都是一切算法生效的前提。
自动驾驶多传感器融合的前提是统一时空坐标系,LiDAR 与相机联合标定,就是求解从 LiDAR 坐标系到相机坐标系的刚体变换矩阵(旋转 和平移
),数学表达为将雷达坐标系下的点
投影到像素坐标系
。
其中 是相机的内参。
然而,在实际工程调研中,很多开发者会感到困惑:为什么有的方法一定要用巨大的棋盘格?为什么有的方法对 64 线雷达好用,换了 Livox 就跑不通?
本文将拨开算法的迷雾,从有无标定物(Target)与硬件特性差异两个维度,系统梳理激光雷达与相机的联合标定方案。

二、基于标定物(Target-based)的联合标定方法
2.1 机械式与固态激光雷达硬件差异
基于标定物的方法 (Target-based)是目前最成熟、真值(Ground Truth)最可信的方案,常用于工厂产线标定。
在深入算法之前,我们必须先理解一个在很多论文中被忽略,但对工程落地至关重要的因素:LiDAR 的硬件扫描方式。
-
机械旋转式 LiDAR (Mechanical / Spinning):
特征:360° 扫描,线束分明(如 16/32/64/128 线)。垂直分辨率较低,线与线之间存在明显的物理空隙。
痛点:在稀疏的点云中,很难精确找到一个“角点”。
-
固态/半固态 LiDAR (Solid-state / MEMS / Prism):
特征:FOV 固定,但扫描方式多样(如 Livox 的非重复扫描)。
优势:静止积分一段时间后,点云密度极高,甚至能生成类似灰度图的密集图像。
正是这种硬件差异,决定了我们在“有标定板”场景下的策略分歧。
2.2 机械式激光雷达
2.2.1 机械式 LiDAR 的困境与对策
如果我们直接用传统的棋盘格(Checkerboard)去标定一个 16 线或 32 线雷达,你会发现雷达扫在板子上的点只是几条稀疏的平行线。你根本无法在这些平行线上找到棋盘格那精确的“十字角点”。
解决方案:
3D-Line to 2D-Line(线面约束):不找角点,而是利用标定板的边缘直线与图像边缘拟合。
特殊几何靶标:放弃棋盘格,使用带圆孔的平板或三角锥。
原理:虽然角点难抓,但圆心容易拟合。即便线束稀疏,打在圆孔边缘的点也能通过拟合算法估算出圆心位置,实现 3D-2D 的点对点(PnP)求解。
2.2.2 机械式激光雷达与相机联合标定算法
2.2.2.1 lidar_camera_calibration (2017c)
来自印度IIIT Robotics Research Lab,ROS package (C++)实现, 介绍了两种方法。 第一种方法是基于2D-3D correspondence,采用中空矩形纸板作为目标,在图像上手动标记角点2D像素,在点云中手动框选线段,利用直线相交求解3D角点,然后利用PnP+ransac求解外参。缺点是手动标记像素点,误差较大。

第二种方法是基于3D-3D correspondence,与方法一主要区别是图像中特征的提取。通过采用ArUco二维码,可直接计算出角点在相机坐标系的3D坐标,然后利用ICP求解外参。

- github开源:https://github.com/ankitdhall/lidar_camera_calibration
- 参考论文:LiDAR-Camera Calibration using 3D-3D Point correspondences (2017)
2.2.2.2 ILCC (2017p)
来自日本名古屋大学Nagoya University,python实现。完整流程如下:

该方法的3D角点提取方式比较独特。基于点云反射强度和chessboard颜色模式的相关性,利用一个chessboard model来拟合(匹配)分割的点云,从而利用chessboard model的角点位置表示chessboard点云中角点位置。

- github开源:https://github.com/mfxox/ILCC
- 参考论文:2017_Remot Sensing_Reflectance Intensity Assisted Automatic and Accurate Extrinsic Calibration of 3D LiDAR and Panoramic Camera Using a Printed Chessboard
2.2.2.3 plycal (2018c)
来自HKUST,C++实现。
采用要给矩形板作为target。首先对激光雷达和相机时间同步,图像纠正。全自动地在图像中提取矩形板角点和边缘,在点云中提取矩形板的边缘和平面点。矩形特征2D-3D匹配。采用point-to-line和point-inside-polygon约束进行优化。

- github开源: https://github.com/ram-lab/plycal
- 参考论文:2018_ROBIO_Extrinsic Calibration of Lidar and Camera with Polygon
2.2.2.4 Matlab Lidar Toolbox (2018m)
使用了chessboard, 理论上采集一个pose就可以求解。 特征提取分别自动提取chessboard在相机和激光雷达坐标系的平面和边缘信息,利用line correspondence (direction constraint + point to line constraint)和plane correspondence (normal constraint + point to plane constraint)进行标定。

只能使用matlab的lidar toolbox,看不到源代码
该方法与plycal(2018c)的标定板点云特征提取方法类似。
2.2.2.5 extrinsic_lidar_camera_calibration (2020m)
来自 Robotics Institute, University of Michigan。matlab实现。
主要创新点是标定板点云的角点估计方法。假设在lidar原点有一个大小已知的参考标定板(reference target),希望标定板点云通过H变换后,与这个参考标定板尽量重合。优化求解H,将参考标定板角点反变换,即可得到点云中的角点位置。
之前方法采用先拟合边缘再直线相交的思路,只利用了边缘点,受点云深度测量误差影响,最后提取的四个角点可能与target真实几何不兼容。该方法的角点估计考虑了所有点,估计的四个角点也是与真实target形状兼容。
该方法与ILCC(2017p)方法类似,都是通过与一个参考的标定板拟合,从而对标定板点云参数化建模,求得角点。只是ILCC利用了点云反射强度,本方法只利用点云几何信息。

github开源:https://github.com/UMich-BipedLab/extrinsic_lidar_camera_calibration
该开源代码也实现了Matlab Lidar Toolbox (2018m)参考论文中点云边缘提取的方法:1)先ransac拟合平面,2),找到每条scanline的端点(边缘点),3)将标定板点云投影到拟合平面,4)拟合每条scan line, 5)将边缘点投影到拟合的scan line, 6)用ransac拟合边缘,去除边缘点粗差
参考论文:2020_IEEE access_Improvements to Target-Based 3D LiDAR to Camera Calibration
2.2.2.6 velo2cam_calibration (2021c)
来自 Intelligent Systems Lab (LSI), Universidad Carlos III de Madrid, Leganes, ROS + C++实现。可以将激光雷达、单目相机、立体相机进行任意成对标定。需要比较特殊的标定板:

- github开源:https://github.com/beltransen/velo2cam_calibration
- 参考论文: Beltrán, J., Guindel, C., and García, F. (2021). Automatic Extrinsic Calibration Method for LiDAR and Camera Sensor Setups. arXiv:2101.04431 [cs.RO]. Submitted to IEEE Transactions on Intelligent Transportation Systems.
2.2.2.7 multiple-cameras-and-3D-LiDARs-extrinsic-calibration(2021)
阿里团队在IROS发表的联合标定算法,单次拍摄即可完成多相机和3D激光雷达外参标定的算法库
- 论文:Single-Shot is Enough: Panoramic Infrastructure Based Calibration of Multiple Cameras and 3D LiDARs
- 代码:multiple-cameras-and-3D-LiDARs-extrinsic-calibration
2.2.2.8 cam_lidar_calibration(2024c)
澳大利亚野外机器人中心(ACFR)开发的相机与激光雷达外参标定工具,基于ITSC 2021论文《Optimising the selection of samples for robust lidar camera calibration》实现。

使用菱形放置的棋盘格标定板,与地面夹角为45°,可通过GUI设置ROI范围,滤除多余的杂点,提高检测精度,通过重投影误差和可视化验证标定质量

2.3 固态激光雷达
2.3.1 固态 LiDAR 的“降维打击”
对于像 Livox 这种非重复扫描的固态雷达,情况则完全不同。由于其累积帧后点云极度稠密,且自带反射率(Intensity)信息,我们可以将其点云直接展开为一张 2D 深度图或强度图。
标定策略:
直接使用棋盘格/AprilTag/CharuCo:就像标定两个相机一样简单。因为点云足够密,我们可以直接在点云中提取出清晰的棋盘格角点,与图像角点建立 3D Corner - 2D Corner 的对应关系。
这种方法精度高且操作简便,是固态雷达的一大优势。
2.3.2 固态激光雷达和相机联合标定算法
2.3.2.1 livox_camera_lidar_calibration(2020c)
Livox官方提供的Lidar-Camera标定代码,利用标定板角点作为标定目标,充分发挥Livox LiDAR非重复扫描特性,在高密度点云中更精准定位角点

标定方式:图像和点云数据都需要手动标点,确保精度。
github开源: https://github.com/Livox-SDK/livox_camera_lidar_calibration
2.3.2.2 ACSC (2020p)
来自北航,python实现,针对固态激光雷达Livox.
提出多帧点云集成精化算法(temporal-spatial-based geometric feature refinement)和基于反射强度分布的角点估计方法(reflectance intensity distribution-based 3D corner estimation )。自动提取2D和3D角点,然后用基于Ransac的PnP求解。

- github开源:https://github.com/HViktorTsoi/ACSC
- 参考论文:ACSC: Automatic Calibration for Non-repetitive Scanning Solid-State LiDAR and Camera Systems
2.3.2.3 FAST-Calib(2024c)
FAST-Calib 是由香港大学MARS实验室开发的一个自动目标-based的LiDAR-相机外参标定工具,专为LiDAR-camera系统(如FAST-LIVO2)设计。
双类型雷达支持:明确支持固态激光雷达和机械激光雷达(如Mid360、Avia和Ouster等)
无需初始参数:不需要提供任何初始外参估计值,大大降低了使用门槛
极速标定:仅需2秒即可获得高精度的标定结果
操作简便:使命外参标定变得像内参标定一样简单直观
但是需要依赖特定的标定板,这个标定板尺寸为1.4@1m

三、无标定物的方法 (Targetless / Self-Calibration)
虽然标定板精度高,但车开出工厂后,震动会导致相机和激光雷达的外参发生微变。此时,我们需要依赖自然场景的“在线标定”。
3.1 基于特征对齐 (Feature-based)
这种方法利用环境中的自然特征,如路灯杆、车道线、交通标志。
- 边缘匹配 (Edge Alignment):
- 图像端:使用 Canny 等算子提取纹理边缘。
- 雷达端:提取深度不连续点(Depth Discontinuity)或空间几何边缘。
- 目标:优化
使得两种边缘在投影平面上重合度最高。
- 互信息 (Mutual Information, MI):
- 不提取具体特征,而是计算图像灰度分布与点云反射率分布的统计相关性。当标定最准时,两者包含的信息关联度最大。
- 适用性:固态雷达由于反射率图像清晰,使用 MI 算法的效果通常优于机械雷达。
3.1.1 CamVox (2020c)
来自南方科技大学。图像先灰度化再提取边缘,点云先分别得到反射强度图和深度图,再提取边缘。通过ICP优化,求解最佳外参。

- github:https://github.com/xuankuzcr/CamVox
- 论文: VCamVox: A Low-cost and Accurate Lidar-assisted Visual SLAM System
3.1.2 livox camera calib (2020c)
来自香港大学。分别提取点云和图像中的边缘特征,然后匹配特征,最后优化求解最佳外参来更好地对齐点云边缘和图像边缘。


- 论文:Pixel-level Extrinsic Self Calibration of High Resolution LiDAR and Camera in Targetless Environments
- 作者:Chongjian Yuan (香港大学)
- Github:
论文详细解读请参考:
场景选择: 避免圆柱物体,避免纹理过多(树木,花草等),边缘均匀分布,多个方向的边缘 Issue with finding depth-continuous regions (github)
3.1.3 mlcc(2022)
香港大学MARS实验室开发的一个无目标标定(targetless)的多传感器外参标定框架,专注于小视场角激光雷达和相机的精确外参标定。该项目基于发表在IEEE TIM期刊的研究成果,提供了完整的开源实现。

将激光雷达外部参数标定与光束法平差相结合。推导了代价函数关于外部参数的二阶导数,以加速优化过程。在实现层面,应用自适应体素化技术将激光雷达点云动态分割成大小不一的体素,从而减少特征匹配过程中的计算时间。
相机标定支持:提供单激光雷达-相机标定功能
多种相机模型:支持针孔相机和鱼眼相机模型
- github:hku-mars/mlcc
- 论文: Targetless Extrinsic Calibration of Multiple Small FoV LiDARs and Cameras using Adaptive Voxelization
3.2 基于运动估计 (Motion-based / Hand-Eye)
这是一种巧妙的纯数学方法,不需要雷达和相机看同一个物体,只需要它们经历同样的运动。
- 原理:
-
:相机通过视觉里程计(VO)计算出的两帧间运动。
-
:雷达通过雷达里程计(LO)计算出的两帧间运动。
-
:我们要的标定外参。
-
- 优势:完全自动化,无需特定场景,只要车在动就能算。
- 劣势:依赖里程计精度,且退化运动(如匀速直线运动)下无法解算出所有自由度。
四、开源自动驾驶标定工具套件
4.1 autoware
Autoware的标定工具套件在持续发展,不同版本的标定工具使用方法不一样。在开始需要手动选择雷达点云与对应的图像像素点,后续变成自动识别标定板,同时手动框选标定板的点云进行对应。

4.2 apollo
提供基于自然场景的targetless方法,不需要手动标记,但是需要较准确初值。

(一个比较好的标定场景,包含路灯,树木,道路等物体)
注意:核心代码没有开源
4.3 opencalib
商汤科技和上海AI实验室退出的一个calibration toolbox,其中包含一组丰富的各种传感器标定方法。OpenCalib涵盖手动标定工具、自动标定工具、工厂标定工具以及针对不同应用场景的在线标定工具。同时,为了评估标定精度,进而提高提高算法精度,发布了相应的基准数据集。
目前该工具使用相对比较广泛。

- github文档:PJLab-ADG/SensorsCalibration
参考:
https://blog.csdn.net/tfb760/article/details/129131804
https://zhuanlan.zhihu.com/p/404762012