3、传感器标定基础:IMU内参标定、相机内参标定、激光雷达与相机外参标定

传感器标定,说白了就是给每个传感器做一次「体检」。

你想想看,一个IMU出厂时说的「零偏0.01°/s」,一个相机标称的「焦距12mm」,到了你手里真的准吗?我做了这么多年多传感器融合,踩过最大的坑就是——信任传感器的出厂参数。嗯,标定这件事,偷懒一时爽,融合火葬场。

3.1 IMU内参标定:给加速度计和陀螺仪「上刑」

IMU的内参主要包括:零偏(Bias)、尺度因子(Scale Factor)、交轴耦合(Misalignment)。说白了,就是加速度计和陀螺仪在三个轴上的测量值与真实值之间的映射关系。

核心公式(简化版):

a_meas = S_a * (a_true + b_a + n_a)
ω_meas = S_g * (ω_true + b_g + n_g)

其中 S 是尺度+交轴矩阵,b 是零偏,n 是噪声。

我个人习惯用 Allan方差法 来分析IMU的噪声特性。为什么?因为你可以直观地看到:

  • 角度随机游走(ARW)—— 决定短期精度
  • 零偏不稳定性(Bias Instability)—— 决定长期漂移
  • 速率随机游走(RRW)—— 决定温度变化下的表现

我在项目中遇到过一款国产IMU,出厂标称零偏稳定性0.01°/s,结果Allan方差一跑,实际是0.05°/s。嗯,差了5倍。从那以后,任何IMU到手,先跑24小时静态数据,这是我的铁律。

标定实操建议:

  1. 将IMU固定在水平台上,采集至少2小时静态数据
  2. 使用imu_utils或kalibr_allan工具包分析Allan方差
  3. 六位置法标定加速度计(每个轴朝上/朝下各一次)
  4. 转台法标定陀螺仪(如果有条件)

我曾经踩过的坑:IMU标定时的温度控制。有一次我在空调房里标定,结果IMU实际工作在40℃的机箱内,零偏直接漂了3倍。记住:标定温度要尽量接近实际工作温度

3.2 相机内参标定:从像素反推真实世界

相机内参标定,说白了就是搞清楚「像素坐标」和「相机坐标系」之间的映射关系。核心参数包括:

  • 焦距(fx, fy)—— 决定成像大小
  • 主点(cx, cy)—— 决定图像中心偏移
  • 畸变系数(k1, k2, p1, p2, k3)—— 修正镜头畸变

你想想看,一个标定板上的角点,在图像中应该是一个点。但如果镜头有畸变,它可能变成了一个弧线。内参标定就是找到这个「弧线→直线」的映射关系。

经典标定流程(张正友标定法):

1. 打印棋盘格标定板(建议7×10或8×11内角点)
2. 从不同角度拍摄15-20张图像
3. 提取亚像素角点坐标
4. 使用OpenCV的calibrateCamera()求解内参
5. 重投影误差 < 0.1 pixel 才算合格

我个人习惯用 Kalibr 工具包做相机标定,因为它支持多相机联合标定,而且可以同时标定IMU和相机的外参。不过要注意,Kalibr对标定板的要求比较严格——Aprilgrid比棋盘格更鲁棒,因为每个格子都有唯一的ID,不会出现匹配错误。

标定技巧:

  • 拍摄时让标定板充满画面各个区域(边缘、角落都要覆盖)
  • 保持标定板平面与成像平面夹角在30°-60°之间
  • 避免运动模糊(快门速度要够快)
  • 重投影误差超过0.3 pixel的图片直接扔掉

3.3 激光雷达与相机外参标定:让点云和图像「对齐」

这是多传感器融合中最关键的一步。激光雷达提供3D点云,相机提供2D图像,外参标定就是找到从激光雷达到相机的旋转矩阵R和平移向量t。

说白了,就是回答一个问题:「激光雷达看到的一个点,在图像上应该落在哪个像素?」

投影公式:

p_image = K * [R | t] * p_lidar

其中K是相机内参矩阵,[R|t]是外参矩阵。

我在项目中用过三种主流方法:

方法 原理 精度 难度
手动选点法 人工选取3D-2D对应点 低(依赖人工)
标定板法 检测标定板在点云和图像中的特征
互信息法 最大化点云强度与图像灰度的互信息

我个人最推荐 标定板法。为什么?因为手动选点太主观,互信息法又太复杂。标定板法在精度和易用性之间取得了很好的平衡。

标定板法实操步骤:

  1. 准备一个平面标定板(建议用黑色泡沫板,边缘贴反光条)
  2. 从不同角度采集10-15组数据(每组包含一帧点云+一张图像)
  3. 在点云中提取标定板平面(RANSAC拟合)
  4. 在图像中提取标定板角点
  5. 使用PnP算法求解外参
  6. 验证:将点云投影到图像上,检查边缘对齐情况

我曾经踩过的坑:标定板材质的选择。有一次我用白色亚克力板,结果激光雷达打上去产生了多次反射,点云中的平面全是噪点。后来换成黑色磨砂泡沫板,效果立竿见影。记住:标定板要吸光、不反光、表面平整

3.4 标定结果验证:别让「看起来对」骗了你

标定完成后,一定要做验证。我见过太多人标定完就完事了,结果融合时发现点云和图像对不上。

验证方法很简单:

  • 视觉验证:将点云投影到图像上,观察边缘、杆状物、建筑物轮廓是否对齐
  • 定量验证:计算重投影误差,一般要求小于2个像素
  • 动态验证:让传感器运动起来,检查投影是否稳定

嗯,这里要注意:静态验证通过不代表动态也通过。我遇到过标定结果在静态场景下完美对齐,但一旦运动起来就出现漂移。后来发现是IMU和相机的时间戳没有对齐。所以,时间同步是标定的前提,这个我们下一章会详细讲。

标定质量检查清单:

  • ☐ 重投影误差 < 2 pixel
  • ☐ 点云边缘与图像边缘对齐误差 < 3 pixel
  • ☐ 不同距离下的投影一致性(近处和远处都检查)
  • ☐ 动态场景下的投影稳定性

最后说一句:标定不是一劳永逸的。温度变化、机械振动、时间推移都会导致外参漂移。我建议每隔3个月重新标定一次,或者在传感器受到剧烈冲击后立即重新标定。


公众号:蓝海资料掘金营,微信deep3321