Skip to content

VirtualDriver: Lead follow でカットイン車に追突する — 衝突回避(AEB相当の緊急ブレーキ)が無い #34

Description

@GT-karny

概要

resources/xosc/acc-test.xoscVirtual Driver + Lead vehicle follow(policy:lead / LeadVehicleAware, IDM) で走らせると、カットインしてくる先行車に追突する。VD には「ぶつからないための緊急ブレーキ(AEB相当の衝突回避)」が無く、快適減速の範囲でしか減速しないため、高い接近速度では物理的に止まりきれない。

関連KG-ID: policy:lead proposal:P11(TTC/必要減速度メトリクス)proposal:P12(衝突ゼロ不変条件+衝突検出)

再現手順

  1. GT_Sim 起動 → Controller = Virtual Driver を選択
  2. 歯車 → Lead vehicle follow (IDM) を ON(VirtualDriver設定をGUIに露出(ManualDrive設定画面と同等)+ 今後のVDは設定可能項目を全てGUI化する恒久要件 #33 で追加したGUI)
  3. resources/xosc/acc-test.xosc を実行
    • Ego(car_white) 120 km/h、s=20、lane -1
    • Target(car_red) 30 km/h、s=100、lane -1 → t=5 で隣接レーンへ退避 → t=7 でEgoレーンへカットイン(RelativeTargetLane value=0t=11 で急制動(rate -4 m/s² → 0)
  4. 結果: Ego がTargetに追突(衝突回避できない)

根本原因(コードレベル)

現状の policy:lead = LeadVehicleAware.cpp と mid/long プランナ ManeuverAwareSpeedPlanner.cpp に、以下3つの穴が重なっている:

  1. カットイン検知が遅い: LeadVehicleAware は先行車を「同一レーン(diff.dLaneId == 0)かつ横偏差 |diff.dt| <= lateral_tol(=2.0m)」でしか拾わない。カットイン中(レーン変更途中で横にまたがっている間)は検知対象外で、完全に自レーンに入り2m以内になって初めて先行車として認識する。その時点で車間は既に危険域。横方向の割り込み予測(lateral encroachment / lane-change 予測)が無い。

  2. 緊急停止が発火しない: LeadVehicleAware が STOP_AT_S を出すのは「先行車がほぼ停止(v_lead <= stop_speed_eps=0.3かつ gap <= min_gap+1」の時のみ。減速中だがまだ動いているカットイン車はこの条件に該当せず、緩い MAX_SPEED = v_ego + a_idm*τ(τ=0.5s)追従レジームに留まる。

  3. プランナに緊急減速の経路が無い: ManeuverAwareSpeedPlanner は減速をすべて comfort_decel(=2.0 m/s²)で頭打ちにする — STOP_AT_S のランプ(sqrt(2*comfort_decel*dist) 前方)も、後退パスの到達可能速度も、ジャーク制限も comfort_decel ベース。快適減速を超える緊急減速の経路が存在しないため、たとえ STOP_AT_S が出ても高接近速度では止まりきれない(実AEBは 6〜9 m/s² 級を要求する)。

要求(このIssueのスコープ)

VD に衝突回避(AEB相当)の緊急ブレーキ層を追加する:

  1. 緊急減速の経路をプランナ/制約に追加: comfort_decel とは別に emergency_decel(例 8.0 m/s²)を持ち、TTC もしくは必要減速度 a_req が閾値を超えたら快適減速の頭打ちを外して緊急減速を許可する(新しい PolicyConstraint 種別、例 EMERGENCY_STOP / HARD_DECEL、または STOP_AT_S に緊急フラグ)。
  2. カットイン/割り込みの早期検知: 横方向に接近中の車(レーン変更中の車、dt が縮小方向、TTCが小さい)を先行車候補に含める。同一レーン確定を待たずに、割り込み予測で早めに反応する。
  3. 判定は TTC / 必要減速度ベース: 車間だけでなく閉じ速度を考慮した TTC(time-to-collision)と a_req(衝突回避に必要な減速度)で緊急介入を決める。proposal:P11(TTC/PET/必要減速度のサロゲート指標)と算出コードを共有できる。
  4. 設定は VirtualDriver設定をGUIに露出(ManualDrive設定画面と同等)+ 今後のVDは設定可能項目を全てGUI化する恒久要件 #33 の GUI 方針に従う: 追加する emergency_decel / TTC 閾値等は config/virtual_driver.json + VirtualDriverPanel(GUI)にセットで露出する(VD-GUI-PARITY)。

検証

  • 衝突検出が検証経路に無いのが現状(proposal:P12 が指摘)。本Issueの回帰固化には、まず ego-他車 OBB 交差による collision-free 不変条件(P12)と、必要減速度メトリクス(P11)が前提になる。
  • acc-test.xosc(+カットイン派生)を VD 検証バッチに追加し、「カットイン+急制動でも衝突ゼロ・要求減速度内」を matcher 化して回帰ゲートに載せる。

受け入れ基準

  • acc-test.xosc を Virtual Driver + lead follow で走らせて Egoがカットイン車に衝突しない
  • 緊急時に comfort_decel を超える減速(emergency_decel)が発火し、テレメトリで確認できる
  • カットイン車を自レーン確定前に先行車候補として早期検知する
  • 緊急介入の閾値(TTC / a_req / emergency_decel)が config + GUI(VirtualDriverPanel) から設定可能
  • collision-free 不変条件(P12連携)で回帰ゲート化されている

スコープ外 / 依存

  • 完全な ISO ALKS/AEB 認証相当の緻密なモデルは対象外(まずは「ぶつからない」緊急ブレーキ)。
  • 検証固化は P11(必要減速度)/ P12(衝突検出)の着手状況に依存。単体の緊急ブレーキ挙動実装は先行して着手可能。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions