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.py
is 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