A tool to generate Dockerfiles for use in robotics, as well as a script to build and enter these containers, with support for graphical applications, GPU passthrough, realtime scheduling, host networking and full device access.
Project description
Robot Containers
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.
Table of Contents
Requirements
Docker
-
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/
nvidia-docker2 (for GPU support, optional)
- Install nvidia-docker2 by following https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit
VSCode - Dev Containers Extension (Optional)
- Tested with v0.292.0 of Dev Containers extension https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers
Installation
Using pip
pip install roboco
Using git
git clone https://github.com/monashrobotics/robot_containers.git
cd robot_containers
pip install .
Usage
Adding a container to your project
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
.
Running the container
Build the image and run the container using:
./run.py
Customising the container
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
Available Dockerfile Templates
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 | ❌ | ❌ |
Ridgeback | WIP | ❌ | ❌ |
UR5 | ✅ | ❌ | WIP |
Generic ROS 1 and ROS 2 Dockerfile templates for the following distributions are also available:
-
ROS 1 Kinetic (16.04)
-
ROS 1 Melodic (18.04)
-
ROS 1 Noetic (20.04)
-
ROS 2 Foxy (20.04)
-
ROS 2 Galactic (20.04)
-
ROS 2 Humble (22.04)
Hardware Drivers
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 | ❌ | ❌ |
Software Snippets
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 |
Contributing
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
Troubleshooting
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.