Skip to content

ika-rwth-aachen/docker-ros-ml-images

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

docker-ros-ml-images – Machine Learning-Enabled ROS Docker Images

docker-ros-ml-images provides multi-arch machine learning-enabled ROS Docker images.

Important

This repository is open-sourced and maintained by the Institute for Automotive Engineering (ika) at RWTH Aachen University.
DevOps, Containerization and Orchestration of Software-Defined Vehicles are some of many research topics within our Vehicle Intelligence & Automated Driving domain.
If you would like to learn more about how we can support your advanced driver assistance and automated driving efforts, feel free to reach out to us!
📧 [email protected]

We recommend to use docker-ros-ml-images in combination with our other tools for Docker and ROS.

  • docker-ros automatically builds minimal container images of ROS applications
  • docker-run is a CLI tool for simplified interaction with Docker images

Quick Links to Available Images

ros2 | ros2-cuda | ros2-tensorrt | ros2-triton | ros2-torch | ros2-tf | ros2-ml
ros | ros-cuda | ros-tensorrt | ros-triton | ros-torch | ros-tf | ros-ml

Quick Start

docker run --rm rwthika/ros2-ml:humble \
  python -c 'import os; import tensorflow as tf; import torch; e="ROS_DISTRO"; print(f"Hello from ROS {os.environ[e]}, PyTorch {torch.__version__}, and TensorFlow {tf.__version__}!")'

Variations

With docker-ros-ml-images, we provide a variety of lightweight multi-arch machine learning-enabled ROS Docker images. Starting with plain ROS images, we offer successively larger ROS base images that also come with NVIDIA CUDA, NVIDIA TensorRT, NVIDIA Triton Client, PyTorch and/or TensorFlow installations. Combining the components listed in the table below, we have built more than 100 multi-arch images and make them publicly available on DockerHub. In addition to the provided images, we also publish the generic Dockerfile used to flexibly build images combining the different components.

Component Variations
ROS Distribution noetic, humble, iron, jazzy, rolling
ROS Components core, base, desktop-full
ML Framework NVIDIA CUDA, NVIDIA TensorRT, NVIDIA Triton Client, PyTorch, TensorFlow
Architecture amd64, arm64

Note

All images are targeted at NVIDIA GPUs and therefore base off of official NVIDIA base images. The arm64 images, in particular, target NVIDIA Jetson SoCs and are based off of NVIDIA L4T base images. Ubuntu 22 images are provided with JetPack 6, Ubuntu 20 images with JetPack 5.

Note

Since robotic applications are often implemented in C++ instead of Python for performance reasons, previous releases of our images also shipped with the C++ APIs of PyTorch and TensorFlow. Installing the C++ libraries often involves cumbersome building from source, so we have decided to drop PyTorch/TensorFlow C++ support for more frequent releases. You may still find those images with ML C++ support under the 23.08 release.

Image Configuration

User Setup

Containers of the provided images start with root user by default. If the two environment variables DOCKER_UID and DOCKER_GID are passed, a new user with the corresponding UID/GID is created on the fly. Most importantly, this features allows to mount and edit files of the host user in the container without having to deal with permission issues.

docker run --rm -it -e DOCKER_UID=$(id -u) -e DOCKER_GID=$(id -g) -e DOCKER_USER=$(id -un) rwthika/ros:latest

The password of the custom user is set to its username (dockeruser:dockeruser by default).

Available Images

ROS 2

rwthika/ros2 (ROS 2)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
humble-ros-core amd64
arm64
22.04.4 3.10.12 humble ros-core 3.22.1 - - - - - -
latest, humble, humble-ros-base amd64
arm64
22.04.4 3.10.12 humble ros-base 3.22.1 - - - - - -
humble-desktop-full amd64
arm64
22.04.4 3.10.12 humble desktop-full 3.22.1 - - - - - -
iron-ros-core amd64
arm64
22.04.4 3.10.12 iron ros-core 3.22.1 - - - - - -
iron, iron-ros-base amd64
arm64
22.04.4 3.10.12 iron ros-base 3.22.1 - - - - - -
iron-desktop-full amd64
arm64
22.04.4 3.10.12 iron desktop-full 3.22.1 - - - - - -
jazzy-ros-core amd64
arm64
24.04 3.12.3 jazzy ros-core 3.28.3 - - - - - -
jazzy, jazzy-ros-base amd64
arm64
24.04 3.12.3 jazzy ros-base 3.28.3 - - - - - -
jazzy-desktop-full amd64
arm64
24.04 3.12.3 jazzy desktop-full 3.28.3 - - - - - -
rolling-ros-core amd64
arm64
24.04 3.12.3 rolling ros-core 3.28.3 - - - - - -
rolling, rolling-ros-base amd64
arm64
24.04 3.12.3 rolling ros-base 3.28.3 - - - - - -
rolling-desktop-full amd64
arm64
24.04 3.12.3 rolling desktop-full 3.28.3 - - - - - -

