dilemma_zone — DRIVE decide op

• 資料種類:any → table

• 呼叫: import fullseye as fs; fs.ledger.dilemma_zone(v, *, reaction: 'float', decel: 'float', amber: 'float', intersection_width: 'float', car_length: 'float', accel: 'float' = 0.0) -> 'Dict[str, object]'(要直接呼叫實作,import drivedecide; drivedecide.dilemma_zone(v, *, reaction: 'float', decel: 'float', amber: 'float', intersection_width: 'float', car_length: 'float', accel: 'float' = 0.0) -> 'Dict[str, object]';從台帳取用則 opsdrive.get("dilemma_zone"))

用法

黃燈的兩難區(Gazis, Herman, Maradudin 1960)。

以速度 v 位於停止線前 x 處時黃燈亮起:

能停住 ⇔ x ≥ x_c = v δ + v²/(2a) (δ = reaction、a = decel)

能通過 ⇔ x ≤ x_0 = v τ + ½ a₁ (τ − δ)² − (w + L) (τ = amber、a₁ = accel ≥ 0、w = 路口寬度、L = 車長)

(a₁ = 0 為基本形式。設定加速從反應之後持續到黃燈結束。若 τ ≤ δ 則加速項為 0。) max(x_0, 0) < x < x_c 為 兩難區(既停不住也通不過。x < 0 已越過停止線,故排除), x_c ≤ x ≤ x_0 為 可選區間(兩者皆可)。

日本法令的解讀: 《交通規則教則》附表1(黃)為「接近停止位置且無法安全停車時可繼續前進」 = 越過停止線即可(並無在黃燈期間駛出路口的義務)。依此解讀,以 intersection_width = car_length = 0 呼叫(x_0 = vτ)。GHM 的「駛出路口」是以沒有全紅時間為前提的嚴格解讀。

回傳值: x_stop_min = x_c、x_clear_max = x_0、dilemma((lo, hi) 或 None)、option(同)、length(兩難區長度,無則為 0)、v_critical(a₁ = 0 時使 x_c = x_0 的一組速度。無實根時為空 = 任何速度都沒有兩難)。v 為單一數值(陣列請用 np.vectorize 等)。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

• 演算法的正典(作者、年份)與用途見上面的族使用指南。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• poc_driving_decisions — py -3.11 examples/poc_driving_decisions.py

型別可銜接的下一個運算子(可接受 table 作為輸入)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

同類別(decide)

mirror_reflection_matrix · mirror_virtual_camera · mirror_aim_normal · convex_mirror_fov · mirror_blind_zone · check_sequence_score · signal_phase_plan · signal_state


*Provenance: drivedecide.py — DRIVE 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.