Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Get listed

Autonomous Driving11 MIN

How to Install Autoware on Ubuntu with ROS 2 (Source or Docker)

A complete Autoware installation guide covering the native Ubuntu 22.04 and ROS 2 Humble source build, Docker images for Humble and Jazzy, ARM64 support, CUDA choices, reproducibility, updates, and troubleshooting.

By CarCody Team

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The documented native installation baseline for Autoware is Ubuntu 22.04 with ROS 2 Humble. Choose a source build if you are developing Autoware packages or need to modify code. Choose Docker if you want a prebuilt, reproducible environment with fewer host dependencies. Autoware also publishes amd64 and arm64 images, including optional CUDA variants for GPU-accelerated perception.

Choose the installation method first

There are two practical ways to install Autoware with ROS 2:

As an Amazon Associate I earn from qualifying purchases.

  • Native source build: Autoware’s repositories are placed in a ROS 2 workspace, dependencies are resolved with rosdep, and the workspace is compiled with colcon.
  • Docker: You run a prebuilt Autoware environment, so the host does not need the complete Autoware dependency tree installed directly.

Use the source path when you will edit Autoware code, create or debug packages, or want a conventional ROS 2 workspace visible on the host. Use Docker when a fast first setup, clean host system, repeatable dependencies, or easy switching between environments matters more than direct source-level integration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Consideration Source build Docker
Host cleanliness Installs ROS development helpers and Autoware dependencies on Ubuntu. Keeps most Autoware dependencies inside the container; Docker itself and its integration packages still run on the host.
Initial setup Requires repository import, rosdep resolution, and a complete colcon build. Uses a prebuilt image, although the Docker setup still configures the required environment.
Source customization Best option for changing and rebuilding Autoware packages. Possible after mounting or copying a workspace, but less direct than a native checkout.
Architecture Depends on whether every package and dependency is available for your host architecture. Official images are published for amd64 and arm64.
GPU integration Configured directly on the host and ROS installation. Use the CUDA image and NVIDIA container integration when GPU workloads require it.
Version control You control the checked-out repositories and rebuilds. Image tags provide a convenient version boundary; pin a release tag for repeatability.

The steps below use the documented native baseline, Ubuntu 22.04 and ROS 2 Humble. Docker examples show Jazzy tags as published; replace jazzy with humble when your container uses ROS 2 Humble.

Prerequisites and version choices

Native baseline: Ubuntu 22.04 and ROS 2 Humble

The official prerequisite combination for a native Autoware workspace is Ubuntu 22.04 with ROS 2 Humble. Install ROS 2 Humble using the ROS 2 documentation before beginning the Autoware steps. The commands in this guide assume that /opt/ros/humble/setup.bash exists.

Autoware’s current development branch represents moving code. If you need a stable, repeatable build, check out a release tag after cloning. The documentation uses 1.9.0 as an example and identifies that release as compatible with ROS 2 Humble and Jazzy.

Choosing a Docker ROS distribution

Autoware’s image catalog includes tags for ROS 2 Humble and Jazzy, as well as runtime, development, and CUDA variants. The ROS distribution in the tag should match the distribution you intend to use inside the container. A Humble host is not automatically a reason to use a Humble container, but matching distributions reduces confusion when you share commands, workspace files, and package overlays.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Checking architecture and GPU needs

The Docker documentation explicitly lists amd64 and arm64 images. Select the image architecture supported by the machine or deployment target. CUDA is optional, not a general requirement for launching Autoware, but some perception features need GPU acceleration, including object detection and traffic-light detection or classification. Without an NVIDIA GPU, use a non-CUDA image and follow Autoware’s documented non-CUDA guidance for the features you plan to run.

Install Autoware from source

1. Install Git, colcon, rosdep, and the repository tool

Open a terminal on Ubuntu 22.04 and install the development helpers:

sudo apt -y update
sudo apt -y install git python3-colcon-common-extensions python3-rosdep
sudo rosdep init

The workspace import uses vcs. If the command is not already available through your ROS 2 installation, install the package that provides the version-control import command for your Ubuntu/ROS setup before continuing. The important requirement is that vcs import can read Autoware’s repository manifest.

2. Clone the Autoware repository and import its repositories

