资讯动态

AEB算法优化:安全距离模型与TTC切换策略详解

发布时间:2026/10/19 7:33:57 来源:尧图企业网站定制
AEB自动紧急制动这几年一直是主动安全领域的高频词。法规把前碰撞预警和自动制动列为强配项消费者也把“遇到前车能刹停”当成一辆车是否智能的重要标准。但真正做过AEB算法的人都知道功能落地最纠结的一环就是怎么在“该在多少米开始介入”和“该在什么时间点开始介入”之间做选择。前者对应安全距离模型后者对应TTCTime to Collision也就是碰撞时间。我在一次AEB联合仿真预研项目中专门针对安全距离模型与TTC的切换策略做了改进也就是标题里提到的“安全距离与TTC切换的优化”这里把整套设计思路、仿真过程、参数标定和踩坑记录分享出来。适合正在做主动安全算法的工程师、搞协同仿真的学生以及对AEB功能标定感兴趣的入门选手。1. 老方案为什么不够用安全距离模型与TTC的“八字不合”1.1 安全距离模型在低速工况的先天优势与高速误触发安全距离模型核心思想是算出一个“我必须在当前位置开始制动才能安全停下来”的边界距离。常见公式框架长这样d_safe v_ego * τ v_ego² / (2 * a_max) - v_f² / (2 * a_f) d0这里 v_ego 是自车速度τ 是驾驶员或系统反应时间a_max 是自车最大减速度v_f 是前车速度a_f 是前车可能的减速度d0 是停车后保留的安全余量。这个公式非常好理解第一项是反应时间内车继续走的距离第二项是我自己制动滑行的距离第三项是前车制动滑行的距离如果前车也在刹那么这个距离可以扣除一部分最后留个余量。这个模型在低速工况下表现相当稳。比如低速跟车前方车辆突然在路口停住自车从 30km/h 开始制动模型算出的距离边界比较合理不会太早介入也不会太晚介入。但上了高速就难受了。典型的场景自车以 100km/h 巡航前方同车道车辆也在以 95km/h 行驶两车相对速度只有 5km/h。这时候绝对速度大安全距离公式里 v_ego 的平方项会急剧拉大系统可能在距离前车 80 米甚至 100 米的时候就开始报警甚至制动。问题是前车也在往前走两车相对速度很低完全用不着那么早介入。这个就是安全距离模型在高速相对速度小的工况下的“过度预警”。实车表现就是频繁报警让人想关掉这个功能。1.2 TTC在高速场景的直观优势与低速失效TTC 的全称是 Time to Collision计算特别简单TTC relative_distance / relative_speed注意相对速度必须大于 0也就是前车正在被逼近TTC 才有意义。TTC 这个判据本质上回答的问题不是“绝对距离够不够”而是“照这个逼拢速度几秒后会撞上”。这正是高速巡航场景需要的视角两车相对速度差很小哪怕距离只有 30 米TTC 也可能很大系统不会急于介入一旦前车突然急刹或者出现切出、切入场景相对速度迅速拉大TTC 会瞬间跌到阈值以下系统马上反应。所以高速用 TTC恰恰能补上安全距离模型过度敏感的短板。但 TTC 在低速场景也不是万能的。最典型的是前方静止目标自车以 40km/h 慢慢逼近一个停在路中间的故障车相对速度就是自车速度TTC 从 3s、2s 一路往下走这个还行但如果在极低速工况比如堵车蠕行时前方有个静止物体自车速度只有 10km/hTTC 还很大而实际距离已经很近一旦驾驶员分神系统可能来不及全力制动。更严重的是TTC 在自车几乎静止、前车以很慢速度靠近时会被计算成很大的数甚至无穷大这个边界处理不好就会漏报。1.3 两种触发逻辑并联的方案为什么不可靠很多人第一反应是把安全距离和 TTC 写成“或”的关系哪个触发哪个报警不就行了吗我最早也这么干过实测下来确实能覆盖一部分工况但会引入两个很头疼的问题。第一是误触发叠加安全距离在高速误报TTC 在低速漏报两者并联后高速误报问题一点没解决低速该漏的它还是会漏等于把两个判据的缺点全收下了。第二是触发时机跳变安全距离给的制动参考点是距离TTC 给的参考点是时间两者量纲不同在同一段逼近过程中先触发谁、后触发谁完全是乱的标定工程师根本没办法稳定地描述系统行为。举一个我实际遇到的例子中高速跟车切入场景自车以 80km/h 逼近前车安全距离觉得该报了TTC 还觉得不急系统一会儿报一会儿不报车内报警音“滴滴滴”响得很不连续驾驶体验非常差。所以改进方向就很明确了不能简单并联而是要根据工况明确在什么区间听谁的并且处理好两者交界处的平滑过渡。2. 改进算法的设计思路按工况分段让两种判据各管一段2.1 分段的依据相对速度区间我的做法是直接按相对速度 Vr也就是自车速度减去前车速度把工作区间切成三段低速段Vr 5 m/s约 18 km/h中速段5 m/s ≤ Vr ≤ 20 m/s约 18-72 km/h高速段Vr 20 m/s约 72 km/h 以上低速段以安全距离模型为主。因为此时相对速度低、接近过程慢安全距离能平滑地反映“我们之间的绝对空间余量”不容易因为速度计算噪声产生 TTC 抖振。高速段以 TTC 为主。相对速度大时TTC 能直观衡量碰撞紧急程度避免安全距离模型在绝对速度高但相对速度低时过度预警。中速段是过渡区两种判据加权融合。这样做的核心是保证系统在切换边界不出现输出跳变而不是甩一个硬开关。2.2 关键设计一滞回区间防止切换抖动直接按绝对阈值切换有个致命问题如果两车一会儿加速一会儿减速相对速度在阈值附近来回穿越系统就会在“用距离”和“用 TTC”之间反复横跳轻则报警抖动重则制动重复释放非常危险。解决办法是加滞回。具体到我的设计里从低速段切入中速段的阈值定在 5 m/s但从中速段回到低速段的阈值定在 4 m/s留了 1 m/s 的滞回带宽。高速段同理进入高速段是 20 m/s退出高速段则是 18 m/s。这样相对速度在小范围内抖动时决策模式会“赖”在当前状态不走不会发生高频切换。这里有个标定上的坑滞回带宽并不是越大越好。带宽太大工况变化时系统反应明显滞后比如车速快速从中速跌到低速本应马上切回安全距离模型却因为滞回还留在 TTC 模式可能导致制动介入偏晚。所以带宽一般取门槛值的 10%-20% 比较合适折中处理。2.3 关键设计二TTC分级制动策略TTC 判据不是只算一个阈值而是分了四档TTC 2.0sFCW 报警只提醒不制动1.2s TTC ≤ 2.0s一级部分制动减速度目标 0.3g0.6s TTC ≤ 1.2s二级增强制动减速度目标 0.6gTTC ≤ 0.6s三级全力制动减速度目标 0.9-1.0g这里每一档都有明确意图。报警挡是为了让驾驶员有时间接管一级制动的 0.3g 是乘客几乎没感知的舒适制动上限用于碰撞前期的速度控制二级开始有比较明显的体感三级就是尽可能减小碰撞能量。分级的本质是给系统“让驾驶员先接管、不得已才重刹”的逻辑而不是一上来就全制动实车上如果一触发就 1g 刹停后车追尾风险会更大。安全距离模型侧同样输出一个建议减速度根据 d_safe 与实际距离的差值做比例控制差值越大制动越深。最终制动指令是两套判据在各自权重下算出的建议减速度的加权和。2.4 为什么选联合仿真来验证这套算法这套切换逻辑最怕的就是“只在单一仿真环境里跑通了换到实际场景就露馅”。所以我从一开始就用了联合仿真来验证场景端负责生成前车运动状态和道路环境车辆动力学端把自车的制动响应、轮胎附着等因素真实建模算法模型放在中间环节实时计算安全距离、TTC 并输出制动力。联合仿真最大的价值在于安全距离和 TTC 的切换性能本质上是算法和整车动态响应相互作用的结果。单跑算法模型看不到制动执行器延迟对减速度建立时间的影响也看不到车轮抱死、ABS 介入对实际减速度曲线的扰动。只有把三个环境跑在同一个时间轴上才能看清切换点附近制动力到底是平滑上升还是出现突变。3. 联合仿真平台搭建与算法实现细节3.1 环境选型场景工具、车辆动力学、算法模型的组合搭建联合仿真我用了常见的一套组合场景仿真工具负责道路、目标车辆和传感器信号输出车辆动力学软件负责整车模型、制动系统和轮胎模型算法主体放在 Simulink 里做。三者通过标准接口做数据交互算法端周期收到目标相对距离、相对速度、自车速度、自车横摆角等信息输出制动减速度指令给动力学模型执行。这套组合的好处是各层职责清晰换一个场景包算法不用动换一台目标车型只需替换动力学参数算法本身的所有改动集中在 Simulink 一个框里版本管理也很好做。3.2 Simulink里的算法实现框架我把算法模型分成了四个子模块目标筛选与数据预处理输入目标 ID、距离、速度、相对横纵向位置做车道一致性判断选出一级目标工况判断与权重计算根据相对速度算出当前处于哪个区间输出安全距离权重和 TTC 权重双判据计算分别计算安全距离可达边界和 TTC 值并转换成建议减速度仲裁与制动输出融合两路建议减速度叠加滞回和速率限制输出最终制动减速度权重计算我用的是线性过渡函数。在低速段TTC 权重为 0完全用安全距离进入中速段后权重按相对速度线性增加比如 Vr5 时 TTC 权重 0Vr20 时 TTC 权重 1到了高速段安全距离权重归零完全用 TTC。这样权重本身是连续函数物理上不会在模式切换的瞬间产生阶跃。实现里比较容易被忽略的是速率限制。就算权重连续制动减速度指令本身也不能突变否则车辆会产生明显冲击感。我给输出加了每秒最大 3m/s² 的变化率限制实测下来体感舒适度提升很明显。3.3 联合仿真中必须对齐的时间步长与接口联合仿真最容易出问题的地方就是时间步长不一致。场景工具用 1ms 步长输出动力学模型内部用 0.5ms 积分但算法模型如果仍然用 1ms 步长中间的插值和采样延迟会引入不小的计算误差TTC 这种对变化率敏感的变量尤其明显。我的做法是统一算法模型的采样时间为 10ms也就是与传感器周期保持一致但场景工具和动力学模型之间加一个 Rate Transition 做缓存。这样做的理由是AEB 的决策不需要 1ms 级别刷新太快的刷新反而会让 TTC 计算噪声变大10ms 的周期配合适当的低通滤波反应够快而且稳定。另外仿真结果要记录带时间戳的通路数据不能只存最终减速度。一旦发现切换点附近异常必须能从距离、速度、相对速度、TTC、权重系数、滤波前后减速度共六条曲线里找到是哪一级出了问题。这个习惯帮我在后面排查时省了大量时间。3.4 仿真场景设计覆盖典型碰撞形态为了把切换逻辑逼出问题场景设计不能只做常规的“前方匀速车辆”。我加了四类典型工况前方静止车辆覆盖高速和低速两个子场景车速分别取 30km/h、60km/h、80km/h、120km/h前方匀速车辆前车分别以 20km/h、40km/h、60km/h 匀速行驶自车以更高车速逼近前方急减速车辆前车以 0.5g、0.8g 两种减速度急停自车初始速度 50-100km/h 不等前车切出场景自车逼近前车前车在碰撞前突然变道离开检验算法是否会误触发每个场景里我都记录触发时的实际距离和速度。结果发现第 4 类切出场景最容易暴露问题前车切出的瞬间本车道突然变成空档但自车可能已经处于制动状态如果系统不识别前车已经离开本车道就会“对着空气重刹”非常危险。这个场景让我在目标筛选模块里额外加了“目标丢失确认时间”要求前车横向位移超过车道边界且持续 0.3s 后才能把目标判定为退出既避免了误触发又不会因为单帧抖动导致目标状态不稳定。4. 仿真结果对比改进前后差在哪4.1 典型前向碰撞工况下的结果表现我跑完三组核心对比工况静止目标、匀速前车、前车急减速每组再覆盖不同初始车速。改进前是“安全距离与 TTC 并联触发”改进后是“按相对速度分段加权切换”。先说静止目标场景自车以 80km/h 接近静止的前车。改进前的并联策略在距离 100 米左右就开始 FCW 报警因为安全距离模型在绝对速度 80km/h 时已经算出很大的边界距离而实际上驾驶员完全能更晚介入改进后系统在高速段听 TTC 的TTC 降到 2s 才报警大概在距离 44 米附近介入时机合理很多。接着制动分级启动最终在距离前车约 2 米处停稳全程没有出现高频抖动。再说前车急减速场景两车都以 72km/h 行驶前车突然以 0.8g 减速度刹停。并联策略的缺陷是安全距离判据和前车 TTC 判据在某一瞬间同时触发系统从报警直接跳到全力制动减速度曲线出现明显阶跃。改进后因为中速段安全距离权重还在起作用制动是逐级加深的实测减速度建立过程平滑了很多车内人员体感明显更好。4.2 切换工况下的连续性与平滑性我最关心的是切换边界所以特意设计了一个逼拢速度在 5-6m/s 附近来回波动的工况来测试滞回效果。并联策略在这个工况下的表现是灾难级的模式在安全距离和 TTC 之间来回切换报警触发频率也跟着波动标定数据里能看到“报警、解除、报警、解除”的重复序列。加滞回之后相对速度在 4-5m/s 区间内反复穿越时系统保持在上一个状态不切制动指令连续报警没有中断。这里要说明一点滞回不会让切换点完全消失它的作用是让切换只发生在相对速度真正离开滞回窗口之后。仿真数据里能看到相对速度从 10m/s 一路降到 4m/s 以下时系统才从 TTC 权重主导真正切换到安全距离主导切换点清晰且只发生一次。4.3 改进算法的边界与不足把话说回来这套切换逻辑不是万能的。我发现它的薄弱点在“前车突然切入”这种横纵向耦合场景。前车从相邻车道切入本车道相对距离和相对速度瞬间变化剧烈TTC 可能从 5s 瞬间跳到 0.8s安全距离模型从“无威胁”瞬间变成“极度紧急”。这种跳变下加权融合反而显得“中庸”既没有距离模型的直接边界判断快也没有 TTC 的瞬间灵敏度高制动介入比理想情况稍晚。针对这个问题我的处理是在目标级加了一个“切入识别”标志位当目标的横向速度超过一定阈值比如 3m/s时算法强制切换到 TTC 主导并且把 TTC 阈值临时放大 10% 来提前介入。这个补救实测有效但也说明了一点任何算法都要针对具体场景补齐逻辑不存在一个切换公式就能包打天下。5. 常见问题排查与标定心得5.1 高频问题速查表我把联合仿真和标定过程中遇到的问题整理成一张表方便后来的人直接对照排查。问题现象可能原因解决办法切换边界附近报警反复通断阈值直接硬切换加滞回窗口带宽取阈值 10%-20%TTC 计算值抖动剧烈传感器更新率低、距离速度噪声大提高输入刷新率或加低通滤波采样间隔设 10ms静止目标根本不触发仅用 TTC 判据TTC 值偏大叠加距离兜底阈值60km/h 以下强制触发距离边界前车切入场景介入偏晚目标筛选延迟、横纵向未解耦增加横向速度标志切入时临时提前 TTC 阈值制动减速度出现阶跃两级权重切换瞬间不连续用线性权重过渡加输出速率限制动力学模型与算法模型数据错位步长不一致统一算法采样时间用 Rate Transition 做缓存5.2 几条实测下来的标定经验第一TTC 阈值不要照抄论文。很多文献里写的 2.0s、1.6s 这些值看起来很有道理但换到普通乘用车上制动执行器从指令到建压往往有 200-300ms 的延迟目标识别还有额外延迟。用仿真把执行延迟加进去之后同样一个 TTC 阈值实际效果可能差一个档位。我最后是把 TTC 报警阈值从 2.0s 降到了 1.7s制动阈值从 0.8s 升到了 1.0s才在误报率和介入及时性之间找到适合这台车的平衡点。第二安全距离模型里的车速平方项非常敏感。v_ego²/(2*a_max)车速稍有标定误差距离边界会放大很多。实测下来自车速度源一定要用滤波后且经过斜率限制的信号不能直接用传感器原始值否则高速时边界距离会上下跳动几十米。第三低速段的舒适性要求反而高。高速段大家都能接受重刹但低速跟车蠕动时如果系统频繁以 0.4g 以上的减速度介入乘客很快会晕车。低速段我把减速度上限压到 0.4g只有在距离进入最后 2 米才允许升到 0.8g拥堵工况的体验改善非常明显。5.3 仿真与实车之间的衔接建议联合仿真只是第一步最后免不了要到实车上做验证。这里分享一个从仿真往实车迁移时很重要的习惯仿真里验证通过的参数集不要直接烧进实车控制器。原因很简单仿真模型里制动执行器延迟是理想化的实车液压制动系统受温度、磨损、电池电压影响建压时间可能比模型差出 50% 以上。我的做法是先在仿真里把参数范围压缩到候选区间再在实车上用快速原型设备做阶梯测试每个参数取三点下限、中间值、上限做 27 组正交试验用主观评价加客观数据综合打分选点。还有一点容易被忽略就是实车的 AEB 标定必须考虑驾驶员的“心理接管时间”。仿真里看数据0.9g 全力制动在碰撞前 0.5s 介入是合理的但实车上如果驾驶员听到报警后通常会给自己留 1s 左右反应时间报警太晚会导致驾驶员还没反应过来制动就下去了反而容易让人惊吓。所以我在最终参数里把报警挡的 TTC 阈值从 1.7s 又调回 1.8s牺牲了一点点误报率换来了更自然的人机交互感觉。6. 这套算法的复用价值与后续扩展方向6.1 从AEB延伸到其他主动安全功能安全距离与 TTC 切换这套框架本质上是一个“双判据状态仲裁”的通用结构完全可以复用到相邻功能上。比如 ACC自适应巡航的跟车时距切换、BSD盲区监测的横向碰撞预警核心逻辑都是“在不同车速区间选择不同敏感度的判据”。我自己在后续项目里就把它改成了 BSD 的切入预警逻辑只是把“安全距离”换成了“横向安全时间”“TTC”换成了“横向穿越时间”整个状态机基本没动。6.2 引入机器学习做权重自适应线性权重函数虽然简单稳定但对复杂工况的适配能力有限。我目前正在尝试收集大量真实道路数据用决策树或简单的回归模型训练相对速度到最优权重系数之间的映射关系。思路是从数据里学出“什么样的相对速度、相对加速度、自车速度组合下系统更该信任哪个判据”。不追求端到端换掉传统模型而是用 ML 只替换权重计算这个环节其他部分仍然是可解释的规则逻辑。这个方案的好处是既保住了 AEB 功能的安全可解释性又比纯固定权重有更好的场景适应性。6.3 多传感器融合后的目标级改进现在的算法还比较依赖单一毫米波雷达或视觉提供的目标信息。未来如果做多传感器融合目标会同时带有视觉的类别置信度和雷达的速度精度切换逻辑可以更聪明。比如识别到前方是静止行人时可以直接跳过 TTC 判据用行人专用距离模型识别到前方是大货车时可以提前介入因为货车制动距离长、驾驶员视野遮挡更严重。这些改进都不需要推翻现有框架只需要在目标筛选模块里增加几个属性分支。我个人在这轮 AEB 联合仿真项目里的体会是算法改进的关键不是找到一个“万能判据”而是想清楚每个判据最适合什么工况再把它们有序地组织起来。安全距离和 TTC 各有各的脾气硬要二选一或者无脑并联都会出事分段、加权、滞回、分级制动这套组合拳打下来系统平稳性和触发合理性都提升了不少。这套方法陪我把 AEB 项目从初版做到验证通过希望对你也能有帮助。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