control-traffic
carla-simulator/carla/Skills/python-api/control-traffic/SKILL.md
Tunes the CARLA Traffic Manager that drives autopilot vehicles — global and per-vehicle speed, following distance, running lights/signs, lane-change behaviour, lane offset, TM-managed lights, deterministic seed, hybrid physics, and TM sync mode. Use when the user asks to "make the traffic faster/slower", "let cars run red lights", "keep more distance", "stop lane changes", "make traffic deterministic", or otherwise change how autopilot cars behave. For manually driving one car, use control-vehicle.
What's in it
- Control the Traffic Manager
- Instructions
- Step 1: Check prerequisites
- Step 3: Tune
- Step 4: Verify
- Examples
- Troubleshooting
- Outputs
--- name: control-traffic description: Tunes the CARLA Traffic Manager that drives autopilot vehicles — global and per-vehicle speed, following distance, running lights/signs, lane-change behaviour, lane offset, TM-managed lights, deterministic seed, hybrid physics, and TM sync mode. Use when the user asks to "make the traffic faster/slower", "let cars run red lights", "keep more distance", "stop lane changes", "make traffic deterministic", or otherwise change how autopilot cars behave. For manually driving one car, use control-vehicle. license: MIT compatibility: Any OS with the CARLA PythonAPI installed for the active interpreter and a reachable, already-running CARLA server with autopilot vehicles (spawn-vehicles). Does NOT need UE4_ROOT. Tested against CARLA 0.9.16. metadata: group: python-api prerequisites: scripts/check_env.sh reference: references/traffic-manager.md --- # Control the Traffic Manager > **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. Shape how **autopilot** vehicles drive — globally (all cars on a TM port) or per-vehicle. This is the counterpart to [`control-vehicle`](../control-vehicle/SKILL.md): that skill drives one car manually; this one tunes the autonomous traffic. It affects cars enrolled in autopilot (see [`spawn-vehicles`](../spawn-vehicles/SKILL.md)), on the matching `--tm-port`. ## Instructions ``` Progress: - [ ] Step 1: Check prerequisites (bash scripts/check_env.sh), clear FAILs - [ ] Step 2: Have autopilot vehicles on the TM port (spawn-vehicles) - [ ] Step 3: Apply global and/or per-vehicle settings - [ ] Step 4: Watch the change on a rendered server ``` Commands need `CARLA_HOST`/`CARLA_PORT`/`TM_PORT` from `scripts/env.sh`. Use the **same `--tm-port`** the vehicles were spawned on (default 8000). ### Step 1: Check prerequisites ```bash bash scripts/check_env.sh ``` ### Step 3: Tune ```bash source scripts/env.sh # GLOBAL: all traffic 30% faster than the limit, keep 3 m, deterministic python3 scripts/traffic.py global --speed-diff -30 --distance 3 --seed 42 # EVERY car: run 50% of red lights, allow lane changes python3 scripts/traffic.py all --ignore-lights 50 --auto-lane-change on # ONE car (the ego's neighbour): crawl, hug the right, TM manages its lights python3 scripts/traffic.py vehicle --id 42 --speed-diff 60 --lane-offset 0.5 --lights on # make the ego's autopilot reckless python3 scripts/traffic.py vehicle --role hero --ignore-vehicles 40 --ignore-signs 100 # TM sync (only alongside a synchronous world — see set-world-settings) python3 scripts/traffic.py sync on ``` ### Step 4: Verify Watch the traffic on a rendered server. Settings are write-only on the TM (no read-back), so the command reports what it set and to how many vehicles. ## Examples **Example 1: faster traffic** User says: "make the traffic move faster" `global --speed-diff -40` (40% above the limit). Negative = faster. **Example 2: chaos for testing** User says: "make cars run lights and ignore each other" `all --ignore-lights 100 --ignore-vehicles 60` — expect collisions (that's the point of the test). **Example 3: deterministic traffic run** User says: "same traffic behaviour every run" `global --seed 42`, in synchronous mode (`sync on` + set-world-settings), spawn with a seed. Seed + sync is what makes it reproducible. ## Troubleshooting **Problem: nothing changes** Cause: cars aren't on this TM port, or aren't on autopilot, or you set the ego (which you're driving manually). Solution: match `--tm-port` to the spawn; ensure autopilot is on (spawn-vehicles default); target autopilot cars. **Problem: cars froze after `sync on`** Cause: TM sync without a synchronous, ticked world (or vice-versa). Solution: keep TM sync and world sync in step and tick the world (set-world-settings). **Problem: `--speed-diff 30` made them slower, not faster** Cause: the value is % *below* the limit. Solution: use a negative value to go faster (`-30` = 30% above the limit). **Problem: collisions everywhere** Cause: high `--ignore-vehicles` / `--ignore-lights`. Solution: lower them; 0 restores full caution. ## Outputs Traffic Manager behaviour state (global + per-vehicle). No file, no read-back; the command reports what it applied. Detail (every setting, the speed-difference sign, hybrid physics, determinism, sync coupling) in [references/traffic-manager.md](references/traffic-manager.md).
More agent context in carla-simulator/carla
60 other files this repository gives its agents.
AGENTS.md
Skill
- create-leaderboard-routeSkills/leaderboard/create-leaderboard-route/SKILL.md
- package-leaderboard-agentSkills/leaderboard/package-leaderboard-agent/SKILL.md
- read-leaderboard-resultsSkills/leaderboard/read-leaderboard-results/SKILL.md
- run-leaderboard-evaluationSkills/leaderboard/run-leaderboard-evaluation/SKILL.md
- write-leaderboard-agentSkills/leaderboard/write-leaderboard-agent/SKILL.md
- bounding-boxesSkills/python-api/bounding-boxes/SKILL.md
- control-lightsSkills/python-api/control-lights/SKILL.md
- control-spectatorSkills/python-api/control-spectator/SKILL.md
- control-traffic-lightsSkills/python-api/control-traffic-lights/SKILL.md
- control-vehicleSkills/python-api/control-vehicle/SKILL.md
- create-sensorSkills/python-api/create-sensor/SKILL.md
- debug-drawSkills/python-api/debug-draw/SKILL.md
- debug-navmeshSkills/python-api/debug-navmesh/SKILL.md
- load-mapSkills/python-api/load-map/SKILL.md
- map-waypointsSkills/python-api/map-waypoints/SKILL.md
- navigate-toSkills/python-api/navigate-to/SKILL.md
- query-recordingSkills/python-api/query-recording/SKILL.md
- read-sensorSkills/python-api/read-sensor/SKILL.md
- record-simulationSkills/python-api/record-simulation/SKILL.md
- replay-recordingSkills/python-api/replay-recording/SKILL.md
- set-weatherSkills/python-api/set-weather/SKILL.md
- set-world-settingsSkills/python-api/set-world-settings/SKILL.md
- spawn-vehiclesSkills/python-api/spawn-vehicles/SKILL.md
- spawn-walkersSkills/python-api/spawn-walkers/SKILL.md
- telemetrySkills/python-api/telemetry/SKILL.md
- toggle-env-objectsSkills/python-api/toggle-env-objects/SKILL.md
- world-dataSkills/python-api/world-data/SKILL.md
- add-ros-message-typeSkills/ros2/add-ros-message-type/SKILL.md
- add-ros-publisherSkills/ros2/add-ros-publisher/SKILL.md
- visualize-ros-rvizSkills/ros2/visualize-ros-rviz/SKILL.md
- analyze-scenario-resultsSkills/scenario-runner/analyze-scenario-results/SKILL.md
- create-scenarioSkills/scenario-runner/create-scenario/SKILL.md
- run-openscenarioSkills/scenario-runner/run-openscenario/SKILL.md
- run-route-scenarioSkills/scenario-runner/run-route-scenario/SKILL.md
- run-scenarioSkills/scenario-runner/run-scenario/SKILL.md
- create-scenic-scenarioSkills/scenic/create-scenic-scenario/SKILL.md
- run-scenic-scenarioSkills/scenic/run-scenic-scenario/SKILL.md
- check-feature-supportSkills/setup/check-feature-support/SKILL.md
- download-carlaSkills/setup/download-carla/SKILL.md
- install-leaderboardSkills/setup/install-leaderboard/SKILL.md
- install-python-apiSkills/setup/install-python-api/SKILL.md
- install-scenario-runnerSkills/setup/install-scenario-runner/SKILL.md
- install-scenicSkills/setup/install-scenic/SKILL.md
- build-carla-ue4Skills/ue4/build-carla-ue4/SKILL.md
- import-carla-mapSkills/ue4/import-carla-map/SKILL.md
- import-carla-propSkills/ue4/import-carla-prop/SKILL.md
- import-carla-vehicleSkills/ue4/import-carla-vehicle/SKILL.md
- import-carla-walkerSkills/ue4/import-carla-walker/SKILL.md
- package-carla-ue4Skills/ue4/package-carla-ue4/SKILL.md
- run-carla-serverSkills/ue4/run-carla-server/SKILL.md
- build-carla-ue58Skills/ue58/build-carla-ue58/SKILL.md
- carla-vehicle-authoringSkills/ue58/carla-vehicle-authoring/SKILL.md
- import-carla-ue58-mapSkills/ue58/import-carla-ue58-map/SKILL.md
- import-carla-ue58-propSkills/ue58/import-carla-ue58-prop/SKILL.md
- import-carla-ue58-walkerSkills/ue58/import-carla-ue58-walker/SKILL.md
- package-carla-ue58Skills/ue58/package-carla-ue58/SKILL.md
- run-autoware-ue58Skills/ue58/run-autoware-ue58/SKILL.md
- run-carla-ue58-serverSkills/ue58/run-carla-ue58-server/SKILL.md
- check-ue5-limitationsSkills/ue5/check-ue5-limitations/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

