常见传感器数据类型:从点云到图像,从惯性到定位

做多传感器数据回放,第一步得搞清楚——我们到底在回放什么?

我刚开始接触这个领域时,以为传感器数据就是一堆数字。后来发现,每种传感器都有自己的“脾气”。激光雷达的点云、摄像头的图像、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:雷达散射截面积,表示目标大小

毫米波雷达有个特点:它不怕雨雾。激光雷达在大雨中基本废了,但毫米波雷达还能正常工作。所以做多传感器融合时,毫米波雷达是重要的“保底”传感器。

但毫米波雷达也有缺点:目标稀疏,而且容易产生虚警。回放时你会发现,有些目标明明不存在,但雷达就是检测到了。我建议你在回放时加上一个置信度阈值,低于阈值的直接过滤掉。

警告:毫米波雷达的虚警率较高,回放时不要全信。建议结合视觉或激光雷达做交叉验证。

知识体系总览

下面这张图,是我自己总结的传感器数据类型全景。你可以把它当作一个快速参考。

多传感器数据类型全景图 多传感器数据回放 激光雷达点云 x, y, z 坐标 intensity 反射强度 ring 线束编号 timestamp 时间戳 摄像头图像 width, height 分辨率 encoding 编码格式 step 行字节数 data 像素数据 IMU惯性数据 linear_acceleration angular_velocity orientation 四元数 covariance 协方差 GPS定位数据 latitude, longitude altitude 海拔 position_covariance status 定位状态 毫米波雷达 range 目标距离 velocity 径向速度 azimuth 水平角度 rcs 散射截面积

这张图里,我把五种传感器按数据类型分成了两类:密集数据(点云、图像)和稀疏数据(IMU、GPS、毫米波雷达)。密集数据量大,回放时要注意带宽和存储。稀疏数据量小,但频率高,回放时要注意时间同步。

好了,五种传感器数据类型就讲完了。每种传感器都有自己的“脾气”,摸透了它们,数据回放就成功了一半。

可可精品资料库