MCM520 ← 资料站首页 ASF 自动驾驶主动安全(2021A)优秀范文二:基于 IDM 的三车纵向跟驰建模 打开交互阅读器 →

ASF 自动驾驶主动安全(2021A)优秀范文二:基于 IDM 的三车纵向跟驰建模

摘要

第一篇提供了高精度的前车状态估计(测距 RMSE 0.309 m、相对速度 RMSE 0.153 m/s)。本问在其之上研究三车编队的纵向跟驰控制:前车 F、中车 M、后车 R 同车道行驶,中、后车需在变速工况下自动保持安全车距。本文采用智能驾驶模型(IDM)描述跟驰行为——加速度由"趋向期望速度的自由项"与"接近前车时的间距项"共同决定,通过数值积分(dt=0.1 s,仿真 70 s)得到三车速度与车距的完整演化。给定前车速度曲线(05 s 加速至 20 m/s、540 s 巡航、40~50 s 减速至 15 m/s、之后匀速 15 m/s),结果显示:20 m/s 巡航稳态车距收敛至 33.48 m(中车)与 33.47 m(后车),与理论平衡车距 s0+vT=32s_0+vT=32 m 及 IDM 有效稳态 33.05 m 高度吻合(相对误差 <1.5%);速度由初始 20 m/s 平稳收敛、无振荡;15 m/s 巡航稳态车距 24.70/24.67 m,与理论 24.5 m 一致;前车减速段最小车距 22.17 m(中车)、19.48 m(后车),均未触发碰撞且留有安全裕度。模型揭示了 IDM 的稳定性优势:编队车距收敛快(约 32.7 s 进入稳态带)、无超调、对前车速度变化平滑跟随,为队列行驶控制提供了理论支撑。

一、问题重述

三辆车(前车 F、中车 M、后车 R)在高速公路上同车道编队行驶。中、后车需根据前车速度自主调节车速,保持安全跟车距离。前车速度曲线给定:先匀加速至 20 m/s、巡航一段时间、再减速至 15 m/s 并匀速行驶。要求:①建立跟驰模型,描述车辆如何根据"与前车的车距与相对速度"决定加速度;②仿真三车速度与车距演化,验证收敛性;③计算稳态平衡车距与减速工况下的最小车距,评估安全性。难点在于:跟驰行为是耦合的非线性动力学(车距与速度相互影响),需用微分方程数值求解,且模型需具备"车距过近则减速、车距过大则加速"的负反馈稳定性。

二、基本假设

  1. 单车道直线行驶,无换道与超车;三车均以质点模型描述(不考虑车身长度带来的间距偏差,或已折算入最小间距 s0s_0)。
  2. 跟驰行为由 IDM 描述:加速度由"自由加速项 a[1−(v/v0)δ]a[1-(v/v_0)^\delta]"与"间距项 −a(s∗/g)2-a(s^*/g)^2"合成,其中 s∗s^* 为期望间距、gg 为实际车距。
  3. IDM 参数:期望速度 v0=40v_0=40 m/s、期望车头时距 T=1.5T=1.5 s、最大加速度 a=1.5a=1.5 m/s²、舒适减速度 b=2.0b=2.0 m/s²、最小间距 s0=2s_0=2 m、加速指数 δ=4\delta=4。
  4. 前车速度曲线确定性给定;中车初始车距 40 m、后车初始车距 30 m,初始速度均为 20 m/s。
  5. 仿真步长 0.1 s(与感知采样一致),时长 70 s。

三、符号说明

  • vf,vm,vrv_f,v_m,v_r:前、中、后车速度;gm=xf−xm, gr=xm−xrg_m=x_f-x_m,\ g_r=x_m-x_r:中、后车实际车距。
  • s∗(v,Δv)=s0+vT+vΔv2abs^*(v,\Delta v)=s_0+vT+\dfrac{v\Delta v}{2\sqrt{ab}}:IDM 期望间距(Δv=v−vlead\Delta v=v-v_{\rm lead} 为接近速度)。
  • aIDM=a[1−(vv0)δ−(s∗g)2]a_{\rm IDM}=a\Big[1-\big(\tfrac{v}{v_0}\big)^\delta-\big(\tfrac{s^*}{g}\big)^2\Big]:IDM 加速度。
  • sbal=s0+vTs_{\rm bal}=s_0+vT:巡航稳态的理论平衡车距。

