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 状态是否正常?
  • 所有传感器是否收到触发信号?触发序号是否连续?
  • 时间戳偏差是否在阈值内?是否记录同步报告?
  • 标定文件是否最新?重投影误差是否达标?
  • 录制容器是否完整?是否支持按时间切片读取?
  • 采集日志是否记录路线、天气、光照、异常事件?
  • 数据、标定、配置、日志是否一并归档并可追溯?
多传感器采集:时间同步 · 空间标定 · 录制归档 传感器层 相机 30 FPS 激光雷达 10 Hz 毫米波雷达 20 Hz IMU 200 Hz GNSS 10 Hz 同步与标定层 PTP / GPS PPS 时钟源 硬触发同步盒 内外参标定与校验 时间戳对齐 录制与归档层 MCAP / rosbag2 标定文件 + 版本 采集日志 + 异常事件 元数据 + 场景标签 采集检查:时钟锁定 · 触发连续 · 时间偏差 < 5 ms · 重投影误差达标 · 数据可追溯 任一环节缺失,都会导致标注阶段的空间错位或时间错位

综上,多传感器数据采集不是简单的“录数据”,而是为联合标注建立时空基准的工程过程。时间同步保证同一时刻,空间标定保证同一位置,录制格式保证同一容器,采集规范保证同一流程。只有四者同时到位,后续的联合标注、融合训练和闭环验证才有可靠基础。