This repository contains Dockerfiles for building containers for various robots.
It also includes a python script run.py that wraps the docker command to enable:
- building, starting and entering the container in one step
- graphical applications
- nvidia GPU passthrough
- realtime scheduling
- host networking
- full external device access (USB, cameras, etc.)
Finally, it includes roboco, a script for generating a new project from the included Dockerfiles.
run.pyis compatible with python 3.6 and above. This is the key requirement for running the containers.roboco, the templating script, is compatible only with python 3.7 and above. See docs/troubleshooting.md#problem-old-python-version for instructions if you are running python <= 3.6.
-
Tested with Docker 20.10.23.
-
Install on Ubuntu using
sudo apt install docker.io(other installation methods may not play well with the nvidia-docker2 runtime.) -
Follow "Manage Docker as a non-root user" at https://docs.docker.com/engine/install/linux-postinstall/
- Install nvidia-docker2 by following https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit
- Docker extension - tested with v1.25.1
- Dev Containers extension https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers - tested with v0.292.0
pip install roboco
git clone https://github.com/monashrobotics/robot_containers.git
cd robot_containers
pip install .
roboco init
Follow the prompts to select the robot type and additional features.
Once completed, there will be two new files in your current directory: Dockerfile and run.py.
Build the image and run the container using:
./run.py
The Dockerfile can be edited to add additional dependencies or change the base image.
When you make changes to the Dockerfile, you will need to rebuild the image using:
./run.py build
Then remove the old container and start a new one:
./run.py rm
./run.py
Dockerfile templates are available for the following robot / ROS / Ubuntu combinations.
| Robot / ROS Distro (Ubuntu OS) | ROS 1 Noetic (20.04) | ROS 2 Foxy (20.04) | ROS 2 Humble (22.04) |
|---|---|---|---|
| ABB YuMi | WIP | ❌ | ❌ |
| Baxter | WIP | ❌ | ❌ |
| Fetch | WIP | ❌ | ❌ |
| Jackal | WIP | WIP | WIP |
| Panda | WIP | ❌ | WIP |
| Ridgeback | WIP | ❌ | ❌ |
| UR5 | ✅ | ❌ | WIP |
Generic ROS 1 and ROS 2 Dockerfile templates for the following distributions are also available:
Snippets are available for these hardware drivers and ROS distro combinations:
| Driver / ROS Distro (Ubuntu OS) | ROS 1 Noetic (20.04) | ROS 2 Foxy (20.04) | ROS 2 Humble (22.04) |
|---|---|---|---|
| RealSense Camera | WIP | WIP | WIP |
| Velodyne LiDAR | WIP | WIP | WIP |
| Robotiq 2F-85 Gripper | WIP | ❌ | ❌ |
| Robotiq FT-300 Force-Torque Sensor | WIP | ❌ | ❌ |
Snippets are available for the following software packages:
| Software | ROS 1 Noetic (20.04) | ROS 2 Foxy (20.04) | ROS 2 Humble (22.04) |
|---|---|---|---|
| pytorch | WIP | WIP | WIP |
If there's a robot, or hardware driver that you'd like to see supported, please open an issue or pull request. See CONTRIBUTING.md