4. 传感器标定:激光雷达-IMU外参标定、相机-激光雷达联合标定、轮式里程计标定

说到多传感器融合,标定这事儿,我敢说它占了整个项目 60% 的坑。你算法写得再漂亮,传感器之间「谁在哪儿、朝哪儿看」没对齐,那融合出来的就是一团浆糊。我自己带项目时,第一周基本都在干标定——说白了,就是给每个传感器发一张「身份证」,告诉系统它们之间的相对位置和朝向。

这一章,咱们就聊聊三种最核心的标定:激光雷达与 IMU 的外参、相机与激光雷达的联合标定,还有轮式里程计的标定。嗯,一个一个来。

4.1 激光雷达-IMU 外参标定

激光雷达和 IMU 这对搭档,一个负责「看世界长啥样」,一个负责「感知自己怎么动」。但问题是,它们俩装在车上的位置不一样,朝向也可能有偏差。外参标定,就是求出从 IMU 坐标系到激光雷达坐标系的旋转和平移矩阵。

我个人习惯用 LiDAR-IMU 初始化 + 在线优化 的方式。先粗标,再精调。

4.1.1 粗标定:利用重力对齐

IMU 能测重力方向,激光雷达扫描地面能算出地面法向量。把这两个向量对齐,就能得到旋转的初值。我在项目中遇到过,如果地面不平整,激光雷达算出的法向量会有偏差。所以建议多采几帧地面数据,取平均。

4.1.2 精标定:基于运动约束

粗标定之后,用一段运动数据做优化。核心思想是:激光雷达通过帧间匹配(比如 ICP)算出的位姿变化,应该和 IMU 积分出的位姿变化一致。构建一个最小二乘问题,优化外参。

关键公式(简化版):

min_{R, t} Σ || (T_lidar_i^{-1} * T_lidar_j) - (R * T_imu_i^{-1} * T_imu_j * R^T) ||^2

其中 R, t 就是待求的外参旋转和平移。

我的小技巧: 做精标定时,别用匀速运动。多来几个急转弯、急加速,IMU 的激励才够充分,标定结果才稳。我曾经有一次用匀速直线数据标了半小时,结果外参完全不对,后来才发现是激励不足。

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

相机给的是稠密的颜色纹理,激光雷达给的是稀疏但精确的深度。联合标定的目标,就是找到相机像素和激光雷达点云之间的投影关系。说白了,就是知道「激光雷达打到的那个点,对应相机图像上的哪个像素」。

4.2.1 标定板法

最经典的方法。用一块带棋盘格或圆孔的标定板,同时被相机和激光雷达看到。相机提取角点,激光雷达提取板平面上的点。然后通过 PnP 或直接线性变换求解外参。

你想想看,这里有个坑:激光雷达打在标定板边缘时,容易产生「混合点」——一部分打在板上,一部分打在背景上,导致测距不准。我建议在提取板上的点时,只取板中心区域的数据,去掉边缘 10cm。

4.2.2 无目标标定(自然场景法)

如果现场不方便放标定板,也可以用自然场景中的边缘、角点来做。比如找一堵有纹理的墙,相机提取边缘,激光雷达提取对应的深度跳变点。这种方法精度稍低,但胜在方便。

方法 精度 操作复杂度 适用场景
标定板法 高(<0.1°) 中 实验室、量产线
自然场景法 中(<0.5°) 低 现场快速部署

注意: 相机和激光雷达的视野重叠区域一定要足够大。如果激光雷达装在车顶,相机装在保险杠,两者几乎看不到同一片区域,那标定就是白费功夫。我曾经见过一个项目,硬是把两个传感器装得八竿子打不着,最后只能重新设计安装支架。

4.3 轮式里程计标定

轮式里程计,说白了就是靠轮子转了多少圈来推算走了多远。但轮子有打滑、有磨损、轮胎气压不同也会影响。所以必须标定两个参数:每脉冲对应的移动距离(尺度因子),以及左右轮的轮距(影响转弯)。

4.3.1 直线标定:尺度因子

让机器人走一段已知距离的直线,比如 10 米。记录轮式里程计输出的脉冲数。用实际距离除以脉冲数,就得到每个脉冲对应的米数。

# 伪代码示例
actual_distance = 10.0  # 米
pulses = encoder_reading_end - encoder_reading_start
scale = actual_distance / pulses
print(f"尺度因子: {scale:.6f} 米/脉冲")

嗯,这里要注意:走直线时尽量选平整地面,地毯和瓷砖的摩擦系数不同,标定结果会有差异。我建议在项目实际运行的地面上标定。

4.3.2 转弯标定:轮距

让机器人原地转圈,比如转 360 度。记录左右轮的脉冲差。根据运动学公式,可以反推出轮距。

运动学公式:

轮距 = (左轮脉冲数 + 右轮脉冲数) * 尺度因子 / (2 * π * (转圈数))

实际上更精确的做法是用最小二乘法,多转几圈,拟合出最优轮距。

避坑指南: 我曾经在瓷砖地面上标定轮式里程计,结果一转弯就打滑,标出来的轮距偏大 20%。后来换成在粗糙水泥地上标,数据才正常。所以标定环境一定要贴近实际使用场景。

4.4 本章知识体系

为了让你更直观地理解这三种标定的关系和流程,我画了一张图。它展示了从传感器原始数据到最终外参输出的完整链路。

多传感器标定知识体系 激光雷达 IMU 相机 LiDAR-IMU 外参标定 相机-LiDAR 联合标定 轮式里程计标定 输出:统一的外参矩阵 + 里程计参数

从图上你能看到,激光雷达和 IMU 先做外参标定,然后相机再和激光雷达做联合标定。轮式里程计标定相对独立,但最终所有参数都要统一到一个坐标系下,才能用于后续的融合建图和避障。

好了,这一章的内容就这些。三种标定方法,各有各的坑,也各有各的技巧。你动手做一遍,比我讲十遍都管用。记住:标定数据的好坏,直接决定了你后面所有算法的上限。别图省事,多采几组数据,多验证几次。