Clone the upstream repository and create the source directory:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
git clone https://github.com/autowarefoundation/autoware.git $HOME/autoware
cd $HOME/autoware
mkdir -p src
vcs import src < repositories/autoware.repos

This imports the repositories listed in repositories/autoware.repos into $HOME/autoware/src. The manifest controls the collection of packages that the workspace will build; it is not enough to clone only the top-level repository.

3. Pin a release when you need reproducibility

Immediately after cloning, the checkout is on the repository’s current development branch. That branch can change as packages and dependencies evolve. For a tutorial, deployment, or team build that must be recreated later, check out a release before importing or rebuilding the workspace:

git checkout 1.9.0

1.9.0 is the documented example of a release that works with ROS 2 Humble and Jazzy. If you choose another release, verify its supported ROS distributions in that release’s documentation rather than assuming compatibility.

4. Source ROS 2 and install package dependencies

Source ROS 2 Humble, refresh Ubuntu packages, update rosdep’s index, and resolve dependencies from the imported source tree:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
source /opt/ros/humble/setup.bash
sudo apt update && sudo apt upgrade
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro humble
  • source /opt/ros/humble/setup.bash places ROS 2 Humble’s commands and environment in the current shell.
  • rosdep update refreshes the package-to-system-dependency index used by rosdep.
  • --from-paths src scans the imported workspace.
  • --ignore-src avoids trying to install packages that are already present as source packages.
  • --rosdistro humble tells rosdep which ROS distribution’s dependency rules to use.

If rosdep reports a missing key or an unavailable package, do not silently substitute a package from another ROS distribution. Confirm that the shell is using Humble, that the selected Autoware checkout supports Humble, and that the host architecture has the dependency available.

5. Build the workspace in Release mode

Autoware uses colcon to build ROS 2 workspaces. Build with symlink installation and a Release CMake configuration:

colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

--symlink-install makes development iterations more convenient because many installed files point back to the workspace. -DCMAKE_BUILD_TYPE=Release selects an optimized build rather than a debug configuration. A full workspace build can take substantial time and disk space, so allow the command to finish and read the first package failure if it stops.

Rank #3
Waveshare UGV Beast ROS 2 Open-Source Off-Road Tracked AI Robot, Compatible with Jetson Orin Nano/NX, Dual Controllers, with Multi-Functional Driver Board and 360° Flexible Omnidirectional Pan-Tilt
  • There are 2 options for this Kit, this is the accessory version, which doesn't include Jetson Orin Nano 4GB Kit. For more details, please click the image2 to check the package content.
  • The UGV Beast ROS2 Kit is an AI robot designed for exploration and creation with excellent expansion potential, based on ROS 2 and equipped with Lidar and depth camera, seamlessly connecting your imagination with reality. Suitable for tech enthusiasts, makers, or beginners in programming, it is your ideal choice for exploring the world of intelligent technology.
  • Equipped with the high-performance Jetson Orin series computer to meet the challenges of complex strategies and functions, and inspire your creativity. Adopts dual-controller design, combines the high-level AI functions of the host controller with the high-frequency basic operations of the sub controller, making every operation accurate and smooth.
  • Easy to be controlled remotely via UGV Beast Web Application without downloading any software, just open your browser and start your journey. You can use the basic ROS 2 functions of the robot without installing a virtual machine on the PC.
  • Supports high-frame rate real-time video transmission and multiple AI Computer Vision functions, the UGV Beast is an ideal platform to realize your ideas and creativity!

6. Source the finished workspace

After a successful build, source the generated overlay in every shell that will run Autoware:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
source $HOME/autoware/install/setup.bash

Source the ROS 2 underlay first in a new terminal, then the Autoware overlay:

source /opt/ros/humble/setup.bash
source $HOME/autoware/install/setup.bash

Before launching a vehicle stack, apply Autoware’s official network-configuration guidance. The project also documents optional console settings that improve command-line usability; these are quality-of-life changes rather than build requirements.

Build only Autoware Core

If you need the smaller Autoware Core workspace rather than the complete imported tree, use the same basic tools and repository import, then restrict dependency resolution and compilation to src/core:

rosdep install -y --from-paths src/core --ignore-src --rosdistro humble
source /opt/ros/humble/setup.bash
colcon build --symlink-install --base-paths src/core --cmake-args -DCMAKE_BUILD_TYPE=Release