rwthika/ros2-cuda (ROS 2, NVIDIA CUDA)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
humble-ros-core amd64
arm64
22.04.3 3.10.12 humble ros-core 3.22.1 12.2.140 - - - - -
latest, humble, humble-ros-base amd64
arm64
22.04.3 3.10.12 humble ros-base 3.22.1 12.2.140 - - - - -
humble-desktop-full amd64
arm64
22.04.3 3.10.12 humble desktop-full 3.22.1 12.2.140 - - - - -
iron-ros-core amd64
arm64
22.04.3 3.10.12 iron ros-core 3.22.1 12.2.140 - - - - -
iron, iron-ros-base amd64
arm64
22.04.3 3.10.12 iron ros-base 3.22.1 12.2.140 - - - - -
iron-desktop-full amd64
arm64
22.04.3 3.10.12 iron desktop-full 3.22.1 12.2.140 - - - - -
jazzy-ros-core amd64 24.04 3.12.3 jazzy ros-core 3.28.3 12.6.37 - - - - -
jazzy, jazzy-ros-base amd64 24.04 3.12.3 jazzy ros-base 3.28.3 12.6.37 - - - - -
jazzy-desktop-full amd64 24.04 3.12.3 jazzy desktop-full 3.28.3 12.6.37 - - - - -
rolling-ros-core amd64 24.04 3.12.3 rolling ros-core 3.28.3 12.6.37 - - - - -
rolling, rolling-ros-base amd64 24.04 3.12.3 rolling ros-base 3.28.3 12.6.37 - - - - -
rolling-desktop-full amd64 24.04 3.12.3 rolling desktop-full 3.28.3 12.6.37 - - - - -

rwthika/ros2-tensorrt (ROS 2, NVIDIA CUDA, NVIDIA TensorRT)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
humble-ros-core amd64
arm64
22.04.3 3.10.12 humble ros-core 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - -
latest, humble, humble-ros-base amd64
arm64
22.04.3 3.10.12 humble ros-base 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - -
humble-desktop-full amd64
arm64
22.04.3 3.10.12 humble desktop-full 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - -
iron-ros-core amd64
arm64
22.04.3 3.10.12 iron ros-core 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - -
iron, iron-ros-base amd64
arm64
22.04.3 3.10.12 iron ros-base 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - -
iron-desktop-full amd64
arm64
22.04.3 3.10.12 iron desktop-full 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - -

rwthika/ros2-triton (ROS 2, NVIDIA CUDA, NVIDIA Triton Client)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
humble-ros-core-triton2.48.0 amd64
arm64
22.04.3 3.10.12 humble ros-core 3.22.1 12.2.140 - - 2.48.0 - -
latest, humble, humble-ros-base-triton2.48.0 amd64
arm64
22.04.3 3.10.12 humble ros-base 3.22.1 12.2.140 - - 2.48.0 - -
humble-desktop-full-triton2.48.0 amd64
arm64
22.04.3 3.10.12 humble desktop-full 3.22.1 12.2.140 - - 2.48.0 - -
iron-ros-core-triton2.48.0 amd64
arm64
22.04.3 3.10.12 iron ros-core 3.22.1 12.2.140 - - 2.48.0 - -
iron, iron-ros-base-triton2.48.0 amd64
arm64
22.04.3 3.10.12 iron ros-base 3.22.1 12.2.140 - - 2.48.0 - -
iron-desktop-full-triton2.48.0 amd64
arm64
22.04.3 3.10.12 iron desktop-full 3.22.1 12.2.140 - - 2.48.0 - -
jazzy-ros-core-triton2.48.0 amd64 24.04 3.12.3 jazzy ros-core 3.28.3 12.6.37 - - 2.48.0 - -
jazzy, jazzy-ros-base-triton2.48.0 amd64 24.04 3.12.3 jazzy ros-base 3.28.3 12.6.37 - - 2.48.0 - -
jazzy-desktop-full-triton2.48.0 amd64 24.04 3.12.3 jazzy desktop-full 3.28.3 12.6.37 - - 2.48.0 - -
rolling-ros-core-triton2.48.0 amd64 24.04 3.12.3 rolling ros-core 3.28.3 12.6.37 - - 2.48.0 - -
rolling, rolling-ros-base-triton2.48.0 amd64 24.04 3.12.3 rolling ros-base 3.28.3 12.6.37 - - 2.48.0 - -
rolling-desktop-full-triton2.48.0 amd64 24.04 3.12.3 rolling desktop-full 3.28.3 12.6.37 - - 2.48.0 - -

rwthika/ros2-torch (ROS 2, NVIDIA CUDA, NVIDIA TensorRT, PyTorch)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
humble-ros-core-torch2.4.0 amd64
arm64
22.04.3 3.10.12 humble ros-core 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 -
latest, humble, humble-ros-base-torch2.4.0 amd64
arm64
22.04.3 3.10.12 humble ros-base 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 -
humble-desktop-full-torch2.4.0 amd64
arm64
22.04.3 3.10.12 humble desktop-full 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 -
iron-ros-core-torch2.4.0 amd64
arm64
22.04.3 3.10.12 iron ros-core 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 -
iron, iron-ros-base-torch2.4.0 amd64
arm64
22.04.3 3.10.12 iron ros-base 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 -
iron-desktop-full-torch2.4.0 amd64
arm64
22.04.3 3.10.12 iron desktop-full 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 -

rwthika/ros2-tf (ROS 2, NVIDIA CUDA, NVIDIA TensorRT, TensorFlow)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
humble-ros-core-tf2.16.1 amd64
arm64
22.04.3 3.10.12 humble ros-core 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - 2.16.1
latest, humble, humble-ros-base-tf2.16.1 amd64
arm64
22.04.3 3.10.12 humble ros-base 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - 2.16.1
humble-desktop-full-tf2.16.1 amd64
arm64
22.04.3 3.10.12 humble desktop-full 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - 2.16.1
iron-ros-core-tf2.16.1 amd64
arm64
22.04.3 3.10.12 iron ros-core 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - 2.16.1
iron, iron-ros-base-tf2.16.1 amd64
arm64
22.04.3 3.10.12 iron ros-base 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - 2.16.1
iron-desktop-full-tf2.16.1 amd64
arm64
22.04.3 3.10.12 iron desktop-full 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- - 2.16.1

rwthika/ros2-ml (ROS 2, NVIDIA CUDA, NVIDIA TensorRT, PyTorch, TensorFlow)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
humble-ros-core-tf2.16.1-torch2.4.0 amd64
arm64
22.04.3 3.10.12 humble ros-core 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 2.16.1
latest, humble, humble-ros-base-tf2.16.1-torch2.4.0 amd64
arm64
22.04.3 3.10.12 humble ros-base 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 2.16.1
humble-desktop-full-tf2.16.1-torch2.4.0 amd64
arm64
22.04.3 3.10.12 humble desktop-full 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 2.16.1
iron-ros-core-tf2.16.1-torch2.4.0 amd64
arm64
22.04.3 3.10.12 iron ros-core 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 2.16.1
iron, iron-ros-base-tf2.16.1-torch2.4.0 amd64
arm64
22.04.3 3.10.12 iron ros-base 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 2.16.1
iron-desktop-full-tf2.16.1-torch2.4.0 amd64
arm64
22.04.3 3.10.12 iron desktop-full 3.24.0
3.22.1
12.2.128
12.2.140
8.9.5.27
8.9.4.25
8.6.1.6
8.6.2.3
- 2.3.0 2.16.1

ROS

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
noetic-ros-core amd64
arm64
20.04.6 3.8.10 noetic ros-core 3.16.3 - - - - - -
latest, noetic, noetic-ros-base amd64
arm64
20.04.6 3.8.10 noetic ros-base 3.16.3 - - - - - -
noetic-desktop-full amd64
arm64
20.04.6 3.8.10 noetic desktop-full 3.16.3 - - - - - -

