一个 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(多帧确认) 连续多帧满足条件才触发,滤掉单帧噪声抖动

下一步:

查看全部文章