多传感器标定
现代SLAM系统很少只依赖单一传感器。一个相机-IMU组合装置、一辆相机-LiDAR汽车,或是一个完整的相机-IMU-LiDAR-轮式编码器平台,只有在精确知道各传感器之间相对关系的情况下才能正常工作。多传感器标定要估计两件事:
- 外参标定:传感器A坐标系与传感器B坐标系之间的刚体变换 (例如相机相对于IMU的位置)。
- 时间标定:各传感器时钟之间的时间偏移。不同传感器给数据打时间戳的延迟不同,即使几毫秒的偏移,对于快速运动的平台也是致命的。
最常见的组合和工具:
| 组合 | 典型方法 | 工具 |
|---|---|---|
| 相机-IMU | 用连续时间B样条轨迹同时拟合图像数据和惯性数据;估计外参、时间偏移以及IMU噪声/偏置参数 | Kalibr(Furgale等, 2013) |
| 相机-LiDAR | 基于标定板(两个传感器都能看到棋盘格角点)或无标定板(在图像和点云之间对齐平面/边缘) | Autoware标定工具,以及许多研究用工具包 |
| 多相机 | 对标定目标(AprilGrid/棋盘格)的重叠视野观测 | Kalibr多相机模块 |
几点实用提示。相机-IMU标定需要激励:必须让装置在所有轴上都进行剧烈的旋转和平移,才能使外参和时间偏移变得可观测。相机-LiDAR标定更难,因为这两种传感器观测的不是同一种原始信息——LiDAR感知几何,相机感知外观——所以方法要对齐平面、边缘或反射标靶等共有结构。最后,标定不是一次性的事情:支架会形变,温度会变化,优秀的VIO/SLAM系统(如VINS-Mono、OpenVINS)会在线精细化外参和时间偏移。
估计过程实际是如何进行的
手眼标定公式。 经典的出发点是手眼标定方程。让装置经历一系列运动,传感器A测出自己的相对运动 (例如通过棋盘格得到的相机位姿),传感器B测出自己的运动 (例如陀螺仪积分得到的旋转)。如果 是固定的未知外参,那么每一对运动都必须满足
因为”先经过A的运动,再穿过装置”必须等于”先穿过装置,再经过B的运动”。堆叠多组运动对就能得到一个可求解的系统——先求旋转(在四元数或旋转矩阵形式下是一个线性问题),再求平移。这也是为什么激励很重要:如果所有运动都是纯平移,那么 的旋转部分永远不会出现在方程中;而绕单一轴的旋转会使一个自由度不可观测。
连续时间联合优化(Kalibr)。 离散的位姿对会浪费信息,并且难以处理异步传感器。Kalibr转而把装置的轨迹表示为连续时间B样条 ,它可以在任意时间戳处被求值——以及求导得到角速度和加速度。随后,一个大型非线性最小二乘问题会同时最小化:
- 每个图像时间戳处标定板角点的重投影误差,
- 由样条推导出的加速度与实测加速度之间的加速度计残差(包含重力和偏置),
- 由样条推导出的角速度与实测角速度之间的陀螺仪残差,
优化变量涵盖样条本身、外参 、重力方向、IMU偏置,以及时间偏移 ——它通过在 处对样条求值这一简单方式进入问题。这正是为什么连续时间表述能如此自然地处理时间标定。
验证一个标定结果。 永远不要相信一个未经检验的标定结果。有用的合理性检查包括:标定报告中的重投影/残差图(残差应呈白噪声状,而不是有结构的);将LiDAR点投影到图像上,检查深度边缘是否与强度边缘对齐;运行你的VIO,观察估计器在线估计的外参/时间偏移状态是否偏离了标定值;以及用尺子实际测量装置——如果一个5厘米的装置量出相机-IMU平移长达30厘米,那无论优化器给出什么结果都是错的。
常见陷阱
- 激励不足——平缓、缓慢、平面化的运动会使外参和时间偏移的可观测性变弱;Kalibr仍会返回数值,只是数值不好,而且协方差看起来还很乐观。
- 对时间同步的假设过于乐观——硬件触发和共享时钟胜过任何软件补救措施;如果必须使用软件时间戳,就要标定 ,并预期它会随驱动/操作系统负载而变化。
- 忽略卷帘快门——读出过程中的快速旋转会使特征畸变;标定时要么使用全局快门相机,要么采用能感知卷帘快门的模型。
- 只标定一次,却一直部署——振动、温度循环和重新安装都会改变外参;任何机械改动之后都要重新标定,并让估计器在线精细化。
- 模糊或形变的标定板——标定的好坏取决于标定板本身:打印一个刚性固定的AprilGrid(玻璃/铝质基板),保持其全程可见且聚焦清晰,并让观测覆盖整个图像。
对SLAM的意义
每一种传感器融合类的SLAM表述——VIO、LiDAR-视觉-惯性里程计、雷达融合——都假设测量值可以在共同的坐标系和共同的时间下表达。外参或时间偏移的误差会表现为系统性的、未建模的残差,优化器会试图把它们吸收进位姿和偏置中,从而产生无论怎样调参都无法消除的漂移和不一致性。把标定做对(并知道如何验证它),通常是任何真实世界SLAM部署的第一步。