1. ADAS 系统概述
大家好,我是老张。今天咱们正式开讲ADAS系统文档生成这门课。第一节课,我想先聊聊ADAS到底是什么。说白了,ADAS就是一套帮你开车的电子系统。它不替你开,但能在关键时刻拉你一把。
我入行那会儿,ADAS还是个新鲜词。记得2010年左右,我参与一个LKA项目,客户问能不能在高速上让车自己拐弯。我们团队折腾了三个月,最后只能做到压线时方向盘抖一下。现在想想,那时候真是摸着石头过河。
1.1 ADAS 定义与发展历程
ADAS,全称Advanced Driver Assistance Systems,中文叫高级驾驶辅助系统。它的核心逻辑很简单:用传感器感知环境,用算法做决策,用执行器去控制。你想想看,这跟人开车其实是一个道理——眼睛看路,大脑判断,手脚操作。
发展历程我分三个阶段讲:
- 萌芽期(1990s-2005):最早的量产ADAS功能是ACC。我记得奔驰在1999年推出了Distronic系统,那会儿还是个稀罕物。功能也简单,就是定速巡航加个跟车距离保持。
- 成长期(2005-2015):AEB、LKA、BSD这些功能开始普及。我2012年做AEB标定时,测试车撞坏了好几个假人模型。嗯,这里要注意,AEB的触发时机特别难调——调早了容易误触发,调晚了刹不住。
- 爆发期(2015-至今):从单功能到系统集成。现在的新车,没有L2级辅助驾驶都不好意思上市。特斯拉的Autopilot、小鹏的NGP,都是这个阶段的产物。
个人经验:我建议刚入行的朋友,一定要把发展历程吃透。为什么?因为很多老代码里还留着十几年前的逻辑。你不懂历史,就改不动代码。
1.2 ADAS 分级标准(SAE J3016)
说到分级,SAE J3016是绕不开的标准。这个标准把驾驶自动化分成了L0到L5六个等级。我经常跟新人说,别被这些数字唬住,其实核心就一句话:谁在开车?
| 等级 | 名称 | 谁在开车 | 典型功能 |
|---|---|---|---|
| L0 | 无自动化 | 驾驶员全程 | FCW(前碰撞预警) |
| L1 | 驾驶辅助 | 驾驶员为主,系统辅助 | ACC、LKA |
| L2 | 部分自动化 | 系统同时控制转向+加减速 | ACC+LKA组合 |
| L3 | 有条件自动化 | 系统驾驶,但需要驾驶员接管 | 交通拥堵领航 |
| L4 | 高度自动化 | 系统驾驶,无需接管 | Robotaxi(限定区域) |
| L5 | 完全自动化 | 系统驾驶,任何场景 | 全场景无人驾驶 |
这里有个坑,我必须要说。很多公司宣传的L2.5、L2.9,其实都是营销话术。SAE标准里根本没有这些等级。我曾经在一个项目评审会上,产品经理非要写L2.9,我直接怼了回去——你写上去,法规审核第一个不通过。
避坑指南:写文档时,分级一定要严格遵循SAE J3016。别用那些花里胡哨的等级。我见过有公司因为文档里写了L2.9,被客户质疑技术能力,最后丢了一个大单。
1.3 ADAS 核心功能模块
接下来聊聊具体功能。我挑三个最核心的讲:ACC、LKA、AEB。这三个功能,基本覆盖了L2级辅助驾驶的骨架。
1.3.1 ACC(自适应巡航控制)
ACC说白了就是智能定速巡航。你设个120km/h,前面没车就按这个速度跑,前面有车就自动跟车。它的核心逻辑是:
// ACC 核心控制逻辑(伪代码)
if (前方无目标车) {
目标速度 = 设定速度
} else {
目标速度 = 前车速度
目标距离 = 安全跟车距离
}
// 然后PID控制油门和刹车
我做过一个ACC项目,标定的时候发现一个问题:前车急刹车时,ACC的响应总是慢半拍。后来查原因,是雷达的刷新率不够。你想想看,雷达每秒只发10帧数据,而前车刹车只需要0.5秒就能停下来。这中间差了5帧,能不慢吗?
经验之谈:写ACC的文档时,一定要把传感器延迟写清楚。我习惯在需求文档里加一列"延迟预算",把雷达、摄像头、执行器的延迟都列出来。这样开发时就不会漏掉。
1.3.2 LKA(车道保持辅助)
LKA的功能是让车保持在车道中间。它靠摄像头识别车道线,然后通过EPS(电动助力转向)微调方向盘。
这里有个关键参数:横向控制精度。我见过一个项目,LKA在直道上跑得挺好,一到弯道就画龙。为什么?因为控制器的增益没调好。弯道时,同样的转向角度,产生的横向位移更大。所以LKA的增益应该是动态的,跟曲率相关。
// LKA 横向控制(简化版)
横向偏差 = 车道中心线 - 车辆位置
转向角度 = Kp * 横向偏差 + Kd * 横向偏差变化率
// 注意:Kp和Kd需要根据车速和道路曲率动态调整
1.3.3 AEB(自动紧急制动)
AEB是保命功能。它检测到前方有碰撞风险时,会自动刹车。AEB的触发逻辑一般分两步:
- 预警阶段:先发出警报,提醒驾驶员刹车。如果驾驶员没反应...
- 制动阶段:系统自动全力刹车。
我曾经在测试场做过AEB的误触发测试。有一次,测试车经过一个铁皮路牌,雷达把路牌反射信号当成了障碍物,直接一脚急刹。后排的同事差点飞出去。从那以后,我要求所有AEB项目必须做静态目标过滤——路牌、井盖、减速带这些,都不能触发AEB。
核心要点:写AEB文档时,一定要明确触发条件和退出条件。比如:车速低于5km/h时退出制动,防止停车后还一直刹着。这些细节,文档里漏掉一个,测试时就多一个bug。
好了,第一节课就到这里。ACC、LKA、AEB这三个功能,是ADAS的基石。后面的课程里,我们会反复用到这些概念。下一节,我们聊聊ADAS系统的架构设计——怎么把这些功能组织成一个完整的系统。
记住我一句话:文档写得好,开发少烦恼。咱们下节课见。