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.
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 https://github.com/husarion/o3de-docker.git
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 Robotec.ai 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.