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 中 目标跟踪、测速

你想想看,这些数据的时间戳、频率、坐标系都不一样。回放的核心就是把这些数据按照时间轴对齐,然后统一到一个坐标系下。嗯,这就是咱们后面几章要重点讲的内容。

核心总结:做数据回放,先搞清楚每种数据的格式和特性。别急着写代码,先把数据读一遍,看看时间戳对不对、坐标系对不对。这一步做好了,后面就顺了。

多传感器数据类型与回放核心逻辑 多传感器数据回放 激光雷达 PointCloud2 摄像头 Image IMU Imu GPS NavSatFix 毫米波雷达 RadarScan 回放核心要素 ⏱ 时间戳对齐 🗺 坐标系统一 📊 频率匹配 🔧 数据格式转换

这张图把五种传感器和回放的核心要素串起来了。你仔细看看,每个传感器都有自己的消息类型,回放时要做的就是把它们的时间戳对齐、坐标系统一、频率匹配好。说白了,这就是多传感器数据回放的基本功。

个人建议:刚开始做回放时,别贪多。先拿一种数据练手,比如先回放激光雷达点云,搞明白了再加摄像头。我当年就是这么一步步来的。

可可精品资料库