常见传感器数据类型:从点云到图像,从惯性到定位
做多传感器数据回放,第一步得搞清楚——我们到底在回放什么?
我刚开始接触这个领域时,以为传感器数据就是一堆数字。后来发现,每种传感器都有自己的“脾气”。激光雷达的点云、摄像头的图像、IMU的惯性数据、GPS的定位信息、毫米波雷达的目标列表……它们的数据结构、时间戳、坐标系,全都不一样。
今天我就带你挨个捋一遍。嗯,咱们从最“重”的开始。
1. 激光雷达点云数据
激光雷达,说白了就是“用激光测距”。它每秒发射几十万甚至上百万个激光脉冲,测量每个点的距离和角度,最终生成一个三维点云。
点云的数据结构,通常包含以下字段:
- x, y, z:三维坐标,单位米
- intensity:反射强度,范围0-255
- ring:激光线束编号(比如16线、32线、64线)
- timestamp:每个点的时间戳,微秒级
我在项目中遇到过一个问题:回放时点云显示不全。后来发现是时间戳没对齐。激光雷达每个点都有自己的时间,而ROS的PointCloud2消息里,时间戳是整帧的。你想想看,如果一帧点云跨越了10毫秒,而你只用帧头时间,那点云和图像就永远对不上。
核心要点:点云回放时,务必关注每个点的时间戳,而不是帧时间戳。
常见的激光雷达数据格式:
| 格式 | 说明 | 典型传感器 |
|---|---|---|
| ROS PointCloud2 | ROS标准点云消息,支持多字段 | Velodyne、Ouster |
| PCD | Point Cloud Library格式 | 离线文件 |
| LAS/LAZ | 测绘行业标准格式 | 机载激光雷达 |
2. 摄像头图像数据
图像数据,大家都很熟悉。但做数据回放时,有几个坑你得注意。
图像的数据结构:
- width, height:分辨率,比如1920x1080
- encoding:编码格式,常见的有bgr8、rgb8、mono8、yuv422
- step:一行数据的字节数,通常等于width * channels
- data:原始像素数据,字节数组
我曾经踩过一个坑:回放图像时画面是花的。查了半天,发现是编码格式搞错了。ROS里图像消息的encoding字段是bgr8,但我按rgb8去解析,颜色通道全乱了。
警告:图像编码格式必须严格匹配。bgr8和rgb8差一个通道顺序,画面就完全不对。
另外,图像的时间戳也很关键。摄像头通常有硬件触发时间戳,但有些廉价摄像头的时间戳是软件生成的,精度很差。我建议你在采集时就记录好硬件时间戳,否则回放时图像和激光雷达永远对不齐。
3. IMU惯性数据
IMU,惯性测量单元。它测量的是加速度和角速度。数据量不大,但频率很高——通常100Hz到1000Hz。
IMU的数据结构:
- linear_acceleration:三轴加速度,单位m/s²
- angular_velocity:三轴角速度,单位rad/s
- orientation:姿态四元数(部分IMU直接输出)
- covariance:协方差矩阵,表示噪声水平
IMU数据有个特点:它非常“敏感”。你手抖一下,数据就跳了。回放时你会发现,IMU数据看起来像一堆噪声。但别急,这些噪声里藏着运动信息。
我个人习惯在回放IMU数据时,先做一次低通滤波。不然画出来的曲线全是毛刺,根本看不出趋势。
小技巧:IMU数据回放时,建议同时显示加速度和角速度的曲线图。这样能直观判断数据质量。
4. GPS定位数据
GPS数据,大家都不陌生。但做数据回放时,有几个细节容易被忽略。
GPS的数据结构:
- latitude, longitude:经纬度,单位度
- altitude:海拔,单位米
- position_covariance:位置协方差
- status:定位状态(单点、差分、RTK固定解等)
为什么GPS数据回放时要关注status?因为不同状态下的精度天差地别。单点定位误差可能5-10米,RTK固定解可以到厘米级。如果你回放时不管status,直接把所有GPS点画在地图上,那轨迹可能歪得离谱。
我记得有一次做自动驾驶数据回放,发现车辆轨迹突然跳了十几米。查了半天,原来是GPS从RTK固定解降级到了单点定位。从那以后,我回放GPS数据时一定会把status用颜色标出来。
核心要点:GPS回放时,务必根据status字段过滤数据。低精度点建议用灰色显示,高精度点用亮色。
5. 毫米波雷达数据
毫米波雷达,和激光雷达不一样。它不生成点云,而是生成目标列表。每个目标包含距离、速度、角度等信息。
毫米波雷达的数据结构:
- range:目标距离,单位米
- velocity:径向速度,单位m/s
- azimuth:水平角度,单位弧度
- elevation:俯仰角度(部分雷达支持)
- rcs:雷达散射截面积,表示目标大小
毫米波雷达有个特点:它不怕雨雾。激光雷达在大雨中基本废了,但毫米波雷达还能正常工作。所以做多传感器融合时,毫米波雷达是重要的“保底”传感器。
但毫米波雷达也有缺点:目标稀疏,而且容易产生虚警。回放时你会发现,有些目标明明不存在,但雷达就是检测到了。我建议你在回放时加上一个置信度阈值,低于阈值的直接过滤掉。
警告:毫米波雷达的虚警率较高,回放时不要全信。建议结合视觉或激光雷达做交叉验证。
知识体系总览
下面这张图,是我自己总结的传感器数据类型全景。你可以把它当作一个快速参考。
这张图里,我把五种传感器按数据类型分成了两类:密集数据(点云、图像)和稀疏数据(IMU、GPS、毫米波雷达)。密集数据量大,回放时要注意带宽和存储。稀疏数据量小,但频率高,回放时要注意时间同步。
好了,五种传感器数据类型就讲完了。每种传感器都有自己的“脾气”,摸透了它们,数据回放就成功了一半。
可可精品资料库