Autoware CARLA Scenario
A CARLA scenario testing framework for Autoware. Drives an Autoware ego vehicle through configurable scenarios in the CARLA simulator, evaluates pass/fail conditions tick-by-tick, and produces JSON results plus replayed video.
It is typically run against OpenDRIVE maps produced by the convert CLI of autoware_lanelet2_to_opendrive, but does not depend on it: the Lanelet2 and OpenDRIVE maps are loaded as two independent coordinate systems, related only through CARLA world coordinates.
Features
- Automated scenario execution against CARLA UE5 (
0.10.0andue5-dev), through the statically typed typesafe_carla client. - Hydra-composed configurations for map, server, ego, entities, and scenario.
- Glob-pattern batch execution of multiple scenarios in a single CARLA session.
- Condition system: timing, collisions, traffic signals, speed/standstill, lane/area position, waypoint crossing, plus logical (
And/Or/Not), latching (Sticky), and persistent combinators. - Action system: turns, lane changes, traffic-light state, on-demand camera attachment.
- Pluggable traffic backends: CARLA's TrafficManager by default,
traffic=nonefor an empty road, or a traffic simulator of your own through an entry point. - Coordinate transforms between Lanelet2, OpenDRIVE, and CARLA world frames.
- Hydra
lanelet_constraintsweeper plugin for parametric map-driven sweeps (resolvable without CARLA). - FastAPI + Uvicorn web viewer for browsing results, replaying videos, and triggering runs.
- Two-pass video recording (CARLA native log → replayed RGB camera → ffmpeg H.264).
scenario-setupdownloads CARLA's nightly build, which the runner then launches by itself.- pytest integration via
CarlaScenarioFixture(auto-skips when there is no CARLA to launch).
Installation
Python 3.10 to 3.14 (>=3.10,<3.15, the interpreters CI tests), Linux x86_64 or aarch64 (CARLA's server itself is x86_64 only; see installation). Install via the workspace root:
# From the repository root
uv sync --dev
The CARLA client is typesafe_carla (typesafe-carla on PyPI), a plain dependency — no extra to request — imported as import typesafe_carla.carla as carla. Its PyPI wheel carries the CPython package prebuilt, so the sync above compiles nothing (installation has the cases that build it instead). The official carla wheels, and CARLA 0.9.16 (UE4), are no longer supported. CARLA's simulator binary itself is downloaded by uv run scenario-setup (the nightly build, into ~/.autoware_carla_scenario/bin/carla); see the quick start.
Quick usage
The package provides three CLI entry points:
| Command | Framework | Purpose |
|---|---|---|
scenario |
Hydra | Run autonomous-driving scenario tests in CARLA |
scenario-setup |
argparse | Download CARLA (the nightly build) for scenario to launch |
detect-no-3d-model |
argparse | Detect lanelets without a matching 3D ground model in CARLA |
viewer |
FastAPI + Uvicorn | Web UI for browsing and monitoring scenario results |
Run a scenario
Uses a CARLA server already listening on the configured host/port, or launches one: CARLA_EXECUTABLE, else the one scenario-setup installed.
# Single scenario
uv run scenario scenario=intersection_passing/straight
# Batch run via glob pattern (sequential, single CARLA session)
uv run scenario scenario='intersection_passing/*'
# Other built-in scenarios
uv run scenario scenario=lane_change/left
uv run scenario scenario=temporary_stop/temporary_stop
uv run scenario scenario=traffic_light_compliance/traffic_light_compliance
Results (JSON + optional video) are written under the configured output directory and can be inspected interactively via:
uv run viewer
Detect missing 3D models
For diagnosing lanelets that do not project onto a CARLA ground mesh:
uv run detect-no-3d-model --map /path/to/map.xodr
Documentation
Full guides live under docs/ and are served by MkDocs:
docs/installation.md— system requirements, CARLA setup,uvinstall steps.docs/usage.md— every CLI command, configuration overrides, glob batch execution, viewer.docs/architecture.md— module layout, scenario lifecycle, condition/action system.docs/api.md— generated API reference.docs/development.md— contributing, testing, pre-commit, release flow.
Metadata
Release files for autoware-carla-scenario 9.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| autoware_carla_scenario-9.1.1.tar.gz | 862.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| autoware_carla_scenario-9.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.9 MB
Release files / autoware_carla_scenario-9.1.1.tar.gz
| Download URL | autoware_carla_scenario-9.1.1.tar.gz |
|---|---|
| Size | 862.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4bbc8d7d68736f7441d5f4d88bdd564a92cdfdf6fae71e3c75e45bbbb0254589
|
|
BLAKE2b-256 checksum How to use checksums |
026f0a0ab721f4a63dadfd6f397d9665f54ec80f45abde6d5882ec44c305400a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / autoware_carla_scenario-9.1.1-py3-none-any.whl
| Download URL | autoware_carla_scenario-9.1.1-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
07bf7096b67d4a45071a0cfcc5a392f781afa14ea4a4f2a679437e1631e29c7a
|
|
BLAKE2b-256 checksum How to use checksums |
aad0a41c1e1bfd6ea8658885e4690d209b38cd711a4ae7fd521798a814eebf34
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency log