docker-for-robotics icon indicating copy to clipboard operation
docker-for-robotics copied to clipboard

Collection of best practices when working with Docker/Docker-Compose and the Robot Operating System (ROS/ROS 2) in simulation as well as with real-hardware with real-time requirements

Docker for Robotics with the Robot Operating System (ROS/ROS 2)

Author: Tobit Flatscher (2021 - 2024)

ROS Docker ROS 2 Docker License: MIT

Overview

This guide discusses best practices for robotics development with the Robot Operating System (ROS/ROS 2) and Docker/Docker-Compose on Linux as well as Windows operating systems. This includes displaying graphic user interfaces, working with hardware, real-time capable code and the network set-up for multiple machines. Additionally it walks you through the set-up with Visual Studio Code.

This repository used to be part of another guide I have written on Docker and real-time applications. As the general Docker and ROS part has now become quite lengthy, I have decided to extract it and create a repository of its own for it.

Docker on Ubuntu Docker on Windows
ROS Indigo running from a Docker container on Ubuntu 22.04 ROS Indigo running from a Docker container on Windows 10 with WSL2

Structure of this guide

This guide is structured in the following chapters:

  • Motivation: Tries to give you good reasons for why you should use Docker as a company or research institution.
  • Introduction to Docker and Docker-Compose: Introduces fundamental concepts of container-based development.
  • Set-up with Visual Studio Code: Walks you through the set-up of containers with Visual Studio Code.
  • Graphic user interfaces and Docker: Discusses the challenges of using Docker with graphic user interfaces and presents workarounds.
  • ROS and Docker: Discusses best-practices for Docker and ROS/ROS 2.
  • Docker on Windows: Running Docker on Windows in WSL2 with graphic user interfaces.
  • Working with hardware: Discusses best-practices when working with hardware.

The folder examples/ contains different ROS and ROS 2 examples (in simulation as well as with hardware access) while the folder templates/ provides templates for ROS and ROS 2 that you can build your own workspace off. This guide is further extended by an external guide on Docker for real-time applications with PREEMPT_RT that can be found here.

Get a copy

This workspace contains several other repositories as submodules. Therefore please clone it with the following command:

$ git clone --recurse-submodules https://github.com/2b-t/docker-for-robotics.git