3. 多传感器数据采集
多传感器联合标注的质量,首先取决于采集阶段的数据是否“可对齐、可复现、可追溯”。如果相机、激光雷达、毫米波雷达、IMU、GNSS 等传感器各自为政,即使标注人员再仔细,也无法得到空间一致、时间一致的真值。因此,采集工程要解决四个核心问题:时间同步、空间标定、录制格式与采集规范。它们共同决定了后续标注、融合与训练的上限。
一、核心原理:为什么采集阶段决定标注上限
多传感器融合的本质,是把不同坐标系、不同采样率、不同延迟的数据映射到同一时空基准。时间同步解决“同一时刻”的问题,空间标定解决“同一位置”的问题,录制格式解决“同一容器”的问题,采集规范解决“同一流程”的问题。四者缺一不可。
以典型的自动驾驶采集车为例:相机 30 FPS、激光雷达 10 Hz、IMU 200 Hz、GNSS 10 Hz。若不做硬件触发,仅靠主机时间戳,相机与激光雷达之间可能产生数十毫秒的错位;在 60 km/h 下,30 ms 对应约 0.5 m 位移,足以让标注框与点云严重偏离。因此,采集阶段必须建立统一时钟源,并记录每个传感器的时间戳与触发信号。
1. 时间可对齐:所有传感器共享同一时钟基准,时间戳可换算;
2. 空间可映射:外参、内参、畸变系数完整且版本可追溯;
3. 数据可复现:原始数据、标定文件、配置参数、采集日志一并归档。
二、时间同步:硬件触发与软件对齐
时间同步通常分为三层:时钟同步、触发同步和时间戳对齐。时钟同步让所有设备使用同一时间源,常用 PTP(IEEE 1588)或 GPS/PPS;触发同步让传感器在同一物理时刻曝光或扫描,常用硬触发线或同步盒;时间戳对齐则在软件层把不同频率的数据插值到统一时间轴。
工程上推荐“硬同步优先、软对齐兜底”。相机使用外触发曝光,激光雷达使用 PPS 对齐旋转相位,IMU 与 GNSS 记录 UTC 时间。采集程序需为每帧数据写入两类时间:sensor_time(传感器内部时间)与 host_time(主机接收时间),并记录触发序号,便于排查丢帧与抖动。
# 典型时间戳记录结构(JSON Lines)
{"frame_id": 1024, "sensor": "camera_front",
"sensor_time_ns": 1710000000123456789,
"host_time_ns": 1710000000125000000,
"trigger_seq": 8821, "sync_status": "locked"}
# 检查时间偏差(伪代码)
for each frame:
offset = host_time_ns - sensor_time_ns
if abs(offset) > 5_000_000: # 超过 5 ms
log.warning("time offset too large", frame_id, offset)
三、空间标定:内参、外参与在线校验
空间标定分为内参标定与外参标定。内参描述相机焦距、主点、畸变;外参描述传感器之间的旋转与平移。多传感器联合标注最关心外参,因为它决定点云投影到图像是否重合。标定流程通常为:采集标定板/靶标数据 → 提取特征 → 求解初始外参 → 非线性优化 → 验证重投影误差。
标定不是一次性的。车辆震动、碰撞、温度变化都会导致外参漂移。因此采集规范要求:每次长任务前进行快速校验,使用已知靶标或自然场景特征检查重投影误差;若误差超过阈值,必须重新标定并更新标定文件版本。标定文件应与数据一同归档,记录标定时间、设备序列号、算法版本和残差指标。
| 标定对象 | 关键参数 | 常见方法 | 验收指标 |
|---|---|---|---|
| 相机内参 | 焦距、主点、畸变系数 | 棋盘格/圆点靶标 | 重投影误差 < 0.3 px |
| 相机-激光雷达外参 | 旋转 R、平移 t | 靶标 + 互信息/边缘对齐 | 投影偏差 < 2 px |
| 激光雷达-IMU 外参 | 杆臂、安装角 | 手眼标定/运动激励 | 轨迹闭合误差 < 0.1 m |
| 雷达-相机外参 | 旋转、平移、时间延迟 | 角反射器 + 联合优化 | 目标关联一致率 > 95% |
四、数据录制格式与采集规范
录制格式要兼顾完整性、可读性和可扩展性。常见方案包括 ROS bag、MCAP、自定义二进制容器加索引文件。无论选择哪种,都应满足:原始数据不丢帧、时间戳单调可查、传感器元数据齐全、支持随机读取与按时间切片。推荐使用 MCAP 或 rosbag2,并在元数据中写入传感器列表、标定文件路径、车辆信息、采集路线与天气光照。
采集规范应覆盖场景、路线、速度、光照、天气和操作流程。例如:每条路线至少采集晴天、阴天、夜间三种光照;高速、城区、停车场三类场景;每段数据保留前后各 10 秒缓冲;遇到急刹、遮挡、逆光等边缘情况单独标记。采集员需填写采集日志,标注异常事件的时间点与原因。
dataset/2024-06-01/run_003/├──
camera_front/ ├── lidar_top/ ├── imu/├──
calib/(内参、外参、版本)├──
meta/(传感器配置、车辆信息)└──
logs/(采集日志、异常事件、时间同步报告)
五、案例与复盘:一次时间错位导致的标注返工
某项目在城区采集时未启用相机硬触发,仅依赖主机时间戳。标注阶段发现,车辆运动时图像中的目标框与点云投影存在明显偏移,静止时却正常。排查后确认:相机曝光时刻与时间戳记录时刻相差约 40 ms,且随帧波动。最终只能对整批数据重新做时间对齐,并丢弃无法对齐的片段,返工成本极高。
复盘结论:第一,时间同步必须在采集端解决,不能留给标注端;第二,必须记录触发序号与同步状态,便于快速定位;第三,标定文件与数据必须绑定版本,避免“用新外参标旧数据”;第四,采集规范要包含同步自检步骤,例如每段数据开头录制 5 秒静止场景用于校验。
1. 只记录主机时间,不记录传感器时间;
2. 标定文件不写版本,导致数据与参数错配;
3. 录制时丢帧但不记录,标注时误判为算法问题;
4. 采集规范只写“注意事项”,没有可执行的检查清单。
六、采集检查清单
- 时钟源是否锁定?PTP/GPS 状态是否正常?
- 所有传感器是否收到触发信号?触发序号是否连续?
- 时间戳偏差是否在阈值内?是否记录同步报告?
- 标定文件是否最新?重投影误差是否达标?
- 录制容器是否完整?是否支持按时间切片读取?
- 采集日志是否记录路线、天气、光照、异常事件?
- 数据、标定、配置、日志是否一并归档并可追溯?
综上,多传感器数据采集不是简单的“录数据”,而是为联合标注建立时空基准的工程过程。时间同步保证同一时刻,空间标定保证同一位置,录制格式保证同一容器,采集规范保证同一流程。只有四者同时到位,后续的联合标注、融合训练和闭环验证才有可靠基础。