This directory contains a Dockerfile and helper scripts for building and running the O3DE Robot Vacuum Sample project. The Docker image is based on Ubuntu 24.04 (Noble) with ROS 2 Jazzy.
Note: The O3DE simulation is also compatible with Ubuntu 22.04 and ROS 2 Humble. However, the navigation launch files have been updated for ROS 2 Jazzy and would need to be reverted for Humble. See Humble compatibility for details.
- Hardware requirements of O3DE
- At least 60 GB of free disk space
- Docker installed and configured
- Note: It is recommended to have Docker installed correctly and in a secure manner so that the Docker commands in this guide do not require elevated privileges (sudo). See Docker Engine post-installation steps for more details.
- NVIDIA Container Toolkit
By default, the Dockerfile builds a simulation image for Ubuntu 24.04 (Noble) with ROS 2 Jazzy.
All Docker commands below should be run from the Docker/ directory:
cd Docker
docker build -t o3de_robot_vacuum_simulation:latest .This creates a Docker image named o3de_robot_vacuum_simulation that contains the simulation launcher,
the navigation stack, and helper scripts (LaunchSimulation.bash and LaunchNavStack.bash).
You can also create a separate image that contains only the navigation stack and RViz2:
docker build --build-arg IMAGE_TYPE=navstack -t o3de_robot_vacuum_navstack:latest .Launching O3DE applications in a Docker container requires GPU acceleration support. Make sure the NVIDIA Container Toolkit is installed.
xhost +local:rootdocker run --rm --network=host --gpus all \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
o3de_robot_vacuum_simulation:latest \
/data/workspace/LaunchSimulation.bashOnce the simulation is running, start the navigation stack in a second terminal. You can use the same simulation image:
docker run --rm --network=host --gpus all \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
o3de_robot_vacuum_simulation:latest \
/data/workspace/LaunchNavStack.bashOr the dedicated navstack image if you built one separately:
docker run --rm --network=host --gpus all \
-e DISPLAY=$DISPLAY \
-v /tmp/.X11-unix:/tmp/.X11-unix \
o3de_robot_vacuum_navstack:latest \
/data/workspace/LaunchNavStack.bashxhost -local:rootNote:
--network=hostis recommended over--network=bridgeto avoid ROS 2 multicast routing issues between containers on the same machine.
| Argument | Description | Default |
|---|---|---|
O3DE_DEB_URL |
URL of the O3DE SDK .deb file |
https://o3debinaries.org/main/Latest/Linux/o3de_2605_0.deb |
| Argument | Repository | Default |
|---|---|---|
LOFT_GEM_REPO |
Loft ArchVis Scene Gem | https://github.com/o3de/loft-arch-vis-sample.git |
ROBOT_VAC_SAMPLE_REPO |
Robot Vacuum Sample | https://github.com/o3de/RobotVacuumSample.git |
| Argument | Repository | Default |
|---|---|---|
LOFT_GEM_BRANCH |
Loft ArchVis Scene Gem | main |
ROBOT_VAC_SAMPLE_BRANCH |
Robot Vacuum Sample | main |
The O3DE simulation is also compatible with Ubuntu 22.04 and ROS 2 Humble. However, the navigation launch files
in the launch/ directory have been updated for ROS 2 Jazzy in two ways:
- Plugin names in
launch/config/navigation_params.yamluse the::separator (e.g.,nav2_navfn_planner::NavfnPlanner), while Humble expects/(e.g.,nav2_navfn_planner/NavfnPlanner). - The
recoveries_servernode (Humble) was replaced bybehavior_server(Jazzy) in the same file.
To use Humble, change the Dockerfile defaults and revert those names in navigation_params.yaml:
docker build \
--build-arg ROS_VERSION=humble \
--build-arg UBUNTU_VERSION=jammy \
-t o3de_robot_vacuum_simulation:humble .