3. 数据采集与车端传感器
自动驾驶系统的感知能力高度依赖车端多类型传感器的协同工作。摄像头提供丰富的纹理与色彩信息,激光雷达输出高精度三维点云,毫米波雷达在恶劣天气下依然稳定测距测速,IMU/GNSS则持续输出车辆自身运动状态与全局定位。这些传感器产生的数据在格式、频率、时间同步、带宽与存储需求上差异巨大,直接决定了云端数据闭环中数据清洗、标注、仿真与模型训练的可行性与成本。本章围绕各类传感器的数据格式、采集触发条件、时间同步机制及工程化采集要求展开,帮助学员建立从物理信号到云端数据资产的全链路认知。
上图展示了车端多传感器数据采集的整体链路:各类传感器以各自固有频率产生原始数据,经过采集网关统一时间戳对齐后,进入本地缓存与预处理模块,最终按需回传至云端。该链路中,时间同步精度、数据格式标准化与采集触发策略是决定数据闭环质量的核心要素。
3.1 摄像头数据格式与采集要求
3.1.1 核心原理:图像数据的三层表达
摄像头传感器输出的是光信号转换为电信号后的数字图像。原始RAW数据经过ISP(图像信号处理器)处理后,可输出不同格式的图像数据。在自动驾驶数据闭环中,通常关注三种层级的数据:
- RAW格式:传感器直接输出的未处理数据,位深通常为10bit或12bit,数据量最大但保留了最完整的原始信息,适合做图像质量调优和特殊算法训练。
- YUV/YCbCr格式:经过ISP处理后的标准视频格式,Y为亮度分量,U/V为色度分量。自动驾驶常用YUV422或YUV420,兼顾画质与带宽。
- 压缩格式(JPEG/H.264/H.265):用于降低存储和传输成本。JPEG常用于单帧抓拍,H.264/H.265用于连续视频流。压缩会引入块效应和细节损失,对目标检测任务影响较小,但对像素级分割任务需谨慎。
3.1.2 采集要求与关键参数
| 参数项 | 典型值/范围 | 说明 |
|---|---|---|
| 分辨率 | 1920x1080 ~ 3840x2160 | 前视摄像头通常≥2MP,环视可适当降低 |
| 帧率 | 30fps / 60fps | 高速场景建议60fps,减少运动模糊 |
| 位深 | 8bit / 10bit / 12bit | 10bit以上对暗光场景更友好 |
| 曝光模式 | 全局曝光 / 卷帘曝光 | 自动驾驶强烈建议全局曝光,避免果冻效应 |
| HDR | 2档 / 3档曝光融合 | 应对隧道出入口、逆光场景 |
| 时间戳精度 | ≤1ms | 需硬件触发或PTP同步 |
3.1.3 实战场景:多目摄像头同步采集
某自动驾驶公司部署了9路摄像头(前视3目+环视4目+后视2目),在数据采集过程中发现不同摄像头之间的帧率漂移导致拼接图像错位。通过引入硬件触发线(FPS同步信号)将所有摄像头锁定在同一帧率,并采用PTP(IEEE 802.1AS)协议进行时间同步,最终将帧间时间偏差控制在200μs以内。同时,采集软件为每帧图像附加了全局唯一ID和UTC时间戳,确保云端回放时多路图像严格对齐。
3.2 激光雷达数据格式与采集要求
3.2.1 核心原理:点云数据的组织方式
激光雷达通过发射激光束并测量反射时间来计算目标距离,输出的是三维空间中的离散点集合。点云数据通常包含以下字段:
- 空间坐标:X/Y/Z,单位通常为米,坐标系为雷达自身坐标系(右手系)。
- 反射强度:Intensity,反映目标表面反射率,对道路标线、路沿识别有重要价值。
- 时间戳:每个点或每帧的采集时间,用于运动补偿。
- 通道号/线束号:标识该点来自哪条激光束,便于分析扫描模式。
常见的数据存储格式包括PCD(Point Cloud Data)、BIN(二进制裸数据)、ROS Bag内嵌的sensor_msgs/PointCloud2消息。PCD格式可读性好但体积大,BIN格式紧凑但需配套描述文件。
3.2.2 采集要求与质量控制
| 参数项 | 典型值/范围 | 说明 |
|---|---|---|
| 线束数 | 16/32/64/128线 | 线束越多,垂直分辨率越高 |
| 扫描频率 | 10Hz / 20Hz | 10Hz为常用默认值,高速场景可调至20Hz |
| 测距范围 | 0.3m ~ 200m | 远距探测能力影响高速决策 |
| 测距精度 | ±2cm ~ ±5cm | 受目标反射率和环境光影响 |
| 视场角 | 水平360° / 垂直-25°~+15° | 机械式雷达水平全向,固态雷达视场有限 |
| 点频 | 50万 ~ 200万点/秒 | 决定单帧点云密度 |
3.2.3 案例拆解:点云运动畸变校正
车辆在行驶过程中,激光雷达扫描一帧(100ms)期间车辆自身移动了约1-2米,导致点云出现运动畸变。某团队在采集数据时,利用IMU提供的角速度和线加速度,对每个点根据其相对帧起始时刻的时间偏移进行坐标变换补偿。具体流程为:
- 从IMU获取高频(200Hz)姿态和位置增量。
- 对每个激光点,根据其时间戳插值出对应的车辆位姿。
- 将该点从雷达坐标系变换到世界坐标系,再变换回帧起始时刻的雷达坐标系。
- 输出校正后的点云帧,并标记运动补偿标志位。
经过校正后,点云中的建筑物边缘清晰度提升了约40%,显著改善了后续的目标检测和地图构建效果。该过程在采集网关中实时完成,避免将原始畸变数据直接上传云端。
3.3 毫米波雷达数据格式与采集要求
3.3.1 核心原理:点迹与目标列表
毫米波雷达(通常77GHz或79GHz)通过FMCW(调频连续波)体制测量目标的距离、速度和角度。其输出数据分为两个层级:
- 点迹(Point Cloud):每个检测点包含距离、径向速度、方位角、俯仰角(4D雷达)、信噪比(SNR)等信息。点迹数量较多,反映原始检测结果。
- 目标列表(Target List):经过聚类和跟踪后的稳定目标,包含目标ID、位置、速度、加速度、RCS(雷达散射截面)等。目标列表更利于上层决策直接使用。
3.3.2 采集要求与数据特性
| 参数项 | 典型值/范围 | 说明 |
|---|---|---|
| 更新频率 | 20Hz ~ 50Hz | 比激光雷达更高,适合高速场景 |
| 距离分辨率 | 0.1m ~ 0.5m | 带宽越大分辨率越高 |
| 速度分辨率 | 0.1m/s ~ 0.5m/s | 对目标微动检测重要 |
| 角度分辨率 | 1° ~ 3°(水平) | 4D雷达可提供俯仰角 |
| 数据接口 | CAN FD / 以太网 | CAN FD带宽有限,点迹模式需以太网 |
3.3.3 实战场景:雷达与摄像头融合采集
在雨天场景下,摄像头图像质量严重下降,而毫米波雷达几乎不受影响。某项目在采集时采用雷达目标列表作为主传感器,摄像头图像作为辅助验证。采集系统为每个雷达目标分配一个全局ID,并尝试与摄像头检测框进行关联。当关联成功时,在图像上叠加雷达目标的距离和速度信息;关联失败时,单独记录雷达目标并标记“视觉缺失”状态。这种采集策略为后续的多传感器融合算法提供了高质量的训练数据。
3.4 IMU/GNSS数据格式与采集要求
3.4.1 核心原理:车辆运动状态与全局定位
IMU(惯性测量单元)输出三轴加速度和三轴角速度,频率通常为100Hz-200Hz。GNSS(全球导航卫星系统)输出车辆的位置、速度和时间信息,频率通常为10Hz-20Hz。两者融合(组合导航)可提供高频、低漂移的车辆位姿估计。
- IMU原始数据:加速度计(Accelerometer)和陀螺仪(Gyroscope)的原始采样值,需经过零偏、标度因子和安装角校正。
- GNSS数据:包含经纬度、海拔、航向角、速度、定位精度因子(PDOP)、卫星数等。RTK(实时动态差分)模式下可实现厘米级定位。
- 组合导航输出:融合后的6自由度位姿(位置+姿态),以及对应的协方差矩阵。
3.4.2 采集要求与时间同步
| 参数项 | 典型值/范围 | 说明 |
|---|---|---|
| IMU频率 | 100Hz / 200Hz | 高频数据用于运动补偿和轨迹插值 |
| GNSS频率 | 10Hz / 20Hz | RTK模式下更新率可能降低 |
| 时间同步 | PPS脉冲 + NMEA语句 | PPS提供秒脉冲,NMEA提供UTC时间 |
| 数据格式 | 二进制 / ASCII | 常用协议:NMEA-0183、UBX、RTCM3 |
| IMU量程 | 加速度±4g/±8g,角速度±500°/s | 需覆盖车辆动态范围 |
3.4.3 案例拆解:地下停车场定位数据采集
某自动泊车项目需要采集地下停车场的建图数据。由于GNSS信号完全丢失,团队采用“IMU + 轮速计 + 视觉里程计”的组合方案。采集过程中,车辆以5-10km/h低速行驶,IMU以200Hz记录原始数据,同时摄像头以20fps采集环视图像。采集完成后,通过离线SLAM算法生成停车场高精地图。关键经验是:在GNSS失效区域,必须增加采集圈数和重叠度,并利用地面特征(如车位线、柱子)进行闭环检测,以控制累积误差。
3.5 多传感器时间同步与数据封装
3.5.1 时间同步的工程实现
多传感器数据融合的前提是精确的时间对齐。常用的时间同步方案包括:
- 硬件同步:通过PPS(秒脉冲)和PTP(IEEE 1588)协议,为所有传感器提供统一的时间基准。摄像头和激光雷达支持硬件触发线,可实现微秒级同步。
- 软件同步:在采集软件中,根据各传感器的时间戳进行插值或最近邻匹配。适用于对同步精度要求不高的场景。
- 混合同步:GNSS提供时间,PTP负责局域网内设备同步,硬件触发线负责关键传感器(摄像头+激光雷达)的帧级同步。
3.5.2 数据封装与元数据管理
采集系统应将所有传感器的数据封装为统一的数据帧格式,包含:
- 帧头:协议版本、数据帧类型、帧长度。
- 时间戳:UTC时间(纳秒精度)和本地单调时钟。
- 传感器ID:唯一标识传感器类型和安装位置。
- 数据体:原始数据或压缩数据。
- 校验和:用于数据完整性验证。
// 示例:统一数据帧头结构(C语言描述)
typedef struct {
uint32_t magic; // 0xA5A5A5A5
uint16_t version; // 协议版本
uint16_t frame_type; // 0x01=图像, 0x02=点云, 0x03=雷达, 0x04=IMU
uint32_t sensor_id; // 传感器唯一ID
uint64_t utc_timestamp; // UTC纳秒时间戳
uint64_t mono_timestamp; // 单调时钟纳秒
uint32_t data_length; // 数据体长度
uint32_t checksum; // CRC32校验
} FrameHeader;
3.5.3 常见误区与总结复盘
总结复盘:高质量的数据采集是自动驾驶云端数据闭环的基石。摄像头需关注位深、曝光和畸变;激光雷达需关注点云密度、运动畸变和天气影响;毫米波雷达需区分点迹与目标列表;IMU/GNSS需关注频率、量程和定位状态。所有传感器数据必须统一时间基准、统一封装格式、完整记录元数据,才能为云端算法训练和场景挖掘提供可靠的数据资产。