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.