Author: Tobit Flatscher (2021 - 2024)
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.
ROS Indigo running from a Docker container on Ubuntu 22.04 | ROS Indigo running from a Docker container on Windows 10 with WSL2 |
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.
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