Autoware.Universe is an open-source autonomous driving software stack built on ROS 2, designed for developing advanced driver-assistance systems (ADAS) across various vehicle platforms. While it is possible to install it in a virtualized environment, performance limitations—especially regarding GPU acceleration—make native installations preferable for production use. This guide walks through the complete setup process on Ubuntu 20.04 within VMware, including ROS 2 Galactic, CUDA, and all required dependencies.
System Preparation
Begin by downloading the Ubuntu 20.04.6 desktop ISO from a reliable mirror:
Attach the ISO to your VMware virtual machine and proceed with a standard installation. Ensure the VM is allocated at least 8 GB RAM, 50 GB disk space, and 2 CPU cores.
GPU Driver Considerations
VMware does not natively support direct GPU passthrough for NVIDIA cards in most configurations. While the system can be configured to use VMware’s virtual GPU, it lacks the compute capabilities needed for real-time simulation tools like AWSim. For full functionality, GPU acceleration must be enabled via NVIDIA drivers, which typical requires hardware passthrough or switching to a dual-boot setup.
For now, install the recommended driver package:
ubuntu-drivers devices
sudo apt install -y nvidia-driver-535
Reboot the system. Verify installation with:
nvidia-smi
If the command fails or shows no GPU, proceed to the next steps but expect limited simulation performance.
ROS 2 Galactic Installation
Install ROS 2 Galactic using the FishROS installer:
wget http://fishros.com/install -O fishros && . fishros
Select Galactic and the Desktop variant during setup. The installer will configure repositories, install packages, and source the environment automatically.
Development Toolchain Setup
Install essential build and linting tools:
sudo apt update && sudo apt install -y \
build-essential \
cmake \
git \
python3-colcon-common-extensions \
python3-flake8 \
python3-pip \
python3-pytest-cov \
python3-rosdep \
python3-setuptools \
python3-vcstool \
wget
python3 -m pip install -U \
flake8-blind-except \
flake8-builtins \
flake8-class-newline \
flake8-comprehensions \
flake8-deprecated \
flake8-docstrings \
flake8-import-order \
flake8-quotes \
pytest-repeat \
pytest-rerunfailures \
pytest \
setuptools
sudo apt install python3-testresources
RMW Implementation Configuration
ROS 2 supports multiple middleware implementations (RMW). For Autoware, Fast DDS is the default. Set it explicitly:
mkdir -p ~/autoware_universe && cd ~/autoware_universe
git clone https://github.com/autowarefoundation/autoware.git -b galactic
cd autoware
# Configure proxy if behind a firewall
git config --global http.proxy http://127.0.0.1:8888
git config --global https.proxy http://127.0.0.1:8888
source /opt/ros/galactic/setup.bash
rmw_implementation_dashed=$(echo "${RMW_IMPLEMENTATION}" | sed 's/_/-/g')
sudo apt install ros-galactic-${rmw_implementation_dashed}
echo "export RMW_IMPLEMENTATION=${RMW_IMPLEMENTATION}" >> ~/.bashrc
source ~/.bashrc
PACMOD3 Integration
PACMOD is a vehicle interface layer for control signal translation. Install it via AutonomouStuff’s repository:
sudo apt install apt-transport-https
sudo sh -c 'echo "deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/autonomoustuff-public.list'
sudo apt update
sudo apt install ros-galactic-pacmod3
Geospatial Dependencies
Install geographic data tools required for high-precision localization:
sudo apt install geographiclib-tools
sudo geographiclib-get-geoids egm2008-1
pre-commit and Go Setup
Enable code formatting hooks and install Go for tooling:
clang_format_version=14.0.6
pip3 install pre-commit clang-format==${clang_format_version}
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt install golang
CUDA Toolkit Installation
Install CUDA 11.4 for GPU-accelerated perception and planning modules:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
sudo apt update
sudo apt install cuda-11-4 --no-install-recommends
Add CUDA to your environment:
echo 'export PATH=/usr/local/cuda-11.4/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
cuDNN and TensorRT Installation
These libraries are essential for deep learning inference. Download the appropriate .deb files from NVIDIA’s developer portal and install manually:
sudo apt install libcudnn8=8.6.0.163-1+cuda11.4 libcudnn8-dev=8.6.0.163-1+cuda11.4
sudo apt-mark hold libcudnn8 libcudnn8-dev
sudo apt install libnvinfer8=8.4.3-1+cuda11.4 \
libnvinfer-plugin8=8.4.3-1+cuda11.4 \
libnvparsers8=8.4.3-1+cuda11.4 \
libnvonnxparsers8=8.4.3-1+cuda11.4 \
libnvinfer-dev=8.4.3-1+cuda11.4 \
libnvinfer-plugin-dev=8.4.3-1+cuda11.4 \
libnvparsers-dev=8.4.3-1+cuda11.4 \
libnvonnxparsers-dev=8.4.3-1+cuda11.4
sudo apt-mark hold libnvinfer8 libnvinfer-plugin8 libnvparsers8 libnvonnxparsers8 \
libnvinfer-dev libnvinfer-plugin-dev libnvparsers-dev libnvonnxparsers-dev
Source Code Checkout
Clone the Autoware.Universe repository and its dependencies:
mkdir -p ~/autoware_universe/src
cd ~/autoware_universe
# Add OpenPlanner extension
cat >> autoware.repos << EOF
universe/external/open_planner:
type: git
url: https://github.com/ZATiTech/open_planner.git
version: main
EOF
vcs import src < autoware.repos
ROS 2 Dependency Resolution
Configure rosdep to use Tsinghua University’s mirror for faster downloads:
sudo mkdir -p /etc/ros/rosdep/sources.list.d/
sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
rosdep update --include-eol-distros
echo 'export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc
Install all package dependencies:
source /opt/ros/galactic/setup.bash
rosdep install -y --from-paths src --ignore-src --rosdistro galactic
Some packages may fail to resolve—these are often optional or platform-specific. Note them for later manual resolution.
Build the Workspace
Compile the entire Autoware.Universe stack with optimization flags:
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --continue-on-error
The build process involves ~246 packages and may take 20–40 minutes depending on system resources. Use --packages-select or --packages-ignore to build subsets if needed.
Testing the Installation
Download a sample map for simulation:
mkdir -p ~/autoware_map
gdown -O ~/autoware_map/sample-map-planning.zip 'https://docs.google.com/uc?export=download&id=1499_nsbUbIeturZaDj7jhUownh5fvXHd'
unzip -d ~/autoware_map ~/autoware_map/sample-map-planning.zip
Launch the planning simulator:
source install/setup.bash
ros2 launch autoware_launch planning_simulator.launch.xml \
map_path:=~/autoware_map/sample-map-planning \
vehicle_model:=sample_vehicle \
sensor_model:=sample_sensor_kit
If successful, a 3D visualization window will open displaying the map and simulated vehicle. Note that without proper GPU acceleration, rendering may be slow or unstable.
Due to VMware’s inherent limitations in GPU passthrough, this setup is suitable only for learning and light testing. For production-grade simulation and perception pipelines, a native dual-boot Ubuntu installation with direct NVIDIA GPU access is strongly recommended.