多模态数据基础:图像、激光雷达点云、毫米波雷达、IMU、GPS等传感器的数据格式与特性
做多模态融合,第一关就是跟各种传感器打交道。说实话,我刚入行那会儿,光搞明白每个传感器吐出来的数据长什么样,就花了两周。你想想看,如果连数据格式都搞不清楚,后面谈融合、谈同步,全是空中楼阁。
这一章,咱们就把主流传感器的数据格式和特性掰开揉碎讲清楚。我会结合自己踩过的坑,帮你建立一张「传感器数据认知地图」。
2.1 图像传感器(RGB / 双目 / 事件相机)
图像数据,大家最熟悉。但熟悉不等于理解到位。
2.1.1 数据格式
常规RGB图像,就是一个三维数组:[H, W, 3]。H是高度,W是宽度,3是通道数(R、G、B)。每个像素的值范围通常是0-255(uint8)。
但实际工程里,有几点要注意:
- 颜色空间: 大部分算法用RGB,但有些场景(比如夜间)转成YUV或HSV效果更好。我在一个雨夜的项目里试过,YUV通道分离后做去噪,比RGB直接处理稳定得多。
- 位深: 工业相机常见12bit或14bit RAW数据。直接用uint8会丢失暗部细节。我建议,如果做高动态范围融合,尽量保留原始位深。
- 双目/多目: 本质上是多张图像的时间同步和空间对齐。数据格式就是多个
[H, W, 3]的堆叠,但需要额外的标定参数文件(内参、外参、基线距离)。
2.1.2 关键特性
| 特性 | 说明 | 工程影响 |
|---|---|---|
| 高分辨率 | 像素级稠密信息 | 适合语义分割、目标分类,但计算量大 |
| 被动感知 | 依赖环境光照 | 夜间、逆光、隧道场景性能骤降 |
| 帧率固定 | 通常30/60fps | 高速运动时存在运动模糊 |
| 无深度信息 | 单目无法直接测距 | 需要结构光或双目视差才能恢复深度 |
2.2 激光雷达点云(LiDAR)
点云数据,说白了就是一堆三维坐标点。每个点包含 (x, y, z),有些还带反射强度 intensity 或颜色 rgb。
2.2.1 数据格式
常见的点云格式有:
- PCD(Point Cloud Data): ROS生态常用,支持ASCII和二进制。头部包含点云数量、字段定义。
- LAS/LAZ: 测绘行业标准,支持分类、回波次数等属性。
- PLY: 支持顶点和面片,常用于三维重建。
- BIN(二进制裸数据): 比如KITTI数据集用的格式,直接按
[x, y, z, intensity]顺序存储float32。
实际工程中,我建议用二进制格式。ASCII格式在点云数量超过10万时,读写速度会慢到让人崩溃。
2.2.2 关键特性
| 特性 | 说明 | 工程影响 |
|---|---|---|
| 稀疏性 | 水平分辨率高,垂直分辨率低 | 远距离目标点云稀疏,容易漏检 |
| 主动感知 | 不受光照影响 | 夜间、逆光场景依然稳定 |
| 精确测距 | 厘米级精度 | 适合障碍物检测、SLAM建图 |
| 无纹理信息 | 只有几何和反射强度 | 无法区分同形状不同颜色的物体 |
2.3 毫米波雷达(Radar)
毫米波雷达的数据,跟图像和点云完全不是一个路子。它不输出「点」,而是输出「目标列表」或「能量谱」。
2.3.1 数据格式
主流格式有两种:
- 目标列表(Object List): 每个目标包含距离、速度、方位角、信噪比等。格式类似:
[id, range, velocity, azimuth, snr]。 - 点云格式(Point Cloud): 类似LiDAR,但点更稀疏,且每个点自带多普勒速度。
- 原始数据(ADC Data): 最底层的数据,是经过混频和采样后的复数信号。需要做FFT才能提取目标。
我个人习惯,在融合系统中优先用目标列表。点云格式虽然信息更全,但处理起来计算量太大,实时性很难保证。
2.3.2 关键特性
| 特性 | 说明 | 工程影响 |
|---|---|---|
| 直接测速 | 利用多普勒效应,直接输出径向速度 | 对动态目标检测非常可靠 |
| 穿透性强 | 雨雾、扬尘、黑暗环境不受影响 | 全天候感知的核心传感器 |
| 角度分辨率低 | 水平角分辨率通常只有几度 | 无法区分近距离并排的两个行人 |
| 虚警率高 | 多径反射、静止杂波容易产生假目标 | 需要做目标跟踪和置信度过滤 |
2.4 IMU(惯性测量单元)
IMU的数据,说白了就是加速度和角速度。但它的「特性」比「格式」更重要。
2.4.1 数据格式
典型IMU输出:
// 加速度计 (m/s²)
accel_x, accel_y, accel_z
// 陀螺仪 (rad/s)
gyro_x, gyro_y, gyro_z
// 可选:磁力计 (μT)
mag_x, mag_y, mag_z
// 时间戳 (μs)
timestamp
数据频率通常很高,100Hz到1000Hz不等。我建议,在融合系统中,IMU数据一定要用高精度时间戳对齐,否则积分出来的位姿会漂移得离谱。
2.4.2 关键特性
| 特性 | 说明 | 工程影响 |
|---|---|---|
| 高频输出 | 100-1000Hz | 适合做帧间插值和运动补偿 |
| 短时精度高 | 短时间内相对位姿估计准确 | 适合做视觉/激光的帧间约束 |
| 长时漂移 | 积分误差随时间累积 | 不能单独用于长时间定位 |
| 零偏不稳定 | 温度变化导致零偏漂移 | 需要定期标定或在线估计 |
2.5 GPS(全球定位系统)
GPS数据,核心就是经纬度和海拔。但实际工程中,远不止这些。
2.5.1 数据格式
最常见的格式是NMEA 0183协议,比如:
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
解析后得到:
- UTC时间
- 纬度、经度(度分格式)
- 定位质量(0=无效,1=单点,2=差分)
- 卫星数量
- 水平精度因子(HDOP)
- 海拔高度
除了NMEA,还有更紧凑的二进制格式,比如u-blox的UBX协议。我建议,在实时系统中用二进制格式,解析效率高很多。
2.5.2 关键特性
| 特性 | 说明 | 工程影响 |
|---|---|---|
| 定位 | 提供全局坐标,无累积误差 | 消除SLAM的长期漂移 |
| 更新率低 | 通常10Hz | 高速运动时,帧间位移大,需要插值 |
| 易受遮挡 | 高楼、隧道、树荫下信号弱 | 城市峡谷场景需要IMU辅助 |
| 精度波动大 | 单点定位2-5m,差分定位cm级 | 融合系统中需要根据HDOP动态调整权重 |
2.6 传感器数据特性对比总览
下面这张SVG图,帮你把五种传感器的核心特性放在一起对比。你可以把它当作一张「选型速查表」。
2.7 融合视角下的数据对齐要点
搞清楚了单个传感器的数据格式,接下来就要思考:这些数据怎么「对齐」?
我总结了三层对齐:
- 时间对齐: 不同传感器的采样时刻不同。比如相机30fps(33ms一帧),LiDAR 10Hz(100ms一帧),IMU 200Hz(5ms一帧)。融合时,需要把高频数据插值到低频数据的时间戳上。
- 空间对齐: 每个传感器有自己的坐标系。相机是像素坐标系,LiDAR是雷达坐标系,GPS是经纬度坐标系。需要标定出外参矩阵,把所有数据统一到车体坐标系或世界坐标系。
- 语义对齐: 不同传感器对同一物体的描述方式不同。相机看到的是「红色轿车」,LiDAR看到的是「一堆点云」,雷达看到的是「一个速度为10m/s的目标」。融合时,需要建立语义映射关系。