系统架构基础:自动驾驶系统分层架构(感知-决策-控制),故障传播路径分析

各位同学,今天我们聊点硬核的。自动驾驶系统到底长什么样?说白了,它就是一个三层架构:感知、决策、控制。我做了这么多年系统,见过太多人把这三层混为一谈,结果出了问题根本不知道锅该甩给谁。

嗯,咱们先把这个架构掰开揉碎了讲清楚,然后再看看故障是怎么在层与层之间“传染”的。

一、感知层:车的眼睛和耳朵

感知层负责“看”和“听”。摄像头、激光雷达、毫米波雷达、超声波传感器,这些都是感知层的硬件。它们采集原始数据,然后交给算法去识别:前面是行人还是垃圾桶?车道线在哪?红绿灯什么颜色?

我个人习惯把感知层再拆成两块:

  • 传感器数据采集:原始信号进来,做时间同步、空间对齐。我记得有一次项目里,摄像头和激光雷达的时间戳差了50毫秒,结果融合出来的目标位置直接偏了半米——这要是高速上,后果不敢想。
  • 目标检测与跟踪:识别出障碍物,并持续跟踪它的运动轨迹。这里有个坑:感知算法偶尔会“丢帧”,比如行人被遮挡了一瞬间,再出现时ID变了,决策层就会以为来了个新人,急刹车就来了。

关键点:感知层的输出不是“真相”,而是“估计”。每个估计都带着不确定性。你想想看,如果感知层把一辆静止的卡车误识别为“可通行路面”,那后面决策层再怎么聪明也没用。

二、决策层:车的大脑

决策层拿到感知结果后,开始做判断。它要回答三个问题:我在哪?周围会发生什么?我该怎么做?

决策层内部又分几个子模块:

  1. 定位与地图:高精地图+GPS+IMU,告诉车自己在哪条车道、距离路口多远。我曾经遇到过GPS信号丢失的情况,车在隧道里直接“迷路”了,决策层以为自己在另一条路上,差点拐错匝道。
  2. 行为预测:预测周围车辆和行人接下来几秒会干什么。比如旁边那辆车是不是要变道?这个模块如果预测错了,决策就会跟着错。
  3. 路径规划:从A到B怎么走?宏观路线、微观轨迹,都要算清楚。
  4. 行为决策:要不要超车?要不要让行?这个模块直接输出“加速”、“刹车”、“转向”等指令。

我的经验:决策层最容易出问题的不是算法本身,而是“信息过时”。感知层传过来的数据如果延迟了200毫秒,决策层还在按旧数据做规划,那车就相当于在“开盲盒”。

三、控制层:车的手和脚

控制层负责执行。决策层说“加速到60km/h”,控制层就要算出来:油门踩多少?刹车要不要带一点?方向盘转几度?

控制层通常包含:

  • 纵向控制:油门和刹车,控制车速。
  • 横向控制:方向盘,控制转向。
  • 执行器接口:把控制指令转成CAN总线信号,发给车辆的线控底盘。

这里有个容易忽略的点:控制层有物理极限。比如轮胎抓地力不够、刹车过热衰减,这些都会导致控制指令“打折扣”。我记得有一次测试,车在湿滑路面上,控制层要求急刹车,结果ABS介入后刹车距离比预期长了30%。

警告:控制层的故障往往不是“软件崩了”,而是“执行不到位”。你指令发下去了,但车没按你的意思动,这才是最头疼的。

四、故障传播路径分析

好了,架构讲完了。现在咱们聊聊故障是怎么在层与层之间传播的。我画了一张图在脑子里,你们跟着我想象一下:

典型故障传播路径:

故障源头 传播路径 最终表现
传感器脏污(感知层) 感知输出错误目标 → 决策层误判 → 控制层执行错误指令 车辆误刹车或误转向
定位漂移(决策层) 定位误差 → 路径规划偏离 → 控制层按错误轨迹行驶 车辆偏离车道
执行器卡滞(控制层) 控制指令无法执行 → 决策层收不到反馈 → 持续发送无效指令 车辆失控或无法响应
通信延迟(跨层) 感知数据延迟 → 决策层使用过时信息 → 控制层执行过时指令 车辆反应滞后,容易发生碰撞

为什么会这样?因为每一层都依赖上一层的输出。感知层错了,决策层就跟着错,控制层再努力也白搭。反过来,控制层出了问题,决策层如果检测不到,就会一直发错误指令,形成恶性循环。

我曾经在一个项目中遇到过这样的案例:激光雷达的镜片上沾了一点泥巴,感知层把一辆正常行驶的轿车识别成了“静止障碍物”。决策层一看,前面有障碍物,立刻规划了紧急避让路径。控制层收到指令后猛打方向盘,结果车直接冲上了路肩。你看,一个小小的泥巴点,经过三层传播,最后变成了事故。

核心结论:故障传播的本质是“信息失真”。每一层都在对信息做加工,加工过程中如果引入了错误,这个错误就会被放大。所以,故障诊断不能只看最后一层,要顺着传播路径往回查。

五、避坑指南

最后,分享几个我踩过的坑,你们以后遇到了能少走弯路:

  • 我曾经以为感知层最可靠,后来发现传感器标定稍微偏一点,整个系统就崩了。所以,定期做传感器标定校验,别偷懒。
  • 我曾经忽略过控制层的反馈,只盯着决策层看。结果车明明没转向,决策层还以为自己转对了。现在我的习惯是:每一条控制指令都要有执行反馈,形成闭环。
  • 通信延迟是隐形杀手。你想想看,如果感知层和决策层跑在不同的芯片上,中间走以太网,一旦网络拥堵,延迟就会飙升。我建议你们在系统设计时就给通信链路加上超时检测和降级策略。

嗯,今天就先聊到这儿。下一节我们会深入讲故障检测的具体方法,包括怎么用残差分析来揪出那些隐藏的故障。到时候我会带一个真实的故障案例来拆解,你们准备好笔记本。