Skip to main content

O3DE: ROSbot XL + SLAM Toolbox


In this guide, we will show you how to use O3DE, a highly realistic open-source 3D game engine, to run the ROSbot XL simulation. Additionally Slam Toolbox will be used to create a map of the unknown world. In the video below you can see the final result of this guide.

Quick Start


Before we begin, there are a few things you'll need to have set up on your computer. First, you'll need to install Docker Engine and Docker Compose by following the official installation guide. This project has been tested on the following setup:

$ docker compose version
Docker Compose version v2.16.0
$ docker --version
Docker version 23.0.1, build a5ee5b1

Additionally, this project uses NVIDIA Container Runtime. So, please make sure that you have an NVIDIA GPU and the NVIDIA Container Toolkit installed on your system before moving forward.

Clone the repository:

git clone
cd o3de-docker

Start the containers in a new terminal:

xhost +local:docker && \
docker compose -f compose.sim.o3de.yaml up

Now you will need to open DemoLevel and start the simulation. After O3DE finished loading you should see the welcome screen.

Click on the Open button:


Then select DemoLevel from Levels and open it:


Now demo should be loaded. Finally click the Play Game in the top-right corner to start the simulation:


For manual ROSbot XL control use teleop-twist-keyboard. First run:

docker exec -it o3de_rosbot_xl bash

Source the ROS 2 and start teleop:

source /opt/ros/humble/setup.bash && \
ros2 run teleop_twist_keyboard teleop_twist_keyboard

You should be all set and mapping should work now.


That's all there is to it! Thanks to the ROS 2 Gem extension developed by and AWS Game Tech, you can use O3DE to develop robotic simulations through ROS 2 tools and components. O3DE lets you use AAA game tier 3D engine to simulate your robotic application. Realistic graphics can be really beneficial when closing the gap between simulation and reality. If you're interested in running your own ROS 2 code with O3DE, all you need to do is create a minimal Docker image that runs your ROS 2 node. You can easily reuse the husarion/o3de Docker image. This makes it easy to run your own ROS 2 code with O3DE and provides a great way to test and debug your code in a simulated environment.