occlusion_reveal_distance — DRIVE traffic op

• 資料種類:any → scalar

• 呼叫: import fullseye as fs; fs.ledger.occlusion_reveal_distance(ego_xy, ego_heading: 'float', parked_box, emerge_xy) -> 'float'(要直接呼叫實作,import drivetraffic; drivetraffic.occlusion_reveal_distance(ego_xy, ego_heading: 'float', parked_box, emerge_xy) -> 'float';從台帳取用則 opsdrive.get("occlusion_reveal_distance"))

用法

路邊停放車輛(有朝向的盒子)背後的點 emerge_xy 從本車視點首次可見時的縱向距離。

自車的眼睛沿 p(s) = ego_xy + s h(h = (cos ψ, sin ψ),s ≥ 0 = 前進量)移動。若視線 = 線段 p(s) → e 不穿過箱體內部則可見。箱體為凸,因此「不可見的 s」構成一個區間,其端點是視線擦過箱體角點處,或路徑穿過箱體邊處。對每個角點 c,把直線 e + λ(c − e) 與路徑的交點 s_c 作為 2×2 聯立方程求解(閉式),按候選 {0, s_c, 路徑與邊的交點} 由小到大檢查是否可見,在第一個可見的 s* 處返回 d = h · (e − p(s*))。

軸平行的例子(路徑 y = 0,朝 +x,形成遮蔽的角點 c,e 在箱體另一側): d = (e_x − c_x) · e_y / (e_y − c_y)。

parked_box = (cx, cy, length, width, yaw)(中心、全長、全寬、朝向)。若一開始就可見,則為 s* = 0 時的縱向距離; 無論前進多遠都看不見(e 在箱體內部)則為 inf。d 為負(看見時已經越過 e)也照原樣返回。擦過角點的視線視為「可見」(把箱體按相對 1e-9 縮小後判定,以免浮點抖動使判定分裂)。

Raises ValueError: 形狀、非有限值、尺寸 ≤ 0。

參考(範例資料、文獻)

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

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

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

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

• poc_driving_traffic — py -3.11 examples/poc_driving_traffic.py

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

spin_from_marker_sequence · carla_transform_matrix · carla_pose_to_world · carla_camera_pose · carla_xy_yaw · carla_scene_load · town_chain · osm_parse

同類別(traffic)

idm_accel · idm_equilibrium_gap · idm_platoon_simulate · driver_style · lateral_wobble · ou_estimate · social_force_step · pedestrian_crossing


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

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