2、传感器标定:内参、外参标定对变换精度的影响

传感器标定这件事,说白了就是给传感器“配眼镜”。

你想想看,一个摄像头或者激光雷达,出厂时多少有点“近视”或者“散光”。内参标定就是矫正它自己的视力问题。而外参标定呢,是让两个传感器“对上眼”——知道它们之间到底谁在左边、谁在右边,角度差了多少。

我在项目里见过太多人,算法调得再好,标定一塌糊涂,最后坐标变换全崩了。嗯,今天我们就来聊聊这里面的门道。

2.1 内参标定:传感器的“出厂矫正”

内参,是传感器自身的固有参数。对于相机来说,就是焦距、主点、畸变系数。对于激光雷达,就是扫描角度、距离偏移量。

为什么内参重要?

因为坐标变换的第一步,是把传感器原始数据转换到传感器坐标系。如果这一步就歪了,后面再怎么变换都是错的。

核心结论:内参误差会直接导致测量点云或图像像素的位置偏移。在远距离场景下,这种偏移会被放大。

我记得有一次做多传感器融合,相机和激光雷达怎么都对不齐。折腾了两天,最后发现是相机内参用了出厂默认值。重新标定后,问题直接解决。

2.1.1 相机内参标定要点

  • 棋盘格标定法:最经典的方法。采集20-30张不同角度的棋盘格图像。
  • 关键参数:fx, fy(焦距), cx, cy(主点), k1, k2, p1, p2(畸变系数)。
  • 重投影误差:标定完成后,检查重投影误差。一般小于0.5像素才算合格。

我的习惯:标定完成后,我会拍一张棋盘格放在画面中央和边缘,手动验证一下畸变矫正效果。边缘的直线如果还是弯的,说明标定不够好。

2.1.2 激光雷达内参标定

激光雷达的内参相对简单,但容易被忽略。

  • 距离偏移:由于激光发射和接收的延迟,测距会有固定偏差。
  • 角度偏移:每个激光束的发射角度可能有微小偏差。
  • 强度校正:不同距离、不同材质的反射强度需要归一化。

我曾经遇到一个案例:一台16线激光雷达,建图时总出现“重影”。排查后发现是某个激光束的角度偏差了0.1度。在100米外,这个偏差造成了17厘米的误差。嗯,0.1度看起来很小,但后果很严重。

2.2 外参标定:传感器之间的“握手协议”

外参,描述的是两个传感器坐标系之间的旋转和平移关系。比如相机和激光雷达之间,或者IMU和相机之间。

外参标定的精度,直接决定了多传感器融合的效果。

警告:外参标定不是一次性的。传感器安装位置如果发生微小位移(比如车辆颠簸导致支架松动),外参就会变化。我建议每次开机做一次在线标定校验。

2.2.1 常见外参标定方法

方法 适用场景 精度 难度
手动测量 粗略安装 厘米级 低
标定板法 实验室/工厂 毫米级 中
自然场景法 现场/在线 厘米级 高
手眼标定 机械臂+传感器 亚毫米级 高

我个人最推荐标定板法。虽然需要准备标定板,但精度可控,复现性好。

2.2.2 相机-激光雷达联合标定

这是最经典的外参标定场景。核心思路是:找到激光雷达点云中的特征点,与图像中的对应像素点建立匹配关系。

# 伪代码:相机-激光雷达外参标定流程
1. 采集数据:同时录制相机图像和激光雷达点云
2. 特征提取:在图像中检测棋盘格角点,在点云中提取棋盘格平面
3. 建立对应:将点云中的棋盘格角点投影到图像平面
4. 优化求解:最小化重投影误差,求解R和t
5. 验证:用标定后的外参投影点云到图像,检查对齐效果

避坑指南:我曾经犯过一个错误——只用了一组数据做标定。结果外参在某个角度很准,换个角度就偏了。后来我学乖了,至少采集5组不同距离、不同角度的数据,联合优化。

2.3 标定误差对变换精度的影响分析

我们来定量分析一下。假设外参的旋转误差为δθ,平移误差为δt,目标点距离传感器为d。

那么,由旋转误差引起的点位置误差大约是:d × tan(δθ)。

举个例子:

  • 如果δθ = 0.5度,d = 10米,误差 ≈ 8.7厘米
  • 如果δθ = 0.5度,d = 50米,误差 ≈ 43.6厘米
  • 如果δθ = 0.1度,d = 50米,误差 ≈ 8.7厘米

看到了吗?距离越远,旋转误差的影响越恐怖。所以远距离感知任务(比如自动驾驶的高速场景),对外参精度的要求极高。

经验数据:对于自动驾驶应用,外参旋转误差应控制在0.1度以内,平移误差控制在1厘米以内。对于室内机器人,可以放宽到0.5度和2厘米。

2.4 标定流程与工具推荐

我整理了一套我自己常用的标定流程,供你参考:

  1. 准备阶段:选择合适的标定板(棋盘格或AprilTag),固定传感器安装位置。
  2. 数据采集:确保标定板在传感器视野内,采集多角度、多距离的数据。
  3. 内参标定:先标定每个传感器的内参,确保内参准确。
  4. 外参标定:使用联合标定工具,求解外参。
  5. 验证:用独立的数据集验证标定结果,检查重投影误差。
  6. 部署:将标定参数写入配置文件,并在实际场景中测试。

工具方面,我常用的是:

  • 相机内参:OpenCV的calibrateCamera()
  • 激光雷达内参:厂商提供的标定工具
  • 相机-激光雷达外参:Autoware的标定工具包,或者自己写优化代码
  • 多传感器联合标定:Kalibr(支持相机+IMU)

2.5 本章知识体系

下面这张图,是我梳理的传感器标定对变换精度影响的核心逻辑。你可以把它当作一个检查清单:

传感器标定对坐标变换精度的影响 传感器标定 内参标定 外参标定 相机:焦距/畸变 激光雷达:角度/距离偏移 IMU:零偏/尺度因子 旋转矩阵R 平移向量t 时间同步偏移 坐标变换精度下降 点云与图像不对齐 建图出现重影 定位精度下降

这张图的核心逻辑很简单:内参和外参共同决定了坐标变换的精度。任何一个环节出问题,最终都会反映在变换结果上。

最后说一句:标定这件事,看起来枯燥,但它是所有上层算法的基石。我见过太多团队花几个月调算法,却不愿意花一天做标定。结果呢?算法在仿真里跑得飞起,一上真机就崩。嗯,别走这条路。

可可精品资料库