Skip to content

MonashRobotics/robot_containers

Repository files navigation

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.

CI - Test CI - Docker Images linting - Ruff code style - Black types - Mypy License - MIT image image

Table of Contents

Requirements

Python

  • 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.

Docker

nvidia-docker2 (for GPU support, optional)

VSCode Extensions (Optional)

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 WIP
Ridgeback WIP
UR5 WIP

Generic ROS 1 and ROS 2 Dockerfile templates for the following distributions are also available:

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

See docs/troubleshooting.md