signal_phase_plan — DRIVE decide op

• Data kinds: none → table (an op determined by its arguments alone — it takes no image or data input)

• Call: import fullseye as fs; fs.ledger.signal_phase_plan(*, crossing_length: 'float', ped_green: 'float', walk_speed: 'float' = 1.0, ped_red_to_amber: 'float' = 2.0, amber: 'float' = 3.0, all_red: 'float' = 2.0, cross_green: 'float' = 20.0, cross_amber: 'Optional[float]' = None, cross_all_red: 'Optional[float]' = None, flash_fraction: 'float' = 1.0) -> 'Dict[str, object]' (to call the implementation directly, import drivedecide; drivedecide.signal_phase_plan(*, crossing_length: 'float', ped_green: 'float', walk_speed: 'float' = 1.0, ped_red_to_amber: 'float' = 2.0, amber: 'float' = 3.0, all_red: 'float' = 2.0, cross_green: 'float' = 20.0, cross_amber: 'Optional[float]' = None, cross_all_red: 'Optional[float]' = None, flash_fraction: 'float' = 1.0) -> 'Dict[str, object]'; from the registry, opsdrive.get("signal_phase_plan"))

Usage

Timetable of a 2-phase traffic signal (main road A and its parallel pedestrian signal, cross road B). Time 0 = start of A's green.

Pedestrian A: green [0, g) → flashing green [g, g + F) → red [g + F, cycle), F = flash_fraction · crossing_length / walk_speed

Vehicle A: green [0, t_y) → amber [t_y, t_y + Y) → red, t_y = g + F + Δ (Δ = ped_red_to_amber)

All-red [t_y + Y, t_y + Y + AR) → Vehicle B: green G_B → amber → all-red → end of cycle

Return value: intervals ({"veh_A", "ped_A", "veh_B"} → [(start, end, state)]), cycle, ped_flash_start = g, ped_flash_duration = F, ped_red_onset, amber_onset = t_y, red_onset, ped_red_to_amber = Δ. States are "green" / "flash" / "amber" / "red". flash_fraction = 1 means "a person who starts crossing at the start of flashing finishes crossing"; 0.5 is L/(2V) from a conference paper (SOURCES "flash_rule"). For the numeric defaults (amber 3 s, all-red 2 s, Δ 2 s, walking speed) see SOURCES.

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_state · predict_amber_onset


*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.