## 1. Project Overview & Quickstart (autowarefoundation/autoware)
## File: README.md
# Autoware - the world's leading open-source software project for autonomous driving
Autoware is the world's leading open-source autonomous driving framework. Autoware provides a comprehensive, production-ready software stack designed to accelerate the commercial deployment of autonomous vehicles across diverse platforms and use cases.
## 🚀 Get Started
> **New to Autoware?**
>
> 1. **[Install Autoware](https://autowarefoundation.github.io/autoware-documentation/main/installation)** → Set up your environment and build the stack from source.
> 2. **[Run the Quick Start demo](https://autowarefoundation.github.io/autoware-documentation/main/demos/)** → Drive a simulated vehicle in just a few minutes.
## Documentation
To learn more about using or developing Autoware, refer to the [Autoware documentation site](https://autowarefoundation.github.io/autoware-documentation/main/). You can find the source for the documentation in [autowarefoundation/autoware-documentation](https://github.com/autowarefoundation/autoware-documentation).
## Contributing
- Make sure to follow the [Contribution Guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/).
- Take a look at Autoware's [various working groups](https://github.com/autowarefoundation/autoware-projects/wiki#working-group-list) to gain an understanding of any work in progress and to see how projects are managed.
- If you have any technical questions, you can start a discussion in the [Q&A category](https://github.com/autowarefoundation/autoware/discussions/categories/q-a) to request help and confirm if a potential issue is a bug or not.
## Useful resources
- [Autoware Foundation homepage](https://www.autoware.org/)
- [Support guidelines](https://autowarefoundation.github.io/autoware-documentation/main/community/support/)
- [CI metrics](https://autowarefoundation.github.io/autoware-ci-metrics/)
---
## File: ansible/roles/tensorrt/README.md
# tensorrt
This role installs TensorRT following [the official NVIDIA TensorRT Installation Guide](https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing).
## Inputs
| Name | Required | Description |
| ---------------- | -------- | ------------------------ |
| tensorrt_version | true | The version of TensorRT. |
## Version selection
| Ubuntu | Architecture | TensorRT version |
| -------------- | ------------------------------------------------------- | -------------------- |
| 22.04 (humble) | x86_64 | 10.8.0.43-1+cuda12.8 |
| 22.04 (humble) | aarch64 (SBSA) | 10.3.0.26-1+cuda12.5 |
| 24.04 (jazzy) | x86_64 / aarch64 (SBSA, incl. Jetson Thor + DRIVE Thor) | 10.13.3.9-1+cuda13.0 |
Override `tensorrt_version` explicitly via `-e tensorrt_version=…` to pin a different release.
## Manual Installation
### Set up the environment variables
```bash
# From the Autoware repository root:
# defaults/main.yaml contains an architecture-dependent Jinja2 expression;
# extract the matching version for this machine.
if [ "$(uname -m)" = "aarch64" ]; then
tensorrt_version=$(grep -oP "'\K[^']+(?=' if)" ansible/roles/tensorrt/defaults/main.yaml)
else
tensorrt_version=$(grep -oP "else '\K[^']+" ansible/roles/tensorrt/defaults/main.yaml)
fi
```
### Install TensorRT
```bash
sudo apt-get install -y \
libnvinfer10=${tensorrt_version} \
libnvinfer-plugin10=${tensorrt_version} \
libnvonnxparsers10=${tensorrt_version} \
libnvinfer-dev=${tensorrt_version} \
libnvinfer-plugin-dev=${tensorrt_version} \
libnvinfer-headers-dev=${tensorrt_version} \
libnvinfer-headers-plugin-dev=${tensorrt_version} \
libnvonnxparsers-dev=${tensorrt_version}
sudo apt-mark hold \
libnvinfer10 \
libnvinfer-plugin10 \
libnvonnxparsers10 \
libnvinfer-dev \
libnvinfer-plugin-dev \
libnvonnxparsers-dev \
libnvinfer-headers-dev \
libnvinfer-headers-plugin-dev
```
---
## File: ansible/roles/spconv/README.md
# spconv
This role install the `cumm` and `spconv` libraries needed to perform sparse convolutions.
The [original implementation](https://github.com/traveller59/spconv) did not provide a shared library, which is pre-generated c++ code and pre-compiled libraries were prepared [separately](https://github.com/autowarefoundation/spconv_cpp).
## Architecture Support
This role supports different architectures with platform-specific package variants:
- **amd64**: No suffix (e.g., `cumm_0.5.3_amd64.deb`)
- **arm64**:
- Default: `-sbsa` suffix for server platforms (e.g., `cumm_0.5.3_arm64-sbsa.deb`)
- Jetson: `-jetson` suffix when `spconv_is_jetson=true` (e.g., `cumm_0.5.3_arm64-jetson.deb`)
## Manual Installation
For manual installation, please follow the instructions in [this](https://github.com/autowarefoundation/spconv_cpp) repository.
## Run the playbook
The following command will install a particular version of the packages using ansible.
### Standard installation (amd64 or arm64 server)
```bash
export SPCONV_CUMM_VERSION=0.5.3
export SPCONV_VERSION=2.3.8
ansible-playbook autoware.dev_env.install_dev_env --tags spconv -e spconv_cumm_version=${SPCONV_CUMM_VERSION} -e spconv_version=${SPCONV_VERSION} --ask-become-pass
```
### Installation for NVIDIA Jetson platforms
```bash
export SPCONV_CUMM_VERSION=0.5.3
export SPCONV_VERSION=2.3.8
ansible-playbook autoware.dev_env.install_dev_env --tags spconv -e spconv_cumm_version=${SPCONV_CUMM_VERSION} -e spconv_version=${SPCONV_VERSION} -e spconv_is_jetson=true --ask-become-pass
```
---
## File: ansible/roles/ros2_dev_tools/README.md
# ros2_dev_tools
This role installs ROS 2 development tools following [this page](https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Development-Setup.html).
## Inputs
None.
## Manual Installation
```bash
# Taken from https://docs.ros.org/en/humble/Installation/Alternatives/Ubuntu-Development-Setup.html
sudo apt update && sudo apt install -y \
python3-colcon-mixin \
python3-flake8-docstrings \
python3-pip \
python3-pytest-cov \
python3-flake8-blind-except \
python3-flake8-builtins \
python3-flake8-class-newline \
python3-flake8-comprehensions \
python3-flake8-deprecated \
python3-flake8-import-order \
python3-flake8-quotes \
python3-pytest-repeat \
python3-pytest-rerunfailures \
build-essential \
cmake \
git \
python3-setuptools \
python3-bloom \
python3-colcon-common-extensions \
python3-colcon-mixin \
python3-rosdep \
python3-vcs2l \
wget
# Initialize rosdep
sudo rosdep init
rosdep update
```
---
## File: ansible/roles/ros2/README.md
# ros2
This role installs [ROS 2](http://www.ros2.org/) following [this page](https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html).
Additional steps may be needed depending on the `rosdistro` you choose.
To prevent the update of the ROS 2 packages, if ros-`distro`-desktop is held, the installation process for the packages will be skipped and output warning.
```bash
$ sudo apt install software-properties-common
$ sudo add-apt-repository universe
$ apt-cache policy | grep universe
500 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
release v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=amd64
```
## Inputs
| Name | Required | Description |
| ---------------------- | -------- | ------------------------------------------------ |
| rosdistro | true | The ROS distro. |
| ros2_installation_type | false | The installation type (`desktop` or `ros-base`). |
## Manual Installation
The `ros2_installation_type` variable can also be found in:
[./defaults/main.yaml](./defaults/main.yaml)
For Universe, the `rosdistro` variable can also be found in:
[../../playbooks/install_dev_env.yaml](../../playbooks/install_dev_env.yaml)
```bash
# Choose your ROS distribution
rosdistro=humble # or jazzy
# Taken from: https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html
# You will need to add the ROS 2 apt repository to your system. First, make sure that the Ubuntu Universe repository is enabled by checking the output of this command.
apt-cache policy | grep universe
# The output of the above command should contain following:
# 500 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
# release v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=amd64
# If you don’t see an output line like the one above, then enable the Universe repository with these instructions.
sudo apt install software-properties-common
sudo add-apt-repository universe
# Now add the ROS 2 apt repository to your system. First authorize our GPG key with apt.
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
# Then add the repository to your sources list.
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# Update your apt repository caches after setting up the repositories.
sudo apt update
# Desktop Install
ros2_installation_type=desktop
sudo apt install ros-${rosdistro}-${ros2_installation_type}
# Environment setup
# (Optional) You can source ros2 in the ~/.bashrc file.
echo '' >> ~/.bashrc && echo "source /opt/ros/${rosdistro}/setup.bash" >> ~/.bashrc
```
---
## File: ansible/roles/rmw_implementation/README.md
# rmw_implementation
This role sets up ROS 2 RMW implementation following [this page](https://docs.ros.org/en/humble/How-To-Guides/Working-with-multiple-RMW-implementations.html).
## Inputs
| Name | Required | Description |
| ------------------ | -------- | ------------------- |
| rosdistro | true | The ROS distro. |
| rmw_implementation | true | RMW implementation. |
## Manual Installation
## Set up the environment variables
```bash
# Choose your ROS distribution
rosdistro=humble # or jazzy
# RMW implementation (see ./defaults/main.yaml for the current default)
rmw_implementation=rmw_cyclonedds_cpp
```
## Install the RMW implementation
For details:
```bash
sudo apt update
sudo apt install ros-${rosdistro}-${rmw_implementation//_/-}
# (Optional) You set the default RMW implementation in the ~/.bashrc file.
echo '' >> ~/.bashrc && echo "export RMW_IMPLEMENTATION=${rmw_implementation}" >> ~/.bashrc
```
---
## File: ansible/roles/qt5ct_setup/README.md
# qt5ct_setup Ansible role
## Overview
The `qt5ct_setup` Ansible role automates the configuration of the `qt5ct` environment for Autoware.
It won't affect the system-wide configuration.
## Installation
Follow the instructions below to **install** or **update** the custom theme for `RViz2` in Autoware.
> **Important:** Both commands must be run when you want to update the theme.
```bash
cd ~/autoware # The root directory of the cloned repository
ansible-galaxy collection install -f -r "ansible-galaxy-requirements.yaml"
ansible-playbook autoware.dev_env.install_dev_env --tags qt5ct_setup --ask-become-pass
```
## How to use the custom theme in RViz2
To apply a custom theme to RViz2, you can use the `qt5ct` platform theme. Follow these steps to ensure that the `QT_QPA_PLATFORMTHEME` environment variable is set correctly for your RViz2 instance when used with Autoware.
### Manual setup for running RViz2
Before running RViz2 manually, set the `QT_QPA_PLATFORMTHEME` environment variable to `qt5ct`.
This ensures that the custom theme settings are applied.
```bash
export QT_QPA_PLATFORMTHEME=qt5ct
```
Then, start RViz2 as usual.
```bash
rviz2
```
### Automatic setup in Autoware
In Autoware, the `QT_QPA_PLATFORMTHEME` environment variable is automatically set within the main [autoware.launch.xml](https://github.com/autowarefoundation/autoware_launch/blob/main/autoware_launch/launch/autoware.launch.xml) file.
Therefore, you do not need to manually set this environment variable when launching Autoware.
In the `autoware.launch.xml` file, RViz2 is configured with the following `` element:
```xml
```
This configuration automatically sets the `QT_QPA_PLATFORMTHEME` to `qt5ct` when RViz2 is launched as part of Autoware.
It also includes additional options such as respawn behavior and custom RViz2 configurations.
---
## File: ansible/roles/nvidia_container_toolkit/README.md
# nvidia_container_toolkit
This role installs [NVIDIA Container Toolkit](https://github.com/NVIDIA/nvidia-container-toolkit) following the [installation guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html).
## Inputs
None.
## Manual Installation (Recommended)
> ℹ️ The steps below may differ from the role implementation.
> They reflect the **most up-to-date and preferred procedure** for manual installation.
> The role will be updated to align with these steps.
```
/* Detailed source-code truncated for AI context efficiency. */
```
## 2. Official Technical Reference & Guides (autowarefoundation/autoware-documentation)
# Autoware Documentation
---
## About
This repository contains the source files for Autoware's documentation, built and deployed with [MkDocs](https://www.mkdocs.org/). Autoware spans [multiple repositories](https://github.com/autowarefoundation/), and this site serves as a unified entry point to access information across all of them.
For more about the Autoware project and its ecosystem, see the [Autoware Foundation organization profile](https://github.com/autowarefoundation/.github/blob/main/profile/README.md).
## Getting started locally
```bash
# Clone the repository
git clone https://github.com/autowarefoundation/autoware-documentation.git
cd autoware-documentation
# Create and activate a virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install -r mkdocs-requirements.txt
# Serve locally
mkdocs serve
```
Then open [http://localhost:8000](http://localhost:8000) in your browser.
## Contributing
Contributions are welcome! Please review the [documentation guidelines](https://autowarefoundation.github.io/autoware-documentation/main/contributing/documentation-guidelines/) before submitting a pull request.
## License
This project is licensed under the [Apache License 2.0](LICENSE).