做自动驾驶L4系统的朋友大都很清楚,从demo走到真实运营,最难的不是让车跑起来,而是让车在任何突发状况下都不犯傻。感知冗余设计就是其中一道绕不过去的坎,这篇文章聊聊我们在实际项目里踩过的坑和具体的处理思路。
城区L4运行中,摄像头会被逆光晃瞎,激光雷达遇到大雨点云稀疏,毫米波雷达对静止物体几乎失明。把希望压在单一模态上,只要一次漏检就可能出事。我们当时在一条半封闭园区线路上,就因为清扫车静止停放,纯视觉模型没识别出来,差点追尾。后来复盘,核心问题就是没有冗余交叉验证。
实际落地里,冗余不是堆硬件就完事,得看怎么融合。下面是我们用过的几类方案对比:
| 方案 | 传感器组合 | 失效兜底 | 算力占用 |
|---|---|---|---|
| 异构摄像头冗余 | 广角+长焦+夜视 | 单路丢帧仍可测距 | 中 |
| 雷视融合 | 激光雷达+摄像头 | 视觉失效靠点云 | 高 |
| 全模态交叉 | 激光+毫米波+视觉+超声 | 任意单模态掉线 | 极高 |
园区低速L4用雷视融合基本够用,公开道路就得往上加。但算力不够时,我们习惯先做故障降级而不是全模态常开。
光有冗余结构,不做故障演练就是摆设。我们会在仿真里随机杀掉某个传感器节点,看规划模块是不是还稳。一段最简的注入逻辑:
def inject_fault(sensor_state, name):
if random.random() < 0.05:
sensor_state[name] = 'down'
return sensor_state
# 每帧调用,模拟5%概率掉线
state = inject_fault(state, 'lidar')
if state['lidar'] == 'down':
planner.use_backup('camera_mmwave')
这类测试跑两周,能暴露很多没想到的融合时序bug,比如某次激光掉线后,摄像头延时导致制动慢了0.3秒。
多传感器冗余最容易被忽视的是外参标定漂移。车跑几千公里,支架微变形就让激光和视觉不再对齐。我们固定每五百公里做一遍在线标定校验,用静态标志物算重投影误差,超过两像素就报警。不然冗余反而会产生冲突目标,让自动驾驶L4系统频繁急刹。
冗余越多越安全,但BOM摆在那。我们的做法是用影子模式收集真实冗余触发案例,只把高频失效场景固化进硬件冗余,其余靠软件报警降级。这样既不瞎省钱,也不堆料。
冗余不是为了好看,是为了在传感器说谎时,车还能选真话。
评论
加载中...