2. 传感器与数据基础:常见传感器、数据格式与坐标系、时间同步问题
做动态场景目标关联,说白了就是让机器“看懂”周围发生了什么。但机器没有眼睛,它靠的是传感器。我这些年踩过的坑,十有八九都跟传感器数据没处理好有关。今天咱们就把这个地基打牢。
2.1 常见传感器:三驾马车
目前主流的感知传感器就三种:雷达、摄像头、激光雷达。它们各有脾气,你得摸透了才能用好。
2.1.1 雷达(毫米波雷达)
雷达这玩意儿,我习惯叫它“老黄牛”。干活踏实,不怕雨雪雾,测距测速一把好手。但它有个毛病——分辨率低。你让它看前面有个行人,它只能告诉你“那儿有个东西”,至于是人还是垃圾桶,它分不清。
- 优点:全天候工作,直接测速(多普勒效应),探测距离远(200米+)
- 缺点:角度分辨率差,无法识别物体类别
- 典型数据:目标列表(距离、速度、角度、RCS值)
2.1.2 摄像头
摄像头就像人的眼睛,信息量最大。它能告诉你“那是个穿红衣服的小孩”。但一到晚上或者大雾天,它就抓瞎了。我有个同事曾经在隧道口因为逆光,摄像头直接丢掉了目标——嗯,这种坑咱们得提前知道。
- 优点:纹理丰富,可做分类识别,成本低
- 缺点:受光照影响大,无直接深度信息
- 典型数据:图像帧(RGB/YUV),目标检测框(x, y, w, h, class)
2.1.3 激光雷达(LiDAR)
激光雷达是“精度狂魔”。它发射激光束,打出几十万个点,能精确还原周围的三维结构。但价格贵,而且怕雨雪——雨滴会反射激光,产生大量噪点。
- 优点:高精度3D点云,不受光照影响
- 缺点:成本高,恶劣天气性能下降
- 典型数据:点云(x, y, z, intensity),每帧可达数十万点
2.2 数据格式与坐标系:鸡同鸭讲的问题
传感器数据格式五花八门,坐标系更是各说各话。我见过最离谱的案例——雷达用的是极坐标系,摄像头用的是像素坐标系,结果融合时直接算出了负距离。为什么会这样?因为没人做坐标系对齐。
2.2.1 常见数据格式
| 传感器 | 数据格式 | 关键字段 |
|---|---|---|
| 雷达 | CAN总线 / 自定义协议 | 距离(m)、速度(m/s)、角度(°)、RCS(dB) |
| 摄像头 | 图像帧 / JSON检测结果 | 像素坐标(u,v)、宽高(w,h)、置信度 |
| 激光雷达 | PCD / ROS bag / 二进制点云 | 三维坐标(x,y,z)、反射强度(intensity) |
2.2.2 坐标系:统一才能对话
做目标关联前,必须把所有数据转到同一个坐标系下。我个人习惯用车辆坐标系——原点在车辆后轴中心,x轴向前,y轴向左,z轴向上。
- 雷达坐标系:极坐标 (r, θ) → 转直角坐标 (x = r*cosθ, y = r*sinθ)
- 摄像头坐标系:像素坐标 (u, v) → 通过内参矩阵转相机坐标 → 再通过外参转车辆坐标
- 激光雷达坐标系:通常已经是直角坐标,但需要旋转平移对齐到车辆坐标系
2.3 时间同步:所有问题的根源
时间不同步,数据就是废的。你想想看,雷达在t1时刻检测到目标,摄像头在t2时刻才拍到,这两个数据怎么关联?
2.3.1 时间戳对齐
每个传感器都有自己的时钟,晶振漂移会导致时间偏差。我建议的做法是:
- 所有传感器统一使用GPS的PPS信号作为时间基准
- 每个数据帧打上硬件时间戳(不是软件时间戳,软件延迟不可控)
- 在算法层面做插值对齐——比如雷达100Hz,摄像头30Hz,那就找时间最近的帧配对
2.3.2 延迟补偿
传感器从采集到输出数据,有固定延迟。雷达延迟约10-20ms,摄像头延迟约30-50ms(含曝光和传输),激光雷达延迟约5-10ms。这些延迟如果不补偿,高速场景下目标位置会差好几米。
2.4 知识体系总览
下面这张图,是我自己总结的传感器数据基础框架。每次做新项目,我都会先对照这张图检查一遍,避免遗漏关键环节。
这张图的核心逻辑是:先搞清楚每个传感器输出什么格式的数据,然后统一到同一个坐标系下,最后解决时间对齐问题。这三步走完,数据基础才算打牢。
好了,这一章的内容就到这里。下一章咱们聊聊目标检测与跟踪的基础算法,到时候我会拿实际项目里的代码给大家演示。