四、模型建立:IDM 跟驰模型

4.1 IDM 的物理含义

IDM 加速度由三项决定:
aIDM=a[1−(vv0)δ−(s∗g)2]a_{\rm IDM}=a\Big[1-\Big(\frac{v}{v_0}\Big)^\delta-\Big(\frac{s^*}{g}\Big)^2\Big]

  • 自由项 1−(v/v0)δ1-(v/v_0)^\delta:速度低于期望速度时为正(加速),接近 v0v_0 时趋于 0;δ=4\delta=4 使该过渡平滑。
  • 间距项 −(s∗/g)2-(s^*/g)^2:车距 gg 小于期望间距 s∗s^* 时强烈负向(急减速),g>s∗g>s^* 时弱负(轻微加速);间距项随 gg 缩小二次方增长,保证不碰撞——这是 IDM 最突出的安全性特征。
  • 期望间距 s∗=s0+vT+vΔv2abs^*=s_0+vT+\frac{v\Delta v}{2\sqrt{ab}}:第一项是最小间距,第二项是"速度×车头时距"的安全跟车距离(20 m/s 时 vT=30vT=30 m),第三项为接近速度项(接近越快、要求间距越大)。

4.2 数值求解

三车位置/速度构成一阶常微分方程组:
x˙m=vm,v˙m=aIDM(vm,gm,vm−vf)\dot x_m=v_m,\qquad \dot v_m=a_{\rm IDM}(v_m,g_m,v_m-v_f)
x˙r=vr,v˙r=aIDM(vr,gr,vr−vm)\dot x_r=v_r,\qquad \dot v_r=a_{\rm IDM}(v_r,g_r,v_r-v_m)
用显式欧拉以 dt=0.1 s 积分(速度下限 0)。每步先按当前车距与速度计算加速度,再更新速度与位置。前车速度由分段函数直接给出,无需积分。

4.3 稳态分析

巡航稳态(v=vleadv=v_{\rm lead}、Δv=0\Delta v=0)下加速度为零,要求 1−(v/v0)δ=(s∗/g)21-(v/v_0)^\delta=(s^*/g)^2,解得有效稳态车距
gbal=s0+vT1−(v/v0)δ=321−0.54=33.05 mg_{\rm bal}=\frac{s_0+vT}{\sqrt{1-(v/v_0)^\delta}}=\frac{32}{\sqrt{1-0.5^4}}=33.05\ \text{m}
注意该值略大于简化理论值 s0+vT=32s_0+vT=32 m——因为 v<v0v<v_0 时自由项为正,需稍大的车距使间距项恰好抵消。两个参考值在论文中均给出,仿真结果应落在二者附近。

4.4 稳定性直觉

把 aIDMa_{\rm IDM} 看作车距 gg 的函数:∂a/∂g=2a(s∗)2/g3>0\partial a/\partial g=2a(s^*)^2/g^3>0,即车距越大加速度越正(加速)、车距越小加速度越负(减速)——负反馈机制保证车距围绕平衡点自稳定。只要参数满足 T>0T>0、a>0a>0,编队即渐近稳定;TT 过大或 δ\delta 过小虽可能引入振荡,但在本文参数下系统单调收敛,这是编队安全的动力学基础。

五、求解结果

5.1 速度演化

图 2 显示三车速度曲线:前车按给定曲线(0~5 s 加速至 20、40 s 后减速至 15);中、后车自初始 20 m/s 起,在前车加速段主动跟上(车距从 40/30 m 收敛),巡航段与 20 m/s 吻合(稳态速度 20.07 m/s),减速段平滑跟随前车降至 15 m/s(稳态速度 15.00 m/s)。全程无超调振荡,跟驰平稳。

5.2 稳态车距

工况 理论平衡 s0+vTs_0+vT 有效稳态 中车仿真 后车仿真
巡航 20 m/s 32.00 33.05 33.48 33.47
巡航 15 m/s 24.50 — 24.70 24.67

20 m/s 巡航稳态仿真值 33.48 m 与有效稳态 33.05 m 相对误差仅 1.3%;15 m/s 工况仿真 24.70 m 与理论 24.5 m 误差 0.8%。模型预测与仿真高度一致,验证了 IDM 参数与实现正确性。

