第1章:传感器噪声分析
各位同学好,我是老张。今天咱们聊聊传感器噪声这个老大难问题。
做自动驾驶感知这么多年,我最大的体会就是:噪声不是敌人,不懂噪声才是。你想想看,激光雷达、毫米波雷达、摄像头,这三个传感器各有各的脾气。摸透了它们的噪声特性,误报消除就成功了一半。
1.1 激光雷达点云噪声来源
激光雷达看着高大上,其实挺娇气的。我刚开始做感知时,总以为点云数据很干净。直到有一次,车停在路边,点云里突然冒出一堆「鬼影」——明明前面空荡荡的,却检测出障碍物。
后来排查才发现,是路边洒水车溅起的水雾在捣乱。
激光雷达的噪声,主要来自这几个方面:
- 环境反射噪声:雨、雪、雾、灰尘,这些颗粒物会反射激光。说白了,就是激光打到了不该打的地方。
- 多路径反射:激光打到光滑表面(比如玻璃、镜面),反弹好几次才回来。测距就偏了。
- 运动畸变:车辆在运动,激光雷达也在转。一帧点云里,不同点的采集时间不同。车一颠簸,点云就变形。
- 传感器自身噪声:接收器灵敏度波动、温度漂移。嗯,这个属于硬件底子问题。
避坑指南:我曾经在高速上遇到一个案例——点云里检测到「前方障碍物」,急刹车差点追尾。后来发现是路边的金属护栏反射了激光,产生了虚假点云。从那以后,我养成了一个习惯:对高反射率物体周围5米内的点云,必须做二次校验。
处理激光雷达噪声,我个人习惯用这几种方法:
- 统计滤波:计算每个点周围邻居的数量。孤立的点,大概率是噪声。
- 时间戳补偿:给每个点加上时间戳,做运动补偿。车动,点云也跟着动。
- 强度阈值:设置反射强度上下限。太强或太弱的点,直接扔掉。
// 统计滤波示例(伪代码)
for each point in point_cloud:
neighbors = find_neighbors(point, radius=0.3m)
if neighbors.count < 3:
mark_as_noise(point)
else:
keep(point)
1.2 毫米波雷达多径反射
毫米波雷达有个特点:穿透性强,但容易「看花眼」。为什么?因为它发射的电磁波会反射、折射、绕射。遇到隧道、高架桥、大型金属物体,信号就乱套了。
我记得有一次做测试,雷达显示前方50米有个静止目标。结果车开过去,啥也没有。后来分析数据才发现,是旁边高架桥的金属护栏把信号反射到了地面,雷达以为地面有个障碍物。
这就是典型的多径反射——信号走了不止一条路。
| 场景 | 多径反射表现 | 误报特征 |
|---|---|---|
| 隧道内 | 墙壁多次反射 | 目标距离忽远忽近 |
| 高架桥下 | 桥面反射到地面 | 出现「幽灵」静止目标 |
| 大型金属广告牌 | 信号反弹到对面车道 | 对向车道出现虚假目标 |
| 雨天积水路面 | 水面反射 | 目标高度异常偏低 |
我的经验:处理多径反射,关键看两个维度——距离变化率和信噪比。多径反射的目标,距离变化率通常不稳定,信噪比也偏低。我一般会设置一个「置信度评分」,低于60分的直接过滤掉。
具体做法:
- 多帧关联:连续3帧以上出现的目标才保留。偶尔闪现的,大概率是噪声。
- 速度一致性检查:目标的速度变化不能太突兀。多径反射的目标,速度会跳变。
- 高度滤波:毫米波雷达能测高度。如果目标高度低于路面或高于正常车辆,直接排除。
1.3 摄像头光照干扰
摄像头嘛,说白了就是个「电子眼」。人眼怕强光,它也怕。逆光、阴影、夜间灯光,都会让摄像头「看走眼」。
我印象最深的一次:傍晚时分,太阳刚好在车后方。摄像头把路面上的一滩水渍识别成了「车道线」,结果车辆开始偏离车道。还好我及时接管了。
摄像头光照干扰主要有这几种:
- 逆光/强光:传感器过曝,细节全丢。障碍物和背景融为一体。
- 阴影:树影、建筑阴影,会被误识别为障碍物边缘。
- 夜间灯光:对面车灯、路灯,会产生光晕和眩光。
- 反光:雨后路面反光,摄像头以为前面有水面或障碍物。
注意:摄像头噪声和激光雷达、毫米波雷达不同——它是语义级别的噪声。不是点云位置错了,而是识别结果错了。所以处理起来更麻烦,需要结合场景理解。
我常用的处理手段:
- 自动曝光调整:根据场景亮度动态调整曝光时间。逆光时降低曝光,夜间提高增益。
- 多帧融合:连续几帧图像做平均,减少单帧的噪声影响。
- 语义先验:比如知道这个区域是天空,就不会把云朵识别成障碍物。
- 传感器融合:摄像头说有障碍物?让激光雷达和毫米波雷达确认一下。三个传感器都同意,才相信。
// 光照干扰检测(伪代码)
def check_light_interference(image):
brightness = calculate_average_brightness(image)
if brightness > 200: # 过曝
apply_auto_exposure_correction()
return True
elif brightness < 30: # 过暗
apply_gain_boost()
return True
else:
return False
1.4 知识体系总览
说了这么多,咱们用一张图来总结一下。这张图是我自己画的,把三种传感器的噪声来源和应对策略串在了一起。
这张图把三种传感器的噪声来源和应对策略串在了一起。你仔细看看,会发现一个规律:单一传感器总有短板,融合才是王道。
好了,这一章就到这里。噪声分析是基础,但基础不牢,后面做误报消除就会很吃力。下一章咱们聊聊具体的滤波算法实现。
课后思考:如果你遇到一个场景——激光雷达和摄像头都检测到障碍物,但毫米波雷达没检测到。你会相信谁?为什么?
可可精品资料库