Installing Autoware.Universe on Ubuntu 20.04 in a VMware Virtual Machine

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.

Tags: AutonomousDriving ROS2 Galactic Autoware Ubuntu20.04

Posted on Sat, 16 May 2026 14:32:33 +0000 by puritania