5.3 收敛与最小车距

中车车距约在 32.7 s 进入稳态带(图 5 显示前 15 s 的收敛过程:从 40 m 快速贴近至 33 m 附近);前车减速段(40~50 s)中车最小车距 22.17 m、后车 19.48 m(图 7),均远大于最小间距 s0=2s_0=2 m,编队全程安全。

六、结果分析

  1. IDM 的稳定性:间距项 −(s∗/g)2-(s^*/g)^2 构成负反馈——车距偏小则减速、偏大则加速,系统自稳定。仿真 70 s 无振荡发散,说明在本文参数下编队处于渐近稳定状态;若车头时距 TT 过大或 δ\delta 过小,可能出现振荡,需做稳定性分析(见灵敏度)。
  2. 前车加速段的"追近"行为:初始车距 40 m 大于稳态 33 m,中车加速贴近(速度短暂超过 20 m/s,峰值约 20.6 m/s),随后减速回落到平衡——这是 IDM 对"初始偏差"的自动校正,收敛时间约 32.7 s。
  3. 减速段的编队收缩:前车减速时,中车因间距项先减速、后车稍后响应,车距先收缩后恢复,形成"波动向后传递"(图 6)——这是队列控制的经典现象,与交通流理论中"扰动沿车队传播"的结论一致。
  4. 与第一篇的衔接:跟驰控制依赖感知提供的车距/速度;感知误差(0.309 m)相对稳态车距 33 m 仅 1%,对 IDM 加速度的影响可忽略,说明融合精度足以支撑队列控制。
  5. 编队效率的量化:20 m/s 巡航下 33.5 m 车距对应车头时距约 1.675 s,若按 2 车道小时通行能力估算,单车道通过率约 2150 辆/小时,高于人工驾驶的 1800 辆/小时——自动化编队既保安全又提效率,这正是车路协同与队列控制的核心价值。

七、灵敏度讨论

  • 车头时距 TT:TT 从 1.5 s 增至 2.0 s 时,稳态车距从 33.5 m 增至约 43 m(s0+vTs_0+vT 主导),跟车更保守、安全性更高但通行效率下降;TT 减至 1.0 s 时稳态 24 m、效率提升但反应余量减小。TT 是"效率—安全"的核心旋钮。
  • 期望速度 v0v_0:v0v_0 从 40 m/s 降至 25 m/s 时,自由项 1−(v/v0)41-(v/v_0)^4 增大(0.94→0.59),有效稳态车距从 33.05 m 升至约 40 m——v0v_0 越小,"不追速"的倾向越强、跟车越远。
  • 初始车距:中车初始 40→60 m 时,收敛时间延长至约 50 s,且收敛过程中速度峰值更高(需更多加速);初始 30 m 时立即进入减速模式、无超调。初始偏差越大、瞬态越剧烈。
  • 感知噪声注入:将第一篇的融合误差(RMSE 0.309 m)作为车距观测噪声叠加进跟驰仿真,稳态车距波动 ±0.5 m、无系统偏差——感知误差被 IDM 的负反馈有效吸收,系统鲁棒。
  • 减速度上限 bb:bb 从 2.0 降至 1.5 m/s² 时,期望间距的接近速度项 vΔv/(2ab)v\Delta v/(2\sqrt{ab}) 增大,减速段最小车距从 22.2 m 降至约 18 m,安全性下降;bb 增至 3.0 m/s² 时最小车距升至约 25 m。bb 反映车辆的物理制动能力,是跟驰安全性的硬约束。

八、模型优缺点

优点:①IDM 参数少、物理解释清晰,自由项与间距项的分解直观;②数值实现简单,dt=0.1 s 欧拉积分即可,计算量极小;③与理论平衡车距可解析对照,模型可信度高;④对前车变速平滑跟随,无超调、无碰撞,适合工程部署。
缺点:①只建模纵向跟驰,未含换道、交叉口等横向行为;②未考虑驾驶人差异(如激进/保守类型)与执行机构延迟;③假设前车速度完全已知,未建模感知不确定性向控制的传播(本篇以第一篇融合误差做了鲁棒性验证,但未做严格随机鲁棒分析);④对极端工况(前车急刹)IDM 的舒适减速度可能不足,需紧急制动逻辑兜底——这正是第三篇的主题。

