4、传感器标定基础:内参标定与外参标定、标定板与目标物、联合标定流程、标定精度评估
说到多传感器融合,标定这事儿,我敢说它是整个系统里最容易被忽视、但坑最多的环节。你想想看,激光雷达说障碍物在左边3米,摄像头说在右边2.8米,你信谁的?说白了,没有一套靠谱的标定流程,融合就是个笑话。
我最早做自动驾驶仿真的时候,就吃过这个亏。当时觉得算法调得挺漂亮,一上路,感知结果全对不上。查了三天,最后发现是外参矩阵里一个符号写反了。嗯,从那以后,我再也不敢轻视标定了。
4.1 内参标定 vs 外参标定
先理清概念。内参,描述的是传感器自己内部的几何特性。比如摄像头,焦距、主点、畸变系数,这些就是内参。激光雷达的内参呢?主要是扫描角度分辨率、旋转速度这些。
外参就简单了——描述传感器之间的相对位置和姿态。说白了,就是告诉你摄像头坐标系和激光雷达坐标系之间,到底差了多少米、转了多少度。
核心区别一句话:内参解决「我看到的准不准」,外参解决「我们看到的能不能对齐」。
我个人习惯,先做内参标定,再做外参标定。顺序不能乱。为什么?因为内参不准,外参标出来也是错的。你想想看,摄像头图像本身都是扭曲的,你再去跟激光雷达对齐,那不是错上加错吗?
4.2 标定板与目标物
标定板这东西,看着简单,选起来门道不少。
| 标定板类型 | 适用传感器 | 我踩过的坑 |
|---|---|---|
| 棋盘格 | 摄像头 | 反光材质在强光下角点检测失败 |
| 圆点阵列 | 摄像头 + 激光雷达 | 圆心提取精度比角点高,但需要均匀光照 |
| 三角反射器 | 激光雷达 | 远距离回波强度不够,容易漏检 |
| AprilTag | 摄像头(快速标定) | ID编码方便,但小尺寸下识别率下降 |
我在项目中遇到过最头疼的事,是标定板材质选错了。当时图便宜,用了普通打印纸贴在泡沫板上。结果激光雷达打上去,回波强度乱七八糟,点云里根本看不清标定板的边缘。后来换了亚光铝板,问题才解决。
我的小技巧:做联合标定时,标定板最好同时满足两个条件——摄像头能看清纹理,激光雷达能看清边缘。圆点阵列加白色背景,是我试下来最稳的方案。
4.3 联合标定流程
联合标定,就是把摄像头和激光雷达的数据对齐到同一个坐标系里。流程其实不复杂,但每一步都有讲究。
流程看着简单,但实际操作中,我建议你注意这几点:
- 数据采集要够多——至少20组不同角度、不同距离的数据。我见过有人只拍了5组就跑去标定,结果外参误差大得离谱。
- 特征提取要稳——摄像头这边用棋盘格角点,激光雷达那边用标定板边缘。提取精度直接决定了标定结果的好坏。
- 求解算法要鲁棒——我习惯用PnP加RANSAC。RANSAC能帮你剔除那些离谱的匹配点,避免一颗老鼠屎坏了一锅粥。
注意:联合标定最怕「过拟合」。什么意思?就是你用采集的数据算出来的外参,换一组数据就完全对不上了。我曾经遇到过这种情况,后来发现是标定板太小,视野里特征点太少。解决办法:换大标定板,或者多采集远距离数据。
4.4 标定精度评估
标定做完了,怎么知道准不准?不能光看算法报的误差,得自己动手验证。
我常用的评估方法有这三种:
- 重投影误差——把激光雷达的点投影到图像上,看跟实际图像位置差多少像素。一般小于2个像素就算不错了。
- 距离一致性检查——在几个已知距离上放目标物,看融合后的距离跟实际距离差多少。我要求自己控制在5厘米以内。
- 交叉验证——把采集的数据分成两份,一份用来标定,一份用来验证。如果两份数据上的误差差不多,说明标定结果泛化能力好。
我的经验阈值:
- 重投影误差:< 2 像素(优秀),< 5 像素(可用)
- 距离误差:< 5 cm(优秀),< 10 cm(可用)
- 角度误差:< 0.5°(优秀),< 1°(可用)
这里有个坑,我提醒一下。有时候重投影误差很小,但实际融合效果很差。为什么?因为你的标定数据可能都是在同一个距离范围内采集的。比如你只在5米处拍了数据,那外参在5米处准,到了20米就偏了。所以,采集数据时一定要覆盖不同距离。
一个小技巧:标定完成后,找个空旷的地方,让车走一段直线。然后看激光雷达点云投影到图像上,地面是不是平的,路沿是不是对齐的。这个方法虽然土,但特别管用。我每次标定完都会这么跑一遍,心里才踏实。
最后说一句,标定不是一劳永逸的事。传感器装车后,随着时间推移、温度变化、振动影响,外参可能会慢慢漂移。我建议每隔一段时间就做一次标定校验。在仿真环境里,这个工作就简单多了——参数都是已知的,但流程一定要走一遍,确保你的标定脚本没问题。
好了,标定这块儿就聊到这儿。记住,标定是融合的基础,基础不牢,地动山摇。