1. 课程导入
当你看到一台移动机器人平稳地穿过走廊、避开行人、在动态环境中完成抓取时,背后往往并不是某一个传感器在工作,而是激光雷达、相机、IMU、轮式里程计、GNSS 等多类传感器同时提供观测。机器人要做的第一件事,是把这些来自不同物理位置、不同采样频率、不同时间基准的数据,统一到同一个时空参照系中。这个“统一”的过程,正是本课程要讨论的核心:时间同步与多传感器标定。
如果时间戳错位几十毫秒,高速运动下的点云与图像就会“对不上”;如果外参标定偏差 1°,远处 50 米的障碍物位置误差可能超过 0.8 米。很多看似“算法不行”的问题,根源其实在数据进入融合模块之前就已经埋下。因此,本课程不是单纯讲某个标定工具,而是建立一条从传感器组成、时间系统、空间变换到工程验证的完整知识链。
一、机器人多传感器系统的典型组成
以常见的室内外移动机器人或自动驾驶平台为例,传感器系统通常分为四类:
- 本体感知:轮式里程计、关节编码器,提供高频但会累积漂移的运动估计。
- 惯性感知:IMU 输出角速度与加速度,频率可达 100–1000 Hz,是短时运动预测的关键。
- 外部感知:激光雷达、单目/双目/RGB-D 相机,提供环境几何与纹理信息。
- 全局参考:GNSS、RTK、UWB,提供绝对位置约束,但更新率低且易受遮挡影响。
这些传感器在数据链路中并不是孤立存在,而是通过 ROS/ROS 2 话题、时间戳、TF 变换树和标定参数相互关联。下图给出了一个典型的多传感器系统结构,以及时间同步与标定在其中的位置。
二、时间同步:让数据“同时发生”
时间同步的目标,是让不同传感器采集到的数据拥有可比较的时间戳。工程上通常分三个层次:
- 硬件同步:通过 PPS、触发线或 PTP 让传感器在同一物理时刻采样,精度可达微秒级。
- 软件同步:在驱动层记录时间戳,利用 ROS 的
message_filters做近似时间对齐。 - 算法补偿:当无法硬件同步时,通过运动模型对时间差进行插值或外推。
例如,在 ROS 2 中常用近似时间同步器将 IMU 与图像对齐:
import message_filters
imu_sub = message_filters.Subscriber(node, Imu, '/imu/data')
img_sub = message_filters.Subscriber(node, Image, '/camera/image_raw')
sync = message_filters.ApproximateTimeSynchronizer(
[imu_sub, img_sub], queue_size=10, slop=0.02)
sync.registerCallback(callback)
这里的 slop=0.02 表示允许 20 ms 的时间偏差。若实际偏差长期超过该值,融合结果就会出现明显拖影或错位。
三、多传感器标定:让数据“落在同一位置”
标定解决的是空间一致性问题,通常包括:
- 内参标定:相机焦距、主点、畸变系数;IMU 的零偏与尺度因子。
- 外参标定:传感器之间的旋转与平移,如
T_lidar_camera、T_imu_lidar。 - 时间外参:部分系统还会估计传感器之间的固定时间延迟。
下表对比了常见标定对象与典型方法:
| 标定对象 | 典型参数 | 常用方法 | 常见工具 |
|---|---|---|---|
| 相机内参 | fx, fy, cx, cy, k1, k2 | 棋盘格 / 圆点靶标 | OpenCV, Kalibr |
| 相机-IMU 外参 | R, t, td | 连续时间批量优化 | Kalibr |
| 雷达-相机外参 | R, t | 靶标 + 边缘对齐 | Autoware, MATLAB |
| 雷达-IMU 外参 | R, t | 运动激励 + 手眼标定 | LI-Init, OpenCalib |
四、案例场景:一次“融合失败”的复盘
某移动机器人平台在低速时建图正常,但速度提升到 1.2 m/s 后,激光点云与图像融合出现明显重影。排查发现:相机驱动时间戳来自系统时间,而激光雷达使用 GPS 周内秒,两者相差约 80 ms。重新启用 PPS 硬件触发后,重影消失。这个案例说明:时间同步问题往往在低速时被掩盖,在高速时才暴露。
常见误区:只做外参标定,忽略时间戳检查;或只依赖软件同步,不验证实际延迟。建议每次上车前用 ros2 topic hz 和 ros2 topic delay 检查频率与延迟。
五、课程学习目标与知识框架
通过本课程,你将能够:
- 理解机器人多传感器系统的时间基准与坐标框架。
- 掌握硬件同步、软件同步与时间戳对齐的工程方法。
- 独立完成相机、IMU、激光雷达的内参与外参标定。
- 使用 Kalibr、OpenCV、ROS 2 等工具进行标定与验证。
- 定位并修复时间同步与标定相关的典型故障。