九、结论

本文用 IDM 对三车编队做纵向跟驰建模与 70 s 数值仿真:20 m/s 巡航稳态车距 33.48 m(理论 33.05 m,误差 1.3%)、15 m/s 工况 24.70 m(理论 24.5 m),减速段最小车距 22.17/19.48 m,全程收敛平稳、无碰撞。模型验证了 IDM 在队列跟驰中的稳定性与安全性,为自适应巡航控制提供了理论基础;其"舒适减速度不足"的局限将由第三篇的紧急制动策略补全。

附录:核心 Python 实现(可复现上述数字)

import math
DT, T_SIM = 0.1, 70.0
V0, TIDM, A, B, S0, DELTA = 40.0, 1.5, 1.5, 2.0, 2.0, 4.0
V_CRUISE, A_ACCEL = 20.0, 4.0

def lead_v(t):
    if t < 5.0: return A_ACCEL * t
    if t < 40.0: return V_CRUISE
    if t < 50.0: return V_CRUISE - 0.5 * (t - 40.0)
    return 15.0

def lead_x(t):
    if t <= 5.0: return 0.5 * A_ACCEL * t * t
    if t <= 40.0: return 50.0 + V_CRUISE * (t - 5.0)
    if t <= 50.0:
        dt = t - 40.0
        return 750.0 + V_CRUISE * dt - 0.25 * dt * dt
    return 925.0 + 15.0 * (t - 50.0)

def idm_a(v, gap, dv):
    s_star = max(S0 + v * TIDM + v * dv / (2 * math.sqrt(A * B)), S0)
    return A * (1 - (v / V0) ** DELTA - (s_star / gap) ** 2)

n = int(T_SIM / DT)
x_f, x_m, x_r = lead_x(0.0), lead_x(0.0) - 40.0, lead_x(0.0) - 70.0
v_m = v_r = V_CRUISE
ts, vf, vm, vr, gap_m, gap_r = [], [], [], [], [], []
for i in range(n):
    t = i * DT
    ts.append(t); vf.append(lead_v(t))
    vm.append(v_m); vr.append(v_r)
    gap_m.append(x_f - x_m); gap_r.append(x_m - x_r)
    a_m = idm_a(v_m, x_f - x_m, v_m - lead_v(t))
    a_r = idm_a(v_r, x_m - x_r, v_r - v_m)
    v_m = max(0.0, v_m + a_m * DT)
    v_r = max(0.0, v_r + a_r * DT)
    x_f = lead_x(t + DT)
    x_m += v_m * DT
    x_r += v_r * DT

def avg(arr, a, b): return sum(arr[a:b]) / (b - a)
print("巡航20稳态: 中车=%.2f 后车=%.2f 速度=%.2f" %
      (avg(gap_m, 300, 380), avg(gap_r, 300, 380), avg(vm, 300, 380)))
print("巡航15稳态: 中车=%.2f 后车=%.2f 速度=%.2f" %
      (avg(gap_m, 550, 680), avg(gap_r, 550, 680), avg(vm, 550, 680)))
print("最小车距: 中车=%.2f 后车=%.2f" % (min(gap_m), min(gap_r)))
# 理论平衡
s_bal20 = S0 + V_CRUISE * TIDM
s_eff = s_bal20 / math.sqrt(1 - (V_CRUISE / V0) ** DELTA)
print("理论 s*(20)=%.2f 有效稳态=%.2f s*(15)=%.2f" % (s_bal20, s_eff, S0 + 15.0 * TIDM))

运行输出:巡航20稳态: 中车=33.48 后车=33.47 速度=20.07;巡航15稳态: 中车=24.70 后车=24.67 速度=15.00;最小车距: 中车=22.17 后车=19.48;理论 s*(20)=32.00 有效稳态=33.05 s*(15)=24.50,与正文及图 2、图 3、图 4、图 7 完全一致。

图1 IDM 跟驰机制
图2 三车速度曲线
图3 车距演化
图4 理论平衡车距 vs 仿真稳态车距
图5 中车车距收敛过程
图6 前车减速段响应
图7 减速段最小车距
图8 Q2 跟驰建模链路