第三节:数据采集与传感器标定——相机、激光雷达、IMU的联合标定原理
大家好,我是你们的老朋友。今天咱们聊聊传感器标定这件事。
说实话,我刚入行那会儿,觉得标定就是个「配准」的活儿。后来在项目里栽过跟头才明白——标定做不好,后面模型训练得再好也是白搭。你想想看,如果相机和激光雷达看到的不是同一个世界,那融合出来的数据就是「鸡同鸭讲」。
3.1 为什么要做联合标定?
简单说,就是让不同传感器「说同一种语言」。
- 相机:看到的是像素,2D的,有颜色没深度
- 激光雷达:看到的是点云,3D的,有深度没颜色
- IMU:感知的是加速度和角速度,纯运动信息
这三个家伙各说各话,不标定一下,数据根本对不上。我做过一个项目,激光雷达检测到前方3米有障碍物,相机一看,哎?那个位置明明是空的。后来查出来,就是标定参数偏了2厘米。2厘米啊,在自动驾驶里可能就是一次急刹和一次事故的区别。
核心目标:求解传感器之间的旋转矩阵R和平移向量t,把不同坐标系下的数据统一到同一个参考系里。
3.2 联合标定的数学原理
说白了,就是解一个方程组。
假设我们有一个点在激光雷达坐标系下的坐标是PL,在相机坐标系下的坐标是PC,那么它们的关系是:
P_C = R * P_L + t
其中R是3x3的旋转矩阵,t是3x1的平移向量。我们需要找到至少3组不共线的对应点,才能解出这6个自由度(3个旋转角+3个平移量)。
嗯,这里要注意:实际工程中我们不会只用3个点。我一般会用20-30个点,然后用最小二乘法去拟合,这样抗噪声能力更强。
3.2.1 相机-激光雷达联合标定
这是最常用的组合。核心思路是:找一个同时能被相机和激光雷达「看见」的标定物,提取特征点,然后建立对应关系。
我个人习惯用棋盘格标定板。为什么?因为棋盘格的角点检测算法非常成熟,OpenCV里直接有函数调用,稳定可靠。
具体步骤:
- 激光雷达扫描标定板,提取点云中的平面和边缘
- 相机拍摄标定板,提取棋盘格角点
- 建立2D-3D对应关系
- 用PnP算法求解R和t
小技巧:激光雷达点云中提取棋盘格边缘时,我习惯用RANSAC先拟合平面,再找平面边界。这样比直接找点要准得多。
3.2.2 相机-IMU联合标定
IMU的标定稍微复杂一点,因为它涉及时间同步。IMU的输出频率通常很高(100-400Hz),而相机只有30-60fps。这两个时间戳对不上,标定就没法做。
我记得有一次,IMU和相机的时间差只有5毫秒,但车辆在高速行驶时,这5毫秒的误差就能导致位置偏差十几厘米。后来我加了一个时间戳对齐模块,用插值法把IMU数据对齐到相机时间戳上,问题才解决。
标定方法:
- 让设备做特定的运动(比如绕各轴旋转)
- 同时记录IMU数据和相机图像
- 利用视觉惯性里程计(VIO)算法联合优化
3.2.3 激光雷达-IMU联合标定
这个相对简单一些。因为激光雷达和IMU都是3D传感器,它们的坐标系都是三维的。我通常的做法是:
- 让设备静止,记录IMU的初始姿态
- 然后让设备做匀速直线运动
- 对比激光雷达点云中的静态物体和IMU推算的运动轨迹
说白了,就是看激光雷达「看到」的静止物体,和IMU「感觉」到的运动是不是一致的。
3.3 标定板制作
标定板这东西,买现成的当然省事,但自己做也不难。我给大家说说我的经验。
| 传感器组合 | 推荐标定板类型 | 尺寸建议 | 材质要求 |
|---|---|---|---|
| 相机-激光雷达 | 棋盘格+反光条 | 1m x 1m 以上 | 亚光面板,避免反光 |
| 相机-IMU | AprilTag或ArUco码 | A3纸大小 | 普通打印纸即可 |
| 激光雷达-IMU | 平面板+三个角反射器 | 0.5m x 0.5m | 金属材质,反射率高 |
避坑指南:我曾经用普通打印纸做激光雷达标定板,结果激光打上去反射率太低,点云里根本看不到板子。后来换了亚光金属板,效果立竿见影。记住:激光雷达对黑色和透明物体不敏感,标定板一定要用浅色、高反射材质。
3.4 数据采集流程
标定数据采集,说白了就是「让传感器看到标定板,然后动起来」。
我总结了一套标准流程,大家可以直接拿去用:
- 准备工作:架设标定板,确保周围没有其他反光物体干扰
- 静态采集:让设备正对标定板,静止采集5秒,用于初始对齐
- 动态采集:缓慢移动设备,让标定板出现在视野的不同位置和角度
- 覆盖范围:确保标定板覆盖了传感器视野的各个区域(左上、右下、中心、边缘)
- 重复验证:换一个位置重新采集一组数据,用于验证标定结果
这里有个关键点:动态采集时,移动速度一定要慢。我见过有人拿着设备快速挥舞,结果IMU数据全是高频噪声,标定出来的参数根本不能用。慢一点,稳一点,数据质量才有保障。
3.5 知识体系总览
下面这张图是我自己画的,把整个标定流程串起来了。大家保存好,以后做标定的时候对照着看。
3.6 实战中的几个坑
最后,我把自己踩过的坑分享给大家,希望能帮你们省点时间。
- 坑一:标定板太小。激光雷达的分辨率有限,标定板太小的话,点云里只有几个点,根本拟合不出平面。我建议至少1米见方。
- 坑二:光照不均匀。相机标定对光照很敏感,强光下棋盘格角点检测会失败。最好在阴天或室内做标定。
- 坑三:IMU未预热。IMU刚上电时,内部温度还没稳定,零偏会漂移。我习惯先让设备通电预热5分钟再开始采集。
- 坑四:标定板移动太快。前面说过了,慢!慢!慢!
总结一下:联合标定是数据采集的「地基」。地基没打好,上面盖的房子再漂亮也是危房。花时间把标定做扎实了,后面的模型训练才能事半功倍。