2. 常见传感器数据类型:激光雷达点云、摄像头图像、IMU惯性数据、GPS定位数据、毫米波雷达数据
做多传感器数据回放,第一步就是搞清楚你手里拿的是什么数据。我见过不少新手,上来就写回放代码,结果连数据格式都没搞明白,折腾半天回放出来的全是乱码。嗯,咱们先把这五种常见传感器的数据类型捋清楚。
2.1 激光雷达点云数据
激光雷达,说白了就是拿激光束去扫周围的环境。它返回的是一堆三维空间中的点,每个点都带着坐标信息。我习惯把点云数据想象成「用成千上万个针尖去戳物体表面」。
在ROS里,点云数据最常见的消息类型是 sensor_msgs::PointCloud2。它的核心字段包括:
- header:时间戳和坐标系ID
- fields:每个点的字段定义(x, y, z, intensity等)
- data:原始二进制数据
- width/height:点云的宽度和高度
重要提醒:回放点云时,一定要注意坐标系。我曾经在项目中遇到过,回放出来的点云全部悬在半空中,折腾了半天才发现是坐标系没对齐。
点云数据的特点:
- 数据量大:16线激光雷达每秒约30万个点,64线的能到200万个
- 稀疏性:大部分区域是空的,只有物体表面有数据
- 精度高:测距精度通常在±2cm以内
2.2 摄像头图像数据
图像数据大家最熟悉了。在自动驾驶里,摄像头通常装在车顶或前挡风玻璃后面。ROS里图像消息类型是 sensor_msgs::Image。
它的关键字段:
- encoding:编码格式(rgb8, bgr8, mono8等)
- height/width:图像分辨率
- step:一行数据的字节数
- data:像素数据
小技巧:回放图像时,我建议先用 image_view 工具预览一下。你想想看,如果图像是畸变的或者颜色通道搞反了,后面做目标检测全是错的。
图像数据回放的坑:
- 时间戳对齐:图像帧率和激光雷达帧率不同,回放时要做好同步
- 压缩格式:有些数据集用
sensor_msgs::CompressedImage,回放前要解压 - 色彩空间:BGR和RGB搞混是常见错误
2.3 IMU惯性数据
IMU测量的是加速度和角速度。ROS里用 sensor_msgs::Imu 消息。说实话,IMU数据看着简单,但处理起来最麻烦。
IMU消息包含:
- orientation:四元数表示的姿态
- angular_velocity:角速度(rad/s)
- linear_acceleration:线加速度(m/s²)
- covariance:协方差矩阵
注意:IMU数据有零偏!我曾经在回放时没做零偏补偿,结果积分出来的位置漂移得离谱。回放前一定要检查IMU的标定参数。
IMU数据的特点:
- 频率高:通常100Hz-400Hz
- 有噪声:加速度计和陀螺仪都有随机游走
- 需要积分:单独使用会快速发散
2.4 GPS定位数据
GPS提供的是经纬度和海拔信息。ROS里用 sensor_msgs::NavSatFix 消息。
核心字段:
- latitude/longitude:经纬度(度)
- altitude:海拔(米)
- position_covariance:位置协方差
- status:定位状态(单点解、差分、RTK等)
| 定位模式 | 精度 | 适用场景 |
|---|---|---|
| 单点定位 | 2-5米 | 普通导航 |
| DGPS | 0.5-1米 | 车道级导航 |
| RTK | 2-5厘米 | 高精度定位 |
经验之谈:回放GPS数据时,我建议把经纬度转成UTM坐标。为什么?因为直接在经纬度下算距离太麻烦了,UTM坐标是米制的,方便做融合。
2.5 毫米波雷达数据
毫米波雷达用电磁波探测目标。ROS里用 sensor_msgs::PointCloud 或者 radar_msgs::RadarScan。
毫米波雷达的数据特点:
- 距离:通常0.5-250米
- 速度:可以直接测量径向速度
- 角度:水平视角通常±60°
- RCS:雷达散射截面积,用于判断目标大小
回放毫米波雷达数据时要注意:
- 多径效应:雷达波会反射,产生虚假目标
- 点云稀疏:一帧可能只有几十个点
- 速度模糊:高速目标可能测速不准
避坑指南:我曾经在回放毫米波雷达数据时,发现目标位置一直在跳。后来发现是雷达的安装角度没标定好。回放前一定要确认雷达的外参。
2.6 五种数据对比
咱们把这五种数据放在一起看看:
| 传感器 | 数据类型 | 频率 | 数据量 | 主要用途 |
|---|---|---|---|---|
| 激光雷达 | 点云 | 10-20Hz | 大 | 环境感知、建图 |
| 摄像头 | 图像 | 15-30Hz | 大 | 目标检测、车道线 |
| IMU | 惯性数据 | 100-400Hz | 小 | 姿态估计、定位 |
| GPS | 定位数据 | 1-20Hz | 小 | 全局定位 |
| 毫米波雷达 | 雷达点云 | 10-50Hz | 中 | 目标跟踪、测速 |
你想想看,这些数据的时间戳、频率、坐标系都不一样。回放的核心就是把这些数据按照时间轴对齐,然后统一到一个坐标系下。嗯,这就是咱们后面几章要重点讲的内容。
核心总结:做数据回放,先搞清楚每种数据的格式和特性。别急着写代码,先把数据读一遍,看看时间戳对不对、坐标系对不对。这一步做好了,后面就顺了。
这张图把五种传感器和回放的核心要素串起来了。你仔细看看,每个传感器都有自己的消息类型,回放时要做的就是把它们的时间戳对齐、坐标系统一、频率匹配好。说白了,这就是多传感器数据回放的基本功。
个人建议:刚开始做回放时,别贪多。先拿一种数据练手,比如先回放激光雷达点云,搞明白了再加摄像头。我当年就是这么一步步来的。
可可精品资料库