4. 安全距离模型:基于车头时距的安全距离、基于制动过程的安全距离、不同模型对比与适用场景

各位同学,咱们今天聊聊安全距离模型。说实话,这是纵向规划里最基础、也最容易被忽视的一块。我见过不少新手工程师,一上来就搞复杂的MPC、强化学习,结果跟车距离算得乱七八糟——说白了,连安全底线都没守住。

安全距离模型,就是回答一个问题:前车刹车了,我到底该离多远才不撞? 答案看似简单,但不同场景下,答案完全不同。咱们今天就把两种主流模型掰开揉碎了讲。

4.1 基于车头时距的安全距离模型

这个模型,我个人习惯叫它「时间距离法」。思路很简单:我跟着前车,保持一个固定的时间差。比如前车经过某个点,我2秒后经过同一个点。

公式长这样:

d_safe = v_host * t_headway + d_min

其中:

  • v_host:自车速度(m/s)
  • t_headway:车头时距(通常0.8s~2.5s)
  • d_min:最小停车距离(比如2~5米)

嗯,这里要注意:车头时距不是拍脑袋定的。我在项目中遇到过,某主机厂要求高速场景用1.2s,结果测试时发现,在湿滑路面上根本刹不住。后来我们改成了动态时距——车速越高,时距越大。

我的经验: 城市道路建议1.5s~2.0s,高速建议2.0s~2.5s。如果传感器延迟大(比如纯视觉方案),建议再加0.3s~0.5s的安全余量。

这个模型的优点很明显:计算简单,实时性好。你想想看,只需要知道自车速度和前车速度,就能算出安全距离。在ACC(自适应巡航)里,这是最常用的模型。

但缺点也很致命:它假设前车匀速运动。如果前车急刹车,这个模型就失效了。说白了,它只考虑了「跟车」,没考虑「紧急制动」。

4.2 基于制动过程的安全距离模型

这个模型更「物理」一些。它从制动过程出发,算清楚:前车从刹车到停,需要多远?我从前车刹车到我自己停,又需要多远?

公式稍微复杂点:

d_safe = v_host * t_reaction + (v_host² / (2 * a_host)) - (v_front² / (2 * a_front)) + d_min

其中:

  • t_reaction:系统反应时间(包括感知、决策、执行延迟,通常0.2s~0.5s)
  • a_host:自车最大制动减速度(通常-3m/s² ~ -8m/s²)
  • a_front:前车最大制动减速度(通常假设-5m/s² ~ -8m/s²)
  • d_min:最小安全余量
我曾经踩过的坑: 有次做AEB(自动紧急制动)标定,我直接用了前车减速度-8m/s²的假设。结果实车测试时,前车是一辆老旧货车,实际减速度只有-4m/s²。我的算法算出的安全距离偏小,差点追尾。后来我学乖了:永远不要假设前车的制动能力比你强。保守起见,前车减速度取-5m/s²,或者直接用自车减速度。

这个模型的优势在于:能处理紧急制动场景。它把反应时间、制动能力都考虑进去了。在AEB、FCW(前向碰撞预警)等功能里,这是标配模型。

但缺点也有:参数太多,容易过设计。你想想看,如果每个参数都取最保守值,算出来的安全距离会非常大,导致车辆频繁制动,乘坐体验很差。

4.3 不同模型对比与适用场景

咱们直接上表格,一目了然:

对比维度 车头时距模型 制动过程模型
计算复杂度 低(O(1)) 中(O(1),但参数多)
对前车速度的依赖 需要前车速度 需要前车速度+减速度
对传感器要求 低(仅需相对速度) 高(需估计前车减速度)
紧急制动场景 不适用 适用
跟车平顺性 好(时距固定,加减速平滑) 一般(参数保守时易顿挫)
典型应用 ACC、TJA(交通拥堵辅助) AEB、FCW、ESA(紧急转向辅助)

我个人习惯的做法是:两者结合。在正常跟车时,用车头时距模型,保证平顺性;当检测到前车减速度超过阈值(比如-3m/s²),切换到制动过程模型,保证安全性。

实际工程中的做法:
// 伪代码示例
if (a_front > -3.0) {
    // 正常跟车,用车头时距模型
    d_safe = v_host * 1.8 + 3.0;
} else {
    // 前车急刹,用制动过程模型
    d_safe = v_host * 0.3 + (v_host² - v_front²) / (2 * 6.0) + 2.0;
}

你想想看,为什么不能只用一种模型?因为没有银弹。车头时距模型在高速跟车时,如果前车突然变道切入,它反应不过来;制动过程模型在低速蠕行时,算出的距离可能比实际需要的大很多,导致车辆频繁被加塞。

我记得有一次做路测,在晚高峰的北京三环上,我们用了纯制动过程模型。结果呢?每当前车减速等红灯,我们的车在50米外就开始减速,后车疯狂按喇叭。后来改成混合模型,低速时用车头时距,高速时用制动过程,问题就解决了。

最后总结一下:

  • 车头时距模型:简单、平顺,适合正常跟车场景
  • 制动过程模型:安全、保守,适合紧急场景
  • 实际工程:混合使用,根据场景动态切换

下一章,咱们聊聊纵向加速度规划——怎么让车既安全又舒适地加减速。到时候我会分享一个我踩过的坑:加速度变化率(jerk)没限制好,乘客直接晕车了。敬请期待。