The --base-paths src/core option tells colcon to discover packages under that subtree instead of building every package in src. This is useful when your work concerns Core packages and you want to avoid compiling unrelated components. You still need a valid ROS 2 Humble underlay and the dependencies declared by the Core packages.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Install Autoware with Docker

1. Prepare the Docker environment with Ansible

The documented Docker setup uses the Autoware repository’s Ansible scripts to install Docker and configure the required environment. Clone the repository, install Ansible, install the required collection, and run the playbook:

git clone https://github.com/autowarefoundation/autoware.git
cd autoware
bash ansible/scripts/install-ansible.sh
ansible-galaxy collection install -f -r ansible-galaxy-requirements.yaml
ansible-playbook autoware.dev_env.install_docker --ask-become-pass

The playbook asks for the privilege-escalation password because Docker installation and host configuration require administrative access. Review the playbook output for the exact Docker and runtime components configured on your Ubuntu system.

Rank #4
Waveshare UGV Rover ROS 2 Open-Source 6 Wheels 4WD AI Robot, Compatible with Jetson Orin Nano/NX, Dual Controllers, with Multi-Functional Driver Board and 360° Flexible Omnidirectional Pan-Tilt
  • There are 2 options for this Kit, this is the accessory version, which doesn't include Jetson Orin Nano 4GB Kit. For more details, please click the image2 to check the package content.
  • The UGV Rover ROS2 Kit is an AI robot designed for exploration and creation with excellent expansion potential, based on ROS 2 and equipped with Lidar and depth camera, seamlessly connecting your imagination with reality.
  • Suitable for tech enthusiasts, makers, or beginners in programming, it is your ideal choice for exploring the world of intelligent technology.
  • Equipped with the high-performance Jetson Orin series computer to meet the challenges of complex strategies and functions, and inspire your creativity. Adopts dual-controller design, combines the high-level AI functions of the host controller with the high-frequency basic operations of the sub controller, making every operation accurate and smooth.
  • Easy to be controlled remotely via UGV Rover Web Application without downloading any software, just open your browser and start your journey. You can use the basic ROS 2 functions of the robot without installing a virtual machine on the PC. Supports high-frame rate real-time video transmission and multiple AI Computer Vision functions, the UGV Rover is an ideal platform to realize your ideas and creativity!

2. Skip NVIDIA support on a non-NVIDIA machine

If the machine does not need NVIDIA container support, run the playbook with the documented skip tag:

ansible-playbook autoware.dev_env.install_docker --skip-tags nvidia --ask-become-pass

Skipping NVIDIA setup does not make GPU-dependent perception work without a GPU. It simply avoids installing or configuring the NVIDIA-specific Docker integration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

3. Pull a prebuilt image

Autoware publishes multi-architecture images on GitHub Container Registry. These examples pull a full non-CUDA Jazzy runtime and a CUDA-enabled Jazzy image:

docker pull ghcr.io/autowarefoundation/autoware:universe-jazzy
docker pull ghcr.io/autowarefoundation/autoware:universe-cuda-jazzy

The image references are:

Replace jazzy with humble for the corresponding Humble images. The catalog also distinguishes runtime and development images, so choose the image type that matches whether you only need to run Autoware or intend to work inside a development environment.

4. Pin the image for stable deployments

An unqualified distribution tag can move as images are rebuilt. For repeatable deployments, use a stable release tag such as:

docker pull ghcr.io/autowarefoundation/autoware:universe-jazzy-1.9.0

The release suffix is an example of the documented naming pattern. Pin the ROS distribution and release together; do not use a Jazzy image while following Humble-specific package instructions inside the container.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

5. Work with source changes inside Docker

A prebuilt image removes the initial dependency installation burden, but it does not eliminate the need to rebuild when you change source packages. If dependencies changed after an image was created, the documented workflow is to update apt packages, refresh rosdep, reinstall dependencies from src, and run the same Release-mode colcon build:

sudo apt update && sudo apt upgrade
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro humble
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

Run these commands in the environment that contains the workspace. For a Jazzy container, replace the rosdep distribution argument with jazzy and source the matching ROS setup file.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

AMD64, ARM64, and CUDA decisions

AMD64 and ARM64

