1. 自动驾驶系统概述:分级标准、系统架构与开发流程
大家好,我是你们这堂课的主讲工程师。咱们今天聊点实在的——自动驾驶到底怎么分级?系统长什么样?开发流程怎么走?
说实话,我入行那会儿,SAE J3016标准还没现在这么普及。大家聊自动驾驶,全靠拍脑袋。后来标准一出来,整个行业才算有了共同语言。嗯,咱们就从这里开始。
1.1 自动驾驶分级标准(SAE J3016)
SAE J3016,说白了就是把自动驾驶分成了L0到L5六个等级。你想想看,这就像驾照分类——C1能开手动挡,C2只能开自动挡。自动驾驶也一样,等级越高,车自己干的事越多。
核心要点:分级的关键不是看车上有多少传感器,而是看「谁」在负责「动态驾驶任务」——是人,还是系统?
| 等级 | 名称 | 驾驶主体 | 典型场景 |
|---|---|---|---|
| L0 | 无自动化 | 人类驾驶员全程负责 | 传统车辆,只有预警(如FCW) |
| L1 | 驾驶辅助 | 系统横向或纵向控制,人类负责其余 | 定速巡航、车道保持辅助 |
| L2 | 部分自动化 | 系统同时控制横向+纵向,人类负责监督 | 特斯拉Autopilot、通用Super Cruise |
| L3 | 有条件自动化 | 系统执行全部动态驾驶任务,人类需接管 | 奥迪A8 Traffic Jam Pilot(未量产) |
| L4 | 高度自动化 | 系统执行全部任务,无需人类干预(限定区域) | Robotaxi(如Waymo、百度Apollo) |
| L5 | 完全自动化 | 系统在任何道路条件下执行全部任务 | 目前尚未实现 |
我的经验:我在项目里见过不少团队,明明做的是L2+,非要宣传成L3。结果出了事故,责任全在驾驶员身上。我个人习惯是——分级往低了说,安全冗余往高了做。别给自己挖坑。
这里有个容易混淆的点:L3和L2最大的区别是什么?L2出事了,驾驶员负责;L3出事了,系统负责。所以L3对系统可靠性的要求,比L2高了一个数量级。我曾经参与过一个L3项目,光「接管请求」的响应时间验证,就跑了三个月。
1.2 系统架构概览:感知-决策-执行
自动驾驶系统,说白了就是三个环节:感知(看路)、决策(想怎么走)、执行(动手动脚)。
你想想看,这跟人开车一模一样。你眼睛看到前面有车(感知),大脑判断要刹车还是变道(决策),然后脚踩刹车、手打方向盘(执行)。
1.2.1 感知层
感知层的任务,就是把物理世界变成数字信号。主要传感器包括:
- 摄像头:识别车道线、交通标志、行人、车辆。我建议至少用6个摄像头做360°环视。
- 激光雷达(LiDAR):生成3D点云,测距精度高。但下雨天性能会下降,这个坑我踩过。
- 毫米波雷达:测速、测距,不受天气影响。但分辨率低,分不清是卡车还是护栏。
- 超声波雷达:近距离探测,主要用于泊车。
避坑指南:我曾经在一个项目里只用了摄像头+毫米波雷达,结果在隧道出口遇到强逆光,摄像头直接「失明」了。从那以后,我坚持「多传感器融合」——至少两种传感器同时覆盖同一个场景。
1.2.2 决策层
决策层是系统的大脑。它接收感知数据,然后做出驾驶决策。主要模块包括:
- 预测模块:预测其他交通参与者的轨迹。比如,前面那辆车会不会突然变道?
- 规划模块:生成自车的行驶轨迹。包括路径规划(走哪条路)和运动规划(怎么走)。
- 控制模块:把规划结果转换成油门、刹车、转向的具体指令。
这里有个关键点:决策层必须处理「不确定性」。你想想看,感知数据有噪声,预测结果有概率,规划方案有约束。我习惯用「有限状态机+行为树」的组合来管理驾驶行为,既保证确定性,又保留灵活性。
1.2.3 执行层
执行层就是车辆的「手脚」。包括:
- 线控底盘:通过CAN总线或以太网控制转向、制动、驱动。
- 执行器:转向电机、制动泵、油门控制器。
- 冗余设计:L3以上必须双备份。比如两套制动系统,一套失效,另一套立刻顶上。
我的经验:执行层的延迟是最大的坑。从决策发出指令到车轮真正转动,中间有几十毫秒的延迟。我建议在系统集成时,专门做一个「端到端延迟测试」——从传感器采集到执行器响应,全程打时间戳。
1.3 V模型开发流程
V模型,说白了就是「左边设计,右边验证,中间集成」。为什么叫V?因为左边从上到下是分解,右边从下到上是集成,两边一一对应。
我刚开始做自动驾驶时,觉得V模型太死板。后来吃过亏才明白——没有V模型,项目根本没法管理。你想想看,一个自动驾驶系统有几百万行代码,几十个ECU,不按流程来,出了bug你都不知道是哪个模块的问题。
1.3.1 V模型的左侧:设计分解
- 系统需求分析:定义车辆要做什么。比如「在高速公路上,以0-120km/h的速度自动跟车」。
- 系统架构设计:划分模块,定义接口。比如感知模块输出什么格式的数据给决策模块。
- 子系统设计:每个模块内部怎么实现。比如感知模块用YOLOv8还是Transformer。
- 组件实现:写代码、做硬件。
1.3.2 V模型的右侧:验证集成
- 单元测试:测试每个函数、每个类。比如「车道线检测函数在雨天图片上能不能跑通」。
- 集成测试:把几个模块连起来测。比如感知+决策能不能正常通信。
- 系统测试:整车级测试。比如在封闭场地跑1000公里,看有没有异常。
- 验收测试:客户或法规要求的测试。比如满足ISO 26262功能安全标准。
核心原则:V模型的精髓是「早验证、频验证」。左边每完成一个设计,右边就要有对应的测试用例。不要等到整车造出来了再测,那时候改一个bug的成本是早期的100倍。
1.3.3 我在项目中怎么用V模型
我记得有一个项目,团队急着赶进度,跳过了系统架构设计,直接开始写代码。结果到集成阶段,发现感知模块输出的坐标系和决策模块用的坐标系不一致——一个用车辆坐标系,一个用世界坐标系。改起来,整整花了两周。
从那以后,我坚持:先画图,再写代码。哪怕只是画个框图,把接口定义清楚,也能避免80%的集成问题。
实用建议:V模型不是死板的。你可以用敏捷开发的方式跑V模型——每个迭代跑一个完整的V。比如两周一个迭代,左边设计一周,右边验证一周。这样既保证了质量,又保持了灵活性。
小结
今天咱们聊了三个核心概念:
- SAE J3016分级:L0到L5,关键看谁负责驾驶任务。我建议做项目时往低了说,往高了做。
- 感知-决策-执行架构:三个环节缺一不可。多传感器融合是王道,别省成本。
- V模型开发流程:左边设计,右边验证。早验证、频验证,别等到集成再后悔。
下一章,咱们会深入聊感知模块的具体实现——摄像头、激光雷达、毫米波雷达怎么融合,以及我在实际项目中踩过的那些坑。到时候见。
公众号:蓝海资料掘金营,微信deep3321