一个 AEB 功能从模型到量产:V 模型六层与 TTC 指标
一条具体的需求贯穿全文:“AEB CIPV,本车 50kph,前方静止车:系统须避免碰撞。” 这条需求从模型一路走到量产,要经过六层测试环境——每层环里的东西不同、回答的问题不同、能发现的故障也不同。这篇文章先把这条需求走完 V 模型六层,再深入 AEB 最经典的触发指标 TTC,以及它的五个缺陷。
一、链路总览:同一条需求,六层各看什么
| 层 | 环里是什么 | 回答的问题 | AEB 在这层看什么 |
|---|---|---|---|
| MIL | 算法框图(Simulink 模型) | 控制策略对不对 | 状态机:预警→部分制动→全力制动的触发逻辑、阈值、时序 |
| SIL | x86 编译的代码 | 代码实现和模型一致吗 | 同一场景库批量回灌,几万例并行,CI 里跑 |
| PIL | 目标编译器的机器码 | 落到芯片上还对吗、来得及吗 | 目标侧执行时间、定点精度、栈水位 |
| HIL | 真域控(ADCU),其余全仿真 | 真实硬件集成后系统对吗 | 真 CAN/以太网时序、诊断(UDS)、故障注入(丢帧/bus-off/电压抖动)、电源模式 |
| VIL/场地 | 真车+仿真环境,或真车+软目标假车 | 整车物理世界下对吗 | 转鼓台架 VeHIL;试验场 GST 软目标+驾驶机器人,NCAP 规程场景(CCRs/CCRm……) |
| 路试/影子模式 | 量产形态车队 | 真实世界覆盖够吗 | 公共道路采集、影子模式比对,回传数据回灌 MIL/SIL 形成闭环 |
左边三层(MIL/SIL/PIL)验证”软件本身“,右边三层验证”集成与真实世界“。V 模型的精髓是左右对应:单元设计 ↔ MIL/SIL/PIL,系统设计 ↔ HIL,需求 ↔ 整车验收——每层测试都在验收它对面那一层的设计产物。
二、三个必须理解的要点
1. 同一场景,层层复用,但每层问的问题不同。 “50kph 撞静止车”从 MIL 一路跑到试验场,形状几乎不变,但 MIL 查逻辑、SIL 查代码、HIL 查集成、场地查物理世界。这就是用例格式必须抽象、与执行环境解耦的原因——”场景描述与总线实现分离”的设计就是这个思想的落地。它也是”PIL 能不能跳过”这类问题的答案:每层缩小一层嫌疑范围,跳层就是把两个问题的答案糊在一起。
2. 经济金字塔决定活怎么分。 MIL/SIL 单次成本趋近于零,跑十万例不心疼;HIL 台架几百万一台,全公司排队;试验场一天几万块;公共道路最贵且不可复现。行业的全部努力是覆盖左移——能在 SIL 发现的绝不留到 HIL,HIL 只跑”必须真硬件”的用例(故障注入、总线时序、诊断),试验场只做确认不做探索。
3. NCAP 是终验收标准,但从第一天就在场。 CCRs 50kph 避免碰撞这类规程,在需求阶段就写进系统需求,在 SIL/HIL 里提前演练(预标定),最后在试验场正式过——不是到场地才第一次见它。
三、一句话收束
MIL/SIL 证明”想得对”,PIL 证明”落得对”,HIL 证明”装起来对”,场地和路试证明”在真实世界里对”。 AEB 这种高 ASIL 功能,六层一层都省不了——省掉的那层,会在审核或事故里找回来。
六层讲完了”在哪测、测什么”。剩下一个贯穿所有层的问题:拿什么判定”该不该刹、撞没撞”?AEB 最经典的判定量,就是 TTC。
四、TTC:假设一切不变,还有多久相撞
TTC(Time-To-Collision,碰撞时间)= 假设两车保持当前运动状态不变,还有多久相撞。
跟车场景(一维纵向):
TTC = 相对距离 / 相对速度 = d / (v_ego − v_front) (仅当正在接近时)
直觉:距离 40m、你比前车快 10m/s → TTC = 4s。精确版考虑加速度:解 d + Δv·t + ½Δa·t² = 0 的最小正根;工程上最常用恒速版。
它有两个亲戚:iTTC(TTC 的倒数 = Δv/d,避免除零)和 THW(Time Headway = d/v_ego,车头时距,ACC 用它,别和 TTC 混)。
五、作为触发条件的经典用法
阈值分级(各家标定不同,仅示意):
TTC < 2.5s 报警(FCW) → TTC < 1.2s 部分制动 → TTC < 0.6s 全力制动
前半篇的六层,每一层都在回放这个判断:MIL 查阈值和时序本身对不对,SIL 拿几万例扫阈值边界,HIL 查真实总线时序下触发还来不来得及——同一个指标,层层被问不同的问题。
六、五个缺陷
1. 除法奇异性:在最需要它稳定的地方最不稳定(最根本)。 分母 Δv→0 时 TTC→∞;Δv 是感知估计量、带噪声,分母上的噪声被除法剧烈放大,TTC 在 ±∞ 之间跳变。偏偏”速度接近”正是风险酝酿的临界状态:前车刚开始减速时,TTC 完全不可信;等 Δv 大到稳定可读,时间已经很紧。补救靠滤波+迟滞+多帧确认,但滤波就是延迟,而 AEB 分秒必争——这个矛盾与生俱来。
2. 没有预测,只有外推。 假设”当前状态永远持续”:前车将要急刹、正在变道离开、准备转弯,TTC 一概不知。它测的是”现在”,触发的是”未来”。
3. 一维量,管不了二维世界。 cut-in:横向未重叠时碰撞尚无定义,等切入完成,TTC 已经很小——天然迟钝;行人横穿(CPNCO):运动方向不共线,”相对速度”的定义本身成了问题,须换二维接近速度。
4. 不含制动物理。 TTC=1s,Δv=5kph 轻松刹停;Δv=50kph 物理上已撞定。TTC 只答”还有多久撞”,不答”还刹得住吗”。严肃的触发逻辑要与所需减速度(a_req ≈ Δv²/(2d))组合。
5. 阈值的两难。 放大 → 不确定场景也触发 → 误刹(高速幽灵刹车会被追尾,本身是安全事故);放小 → 留给制动的物理时间不够。单一参数无法表达”有多确定”,必须与感知侧的目标置信度/存在概率联合。
七、工程补救:它为什么还在用
iTTC 或 Δv 门限封顶、多帧 debounce、TTC×a_req 组合阈值、按速度/场景分段标定;更现代的方案里,TTC 只是风险模型的一个输入,与预测轨迹重叠概率、目标置信度融合决策。五个缺陷没有杀死 TTC,只是把它从”一个公式打天下”降级成”风险融合里的一路输入”。
八、SIL 里的 TTC 和路上的 TTC
同一个 TTC,在 SIL 仿真里是干净的——距离、速度都是仿真真值,除法奇异性与噪声全不存在;到了真实世界,它是带噪声的估计量,五个缺陷全部现身。同一条 AEB 用例在两层环境里,”判定量的可信度”完全不同——这是 SIL 与 HIL/实车差异最生动的对照。写判定逻辑时值得问一句:”这个量在真实传感器侧长什么样?”
回看全文:V 模型六层回答”在哪测、测什么”,TTC 回答”拿什么判”。 一个 AEB 功能从模型到量产,就是带着同一个指标,在六种可信度各不相同的环境里各过一遍——前半程证明功能对,后半程承认指标会骗你,然后把它用对。
附:名词解释(按出场顺序)
| 名词 | 通俗解释 |
|---|---|
| AEB | 自动紧急制动:碰撞即将发生且驾驶员未反应时,系统自动刹车 |
| CIPV | 本车道正前方的最近目标车(Closest In-Path Vehicle) |
| V 模型 | 汽车开发流程模型:左边逐级分解设计,右边逐级集成测试,左右一一对应 |
| TTC | 碰撞时间(Time-To-Collision):保持当前运动状态不变,还有多久相撞 |
| MIL / SIL / PIL / HIL | 模型在环 → 软件在环 → 处理器在环 → 硬件在环,保真度递增、速度递减 |
| ADCU(域控) | ADAS 域控制器:跑感知和决策算法的车载计算单元 |
| UDS | 统一诊断服务(ISO 14229):ECU 的诊断通信协议 |
| bus-off | CAN 控制器错误计数超限后主动脱离总线的保护状态 |
| VIL / VeHIL | 车辆在环:真车跑在转鼓台架上,前方场景由仿真虚拟出来 |
| GST 软目标 | 试验场用的可碰撞软质假车(Guided Soft Target),撞了不伤真车 |
| NCAP | 新车评价规程;CCRs/CCRm 是其中”追尾静止/慢行前车”的 AEB 测试场景 |
| 影子模式 | 量产车上新算法只算不控、与在环算法比对差异的数据采集方式 |
| ASIL | 汽车安全完整性等级(QM/A/B/C/D,D 最严),ISO 26262 的核心概念 |
| iTTC | TTC 的倒数(Δv/d),避免除零奇异 |
| THW | 车头时距 = d/v_ego,ACC(自适应巡航)跟车用它,与 TTC 不同 |
| FCW | 前向碰撞预警:只报警不制动,是 AEB 的前一级 |
| cut-in | 旁车切入本车道的场景 |
| CPNCO | 行人(儿童)横穿近端遮挡类 NCAP 场景(Car-to-Pedestrian Nearside Child with Obstruction) |
| a_req(所需减速度) | 要避免碰撞所需的最小减速度,≈ Δv²/(2d) |
| 误刹(幽灵刹车) | 无真实碰撞风险时系统误触发制动 |
| debounce(多帧确认) | 连续多帧满足条件才触发,滤掉单帧噪声抖动 |
下一步:
查看全部文章