The published Docker catalog explicitly supports amd64 and arm64. On an arm64 computer, pull an arm64-capable tag and confirm that the packages you plan to use are available for that architecture. A multi-architecture manifest lets Docker select the matching image variant, but it cannot make an unavailable third-party dependency portable.

For native source builds, architecture support is determined by Ubuntu, ROS 2, Autoware’s repositories, and every system dependency together. If a source build fails only on arm64, separate an Autoware compilation error from an unavailable binary or system package before changing the ROS distribution.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

When to choose a CUDA image

Choose a CUDA image only when you have a compatible NVIDIA GPU and need features that use GPU acceleration. The documentation identifies object detection and traffic-light detection or classification among the workloads that may require acceleration. A CUDA tag alone is not a substitute for a working host driver and NVIDIA container configuration.

For CPU-only operation or a machine without NVIDIA hardware, use the non-CUDA image. Some perception pipelines may then be unavailable, slower, or require the project’s documented no-CUDA configuration; the absence of CUDA does not imply that every Autoware feature runs unchanged.

Updating an existing installation

Updating a moving source workspace

For a development checkout that follows current code, update the top-level repository, refresh the imported repositories, update dependencies, and rebuild:

cd $HOME/autoware
git pull
vcs pull src
sudo apt update && sudo apt upgrade
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro humble
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

Because the repository manifest can change, vcs pull src should be part of the update rather than updating only the top-level checkout. If a manifest now refers to a moved or removed dependency, a clean re-import may be required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Updating a pinned installation

For a release-pinned source workspace, review release notes and deliberately change the checkout to the next tag instead of pulling an arbitrary development branch. For Docker, pull the exact release-tagged image you selected and record the tag in your deployment files. This makes it possible to identify whether a later failure came from your application changes or from an environment update.

Troubleshooting common failures

ROS commands or rosdep cannot be found

  • Confirm that the ROS 2 distribution is installed.
  • Run source /opt/ros/humble/setup.bash in the current shell.
  • Check that your checkout and rosdep command use the same distribution.

The repository import fails

  • Run vcs import from the directory containing the repositories folder.
  • Check network access and Git authentication if a repository cannot be downloaded.
  • If the manifest references repositories that no longer exist, remove the incomplete src contents and re-import from the selected release checkout.

rosdep reports unresolved dependencies

  • Run rosdep update and retry.
  • Verify the --rosdistro value matches the sourced ROS installation.
  • Check whether the selected release supports your Ubuntu version and architecture.
  • Read the first unresolved key; later errors can be consequences of that missing dependency.

colcon stops during compilation

  • Capture the first package that fails, not only the final summary.
  • Confirm that dependencies were installed from the same workspace and ROS distribution.
  • After correcting the cause, rerun the Release-mode command. If the workspace is inconsistent after a major repository change, re-import the affected repositories or recreate the build and install directories.

Docker starts but a GPU feature fails

  • Verify that the host has a supported NVIDIA driver and that NVIDIA container integration was configured.
  • Confirm that you pulled a CUDA tag rather than a non-CUDA runtime image.
  • If the machine has no NVIDIA GPU, switch to the non-CUDA path and consult Autoware’s guidance for operating without CUDA.

Runtime networking does not work

A successful build does not complete Autoware’s runtime configuration. Follow the project’s official network-configuration instructions before launching nodes, and verify container networking separately from ROS package discovery. Treat network configuration as an operational step, not as evidence that the source build failed.

Which path should you use?

  • Choose source if you are writing Autoware packages, debugging internals, need immediate access to every imported repository, or want normal colcon overlays.
  • Choose Docker if you want a prebuilt environment, need to keep the host clean, are sharing a known-good setup with a team, or are targeting amd64 and arm64 through published images.
  • Choose a pinned source tag or image tag when a tutorial, experiment, simulation, or vehicle deployment must be reproducible.
  • Choose CUDA only when your planned perception workload needs GPU acceleration and the host can provide the required NVIDIA runtime.

The dependable starting point is Ubuntu 22.04 with ROS 2 Humble for a native build. Docker broadens the practical choices to Humble or Jazzy and provides amd64 and arm64 images, while release tags such as 1.9.0 give you a fixed reference instead of a moving development branch.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Autonomous DrivingAutowareDockerroboticsROS 2Ubuntu

Read next

Thanks for visiting Carcody

Carcody.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.co

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.