decide op• Data kinds: table → table
• Call: import fullseye as fs; fs.ledger.bus_departure_yield_check(trajectory, *, t_signal: 'float', bus_rear_x: 'float', merge_time: 'float' = 4.0, reaction: 'float' = 1.0, sudden_decel: 'float' = 3.0, standoff: 'float' = 2.0) -> 'Dict[str, object]' (to call the implementation directly, import drivedecide; drivedecide.bus_departure_yield_check(trajectory, *, t_signal: 'float', bus_rear_x: 'float', merge_time: 'float' = 4.0, reaction: 'float' = 1.0, sudden_decel: 'float' = 3.0, standoff: 'float' = 2.0) -> 'Dict[str, object]'; from the registry, opsdrive.get("bus_departure_yield_check"))
Scores whether the ego vehicle behind obstructed the lane change of a bus that signaled departure from a bus stop (Road Traffic Act Art. 31-2).
trajectory: {"t", "x", "v"} (position of the ego vehicle's front end, in the lane the bus is entering). The bus's rear end is bus_rear_x (for merge_time seconds after the signal it is regarded as stopped / pulling out slowly).
• Duty to yield: from the ego vehicle's (x_s, v_s) at the signal time t_s, the deceleration needed to stop standoff short of the bus's rear end with constant deceleration after reaction time ρ is a_req = v²/(2(D − vρ)), D = bus_rear_x − standoff − x_s (∞ if D ≤ vρ). If a_req ≤ sudden_decel, it can yield without sudden change of speed → duty to yield (must_yield).
• Obstructed: at some point in [t_s, t_s + merge_time] the ego vehicle's front end passed the bus's rear end (drew alongside / overtook).
• Violation = duty to yield AND obstructed.
The "sudden" threshold 3.0 m/s², reaction 1.0 s, margin 2 m and merge time 4 s are assumptions (the law gives no numbers). Return value: a_required, must_yield, obstructed, violation, article, detail.
• 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.
• poc_driving_decisions — py -3.11 examples/poc_driving_decisions.py
table as input)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 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.