传感器输出的是带噪声、有偏置、可能延迟的观测。标定是在特定模型下估计测量关系;它不能让传感器获得本来没有的可观测量。把观测时间、单位、坐标系和有效范围一起保存,后续估计与规划才有依据。
哪些量需要标定
| 类型 | 描述 | 例子 |
|---|---|---|
| 内参 | 传感器自身的测量映射 | 相机焦距、主点与畸变 |
| 外参 | 传感器与其他刚体的相对位姿 | 相机到机械臂末端、激光到底盘 |
| 偏置与比例 | 读数的系统误差 | 陀螺零偏、轮径和编码器比例 |
| 时间关系 | 不同数据流对应的时刻 | 相机曝光时间与IMU时钟偏移 |
标定数据应覆盖实际使用的姿态和工作区域。棋盘只在图像中心、距离几乎相同,即使拟合误差很小,也可能无法可靠估计边缘畸变。用一部分数据估计参数,再用独立姿态检查重投影误差与空间误差,能比只看训练数据上的平均残差更早发现问题。
相机与深度的数字例子
去畸变后的针孔模型为 u=fx X/Z+cx、v=fy Y/Z+cy。若 fx=fy=500像素、主点(320,240),像素(370,265)对应的光轴深度Z=2米,则相机系坐标为(0.2,0.1,2.0)米。这里的Z是光轴方向深度;若设备给的是到相机中心的射线距离,不能原样套入公式。内外参及PnP接口见OpenCV标定文档。
图像缩放后,焦距与主点也要按同样比例缩放;裁切还会改变主点偏移。RGB与深度可能来自不同光学中心,彩色像素和深度像素不能默认一一对应。外参应在统一坐标约定下做完整变换。
编码器累计转角可提供轮式里程计,但轮滑会破坏纯滚动假设。IMU陀螺测角速度,加速度计测比力,静止时通常也会响应重力;必须分清重力、机身加速度和零偏。激光测距有最小/最大量程、反射及遮挡限制,缺失或无穷读数需要单独处理。
时间误差会长成几何误差
机器人以1米/秒行驶,两路数据相差50毫秒,仅平移就可能出现5厘米不一致。若同时转弯,误差还随测量点距离增大。应区分采样/曝光时刻、驱动收到数据的时刻、消息发布时刻。网络传输时间不能替代采样时间。
先确保各系统使用一致的时钟来源,再按时间戳查找或插值相应位姿。高速旋转时,一帧激光或滚动快门图像内部也不是同一时刻,可能需要运动补偿。ROS 2的时间设计说明见官方时钟与时间设计。
故障定位与练习
静止时对齐、运动时散开的点云,优先检查时间与运动补偿;所有点都固定旋转九十度,优先检查坐标轴约定;距离越远误差越大,则检查内参、尺度和角度外参。它们只是排查顺序,不能取代独立标定数据。
练习:将上述像素坐标原点裁掉左侧100像素,写出新主点和新的像素坐标,证明重建出的三维点应不变。面试自查:单目相机何时存在尺度歧义?为什么简单平均多次IMU读数不能消除随时间变化的偏置?