Skip to content

CARLA Simulation#

Run the full modular Autoware stack against CARLA 0.9.16 in closed loop.

Requirements#

Host (no ROS install required):

  • amd64 and Ubuntu 22.04
  • Docker with NVIDIA Container Toolkit
  • NVIDIA GPU and Vulkan ICD at /usr/share/vulkan/icd.d/nvidia_icd.json
  • Host X access only for optional windowed rendering; offscreen mode is default

Container images use ROS 2 Humble (including the default sensing-perception-cuda Autoware image). CARLA 0.9.16 uses Unreal Engine 4.26 and is not validated on Ubuntu 24.04.

Setup#

Commands on this page are shown as installed by the release installer. From a source checkout, prefix them with ./ and run them from the repository root.

Install Docker and the NVIDIA toolkit once:

openadkit setup --gpu --verify

Activate the Docker group membership added by the installer before running Docker without sudo. Either log out and back in, or run:

newgrp docker

CARLA is a curated CLI deployment in both installed and source-checkout runtimes. It is Humble-only and requires --gpu. Setup configures NVIDIA and the DDS UDP buffers; run downloads the Town01 map.

Run#

openadkit run carla-simulation --gpu

run checksum-validates the Town01 assets, starts CARLA and the modular stack, and waits for Compose readiness. If startup fails after containers are created, use the stop command below to release their GPU and host resources.

sensor_mapping.yaml enables LiDAR, IMU, and GNSS by default. Camera entries are available but commented out.

Access the Visualizer#

Open your browser and navigate to:

https://localhost:6080/vnc.html

Use the default password openadkit. The connection uses a self-signed certificate; dismiss the browser privacy warning to continue.

Remote Access

The visualizer runs under network_mode: host, so ports: is ignored and the loopback bind (127.0.0.1:6080) lives in the visualizer entrypoint. To reach noVNC from another machine, either forward the port over SSH:

ssh -L 8080:localhost:6080 <user>@<host>
# then open https://localhost:8080/vnc.html

or put a TLS-terminating reverse proxy in front of 127.0.0.1:6080 and set a strong REMOTE_PASSWORD. For manifest-driven deployments, put it in ignored config.local.env; standalone deployments document their own environment handling. base/runtime.env is reserved for container ROS/DDS variables. Editing docker-compose.yaml to add a ports: mapping has no effect under host networking.

Set a goal with 2D Goal Pose and select Auto in RViz2.

Stop#

openadkit stop carla-simulation

If autonomous mode is unavailable, inspect /system/command_mode/availability and /diagnostics_graph/status rather than overriding availability. For common Docker, GPU, and visualizer issues, see Troubleshooting.