第三节:数据采集与传感器标定——相机、激光雷达、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里直接有函数调用,稳定可靠。

具体步骤:

  1. 激光雷达扫描标定板,提取点云中的平面和边缘
  2. 相机拍摄标定板,提取棋盘格角点
  3. 建立2D-3D对应关系
  4. 用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 数据采集流程

标定数据采集,说白了就是「让传感器看到标定板,然后动起来」。

我总结了一套标准流程,大家可以直接拿去用:

  1. 准备工作:架设标定板,确保周围没有其他反光物体干扰
  2. 静态采集:让设备正对标定板,静止采集5秒,用于初始对齐
  3. 动态采集:缓慢移动设备,让标定板出现在视野的不同位置和角度
  4. 覆盖范围:确保标定板覆盖了传感器视野的各个区域(左上、右下、中心、边缘)
  5. 重复验证:换一个位置重新采集一组数据,用于验证标定结果

这里有个关键点:动态采集时,移动速度一定要慢。我见过有人拿着设备快速挥舞,结果IMU数据全是高频噪声,标定出来的参数根本不能用。慢一点,稳一点,数据质量才有保障。

3.5 知识体系总览

下面这张图是我自己画的,把整个标定流程串起来了。大家保存好,以后做标定的时候对照着看。

传感器联合标定知识体系 相机 2D像素坐标 激光雷达 3D点云坐标 IMU 加速度/角速度 R, t R, t 时间同步 + R, t 标定板(棋盘格/反光板) 数据采集流程:静态采集 → 动态采集 → 多角度覆盖 → 重复验证 PnP算法 最小二乘优化 输出:R矩阵 + t向量 + 时间偏移

3.6 实战中的几个坑

最后,我把自己踩过的坑分享给大家,希望能帮你们省点时间。

  • 坑一:标定板太小。激光雷达的分辨率有限,标定板太小的话,点云里只有几个点,根本拟合不出平面。我建议至少1米见方。
  • 坑二:光照不均匀。相机标定对光照很敏感,强光下棋盘格角点检测会失败。最好在阴天或室内做标定。
  • 坑三:IMU未预热。IMU刚上电时,内部温度还没稳定,零偏会漂移。我习惯先让设备通电预热5分钟再开始采集。
  • 坑四:标定板移动太快。前面说过了,慢!慢!慢!

总结一下:联合标定是数据采集的「地基」。地基没打好,上面盖的房子再漂亮也是危房。花时间把标定做扎实了,后面的模型训练才能事半功倍。

可可精品资料库