Skip to content
cccskills
FreePublished on GitHub

control-traffic

Adjust how autopilot vehicles behave in CARLA, including speed, following distance, traffic light responses, and lane changes. Apply settings across traffic or to individual vehicles, and configure seeds and synchronization for repeatable traffic runs.

OriginalShow the original 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.

See how to install

Good for

  • Adjust traffic speed and following distance
  • Create traffic that ignores lights or other vehicles
  • Change lane behavior for an individual autopilot vehicle
  • Configure seeds and synchronization for repeatable traffic

Files included (5)

  • SKILL.md4.5 KB
  • references/traffic-manager.md3.2 KB
  • scripts/check_env.sh2.1 KB
  • scripts/env.sh1.2 KB
  • scripts/traffic.py8.1 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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: that skill drives one car manually; this one tunes the autonomous traffic. It affects cars enrolled in autopilot (see spawn-vehicles), 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 scripts/check_env.sh

Step 3: Tune

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.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Add a message type to CARLA's native ROS 2 interface. Create its C++ data structure, serialization code for transmission, type identity hash, registration, and tests, with Docker-based hash calculation and build checks.

  • Adding a standard ROS 2 message type missing from CARLA
  • Defining a custom carla_msgs message
  • Investigating type-hash warnings
carla-simulator/carla14.5KUpdated Oct 18, 2026

Extend CARLA’s native ROS 2 interface to publish sensor data or receive vehicle commands. Covers topic implementation, registration, data connections, and verification, plus adding middleware, the communication layer used to exchange messages.

  • Publish obstacle sensor data to ROS 2
  • Add a topic for vehicle speed commands
  • Integrate another communication middleware
carla-simulator/carla14.5KUpdated Oct 18, 2026

Summarize ScenarioRunner results to see which scenarios passed and which checks failed. Compare runs before and after changes, or analyze recorded driving to produce measurements and plots of vehicle distance and deviation from the lane center.

  • Checking scenario pass and fail results
  • Comparing results before and after controller changes
  • Plotting vehicle distances from a recorded run
carla-simulator/carla14.5KUpdated Oct 18, 2026

audit-carla-docs

FreeSummary

Checks a local CARLA checkout for missing API documentation, outdated references, broken links, and pages absent from navigation. Produces a grouped Markdown report without building the project or running the simulator.

  • Reviewing documentation before a release
  • Finding missing or outdated API references
  • Checking broken links and navigation gaps
carla-simulator/carla14.5KUpdated Oct 18, 2026

bounding-boxes

FreeSummary

Read and display CARLA object bounding boxes, then project them onto a camera image as 2D rectangles. Export an annotated PNG and box coordinates in JSON for object detection annotation work.

  • Adding vehicle boxes to a camera image
  • Exporting box coordinates for detection annotations
  • Checking vehicle dimensions
carla-simulator/carla14.5KUpdated Oct 18, 2026

build-carla-ue4

FreeSummary

Builds CARLA's ue4-dev branch on Linux, producing the Unreal Engine 4.26 editor, server modules, and an installed Python client package. Fetches required content, optionally compiles native ROS 2 support, and verifies the build against a source-built server.

  • Building CARLA ue4-dev from source
  • Compiling CARLA with native ROS 2 support
  • Building the Python client for an existing environment
carla-simulator/carla14.5KUpdated Oct 18, 2026

See all skills by carla-simulator

Report a problem with this skill