We have selected to use containers in order to allow you to be as creative as you can be as a competitor. In the example workspace we provide a Dockerfile which should work for most robots. However, you are free to implement a robot container from scratch. This document provides you some hints.
To develop a container from scratch, please consider reading the Dockerfile provided in the example workspace as a starting point. We would encourage you to do so using a Dockerfile, and then to compile your image using docker build . -t robot_workspace
from it. This will allow you to more easily reproduce the work. We use ROS Noetic, however using another version of ROS or ROS2 should work as well.
- Be aware of the mounts we are going to use in the
docker-compose.yml
files found in each task. We will be using these mount points (and only these mount points), so make sure you expose thoseVOLUME
s in your container for us to use. This probably won't look pretty if you're building from scratch, but you will have to deal with it. - The simulation container runs a rosmaster at http://simulation:11311, as stated in the
ENV
field in the Dockerfile in the example workspace. You will need to communicate to this port to interact with Gazebo. - Make sure your
CMD
is set correctly - we do not plan on overriding this in thedocker-compose.yml
file we will use in competition mode. - If you want to use
CUDA
in your robot container, have a look at the explanation to use a GPU inside your container.
Beyond that, you are free to completely rebuild the entire environment as you see fit.