第3章:传感器与感知输入:激光雷达、毫米波雷达、摄像头、超声波雷达的特性与数据融合
各位同学,今天我们聊聊感知层的核心——传感器。说白了,自动驾驶的“眼睛”就靠这几样东西。我做了这么多年规划,最深的体会是:没有完美的传感器,只有聪明的融合策略。
3.1 激光雷达:精度之王,但也有脾气
激光雷达,大家习惯叫它LiDAR。它的原理很简单——发射激光束,测量反射时间,算出距离。精度能到厘米级,甚至毫米级。
优点很明显:
- 点云密度高,能构建3D环境模型
- 不受光照影响,晚上照样干活
- 直接测距,不需要复杂的视觉算法
缺点也让人头疼:
- 价格贵,尤其是机械旋转式的
- 怕雨雪雾,激光会被水滴散射
- 对黑色物体、镜面反射物体容易“失明”
我的经验: 有一次在雨夜测试,激光雷达几乎“瞎了”,点云稀疏得像星空。后来我强制在雨雪天气降低对LiDAR的置信度,改用毫米波雷达做主传感器。这个坑,踩过一次就记住了。
3.2 毫米波雷达:全天候选手
毫米波雷达,频率在30-300GHz之间。它不像激光雷达那么精细,但胜在稳定。
核心特性:
- 穿透能力强,雨雪雾天照样工作
- 直接测量速度(多普勒效应),这点LiDAR做不到
- 探测距离远,长距雷达能到200米以上
但别高兴太早:
- 角度分辨率低,很难区分两个靠近的目标
- 对静止目标检测能力弱,容易漏检
- 容易产生虚警,比如井盖、路牌都可能被误判
为什么会这样?因为毫米波雷达的波束比较宽,不像激光那样“指哪打哪”。我建议在融合时,把毫米波雷达的速度信息作为强约束,位置信息作为弱约束。
3.3 摄像头:最像人眼,也最像人眼一样会骗人
摄像头,说白了就是视觉传感器。它提供的信息最丰富——颜色、纹理、语义信息。但也是最难处理的。
优势:
- 能识别车道线、交通标志、行人姿态
- 成本低,一个高清摄像头才几百块
- 分辨率高,细节丰富
劣势:
- 严重依赖光照,逆光、黑夜、隧道出入口都会出问题
- 单目摄像头无法直接测距,需要复杂的算法推算
- 对快速运动物体容易产生运动模糊
注意: 我曾经遇到过摄像头在隧道出口瞬间“白屏”,因为亮度从暗到亮变化太快。这时候如果完全依赖视觉,后果不堪设想。所以,永远不要只靠摄像头做紧急避障。
3.4 超声波雷达:近场守护者
超声波雷达,频率在40-60kHz。它很便宜,但作用范围有限。
典型应用:
- 自动泊车时的近距离障碍物检测
- 盲区监测
- 低速跟车时的防碰撞
局限性:
- 探测距离短,一般不超过5米
- 受温度、风速影响大
- 响应速度慢,不适合高速场景
嗯,这里要注意:超声波雷达的波束角很宽,容易产生“串扰”——两个相邻的超声波雷达互相干扰。我建议在硬件设计时就做好分时触发,别让它们同时发射。
3.5 数据融合:1+1>2 的艺术
好了,四种传感器都讲完了。现在的问题是:怎么把它们的数据捏在一起?
融合的层次:
- 数据级融合: 直接融合原始数据,比如把激光点云和图像像素对齐。计算量大,但信息损失少。
- 特征级融合: 先提取特征(比如障碍物轮廓、速度),再融合。这是工程中最常用的方式。
- 决策级融合: 每个传感器独立做决策,最后投票。简单,但容易丢失细节。
我推荐的做法:
在紧急避障场景下,我习惯用特征级融合 + 卡尔曼滤波。具体来说:
// 伪代码示例:多传感器目标跟踪
void SensorFusion() {
// 1. 时间对齐(不同传感器帧率不同)
AlignTimestamp(liDAR_data, radar_data, camera_data);
// 2. 空间对齐(统一到车体坐标系)
TransformToVehicleFrame(liDAR_data);
TransformToVehicleFrame(radar_data);
TransformToVehicleFrame(camera_data);
// 3. 关联匹配(判断是不是同一个目标)
MatchObjects(liDAR_objects, radar_objects);
// 4. 状态估计(卡尔曼滤波融合)
KalmanFilter fused_state;
fused_state.Update(liDAR_measurement, weight_high);
fused_state.Update(radar_measurement, weight_medium);
fused_state.Update(camera_measurement, weight_low);
// 5. 输出融合后的障碍物列表
return fused_state.GetObjects();
}
关键点: 不同传感器的置信度权重不是固定的。比如在雨雪天,我会把激光雷达的权重从0.8降到0.3,毫米波雷达的权重从0.5升到0.9。说白了,融合算法要能自适应环境。
3.6 避坑指南:我踩过的那些坑
最后,分享几个实战中容易忽略的问题:
- 时间同步: 激光雷达10Hz,摄像头30Hz,毫米波雷达20Hz。如果不做时间对齐,融合出来的目标位置可能差好几米。我曾经因为这个原因,让车辆对着一堵墙“急刹车”——其实墙在1秒前就已经过去了。
- 坐标系转换: 每个传感器都有自己的坐标系。安装位置、角度稍有偏差,融合结果就天差地别。我建议每次装车后都做一次外参标定,别偷懒。
- 延迟补偿: 从传感器采集到算法输出,有几十毫秒的延迟。在高速行驶时,这几十毫秒可能意味着几米的误差。我习惯在融合结果中加入运动补偿,根据当前车速和角速度推算目标的最新位置。
好了,这一章的内容就到这里。传感器融合是个系统工程,没有银弹。你想想看,每种传感器都有自己的“性格”,我们要做的不是选一个最好的,而是让它们互补短板、发挥长处。下一章,我们会聊聊如何用这些融合后的数据做紧急避障的决策规划。