Control traffic lights
Paths. scripts/… and references/… below are relative to the
directory holding this SKILL.md. Your working directory is the user's
project, not that directory, so prefix them with its absolute path or the
command is not found.
Drive the actual traffic.traffic_light actors: set states, freeze them, tune
phase timing. Not to be confused with control-traffic
— that is the Traffic Manager governing how autopilot vehicles drive; this is
the lights themselves.
Instructions
Progress:
- [ ] Step 1: Check prerequisites (bash scripts/check_env.sh), clear FAILs
- [ ] Step 2: list to see lights/states; get a junction id from map-waypoints if needed
- [ ] Step 3: set / freeze / timing / reset (all, by id, by junction, or nearest)
Commands need CARLA_HOST/CARLA_PORT from scripts/env.sh. Negative
coordinates: use --near=-24,-57,1.
Step 1: Check prerequisites
bash scripts/check_env.sh
Step 3: Control
source scripts/env.sh
python3 scripts/traffic_lights.py list # ids, states, timing
# freeze the whole grid green (classic "green wave" / free-flow test)
python3 scripts/traffic_lights.py freeze on --state green
python3 scripts/traffic_lights.py freeze off # back to normal cycling
# set one light, or all in a junction, or the nearest to a point
python3 scripts/traffic_lights.py set --state red --id 42
python3 scripts/traffic_lights.py set --state green --junction 838
python3 scripts/traffic_lights.py set --state red --near=-24,-57,1
# phase timing (seconds) on all lights
python3 scripts/traffic_lights.py timing --green 20 --yellow 3 --red 10 --all
python3 scripts/traffic_lights.py reset # normal cycle again
Examples
Example 1: let traffic flow
User says: "make all the lights green so cars don't stop"
freeze on --state green. All lights hold green until freeze off / reset.
Example 2: red light at one junction
User says: "make the crossroads in the middle red"
map-waypoints junctions --arms 4 → central junction id → set --state red --junction <id>.
Example 3: faster cycle
User says: "shorten the light cycle"
timing --green 10 --yellow 2 --red 6 --all.
Troubleshooting
Problem: lights snap back after set
Cause: they keep cycling; set changes the current state, the cycle continues.
Solution: freeze on to hold a state, or timing to change the cycle itself.
Problem: --junction returns nothing
Cause: wrong junction id, or that junction has no signalised lights.
Solution: get the id from map-waypoints junctions; not all junctions are lit.
Problem: vehicles still stop at a green I set
Cause: they may be on a different phase, or autopilot reacts to its own light.
Solution: freeze on --state green affects all; or let cars ignore lights via
control-traffic (ignore-lights).
Outputs
Traffic-light state on the server (states/freeze/timing). No file. list reports
current states and timings.
Detail (states, freeze semantics, groups, per-junction/waypoint lookup) in
references/traffic-lights.md.