多传感器标定

现代SLAM系统很少只依赖单一传感器。一个相机-IMU组合装置、一辆相机-LiDAR汽车,或是一个完整的相机-IMU-LiDAR-轮式编码器平台,只有在精确知道各传感器之间相对关系的情况下才能正常工作。多传感器标定要估计两件事:

最常见的组合和工具:

组合典型方法工具
相机-IMU用连续时间B样条轨迹同时拟合图像数据和惯性数据;估计外参、时间偏移以及IMU噪声/偏置参数Kalibr(Furgale等, 2013)
相机-LiDAR基于标定板(两个传感器都能看到棋盘格角点)或无标定板(在图像和点云之间对齐平面/边缘)Autoware标定工具,以及许多研究用工具包
多相机对标定目标(AprilGrid/棋盘格)的重叠视野观测Kalibr多相机模块

几点实用提示。相机-IMU标定需要激励:必须让装置在所有轴上都进行剧烈的旋转和平移,才能使外参和时间偏移变得可观测。相机-LiDAR标定更难,因为这两种传感器观测的不是同一种原始信息——LiDAR感知几何,相机感知外观——所以方法要对齐平面、边缘或反射标靶等共有结构。最后,标定不是一次性的事情:支架会形变,温度会变化,优秀的VIO/SLAM系统(如VINS-Mono、OpenVINS)会在线精细化外参和时间偏移。

估计过程实际是如何进行的

手眼标定公式。 经典的出发点是手眼标定方程。让装置经历一系列运动,传感器A测出自己的相对运动 AkA_k(例如通过棋盘格得到的相机位姿),传感器B测出自己的运动 BkB_k(例如陀螺仪积分得到的旋转)。如果 X=TABX = T_{AB} 是固定的未知外参,那么每一对运动都必须满足

AkX=XBk,A_k X = X B_k,

因为”先经过A的运动,再穿过装置”必须等于”先穿过装置,再经过B的运动”。堆叠多组运动对就能得到一个可求解的系统——先求旋转(在四元数或旋转矩阵形式下是一个线性问题),再求平移。这也是为什么激励很重要:如果所有运动都是纯平移,那么 XX 的旋转部分永远不会出现在方程中;而绕单一轴的旋转会使一个自由度不可观测。

连续时间联合优化(Kalibr)。 离散的位姿对会浪费信息,并且难以处理异步传感器。Kalibr转而把装置的轨迹表示为连续时间B样条 TWB(t)T_{WB}(t),它可以在任意时间戳处被求值——以及求导得到角速度和加速度。随后,一个大型非线性最小二乘问题会同时最小化:

优化变量涵盖样条本身、外参 Tcam,imuT_{\text{cam,imu}}、重力方向、IMU偏置,以及时间偏移 tdt_d——它通过在 t+tdt + t_d 处对样条求值这一简单方式进入问题。这正是为什么连续时间表述能如此自然地处理时间标定。

验证一个标定结果。 永远不要相信一个未经检验的标定结果。有用的合理性检查包括:标定报告中的重投影/残差图(残差应呈白噪声状,而不是有结构的);将LiDAR点投影到图像上,检查深度边缘是否与强度边缘对齐;运行你的VIO,观察估计器在线估计的外参/时间偏移状态是否偏离了标定值;以及用尺子实际测量装置——如果一个5厘米的装置量出相机-IMU平移长达30厘米,那无论优化器给出什么结果都是错的。

常见陷阱

对SLAM的意义

每一种传感器融合类的SLAM表述——VIO、LiDAR-视觉-惯性里程计、雷达融合——都假设测量值可以在共同的坐标系和共同的时间下表达。外参或时间偏移的误差会表现为系统性的、未建模的残差,优化器会试图把它们吸收进位姿和偏置中,从而产生无论怎样调参都无法消除的漂移和不一致性。把标定做对(并知道如何验证它),通常是任何真实世界SLAM部署的第一步。

动手实践

相关条目