第二章:系统架构——感知层、决策层、执行层的交互逻辑与信号流
好,咱们进入正题。这一章聊的是系统架构,说白了就是车道保持系统里,各个模块之间怎么“说话”、怎么配合。我见过不少刚入行的工程师,上来就调参数,结果发现信号流都没理清楚——嗯,那肯定是要翻车的。
2.1 感知层:摄像头在“看”什么?
感知层的主角是摄像头。别小看这个“眼睛”,它输出的可不只是一张图。
我个人习惯把摄像头输出的信号分成三类:
- 原始图像数据:一般是YUV或RAW格式,给后续算法用的。
- 车道线特征点:摄像头内部已经做了初步处理,输出的是车道线边缘的点坐标。
- 车道线模型参数:比如三次曲线方程的系数(a0, a1, a2, a3),直接描述车道线的形状。
这里有个坑。我在项目中遇到过,摄像头输出的车道线模型参数,在不同光照条件下抖动特别大。尤其是进出隧道那一下,简直像喝醉了酒。后来怎么解决的?我们在感知层加了一个置信度输出——如果摄像头自己都觉得“我看不清”,那就别硬撑,直接告诉决策层:“我不确定。”
关键信号流(感知层 → 决策层):
- 车道线类型(实线/虚线/双黄线)
- 车道线曲率(左弯/右弯/直道)
- 自车相对车道线的横向偏移量
- 航向角偏差(车头指向与车道线的夹角)
- 置信度(0~1,低于0.5建议不启用LKA)
2.2 决策层:控制器在“想”什么?
决策层就是那个“大脑”。它拿到感知层的数据,要算出方向盘该打多少、什么时候打。
你想想看,控制器其实就干三件事:
- 判断当前状态:车在车道里吗?偏离了多少?趋势是往左还是往右?
- 计算目标路径:我要让车回到车道中心,走一条什么样的曲线?
- 输出控制指令:给执行层一个目标方向盘转角,或者一个目标横摆角速度。
我记得有一次标定,发现车在弯道里总是“切内线”,就是往弯心偏。查了半天,原来是决策层计算目标路径时,用的预瞄时间太长了。说白了,它“看”得太远,忽略了眼前的弯道曲率变化。后来把预瞄时间从1.2秒调到0.8秒,问题就解决了。
我的经验:决策层里最容易被忽略的信号是“驾驶员意图”。比如驾驶员打了转向灯,那车道保持就该暂时退出。这个信号一定要从车身CAN总线上拿,而且优先级要最高。
2.3 执行层:EPS和EMS怎么“动”?
执行层就是手脚。车道保持主要靠EPS(电动助力转向),但有时候也会用到EMS(发动机管理系统)来做微调。
EPS接收的信号很简单:一个目标方向盘转角,或者一个目标扭矩。但这里有个细节——EPS有自己的“脾气”。
我曾经遇到过,EPS响应有延迟,大概30毫秒。别小看这30毫秒,在高速上,车已经跑出去快一米了。所以决策层必须做前馈补偿,把EPS的延迟算进去。
| 执行器 | 输入信号 | 输出反馈 | 典型延迟 |
|---|---|---|---|
| EPS | 目标方向盘转角 / 目标扭矩 | 实际方向盘转角、转向速度 | 20~50ms |
| EMS | 目标扭矩请求(用于降速辅助) | 实际发动机扭矩、转速 | 100~200ms |
注意:EMS的响应比EPS慢得多。所以一般只在紧急情况下才用EMS辅助,比如车道偏离太严重,光靠转向拉不回来,就稍微减点速。平时别乱用,否则乘客会感觉一窜一窜的。
2.4 信号流的总线拓扑
这三个层之间怎么连的?说白了就是CAN总线。但不同信号的优先级和周期不一样。
我一般这样分配:
- 高速信号(周期10ms):方向盘转角、横摆角速度、车速。这些是控制闭环的核心,必须快。
- 中速信号(周期20~50ms):车道线参数、目标路径。决策层算出来的东西,不用那么快。
- 低速信号(周期100ms以上):系统状态、故障码、标定参数。这些只是给人看的。
嗯,这里要提醒一句。CAN总线是有带宽限制的。我见过一个项目,把所有信号都设成10ms周期,结果总线负载率飙到80%以上,时不时丢帧。后来把非关键信号的周期拉长,才稳定下来。
2.5 一个典型的交互时序
咱们走一遍完整的流程,你就明白了:
- t=0ms:摄像头采集一帧图像,开始处理。
- t=30ms:摄像头输出车道线参数到CAN总线。
- t=35ms:决策层收到数据,结合车速、横摆角速度,计算目标方向盘转角。
- t=45ms:决策层把目标转角发到CAN总线上。
- t=50ms:EPS收到指令,开始执行转向动作。
- t=80ms:EPS反馈实际转角,决策层闭环修正。
你看,从摄像头“看到”到方向盘“动起来”,大概需要80毫秒。这个延迟是固定的,标定时必须考虑进去。
避坑指南:我曾经在标定时忽略了摄像头处理延迟,结果发现车在弯道里总是“慢半拍”。后来在决策层加了一个延迟补偿模块,把摄像头的处理时间(约30ms)和EPS的响应时间(约30ms)都算进去,才把控制精度提上来。
2.6 小结
这一章咱们把三个层的交互逻辑捋了一遍。说白了,感知层负责“看”,决策层负责“想”,执行层负责“动”。信号流就是它们之间的“语言”,语言不通,系统就瘫痪。
下一章咱们聊控制策略的核心——PID和模型预测控制。到时候我会讲讲,为什么有时候PID调得再好,弯道里还是不如MPC稳。嗯,那是个有意思的话题。