yield_maneuver_check — DRIVE decide op

• Data kinds: table → table

• Call: import fullseye as fs; fs.ledger.yield_maneuver_check(trajectory, *, t_approach: 'float', t_passed: 'float', intersections=(), near_margin: 'float' = 30.0, left_tol: 'float' = 1.0, stop_speed: 'float' = 0.1, car_length: 'float' = 4.5) -> 'Dict[str, object]' (to call the implementation directly, import drivedecide; drivedecide.yield_maneuver_check(trajectory, *, t_approach: 'float', t_passed: 'float', intersections=(), near_margin: 'float' = 30.0, left_tol: 'float' = 1.0, stop_speed: 'float' = 0.1, car_length: 'float' = 4.5) -> 'Dict[str, object]'; from the registry, opsdrive.get("yield_maneuver_check"))

Usage

Scores the ego vehicle's behavior when an emergency vehicle approaches, against Road Traffic Act Art. 40.

Article 40(1): at or near an intersection → avoid the intersection, keep to the left side of the road and stop temporarily. Article 40(2): otherwise → keep to the left side of the road and yield the way (stopping is not required). (Keeping to the right where keeping left on a one-way road would obstruct is not handled.)

trajectory: {"t", "x", "y", "v"}. x = position of the front end along the road, y = distance between the car's left side and the road's left edge (≥ 0), v = speed. intersections = [(x_in, x_out), ...] (extent of each intersection). The car occupies [x − car_length, x]. t_approach = time by which the approach should be noticed, t_passed = time the emergency vehicle passed.

Checks (all thresholds are assumptions; the law does not specify numbers):

• "Near" = there is an intersection such that at t_approach the ego vehicle's front end is within [x_in − near_margin, x_out + near_margin].

• "Keep to the left" = y ≤ left_tol during the period. "Stop temporarily" = there is a step during the period with v ≤ stop_speed.

• "Avoid the intersection" = at the steps where the car is stopped during the period (v ≤ stop_speed), the body does not overlap the extent of an intersection.

Returns: case ("40-1" / "40-2"), violations (each {"rule", "detail", "article"}), ok, min_y, stopped, stopped_in_intersection.

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• poc_driving_decisions — py -3.11 examples/poc_driving_decisions.py

Ops the type connects to (they accept table as input)

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

Same category (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 operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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