rwthika/ros-cuda (ROS, NVIDIA CUDA)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
noetic-ros-core amd64
arm64
20.04.6 3.8.10 noetic ros-core 3.16.3 11.4.148
11.4.298
- - - - -
latest, noetic, noetic-ros-base amd64
arm64
20.04.6 3.8.10 noetic ros-base 3.16.3 11.4.148
11.4.298
- - - - -
noetic-desktop-full amd64
arm64
20.04.6 3.8.10 noetic desktop-full 3.16.3 11.4.148
11.4.298
- - - - -

rwthika/ros-tensorrt (ROS, NVIDIA CUDA, NVIDIA TensorRT)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
noetic-ros-core amd64
arm64
20.04.2
20.04.6
3.8.10 noetic ros-core 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- - -
latest, noetic, noetic-ros-base amd64
arm64
20.04.2
20.04.6
3.8.10 noetic ros-base 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- - -
noetic-desktop-full amd64
arm64
20.04.2
20.04.6
3.8.10 noetic desktop-full 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- - -

rwthika/ros-triton (ROS, NVIDIA CUDA, NVIDIA Triton Client)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
noetic-ros-core-triton2.48.0 amd64
arm64
20.04.6 3.8.10 noetic ros-core 3.16.3 11.4.148
11.4.298
- - 2.48.0 - -
latest, noetic, noetic-ros-base-triton2.48.0 amd64
arm64
20.04.6 3.8.10 noetic ros-base 3.16.3 11.4.148
11.4.298
- - 2.48.0 - -
noetic-desktop-full-triton2.48.0 amd64
arm64
20.04.6 3.8.10 noetic desktop-full 3.16.3 11.4.148
11.4.298
- - 2.48.0 - -

rwthika/ros-torch (ROS, NVIDIA CUDA, NVIDIA TensorRT, PyTorch)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
noetic-ros-core-torch2.1.0 amd64
arm64
20.04.2
20.04.6
3.8.10 noetic ros-core 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- 2.1.0 -
latest, noetic, noetic-ros-base-torch2.1.0 amd64
arm64
20.04.2
20.04.6
3.8.10 noetic ros-base 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- 2.1.0 -
noetic-desktop-full-torch2.1.0 amd64
arm64
20.04.2
20.04.6
3.8.10 noetic desktop-full 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- 2.1.0 -

rwthika/ros-tf (ROS, NVIDIA CUDA, NVIDIA TensorRT, TensorFlow)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
noetic-ros-core-tf2.12.0 amd64
arm64
20.04.2
20.04.6
3.8.10 noetic ros-core 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- - 2.12.0
latest, noetic, noetic-ros-base-tf2.12.0 amd64
arm64
20.04.2
20.04.6
3.8.10 noetic ros-base 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- - 2.12.0
noetic-desktop-full-tf2.12.0 amd64
arm64
20.04.2
20.04.6
3.8.10 noetic desktop-full 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- - 2.12.0

rwthika/ros-ml (ROS, NVIDIA CUDA, NVIDIA TensorRT, PyTorch, TensorFlow)

Click to expand
Tag Arch Ubuntu Python ROS ROS Package CMake CUDA cuDNN TensorRT Triton PyTorch TensorFlow
noetic-ros-core-tf2.12.0-torch2.1.0 amd64
arm64
20.04.2
20.04.6
3.8.10 noetic ros-core 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- 2.1.0 2.12.0
latest, noetic, noetic-ros-base-tf2.12.0-torch2.1.0 amd64
arm64
20.04.2
20.04.6
3.8.10 noetic ros-base 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- 2.1.0 2.12.0
noetic-desktop-full-tf2.12.0-torch2.1.0 amd64
arm64
20.04.2
20.04.6
3.8.10 noetic desktop-full 3.14.4
3.16.3
11.4.108
11.4.298
8.2.2.26
8.6.0.166
8.0.1
8.5.2
- 2.1.0 2.12.0

Manual Build

docker buildx build \
  --pull \
  --platform $PLATFORM \
  --build-arg BASE_IMAGE_TYPE=$BASE_IMAGE_TYPE \
  --build-arg UBUNTU_VERSION=$UBUNTU_VERSION \
  --build-arg ROS_VERSION=$ROS_VERSION \
  --build-arg ROS_DISTRO=$ROS_DISTRO \
  --build-arg ROS_PACKAGE=$ROS_PACKAGE \
  --build-arg TORCH_VERSION=$TORCH_VERSION \
  --build-arg TF_VERSION=$TF_VERSION \
  --build-arg TRITON_VERSION=$TRITON_VERSION \
  --tag $IMAGE .