occlusion_reveal_distance — DRIVE traffic op

• Datenarten: any → scalar

• Aufruf: import fullseye as fs; fs.ledger.occlusion_reveal_distance(ego_xy, ego_heading: 'float', parked_box, emerge_xy) -> 'float' (die Implementierung direkt: import drivetraffic; drivetraffic.occlusion_reveal_distance(ego_xy, ego_heading: 'float', parked_box, emerge_xy) -> 'float'; aus dem Register: opsdrive.get("occlusion_reveal_distance"))

Verwendung

Längsabstand, bei dem ein Punkt emerge_xy hinter einem am Fahrbahnrand geparkten Fahrzeug (orientierte Box) vom Auge des Ego-Fahrzeugs aus zum ersten Mal sichtbar wird.

Das Auge des Ego-Fahrzeugs bewegt sich entlang p(s) = ego_xy + s h (h = (cos ψ, sin ψ), s ≥ 0 = Vorwärtsweg). Es sieht e, wenn die Sichtlinie = Strecke p(s) → e nicht durch das Innere der Box verläuft. Da die Box konvex ist, bilden die „nicht sichtbaren s“ ein Intervall, dessen Enden dort liegen, wo die Sichtlinie eine Ecke der Box streift oder wo der Fahrweg eine Kante der Box kreuzt. Für jede Ecke c wird der Schnittpunkt s_c der Geraden e + λ(c − e) mit dem Fahrweg als 2×2-System gelöst (geschlossene Form); die Kandidaten {0, s_c, Schnittpunkte des Fahrwegs mit den Kanten} werden in aufsteigender Reihenfolge auf Sichtbarkeit geprüft, und beim ersten sichtbaren s* wird d = h · (e − p(s*)) zurückgegeben.

Achsparalleles Beispiel (Fahrweg y = 0, Richtung +x, schattenwerfende Ecke c, e jenseits der Box): d = (e_x − c_x) · e_y / (e_y − c_y).

parked_box = (cx, cy, length, width, yaw) (Mitte, Gesamtlänge, Gesamtbreite, Ausrichtung). Ist es von Anfang an sichtbar, der Längsabstand bei s* = 0; ist es nie sichtbar, egal wie weit man fährt (e im Inneren der Box), inf. Ein negatives d (e ist beim Sichtbarwerden schon passiert) wird unverändert zurückgegeben. Eine Sichtlinie, die eine Ecke streift, gilt als „sichtbar“ (die Box wird vor der Prüfung relativ um 1e-9 verkleinert, damit Gleitkomma-Schwankungen die Entscheidung nicht aufspalten).

Raises ValueError: Form, nicht endlich, Abmessung ≤ 0.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• poc_driving_traffic — py -3.11 examples/poc_driving_traffic.py

Typkompatible Folge-Operatoren (nehmen scalar als Eingabe)

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

Gleiche Kategorie (traffic)

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


*Provenance: drivetraffic.py — DRIVE Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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