From ce37a6fcc59a8e6a5d1b3589cd463bd6b26560f5 Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Fri, 24 May 2024 15:08:56 +0200
Subject: [PATCH 01/64] remove leftover config files for robot and perception
image variants
---
.gitlab-ci/ros-noetic/ros-noetic-perception.yml | 4 ----
.gitlab-ci/ros-noetic/ros-noetic-robot.yml | 4 ----
.gitlab-ci/ros-packages/.perception.yml | 2 --
.gitlab-ci/ros-packages/.robot.yml | 2 --
.gitlab-ci/ros2-humble/ros2-humble-perception.yml | 4 ----
.gitlab-ci/ros2-iron/ros2-iron-perception.yml | 4 ----
6 files changed, 20 deletions(-)
delete mode 100644 .gitlab-ci/ros-noetic/ros-noetic-perception.yml
delete mode 100644 .gitlab-ci/ros-noetic/ros-noetic-robot.yml
delete mode 100644 .gitlab-ci/ros-packages/.perception.yml
delete mode 100644 .gitlab-ci/ros-packages/.robot.yml
delete mode 100644 .gitlab-ci/ros2-humble/ros2-humble-perception.yml
delete mode 100644 .gitlab-ci/ros2-iron/ros2-iron-perception.yml
diff --git a/.gitlab-ci/ros-noetic/ros-noetic-perception.yml b/.gitlab-ci/ros-noetic/ros-noetic-perception.yml
deleted file mode 100644
index 9cf7621..0000000
--- a/.gitlab-ci/ros-noetic/ros-noetic-perception.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
- - .gitlab-ci/.template.yml
- - .gitlab-ci/ros-noetic/.ros-noetic.yml
- - .gitlab-ci/ros-packages/.perception.yml
diff --git a/.gitlab-ci/ros-noetic/ros-noetic-robot.yml b/.gitlab-ci/ros-noetic/ros-noetic-robot.yml
deleted file mode 100644
index c56cc95..0000000
--- a/.gitlab-ci/ros-noetic/ros-noetic-robot.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
- - .gitlab-ci/.template.yml
- - .gitlab-ci/ros-noetic/.ros-noetic.yml
- - .gitlab-ci/ros-packages/.robot.yml
diff --git a/.gitlab-ci/ros-packages/.perception.yml b/.gitlab-ci/ros-packages/.perception.yml
deleted file mode 100644
index 0110458..0000000
--- a/.gitlab-ci/ros-packages/.perception.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-variables:
- ROS_PACKAGE: perception
diff --git a/.gitlab-ci/ros-packages/.robot.yml b/.gitlab-ci/ros-packages/.robot.yml
deleted file mode 100644
index 7bc86b5..0000000
--- a/.gitlab-ci/ros-packages/.robot.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-variables:
- ROS_PACKAGE: robot
diff --git a/.gitlab-ci/ros2-humble/ros2-humble-perception.yml b/.gitlab-ci/ros2-humble/ros2-humble-perception.yml
deleted file mode 100644
index 26c3264..0000000
--- a/.gitlab-ci/ros2-humble/ros2-humble-perception.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
- - .gitlab-ci/.template.yml
- - .gitlab-ci/ros2-humble/.ros2-humble.yml
- - .gitlab-ci/ros-packages/.perception.yml
\ No newline at end of file
diff --git a/.gitlab-ci/ros2-iron/ros2-iron-perception.yml b/.gitlab-ci/ros2-iron/ros2-iron-perception.yml
deleted file mode 100644
index 272e2d4..0000000
--- a/.gitlab-ci/ros2-iron/ros2-iron-perception.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
- - .gitlab-ci/.template.yml
- - .gitlab-ci/ros2-iron/.ros2-iron.yml
- - .gitlab-ci/ros-packages/.perception.yml
\ No newline at end of file
From 4af93fd8b6880259eaaa2bd83d9b5b69753dc93c Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Fri, 24 May 2024 15:09:32 +0200
Subject: [PATCH 02/64] add ros2 jazzy to ci
---
.gitlab-ci.yml | 46 ++++++++++++++++++-
.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml | 6 +++
.../ros2-jazzy/ros2-jazzy-desktop-full.yml | 4 ++
.gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml | 4 ++
.gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml | 4 ++
.gitlab-ci/ros2-jazzy/ros2-jazzy-ros-core.yml | 4 ++
README.md | 16 ++++---
7 files changed, 76 insertions(+), 8 deletions(-)
create mode 100644 .gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
create mode 100644 .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
create mode 100644 .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml
create mode 100644 .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
create mode 100644 .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-core.yml
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e89e61a..224a04b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,7 +5,7 @@ workflow:
variables:
- ROS_DISTROS: noetic,foxy,humble,iron,rolling
+ ROS_DISTROS: noetic,foxy,humble,iron,jazzy,rolling
stages:
@@ -14,6 +14,7 @@ stages:
- ROS 2 Foxy
- ROS 2 Humble
- ROS 2 Iron
+ - ROS 2 Jazzy
- ROS 2 Rolling
# build-cuda-ubuntu20:
@@ -193,6 +194,49 @@ ros2-iron-desktop-full:
strategy: depend
+ros2-jazzy-ros-core:
+ stage: ROS 2 Jazzy
+ rules:
+ - if: $ROS_DISTROS =~ /.*jazzy.*/
+ needs: []
+ trigger:
+ include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-core.yml
+ strategy: depend
+
+ros2-jazzy-ros-base:
+ stage: ROS 2 Jazzy
+ rules:
+ - if: $ROS_DISTROS =~ /.*jazzy.*/
+ needs:
+ - job: ros2-jazzy-ros-core
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
+ strategy: depend
+
+ros2-jazzy-desktop:
+ stage: ROS 2 Jazzy
+ rules:
+ - if: $ROS_DISTROS =~ /.*jazzy.*/
+ needs:
+ - job: ros2-jazzy-ros-base
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml
+ strategy: depend
+
+ros2-jazzy-desktop-full:
+ stage: ROS 2 Jazzy
+ rules:
+ - if: $ROS_DISTROS =~ /.*jazzy.*/
+ needs:
+ - job: ros2-jazzy-desktop
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
+ strategy: depend
+
+
ros2-rolling-ros-core:
stage: ROS 2 Rolling
rules:
diff --git a/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml b/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
new file mode 100644
index 0000000..fe05595
--- /dev/null
+++ b/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
@@ -0,0 +1,6 @@
+variables:
+ UBUNTU_VERSION: "24.04"
+ ROS_VERSION: 2
+ ROS_VERSION_NAME: "ros2"
+ ROS_DISTRO: jazzy
+ DISABLE_ML_ARM64: "true"
diff --git a/.gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml b/.gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
new file mode 100644
index 0000000..a6e5562
--- /dev/null
+++ b/.gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
@@ -0,0 +1,4 @@
+include:
+ - .gitlab-ci/.template.yml
+ - .gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
+ - .gitlab-ci/ros-packages/.desktop-full.yml
diff --git a/.gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml b/.gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml
new file mode 100644
index 0000000..5b827ec
--- /dev/null
+++ b/.gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml
@@ -0,0 +1,4 @@
+include:
+ - .gitlab-ci/.template.yml
+ - .gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
+ - .gitlab-ci/ros-packages/.desktop.yml
\ No newline at end of file
diff --git a/.gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml b/.gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
new file mode 100644
index 0000000..db15699
--- /dev/null
+++ b/.gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
@@ -0,0 +1,4 @@
+include:
+ - .gitlab-ci/.template.yml
+ - .gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
+ - .gitlab-ci/ros-packages/.ros-base.yml
\ No newline at end of file
diff --git a/.gitlab-ci/ros2-jazzy/ros2-jazzy-ros-core.yml b/.gitlab-ci/ros2-jazzy/ros2-jazzy-ros-core.yml
new file mode 100644
index 0000000..c14f146
--- /dev/null
+++ b/.gitlab-ci/ros2-jazzy/ros2-jazzy-ros-core.yml
@@ -0,0 +1,4 @@
+include:
+ - .gitlab-ci/.template.yml
+ - .gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
+ - .gitlab-ci/ros-packages/.ros-core.yml
\ No newline at end of file
diff --git a/README.md b/README.md
index 267c362..5b326f0 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# *docker-ros-ml-images* – Machine Learning-Enabled ROS Docker Images
+# TODO: add information for ROS 2 Jazzy
+
@@ -11,13 +13,13 @@
*docker-ros-ml-images* provides 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**](https://www.ika.rwth-aachen.de/).
-> **DevOps, Containerization and Orchestration of Software-Defined Vehicles** are some of many research topics within our [*Vehicle Intelligence & Automated Driving*](https://www.ika.rwth-aachen.de/en/competences/fields-of-research/vehicle-intelligence-automated-driving.html) domain.
-> If you would like to learn more about how we can support your DevOps or automated driving efforts, feel free to reach out to us!
-> *Timo Woopen - Manager Research Area Vehicle Intelligence & Automated Driving*
-> *+49 241 80 23549*
-> *timo.woopen@ika.rwth-aachen.de*
+> [!IMPORTANT]
+> This repository is open-sourced and maintained by the [**Institute for Automotive Engineering (ika) at RWTH Aachen University**](https://www.ika.rwth-aachen.de/).
+> **DevOps, Containerization and Orchestration of Software-Defined Vehicles** are some of many research topics within our [*Vehicle Intelligence & Automated Driving*](https://www.ika.rwth-aachen.de/en/competences/fields-of-research/vehicle-intelligence-automated-driving.html) domain.
+> If you would like to learn more about how we can support your DevOps or automated driving efforts, feel free to reach out to us!
+> *Timo Woopen - Manager Research Area Vehicle Intelligence & Automated Driving*
+> *+49 241 80 23549*
+> *timo.woopen@ika.rwth-aachen.de*
We recommend to use *docker-ros-ml-images* in combination with our other tools for Docker and ROS.
- [*docker-ros*](https://github.com/ika-rwth-aachen/docker-ros) automatically builds minimal container images of ROS applications
From fd6cb450bd0ebe595bf5ddb006502223180001c5 Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Fri, 24 May 2024 15:34:58 +0200
Subject: [PATCH 03/64] add manual build instructions to readme
---
README.md | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/README.md b/README.md
index 5b326f0..fff98e6 100644
--- a/README.md
+++ b/README.md
@@ -367,3 +367,23 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
+
+
+## Manual Build
+
+```
+docker buildx build
+ --pull
+ --platform $PLATFORM
+ --build-arg BUILD_VERSION=$BUILD_VERSION
+ --build-arg UBUNTU_VERSION=$UBUNTU_VERSION
+ --build-arg CUDA_VERSION=$CUDA_VERSION
+ --build-arg ROS_VERSION=$ROS_VERSION
+ --build-arg ROS_DISTRO=$ROS_DISTRO
+ --build-arg ROS_PACKAGE=$ROS_PACKAGE
+ --build-arg TORCH_VERSION_PY=$TORCH_VERSION_PY
+ --build-arg TORCH_VERSION_CPP=$TORCH_VERSION_CPP
+ --build-arg TF_VERSION_PY=$TF_VERSION_PY
+ --build-arg TF_VERSION_CPP=$TF_VERSION_CPP
+ --tag $IMAGE .
+```
From 516e29f5bd94b8ebcd10b855f0fced5b09d1ac1e Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Fri, 24 May 2024 15:35:25 +0200
Subject: [PATCH 04/64] fix system-wide installation of pip packages for newer
pip versions
---
Dockerfile | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index adf7ff6..39fd50f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -33,6 +33,7 @@ SHELL ["/bin/bash", "-c"]
USER root
# install essentials via apt
+ARG UBUNTU_VERSION
RUN apt-get update && \
apt-get install -y \
bsdmainutils \
@@ -59,7 +60,7 @@ RUN apt-get update && \
x11-apps \
zip \
&& rm -rf /var/lib/apt/lists/*
-RUN pip3 install --upgrade pip
+RUN python -m pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` --upgrade pip
# install more essentials
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
@@ -70,6 +71,7 @@ RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.d
# --- install and setup ROS ----------------------------------------------------
FROM dependencies as ros
ARG TARGETARCH
+ARG UBUNTU_VERSION
# setup keys and sources.list
ARG ROS_VERSION
@@ -98,12 +100,11 @@ RUN apt-get update && \
elif [[ "$ROS_VERSION" == "2" ]]; then \
apt-get install -y \
python3-colcon-common-extensions \
- && pip install colcon-clean ; \
+ && pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` colcon-clean ; \
fi \
&& rm -rf /var/lib/apt/lists/*
# install ROS
-ARG UBUNTU_VERSION
ARG ROS_DISTRO
ENV ROS_DISTRO=${ROS_DISTRO}
ARG ROS_PACKAGE=ros-core
@@ -121,6 +122,7 @@ RUN echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc
# --- install ML stuff ----------------------------------------------------
FROM ros as ros-ml
ARG TARGETARCH
+ARG UBUNTU_VERSION
# install PyTorch
ARG TORCH_VERSION_PY
@@ -129,14 +131,14 @@ RUN if [[ -n $TORCH_VERSION_PY ]]; then \
if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then PT_PACKAGE_NAME=1.11.0+cu113; \
elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then PT_PACKAGE_NAME=2.0.1+cu118; \
else PT_PACKAGE_NAME=${TORCH_VERSION_PY}+cpu; fi && \
- pip install torch==${PT_PACKAGE_NAME} -f https://download.pytorch.org/whl/torch_stable.html ; \
+ pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` torch==${PT_PACKAGE_NAME} -f https://download.pytorch.org/whl/torch_stable.html ; \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
# from: https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
# and: https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html#prereqs-install
if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then TORCH_INSTALL=https://nvidia.box.com/shared/static/ssf2v7pf5i245fk4i0q926hy4imzs2ph.whl; \
elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then TORCH_INSTALL=https://developer.download.nvidia.cn/compute/redist/jp/v511/pytorch/torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl; \
else TORCH_INSTALL=""; fi && \
- python3 -m pip install --no-cache $TORCH_INSTALL && \
+ pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` --no-cache $TORCH_INSTALL && \
apt-get update && \
apt-get install -y libopenblas-base && \
rm -rf /var/lib/apt/lists/* ; \
@@ -170,7 +172,7 @@ ARG TF_VERSION_PY
RUN if [[ -n $TF_VERSION_PY ]]; then \
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}' | cut -d. -f1,2 | tr -d .) && \
ARCH=$(uname -m) && \
- python3 -m pip install --no-cache https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_PY/+*/}/tensorflow-${TF_VERSION_PY}-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-linux_${ARCH}.whl; \
+ pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` --no-cache https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_PY/+*/}/tensorflow-${TF_VERSION_PY}-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-linux_${ARCH}.whl; \
fi
# === final ====================================================================
From 1add4f001f86376a6bf5e25e7731132b1bf59633 Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Fri, 24 May 2024 15:47:15 +0200
Subject: [PATCH 05/64] disable ml images for jazzy for now due to missing
ubuntu 24.04 support
---
.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml b/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
index fe05595..e525b20 100644
--- a/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
+++ b/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
@@ -1,6 +1,9 @@
variables:
UBUNTU_VERSION: "24.04"
ROS_VERSION: 2
- ROS_VERSION_NAME: "ros2"
+ ROS_VERSION_NAME: ros2
ROS_DISTRO: jazzy
- DISABLE_ML_ARM64: "true"
+ DISABLE_CUDA: "true"
+ DISABLE_TORCH: "true"
+ DISABLE_TF: "true"
+ DISABLE_ML: "true"
From d2e6ecf71c0681675129776d2a928690b2654cee Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Fri, 24 May 2024 16:58:51 +0200
Subject: [PATCH 06/64] remove desktop image variants
---
.gitlab-ci.yml | 44 -------------------
.gitlab-ci/ros-noetic/ros-noetic-desktop.yml | 4 --
.../ros2-humble/ros2-humble-desktop.yml | 4 --
.gitlab-ci/ros2-iron/ros2-iron-desktop.yml | 4 --
.gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml | 4 --
README.md | 29 +-----------
6 files changed, 1 insertion(+), 88 deletions(-)
delete mode 100644 .gitlab-ci/ros-noetic/ros-noetic-desktop.yml
delete mode 100644 .gitlab-ci/ros2-humble/ros2-humble-desktop.yml
delete mode 100644 .gitlab-ci/ros2-iron/ros2-iron-desktop.yml
delete mode 100644 .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 224a04b..c329d02 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -53,17 +53,6 @@ ros-noetic-ros-base:
include: .gitlab-ci/ros-noetic/ros-noetic-ros-base.yml
strategy: depend
-ros-noetic-desktop:
- stage: ROS 1 Noetic
- rules:
- - if: $ROS_DISTROS =~ /.*noetic.*/
- needs:
- - job: ros-noetic-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros-noetic/ros-noetic-desktop.yml
- strategy: depend
-
ros-noetic-desktop-full:
stage: ROS 1 Noetic
rules:
@@ -128,17 +117,6 @@ ros2-humble-ros-base:
include: .gitlab-ci/ros2-humble/ros2-humble-ros-base.yml
strategy: depend
-ros2-humble-desktop:
- stage: ROS 2 Humble
- rules:
- - if: $ROS_DISTROS =~ /.*humble.*/
- needs:
- - job: ros2-humble-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-humble/ros2-humble-desktop.yml
- strategy: depend
-
ros2-humble-desktop-full:
stage: ROS 2 Humble
rules:
@@ -171,17 +149,6 @@ ros2-iron-ros-base:
include: .gitlab-ci/ros2-iron/ros2-iron-ros-base.yml
strategy: depend
-ros2-iron-desktop:
- stage: ROS 2 Iron
- rules:
- - if: $ROS_DISTROS =~ /.*iron.*/
- needs:
- - job: ros2-iron-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-iron/ros2-iron-desktop.yml
- strategy: depend
-
ros2-iron-desktop-full:
stage: ROS 2 Iron
rules:
@@ -214,17 +181,6 @@ ros2-jazzy-ros-base:
include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
strategy: depend
-ros2-jazzy-desktop:
- stage: ROS 2 Jazzy
- rules:
- - if: $ROS_DISTROS =~ /.*jazzy.*/
- needs:
- - job: ros2-jazzy-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml
- strategy: depend
-
ros2-jazzy-desktop-full:
stage: ROS 2 Jazzy
rules:
diff --git a/.gitlab-ci/ros-noetic/ros-noetic-desktop.yml b/.gitlab-ci/ros-noetic/ros-noetic-desktop.yml
deleted file mode 100644
index 6135133..0000000
--- a/.gitlab-ci/ros-noetic/ros-noetic-desktop.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
- - .gitlab-ci/.template.yml
- - .gitlab-ci/ros-noetic/.ros-noetic.yml
- - .gitlab-ci/ros-packages/.desktop.yml
diff --git a/.gitlab-ci/ros2-humble/ros2-humble-desktop.yml b/.gitlab-ci/ros2-humble/ros2-humble-desktop.yml
deleted file mode 100644
index c6493f5..0000000
--- a/.gitlab-ci/ros2-humble/ros2-humble-desktop.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
- - .gitlab-ci/.template.yml
- - .gitlab-ci/ros2-humble/.ros2-humble.yml
- - .gitlab-ci/ros-packages/.desktop.yml
\ No newline at end of file
diff --git a/.gitlab-ci/ros2-iron/ros2-iron-desktop.yml b/.gitlab-ci/ros2-iron/ros2-iron-desktop.yml
deleted file mode 100644
index fd3631c..0000000
--- a/.gitlab-ci/ros2-iron/ros2-iron-desktop.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
- - .gitlab-ci/.template.yml
- - .gitlab-ci/ros2-iron/.ros2-iron.yml
- - .gitlab-ci/ros-packages/.desktop.yml
\ No newline at end of file
diff --git a/.gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml b/.gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml
deleted file mode 100644
index 5b827ec..0000000
--- a/.gitlab-ci/ros2-jazzy/ros2-jazzy-desktop.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
- - .gitlab-ci/.template.yml
- - .gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
- - .gitlab-ci/ros-packages/.desktop.yml
\ No newline at end of file
diff --git a/README.md b/README.md
index fff98e6..2cdfd56 100644
--- a/README.md
+++ b/README.md
@@ -41,7 +41,7 @@ With *docker-ros-ml-images*, we provide a variety of lightweight multi-arch mach
| Component | Variations |
| ---------------- | -------------------------------------------------------------------- |
| ROS Distribution | noetic, foxy, humble, iron, rolling |
-| ROS Components | core, base, desktop, desktop-full |
+| ROS Components | core, base, desktop-full |
| ML Framework | CUDA, PyTorch Python, PyTorch C++, TensorFlow Python, TensorFlow C++ |
| Architecture | amd64, arm64 |
@@ -76,7 +76,6 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| ------------------------------------- | :------------: | :-----: | :----: | :----: | :----------: | :----: | :---: | :---: | :------: | :------------: | :---------: | :---------------: | :------------: |
| `noetic-ros-core` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | - | - | - | - | - | - | - |
| `latest`, `noetic`, `noetic-ros-base` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | - | - | - | - | - | - | - |
-| `noetic-desktop` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop | 3.27.2 | - | - | - | - | - | - | - |
| `noetic-desktop-full` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | - | - | - | - | - | - | - |
@@ -94,7 +93,6 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| ------------------------------------- | :------------: | :-----: | :----: | :----: | :----------: | :----: | :-----: | :---: | :------: | :------------: | :---------: | :---------------: | :------------: |
| `noetic-ros-core` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
| `latest`, `noetic`, `noetic-ros-base` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
-| `noetic-desktop` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
| `noetic-desktop-full` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
@@ -112,15 +110,12 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| ------------------------------------------------ | :------------: | :----------: | :---------: | :---------: | :---------------: | :---------: | :----------: | :--------: | :--------: | :------------: | :---------: | :---------------: | :------------: |
| `noetic-ros-core-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
| `latest`, `noetic`, `noetic-ros-base-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
-| `noetic-desktop-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
| `noetic-desktop-full-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
| `noetic-ros-core-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
| `noetic-ros-base-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
-| `noetic-desktop-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
| `noetic-desktop-full-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
| `noetic-ros-core-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | noetic
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
| `noetic-ros-base-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | noetic
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `noetic-desktop-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | noetic
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
| `noetic-desktop-full-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | noetic
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
@@ -138,15 +133,12 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| ---------------------------------------------- | :------------: | :-----: | :----: | :----: | :----------: | :----: | :-----: | :---: | :------: | :------------: | :---------: | :---------------: | :------------: |
| `noetic-ros-core-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
| `latest`, `noetic`, `noetic-ros-base-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
-| `noetic-desktop-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
| `noetic-desktop-full-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
| `noetic-ros-core-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
| `noetic-ros-base-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
-| `noetic-desktop-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
| `noetic-desktop-full-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
| `noetic-ros-core-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
| `noetic-ros-base-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
-| `noetic-desktop-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
| `noetic-desktop-full-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
@@ -164,7 +156,6 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| --------------------------------------------------------- | :------------: | :-----: | :----: | :----: | :----------: | :----: | :-----: | :---: | :------: | :------------: | :---------: | :---------------: | :------------: |
| `noetic-ros-core-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
| `latest`, `noetic`, `noetic-ros-base-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
-| `noetic-desktop-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
| `noetic-desktop-full-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
@@ -187,11 +178,9 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| `rolling-desktop` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | - | - | - | - | - | - | - |
| `iron-ros-core` | amd64
arm64 | 22.04.2 | 3.10.12 | iron | ros-core | 3.27.2 | - | - | - | - | - | - | - |
| `iron`, `iron-ros-base` | amd64
arm64 | 22.04.2 | 3.10.12 | iron | ros-base | 3.27.2 | - | - | - | - | - | - | - |
-| `iron-desktop` | amd64
arm64 | 22.04.2 | 3.10.12 | iron | desktop | 3.27.2 | - | - | - | - | - | - | - |
| `iron-desktop-full` | amd64
arm64 | 22.04.2 | 3.10.12 | iron | desktop-full | 3.27.2 | - | - | - | - | - | - | - |
| `humble-ros-core` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | ros-core | 3.27.2 | - | - | - | - | - | - | - |
| `latest`, `humble`, `humble-ros-base` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | ros-base | 3.27.2 | - | - | - | - | - | - | - |
-| `humble-desktop` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | desktop | 3.27.2 | - | - | - | - | - | - | - |
| `humble-desktop-full` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | desktop-full | 3.27.2 | - | - | - | - | - | - | - |
| `foxy-ros-core` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | - | - | - | - | - | - | - |
| `foxy`, `foxy-ros-base` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | - | - | - | - | - | - | - |
@@ -215,11 +204,9 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| `rolling-desktop` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
| `iron-ros-core` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
| `iron`, `iron-ros-base` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
-| `iron-desktop` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
| `iron-desktop-full` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
| `humble-ros-core` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
| `latest`, `humble`, `humble-ros-base` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
-| `humble-desktop` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
| `humble-desktop-full` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
| `foxy-ros-core` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
| `foxy`, `foxy-ros-base` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
@@ -249,27 +236,21 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| `rolling-desktop-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | rolling
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
| `iron-ros-core-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
| `iron`, `iron-ros-base-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
-| `iron-desktop-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
| `iron-desktop-full-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
| `iron-ros-core-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
| `iron-ros-base-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
-| `iron-desktop-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
| `iron-desktop-full-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
| `iron-ros-core-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
| `iron-ros-base-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `iron-desktop-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
| `iron-desktop-full-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
| `humble-ros-core-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
| `latest`, `humble`, `humble-ros-base-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
-| `humble-desktop-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
| `humble-desktop-full-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
| `humble-ros-core-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
| `humble-ros-base-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
-| `humble-desktop-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
| `humble-desktop-full-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
| `humble-ros-core-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
| `humble-ros-base-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `humble-desktop-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
| `humble-desktop-full-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
| `foxy-ros-core-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
| `foxy`, `foxy-ros-base-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
@@ -305,27 +286,21 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| `rolling-desktop-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
| `iron-ros-core-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
| `iron`, `iron-ros-base-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
-| `iron-desktop-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
| `iron-desktop-full-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
| `iron-ros-core-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
| `iron-ros-base-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
-| `iron-desktop-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
| `iron-desktop-full-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
| `iron-ros-core-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
| `iron-ros-base-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
-| `iron-desktop-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
| `iron-desktop-full-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
| `humble-ros-core-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
| `latest`, `humble`, `humble-ros-base-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
-| `humble-desktop-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
| `humble-desktop-full-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
| `humble-ros-core-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
| `humble-ros-base-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
-| `humble-desktop-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
| `humble-desktop-full-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
| `humble-ros-core-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
| `humble-ros-base-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
-| `humble-desktop-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
| `humble-desktop-full-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
| `foxy-ros-core-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
| `foxy`, `foxy-ros-base-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
@@ -355,11 +330,9 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| `rolling-desktop-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
| `iron-ros-core-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
| `iron`, `iron-ros-base-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
-| `iron-desktop-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
| `iron-desktop-full-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
| `humble-ros-core-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
| `latest`, `humble`, `humble-ros-base-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
-| `humble-desktop-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
| `humble-desktop-full-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
| `foxy-ros-core-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
| `foxy`, `foxy-ros-base-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
From 7d78dcfed68c370e84913a982f2c88cce6ac2741 Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Fri, 24 May 2024 17:36:28 +0200
Subject: [PATCH 07/64] remove custom cuda image build
---
.gitlab-ci.yml | 16 ------
.gitlab-ci/.cuda-base.yml | 61 ---------------------
Dockerfile | 20 ++++---
README.md | 1 -
cuda/.gitignore | 1 -
cuda/Dockerfile | 110 --------------------------------------
cuda/README.md | 35 ------------
7 files changed, 12 insertions(+), 232 deletions(-)
delete mode 100644 .gitlab-ci/.cuda-base.yml
delete mode 100644 cuda/.gitignore
delete mode 100644 cuda/Dockerfile
delete mode 100644 cuda/README.md
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c329d02..28a1a7d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -9,7 +9,6 @@ variables:
stages:
- # - CUDA
- ROS 1 Noetic
- ROS 2 Foxy
- ROS 2 Humble
@@ -17,21 +16,6 @@ stages:
- ROS 2 Jazzy
- ROS 2 Rolling
-# build-cuda-ubuntu20:
-# stage: CUDA
-# trigger:
-# include: .gitlab-ci/.cuda-base.yml
-# strategy: depend
-# variables:
-# UBUNTU_VERSION: "20.04"
-
-# build-cuda-ubuntu22:
-# stage: CUDA
-# trigger:
-# include: .gitlab-ci/.cuda-base.yml
-# strategy: depend
-# variables:
-# UBUNTU_VERSION: "22.04"
ros-noetic-ros-core:
stage: ROS 1 Noetic
diff --git a/.gitlab-ci/.cuda-base.yml b/.gitlab-ci/.cuda-base.yml
deleted file mode 100644
index 061418f..0000000
--- a/.gitlab-ci/.cuda-base.yml
+++ /dev/null
@@ -1,61 +0,0 @@
-stages:
- - Build
-
-default:
- image: docker:20.10.22-git
- services:
- - docker:20.10.22-dind
- tags:
- - privileged
- before_script:
- - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
-
-variables:
- DOCKER_DRIVER: overlay2
- DOCKER_TLS_CERTDIR: /certs
- GIT_SUBMODULE_STRATEGY: recursive
- IMAGE_BASE: gitlab.ika.rwth-aachen.de:5050/fb-fi/ops/docker-ros-ml-images/cuda
- UBUNTU_VERSION: "20.04"
- TYPE: run
- CUDA_VERSION: "11.8"
- CUDNN_VERSION: "8.6.0.163-1"
- LIBNVINFER_VERSION: "8.5.3-1"
- IMAGE_CI: ${IMAGE_BASE}:${CUDA_VERSION}-ubuntu${UBUNTU_VERSION}-cudnn${CUDNN_VERSION}-trt${LIBNVINFER_VERSION}
-
-
-.docker-build:
- script:
- - cd cuda
- - >
- docker buildx build
- --pull
- --push
- --platform $PLATFORM
- --build-arg UBUNTU_VERSION=$UBUNTU_VERSION
- --build-arg TYPE=$TYPE
- --build-arg CUDA=$CUDA_VERSION
- --build-arg CUDNN=$CUDNN_VERSION
- --build-arg LIBNVINFER=$LIBNVINFER_VERSION
- --tag $IMAGE
- -f Dockerfile
- .
-
-build-amd64:
- stage: Build
- tags: [privileged, amd64]
- script:
- - !reference [.docker-build, script]
- variables:
- PLATFORM: linux/amd64
- IMAGE: ${IMAGE_CI}-amd64
-
-build-arm64:
- stage: Build
- tags: [privileged, arm64]
- rules:
- - if: $UBUNTU_VERSION != '22.04'
- script:
- - !reference [.docker-build, script]
- variables:
- PLATFORM: linux/arm64
- IMAGE: ${IMAGE_CI}-arm64
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 39fd50f..3ba4be3 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,7 +2,6 @@
# --load \
# --platform $(uname)/$(uname -m) \
# --build-arg BUILD_VERSION=$BUILD_VERSION \
-# --build-arg CUDA_VERSION=$CUDA_VERSION \
# --build-arg UBUNTU_VERSION=$UBUNTU_VERSION \
# --build-arg ROS_VERSION=$ROS_VERSION \
# --build-arg ROS_DISTRO=$ROS_DISTRO \
@@ -15,17 +14,22 @@
# .
ARG BUILD_VERSION
-ARG UBUNTU_VERSION="20.04"
-ARG CUDA_VERSION=11.8
+ARG UBUNTU_VERSION="22.04"
-# === base (multiarch) ===============================================================
-FROM ubuntu:${UBUNTU_VERSION} as base
+# === base-amd64 ==================================================================
+FROM --platform=amd64 ubuntu:${UBUNTU_VERSION} as base-amd64
-# === base-ml (multiarch) ============================================================
-FROM rwthika/cuda:${CUDA_VERSION}-cudnn-trt-ubuntu${UBUNTU_VERSION} as base-ml
+# === base-arm64 ==================================================================
+FROM --platform=arm64 ubuntu:${UBUNTU_VERSION} as base-arm64
+
+# === base-ml-amd64 ==================================================================
+FROM --platform=amd64 nvcr.io/nvidia/tensorrt:24.04-py3 as base-ml-amd64
+
+# === base-ml-arm64 ==================================================================
+FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.6.2-runtime as base-ml-arm64
# === dependencies ===================================================================
-FROM "base${BUILD_VERSION}" as dependencies
+FROM "base${BUILD_VERSION}-${TARGETARCH}" as dependencies
ARG DEBIAN_FRONTEND=noninteractive
SHELL ["/bin/bash", "-c"]
diff --git a/README.md b/README.md
index 2cdfd56..134fed7 100644
--- a/README.md
+++ b/README.md
@@ -350,7 +350,6 @@ docker buildx build
--platform $PLATFORM
--build-arg BUILD_VERSION=$BUILD_VERSION
--build-arg UBUNTU_VERSION=$UBUNTU_VERSION
- --build-arg CUDA_VERSION=$CUDA_VERSION
--build-arg ROS_VERSION=$ROS_VERSION
--build-arg ROS_DISTRO=$ROS_DISTRO
--build-arg ROS_PACKAGE=$ROS_PACKAGE
diff --git a/cuda/.gitignore b/cuda/.gitignore
deleted file mode 100644
index c776bdf..0000000
--- a/cuda/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.deb
\ No newline at end of file
diff --git a/cuda/Dockerfile b/cuda/Dockerfile
deleted file mode 100644
index 273bc33..0000000
--- a/cuda/Dockerfile
+++ /dev/null
@@ -1,110 +0,0 @@
-# docker buildx build \
-# --load \
-# --platform $(uname)/$(uname -m) \
-# --build-arg UBUNTU_VERSION=$UBUNTU_VERSION \
-# --build-arg CUDA_VERSION=$CUDA_VERSION \
-# --build-arg CUDNN_VERSION=$CUDNN_VERSION \
-# --build-arg TENSORRT_VERSION=$TENSORRT_VERSION \
-# --build-arg INSTALL_AS_DEV=$INSTALL_AS_DEV \
-# --tag $IMAGE \
-# .
-
-ARG UBUNTU_VERSION=20.04
-
-# === base-amd64-20.04 ===============================================================
-FROM --platform=amd64 ubuntu:20.04 as base-amd64-20.04
-
-# === base-arm64-20.04 ===============================================================
-FROM --platform=arm64 nvcr.io/nvidia/l4t-base:35.4.1 as base-arm64-20.04
-
-# === base-amd64-22.04 ===============================================================
-FROM --platform=amd64 ubuntu:22.04 as base-amd64-22.04
-
-# === base-arm64-22.04 ===============================================================
-# not supported
-
-# === dependencies =============================================================
-FROM "base-${TARGETARCH}-${UBUNTU_VERSION}" as dependencies
-ARG TARGETARCH
-ENV DEBIAN_FRONTEND=noninteractive
-
-ARG UBUNTU_VERSION
-ARG CUDA_VERSION=11.8
-ARG CUDNN_VERSION=8.6.0.163-1
-ARG TENSORRT_VERSION=8.5.3-1
-ARG INSTALL_AS_DEV=0
-
-ENV NVIDIA_VISIBLE_DEVICES all
-ENV NVIDIA_DRIVER_CAPABILITIES all
-
-SHELL ["/bin/bash", "-c"]
-
-# install essentials
-RUN apt-get update && \
- apt-get install -y \
- wget \
- gnupg2 && \
- if [[ "$INSTALL_AS_DEV" == "1" ]]; then apt-get install -y build-essential; fi && \
- rm -rf /var/lib/apt/lists/*
-
-# set up CUDA apt repositories
-RUN if [[ "$TARGETARCH" == "amd64" ]]; then \
- wget -q -O /tmp/cuda-keyring_1.0-1_all.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/x86_64/cuda-keyring_1.0-1_all.deb; \
- elif [[ "$TARGETARCH" == "arm64" ]]; then \
- wget -q -O /tmp/cuda-keyring_1.0-1_all.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/arm64/cuda-keyring_1.0-1_all.deb; \
- fi && \
- dpkg -i /tmp/cuda-keyring_1.0-1_all.deb && \
- rm -rf /tmp/cuda-keyring_1.0-1_all.deb
-
-# set up L4T apt repositories (NVIDIA Jetson)
-RUN if [[ "$TARGETARCH" == "arm64" ]]; then \
- echo "deb https://repo.download.nvidia.com/jetson/common r35.4 main" >> /etc/apt/sources.list && \
- echo "deb https://repo.download.nvidia.com/jetson/t194 r35.4 main" >> /etc/apt/sources.list && \
- apt-key adv --fetch-key http://repo.download.nvidia.com/jetson/jetson-ota-public.asc && \
- mkdir -p /opt/nvidia/l4t-packages/ && \
- touch /opt/nvidia/l4t-packages/.nv-l4t-disable-boot-fw-update-in-preinstall && \
- rm -rf /var/lib/apt/lists/* ; \
- fi
-
-# install CUDA
-RUN apt-get update && \
- if [[ "$TARGETARCH" == "amd64" ]]; then \
- apt-get install -y cuda-libraries-${CUDA_VERSION/./-}; \
- if [[ "$INSTALL_AS_DEV" == "1" ]]; then apt-get install -y cuda-toolkit-${CUDA_VERSION/./-} cuda-demo-suite-${CUDA_VERSION/./-}; fi \
- elif [[ "$TARGETARCH" == "arm64" ]]; then \
- echo "N" | apt-get install -y cuda-runtime-${CUDA_VERSION/./-}; \
- if [[ "$INSTALL_AS_DEV" == "1" ]]; then apt-get install -y cuda-toolkit-${CUDA_VERSION/./-}; fi \
- fi && \
- echo "export PATH=/usr/local/cuda/bin:$PATH" >> ~/.bashrc && \
- rm -rf /var/lib/apt/lists/*
-
-# install cuDNN
-RUN --mount=type=bind,source=cudnn-local-repo-${TARGETARCH}.deb,target=/cudnn-local-repo.deb,ro \
- gpg_key=$(dpkg -i cudnn-local-repo.deb | grep -oP "(?<=cp )[^ ]+(?= )") && \
- cp ${gpg_key} /usr/share/keyrings/ && \
- CUDNN_MAJOR_VERSION=${CUDNN_VERSION%%.*} && \
- apt-get update && \
- apt-get install -y libcudnn${CUDNN_MAJOR_VERSION}=${CUDNN_VERSION}+cuda${CUDA_VERSION} && \
- if [[ "$INSTALL_AS_DEV" == "1" ]]; then \
- apt-get install -y libcudnn${CUDNN_MAJOR_VERSION}-dev=${CUDNN_VERSION}+cuda${CUDA_VERSION}; \
- fi && \
- rm -rf /var/lib/apt/lists/*
-
-# install TensorRT
-RUN --mount=type=bind,source=nv-tensorrt-local-repo-${TARGETARCH}.deb,target=/nv-tensorrt-local-repo.deb,ro \
- gpg_key=$(dpkg -i nv-tensorrt-local-repo.deb | grep -oP "(?<=cp )[^ ]+(?= )") && \
- cp ${gpg_key} /usr/share/keyrings/ && \
- TENSORRT_MAJOR_VERSION=${TENSORRT_VERSION%%.*} && \
- apt-get update && \
- apt-get install -y \
- libnvinfer${TENSORRT_MAJOR_VERSION}=${TENSORRT_VERSION}+cuda${CUDA_VERSION} \
- libnvinfer-plugin${TENSORRT_MAJOR_VERSION}=${TENSORRT_VERSION}+cuda${CUDA_VERSION} && \
- if [[ "$INSTALL_AS_DEV" == "1" ]]; then \
- apt-get install -y \
- libnvinfer-dev=${TENSORRT_VERSION}+cuda${CUDA_VERSION} \
- libnvinfer-plugin-dev=${TENSORRT_VERSION}+cuda${CUDA_VERSION}; \
- fi && \
- rm -rf /var/lib/apt/lists/*
-
-# container startup setup
-CMD ["bash"]
diff --git a/cuda/README.md b/cuda/README.md
deleted file mode 100644
index 6089fe0..0000000
--- a/cuda/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-## Docker Images for CUDA, cuDNN, TensorRT
-
-The Dockerfile in this directory can be used to build Docker images including arbitrary versions of CUDA, cuDNN, and TensorRT, either runtime-only or including dev-libraries. The images are well suited as base images for other Dockerfiles. In this repository, they are used as base images for the machine-learning enabled ROS Docker images.
-
-### Why not use `nvidia/cuda` or `nvcr.io/nvidia/tensorrt`?
-
-NVIDIA releases official CUDA-related Docker images on both DockerHub (e.g., [`nvidia/cuda`](https://hub.docker.com/r/nvidia/cuda)) and their own NGC (e.g., [`nvcr.io/nvidia/tensorrt`](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorrt)). The former offers a variety of different CUDA versions including cuDNN installations, but no support for TensorRT. The latter offers images with CUDA, cuDNN, and TensorRT installed, but uses a monthly update cycle containing only specific versions of those libraries. In contrast, this Dockerfile can be used to build multi-arch combinations of arbitrary CUDA, cuDNN, and TensorRT versions, giving more flexibility.
-
-### Available Images
-
-| Tag | Arch | Ubuntu | CUDA | cuDNN | TensorRT |
-| ------------------------------------ | :------------: | :-----: | :-----: | :---: | :------: |
-| `11.8-cudnn-trt-ubuntu20.04[-devel]` | amd64
arm64 | 20.04.6 | 11.8.89 | 8.6.0 | 8.5.3 |
-| `11.8-cudnn-trt-ubuntu22.04[-devel]` | amd64 | 22.04.2 | 11.8.89 | 8.6.0 | 8.5.3 |
-
-### Build
-
-1. Download a cuDNN installer deb-package from [NVIDIA's download page](https://developer.nvidia.com/rdp/cudnn-archive) (login required).
-2. Place the cuDNN installer deb-package in this directory and rename it to `cudnn-local-repo-$(dpkg --print-architecture).deb`.
-3. Download a TensorRT installer deb-package from [NVIDIA's download page](https://developer.nvidia.com/tensorrt-download) (login required).
-4. Place the cuDNN installer deb-package in this directory and rename it to `nv-tensorrt-local-repo-$(dpkg --print-architecture).deb`.
-5. Build the Docker image with below command.
-
-```bash
-docker buildx build \
- --load \
- --platform $(uname)/$(uname -m) \
- --build-arg UBUNTU_VERSION=$UBUNTU_VERSION \
- --build-arg CUDA_VERSION=$CUDA_VERSION \
- --build-arg CUDNN_VERSION=$CUDNN_VERSION \
- --build-arg TENSORRT_VERSION=$TENSORRT_VERSION \
- --build-arg INSTALL_AS_DEV=$INSTALL_AS_DEV \
- --tag rwthika/cuda:$CUDA_VERSION-cudnn-trt-ubuntu$UBUNTU_VERSION \
- .
-```
From 9c26bf680f4f59c358965bd1e0fb3422d2dfc2ed Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Mon, 27 May 2024 11:36:01 +0200
Subject: [PATCH 08/64] specify nvidia base images for different ubuntu
versions
---
Dockerfile | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 3ba4be3..d64da82 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -16,20 +16,20 @@
ARG BUILD_VERSION
ARG UBUNTU_VERSION="22.04"
-# === base-amd64 ==================================================================
-FROM --platform=amd64 ubuntu:${UBUNTU_VERSION} as base-amd64
-
-# === base-arm64 ==================================================================
-FROM --platform=arm64 ubuntu:${UBUNTU_VERSION} as base-arm64
-
-# === base-ml-amd64 ==================================================================
-FROM --platform=amd64 nvcr.io/nvidia/tensorrt:24.04-py3 as base-ml-amd64
-
-# === base-ml-arm64 ==================================================================
-FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.6.2-runtime as base-ml-arm64
-
-# === dependencies ===================================================================
-FROM "base${BUILD_VERSION}-${TARGETARCH}" as dependencies
+# === base${BUILD_VERSION}-ubuntu${UBUNTU_VERSION}-${TARGETARCH} ===============
+FROM --platform=amd64 ubuntu:${UBUNTU_VERSION} as base-ubuntu20.04-amd64
+FROM --platform=amd64 ubuntu:${UBUNTU_VERSION} as base-ubuntu22.04-amd64
+FROM --platform=amd64 ubuntu:${UBUNTU_VERSION} as base-ubuntu24.04-amd64
+FROM --platform=arm64 ubuntu:${UBUNTU_VERSION} as base-ubuntu20.04-arm64
+FROM --platform=arm64 ubuntu:${UBUNTU_VERSION} as base-ubuntu22.04-arm64
+FROM --platform=arm64 ubuntu:${UBUNTU_VERSION} as base-ubuntu24.04-arm64
+FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.04-py3 as base-ml-ubuntu20.04-amd64
+FROM --platform=amd64 nvcr.io/nvidia/tensorrt:24.04-py3 as base-ml-ubuntu22.04-amd64
+FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.5.2-runtime as base-ml-ubuntu20.04-arm64
+FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.6.2-runtime as base-ml-ubuntu22.04-arm64
+
+# === dependencies =============================================================
+FROM "base${BUILD_VERSION}-ubuntu${UBUNTU_VERSION}-${TARGETARCH}" as dependencies
ARG DEBIAN_FRONTEND=noninteractive
SHELL ["/bin/bash", "-c"]
From 80ad6025ad0be9947b1215c073876decf4702f8b Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Mon, 27 May 2024 11:36:23 +0200
Subject: [PATCH 09/64] remove support for foxy as it has gone eol
---
.gitlab-ci.yml | 35 +--------------------
.gitlab-ci/ros2-foxy/.ros2-foxy.yml | 5 ---
.gitlab-ci/ros2-foxy/ros2-foxy-desktop.yml | 4 ---
.gitlab-ci/ros2-foxy/ros2-foxy-ros-base.yml | 4 ---
.gitlab-ci/ros2-foxy/ros2-foxy-ros-core.yml | 4 ---
README.md | 31 ++----------------
6 files changed, 3 insertions(+), 80 deletions(-)
delete mode 100644 .gitlab-ci/ros2-foxy/.ros2-foxy.yml
delete mode 100644 .gitlab-ci/ros2-foxy/ros2-foxy-desktop.yml
delete mode 100644 .gitlab-ci/ros2-foxy/ros2-foxy-ros-base.yml
delete mode 100644 .gitlab-ci/ros2-foxy/ros2-foxy-ros-core.yml
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 28a1a7d..b29ffb9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -5,12 +5,11 @@ workflow:
variables:
- ROS_DISTROS: noetic,foxy,humble,iron,jazzy,rolling
+ ROS_DISTROS: noetic,humble,iron,jazzy,rolling
stages:
- ROS 1 Noetic
- - ROS 2 Foxy
- ROS 2 Humble
- ROS 2 Iron
- ROS 2 Jazzy
@@ -49,38 +48,6 @@ ros-noetic-desktop-full:
strategy: depend
-ros2-foxy-ros-core:
- stage: ROS 2 Foxy
- rules:
- - if: $ROS_DISTROS =~ /.*foxy.*/
- needs: []
- trigger:
- include: .gitlab-ci/ros2-foxy/ros2-foxy-ros-core.yml
- strategy: depend
-
-ros2-foxy-ros-base:
- stage: ROS 2 Foxy
- rules:
- - if: $ROS_DISTROS =~ /.*foxy.*/
- needs:
- - job: ros2-foxy-ros-core
- optional: true
- trigger:
- include: .gitlab-ci/ros2-foxy/ros2-foxy-ros-base.yml
- strategy: depend
-
-ros2-foxy-desktop:
- stage: ROS 2 Foxy
- rules:
- - if: $ROS_DISTROS =~ /.*foxy.*/
- needs:
- - job: ros2-foxy-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-foxy/ros2-foxy-desktop.yml
- strategy: depend
-
-
ros2-humble-ros-core:
stage: ROS 2 Humble
rules:
diff --git a/.gitlab-ci/ros2-foxy/.ros2-foxy.yml b/.gitlab-ci/ros2-foxy/.ros2-foxy.yml
deleted file mode 100644
index 7530380..0000000
--- a/.gitlab-ci/ros2-foxy/.ros2-foxy.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-variables:
- UBUNTU_VERSION: "20.04"
- ROS_VERSION: 2
- ROS_VERSION_NAME: "ros2"
- ROS_DISTRO: foxy
diff --git a/.gitlab-ci/ros2-foxy/ros2-foxy-desktop.yml b/.gitlab-ci/ros2-foxy/ros2-foxy-desktop.yml
deleted file mode 100644
index 227bce6..0000000
--- a/.gitlab-ci/ros2-foxy/ros2-foxy-desktop.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
- - .gitlab-ci/.template.yml
- - .gitlab-ci/ros2-foxy/.ros2-foxy.yml
- - .gitlab-ci/ros-packages/.desktop.yml
diff --git a/.gitlab-ci/ros2-foxy/ros2-foxy-ros-base.yml b/.gitlab-ci/ros2-foxy/ros2-foxy-ros-base.yml
deleted file mode 100644
index c5c23c1..0000000
--- a/.gitlab-ci/ros2-foxy/ros2-foxy-ros-base.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
- - .gitlab-ci/.template.yml
- - .gitlab-ci/ros2-foxy/.ros2-foxy.yml
- - .gitlab-ci/ros-packages/.ros-base.yml
diff --git a/.gitlab-ci/ros2-foxy/ros2-foxy-ros-core.yml b/.gitlab-ci/ros2-foxy/ros2-foxy-ros-core.yml
deleted file mode 100644
index a3ac7e5..0000000
--- a/.gitlab-ci/ros2-foxy/ros2-foxy-ros-core.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-include:
- - .gitlab-ci/.template.yml
- - .gitlab-ci/ros2-foxy/.ros2-foxy.yml
- - .gitlab-ci/ros-packages/.ros-core.yml
diff --git a/README.md b/README.md
index 134fed7..ad13e23 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
-
+
@@ -40,7 +40,7 @@ With *docker-ros-ml-images*, we provide a variety of lightweight multi-arch mach
| Component | Variations |
| ---------------- | -------------------------------------------------------------------- |
-| ROS Distribution | noetic, foxy, humble, iron, rolling |
+| ROS Distribution | noetic, humble, iron, jazzy, rolling |
| ROS Components | core, base, desktop-full |
| ML Framework | CUDA, PyTorch Python, PyTorch C++, TensorFlow Python, TensorFlow C++ |
| Architecture | amd64, arm64 |
@@ -182,9 +182,6 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| `humble-ros-core` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | ros-core | 3.27.2 | - | - | - | - | - | - | - |
| `latest`, `humble`, `humble-ros-base` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | ros-base | 3.27.2 | - | - | - | - | - | - | - |
| `humble-desktop-full` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | desktop-full | 3.27.2 | - | - | - | - | - | - | - |
-| `foxy-ros-core` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | - | - | - | - | - | - | - |
-| `foxy`, `foxy-ros-base` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | - | - | - | - | - | - | - |
-| `foxy-desktop` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | desktop | 3.27.2 | - | - | - | - | - | - | - |
@@ -208,9 +205,6 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| `humble-ros-core` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
| `latest`, `humble`, `humble-ros-base` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
| `humble-desktop-full` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
-| `foxy-ros-core` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
-| `foxy`, `foxy-ros-base` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
-| `foxy-desktop` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
@@ -252,15 +246,6 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| `humble-ros-core-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
| `humble-ros-base-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
| `humble-desktop-full-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `foxy-ros-core-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
-| `foxy`, `foxy-ros-base-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
-| `foxy-desktop-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
-| `foxy-ros-core-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
-| `foxy-ros-base-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
-| `foxy-desktop-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
-| `foxy-ros-core-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | foxy
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `foxy-ros-base-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | foxy
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `foxy-desktop-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | foxy
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
@@ -302,15 +287,6 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| `humble-ros-core-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
| `humble-ros-base-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
| `humble-desktop-full-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
-| `foxy-ros-core-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
-| `foxy`, `foxy-ros-base-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
-| `foxy-desktop-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
-| `foxy-ros-core-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
-| `foxy-ros-base-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
-| `foxy-desktop-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
-| `foxy-ros-core-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
-| `foxy-ros-base-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
-| `foxy-desktop-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
@@ -334,9 +310,6 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| `humble-ros-core-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
| `latest`, `humble`, `humble-ros-base-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
| `humble-desktop-full-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
-| `foxy-ros-core-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
-| `foxy`, `foxy-ros-base-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
-| `foxy-desktop-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | foxy | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
From 57a56c0937842e23c19ec3f955ce1fef14606e81 Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Mon, 27 May 2024 16:12:07 +0200
Subject: [PATCH 10/64] fix deps between ci jobs
---
.gitlab-ci.yml | 8 ++++----
README.md | 24 ++++++++++++------------
2 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b29ffb9..f916176 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -41,7 +41,7 @@ ros-noetic-desktop-full:
rules:
- if: $ROS_DISTROS =~ /.*noetic.*/
needs:
- - job: ros-noetic-desktop
+ - job: ros-noetic-ros-base
optional: true
trigger:
include: .gitlab-ci/ros-noetic/ros-noetic-desktop-full.yml
@@ -73,7 +73,7 @@ ros2-humble-desktop-full:
rules:
- if: $ROS_DISTROS =~ /.*humble.*/
needs:
- - job: ros2-humble-desktop
+ - job: ros2-humble-ros-base
optional: true
trigger:
include: .gitlab-ci/ros2-humble/ros2-humble-desktop-full.yml
@@ -105,7 +105,7 @@ ros2-iron-desktop-full:
rules:
- if: $ROS_DISTROS =~ /.*iron.*/
needs:
- - job: ros2-iron-desktop
+ - job: ros2-iron-ros-base
optional: true
trigger:
include: .gitlab-ci/ros2-iron/ros2-iron-desktop-full.yml
@@ -137,7 +137,7 @@ ros2-jazzy-desktop-full:
rules:
- if: $ROS_DISTROS =~ /.*jazzy.*/
needs:
- - job: ros2-jazzy-desktop
+ - job: ros2-jazzy-ros-base
optional: true
trigger:
include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
diff --git a/README.md b/README.md
index ad13e23..0383cf7 100644
--- a/README.md
+++ b/README.md
@@ -318,17 +318,17 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
## Manual Build
```
-docker buildx build
- --pull
- --platform $PLATFORM
- --build-arg BUILD_VERSION=$BUILD_VERSION
- --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_PY=$TORCH_VERSION_PY
- --build-arg TORCH_VERSION_CPP=$TORCH_VERSION_CPP
- --build-arg TF_VERSION_PY=$TF_VERSION_PY
- --build-arg TF_VERSION_CPP=$TF_VERSION_CPP
+docker buildx build \
+ --pull \
+ --platform $PLATFORM \
+ --build-arg BUILD_VERSION=$BUILD_VERSION \
+ --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_PY=$TORCH_VERSION_PY \
+ --build-arg TORCH_VERSION_CPP=$TORCH_VERSION_CPP \
+ --build-arg TF_VERSION_PY=$TF_VERSION_PY \
+ --build-arg TF_VERSION_CPP=$TF_VERSION_CPP \
--tag $IMAGE .
```
From 0d3c7010a7e53e2145e490e7ba875ba4d4cd33ad Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Mon, 27 May 2024 16:31:23 +0200
Subject: [PATCH 11/64] fix tf dependency on ubuntu 20 for ros-base images
---
Dockerfile | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Dockerfile b/Dockerfile
index d64da82..115dad3 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -174,6 +174,9 @@ RUN if [[ -n $TF_VERSION_CPP ]]; then \
# install TensorFlow
ARG TF_VERSION_PY
RUN if [[ -n $TF_VERSION_PY ]]; then \
+ apt-get update && \
+ apt-get install -y libhdf5-dev && \
+ rm -rf /var/lib/apt/lists/* && \
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}' | cut -d. -f1,2 | tr -d .) && \
ARCH=$(uname -m) && \
pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` --no-cache https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_PY/+*/}/tensorflow-${TF_VERSION_PY}-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-linux_${ARCH}.whl; \
From 05859e6b46ed7a49f4e6152163eccb8fbfbb6cff Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Tue, 4 Jun 2024 22:16:46 +0200
Subject: [PATCH 12/64] restore folder for manual cuda build
---
cuda/.gitignore | 1 +
cuda/Dockerfile | 110 ++++++++++++++++++++++++++++++++++++++++++++++++
cuda/README.md | 35 +++++++++++++++
3 files changed, 146 insertions(+)
create mode 100644 cuda/.gitignore
create mode 100644 cuda/Dockerfile
create mode 100644 cuda/README.md
diff --git a/cuda/.gitignore b/cuda/.gitignore
new file mode 100644
index 0000000..c776bdf
--- /dev/null
+++ b/cuda/.gitignore
@@ -0,0 +1 @@
+*.deb
\ No newline at end of file
diff --git a/cuda/Dockerfile b/cuda/Dockerfile
new file mode 100644
index 0000000..76422b8
--- /dev/null
+++ b/cuda/Dockerfile
@@ -0,0 +1,110 @@
+# docker buildx build \
+# --load \
+# --platform $(uname)/$(uname -m) \
+# --build-arg UBUNTU_VERSION=$UBUNTU_VERSION \
+# --build-arg CUDA_VERSION=$CUDA_VERSION \
+# --build-arg CUDNN_VERSION=$CUDNN_VERSION \
+# --build-arg TENSORRT_VERSION=$TENSORRT_VERSION \
+# --build-arg INSTALL_AS_DEV=$INSTALL_AS_DEV \
+# --tag $IMAGE \
+# .
+
+ARG UBUNTU_VERSION=20.04
+
+# === base-amd64-20.04 ===============================================================
+FROM --platform=amd64 ubuntu:20.04 as base-amd64-20.04
+
+# === base-arm64-20.04 ===============================================================
+FROM --platform=arm64 nvcr.io/nvidia/l4t-base:35.4.1 as base-arm64-20.04
+
+# === base-amd64-22.04 ===============================================================
+FROM --platform=amd64 ubuntu:22.04 as base-amd64-22.04
+
+# === base-arm64-22.04 ===============================================================
+# not supported
+
+# === dependencies =============================================================
+FROM "base-${TARGETARCH}-${UBUNTU_VERSION}" as dependencies
+ARG TARGETARCH
+ENV DEBIAN_FRONTEND=noninteractive
+
+ARG UBUNTU_VERSION
+ARG CUDA_VERSION=11.8
+ARG CUDNN_VERSION=8.6.0.163-1
+ARG TENSORRT_VERSION=8.5.3-1
+ARG INSTALL_AS_DEV=0
+
+ENV NVIDIA_VISIBLE_DEVICES all
+ENV NVIDIA_DRIVER_CAPABILITIES all
+
+SHELL ["/bin/bash", "-c"]
+
+# install essentials
+RUN apt-get update && \
+ apt-get install -y \
+ wget \
+ gnupg2 && \
+ if [[ "$INSTALL_AS_DEV" == "1" ]]; then apt-get install -y build-essential; fi && \
+ rm -rf /var/lib/apt/lists/*
+
+# set up CUDA apt repositories
+RUN if [[ "$TARGETARCH" == "amd64" ]]; then \
+ wget -q -O /tmp/cuda-keyring_1.0-1_all.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/x86_64/cuda-keyring_1.0-1_all.deb; \
+ elif [[ "$TARGETARCH" == "arm64" ]]; then \
+ wget -q -O /tmp/cuda-keyring_1.0-1_all.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/arm64/cuda-keyring_1.0-1_all.deb; \
+ fi && \
+ dpkg -i /tmp/cuda-keyring_1.0-1_all.deb && \
+ rm -rf /tmp/cuda-keyring_1.0-1_all.deb
+
+# set up L4T apt repositories (NVIDIA Jetson)
+RUN if [[ "$TARGETARCH" == "arm64" ]]; then \
+ echo "deb https://repo.download.nvidia.com/jetson/common r35.4 main" >> /etc/apt/sources.list && \
+ echo "deb https://repo.download.nvidia.com/jetson/t194 r35.4 main" >> /etc/apt/sources.list && \
+ apt-key adv --fetch-key http://repo.download.nvidia.com/jetson/jetson-ota-public.asc && \
+ mkdir -p /opt/nvidia/l4t-packages/ && \
+ touch /opt/nvidia/l4t-packages/.nv-l4t-disable-boot-fw-update-in-preinstall && \
+ rm -rf /var/lib/apt/lists/* ; \
+ fi
+
+# install CUDA
+RUN apt-get update && \
+ if [[ "$TARGETARCH" == "amd64" ]]; then \
+ apt-get install -y cuda-libraries-${CUDA_VERSION/./-}; \
+ if [[ "$INSTALL_AS_DEV" == "1" ]]; then apt-get install -y cuda-toolkit-${CUDA_VERSION/./-} cuda-demo-suite-${CUDA_VERSION/./-}; fi \
+ elif [[ "$TARGETARCH" == "arm64" ]]; then \
+ echo "N" | apt-get install -y cuda-runtime-${CUDA_VERSION/./-}; \
+ if [[ "$INSTALL_AS_DEV" == "1" ]]; then apt-get install -y cuda-toolkit-${CUDA_VERSION/./-}; fi \
+ fi && \
+ echo "export PATH=/usr/local/cuda/bin:$PATH" >> ~/.bashrc && \
+ rm -rf /var/lib/apt/lists/*
+
+# install cuDNN
+RUN --mount=type=bind,source=cudnn-local-repo-${TARGETARCH}.deb,target=/cudnn-local-repo.deb,ro \
+ gpg_key=$(dpkg -i cudnn-local-repo.deb | grep -oP "(?<=cp )[^ ]+(?= )") && \
+ cp ${gpg_key} /usr/share/keyrings/ && \
+ CUDNN_MAJOR_VERSION=${CUDNN_VERSION%%.*} && \
+ apt-get update && \
+ apt-get install -y libcudnn${CUDNN_MAJOR_VERSION}=${CUDNN_VERSION}+cuda${CUDA_VERSION} && \
+ if [[ "$INSTALL_AS_DEV" == "1" ]]; then \
+ apt-get install -y libcudnn${CUDNN_MAJOR_VERSION}-dev=${CUDNN_VERSION}+cuda${CUDA_VERSION}; \
+ fi && \
+ rm -rf /var/lib/apt/lists/*
+
+# install TensorRT
+RUN --mount=type=bind,source=nv-tensorrt-local-repo-${TARGETARCH}.deb,target=/nv-tensorrt-local-repo.deb,ro \
+ gpg_key=$(dpkg -i nv-tensorrt-local-repo.deb | grep -oP "(?<=cp )[^ ]+(?= )") && \
+ cp ${gpg_key} /usr/share/keyrings/ && \
+ TENSORRT_MAJOR_VERSION=${TENSORRT_VERSION%%.*} && \
+ apt-get update && \
+ apt-get install -y \
+ libnvinfer${TENSORRT_MAJOR_VERSION}=${TENSORRT_VERSION}+cuda${CUDA_VERSION} \
+ libnvinfer-plugin${TENSORRT_MAJOR_VERSION}=${TENSORRT_VERSION}+cuda${CUDA_VERSION} && \
+ if [[ "$INSTALL_AS_DEV" == "1" ]]; then \
+ apt-get install -y \
+ libnvinfer-dev=${TENSORRT_VERSION}+cuda${CUDA_VERSION} \
+ libnvinfer-plugin-dev=${TENSORRT_VERSION}+cuda${CUDA_VERSION}; \
+ fi && \
+ rm -rf /var/lib/apt/lists/*
+
+# container startup setup
+CMD ["bash"]
diff --git a/cuda/README.md b/cuda/README.md
new file mode 100644
index 0000000..6089fe0
--- /dev/null
+++ b/cuda/README.md
@@ -0,0 +1,35 @@
+## Docker Images for CUDA, cuDNN, TensorRT
+
+The Dockerfile in this directory can be used to build Docker images including arbitrary versions of CUDA, cuDNN, and TensorRT, either runtime-only or including dev-libraries. The images are well suited as base images for other Dockerfiles. In this repository, they are used as base images for the machine-learning enabled ROS Docker images.
+
+### Why not use `nvidia/cuda` or `nvcr.io/nvidia/tensorrt`?
+
+NVIDIA releases official CUDA-related Docker images on both DockerHub (e.g., [`nvidia/cuda`](https://hub.docker.com/r/nvidia/cuda)) and their own NGC (e.g., [`nvcr.io/nvidia/tensorrt`](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorrt)). The former offers a variety of different CUDA versions including cuDNN installations, but no support for TensorRT. The latter offers images with CUDA, cuDNN, and TensorRT installed, but uses a monthly update cycle containing only specific versions of those libraries. In contrast, this Dockerfile can be used to build multi-arch combinations of arbitrary CUDA, cuDNN, and TensorRT versions, giving more flexibility.
+
+### Available Images
+
+| Tag | Arch | Ubuntu | CUDA | cuDNN | TensorRT |
+| ------------------------------------ | :------------: | :-----: | :-----: | :---: | :------: |
+| `11.8-cudnn-trt-ubuntu20.04[-devel]` | amd64
arm64 | 20.04.6 | 11.8.89 | 8.6.0 | 8.5.3 |
+| `11.8-cudnn-trt-ubuntu22.04[-devel]` | amd64 | 22.04.2 | 11.8.89 | 8.6.0 | 8.5.3 |
+
+### Build
+
+1. Download a cuDNN installer deb-package from [NVIDIA's download page](https://developer.nvidia.com/rdp/cudnn-archive) (login required).
+2. Place the cuDNN installer deb-package in this directory and rename it to `cudnn-local-repo-$(dpkg --print-architecture).deb`.
+3. Download a TensorRT installer deb-package from [NVIDIA's download page](https://developer.nvidia.com/tensorrt-download) (login required).
+4. Place the cuDNN installer deb-package in this directory and rename it to `nv-tensorrt-local-repo-$(dpkg --print-architecture).deb`.
+5. Build the Docker image with below command.
+
+```bash
+docker buildx build \
+ --load \
+ --platform $(uname)/$(uname -m) \
+ --build-arg UBUNTU_VERSION=$UBUNTU_VERSION \
+ --build-arg CUDA_VERSION=$CUDA_VERSION \
+ --build-arg CUDNN_VERSION=$CUDNN_VERSION \
+ --build-arg TENSORRT_VERSION=$TENSORRT_VERSION \
+ --build-arg INSTALL_AS_DEV=$INSTALL_AS_DEV \
+ --tag rwthika/cuda:$CUDA_VERSION-cudnn-trt-ubuntu$UBUNTU_VERSION \
+ .
+```
From 933ef316e504f27d4be252dfc41d948293725eba Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Tue, 4 Jun 2024 22:26:39 +0200
Subject: [PATCH 13/64] enable cuda12.2-ubuntu24.04 image
docker buildx build --load --platform linux/amd64 --build-arg UBUNTU_VERSION=24.04 --build-arg CUDA_VERSION=12.2 --build-arg CUDNN_VERSION=8.9.7.29-1 --build-arg TENSORRT_VERSION=10.0.1.6-1 --tag rwthika/cuda:12.2-cudnn-tensorrt-ubuntu24.04 .
---
cuda/Dockerfile | 37 ++++++++++++++++++++++---------------
1 file changed, 22 insertions(+), 15 deletions(-)
diff --git a/cuda/Dockerfile b/cuda/Dockerfile
index 76422b8..582e897 100644
--- a/cuda/Dockerfile
+++ b/cuda/Dockerfile
@@ -9,19 +9,14 @@
# --tag $IMAGE \
# .
-ARG UBUNTU_VERSION=20.04
+ARG UBUNTU_VERSION=22.04
-# === base-amd64-20.04 ===============================================================
FROM --platform=amd64 ubuntu:20.04 as base-amd64-20.04
-
-# === base-arm64-20.04 ===============================================================
-FROM --platform=arm64 nvcr.io/nvidia/l4t-base:35.4.1 as base-arm64-20.04
-
-# === base-amd64-22.04 ===============================================================
FROM --platform=amd64 ubuntu:22.04 as base-amd64-22.04
-
-# === base-arm64-22.04 ===============================================================
-# not supported
+FROM --platform=amd64 ubuntu:24.04 as base-amd64-24.04
+FROM --platform=arm64 nvcr.io/nvidia/l4t-base:35.4.1 as base-arm64-20.04
+# base-arm64-22.04: not supported
+# base-arm64-24.04: not supported
# === dependencies =============================================================
FROM "base-${TARGETARCH}-${UBUNTU_VERSION}" as dependencies
@@ -49,7 +44,14 @@ RUN apt-get update && \
# set up CUDA apt repositories
RUN if [[ "$TARGETARCH" == "amd64" ]]; then \
- wget -q -O /tmp/cuda-keyring_1.0-1_all.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/x86_64/cuda-keyring_1.0-1_all.deb; \
+ if [[ "$UBUNTU_VERSION" == "20.04" ]]; then \
+ CUDA_DEB_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/x86_64/cuda-keyring_1.0-1_all.deb"; \
+ elif [[ "$UBUNTU_VERSION" == "22.04" ]]; then \
+ CUDA_DEB_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/x86_64/cuda-keyring_1.0-1_all.deb"; \
+ elif [[ "$UBUNTU_VERSION" == "24.04" ]]; then \
+ CUDA_DEB_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb"; \
+ fi && \
+ wget -q -O /tmp/cuda-keyring_1.0-1_all.deb ${CUDA_DEB_URL}; \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
wget -q -O /tmp/cuda-keyring_1.0-1_all.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/arm64/cuda-keyring_1.0-1_all.deb; \
fi && \
@@ -95,14 +97,19 @@ RUN --mount=type=bind,source=nv-tensorrt-local-repo-${TARGETARCH}.deb,target=/nv
gpg_key=$(dpkg -i nv-tensorrt-local-repo.deb | grep -oP "(?<=cp )[^ ]+(?= )") && \
cp ${gpg_key} /usr/share/keyrings/ && \
TENSORRT_MAJOR_VERSION=${TENSORRT_VERSION%%.*} && \
+ if [[ "$TENSORRT_VERSION" == "10.0.1.6-1" ]]; then \
+ CUDA_VERSION_TENSORRT="12.4"; \
+ else \
+ CUDA_VERSION_TENSORRT=${CUDA_VERSION}; \
+ fi && \
apt-get update && \
apt-get install -y \
- libnvinfer${TENSORRT_MAJOR_VERSION}=${TENSORRT_VERSION}+cuda${CUDA_VERSION} \
- libnvinfer-plugin${TENSORRT_MAJOR_VERSION}=${TENSORRT_VERSION}+cuda${CUDA_VERSION} && \
+ libnvinfer${TENSORRT_MAJOR_VERSION}=${TENSORRT_VERSION}+cuda${CUDA_VERSION_TENSORRT} \
+ libnvinfer-plugin${TENSORRT_MAJOR_VERSION}=${TENSORRT_VERSION}+cuda${CUDA_VERSION_TENSORRT} && \
if [[ "$INSTALL_AS_DEV" == "1" ]]; then \
apt-get install -y \
- libnvinfer-dev=${TENSORRT_VERSION}+cuda${CUDA_VERSION} \
- libnvinfer-plugin-dev=${TENSORRT_VERSION}+cuda${CUDA_VERSION}; \
+ libnvinfer-dev=${TENSORRT_VERSION}+cuda${CUDA_VERSION_TENSORRT} \
+ libnvinfer-plugin-dev=${TENSORRT_VERSION}+cuda${CUDA_VERSION_TENSORRT}; \
fi && \
rm -rf /var/lib/apt/lists/*
From be1006b15c9f0ceeaa1c54e99d67d59ebda2cd0a Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Tue, 4 Jun 2024 23:44:42 +0200
Subject: [PATCH 14/64] enable jazzy-ros-base-tf2.16.1-torch2.3.1 image
(without tf-cpp)
docker buildx build --load --build-arg BUILD_VERSION=-ml --build-arg UBUNTU_VERSION=24.04 --build-arg ROS_VERSION=2 --build-arg ROS_DISTRO=jazzy --build-arg ROS_PACKAGE=ros-base --build-arg TORCH_VERSION_PY=2.3.1 --build-arg TORCH_VERSION_CPP=2.3.1 --build-arg TF_VERSION_PY=2.16.1 --tag rwthika/ros2:jazzy-ros-base-tf2.16.1-torch2.3.1 .
---
Dockerfile | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 115dad3..eb18a2a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -25,6 +25,7 @@ FROM --platform=arm64 ubuntu:${UBUNTU_VERSION} as base-ubuntu22.04-arm64
FROM --platform=arm64 ubuntu:${UBUNTU_VERSION} as base-ubuntu24.04-arm64
FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.04-py3 as base-ml-ubuntu20.04-amd64
FROM --platform=amd64 nvcr.io/nvidia/tensorrt:24.04-py3 as base-ml-ubuntu22.04-amd64
+FROM --platform=amd64 rwthika/cuda:12.2-cudnn-tensorrt-ubuntu24.04 as base-ml-ubuntu24.04-amd64
FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.5.2-runtime as base-ml-ubuntu20.04-arm64
FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.6.2-runtime as base-ml-ubuntu22.04-arm64
@@ -134,6 +135,7 @@ RUN if [[ -n $TORCH_VERSION_PY ]]; then \
if [[ "$TARGETARCH" == "amd64" ]]; then \
if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then PT_PACKAGE_NAME=1.11.0+cu113; \
elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then PT_PACKAGE_NAME=2.0.1+cu118; \
+ elif [[ "$TORCH_VERSION_PY" = "2.3.1" ]]; then PT_PACKAGE_NAME=2.3.1+cu121; \
else PT_PACKAGE_NAME=${TORCH_VERSION_PY}+cpu; fi && \
pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` torch==${PT_PACKAGE_NAME} -f https://download.pytorch.org/whl/torch_stable.html ; \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
@@ -155,6 +157,7 @@ RUN if [[ -n $TORCH_VERSION_CPP ]]; then \
if [[ "$TARGETARCH" == "amd64" ]]; then \
if [[ "$TORCH_VERSION_CPP" = "1.11.0" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu113/libtorch-cxx11-abi-shared-with-deps-1.11.0%2Bcu113.zip; \
elif [[ "$TORCH_VERSION_CPP" = "2.0.1" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu118/libtorch-cxx11-abi-shared-with-deps-2.0.1%2Bcu118.zip; \
+ elif [[ "$TORCH_VERSION_CPP" = "2.3.1" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu121/libtorch-cxx11-abi-shared-with-deps-2.3.1%2Bcu121.zip; \
else PT_CPP_URL=""; fi && \
wget -q -O /tmp/libtorch.zip ${PT_CPP_URL} && \
unzip /tmp/libtorch.zip -d /opt/ && \
@@ -174,12 +177,7 @@ RUN if [[ -n $TF_VERSION_CPP ]]; then \
# install TensorFlow
ARG TF_VERSION_PY
RUN if [[ -n $TF_VERSION_PY ]]; then \
- apt-get update && \
- apt-get install -y libhdf5-dev && \
- rm -rf /var/lib/apt/lists/* && \
- PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}' | cut -d. -f1,2 | tr -d .) && \
- ARCH=$(uname -m) && \
- pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` --no-cache https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_PY/+*/}/tensorflow-${TF_VERSION_PY}-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-linux_${ARCH}.whl; \
+ pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` tensorflow==${TF_VERSION_PY}; \
fi
# === final ====================================================================
From 676a5a49374f53b1980a27445e3aa17ecd38241b Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Tue, 4 Jun 2024 23:44:59 +0200
Subject: [PATCH 15/64] fix 2digit version numbers in version_information.sh
---
.version_information.sh | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/.version_information.sh b/.version_information.sh
index 803b286..a0550dd 100755
--- a/.version_information.sh
+++ b/.version_information.sh
@@ -5,9 +5,9 @@ eval $(cat /etc/os-release | grep ^VERSION=)
ARCH=$(uname -m)
-CUDA_VERSION=$(dpkg -l 2> /dev/null | grep -E "cuda-cudart-[0-9]" | awk '{ print $3 }')
-CUDNN_VERSION=$(dpkg -l 2> /dev/null | grep -E "libcudnn[0-9] " | awk '{ print $3 }')
-TENSORRT_VERSION=$(dpkg -l 2> /dev/null | grep -E "libnvinfer[0-9] " | awk '{ print $3 }')
+CUDA_VERSION=$(dpkg -l 2> /dev/null | grep -E "cuda-cudart-[0-9]." | awk '{ print $3 }')
+CUDNN_VERSION=$(dpkg -l 2> /dev/null | grep -E "libcudnn[0-9]. " | awk '{ print $3 }')
+TENSORRT_VERSION=$(dpkg -l 2> /dev/null | grep -E "libnvinfer[0-9]. " | awk '{ print $3 }')
PYTHON_VERSION=$(python --version | awk '{print $2}')
TF_PIP_VERSION=$(python -c "exec(\"try:\n import os; os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'; import tensorflow as tf; print(tf.__version__);\n\rexcept ImportError:\n pass\")")
From 2b73ac21e0a520a9c5c612519016c8606193b6ce Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 31 Jul 2024 16:50:16 +0200
Subject: [PATCH 16/64] install triton client instead of ml-frameworks
---
Dockerfile | 75 +++++++++++++++---------------------------------------
1 file changed, 20 insertions(+), 55 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index adf7ff6..219f27b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -18,14 +18,20 @@ ARG BUILD_VERSION
ARG UBUNTU_VERSION="20.04"
ARG CUDA_VERSION=11.8
-# === base (multiarch) ===============================================================
-FROM ubuntu:${UBUNTU_VERSION} as base
+# === base (amd64) ===============================================================
+FROM ubuntu:${UBUNTU_VERSION} as base-amd64
-# === base-ml (multiarch) ============================================================
-FROM rwthika/cuda:${CUDA_VERSION}-cudnn-trt-ubuntu${UBUNTU_VERSION} as base-ml
+# === base-ml (amd64) ============================================================
+FROM nvcr.io/nvidia/cuda:12.2.2-runtime-ubuntu22.04 as base-amd64-ml
+
+# === base (amd64) ===============================================================
+FROM ubuntu:${UBUNTU_VERSION} as base-arm64
+
+# === base-ml (amd64) ============================================================
+FROM nvcr.io/nvidia/l4t-cuda:12.2.12-runtime as base-arm64-ml
# === dependencies ===================================================================
-FROM "base${BUILD_VERSION}" as dependencies
+FROM "base-${TARGETARCH}${BUILD_VERSION}" as dependencies
ARG DEBIAN_FRONTEND=noninteractive
SHELL ["/bin/bash", "-c"]
@@ -122,56 +128,15 @@ RUN echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc
FROM ros as ros-ml
ARG TARGETARCH
-# install PyTorch
-ARG TORCH_VERSION_PY
-RUN if [[ -n $TORCH_VERSION_PY ]]; then \
- if [[ "$TARGETARCH" == "amd64" ]]; then \
- if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then PT_PACKAGE_NAME=1.11.0+cu113; \
- elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then PT_PACKAGE_NAME=2.0.1+cu118; \
- else PT_PACKAGE_NAME=${TORCH_VERSION_PY}+cpu; fi && \
- pip install torch==${PT_PACKAGE_NAME} -f https://download.pytorch.org/whl/torch_stable.html ; \
- elif [[ "$TARGETARCH" == "arm64" ]]; then \
- # from: https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
- # and: https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html#prereqs-install
- if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then TORCH_INSTALL=https://nvidia.box.com/shared/static/ssf2v7pf5i245fk4i0q926hy4imzs2ph.whl; \
- elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then TORCH_INSTALL=https://developer.download.nvidia.cn/compute/redist/jp/v511/pytorch/torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl; \
- else TORCH_INSTALL=""; fi && \
- python3 -m pip install --no-cache $TORCH_INSTALL && \
- apt-get update && \
- apt-get install -y libopenblas-base && \
- rm -rf /var/lib/apt/lists/* ; \
- fi ; \
- fi
-
-# install PyTorch C++ API (not available for arm64)
-ARG TORCH_VERSION_CPP
-RUN if [[ -n $TORCH_VERSION_CPP ]]; then \
- if [[ "$TARGETARCH" == "amd64" ]]; then \
- if [[ "$TORCH_VERSION_CPP" = "1.11.0" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu113/libtorch-cxx11-abi-shared-with-deps-1.11.0%2Bcu113.zip; \
- elif [[ "$TORCH_VERSION_CPP" = "2.0.1" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu118/libtorch-cxx11-abi-shared-with-deps-2.0.1%2Bcu118.zip; \
- else PT_CPP_URL=""; fi && \
- wget -q -O /tmp/libtorch.zip ${PT_CPP_URL} && \
- unzip /tmp/libtorch.zip -d /opt/ && \
- rm /tmp/libtorch.zip ; \
- fi ; \
- fi
-
-# install TensorFlow C++ API incl. protobuf
-ARG TF_VERSION_CPP
-RUN if [[ -n $TF_VERSION_CPP ]]; then \
- wget -q -O /tmp/libtensorflow-cc.deb "https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_CPP/+*/}/libtensorflow-cc_${TF_VERSION_CPP}-gpu_${TARGETARCH}.deb" && \
- dpkg -i /tmp/libtensorflow-cc.deb && \
- ldconfig && \
- rm /tmp/libtensorflow-cc.deb ; \
- fi
-
-# install TensorFlow
-ARG TF_VERSION_PY
-RUN if [[ -n $TF_VERSION_PY ]]; then \
- PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}' | cut -d. -f1,2 | tr -d .) && \
- ARCH=$(uname -m) && \
- python3 -m pip install --no-cache https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_PY/+*/}/tensorflow-${TF_VERSION_PY}-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-linux_${ARCH}.whl; \
- fi
+# install triton client
+RUN if [[ "$TARGETARCH" == "amd64" ]]; then \
+ wget -q -O /tmp/tritonclient.tar.gz https://github.com/triton-inference-server/server/releases/download/v2.48.0/v2.48.0_ubuntu2204.clients.tar.gz; \
+ elif [[ "$TARGETARCH" == "arm64" ]]; then \
+ wget -q -O /tmp/tritonclient.tar.gz https://github.com/triton-inference-server/server/releases/download/v2.48.0/tritonserver2.48.0-igpu.tar.gz; \
+ fi && \
+ mkdir -p /opt/tritonclient && \
+ tar -xzf /tmp/tritonclient.tar.gz -C /opt/tritonclient && \
+ rm /tmp/tritonclient.tar.gz
# === final ====================================================================
FROM "ros${BUILD_VERSION}" as final
From 4c0c4b0c7c937c87b5cc86fda9f5a26617e797aa Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 31 Jul 2024 18:15:28 +0200
Subject: [PATCH 17/64] align with previous versions (introduce -triton stage)
---
.version_information-ml.sh | 56 ++++++++++++++++++
.version_information-triton.sh | 34 +++++++++++
.version_information.sh | 25 ---------
Dockerfile | 100 ++++++++++++++++++++++++++-------
4 files changed, 169 insertions(+), 46 deletions(-)
create mode 100755 .version_information-ml.sh
create mode 100755 .version_information-triton.sh
diff --git a/.version_information-ml.sh b/.version_information-ml.sh
new file mode 100755
index 0000000..803b286
--- /dev/null
+++ b/.version_information-ml.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+
+# get container version information
+eval $(cat /etc/os-release | grep ^VERSION=)
+
+ARCH=$(uname -m)
+
+CUDA_VERSION=$(dpkg -l 2> /dev/null | grep -E "cuda-cudart-[0-9]" | awk '{ print $3 }')
+CUDNN_VERSION=$(dpkg -l 2> /dev/null | grep -E "libcudnn[0-9] " | awk '{ print $3 }')
+TENSORRT_VERSION=$(dpkg -l 2> /dev/null | grep -E "libnvinfer[0-9] " | awk '{ print $3 }')
+
+PYTHON_VERSION=$(python --version | awk '{print $2}')
+TF_PIP_VERSION=$(python -c "exec(\"try:\n import os; os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'; import tensorflow as tf; print(tf.__version__);\n\rexcept ImportError:\n pass\")")
+PT_PIP_VERSION=$(python -c "exec(\"try:\n import torch; print(torch.__version__);\n\rexcept ImportError:\n pass\")")
+
+if [[ -f /usr/local/include/tensorflow/tensorflow/core/public/version.h ]]; then
+ TF_C_MAJOR=$(cat /usr/local/include/tensorflow/tensorflow/core/public/version.h | grep "#define TF_MAJOR_VERSION" | sed "s/#define TF_MAJOR_VERSION //")
+ TF_C_MINOR=$(cat /usr/local/include/tensorflow/tensorflow/core/public/version.h | grep "#define TF_MINOR_VERSION" | sed "s/#define TF_MINOR_VERSION //")
+ TF_C_PATCH=$(cat /usr/local/include/tensorflow/tensorflow/core/public/version.h | grep "#define TF_PATCH_VERSION" | sed "s/#define TF_PATCH_VERSION //")
+ TF_C_VERSION=$TF_C_MAJOR.$TF_C_MINOR.$TF_C_PATCH
+fi
+
+if [[ -f /opt/libtorch/build-version ]]; then
+ PT_C_VERSION=$(cat /opt/libtorch/build-version)
+fi
+
+CMAKE_VERSION=$(cmake --version | grep version | awk '{print $3}')
+if [[ $(command -v nvidia-smi) ]]; then
+ NUM_GPUS=$(nvidia-smi --query-gpu=name --format=csv,noheader | wc -l)
+ GPU_INFOS=$(nvidia-smi --query-gpu=name,driver_version,utilization.gpu,utilization.memory,memory.used,memory.total --format=csv | column -t -s, | sed 's/^/ /')
+else
+ NUM_GPUS="0"
+ GPU_INFOS=""
+fi
+
+# print information
+cat << EOF
+=== CONTAINER INFORMATION ======================================================
+Architecture: $ARCH
+Ubuntu: $VERSION
+Python: $PYTHON_VERSION
+ROS: $ROS_DISTRO
+RMW: $RMW_IMPLEMENTATION
+CMake: $CMAKE_VERSION
+CUDA: $CUDA_VERSION
+cuDNN: $CUDNN_VERSION
+TensorRT: $TENSORRT_VERSION
+TensorFlow Python: $TF_PIP_VERSION
+TensorFlow C/C++: $TF_C_VERSION
+PyTorch Python: $PT_PIP_VERSION
+PyTorch C/C++: $PT_C_VERSION
+Available GPUs: $NUM_GPUS
+$GPU_INFOS
+================================================================================
+
+EOF
diff --git a/.version_information-triton.sh b/.version_information-triton.sh
new file mode 100755
index 0000000..59d1873
--- /dev/null
+++ b/.version_information-triton.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# get container version information
+eval $(cat /etc/os-release | grep ^VERSION=)
+
+ARCH=$(uname -m)
+
+CUDA_VERSION=$(dpkg -l 2> /dev/null | grep -E "cuda-cudart-[0-9]" | awk '{ print $3 }')
+PYTHON_VERSION=$(python --version | awk '{print $2}')
+CMAKE_VERSION=$(cmake --version | grep version | awk '{print $3}')
+if [[ $(command -v nvidia-smi) ]]; then
+ NUM_GPUS=$(nvidia-smi --query-gpu=name --format=csv,noheader | wc -l)
+ GPU_INFOS=$(nvidia-smi --query-gpu=name,driver_version,utilization.gpu,utilization.memory,memory.used,memory.total --format=csv | column -t -s, | sed 's/^/ /')
+else
+ NUM_GPUS="0"
+ GPU_INFOS=""
+fi
+
+# print information
+cat << EOF
+=== CONTAINER INFORMATION ======================================================
+Architecture: $ARCH
+Ubuntu: $VERSION
+Python: $PYTHON_VERSION
+ROS: $ROS_DISTRO
+RMW: $RMW_IMPLEMENTATION
+CMake: $CMAKE_VERSION
+CUDA: $CUDA_VERSION
+Triton: $TRITON_VERSION
+Available GPUs: $NUM_GPUS
+$GPU_INFOS
+================================================================================
+
+EOF
diff --git a/.version_information.sh b/.version_information.sh
index 803b286..a95dd94 100755
--- a/.version_information.sh
+++ b/.version_information.sh
@@ -5,25 +5,7 @@ eval $(cat /etc/os-release | grep ^VERSION=)
ARCH=$(uname -m)
-CUDA_VERSION=$(dpkg -l 2> /dev/null | grep -E "cuda-cudart-[0-9]" | awk '{ print $3 }')
-CUDNN_VERSION=$(dpkg -l 2> /dev/null | grep -E "libcudnn[0-9] " | awk '{ print $3 }')
-TENSORRT_VERSION=$(dpkg -l 2> /dev/null | grep -E "libnvinfer[0-9] " | awk '{ print $3 }')
-
PYTHON_VERSION=$(python --version | awk '{print $2}')
-TF_PIP_VERSION=$(python -c "exec(\"try:\n import os; os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'; import tensorflow as tf; print(tf.__version__);\n\rexcept ImportError:\n pass\")")
-PT_PIP_VERSION=$(python -c "exec(\"try:\n import torch; print(torch.__version__);\n\rexcept ImportError:\n pass\")")
-
-if [[ -f /usr/local/include/tensorflow/tensorflow/core/public/version.h ]]; then
- TF_C_MAJOR=$(cat /usr/local/include/tensorflow/tensorflow/core/public/version.h | grep "#define TF_MAJOR_VERSION" | sed "s/#define TF_MAJOR_VERSION //")
- TF_C_MINOR=$(cat /usr/local/include/tensorflow/tensorflow/core/public/version.h | grep "#define TF_MINOR_VERSION" | sed "s/#define TF_MINOR_VERSION //")
- TF_C_PATCH=$(cat /usr/local/include/tensorflow/tensorflow/core/public/version.h | grep "#define TF_PATCH_VERSION" | sed "s/#define TF_PATCH_VERSION //")
- TF_C_VERSION=$TF_C_MAJOR.$TF_C_MINOR.$TF_C_PATCH
-fi
-
-if [[ -f /opt/libtorch/build-version ]]; then
- PT_C_VERSION=$(cat /opt/libtorch/build-version)
-fi
-
CMAKE_VERSION=$(cmake --version | grep version | awk '{print $3}')
if [[ $(command -v nvidia-smi) ]]; then
NUM_GPUS=$(nvidia-smi --query-gpu=name --format=csv,noheader | wc -l)
@@ -42,13 +24,6 @@ Python: $PYTHON_VERSION
ROS: $ROS_DISTRO
RMW: $RMW_IMPLEMENTATION
CMake: $CMAKE_VERSION
-CUDA: $CUDA_VERSION
-cuDNN: $CUDNN_VERSION
-TensorRT: $TENSORRT_VERSION
-TensorFlow Python: $TF_PIP_VERSION
-TensorFlow C/C++: $TF_C_VERSION
-PyTorch Python: $PT_PIP_VERSION
-PyTorch C/C++: $PT_C_VERSION
Available GPUs: $NUM_GPUS
$GPU_INFOS
================================================================================
diff --git a/Dockerfile b/Dockerfile
index 219f27b..3dff337 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -11,27 +11,25 @@
# --build-arg TORCH_VERSION_CPP=$TORCH_VERSION_CPP \
# --build-arg TF_VERSION_PY=$TF_VERSION_PY \
# --build-arg TF_VERSION_CPP=$TF_VERSION_CPP \
+# --build-arg TRITON_VERSION=$TRITON_VERSION \
# --tag $IMAGE \
# .
ARG BUILD_VERSION
-ARG UBUNTU_VERSION="20.04"
-ARG CUDA_VERSION=11.8
+ARG UBUNTU_VERSION="22.04"
+ARG CUDA_VERSION=12.2
-# === base (amd64) ===============================================================
-FROM ubuntu:${UBUNTU_VERSION} as base-amd64
+# === base (multiarch) ===============================================================
+FROM ubuntu:${UBUNTU_VERSION} as base
-# === base-ml (amd64) ============================================================
-FROM nvcr.io/nvidia/cuda:12.2.2-runtime-ubuntu22.04 as base-amd64-ml
+# === base-ml (multiarch) ============================================================
+FROM rwthika/cuda:${CUDA_VERSION}-cudnn-trt-ubuntu${UBUNTU_VERSION} as base-ml
-# === base (amd64) ===============================================================
-FROM ubuntu:${UBUNTU_VERSION} as base-arm64
-
-# === base-ml (amd64) ============================================================
-FROM nvcr.io/nvidia/l4t-cuda:12.2.12-runtime as base-arm64-ml
+# === base-triton (multiarch) ============================================================
+FROM rwthika/cuda:${CUDA_VERSION}-ubuntu${UBUNTU_VERSION} as base-triton
# === dependencies ===================================================================
-FROM "base-${TARGETARCH}${BUILD_VERSION}" as dependencies
+FROM "base${BUILD_VERSION}" as dependencies
ARG DEBIAN_FRONTEND=noninteractive
SHELL ["/bin/bash", "-c"]
@@ -125,18 +123,77 @@ RUN apt-get update && \
RUN echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc
# --- install ML stuff ----------------------------------------------------
+# TODO: works only with CUDA 11.x / deprecated
FROM ros as ros-ml
ARG TARGETARCH
+# install PyTorch
+ARG TORCH_VERSION_PY
+RUN if [[ -n $TORCH_VERSION_PY ]]; then \
+ if [[ "$TARGETARCH" == "amd64" ]]; then \
+ if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then PT_PACKAGE_NAME=1.11.0+cu113; \
+ elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then PT_PACKAGE_NAME=2.0.1+cu118; \
+ else PT_PACKAGE_NAME=${TORCH_VERSION_PY}+cpu; fi && \
+ pip install torch==${PT_PACKAGE_NAME} -f https://download.pytorch.org/whl/torch_stable.html ; \
+ elif [[ "$TARGETARCH" == "arm64" ]]; then \
+ # from: https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
+ # and: https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html#prereqs-install
+ if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then TORCH_INSTALL=https://nvidia.box.com/shared/static/ssf2v7pf5i245fk4i0q926hy4imzs2ph.whl; \
+ elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then TORCH_INSTALL=https://developer.download.nvidia.cn/compute/redist/jp/v511/pytorch/torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl; \
+ else TORCH_INSTALL=""; fi && \
+ python3 -m pip install --no-cache $TORCH_INSTALL && \
+ apt-get update && \
+ apt-get install -y libopenblas-base && \
+ rm -rf /var/lib/apt/lists/* ; \
+ fi ; \
+ fi
+
+# install PyTorch C++ API (not available for arm64)
+ARG TORCH_VERSION_CPP
+RUN if [[ -n $TORCH_VERSION_CPP ]]; then \
+ if [[ "$TARGETARCH" == "amd64" ]]; then \
+ if [[ "$TORCH_VERSION_CPP" = "1.11.0" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu113/libtorch-cxx11-abi-shared-with-deps-1.11.0%2Bcu113.zip; \
+ elif [[ "$TORCH_VERSION_CPP" = "2.0.1" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu118/libtorch-cxx11-abi-shared-with-deps-2.0.1%2Bcu118.zip; \
+ else PT_CPP_URL=""; fi && \
+ wget -q -O /tmp/libtorch.zip ${PT_CPP_URL} && \
+ unzip /tmp/libtorch.zip -d /opt/ && \
+ rm /tmp/libtorch.zip ; \
+ fi ; \
+ fi
+
+# install TensorFlow C++ API incl. protobuf
+ARG TF_VERSION_CPP
+RUN if [[ -n $TF_VERSION_CPP ]]; then \
+ wget -q -O /tmp/libtensorflow-cc.deb "https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_CPP/+*/}/libtensorflow-cc_${TF_VERSION_CPP}-gpu_${TARGETARCH}.deb" && \
+ dpkg -i /tmp/libtensorflow-cc.deb && \
+ ldconfig && \
+ rm /tmp/libtensorflow-cc.deb ; \
+ fi
+
+# install TensorFlow
+ARG TF_VERSION_PY
+RUN if [[ -n $TF_VERSION_PY ]]; then \
+ PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}' | cut -d. -f1,2 | tr -d .) && \
+ ARCH=$(uname -m) && \
+ python3 -m pip install --no-cache https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_PY/+*/}/tensorflow-${TF_VERSION_PY}-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-linux_${ARCH}.whl; \
+ fi
+
+# --- install tritonclient ----------------------------------------------------
+FROM ros as ros-triton
+ARG TARGETARCH
+
# install triton client
-RUN if [[ "$TARGETARCH" == "amd64" ]]; then \
- wget -q -O /tmp/tritonclient.tar.gz https://github.com/triton-inference-server/server/releases/download/v2.48.0/v2.48.0_ubuntu2204.clients.tar.gz; \
- elif [[ "$TARGETARCH" == "arm64" ]]; then \
- wget -q -O /tmp/tritonclient.tar.gz https://github.com/triton-inference-server/server/releases/download/v2.48.0/tritonserver2.48.0-igpu.tar.gz; \
- fi && \
- mkdir -p /opt/tritonclient && \
- tar -xzf /tmp/tritonclient.tar.gz -C /opt/tritonclient && \
- rm /tmp/tritonclient.tar.gz
+ARG TRITON_VERSION
+RUN if [[ -n $TRITON_VERSION ]]; then \
+ if [[ "$TARGETARCH" == "amd64" ]]; then \
+ wget -q -O /tmp/tritonclient.tar.gz https://github.com/triton-inference-server/server/releases/download/v${TRITON_VERSION}/v${TRITON_VERSION}_ubuntu2204.clients.tar.gz; \
+ elif [[ "$TARGETARCH" == "arm64" ]]; then \
+ wget -q -O /tmp/tritonclient.tar.gz https://github.com/triton-inference-server/server/releases/download/v${TRITON_VERSION}/tritonserver${TRITON_VERSION}-igpu.tar.gz; \
+ fi && \
+ mkdir -p /opt/tritonclient && \
+ tar -xzf /tmp/tritonclient.tar.gz -C /opt/tritonclient && \
+ rm /tmp/tritonclient.tar.gz ; \
+ fi
# === final ====================================================================
FROM "ros${BUILD_VERSION}" as final
@@ -148,7 +205,8 @@ ENV DOCKER_GID=
# print version information during login
RUN echo "source /.version_information.sh" >> ~/.bashrc
-COPY .version_information.sh /
+ARG BUILD_VERSION
+COPY .version_information${BUILD_VERSION}.sh /.version_information.sh
# container startup setup
ENV WORKSPACE=/docker-ros/ws
From 40804ee3d198badc07c2c81e35b150dd0787ae86 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 31 Jul 2024 18:52:18 +0200
Subject: [PATCH 18/64] add triton images to gitlab ci
---
.gitlab-ci/.template.yml | 27 +++++++++++++++++++++--
.gitlab-ci/ml-variations/.triton.yml | 2 ++
.gitlab-ci/ml-variations/ros-cuda-trt.yml | 7 ++++++
.gitlab-ci/ml-variations/ros-cuda.yml | 4 ++--
.gitlab-ci/ml-variations/ros-ml.yml | 2 +-
.gitlab-ci/ml-variations/ros-tf.yml | 2 +-
.gitlab-ci/ml-variations/ros-torch.yml | 2 +-
.gitlab-ci/ml-variations/ros-triton.yml | 10 +++++++++
8 files changed, 49 insertions(+), 7 deletions(-)
create mode 100644 .gitlab-ci/ml-variations/.triton.yml
create mode 100644 .gitlab-ci/ml-variations/ros-cuda-trt.yml
create mode 100644 .gitlab-ci/ml-variations/ros-triton.yml
diff --git a/.gitlab-ci/.template.yml b/.gitlab-ci/.template.yml
index 3a5b2d9..35fb9b5 100644
--- a/.gitlab-ci/.template.yml
+++ b/.gitlab-ci/.template.yml
@@ -22,11 +22,34 @@ cuda:
when: never
- when: on_success
-torch:
+cuda-trt:
+ stage: Image Variations
+ trigger:
+ include: .gitlab-ci/ml-variations/ros-cuda-trt.yml
+ strategy: depend
+ rules:
+ - if: $DISABLE_CUDA_TRT == 'true'
+ when: never
+ - when: on_success
+
+triton:
stage: Image Variations
needs:
- job: cuda
optional: true
+ trigger:
+ include: .gitlab-ci/ml-variations/ros-triton.yml
+ strategy: depend
+ rules:
+ - if: $DISABLE_TRITON == 'true'
+ when: never
+ - when: on_success
+
+torch:
+ stage: Image Variations
+ needs:
+ - job: cuda-trt
+ optional: true
trigger:
include: .gitlab-ci/ml-variations/ros-torch.yml
strategy: depend
@@ -64,7 +87,7 @@ torch-cpp:
tf:
stage: Image Variations
needs:
- - job: cuda
+ - job: cuda-trt
optional: true
trigger:
include: .gitlab-ci/ml-variations/ros-tf.yml
diff --git a/.gitlab-ci/ml-variations/.triton.yml b/.gitlab-ci/ml-variations/.triton.yml
new file mode 100644
index 0000000..1146b46
--- /dev/null
+++ b/.gitlab-ci/ml-variations/.triton.yml
@@ -0,0 +1,2 @@
+variables:
+ TRITON_VERSION: 2.48.0
diff --git a/.gitlab-ci/ml-variations/ros-cuda-trt.yml b/.gitlab-ci/ml-variations/ros-cuda-trt.yml
new file mode 100644
index 0000000..3ddf236
--- /dev/null
+++ b/.gitlab-ci/ml-variations/ros-cuda-trt.yml
@@ -0,0 +1,7 @@
+include: .gitlab-ci/ml-variations/ros.yml
+
+variables:
+ BUILD_VERSION: "-ml"
+ CUDA_VERSION: "11.8"
+ IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-cuda-trt
+ IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda-trt
diff --git a/.gitlab-ci/ml-variations/ros-cuda.yml b/.gitlab-ci/ml-variations/ros-cuda.yml
index 9ab6982..2dd003c 100644
--- a/.gitlab-ci/ml-variations/ros-cuda.yml
+++ b/.gitlab-ci/ml-variations/ros-cuda.yml
@@ -1,7 +1,7 @@
include: .gitlab-ci/ml-variations/ros.yml
variables:
- BUILD_VERSION: "-ml"
- CUDA_VERSION: "11.8"
+ BUILD_VERSION: "-triton"
+ CUDA_VERSION: "12.2"
IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-cuda
IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda
diff --git a/.gitlab-ci/ml-variations/ros-ml.yml b/.gitlab-ci/ml-variations/ros-ml.yml
index b04aa06..c950800 100644
--- a/.gitlab-ci/ml-variations/ros-ml.yml
+++ b/.gitlab-ci/ml-variations/ros-ml.yml
@@ -1,5 +1,5 @@
include:
- - .gitlab-ci/ml-variations/ros-cuda.yml
+ - .gitlab-ci/ml-variations/ros-cuda-trt.yml
- .gitlab-ci/ml-variations/.torch.yml
- .gitlab-ci/ml-variations/.tf.yml
diff --git a/.gitlab-ci/ml-variations/ros-tf.yml b/.gitlab-ci/ml-variations/ros-tf.yml
index ed07c50..a5c0ceb 100644
--- a/.gitlab-ci/ml-variations/ros-tf.yml
+++ b/.gitlab-ci/ml-variations/ros-tf.yml
@@ -1,5 +1,5 @@
include:
- - .gitlab-ci/ml-variations/ros-cuda.yml
+ - .gitlab-ci/ml-variations/ros-cuda-trt.yml
- .gitlab-ci/ml-variations/.tf.yml
variables:
diff --git a/.gitlab-ci/ml-variations/ros-torch.yml b/.gitlab-ci/ml-variations/ros-torch.yml
index 3112dcc..e7a8bf8 100644
--- a/.gitlab-ci/ml-variations/ros-torch.yml
+++ b/.gitlab-ci/ml-variations/ros-torch.yml
@@ -1,5 +1,5 @@
include:
- - .gitlab-ci/ml-variations/ros-cuda.yml
+ - .gitlab-ci/ml-variations/ros-cuda-trt.yml
- .gitlab-ci/ml-variations/.torch.yml
variables:
diff --git a/.gitlab-ci/ml-variations/ros-triton.yml b/.gitlab-ci/ml-variations/ros-triton.yml
new file mode 100644
index 0000000..3efeb39
--- /dev/null
+++ b/.gitlab-ci/ml-variations/ros-triton.yml
@@ -0,0 +1,10 @@
+include:
+ - .gitlab-ci/ml-variations/ros-cuda.yml
+ - .gitlab-ci/ml-variations/.triton.yml
+
+
+variables:
+ IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-triton
+ IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-triton
+ IMAGE_CI_CACHE: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}_ci
+ TAG: ${ROS_DISTRO}-${ROS_PACKAGE}-triton${TRITON_VERSION}
From b389bb55cca5c3089fe9963d3952b702f7696154 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 1 Aug 2024 15:07:44 +0200
Subject: [PATCH 19/64] revert "enable jazzy-ros-base-tf2.16.1-torch2.3.1 image
(without tf-cpp)"
---
Dockerfile | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 98e00e7..eb1321e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -135,7 +135,6 @@ RUN if [[ -n $TORCH_VERSION_PY ]]; then \
if [[ "$TARGETARCH" == "amd64" ]]; then \
if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then PT_PACKAGE_NAME=1.11.0+cu113; \
elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then PT_PACKAGE_NAME=2.0.1+cu118; \
- elif [[ "$TORCH_VERSION_PY" = "2.3.1" ]]; then PT_PACKAGE_NAME=2.3.1+cu121; \
else PT_PACKAGE_NAME=${TORCH_VERSION_PY}+cpu; fi && \
pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` torch==${PT_PACKAGE_NAME} -f https://download.pytorch.org/whl/torch_stable.html ; \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
@@ -157,7 +156,6 @@ RUN if [[ -n $TORCH_VERSION_CPP ]]; then \
if [[ "$TARGETARCH" == "amd64" ]]; then \
if [[ "$TORCH_VERSION_CPP" = "1.11.0" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu113/libtorch-cxx11-abi-shared-with-deps-1.11.0%2Bcu113.zip; \
elif [[ "$TORCH_VERSION_CPP" = "2.0.1" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu118/libtorch-cxx11-abi-shared-with-deps-2.0.1%2Bcu118.zip; \
- elif [[ "$TORCH_VERSION_CPP" = "2.3.1" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu121/libtorch-cxx11-abi-shared-with-deps-2.3.1%2Bcu121.zip; \
else PT_CPP_URL=""; fi && \
wget -q -O /tmp/libtorch.zip ${PT_CPP_URL} && \
unzip /tmp/libtorch.zip -d /opt/ && \
@@ -177,7 +175,12 @@ RUN if [[ -n $TF_VERSION_CPP ]]; then \
# install TensorFlow
ARG TF_VERSION_PY
RUN if [[ -n $TF_VERSION_PY ]]; then \
- pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` tensorflow==${TF_VERSION_PY}; \
+ apt-get update && \
+ apt-get install -y libhdf5-dev && \
+ rm -rf /var/lib/apt/lists/* && \
+ PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}' | cut -d. -f1,2 | tr -d .) && \
+ ARCH=$(uname -m) && \
+ pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` --no-cache https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_PY/+*/}/tensorflow-${TF_VERSION_PY}-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-linux_${ARCH}.whl; \
fi
# --- install tritonclient ----------------------------------------------------
From 99ed360da98501c1698edb210a30d517d141d7e1 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 1 Aug 2024 15:13:03 +0200
Subject: [PATCH 20/64] small fixes in ci
---
.gitlab-ci/ml-variations/ros-tf.yml | 2 +-
.gitlab-ci/ml-variations/ros-torch.yml | 2 +-
.gitlab-ci/ros-noetic/.ros-noetic.yml | 2 ++
.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml | 1 +
.gitlab-ci/ros2-rolling/.ros2-rolling.yml | 2 ++
Dockerfile | 2 +-
6 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/.gitlab-ci/ml-variations/ros-tf.yml b/.gitlab-ci/ml-variations/ros-tf.yml
index a5c0ceb..2b2a0ae 100644
--- a/.gitlab-ci/ml-variations/ros-tf.yml
+++ b/.gitlab-ci/ml-variations/ros-tf.yml
@@ -6,4 +6,4 @@ variables:
IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-tf
IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-tf
TAG: ${ROS_DISTRO}-${ROS_PACKAGE}-tf${TF_VERSION}
- IMAGE_CI_CACHE: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}_ci
+ IMAGE_CI_CACHE: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda-trt:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}_ci
diff --git a/.gitlab-ci/ml-variations/ros-torch.yml b/.gitlab-ci/ml-variations/ros-torch.yml
index e7a8bf8..a8cf167 100644
--- a/.gitlab-ci/ml-variations/ros-torch.yml
+++ b/.gitlab-ci/ml-variations/ros-torch.yml
@@ -6,4 +6,4 @@ variables:
IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-torch
IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-torch
TAG: ${ROS_DISTRO}-${ROS_PACKAGE}-torch${TORCH_VERSION}
- IMAGE_CI_CACHE: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}_ci
+ IMAGE_CI_CACHE: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda-trt:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}_ci
diff --git a/.gitlab-ci/ros-noetic/.ros-noetic.yml b/.gitlab-ci/ros-noetic/.ros-noetic.yml
index 9d19543..d671ff9 100644
--- a/.gitlab-ci/ros-noetic/.ros-noetic.yml
+++ b/.gitlab-ci/ros-noetic/.ros-noetic.yml
@@ -3,3 +3,5 @@ variables:
ROS_VERSION: 1
ROS_VERSION_NAME: "ros"
ROS_DISTRO: noetic
+ DISABLE_CUDA: "true"
+ DISABLE_TRITON: "true"
diff --git a/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml b/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
index 14a38da..e130ee5 100644
--- a/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
+++ b/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
@@ -5,6 +5,7 @@ variables:
ROS_DISTRO: jazzy
DISABLE_CUDA: "true"
DISABLE_CUDA_TRT: "true"
+ DISABLE_TRITON: "true"
DISABLE_TORCH: "true"
DISABLE_TF: "true"
DISABLE_ML: "true"
diff --git a/.gitlab-ci/ros2-rolling/.ros2-rolling.yml b/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
index 5982044..bf6f165 100644
--- a/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
+++ b/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
@@ -3,3 +3,5 @@ variables:
ROS_VERSION: 2
ROS_VERSION_NAME: "ros2"
ROS_DISTRO: rolling
+ DISABLE_CUDA: "true"
+ DISABLE_TRITON: "true"
diff --git a/Dockerfile b/Dockerfile
index eb1321e..28bc105 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -64,7 +64,7 @@ RUN apt-get update && \
x11-apps \
zip \
&& rm -rf /var/lib/apt/lists/*
-RUN python -m pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` --upgrade pip
+RUN if [[ $UBUNTU_VERSION != "24.04" ]]; then python -m pip install --upgrade pip; fi
# install more essentials
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
From 57ac0434447a5c6a7e98d38af6b2c71b3dc39e25 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 1 Aug 2024 17:55:11 +0200
Subject: [PATCH 21/64] export triton version and rmw implementation
---
.gitlab-ci/ml-variations/.template.yml | 1 +
.version_information-ml.sh | 6 ++++++
.version_information-triton.sh | 6 ++++++
.version_information.sh | 6 ++++++
Dockerfile | 1 +
5 files changed, 20 insertions(+)
diff --git a/.gitlab-ci/ml-variations/.template.yml b/.gitlab-ci/ml-variations/.template.yml
index 0aba455..3a1ae46 100644
--- a/.gitlab-ci/ml-variations/.template.yml
+++ b/.gitlab-ci/ml-variations/.template.yml
@@ -42,6 +42,7 @@ variables:
--build-arg TORCH_VERSION_CPP=$TORCH_VERSION_CPP
--build-arg TF_VERSION_PY=$TF_VERSION_PY
--build-arg TF_VERSION_CPP=$TF_VERSION_CPP
+ --build-arg TRITON_VERSION=$TRITON_VERSION
--tag $IMAGE .
.docker-push-manifest:
diff --git a/.version_information-ml.sh b/.version_information-ml.sh
index 803b286..5d19101 100755
--- a/.version_information-ml.sh
+++ b/.version_information-ml.sh
@@ -5,6 +5,12 @@ eval $(cat /etc/os-release | grep ^VERSION=)
ARCH=$(uname -m)
+if [[ -z "$RMW_IMPLEMENTATION" ]]; then
+ if ros2 pkg list | grep -q "rmw_fastrtps_cpp"; then
+ export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
+ fi
+fi
+
CUDA_VERSION=$(dpkg -l 2> /dev/null | grep -E "cuda-cudart-[0-9]" | awk '{ print $3 }')
CUDNN_VERSION=$(dpkg -l 2> /dev/null | grep -E "libcudnn[0-9] " | awk '{ print $3 }')
TENSORRT_VERSION=$(dpkg -l 2> /dev/null | grep -E "libnvinfer[0-9] " | awk '{ print $3 }')
diff --git a/.version_information-triton.sh b/.version_information-triton.sh
index 59d1873..fc51ef1 100755
--- a/.version_information-triton.sh
+++ b/.version_information-triton.sh
@@ -5,6 +5,12 @@ eval $(cat /etc/os-release | grep ^VERSION=)
ARCH=$(uname -m)
+if [[ -z "$RMW_IMPLEMENTATION" ]]; then
+ if ros2 pkg list | grep -q "rmw_fastrtps_cpp"; then
+ export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
+ fi
+fi
+
CUDA_VERSION=$(dpkg -l 2> /dev/null | grep -E "cuda-cudart-[0-9]" | awk '{ print $3 }')
PYTHON_VERSION=$(python --version | awk '{print $2}')
CMAKE_VERSION=$(cmake --version | grep version | awk '{print $3}')
diff --git a/.version_information.sh b/.version_information.sh
index a95dd94..35ce151 100755
--- a/.version_information.sh
+++ b/.version_information.sh
@@ -5,6 +5,12 @@ eval $(cat /etc/os-release | grep ^VERSION=)
ARCH=$(uname -m)
+if [[ -z "$RMW_IMPLEMENTATION" ]]; then
+ if ros2 pkg list | grep -q "rmw_fastrtps_cpp"; then
+ export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
+ fi
+fi
+
PYTHON_VERSION=$(python --version | awk '{print $2}')
CMAKE_VERSION=$(cmake --version | grep version | awk '{print $3}')
if [[ $(command -v nvidia-smi) ]]; then
diff --git a/Dockerfile b/Dockerfile
index 28bc105..d4bb130 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -189,6 +189,7 @@ ARG TARGETARCH
# install triton client
ARG TRITON_VERSION
+ENV TRITON_VERSION=${TRITON_VERSION}
RUN if [[ -n $TRITON_VERSION ]]; then \
if [[ "$TARGETARCH" == "amd64" ]]; then \
wget -q -O /tmp/tritonclient.tar.gz https://github.com/triton-inference-server/server/releases/download/v${TRITON_VERSION}/v${TRITON_VERSION}_ubuntu2204.clients.tar.gz; \
From bc0c87c4a02d26fe27bcfd838924b9c3a0aba42f Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 1 Aug 2024 18:11:57 +0200
Subject: [PATCH 22/64] set break-system-packages via pip cli global
---
Dockerfile | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index d4bb130..1fe7153 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -64,7 +64,8 @@ RUN apt-get update && \
x11-apps \
zip \
&& rm -rf /var/lib/apt/lists/*
-RUN if [[ $UBUNTU_VERSION != "24.04" ]]; then python -m pip install --upgrade pip; fi
+RUN if [[ $UBUNTU_VERSION == "24.04" ]]; then python -m pip config --global set global.break-system-packages true; \
+ else python -m pip install --upgrade pip; fi
# install more essentials
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
@@ -104,7 +105,7 @@ RUN apt-get update && \
elif [[ "$ROS_VERSION" == "2" ]]; then \
apt-get install -y \
python3-colcon-common-extensions \
- && pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` colcon-clean ; \
+ && pip install colcon-clean ; \
fi \
&& rm -rf /var/lib/apt/lists/*
@@ -136,14 +137,14 @@ RUN if [[ -n $TORCH_VERSION_PY ]]; then \
if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then PT_PACKAGE_NAME=1.11.0+cu113; \
elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then PT_PACKAGE_NAME=2.0.1+cu118; \
else PT_PACKAGE_NAME=${TORCH_VERSION_PY}+cpu; fi && \
- pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` torch==${PT_PACKAGE_NAME} -f https://download.pytorch.org/whl/torch_stable.html ; \
+ pip install torch==${PT_PACKAGE_NAME} -f https://download.pytorch.org/whl/torch_stable.html ; \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
# from: https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
# and: https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html#prereqs-install
if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then TORCH_INSTALL=https://nvidia.box.com/shared/static/ssf2v7pf5i245fk4i0q926hy4imzs2ph.whl; \
elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then TORCH_INSTALL=https://developer.download.nvidia.cn/compute/redist/jp/v511/pytorch/torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl; \
else TORCH_INSTALL=""; fi && \
- pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` --no-cache $TORCH_INSTALL && \
+ pip install --no-cache $TORCH_INSTALL && \
apt-get update && \
apt-get install -y libopenblas-base && \
rm -rf /var/lib/apt/lists/* ; \
@@ -180,7 +181,7 @@ RUN if [[ -n $TF_VERSION_PY ]]; then \
rm -rf /var/lib/apt/lists/* && \
PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}' | cut -d. -f1,2 | tr -d .) && \
ARCH=$(uname -m) && \
- pip install `if [[ $UBUNTU_VERSION == "24.04" ]]; then echo "--break-system-packages"; fi` --no-cache https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_PY/+*/}/tensorflow-${TF_VERSION_PY}-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-linux_${ARCH}.whl; \
+ pip install --no-cache https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_PY/+*/}/tensorflow-${TF_VERSION_PY}-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-linux_${ARCH}.whl; \
fi
# --- install tritonclient ----------------------------------------------------
From c4b21cca982267143f328cb629ed41da9ac70cf8 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Tue, 6 Aug 2024 16:10:13 +0000
Subject: [PATCH 23/64] start updating readme
---
README.md | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/README.md b/README.md
index 0383cf7..0c33748 100644
--- a/README.md
+++ b/README.md
@@ -17,9 +17,7 @@
> This repository is open-sourced and maintained by the [**Institute for Automotive Engineering (ika) at RWTH Aachen University**](https://www.ika.rwth-aachen.de/).
> **DevOps, Containerization and Orchestration of Software-Defined Vehicles** are some of many research topics within our [*Vehicle Intelligence & Automated Driving*](https://www.ika.rwth-aachen.de/en/competences/fields-of-research/vehicle-intelligence-automated-driving.html) domain.
> If you would like to learn more about how we can support your DevOps or automated driving efforts, feel free to reach out to us!
-> *Timo Woopen - Manager Research Area Vehicle Intelligence & Automated Driving*
-> *+49 241 80 23549*
-> *timo.woopen@ika.rwth-aachen.de*
+> :email: ***opensource@ika.rwth-aachen.de***
We recommend to use *docker-ros-ml-images* in combination with our other tools for Docker and ROS.
- [*docker-ros*](https://github.com/ika-rwth-aachen/docker-ros) automatically builds minimal container images of ROS applications
@@ -81,11 +79,11 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
-#### [`rwthika/ros-cuda`](https://hub.docker.com/r/rwthika/ros-cuda) (ROS + CUDA)
+#### [`rwthika/ros-cuda-trt`](https://hub.docker.com/r/rwthika/ros-cuda-trt) (ROS + CUDA + TensorRT)
-
+
Click to expand
@@ -182,15 +180,18 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
| `humble-ros-core` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | ros-core | 3.27.2 | - | - | - | - | - | - | - |
| `latest`, `humble`, `humble-ros-base` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | ros-base | 3.27.2 | - | - | - | - | - | - | - |
| `humble-desktop-full` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | desktop-full | 3.27.2 | - | - | - | - | - | - | - |
+| `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 | - | - | - | - | - | - | - |
-#### [`rwthika/ros2-cuda`](https://hub.docker.com/r/rwthika/ros2-cuda) (ROS 2 + CUDA)
+#### [`rwthika/ros2-cuda-trt`](https://hub.docker.com/r/rwthika/ros2-cuda-trt) (ROS 2 + CUDA + TensorRT)
-
+
Click to expand
From 35381436992ce40c62be1cdad15e309cac7afe1a Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Tue, 20 Aug 2024 15:25:53 +0200
Subject: [PATCH 24/64] restructure ci and install only py versions of ml
frameworks
---
.gitlab-ci/.template.yml | 62 +-----------
.gitlab-ci/ml-variations/.template.yml | 11 +--
.gitlab-ci/ml-variations/.tf.yml | 5 +-
.gitlab-ci/ml-variations/.torch.yml | 5 +-
.gitlab-ci/ml-variations/.triton.yml | 2 +-
.gitlab-ci/ml-variations/ros-cuda-trt.yml | 7 --
.gitlab-ci/ml-variations/ros-cuda.yml | 3 +-
.gitlab-ci/ml-variations/ros-ml.yml | 2 +-
.gitlab-ci/ml-variations/ros-tensorrt.yml | 6 ++
.gitlab-ci/ml-variations/ros-tf-cpp.yml | 8 --
.gitlab-ci/ml-variations/ros-tf-py.yml | 8 --
.gitlab-ci/ml-variations/ros-tf.yml | 4 +-
.gitlab-ci/ml-variations/ros-torch-cpp.yml | 9 --
.gitlab-ci/ml-variations/ros-torch-py.yml | 8 --
.gitlab-ci/ml-variations/ros-torch.yml | 4 +-
.gitlab-ci/ml-variations/ros.yml | 1 -
.gitlab-ci/ros-noetic/.ros-noetic.yml | 5 +-
.gitlab-ci/ros2-humble/.ros2-humble.yml | 4 +-
.gitlab-ci/ros2-iron/.ros2-iron.yml | 4 +-
.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml | 8 +-
.gitlab-ci/ros2-rolling/.ros2-rolling.yml | 5 +-
...-triton.sh => .version_information-cuda.sh | 0
...-ml.sh => .version_information-tensorrt.sh | 0
Dockerfile | 98 ++++++++-----------
24 files changed, 81 insertions(+), 188 deletions(-)
delete mode 100644 .gitlab-ci/ml-variations/ros-cuda-trt.yml
create mode 100644 .gitlab-ci/ml-variations/ros-tensorrt.yml
delete mode 100644 .gitlab-ci/ml-variations/ros-tf-cpp.yml
delete mode 100644 .gitlab-ci/ml-variations/ros-tf-py.yml
delete mode 100644 .gitlab-ci/ml-variations/ros-torch-cpp.yml
delete mode 100644 .gitlab-ci/ml-variations/ros-torch-py.yml
rename .version_information-triton.sh => .version_information-cuda.sh (100%)
rename .version_information-ml.sh => .version_information-tensorrt.sh (100%)
diff --git a/.gitlab-ci/.template.yml b/.gitlab-ci/.template.yml
index 35fb9b5..3c00f5b 100644
--- a/.gitlab-ci/.template.yml
+++ b/.gitlab-ci/.template.yml
@@ -22,13 +22,13 @@ cuda:
when: never
- when: on_success
-cuda-trt:
+tensorrt:
stage: Image Variations
trigger:
- include: .gitlab-ci/ml-variations/ros-cuda-trt.yml
+ include: .gitlab-ci/ml-variations/ros-tensorrt.yml
strategy: depend
rules:
- - if: $DISABLE_CUDA_TRT == 'true'
+ - if: $DISABLE_TENSORRT == 'true'
when: never
- when: on_success
@@ -48,7 +48,7 @@ triton:
torch:
stage: Image Variations
needs:
- - job: cuda-trt
+ - job: tensorrt
optional: true
trigger:
include: .gitlab-ci/ml-variations/ros-torch.yml
@@ -58,36 +58,10 @@ torch:
when: never
- when: on_success
-torch-py:
- stage: Image Variations
- needs:
- - job: torch
- optional: true
- trigger:
- include: .gitlab-ci/ml-variations/ros-torch-py.yml
- strategy: depend
- rules:
- - if: $DISABLE_TORCH == 'true' || $DISABLE_TORCH_PY == 'true'
- when: never
- - when: on_success
-
-torch-cpp:
- stage: Image Variations
- needs:
- - job: torch
- optional: true
- trigger:
- include: .gitlab-ci/ml-variations/ros-torch-cpp.yml
- strategy: depend
- rules:
- - if: $DISABLE_TORCH == 'true' || $DISABLE_TORCH_CPP == 'true'
- when: never
- - when: on_success
-
tf:
stage: Image Variations
needs:
- - job: cuda-trt
+ - job: tensorrt
optional: true
trigger:
include: .gitlab-ci/ml-variations/ros-tf.yml
@@ -97,32 +71,6 @@ tf:
when: never
- when: on_success
-tf-py:
- stage: Image Variations
- needs:
- - job: tf
- optional: true
- trigger:
- include: .gitlab-ci/ml-variations/ros-tf-py.yml
- strategy: depend
- rules:
- - if: $DISABLE_TF == 'true' || $DISABLE_TF_PY == 'true'
- when: never
- - when: on_success
-
-tf-cpp:
- stage: Image Variations
- needs:
- - job: tf
- optional: true
- trigger:
- include: .gitlab-ci/ml-variations/ros-tf-cpp.yml
- strategy: depend
- rules:
- - if: $DISABLE_TF == 'true' || $DISABLE_TF_CPP == 'true'
- when: never
- - when: on_success
-
ml:
stage: Image Variations
needs:
diff --git a/.gitlab-ci/ml-variations/.template.yml b/.gitlab-ci/ml-variations/.template.yml
index 3a1ae46..b3b20f8 100644
--- a/.gitlab-ci/ml-variations/.template.yml
+++ b/.gitlab-ci/ml-variations/.template.yml
@@ -34,27 +34,24 @@ variables:
--platform $PLATFORM
--build-arg BUILD_VERSION=$BUILD_VERSION
--build-arg UBUNTU_VERSION=$UBUNTU_VERSION
- --build-arg CUDA_VERSION=$CUDA_VERSION
--build-arg ROS_VERSION=$ROS_VERSION
--build-arg ROS_DISTRO=$ROS_DISTRO
--build-arg ROS_PACKAGE=$ROS_PACKAGE
--build-arg TORCH_VERSION_PY=$TORCH_VERSION_PY
- --build-arg TORCH_VERSION_CPP=$TORCH_VERSION_CPP
--build-arg TF_VERSION_PY=$TF_VERSION_PY
- --build-arg TF_VERSION_CPP=$TF_VERSION_CPP
--build-arg TRITON_VERSION=$TRITON_VERSION
--tag $IMAGE .
.docker-push-manifest:
script:
- |-
- if [[ "${DISABLE_AMD64}" != "true" ]] && [[ "${DISABLE_ML_AMD64}" != "true" || "${BUILD_VERSION}" != "-ml" ]]; then
+ if [[ "${DISABLE_AMD64}" != "true" ]] && [[ "${DISABLE_ML_AMD64}" != "true" || "${BUILD_VERSION}" == "" ]]; then
docker pull ${IMAGE_CI}-amd64
docker tag ${IMAGE_CI}-amd64 ${IMAGE}-amd64
docker push ${IMAGE}-amd64
AMD64_IS_ENABLED="true"
fi
- if [[ "${DISABLE_ARM64}" != "true" ]] && [[ "${DISABLE_ML_ARM64}" != "true" || "${BUILD_VERSION}" != "-ml" ]]; then
+ if [[ "${DISABLE_ARM64}" != "true" ]] && [[ "${DISABLE_ML_ARM64}" != "true" || "${BUILD_VERSION}" == "" ]]; then
docker pull ${IMAGE_CI}-arm64
docker tag ${IMAGE_CI}-arm64 ${IMAGE}-arm64
docker push ${IMAGE}-arm64
@@ -80,7 +77,7 @@ build-amd64:
rules:
- if: $DISABLE_AMD64 == 'true'
when: never
- - if: $DISABLE_ML_AMD64 == 'true' && $BUILD_VERSION == '-ml'
+ - if: $DISABLE_ML_AMD64 == 'true' && $BUILD_VERSION != ''
when: never
- when: on_success
script:
@@ -96,7 +93,7 @@ build-arm64:
rules:
- if: $DISABLE_ARM64 == 'true'
when: never
- - if: $DISABLE_ML_ARM64 == 'true' && $BUILD_VERSION == '-ml'
+ - if: $DISABLE_ML_ARM64 == 'true' && $BUILD_VERSION != ''
when: never
- when: on_success
script:
diff --git a/.gitlab-ci/ml-variations/.tf.yml b/.gitlab-ci/ml-variations/.tf.yml
index 836a774..add0a3b 100644
--- a/.gitlab-ci/ml-variations/.tf.yml
+++ b/.gitlab-ci/ml-variations/.tf.yml
@@ -1,5 +1,2 @@
variables:
- TF_VERSION: 2.11.0
- TF_VERSION_WITH_POSTFIX: ${TF_VERSION}+cu118
- TF_VERSION_PY: ${TF_VERSION_WITH_POSTFIX}
- TF_VERSION_CPP: ${TF_VERSION_WITH_POSTFIX}
+ TF_VERSION_PY: ${_TF_VERSION}
\ No newline at end of file
diff --git a/.gitlab-ci/ml-variations/.torch.yml b/.gitlab-ci/ml-variations/.torch.yml
index e7b7126..1c6c6b5 100644
--- a/.gitlab-ci/ml-variations/.torch.yml
+++ b/.gitlab-ci/ml-variations/.torch.yml
@@ -1,5 +1,2 @@
variables:
- TORCH_VERSION: 2.0.1
- TORCH_VERSION_WITH_POSTFIX: ${TORCH_VERSION}
- TORCH_VERSION_PY: ${TORCH_VERSION_WITH_POSTFIX}
- TORCH_VERSION_CPP: ${TORCH_VERSION_WITH_POSTFIX}
\ No newline at end of file
+ TORCH_VERSION: ${_TORCH_VERSION}
\ No newline at end of file
diff --git a/.gitlab-ci/ml-variations/.triton.yml b/.gitlab-ci/ml-variations/.triton.yml
index 1146b46..472f876 100644
--- a/.gitlab-ci/ml-variations/.triton.yml
+++ b/.gitlab-ci/ml-variations/.triton.yml
@@ -1,2 +1,2 @@
variables:
- TRITON_VERSION: 2.48.0
+ TRITON_VERSION: ${_TRITON_VERSION}
diff --git a/.gitlab-ci/ml-variations/ros-cuda-trt.yml b/.gitlab-ci/ml-variations/ros-cuda-trt.yml
deleted file mode 100644
index 3ddf236..0000000
--- a/.gitlab-ci/ml-variations/ros-cuda-trt.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-include: .gitlab-ci/ml-variations/ros.yml
-
-variables:
- BUILD_VERSION: "-ml"
- CUDA_VERSION: "11.8"
- IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-cuda-trt
- IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda-trt
diff --git a/.gitlab-ci/ml-variations/ros-cuda.yml b/.gitlab-ci/ml-variations/ros-cuda.yml
index 2dd003c..d08da6b 100644
--- a/.gitlab-ci/ml-variations/ros-cuda.yml
+++ b/.gitlab-ci/ml-variations/ros-cuda.yml
@@ -1,7 +1,6 @@
include: .gitlab-ci/ml-variations/ros.yml
variables:
- BUILD_VERSION: "-triton"
- CUDA_VERSION: "12.2"
+ BUILD_VERSION: "-cuda"
IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-cuda
IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda
diff --git a/.gitlab-ci/ml-variations/ros-ml.yml b/.gitlab-ci/ml-variations/ros-ml.yml
index c950800..a70f8f4 100644
--- a/.gitlab-ci/ml-variations/ros-ml.yml
+++ b/.gitlab-ci/ml-variations/ros-ml.yml
@@ -1,5 +1,5 @@
include:
- - .gitlab-ci/ml-variations/ros-cuda-trt.yml
+ - .gitlab-ci/ml-variations/ros-tensorrt.yml
- .gitlab-ci/ml-variations/.torch.yml
- .gitlab-ci/ml-variations/.tf.yml
diff --git a/.gitlab-ci/ml-variations/ros-tensorrt.yml b/.gitlab-ci/ml-variations/ros-tensorrt.yml
new file mode 100644
index 0000000..a551704
--- /dev/null
+++ b/.gitlab-ci/ml-variations/ros-tensorrt.yml
@@ -0,0 +1,6 @@
+include: .gitlab-ci/ml-variations/ros.yml
+
+variables:
+ BUILD_VERSION: "-tensorrt"
+ IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-tensorrt
+ IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-tensorrt
diff --git a/.gitlab-ci/ml-variations/ros-tf-cpp.yml b/.gitlab-ci/ml-variations/ros-tf-cpp.yml
deleted file mode 100644
index 800a45a..0000000
--- a/.gitlab-ci/ml-variations/ros-tf-cpp.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-include: .gitlab-ci/ml-variations/ros-tf.yml
-
-variables:
- TAG: ${ROS_DISTRO}-${ROS_PACKAGE}-tf${TF_VERSION}-cpp
- IMAGE_CI_CACHE: ${IMAGE_REPO_CI}:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}-tf${TF_VERSION}_ci
- TF_VERSION_PY: ""
- DISABLE_PUSH_AS_LATEST: 'true'
- DISABLE_PUSH_AS_DEFAULT_ROS_PACKAGE: 'true'
diff --git a/.gitlab-ci/ml-variations/ros-tf-py.yml b/.gitlab-ci/ml-variations/ros-tf-py.yml
deleted file mode 100644
index 7390831..0000000
--- a/.gitlab-ci/ml-variations/ros-tf-py.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-include: .gitlab-ci/ml-variations/ros-tf.yml
-
-variables:
- TAG: ${ROS_DISTRO}-${ROS_PACKAGE}-tf${TF_VERSION}-py
- IMAGE_CI_CACHE: ${IMAGE_REPO_CI}:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}-tf${TF_VERSION}_ci
- TF_VERSION_CPP: ""
- DISABLE_PUSH_AS_LATEST: 'true'
- DISABLE_PUSH_AS_DEFAULT_ROS_PACKAGE: 'true'
diff --git a/.gitlab-ci/ml-variations/ros-tf.yml b/.gitlab-ci/ml-variations/ros-tf.yml
index 2b2a0ae..3390e80 100644
--- a/.gitlab-ci/ml-variations/ros-tf.yml
+++ b/.gitlab-ci/ml-variations/ros-tf.yml
@@ -1,9 +1,9 @@
include:
- - .gitlab-ci/ml-variations/ros-cuda-trt.yml
+ - .gitlab-ci/ml-variations/ros-tensorrt.yml
- .gitlab-ci/ml-variations/.tf.yml
variables:
IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-tf
IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-tf
TAG: ${ROS_DISTRO}-${ROS_PACKAGE}-tf${TF_VERSION}
- IMAGE_CI_CACHE: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda-trt:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}_ci
+ IMAGE_CI_CACHE: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-tensorrt:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}_ci
diff --git a/.gitlab-ci/ml-variations/ros-torch-cpp.yml b/.gitlab-ci/ml-variations/ros-torch-cpp.yml
deleted file mode 100644
index f4de376..0000000
--- a/.gitlab-ci/ml-variations/ros-torch-cpp.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-include: .gitlab-ci/ml-variations/ros-torch.yml
-
-variables:
- TAG: ${ROS_DISTRO}-${ROS_PACKAGE}-torch${TORCH_VERSION}-cpp
- IMAGE_CI_CACHE: ${IMAGE_REPO_CI}:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}-torch${TORCH_VERSION}_ci
- TORCH_VERSION_PY: ""
- DISABLE_PUSH_AS_LATEST: 'true'
- DISABLE_PUSH_AS_DEFAULT_ROS_PACKAGE: 'true'
- DISABLE_ARM64: 'true'
\ No newline at end of file
diff --git a/.gitlab-ci/ml-variations/ros-torch-py.yml b/.gitlab-ci/ml-variations/ros-torch-py.yml
deleted file mode 100644
index c232e9b..0000000
--- a/.gitlab-ci/ml-variations/ros-torch-py.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-include: .gitlab-ci/ml-variations/ros-torch.yml
-
-variables:
- TAG: ${ROS_DISTRO}-${ROS_PACKAGE}-torch${TORCH_VERSION}-py
- IMAGE_CI_CACHE: ${IMAGE_REPO_CI}:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}-torch${TORCH_VERSION}_ci
- TORCH_VERSION_CPP: ""
- DISABLE_PUSH_AS_LATEST: 'true'
- DISABLE_PUSH_AS_DEFAULT_ROS_PACKAGE: 'true'
diff --git a/.gitlab-ci/ml-variations/ros-torch.yml b/.gitlab-ci/ml-variations/ros-torch.yml
index a8cf167..f674635 100644
--- a/.gitlab-ci/ml-variations/ros-torch.yml
+++ b/.gitlab-ci/ml-variations/ros-torch.yml
@@ -1,9 +1,9 @@
include:
- - .gitlab-ci/ml-variations/ros-cuda-trt.yml
+ - .gitlab-ci/ml-variations/ros-tensorrt.yml
- .gitlab-ci/ml-variations/.torch.yml
variables:
IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-torch
IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-torch
TAG: ${ROS_DISTRO}-${ROS_PACKAGE}-torch${TORCH_VERSION}
- IMAGE_CI_CACHE: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda-trt:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}_ci
+ IMAGE_CI_CACHE: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-tensorrt:${CI_COMMIT_REF_SLUG}_${ROS_DISTRO}-${ROS_PACKAGE}_ci
diff --git a/.gitlab-ci/ml-variations/ros.yml b/.gitlab-ci/ml-variations/ros.yml
index c1a91da..a678c46 100644
--- a/.gitlab-ci/ml-variations/ros.yml
+++ b/.gitlab-ci/ml-variations/ros.yml
@@ -8,4 +8,3 @@ variables:
IMAGE: ${IMAGE_REPO}:${TAG}
IMAGE_CI: ${IMAGE_REPO_CI}:${CI_COMMIT_REF_SLUG}_${TAG}_ci
IMAGE_CI_CACHE: ${IMAGE_CI}
- CUDA_VERSION: "11.8" # only used for variable substitution in the base-ml image (build fails otherwise)
diff --git a/.gitlab-ci/ros-noetic/.ros-noetic.yml b/.gitlab-ci/ros-noetic/.ros-noetic.yml
index d671ff9..533876d 100644
--- a/.gitlab-ci/ros-noetic/.ros-noetic.yml
+++ b/.gitlab-ci/ros-noetic/.ros-noetic.yml
@@ -3,5 +3,6 @@ variables:
ROS_VERSION: 1
ROS_VERSION_NAME: "ros"
ROS_DISTRO: noetic
- DISABLE_CUDA: "true"
- DISABLE_TRITON: "true"
+ _TF_VERSION: 2.12.0
+ _TORCH_VERSION: 2.1.0
+ _TRITON_VERSION: 2.48.0
diff --git a/.gitlab-ci/ros2-humble/.ros2-humble.yml b/.gitlab-ci/ros2-humble/.ros2-humble.yml
index 99928f2..5146f38 100644
--- a/.gitlab-ci/ros2-humble/.ros2-humble.yml
+++ b/.gitlab-ci/ros2-humble/.ros2-humble.yml
@@ -3,4 +3,6 @@ variables:
ROS_VERSION: 2
ROS_VERSION_NAME: "ros2"
ROS_DISTRO: humble
- DISABLE_ML_ARM64: "true"
+ _TF_VERSION: 2.16.1
+ _TORCH_VERSION: 2.4.0
+ _TRITON_VERSION: 2.48.0
\ No newline at end of file
diff --git a/.gitlab-ci/ros2-iron/.ros2-iron.yml b/.gitlab-ci/ros2-iron/.ros2-iron.yml
index 8c8a33a..147e6a5 100644
--- a/.gitlab-ci/ros2-iron/.ros2-iron.yml
+++ b/.gitlab-ci/ros2-iron/.ros2-iron.yml
@@ -3,4 +3,6 @@ variables:
ROS_VERSION: 2
ROS_VERSION_NAME: "ros2"
ROS_DISTRO: iron
- DISABLE_ML_ARM64: "true"
+ _TF_VERSION: 2.16.1
+ _TORCH_VERSION: 2.4.0
+ _TRITON_VERSION: 2.48.0
diff --git a/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml b/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
index e130ee5..a81593a 100644
--- a/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
+++ b/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
@@ -3,9 +3,11 @@ variables:
ROS_VERSION: 2
ROS_VERSION_NAME: ros2
ROS_DISTRO: jazzy
- DISABLE_CUDA: "true"
- DISABLE_CUDA_TRT: "true"
- DISABLE_TRITON: "true"
+ _TF_VERSION: 2.16.1
+ _TORCH_VERSION: 2.4.0
+ _TRITON_VERSION: 2.48.0
+ DISABLE_TENSORRT: "true"
DISABLE_TORCH: "true"
DISABLE_TF: "true"
DISABLE_ML: "true"
+ DISABLE_ML_ARM64: "true"
diff --git a/.gitlab-ci/ros2-rolling/.ros2-rolling.yml b/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
index bf6f165..8cdec8f 100644
--- a/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
+++ b/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
@@ -3,5 +3,6 @@ variables:
ROS_VERSION: 2
ROS_VERSION_NAME: "ros2"
ROS_DISTRO: rolling
- DISABLE_CUDA: "true"
- DISABLE_TRITON: "true"
+ _TF_VERSION: 2.12.0
+ _TORCH_VERSION: 2.1.0
+ _TRITON_VERSION: 2.48.0
diff --git a/.version_information-triton.sh b/.version_information-cuda.sh
similarity index 100%
rename from .version_information-triton.sh
rename to .version_information-cuda.sh
diff --git a/.version_information-ml.sh b/.version_information-tensorrt.sh
similarity index 100%
rename from .version_information-ml.sh
rename to .version_information-tensorrt.sh
diff --git a/Dockerfile b/Dockerfile
index 1fe7153..6b0ba92 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,34 +2,49 @@
# --load \
# --platform $(uname)/$(uname -m) \
# --build-arg BUILD_VERSION=$BUILD_VERSION \
-# --build-arg CUDA_VERSION=$CUDA_VERSION \
# --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_PY=$TORCH_VERSION_PY \
-# --build-arg TORCH_VERSION_CPP=$TORCH_VERSION_CPP \
# --build-arg TF_VERSION_PY=$TF_VERSION_PY \
-# --build-arg TF_VERSION_CPP=$TF_VERSION_CPP \
# --build-arg TRITON_VERSION=$TRITON_VERSION \
# --tag $IMAGE \
# .
ARG BUILD_VERSION
ARG UBUNTU_VERSION="22.04"
-ARG CUDA_VERSION=12.2
-# === base (multiarch) ===============================================================
-FROM ubuntu:${UBUNTU_VERSION} as base
+# === ubuntu base images ==========================================================================
+FROM --platform=amd64 ubuntu:20.04 as base-ubuntu20.04-amd64
+FROM --platform=amd64 ubuntu:22.04 as base-ubuntu22.04-amd64
+FROM --platform=amd64 ubuntu:24.04 as base-ubuntu24.04-amd64
-# === base-ml (multiarch) ============================================================
-FROM rwthika/cuda:${CUDA_VERSION}-cudnn-trt-ubuntu${UBUNTU_VERSION} as base-ml
+FROM --platform=arm64 ubuntu:20.04 as base-ubuntu20.04-arm64
+FROM --platform=arm64 ubuntu:22.04 as base-ubuntu22.04-arm64
+FROM --platform=arm64 ubuntu:24.04 as base-ubuntu24.04-arm64
-# === base-triton (multiarch) ============================================================
-FROM rwthika/cuda:${CUDA_VERSION}-ubuntu${UBUNTU_VERSION} as base-triton
+# === cuda base images ============================================================================
+FROM --platform=amd64 nvcr.io/nvidia/cuda:11.4.3-runtime-ubuntu20.04 as base-cuda-ubuntu20.04-amd64
+FROM --platform=amd64 nvcr.io/nvidia/cuda:12.2.2-runtime-ubuntu22.04 as base-cuda-ubuntu22.04-amd64
+FROM --platform=amd64 nvcr.io/nvidia/cuda:12.6.0-runtime-ubuntu24.04 as base-cuda-ubuntu24.04-amd64
-# === dependencies ===================================================================
-FROM "base${BUILD_VERSION}" as dependencies
+FROM --platform=arm64 nvcr.io/nvidia/l4t-cuda:11.4.19-runtime as base-cuda-ubuntu20.04-arm64
+FROM --platform=arm64 nvcr.io/nvidia/l4t-cuda:12.2.12-runtime as base-cuda-ubuntu22.04-arm64
+# no l4t-cuda image for ubuntu24 available
+
+# === tensorrt base images ========================================================================
+FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.04-py3 as base-tensorrt-ubuntu20.04-amd64
+FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.09-py3 as base-tensorrt-ubuntu22.04-amd64
+# no tensorrt image for ubuntu24 available
+
+FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.5.2-runtime as base-tensorrt-ubuntu20.04-arm64
+FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.6.2-runtime as base-tensorrt-ubuntu22.04-arm64
+# no l4t-tensorrt image for ubuntu24 available
+
+
+# === dependencies ================================================================================
+FROM "base${BUILD_VERSION}-ubuntu${UBUNTU_VERSION}-${TARGETARCH}" as dependencies
ARG DEBIAN_FRONTEND=noninteractive
SHELL ["/bin/bash", "-c"]
@@ -73,7 +88,7 @@ RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.d
apt-get install git-lfs && \
rm -rf /var/lib/apt/lists/*
-# --- install and setup ROS ----------------------------------------------------
+# === install and setup ROS =======================================================================
FROM dependencies as ros
ARG TARGETARCH
ARG UBUNTU_VERSION
@@ -124,9 +139,8 @@ RUN apt-get update && \
# source ROS
RUN echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc
-# --- install ML stuff ----------------------------------------------------
-# TODO: works only with CUDA 11.x / deprecated
-FROM ros as ros-ml
+# === install ML frameworks on tensorrt base ======================================================
+FROM ros as ros-tensorrt
ARG TARGETARCH
ARG UBUNTU_VERSION
@@ -134,58 +148,26 @@ ARG UBUNTU_VERSION
ARG TORCH_VERSION_PY
RUN if [[ -n $TORCH_VERSION_PY ]]; then \
if [[ "$TARGETARCH" == "amd64" ]]; then \
- if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then PT_PACKAGE_NAME=1.11.0+cu113; \
- elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then PT_PACKAGE_NAME=2.0.1+cu118; \
- else PT_PACKAGE_NAME=${TORCH_VERSION_PY}+cpu; fi && \
- pip install torch==${PT_PACKAGE_NAME} -f https://download.pytorch.org/whl/torch_stable.html ; \
+ pip3 install torch==${TORCH_VERSION_PY}; \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
# from: https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
# and: https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html#prereqs-install
- if [[ "$TORCH_VERSION_PY" = "1.11.0" ]]; then TORCH_INSTALL=https://nvidia.box.com/shared/static/ssf2v7pf5i245fk4i0q926hy4imzs2ph.whl; \
- elif [[ "$TORCH_VERSION_PY" = "2.0.1" ]]; then TORCH_INSTALL=https://developer.download.nvidia.cn/compute/redist/jp/v511/pytorch/torch-2.0.0+nv23.05-cp38-cp38-linux_aarch64.whl; \
- else TORCH_INSTALL=""; fi && \
- pip install --no-cache $TORCH_INSTALL && \
- apt-get update && \
- apt-get install -y libopenblas-base && \
- rm -rf /var/lib/apt/lists/* ; \
- fi ; \
- fi
-
-# install PyTorch C++ API (not available for arm64)
-ARG TORCH_VERSION_CPP
-RUN if [[ -n $TORCH_VERSION_CPP ]]; then \
- if [[ "$TARGETARCH" == "amd64" ]]; then \
- if [[ "$TORCH_VERSION_CPP" = "1.11.0" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu113/libtorch-cxx11-abi-shared-with-deps-1.11.0%2Bcu113.zip; \
- elif [[ "$TORCH_VERSION_CPP" = "2.0.1" ]]; then PT_CPP_URL=https://download.pytorch.org/libtorch/cu118/libtorch-cxx11-abi-shared-with-deps-2.0.1%2Bcu118.zip; \
- else PT_CPP_URL=""; fi && \
- wget -q -O /tmp/libtorch.zip ${PT_CPP_URL} && \
- unzip /tmp/libtorch.zip -d /opt/ && \
- rm /tmp/libtorch.zip ; \
- fi ; \
- fi
-
-# install TensorFlow C++ API incl. protobuf
-ARG TF_VERSION_CPP
-RUN if [[ -n $TF_VERSION_CPP ]]; then \
- wget -q -O /tmp/libtensorflow-cc.deb "https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_CPP/+*/}/libtensorflow-cc_${TF_VERSION_CPP}-gpu_${TARGETARCH}.deb" && \
- dpkg -i /tmp/libtensorflow-cc.deb && \
- ldconfig && \
- rm /tmp/libtensorflow-cc.deb ; \
+ pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v60/pytorch/torch-${TORCH_VERSION_PY}a0+f70bd71a48.nv24.06.15634931-cp310-cp310-linux_aarch64.whl; \
+ fi; \
fi
# install TensorFlow
ARG TF_VERSION_PY
RUN if [[ -n $TF_VERSION_PY ]]; then \
- apt-get update && \
- apt-get install -y libhdf5-dev && \
- rm -rf /var/lib/apt/lists/* && \
- PYTHON_VERSION=$(python3 --version 2>&1 | awk '{print $2}' | cut -d. -f1,2 | tr -d .) && \
- ARCH=$(uname -m) && \
- pip install --no-cache https://github.com/ika-rwth-aachen/libtensorflow_cc/releases/download/v${TF_VERSION_PY/+*/}/tensorflow-${TF_VERSION_PY}-cp${PYTHON_VERSION}-cp${PYTHON_VERSION}-linux_${ARCH}.whl; \
+ if [[ "$TARGETARCH" == "amd64" ]]; then \
+ pip3 install tensorflow==${TF_VERSION_PY}; \
+ elif [[ "$TARGETARCH" == "arm64" ]]; then \
+ pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v${JP_VERSION} tensorflow==${TF_VERSION_PY}+nv24.07; \
+ fi; \
fi
-# --- install tritonclient ----------------------------------------------------
-FROM ros as ros-triton
+# === install tritonclient on cuda base ===========================================================
+FROM ros as ros-cuda
ARG TARGETARCH
# install triton client
From 2cabe68dc197a218c65eac88a094aa4955398b0d Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Tue, 20 Aug 2024 17:42:04 +0200
Subject: [PATCH 25/64] install correct wheels for ROS1
---
Dockerfile | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 6b0ba92..24a797b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -152,7 +152,11 @@ RUN if [[ -n $TORCH_VERSION_PY ]]; then \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
# from: https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
# and: https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html#prereqs-install
- pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v60/pytorch/torch-${TORCH_VERSION_PY}a0+f70bd71a48.nv24.06.15634931-cp310-cp310-linux_aarch64.whl; \
+ if [[ $UBUNTU_VERSION == "20.04" ]]; then \
+ pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-${TORCH_VERSION_PY}a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl; \
+ else \
+ pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v60/pytorch/torch-${TORCH_VERSION_PY}a0+f70bd71a48.nv24.06.15634931-cp310-cp310-linux_aarch64.whl; \
+ fi; \
fi; \
fi
@@ -162,7 +166,14 @@ RUN if [[ -n $TF_VERSION_PY ]]; then \
if [[ "$TARGETARCH" == "amd64" ]]; then \
pip3 install tensorflow==${TF_VERSION_PY}; \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
- pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v${JP_VERSION} tensorflow==${TF_VERSION_PY}+nv24.07; \
+ apt-get update && \
+ apt-get install -y libhdf5-dev && \
+ rm -rf /var/lib/apt/lists/* && \
+ if [[ $UBUNTU_VERSION == "20.04" ]]; then \
+ pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v512 tensorflow==${TF_VERSION_PY}+nv23.06; \
+ else \
+ pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v60 tensorflow==${TF_VERSION_PY}+nv24.07; \
+ fi; \
fi; \
fi
From f17d4bcba684567ab8dd9f1e8c930ea24a67d95d Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Tue, 20 Aug 2024 18:03:14 +0200
Subject: [PATCH 26/64] install necessary requirements for jetson packages
---
Dockerfile | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 24a797b..c31f33c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -152,6 +152,9 @@ RUN if [[ -n $TORCH_VERSION_PY ]]; then \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
# from: https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
# and: https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html#prereqs-install
+ apt-get update && \
+ apt-get install -y libopenblas-base && \
+ rm -rf /var/lib/apt/lists/* ; \
if [[ $UBUNTU_VERSION == "20.04" ]]; then \
pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-${TORCH_VERSION_PY}a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl; \
else \
@@ -170,8 +173,9 @@ RUN if [[ -n $TF_VERSION_PY ]]; then \
apt-get install -y libhdf5-dev && \
rm -rf /var/lib/apt/lists/* && \
if [[ $UBUNTU_VERSION == "20.04" ]]; then \
+ pip3 install h5py==3.7.0 && \
pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v512 tensorflow==${TF_VERSION_PY}+nv23.06; \
- else \
+ else \
pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v60 tensorflow==${TF_VERSION_PY}+nv24.07; \
fi; \
fi; \
From 0ca92ed076c83810bfd3a5efd8f6f4a46d0b2ad4 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Tue, 20 Aug 2024 18:38:48 +0200
Subject: [PATCH 27/64] temporaray only build ros-core in CI
---
.gitlab-ci.yml | 210 ++++++++++++++++++++++++-------------------------
1 file changed, 105 insertions(+), 105 deletions(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f916176..65da52e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,27 +25,27 @@ ros-noetic-ros-core:
include: .gitlab-ci/ros-noetic/ros-noetic-ros-core.yml
strategy: depend
-ros-noetic-ros-base:
- stage: ROS 1 Noetic
- rules:
- - if: $ROS_DISTROS =~ /.*noetic.*/
- needs:
- - job: ros-noetic-ros-core
- optional: true
- trigger:
- include: .gitlab-ci/ros-noetic/ros-noetic-ros-base.yml
- strategy: depend
-
-ros-noetic-desktop-full:
- stage: ROS 1 Noetic
- rules:
- - if: $ROS_DISTROS =~ /.*noetic.*/
- needs:
- - job: ros-noetic-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros-noetic/ros-noetic-desktop-full.yml
- strategy: depend
+# ros-noetic-ros-base:
+# stage: ROS 1 Noetic
+# rules:
+# - if: $ROS_DISTROS =~ /.*noetic.*/
+# needs:
+# - job: ros-noetic-ros-core
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros-noetic/ros-noetic-ros-base.yml
+# strategy: depend
+
+# ros-noetic-desktop-full:
+# stage: ROS 1 Noetic
+# rules:
+# - if: $ROS_DISTROS =~ /.*noetic.*/
+# needs:
+# - job: ros-noetic-ros-base
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros-noetic/ros-noetic-desktop-full.yml
+# strategy: depend
ros2-humble-ros-core:
@@ -57,27 +57,27 @@ ros2-humble-ros-core:
include: .gitlab-ci/ros2-humble/ros2-humble-ros-core.yml
strategy: depend
-ros2-humble-ros-base:
- stage: ROS 2 Humble
- rules:
- - if: $ROS_DISTROS =~ /.*humble.*/
- needs:
- - job: ros2-humble-ros-core
- optional: true
- trigger:
- include: .gitlab-ci/ros2-humble/ros2-humble-ros-base.yml
- strategy: depend
-
-ros2-humble-desktop-full:
- stage: ROS 2 Humble
- rules:
- - if: $ROS_DISTROS =~ /.*humble.*/
- needs:
- - job: ros2-humble-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-humble/ros2-humble-desktop-full.yml
- strategy: depend
+# ros2-humble-ros-base:
+# stage: ROS 2 Humble
+# rules:
+# - if: $ROS_DISTROS =~ /.*humble.*/
+# needs:
+# - job: ros2-humble-ros-core
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-humble/ros2-humble-ros-base.yml
+# strategy: depend
+
+# ros2-humble-desktop-full:
+# stage: ROS 2 Humble
+# rules:
+# - if: $ROS_DISTROS =~ /.*humble.*/
+# needs:
+# - job: ros2-humble-ros-base
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-humble/ros2-humble-desktop-full.yml
+# strategy: depend
ros2-iron-ros-core:
@@ -89,27 +89,27 @@ ros2-iron-ros-core:
include: .gitlab-ci/ros2-iron/ros2-iron-ros-core.yml
strategy: depend
-ros2-iron-ros-base:
- stage: ROS 2 Iron
- rules:
- - if: $ROS_DISTROS =~ /.*iron.*/
- needs:
- - job: ros2-iron-ros-core
- optional: true
- trigger:
- include: .gitlab-ci/ros2-iron/ros2-iron-ros-base.yml
- strategy: depend
-
-ros2-iron-desktop-full:
- stage: ROS 2 Iron
- rules:
- - if: $ROS_DISTROS =~ /.*iron.*/
- needs:
- - job: ros2-iron-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-iron/ros2-iron-desktop-full.yml
- strategy: depend
+# ros2-iron-ros-base:
+# stage: ROS 2 Iron
+# rules:
+# - if: $ROS_DISTROS =~ /.*iron.*/
+# needs:
+# - job: ros2-iron-ros-core
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-iron/ros2-iron-ros-base.yml
+# strategy: depend
+
+# ros2-iron-desktop-full:
+# stage: ROS 2 Iron
+# rules:
+# - if: $ROS_DISTROS =~ /.*iron.*/
+# needs:
+# - job: ros2-iron-ros-base
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-iron/ros2-iron-desktop-full.yml
+# strategy: depend
ros2-jazzy-ros-core:
@@ -121,27 +121,27 @@ ros2-jazzy-ros-core:
include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-core.yml
strategy: depend
-ros2-jazzy-ros-base:
- stage: ROS 2 Jazzy
- rules:
- - if: $ROS_DISTROS =~ /.*jazzy.*/
- needs:
- - job: ros2-jazzy-ros-core
- optional: true
- trigger:
- include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
- strategy: depend
-
-ros2-jazzy-desktop-full:
- stage: ROS 2 Jazzy
- rules:
- - if: $ROS_DISTROS =~ /.*jazzy.*/
- needs:
- - job: ros2-jazzy-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
- strategy: depend
+# ros2-jazzy-ros-base:
+# stage: ROS 2 Jazzy
+# rules:
+# - if: $ROS_DISTROS =~ /.*jazzy.*/
+# needs:
+# - job: ros2-jazzy-ros-core
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
+# strategy: depend
+
+# ros2-jazzy-desktop-full:
+# stage: ROS 2 Jazzy
+# rules:
+# - if: $ROS_DISTROS =~ /.*jazzy.*/
+# needs:
+# - job: ros2-jazzy-ros-base
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
+# strategy: depend
ros2-rolling-ros-core:
@@ -153,24 +153,24 @@ ros2-rolling-ros-core:
include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-core.yml
strategy: depend
-ros2-rolling-ros-base:
- stage: ROS 2 Rolling
- rules:
- - if: $ROS_DISTROS =~ /.*rolling.*/
- needs:
- - job: ros2-rolling-ros-core
- optional: true
- trigger:
- include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-base.yml
- strategy: depend
-
-ros2-rolling-desktop:
- stage: ROS 2 Rolling
- rules:
- - if: $ROS_DISTROS =~ /.*rolling.*/
- needs:
- - job: ros2-rolling-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-rolling/ros2-rolling-desktop.yml
- strategy: depend
+# ros2-rolling-ros-base:
+# stage: ROS 2 Rolling
+# rules:
+# - if: $ROS_DISTROS =~ /.*rolling.*/
+# needs:
+# - job: ros2-rolling-ros-core
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-base.yml
+# strategy: depend
+
+# ros2-rolling-desktop:
+# stage: ROS 2 Rolling
+# rules:
+# - if: $ROS_DISTROS =~ /.*rolling.*/
+# needs:
+# - job: ros2-rolling-ros-base
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-rolling/ros2-rolling-desktop.yml
+# strategy: depend
From 080c42713efcecaa44a40324687c6d5c391bc4f9 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 21 Aug 2024 19:04:43 +0200
Subject: [PATCH 28/64] fix bug in apt source.list for l4t base images
---
Dockerfile | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Dockerfile b/Dockerfile
index c31f33c..2b8156c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -51,6 +51,12 @@ SHELL ["/bin/bash", "-c"]
USER root
+RUN if [[ $TARGETARCH == "arm64" && $UBUNTU_VERSION == "22.04" ]]; then \
+ # bug in base image -> replace line in /etc/apt/sources.list to use "r36.3" instead of "r36.0"
+ sed -i 's/https:\/\/repo.download.nvidia.com\/jetson\/common r36.0 main/https:\/\/repo.download.nvidia.com\/jetson\/common r36.3 main/g' /etc/apt/sources.list && \
+ echo "deb https://repo.download.nvidia.com/jetson/t234 r36.3 main" >> /etc/apt/sources.list; \
+ fi
+
# install essentials via apt
ARG UBUNTU_VERSION
RUN apt-get update && \
From 18ac881cb70ccd52687462d359b3c9dbb58201e2 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 21 Aug 2024 19:07:46 +0200
Subject: [PATCH 29/64] remove C++ version information
---
.version_information-tensorrt.sh | 17 ++---------------
1 file changed, 2 insertions(+), 15 deletions(-)
diff --git a/.version_information-tensorrt.sh b/.version_information-tensorrt.sh
index 5d19101..722a300 100755
--- a/.version_information-tensorrt.sh
+++ b/.version_information-tensorrt.sh
@@ -19,17 +19,6 @@ PYTHON_VERSION=$(python --version | awk '{print $2}')
TF_PIP_VERSION=$(python -c "exec(\"try:\n import os; os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'; import tensorflow as tf; print(tf.__version__);\n\rexcept ImportError:\n pass\")")
PT_PIP_VERSION=$(python -c "exec(\"try:\n import torch; print(torch.__version__);\n\rexcept ImportError:\n pass\")")
-if [[ -f /usr/local/include/tensorflow/tensorflow/core/public/version.h ]]; then
- TF_C_MAJOR=$(cat /usr/local/include/tensorflow/tensorflow/core/public/version.h | grep "#define TF_MAJOR_VERSION" | sed "s/#define TF_MAJOR_VERSION //")
- TF_C_MINOR=$(cat /usr/local/include/tensorflow/tensorflow/core/public/version.h | grep "#define TF_MINOR_VERSION" | sed "s/#define TF_MINOR_VERSION //")
- TF_C_PATCH=$(cat /usr/local/include/tensorflow/tensorflow/core/public/version.h | grep "#define TF_PATCH_VERSION" | sed "s/#define TF_PATCH_VERSION //")
- TF_C_VERSION=$TF_C_MAJOR.$TF_C_MINOR.$TF_C_PATCH
-fi
-
-if [[ -f /opt/libtorch/build-version ]]; then
- PT_C_VERSION=$(cat /opt/libtorch/build-version)
-fi
-
CMAKE_VERSION=$(cmake --version | grep version | awk '{print $3}')
if [[ $(command -v nvidia-smi) ]]; then
NUM_GPUS=$(nvidia-smi --query-gpu=name --format=csv,noheader | wc -l)
@@ -51,10 +40,8 @@ CMake: $CMAKE_VERSION
CUDA: $CUDA_VERSION
cuDNN: $CUDNN_VERSION
TensorRT: $TENSORRT_VERSION
-TensorFlow Python: $TF_PIP_VERSION
-TensorFlow C/C++: $TF_C_VERSION
-PyTorch Python: $PT_PIP_VERSION
-PyTorch C/C++: $PT_C_VERSION
+TensorFlow: $TF_PIP_VERSION
+PyTorch: $PT_PIP_VERSION
Available GPUs: $NUM_GPUS
$GPU_INFOS
================================================================================
From 991bb6c93101c7ef2fa4567b950a9c459b65ff81 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 21 Aug 2024 19:10:31 +0200
Subject: [PATCH 30/64] show version information again with one file
---
.version_information-cuda.sh | 40 --------------------------
.version_information-tensorrt.sh | 49 --------------------------------
.version_information.sh | 13 +++++++++
Dockerfile | 2 +-
4 files changed, 14 insertions(+), 90 deletions(-)
delete mode 100755 .version_information-cuda.sh
delete mode 100755 .version_information-tensorrt.sh
diff --git a/.version_information-cuda.sh b/.version_information-cuda.sh
deleted file mode 100755
index fc51ef1..0000000
--- a/.version_information-cuda.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-
-# get container version information
-eval $(cat /etc/os-release | grep ^VERSION=)
-
-ARCH=$(uname -m)
-
-if [[ -z "$RMW_IMPLEMENTATION" ]]; then
- if ros2 pkg list | grep -q "rmw_fastrtps_cpp"; then
- export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
- fi
-fi
-
-CUDA_VERSION=$(dpkg -l 2> /dev/null | grep -E "cuda-cudart-[0-9]" | awk '{ print $3 }')
-PYTHON_VERSION=$(python --version | awk '{print $2}')
-CMAKE_VERSION=$(cmake --version | grep version | awk '{print $3}')
-if [[ $(command -v nvidia-smi) ]]; then
- NUM_GPUS=$(nvidia-smi --query-gpu=name --format=csv,noheader | wc -l)
- GPU_INFOS=$(nvidia-smi --query-gpu=name,driver_version,utilization.gpu,utilization.memory,memory.used,memory.total --format=csv | column -t -s, | sed 's/^/ /')
-else
- NUM_GPUS="0"
- GPU_INFOS=""
-fi
-
-# print information
-cat << EOF
-=== CONTAINER INFORMATION ======================================================
-Architecture: $ARCH
-Ubuntu: $VERSION
-Python: $PYTHON_VERSION
-ROS: $ROS_DISTRO
-RMW: $RMW_IMPLEMENTATION
-CMake: $CMAKE_VERSION
-CUDA: $CUDA_VERSION
-Triton: $TRITON_VERSION
-Available GPUs: $NUM_GPUS
-$GPU_INFOS
-================================================================================
-
-EOF
diff --git a/.version_information-tensorrt.sh b/.version_information-tensorrt.sh
deleted file mode 100755
index 722a300..0000000
--- a/.version_information-tensorrt.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash
-
-# get container version information
-eval $(cat /etc/os-release | grep ^VERSION=)
-
-ARCH=$(uname -m)
-
-if [[ -z "$RMW_IMPLEMENTATION" ]]; then
- if ros2 pkg list | grep -q "rmw_fastrtps_cpp"; then
- export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
- fi
-fi
-
-CUDA_VERSION=$(dpkg -l 2> /dev/null | grep -E "cuda-cudart-[0-9]" | awk '{ print $3 }')
-CUDNN_VERSION=$(dpkg -l 2> /dev/null | grep -E "libcudnn[0-9] " | awk '{ print $3 }')
-TENSORRT_VERSION=$(dpkg -l 2> /dev/null | grep -E "libnvinfer[0-9] " | awk '{ print $3 }')
-
-PYTHON_VERSION=$(python --version | awk '{print $2}')
-TF_PIP_VERSION=$(python -c "exec(\"try:\n import os; os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'; import tensorflow as tf; print(tf.__version__);\n\rexcept ImportError:\n pass\")")
-PT_PIP_VERSION=$(python -c "exec(\"try:\n import torch; print(torch.__version__);\n\rexcept ImportError:\n pass\")")
-
-CMAKE_VERSION=$(cmake --version | grep version | awk '{print $3}')
-if [[ $(command -v nvidia-smi) ]]; then
- NUM_GPUS=$(nvidia-smi --query-gpu=name --format=csv,noheader | wc -l)
- GPU_INFOS=$(nvidia-smi --query-gpu=name,driver_version,utilization.gpu,utilization.memory,memory.used,memory.total --format=csv | column -t -s, | sed 's/^/ /')
-else
- NUM_GPUS="0"
- GPU_INFOS=""
-fi
-
-# print information
-cat << EOF
-=== CONTAINER INFORMATION ======================================================
-Architecture: $ARCH
-Ubuntu: $VERSION
-Python: $PYTHON_VERSION
-ROS: $ROS_DISTRO
-RMW: $RMW_IMPLEMENTATION
-CMake: $CMAKE_VERSION
-CUDA: $CUDA_VERSION
-cuDNN: $CUDNN_VERSION
-TensorRT: $TENSORRT_VERSION
-TensorFlow: $TF_PIP_VERSION
-PyTorch: $PT_PIP_VERSION
-Available GPUs: $NUM_GPUS
-$GPU_INFOS
-================================================================================
-
-EOF
diff --git a/.version_information.sh b/.version_information.sh
index 35ce151..0c78134 100755
--- a/.version_information.sh
+++ b/.version_information.sh
@@ -11,7 +11,14 @@ if [[ -z "$RMW_IMPLEMENTATION" ]]; then
fi
fi
+CUDA_VERSION=$(dpkg -l 2> /dev/null | grep -E "cuda-cudart-[0-9]" | awk '{ print $3 }')
+CUDNN_VERSION=$(dpkg -l 2> /dev/null | grep -E "libcudnn[0-9] " | awk '{ print $3 }')
+TENSORRT_VERSION=$(dpkg -l 2> /dev/null | grep -E "libnvinfer[0-9] " | awk '{ print $3 }')
+
PYTHON_VERSION=$(python --version | awk '{print $2}')
+TF_PIP_VERSION=$(python -c "exec(\"try:\n import os; os.environ['TF_CPP_MIN_LOG_LEVEL'] = '1'; import tensorflow as tf; print(tf.__version__);\n\rexcept ImportError:\n pass\")")
+PT_PIP_VERSION=$(python -c "exec(\"try:\n import torch; print(torch.__version__);\n\rexcept ImportError:\n pass\")")
+
CMAKE_VERSION=$(cmake --version | grep version | awk '{print $3}')
if [[ $(command -v nvidia-smi) ]]; then
NUM_GPUS=$(nvidia-smi --query-gpu=name --format=csv,noheader | wc -l)
@@ -30,6 +37,12 @@ Python: $PYTHON_VERSION
ROS: $ROS_DISTRO
RMW: $RMW_IMPLEMENTATION
CMake: $CMAKE_VERSION
+CUDA: $CUDA_VERSION
+cuDNN: $CUDNN_VERSION
+TensorRT: $TENSORRT_VERSION
+Triton: $TRITON_VERSION
+TensorFlow: $TF_PIP_VERSION
+PyTorch: $PT_PIP_VERSION
Available GPUs: $NUM_GPUS
$GPU_INFOS
================================================================================
diff --git a/Dockerfile b/Dockerfile
index 2b8156c..307333e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -216,7 +216,7 @@ ENV DOCKER_GID=
# print version information during login
RUN echo "source /.version_information.sh" >> ~/.bashrc
ARG BUILD_VERSION
-COPY .version_information${BUILD_VERSION}.sh /.version_information.sh
+COPY .version_information.sh /.version_information.sh
# container startup setup
ENV WORKSPACE=/docker-ros/ws
From cb1a052e5c4c1e7ea705cbe9936880d812140837 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 21 Aug 2024 21:39:17 +0200
Subject: [PATCH 31/64] expose variables for condition
---
Dockerfile | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 307333e..367de9b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -51,6 +51,8 @@ SHELL ["/bin/bash", "-c"]
USER root
+ARG TARGETARCH
+ARG UBUNTU_VERSION
RUN if [[ $TARGETARCH == "arm64" && $UBUNTU_VERSION == "22.04" ]]; then \
# bug in base image -> replace line in /etc/apt/sources.list to use "r36.3" instead of "r36.0"
sed -i 's/https:\/\/repo.download.nvidia.com\/jetson\/common r36.0 main/https:\/\/repo.download.nvidia.com\/jetson\/common r36.3 main/g' /etc/apt/sources.list && \
@@ -58,7 +60,6 @@ RUN if [[ $TARGETARCH == "arm64" && $UBUNTU_VERSION == "22.04" ]]; then \
fi
# install essentials via apt
-ARG UBUNTU_VERSION
RUN apt-get update && \
apt-get install -y \
bsdmainutils \
From ef58ccdc47070800f7920d4ee780543df0c0dbc7 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 22 Aug 2024 10:30:17 +0200
Subject: [PATCH 32/64] fix plain arm images
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 367de9b..5070b23 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -53,7 +53,7 @@ USER root
ARG TARGETARCH
ARG UBUNTU_VERSION
-RUN if [[ $TARGETARCH == "arm64" && $UBUNTU_VERSION == "22.04" ]]; then \
+RUN if [[ $TARGETARCH == "arm64" && $UBUNTU_VERSION == "22.04" && $BUILD_VERSION != "" ]]; then \
# bug in base image -> replace line in /etc/apt/sources.list to use "r36.3" instead of "r36.0"
sed -i 's/https:\/\/repo.download.nvidia.com\/jetson\/common r36.0 main/https:\/\/repo.download.nvidia.com\/jetson\/common r36.3 main/g' /etc/apt/sources.list && \
echo "deb https://repo.download.nvidia.com/jetson/t234 r36.3 main" >> /etc/apt/sources.list; \
From e1ce43577aee07bf398b3ad4b16f1aa9f2adcbef Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 22 Aug 2024 10:32:55 +0200
Subject: [PATCH 33/64] rename build version arg
---
.gitlab-ci/ml-variations/.template.yml | 10 +++++-----
.gitlab-ci/ml-variations/ros-cuda.yml | 2 +-
.gitlab-ci/ml-variations/ros-tensorrt.yml | 2 +-
.gitlab-ci/ml-variations/ros.yml | 2 +-
Dockerfile | 14 +++++++-------
README.md | 2 +-
6 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/.gitlab-ci/ml-variations/.template.yml b/.gitlab-ci/ml-variations/.template.yml
index b3b20f8..643a73e 100644
--- a/.gitlab-ci/ml-variations/.template.yml
+++ b/.gitlab-ci/ml-variations/.template.yml
@@ -32,7 +32,7 @@ variables:
--cache-from type=registry,ref=$IMAGE_CACHE
--cache-to type=inline
--platform $PLATFORM
- --build-arg BUILD_VERSION=$BUILD_VERSION
+ --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
@@ -45,13 +45,13 @@ variables:
.docker-push-manifest:
script:
- |-
- if [[ "${DISABLE_AMD64}" != "true" ]] && [[ "${DISABLE_ML_AMD64}" != "true" || "${BUILD_VERSION}" == "" ]]; then
+ if [[ "${DISABLE_AMD64}" != "true" ]] && [[ "${DISABLE_ML_AMD64}" != "true" || "${BASE_IMAGE_TYPE}" == "" ]]; then
docker pull ${IMAGE_CI}-amd64
docker tag ${IMAGE_CI}-amd64 ${IMAGE}-amd64
docker push ${IMAGE}-amd64
AMD64_IS_ENABLED="true"
fi
- if [[ "${DISABLE_ARM64}" != "true" ]] && [[ "${DISABLE_ML_ARM64}" != "true" || "${BUILD_VERSION}" == "" ]]; then
+ if [[ "${DISABLE_ARM64}" != "true" ]] && [[ "${DISABLE_ML_ARM64}" != "true" || "${BASE_IMAGE_TYPE}" == "" ]]; then
docker pull ${IMAGE_CI}-arm64
docker tag ${IMAGE_CI}-arm64 ${IMAGE}-arm64
docker push ${IMAGE}-arm64
@@ -77,7 +77,7 @@ build-amd64:
rules:
- if: $DISABLE_AMD64 == 'true'
when: never
- - if: $DISABLE_ML_AMD64 == 'true' && $BUILD_VERSION != ''
+ - if: $DISABLE_ML_AMD64 == 'true' && $BASE_IMAGE_TYPE != ''
when: never
- when: on_success
script:
@@ -93,7 +93,7 @@ build-arm64:
rules:
- if: $DISABLE_ARM64 == 'true'
when: never
- - if: $DISABLE_ML_ARM64 == 'true' && $BUILD_VERSION != ''
+ - if: $DISABLE_ML_ARM64 == 'true' && $BASE_IMAGE_TYPE != ''
when: never
- when: on_success
script:
diff --git a/.gitlab-ci/ml-variations/ros-cuda.yml b/.gitlab-ci/ml-variations/ros-cuda.yml
index d08da6b..cf3f2e3 100644
--- a/.gitlab-ci/ml-variations/ros-cuda.yml
+++ b/.gitlab-ci/ml-variations/ros-cuda.yml
@@ -1,6 +1,6 @@
include: .gitlab-ci/ml-variations/ros.yml
variables:
- BUILD_VERSION: "-cuda"
+ BASE_IMAGE_TYPE: "-cuda"
IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-cuda
IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-cuda
diff --git a/.gitlab-ci/ml-variations/ros-tensorrt.yml b/.gitlab-ci/ml-variations/ros-tensorrt.yml
index a551704..9e38843 100644
--- a/.gitlab-ci/ml-variations/ros-tensorrt.yml
+++ b/.gitlab-ci/ml-variations/ros-tensorrt.yml
@@ -1,6 +1,6 @@
include: .gitlab-ci/ml-variations/ros.yml
variables:
- BUILD_VERSION: "-tensorrt"
+ BASE_IMAGE_TYPE: "-tensorrt"
IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-tensorrt
IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-tensorrt
diff --git a/.gitlab-ci/ml-variations/ros.yml b/.gitlab-ci/ml-variations/ros.yml
index a678c46..c875b69 100644
--- a/.gitlab-ci/ml-variations/ros.yml
+++ b/.gitlab-ci/ml-variations/ros.yml
@@ -1,7 +1,7 @@
include: .gitlab-ci/ml-variations/.template.yml
variables:
- BUILD_VERSION: ""
+ BASE_IMAGE_TYPE: ""
IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}
IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}
TAG: ${ROS_DISTRO}-${ROS_PACKAGE}
diff --git a/Dockerfile b/Dockerfile
index 5070b23..06cb369 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,7 @@
# docker buildx build \
# --load \
# --platform $(uname)/$(uname -m) \
-# --build-arg BUILD_VERSION=$BUILD_VERSION \
+# --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 \
@@ -12,7 +12,7 @@
# --tag $IMAGE \
# .
-ARG BUILD_VERSION
+ARG BASE_IMAGE_TYPE
ARG UBUNTU_VERSION="22.04"
# === ubuntu base images ==========================================================================
@@ -34,7 +34,7 @@ FROM --platform=arm64 nvcr.io/nvidia/l4t-cuda:12.2.12-runtime as base-cuda-ubunt
# no l4t-cuda image for ubuntu24 available
# === tensorrt base images ========================================================================
-FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.04-py3 as base-tensorrt-ubuntu20.04-amd64
+FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.04-py3 as base-tensorrt-ubuntu20.04-amd64 # TODO: change to version with CUDA 11.4
FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.09-py3 as base-tensorrt-ubuntu22.04-amd64
# no tensorrt image for ubuntu24 available
@@ -44,7 +44,7 @@ FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.6.2-runtime as base-tensorr
# === dependencies ================================================================================
-FROM "base${BUILD_VERSION}-ubuntu${UBUNTU_VERSION}-${TARGETARCH}" as dependencies
+FROM "base${BASE_IMAGE_TYPE}-ubuntu${UBUNTU_VERSION}-${TARGETARCH}" as dependencies
ARG DEBIAN_FRONTEND=noninteractive
SHELL ["/bin/bash", "-c"]
@@ -53,7 +53,7 @@ USER root
ARG TARGETARCH
ARG UBUNTU_VERSION
-RUN if [[ $TARGETARCH == "arm64" && $UBUNTU_VERSION == "22.04" && $BUILD_VERSION != "" ]]; then \
+RUN if [[ $TARGETARCH == "arm64" && $UBUNTU_VERSION == "22.04" && $BASE_IMAGE_TYPE != "" ]]; then \
# bug in base image -> replace line in /etc/apt/sources.list to use "r36.3" instead of "r36.0"
sed -i 's/https:\/\/repo.download.nvidia.com\/jetson\/common r36.0 main/https:\/\/repo.download.nvidia.com\/jetson\/common r36.3 main/g' /etc/apt/sources.list && \
echo "deb https://repo.download.nvidia.com/jetson/t234 r36.3 main" >> /etc/apt/sources.list; \
@@ -207,7 +207,7 @@ RUN if [[ -n $TRITON_VERSION ]]; then \
fi
# === final ====================================================================
-FROM "ros${BUILD_VERSION}" as final
+FROM "ros${BASE_IMAGE_TYPE}" as final
# user setup
ENV DOCKER_USER=dockeruser
@@ -216,7 +216,7 @@ ENV DOCKER_GID=
# print version information during login
RUN echo "source /.version_information.sh" >> ~/.bashrc
-ARG BUILD_VERSION
+ARG BASE_IMAGE_TYPE
COPY .version_information.sh /.version_information.sh
# container startup setup
diff --git a/README.md b/README.md
index 0c33748..3e02c7d 100644
--- a/README.md
+++ b/README.md
@@ -322,7 +322,7 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
docker buildx build \
--pull \
--platform $PLATFORM \
- --build-arg BUILD_VERSION=$BUILD_VERSION \
+ --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 \
From 59df2f5224990292fcbe590d40eeb4ae70ff5fdf Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 22 Aug 2024 10:47:57 +0200
Subject: [PATCH 34/64] rename tf and torch version args
---
.gitlab-ci/ml-variations/.template.yml | 4 ++--
.gitlab-ci/ml-variations/.tf.yml | 2 +-
Dockerfile | 24 ++++++++++++------------
README.md | 6 ++----
4 files changed, 17 insertions(+), 19 deletions(-)
diff --git a/.gitlab-ci/ml-variations/.template.yml b/.gitlab-ci/ml-variations/.template.yml
index 643a73e..e39268e 100644
--- a/.gitlab-ci/ml-variations/.template.yml
+++ b/.gitlab-ci/ml-variations/.template.yml
@@ -37,8 +37,8 @@ variables:
--build-arg ROS_VERSION=$ROS_VERSION
--build-arg ROS_DISTRO=$ROS_DISTRO
--build-arg ROS_PACKAGE=$ROS_PACKAGE
- --build-arg TORCH_VERSION_PY=$TORCH_VERSION_PY
- --build-arg TF_VERSION_PY=$TF_VERSION_PY
+ --build-arg TORCH_VERSION=$TORCH_VERSION
+ --build-arg TF_VERSION=$TF_VERSION
--build-arg TRITON_VERSION=$TRITON_VERSION
--tag $IMAGE .
diff --git a/.gitlab-ci/ml-variations/.tf.yml b/.gitlab-ci/ml-variations/.tf.yml
index add0a3b..3dc4ce0 100644
--- a/.gitlab-ci/ml-variations/.tf.yml
+++ b/.gitlab-ci/ml-variations/.tf.yml
@@ -1,2 +1,2 @@
variables:
- TF_VERSION_PY: ${_TF_VERSION}
\ No newline at end of file
+ TF_VERSION: ${_TF_VERSION}
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 06cb369..d5fc477 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -6,8 +6,8 @@
# --build-arg ROS_VERSION=$ROS_VERSION \
# --build-arg ROS_DISTRO=$ROS_DISTRO \
# --build-arg ROS_PACKAGE=$ROS_PACKAGE \
-# --build-arg TORCH_VERSION_PY=$TORCH_VERSION_PY \
-# --build-arg TF_VERSION_PY=$TF_VERSION_PY \
+# --build-arg TORCH_VERSION=$TORCH_VERSION \
+# --build-arg TF_VERSION=$TF_VERSION \
# --build-arg TRITON_VERSION=$TRITON_VERSION \
# --tag $IMAGE \
# .
@@ -152,10 +152,10 @@ ARG TARGETARCH
ARG UBUNTU_VERSION
# install PyTorch
-ARG TORCH_VERSION_PY
-RUN if [[ -n $TORCH_VERSION_PY ]]; then \
+ARG TORCH_VERSION
+RUN if [[ -n $TORCH_VERSION ]]; then \
if [[ "$TARGETARCH" == "amd64" ]]; then \
- pip3 install torch==${TORCH_VERSION_PY}; \
+ pip3 install torch==${TORCH_VERSION}; \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
# from: https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
# and: https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html#prereqs-install
@@ -163,27 +163,27 @@ RUN if [[ -n $TORCH_VERSION_PY ]]; then \
apt-get install -y libopenblas-base && \
rm -rf /var/lib/apt/lists/* ; \
if [[ $UBUNTU_VERSION == "20.04" ]]; then \
- pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-${TORCH_VERSION_PY}a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl; \
+ pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-${TORCH_VERSION}a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl; \
else \
- pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v60/pytorch/torch-${TORCH_VERSION_PY}a0+f70bd71a48.nv24.06.15634931-cp310-cp310-linux_aarch64.whl; \
+ pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v60/pytorch/torch-${TORCH_VERSION}a0+f70bd71a48.nv24.06.15634931-cp310-cp310-linux_aarch64.whl; \
fi; \
fi; \
fi
# install TensorFlow
-ARG TF_VERSION_PY
-RUN if [[ -n $TF_VERSION_PY ]]; then \
+ARG TF_VERSION
+RUN if [[ -n $TF_VERSION ]]; then \
if [[ "$TARGETARCH" == "amd64" ]]; then \
- pip3 install tensorflow==${TF_VERSION_PY}; \
+ pip3 install tensorflow==${TF_VERSION}; \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
apt-get update && \
apt-get install -y libhdf5-dev && \
rm -rf /var/lib/apt/lists/* && \
if [[ $UBUNTU_VERSION == "20.04" ]]; then \
pip3 install h5py==3.7.0 && \
- pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v512 tensorflow==${TF_VERSION_PY}+nv23.06; \
+ pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v512 tensorflow==${TF_VERSION}+nv23.06; \
else \
- pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v60 tensorflow==${TF_VERSION_PY}+nv24.07; \
+ pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v60 tensorflow==${TF_VERSION}+nv24.07; \
fi; \
fi; \
fi
diff --git a/README.md b/README.md
index 3e02c7d..37c9259 100644
--- a/README.md
+++ b/README.md
@@ -327,9 +327,7 @@ docker buildx build \
--build-arg ROS_VERSION=$ROS_VERSION \
--build-arg ROS_DISTRO=$ROS_DISTRO \
--build-arg ROS_PACKAGE=$ROS_PACKAGE \
- --build-arg TORCH_VERSION_PY=$TORCH_VERSION_PY \
- --build-arg TORCH_VERSION_CPP=$TORCH_VERSION_CPP \
- --build-arg TF_VERSION_PY=$TF_VERSION_PY \
- --build-arg TF_VERSION_CPP=$TF_VERSION_CPP \
+ --build-arg TORCH_VERSION=$TORCH_VERSION \
+ --build-arg TF_VERSION=$TF_VERSION \
--tag $IMAGE .
```
From 69f62a98e6f3f82c5226889f1d93be969b633ab2 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 22 Aug 2024 11:01:12 +0200
Subject: [PATCH 35/64] small adjustments from MR
---
.gitlab-ci/ml-variations/ros-triton.yml | 1 -
.version_information.sh | 2 +-
Dockerfile | 1 -
3 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/.gitlab-ci/ml-variations/ros-triton.yml b/.gitlab-ci/ml-variations/ros-triton.yml
index 3efeb39..d1b4c86 100644
--- a/.gitlab-ci/ml-variations/ros-triton.yml
+++ b/.gitlab-ci/ml-variations/ros-triton.yml
@@ -2,7 +2,6 @@ include:
- .gitlab-ci/ml-variations/ros-cuda.yml
- .gitlab-ci/ml-variations/.triton.yml
-
variables:
IMAGE_REPO: ${IMAGE_BASE}/${ROS_VERSION_NAME}-triton
IMAGE_REPO_CI: ${IMAGE_BASE_CI}/${ROS_VERSION_NAME}-triton
diff --git a/.version_information.sh b/.version_information.sh
index 0c78134..444915d 100755
--- a/.version_information.sh
+++ b/.version_information.sh
@@ -40,7 +40,7 @@ CMake: $CMAKE_VERSION
CUDA: $CUDA_VERSION
cuDNN: $CUDNN_VERSION
TensorRT: $TENSORRT_VERSION
-Triton: $TRITON_VERSION
+Triton Client: $TRITON_VERSION
TensorFlow: $TF_PIP_VERSION
PyTorch: $PT_PIP_VERSION
Available GPUs: $NUM_GPUS
diff --git a/Dockerfile b/Dockerfile
index d5fc477..975f7d6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -216,7 +216,6 @@ ENV DOCKER_GID=
# print version information during login
RUN echo "source /.version_information.sh" >> ~/.bashrc
-ARG BASE_IMAGE_TYPE
COPY .version_information.sh /.version_information.sh
# container startup setup
From 7052e65270cc5e45003b2a2359b670d6b7746509 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 22 Aug 2024 11:15:21 +0200
Subject: [PATCH 36/64] write as upper case
---
Dockerfile | 40 ++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 975f7d6..9df7330 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -16,35 +16,35 @@ ARG BASE_IMAGE_TYPE
ARG UBUNTU_VERSION="22.04"
# === ubuntu base images ==========================================================================
-FROM --platform=amd64 ubuntu:20.04 as base-ubuntu20.04-amd64
-FROM --platform=amd64 ubuntu:22.04 as base-ubuntu22.04-amd64
-FROM --platform=amd64 ubuntu:24.04 as base-ubuntu24.04-amd64
+FROM --platform=amd64 ubuntu:20.04 AS base-ubuntu20.04-amd64
+FROM --platform=amd64 ubuntu:22.04 AS base-ubuntu22.04-amd64
+FROM --platform=amd64 ubuntu:24.04 AS base-ubuntu24.04-amd64
-FROM --platform=arm64 ubuntu:20.04 as base-ubuntu20.04-arm64
-FROM --platform=arm64 ubuntu:22.04 as base-ubuntu22.04-arm64
-FROM --platform=arm64 ubuntu:24.04 as base-ubuntu24.04-arm64
+FROM --platform=arm64 ubuntu:20.04 AS base-ubuntu20.04-arm64
+FROM --platform=arm64 ubuntu:22.04 AS base-ubuntu22.04-arm64
+FROM --platform=arm64 ubuntu:24.04 AS base-ubuntu24.04-arm64
# === cuda base images ============================================================================
-FROM --platform=amd64 nvcr.io/nvidia/cuda:11.4.3-runtime-ubuntu20.04 as base-cuda-ubuntu20.04-amd64
-FROM --platform=amd64 nvcr.io/nvidia/cuda:12.2.2-runtime-ubuntu22.04 as base-cuda-ubuntu22.04-amd64
-FROM --platform=amd64 nvcr.io/nvidia/cuda:12.6.0-runtime-ubuntu24.04 as base-cuda-ubuntu24.04-amd64
+FROM --platform=amd64 nvcr.io/nvidia/cuda:11.4.3-runtime-ubuntu20.04 AS base-cuda-ubuntu20.04-amd64
+FROM --platform=amd64 nvcr.io/nvidia/cuda:12.2.2-runtime-ubuntu22.04 AS base-cuda-ubuntu22.04-amd64
+FROM --platform=amd64 nvcr.io/nvidia/cuda:12.6.0-runtime-ubuntu24.04 AS base-cuda-ubuntu24.04-amd64
-FROM --platform=arm64 nvcr.io/nvidia/l4t-cuda:11.4.19-runtime as base-cuda-ubuntu20.04-arm64
-FROM --platform=arm64 nvcr.io/nvidia/l4t-cuda:12.2.12-runtime as base-cuda-ubuntu22.04-arm64
+FROM --platform=arm64 nvcr.io/nvidia/l4t-cuda:11.4.19-runtime AS base-cuda-ubuntu20.04-arm64
+FROM --platform=arm64 nvcr.io/nvidia/l4t-cuda:12.2.12-runtime AS base-cuda-ubuntu22.04-arm64
# no l4t-cuda image for ubuntu24 available
# === tensorrt base images ========================================================================
-FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.04-py3 as base-tensorrt-ubuntu20.04-amd64 # TODO: change to version with CUDA 11.4
-FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.09-py3 as base-tensorrt-ubuntu22.04-amd64
+FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.04-py3 AS base-tensorrt-ubuntu20.04-amd64 # TODO: change to version with CUDA 11.4
+FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.09-py3 AS base-tensorrt-ubuntu22.04-amd64
# no tensorrt image for ubuntu24 available
-FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.5.2-runtime as base-tensorrt-ubuntu20.04-arm64
-FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.6.2-runtime as base-tensorrt-ubuntu22.04-arm64
+FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.5.2-runtime AS base-tensorrt-ubuntu20.04-arm64
+FROM --platform=arm64 nvcr.io/nvidia/l4t-tensorrt:r8.6.2-runtime AS base-tensorrt-ubuntu22.04-arm64
# no l4t-tensorrt image for ubuntu24 available
# === dependencies ================================================================================
-FROM "base${BASE_IMAGE_TYPE}-ubuntu${UBUNTU_VERSION}-${TARGETARCH}" as dependencies
+FROM "base${BASE_IMAGE_TYPE}-ubuntu${UBUNTU_VERSION}-${TARGETARCH}" AS dependencies
ARG DEBIAN_FRONTEND=noninteractive
SHELL ["/bin/bash", "-c"]
@@ -96,7 +96,7 @@ RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.d
rm -rf /var/lib/apt/lists/*
# === install and setup ROS =======================================================================
-FROM dependencies as ros
+FROM dependencies AS ros
ARG TARGETARCH
ARG UBUNTU_VERSION
@@ -147,7 +147,7 @@ RUN apt-get update && \
RUN echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc
# === install ML frameworks on tensorrt base ======================================================
-FROM ros as ros-tensorrt
+FROM ros AS ros-tensorrt
ARG TARGETARCH
ARG UBUNTU_VERSION
@@ -189,7 +189,7 @@ RUN if [[ -n $TF_VERSION ]]; then \
fi
# === install tritonclient on cuda base ===========================================================
-FROM ros as ros-cuda
+FROM ros AS ros-cuda
ARG TARGETARCH
# install triton client
@@ -207,7 +207,7 @@ RUN if [[ -n $TRITON_VERSION ]]; then \
fi
# === final ====================================================================
-FROM "ros${BASE_IMAGE_TYPE}" as final
+FROM "ros${BASE_IMAGE_TYPE}" AS final
# user setup
ENV DOCKER_USER=dockeruser
From b73226884f7f1757f2193e7ca5d2480d294cbba7 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 22 Aug 2024 11:54:08 +0200
Subject: [PATCH 37/64] use docker-ros entrypoint
---
entrypoint.sh | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/entrypoint.sh b/entrypoint.sh
index afcaf3e..f5399cd 100755
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -3,6 +3,8 @@ set -e
# source ROS workspace
source /opt/ros/$ROS_DISTRO/setup.bash
+[[ -f $WORKSPACE/devel/setup.bash ]] && source $WORKSPACE/devel/setup.bash
+[[ -f $WORKSPACE/install/setup.bash ]] && source $WORKSPACE/install/setup.bash
# exec as dockeruser with configured UID/GID
if [[ $DOCKER_UID && $DOCKER_GID ]]; then
@@ -21,11 +23,13 @@ if [[ $DOCKER_UID && $DOCKER_GID ]]; then
touch /home/$DOCKER_USER/.sudo_as_admin_successful
cp /root/.bashrc /home/$DOCKER_USER
ln -s $WORKSPACE /home/$DOCKER_USER/ws
- chown -R $DOCKER_UID:$DOCKER_GID $WORKSPACE
- chown -R $DOCKER_UID:$DOCKER_GID /home/$DOCKER_USER
+ chown -h $DOCKER_UID:$DOCKER_GID $WORKSPACE /home/$DOCKER_USER/ws /home/$DOCKER_USER/.sudo_as_admin_successful
+ if [[ -d $WORKSPACE/src ]]; then
+ chown -R $DOCKER_USER:$DOCKER_USER $WORKSPACE/src
+ fi
fi
[[ $(pwd) == "$WORKSPACE" ]] && cd /home/$DOCKER_USER/ws
exec gosu $DOCKER_USER "$@"
else
exec "$@"
-fi
+fi
\ No newline at end of file
From 0adcf968d3070ec6396db452f4be031e5b3926b3 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 22 Aug 2024 12:03:55 +0200
Subject: [PATCH 38/64] add tini
---
Dockerfile | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 9df7330..19e462c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -221,6 +221,10 @@ COPY .version_information.sh /.version_information.sh
# container startup setup
ENV WORKSPACE=/docker-ros/ws
WORKDIR $WORKSPACE
+ENV TINI_VERSION=v0.19.0
+ARG TARGETARCH
+ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-${TARGETARCH} /tini
+RUN chmod +x /tini
COPY entrypoint.sh /
-ENTRYPOINT ["/entrypoint.sh"]
+ENTRYPOINT ["/tini", "--", "/entrypoint.sh"]
CMD ["bash"]
From 603fa5595f95e181561de98eea3ca6db3b50058c Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 22 Aug 2024 12:04:25 +0200
Subject: [PATCH 39/64] also upgrade pip for ubuntu 24.04
---
Dockerfile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 19e462c..7187589 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -86,8 +86,8 @@ RUN apt-get update && \
x11-apps \
zip \
&& rm -rf /var/lib/apt/lists/*
-RUN if [[ $UBUNTU_VERSION == "24.04" ]]; then python -m pip config --global set global.break-system-packages true; \
- else python -m pip install --upgrade pip; fi
+RUN if [[ $UBUNTU_VERSION == "24.04" ]]; then python -m pip config --global set global.break-system-packages true; fi && \
+ python -m pip install --upgrade pip
# install more essentials
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
From e90a616ceb3fc80d561c4a7be49888263f35b56a Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 22 Aug 2024 12:31:32 +0200
Subject: [PATCH 40/64] fix Dockerfile
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 7187589..9d87ad6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -34,7 +34,7 @@ FROM --platform=arm64 nvcr.io/nvidia/l4t-cuda:12.2.12-runtime AS base-cuda-ubunt
# no l4t-cuda image for ubuntu24 available
# === tensorrt base images ========================================================================
-FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.04-py3 AS base-tensorrt-ubuntu20.04-amd64 # TODO: change to version with CUDA 11.4
+FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.04-py3 AS base-tensorrt-ubuntu20.04-amd64
FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.09-py3 AS base-tensorrt-ubuntu22.04-amd64
# no tensorrt image for ubuntu24 available
From 6b552e040a8cf32144805441fb23ebaad2bd63b8 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 22 Aug 2024 12:48:53 +0200
Subject: [PATCH 41/64] Revert "also upgrade pip for ubuntu 24.04"
This reverts commit 603fa5595f95e181561de98eea3ca6db3b50058c.
---
Dockerfile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 9d87ad6..cacfdb8 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -86,8 +86,8 @@ RUN apt-get update && \
x11-apps \
zip \
&& rm -rf /var/lib/apt/lists/*
-RUN if [[ $UBUNTU_VERSION == "24.04" ]]; then python -m pip config --global set global.break-system-packages true; fi && \
- python -m pip install --upgrade pip
+RUN if [[ $UBUNTU_VERSION == "24.04" ]]; then python -m pip config --global set global.break-system-packages true; \
+ else python -m pip install --upgrade pip; fi
# install more essentials
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
From 9e384280ce571b5074f4ed02dab6008828d966c9 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Thu, 22 Aug 2024 15:11:46 +0200
Subject: [PATCH 42/64] remove custom cuda build
---
cuda/.gitignore | 1 -
cuda/Dockerfile | 117 ------------------------------------------------
cuda/README.md | 35 ---------------
3 files changed, 153 deletions(-)
delete mode 100644 cuda/.gitignore
delete mode 100644 cuda/Dockerfile
delete mode 100644 cuda/README.md
diff --git a/cuda/.gitignore b/cuda/.gitignore
deleted file mode 100644
index c776bdf..0000000
--- a/cuda/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.deb
\ No newline at end of file
diff --git a/cuda/Dockerfile b/cuda/Dockerfile
deleted file mode 100644
index 7248e80..0000000
--- a/cuda/Dockerfile
+++ /dev/null
@@ -1,117 +0,0 @@
-# docker buildx build \
-# --load \
-# --platform $(uname)/$(uname -m) \
-# --build-arg UBUNTU_VERSION=$UBUNTU_VERSION \
-# --build-arg CUDA_VERSION=$CUDA_VERSION \
-# --build-arg CUDNN_VERSION=$CUDNN_VERSION \
-# --build-arg TENSORRT_VERSION=$TENSORRT_VERSION \
-# --build-arg INSTALL_AS_DEV=$INSTALL_AS_DEV \
-# --tag $IMAGE \
-# .
-
-ARG UBUNTU_VERSION=22.04
-
-FROM --platform=amd64 ubuntu:20.04 as base-amd64-20.04
-FROM --platform=amd64 ubuntu:22.04 as base-amd64-22.04
-FROM --platform=amd64 ubuntu:24.04 as base-amd64-24.04
-FROM --platform=arm64 nvcr.io/nvidia/l4t-base:35.4.1 as base-arm64-20.04
-FROM --platform=arm64 nvcr.io/nvidia/l4t-base:r36.2.0 as base-arm64-22.04
-# base-arm64-24.04: not supported
-
-# === dependencies =============================================================
-FROM "base-${TARGETARCH}-${UBUNTU_VERSION}" as dependencies
-ARG TARGETARCH
-ENV DEBIAN_FRONTEND=noninteractive
-
-ARG UBUNTU_VERSION
-ARG CUDA_VERSION=11.8
-ARG CUDNN_VERSION=8.6.0.163-1
-ARG TENSORRT_VERSION=8.5.3-1
-ARG INSTALL_AS_DEV=0
-
-ENV NVIDIA_VISIBLE_DEVICES all
-ENV NVIDIA_DRIVER_CAPABILITIES all
-
-SHELL ["/bin/bash", "-c"]
-
-# install essentials
-RUN apt-get update && \
- apt-get install -y \
- wget \
- gnupg2 && \
- if [[ "$INSTALL_AS_DEV" == "1" ]]; then apt-get install -y build-essential; fi && \
- rm -rf /var/lib/apt/lists/*
-
-# set up CUDA apt repositories
-RUN if [[ "$TARGETARCH" == "amd64" ]]; then \
- if [[ "$UBUNTU_VERSION" == "20.04" ]]; then \
- CUDA_DEB_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/x86_64/cuda-keyring_1.0-1_all.deb"; \
- elif [[ "$UBUNTU_VERSION" == "22.04" ]]; then \
- CUDA_DEB_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/x86_64/cuda-keyring_1.0-1_all.deb"; \
- elif [[ "$UBUNTU_VERSION" == "24.04" ]]; then \
- CUDA_DEB_URL="https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb"; \
- fi && \
- wget -q -O /tmp/cuda-keyring_1.0-1_all.deb ${CUDA_DEB_URL}; \
- elif [[ "$TARGETARCH" == "arm64" ]]; then \
- wget -q -O /tmp/cuda-keyring_1.0-1_all.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/arm64/cuda-keyring_1.0-1_all.deb; \
- fi && \
- dpkg -i /tmp/cuda-keyring_1.0-1_all.deb && \
- rm -rf /tmp/cuda-keyring_1.0-1_all.deb
-
-# set up L4T apt repositories (NVIDIA Jetson)
-RUN if [[ "$TARGETARCH" == "arm64" ]]; then \
- echo "deb https://repo.download.nvidia.com/jetson/common r35.4 main" >> /etc/apt/sources.list && \
- echo "deb https://repo.download.nvidia.com/jetson/t194 r35.4 main" >> /etc/apt/sources.list && \
- apt-key adv --fetch-key http://repo.download.nvidia.com/jetson/jetson-ota-public.asc && \
- mkdir -p /opt/nvidia/l4t-packages/ && \
- touch /opt/nvidia/l4t-packages/.nv-l4t-disable-boot-fw-update-in-preinstall && \
- rm -rf /var/lib/apt/lists/* ; \
- fi
-
-# install CUDA
-RUN apt-get update && \
- if [[ "$TARGETARCH" == "amd64" ]]; then \
- apt-get install -y cuda-libraries-${CUDA_VERSION/./-}; \
- if [[ "$INSTALL_AS_DEV" == "1" ]]; then apt-get install -y cuda-toolkit-${CUDA_VERSION/./-} cuda-demo-suite-${CUDA_VERSION/./-}; fi \
- elif [[ "$TARGETARCH" == "arm64" ]]; then \
- echo "N" | apt-get install -y cuda-runtime-${CUDA_VERSION/./-}; \
- if [[ "$INSTALL_AS_DEV" == "1" ]]; then apt-get install -y cuda-toolkit-${CUDA_VERSION/./-}; fi \
- fi && \
- echo "export PATH=/usr/local/cuda/bin:$PATH" >> ~/.bashrc && \
- rm -rf /var/lib/apt/lists/*
-
-# install cuDNN
-RUN --mount=type=bind,source=cudnn-local-repo-${TARGETARCH}.deb,target=/cudnn-local-repo.deb,ro \
- gpg_key=$(dpkg -i cudnn-local-repo.deb | grep -oP "(?<=cp )[^ ]+(?= )") && \
- cp ${gpg_key} /usr/share/keyrings/ && \
- CUDNN_MAJOR_VERSION=${CUDNN_VERSION%%.*} && \
- apt-get update && \
- apt-get install -y libcudnn${CUDNN_MAJOR_VERSION}=${CUDNN_VERSION}+cuda${CUDA_VERSION} && \
- if [[ "$INSTALL_AS_DEV" == "1" ]]; then \
- apt-get install -y libcudnn${CUDNN_MAJOR_VERSION}-dev=${CUDNN_VERSION}+cuda${CUDA_VERSION}; \
- fi && \
- rm -rf /var/lib/apt/lists/*
-
-# install TensorRT
-RUN --mount=type=bind,source=nv-tensorrt-local-repo-${TARGETARCH}.deb,target=/nv-tensorrt-local-repo.deb,ro \
- gpg_key=$(dpkg -i nv-tensorrt-local-repo.deb | grep -oP "(?<=cp )[^ ]+(?= )") && \
- cp ${gpg_key} /usr/share/keyrings/ && \
- TENSORRT_MAJOR_VERSION=${TENSORRT_VERSION%%.*} && \
- if [[ "$TENSORRT_VERSION" == "10.0.1.6-1" ]]; then \
- CUDA_VERSION_TENSORRT="12.4"; \
- else \
- CUDA_VERSION_TENSORRT=${CUDA_VERSION}; \
- fi && \
- apt-get update && \
- apt-get install -y \
- libnvinfer${TENSORRT_MAJOR_VERSION}=${TENSORRT_VERSION}+cuda${CUDA_VERSION_TENSORRT} \
- libnvinfer-plugin${TENSORRT_MAJOR_VERSION}=${TENSORRT_VERSION}+cuda${CUDA_VERSION_TENSORRT} && \
- if [[ "$INSTALL_AS_DEV" == "1" ]]; then \
- apt-get install -y \
- libnvinfer-dev=${TENSORRT_VERSION}+cuda${CUDA_VERSION_TENSORRT} \
- libnvinfer-plugin-dev=${TENSORRT_VERSION}+cuda${CUDA_VERSION_TENSORRT}; \
- fi && \
- rm -rf /var/lib/apt/lists/*
-
-# container startup setup
-CMD ["bash"]
diff --git a/cuda/README.md b/cuda/README.md
deleted file mode 100644
index 6089fe0..0000000
--- a/cuda/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-## Docker Images for CUDA, cuDNN, TensorRT
-
-The Dockerfile in this directory can be used to build Docker images including arbitrary versions of CUDA, cuDNN, and TensorRT, either runtime-only or including dev-libraries. The images are well suited as base images for other Dockerfiles. In this repository, they are used as base images for the machine-learning enabled ROS Docker images.
-
-### Why not use `nvidia/cuda` or `nvcr.io/nvidia/tensorrt`?
-
-NVIDIA releases official CUDA-related Docker images on both DockerHub (e.g., [`nvidia/cuda`](https://hub.docker.com/r/nvidia/cuda)) and their own NGC (e.g., [`nvcr.io/nvidia/tensorrt`](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorrt)). The former offers a variety of different CUDA versions including cuDNN installations, but no support for TensorRT. The latter offers images with CUDA, cuDNN, and TensorRT installed, but uses a monthly update cycle containing only specific versions of those libraries. In contrast, this Dockerfile can be used to build multi-arch combinations of arbitrary CUDA, cuDNN, and TensorRT versions, giving more flexibility.
-
-### Available Images
-
-| Tag | Arch | Ubuntu | CUDA | cuDNN | TensorRT |
-| ------------------------------------ | :------------: | :-----: | :-----: | :---: | :------: |
-| `11.8-cudnn-trt-ubuntu20.04[-devel]` | amd64
arm64 | 20.04.6 | 11.8.89 | 8.6.0 | 8.5.3 |
-| `11.8-cudnn-trt-ubuntu22.04[-devel]` | amd64 | 22.04.2 | 11.8.89 | 8.6.0 | 8.5.3 |
-
-### Build
-
-1. Download a cuDNN installer deb-package from [NVIDIA's download page](https://developer.nvidia.com/rdp/cudnn-archive) (login required).
-2. Place the cuDNN installer deb-package in this directory and rename it to `cudnn-local-repo-$(dpkg --print-architecture).deb`.
-3. Download a TensorRT installer deb-package from [NVIDIA's download page](https://developer.nvidia.com/tensorrt-download) (login required).
-4. Place the cuDNN installer deb-package in this directory and rename it to `nv-tensorrt-local-repo-$(dpkg --print-architecture).deb`.
-5. Build the Docker image with below command.
-
-```bash
-docker buildx build \
- --load \
- --platform $(uname)/$(uname -m) \
- --build-arg UBUNTU_VERSION=$UBUNTU_VERSION \
- --build-arg CUDA_VERSION=$CUDA_VERSION \
- --build-arg CUDNN_VERSION=$CUDNN_VERSION \
- --build-arg TENSORRT_VERSION=$TENSORRT_VERSION \
- --build-arg INSTALL_AS_DEV=$INSTALL_AS_DEV \
- --tag rwthika/cuda:$CUDA_VERSION-cudnn-trt-ubuntu$UBUNTU_VERSION \
- .
-```
From 364fd2c03292747be08d9dbf82eb1ab6e48ccd64 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Fri, 23 Aug 2024 14:29:35 +0200
Subject: [PATCH 43/64] use older tensorrt base image for ubuntu 20.04 (amd64)
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index cacfdb8..6eabc6d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -34,7 +34,7 @@ FROM --platform=arm64 nvcr.io/nvidia/l4t-cuda:12.2.12-runtime AS base-cuda-ubunt
# no l4t-cuda image for ubuntu24 available
# === tensorrt base images ========================================================================
-FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.04-py3 AS base-tensorrt-ubuntu20.04-amd64
+FROM --platform=amd64 nvcr.io/nvidia/tensorrt:21.08-py3 AS base-tensorrt-ubuntu20.04-amd64
FROM --platform=amd64 nvcr.io/nvidia/tensorrt:23.09-py3 AS base-tensorrt-ubuntu22.04-amd64
# no tensorrt image for ubuntu24 available
From 222644ee9c5d498928cf42968463fde8db48f610 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Fri, 23 Aug 2024 14:29:55 +0200
Subject: [PATCH 44/64] add cuda libs to tensorrt images
---
Dockerfile | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/Dockerfile b/Dockerfile
index 6eabc6d..84f5fcb 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -51,12 +51,19 @@ SHELL ["/bin/bash", "-c"]
USER root
+ARG BASE_IMAGE_TYPE
ARG TARGETARCH
ARG UBUNTU_VERSION
RUN if [[ $TARGETARCH == "arm64" && $UBUNTU_VERSION == "22.04" && $BASE_IMAGE_TYPE != "" ]]; then \
# bug in base image -> replace line in /etc/apt/sources.list to use "r36.3" instead of "r36.0"
sed -i 's/https:\/\/repo.download.nvidia.com\/jetson\/common r36.0 main/https:\/\/repo.download.nvidia.com\/jetson\/common r36.3 main/g' /etc/apt/sources.list && \
echo "deb https://repo.download.nvidia.com/jetson/t234 r36.3 main" >> /etc/apt/sources.list; \
+ elif [[ $TARGETARCH == "amd64" && $BASE_IMAGE_TYPE == "-tensorrt" ]]; then \
+ # add cuda apt repository for tensorrt base images
+ echo "HI" && \
+ wget -q -O /tmp/cuda-keyring_1.0-1_all.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/x86_64/cuda-keyring_1.0-1_all.deb && \
+ dpkg -i /tmp/cuda-keyring_1.0-1_all.deb && \
+ rm -rf /tmp/cuda-keyring_1.0-1_all.deb; \
fi
# install essentials via apt
From 7ea045187390bd5e50775f32d4b3f1aee734f2d5 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Fri, 23 Aug 2024 14:37:49 +0200
Subject: [PATCH 45/64] add yml files for separate ubuntu versions and
---
.gitlab-ci/os/.ubuntu20.yml | 5 +++++
.gitlab-ci/os/.ubuntu22.yml | 5 +++++
.gitlab-ci/os/.ubuntu24.yml | 10 ++++++++++
.gitlab-ci/ros-noetic/.ros-noetic.yml | 7 +++----
.gitlab-ci/ros2-humble/.ros2-humble.yml | 9 ++++-----
.gitlab-ci/ros2-iron/.ros2-iron.yml | 7 +++----
.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml | 12 +++---------
.gitlab-ci/ros2-rolling/.ros2-rolling.yml | 7 +++----
8 files changed, 36 insertions(+), 26 deletions(-)
create mode 100644 .gitlab-ci/os/.ubuntu20.yml
create mode 100644 .gitlab-ci/os/.ubuntu22.yml
create mode 100644 .gitlab-ci/os/.ubuntu24.yml
diff --git a/.gitlab-ci/os/.ubuntu20.yml b/.gitlab-ci/os/.ubuntu20.yml
new file mode 100644
index 0000000..7216d39
--- /dev/null
+++ b/.gitlab-ci/os/.ubuntu20.yml
@@ -0,0 +1,5 @@
+variables:
+ UBUNTU_VERSION: "20.04"
+ _TF_VERSION: 2.12.0
+ _TORCH_VERSION: 2.1.0
+ _TRITON_VERSION: 2.48.0
\ No newline at end of file
diff --git a/.gitlab-ci/os/.ubuntu22.yml b/.gitlab-ci/os/.ubuntu22.yml
new file mode 100644
index 0000000..4a3df86
--- /dev/null
+++ b/.gitlab-ci/os/.ubuntu22.yml
@@ -0,0 +1,5 @@
+variables:
+ UBUNTU_VERSION: "22.04"
+ _TF_VERSION: 2.16.1
+ _TORCH_VERSION: 2.4.0
+ _TRITON_VERSION: 2.48.0
\ No newline at end of file
diff --git a/.gitlab-ci/os/.ubuntu24.yml b/.gitlab-ci/os/.ubuntu24.yml
new file mode 100644
index 0000000..3d7a50f
--- /dev/null
+++ b/.gitlab-ci/os/.ubuntu24.yml
@@ -0,0 +1,10 @@
+variables:
+ UBUNTU_VERSION: "24.04"
+ _TF_VERSION: 2.16.1
+ _TORCH_VERSION: 2.4.0
+ _TRITON_VERSION: 2.48.0
+ DISABLE_TENSORRT: "true"
+ DISABLE_TORCH: "true"
+ DISABLE_TF: "true"
+ DISABLE_ML: "true"
+ DISABLE_ML_ARM64: "true"
\ No newline at end of file
diff --git a/.gitlab-ci/ros-noetic/.ros-noetic.yml b/.gitlab-ci/ros-noetic/.ros-noetic.yml
index 533876d..79f4832 100644
--- a/.gitlab-ci/ros-noetic/.ros-noetic.yml
+++ b/.gitlab-ci/ros-noetic/.ros-noetic.yml
@@ -1,8 +1,7 @@
+include:
+ - .gitlab-ci/os/.ubuntu20.yml
+
variables:
- UBUNTU_VERSION: "20.04"
ROS_VERSION: 1
ROS_VERSION_NAME: "ros"
ROS_DISTRO: noetic
- _TF_VERSION: 2.12.0
- _TORCH_VERSION: 2.1.0
- _TRITON_VERSION: 2.48.0
diff --git a/.gitlab-ci/ros2-humble/.ros2-humble.yml b/.gitlab-ci/ros2-humble/.ros2-humble.yml
index 5146f38..21c74c4 100644
--- a/.gitlab-ci/ros2-humble/.ros2-humble.yml
+++ b/.gitlab-ci/ros2-humble/.ros2-humble.yml
@@ -1,8 +1,7 @@
+include:
+ - .gitlab-ci/os/.ubuntu22.yml
+
variables:
- UBUNTU_VERSION: "22.04"
ROS_VERSION: 2
ROS_VERSION_NAME: "ros2"
- ROS_DISTRO: humble
- _TF_VERSION: 2.16.1
- _TORCH_VERSION: 2.4.0
- _TRITON_VERSION: 2.48.0
\ No newline at end of file
+ ROS_DISTRO: humble
\ No newline at end of file
diff --git a/.gitlab-ci/ros2-iron/.ros2-iron.yml b/.gitlab-ci/ros2-iron/.ros2-iron.yml
index 147e6a5..8c59da7 100644
--- a/.gitlab-ci/ros2-iron/.ros2-iron.yml
+++ b/.gitlab-ci/ros2-iron/.ros2-iron.yml
@@ -1,8 +1,7 @@
+include:
+ - .gitlab-ci/os/.ubuntu22.yml
+
variables:
- UBUNTU_VERSION: "22.04"
ROS_VERSION: 2
ROS_VERSION_NAME: "ros2"
ROS_DISTRO: iron
- _TF_VERSION: 2.16.1
- _TORCH_VERSION: 2.4.0
- _TRITON_VERSION: 2.48.0
diff --git a/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml b/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
index a81593a..798aa72 100644
--- a/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
+++ b/.gitlab-ci/ros2-jazzy/.ros2-jazzy.yml
@@ -1,13 +1,7 @@
+include:
+ - .gitlab-ci/os/.ubuntu24.yml
+
variables:
- UBUNTU_VERSION: "24.04"
ROS_VERSION: 2
ROS_VERSION_NAME: ros2
ROS_DISTRO: jazzy
- _TF_VERSION: 2.16.1
- _TORCH_VERSION: 2.4.0
- _TRITON_VERSION: 2.48.0
- DISABLE_TENSORRT: "true"
- DISABLE_TORCH: "true"
- DISABLE_TF: "true"
- DISABLE_ML: "true"
- DISABLE_ML_ARM64: "true"
diff --git a/.gitlab-ci/ros2-rolling/.ros2-rolling.yml b/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
index 8cdec8f..5fd10a3 100644
--- a/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
+++ b/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
@@ -1,8 +1,7 @@
+include:
+ - .gitlab-ci/os/.ubuntu20.yml
+
variables:
- UBUNTU_VERSION: "20.04"
ROS_VERSION: 2
ROS_VERSION_NAME: "ros2"
ROS_DISTRO: rolling
- _TF_VERSION: 2.12.0
- _TORCH_VERSION: 2.1.0
- _TRITON_VERSION: 2.48.0
From d3d37e6c2c65fcd85ac7629ed9ab67d89a507059 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Fri, 23 Aug 2024 14:39:08 +0200
Subject: [PATCH 46/64] build rolling with ubuntu24
---
.gitlab-ci/ros2-rolling/.ros2-rolling.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.gitlab-ci/ros2-rolling/.ros2-rolling.yml b/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
index 5fd10a3..334aa76 100644
--- a/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
+++ b/.gitlab-ci/ros2-rolling/.ros2-rolling.yml
@@ -1,5 +1,5 @@
include:
- - .gitlab-ci/os/.ubuntu20.yml
+ - .gitlab-ci/os/.ubuntu24.yml
variables:
ROS_VERSION: 2
From 4e7380bedfd24af4d044755001dac76c6b204404 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Fri, 23 Aug 2024 14:40:14 +0200
Subject: [PATCH 47/64] fix version information for ROS 1
---
.version_information.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.version_information.sh b/.version_information.sh
index 444915d..7cc8801 100755
--- a/.version_information.sh
+++ b/.version_information.sh
@@ -5,7 +5,7 @@ eval $(cat /etc/os-release | grep ^VERSION=)
ARCH=$(uname -m)
-if [[ -z "$RMW_IMPLEMENTATION" ]]; then
+if [[ -z "$RMW_IMPLEMENTATION" && $ROS_DISTRO != "noetic" ]]; then
if ros2 pkg list | grep -q "rmw_fastrtps_cpp"; then
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
fi
From c03b3d83db581c913995fa6dd4de66536ba0f182 Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Fri, 23 Aug 2024 20:31:57 +0200
Subject: [PATCH 48/64] add script to print version table
---
utils/.gitignore | 1 +
utils/print_image_versions.py | 74 +++++++++++++++++++++++++++++++++++
2 files changed, 75 insertions(+)
create mode 100644 utils/.gitignore
create mode 100755 utils/print_image_versions.py
diff --git a/utils/.gitignore b/utils/.gitignore
new file mode 100644
index 0000000..7a3c7d1
--- /dev/null
+++ b/utils/.gitignore
@@ -0,0 +1 @@
+images.txt
diff --git a/utils/print_image_versions.py b/utils/print_image_versions.py
new file mode 100755
index 0000000..81624e3
--- /dev/null
+++ b/utils/print_image_versions.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python3
+
+import argparse
+import os
+import subprocess
+import tqdm
+
+VERSION_GETTER_COMMANDS = {
+ "Arch": "dpkg --print-architecture",
+ "Ubuntu": "lsb_release -d | awk '{print \$3}'",
+ "Python": "python --version | awk '{print \$2}'",
+ "ROS": "echo \$ROS_DISTRO",
+ "ROS Package": "(dpkg -l | grep ros-\$ROS_DISTRO-desktop-full || dpkg -l | grep ros-\$ROS_DISTRO-ros-base || dpkg -l | grep ros-\$ROS_DISTRO-ros-core) | awk '{print \$2}' | cut -d- -f3-",
+ "CMake": "cmake --version | grep version | awk '{print \$3}'",
+ "CUDA": "dpkg -l 2> /dev/null | grep -E 'cuda-cudart-[0-9]' | awk '{ print \$3 }' | cut -d+ -f1 | cut -d- -f1",
+ "cuDNN": "dpkg -l 2> /dev/null | grep -E 'libcudnn[0-9] ' | awk '{ print \$3 }' | cut -d+ -f1 | cut -d- -f1",
+ "TensorRT": "dpkg -l 2> /dev/null | grep -E 'libnvinfer[0-9] ' | awk '{ print \$3 }' | cut -d+ -f1 | cut -d- -f1",
+ "Triton": "echo \$TRITON_VERSION",
+ "PyTorch": "python -c 'exec(\\\"try:\\n import torch; print(torch.__version__);\\n\\rexcept ImportError:\\n pass\\\")' | cut -d+ -f1 | cut -d- -f1",
+ "TensorFlow": "export TF_CPP_MIN_LOG_LEVEL='1' && python -c 'exec(\\\"try:\\n import os; import tensorflow as tf; print(tf.__version__);\\n\\rexcept ImportError:\\n pass\\\")' | cut -d+ -f1 | cut -d- -f1",
+}
+
+def parse_arguments():
+ parser = argparse.ArgumentParser(description="Prints tool versions for docker-ros-ml-images")
+ parser.add_argument("images", help="File listing Docker images")
+ return parser.parse_args()
+
+def get_image_list(file_path):
+ with open(file_path, "r") as file:
+ return [line.strip() for line in file if line.strip()]
+
+def get_tool_versions(image_name):
+ result = {}
+ for tool, command in VERSION_GETTER_COMMANDS.items():
+ try:
+ output = subprocess.check_output(
+ f"docker run --rm {image_name} bash -c \"{command}\"",
+ shell=True,
+ stderr=subprocess.STDOUT
+ )
+ single_line_output = "\\n".join(output.decode("utf-8").strip().splitlines())
+ if single_line_output:
+ result[tool] = single_line_output
+ except subprocess.CalledProcessError as e:
+ result[tool] = f"Error: {e.output.decode('utf-8').strip()}"
+ return result
+
+def print_markdown_table(data):
+ headers = ["Tag"] + list(VERSION_GETTER_COMMANDS.keys())
+ header_line = " | ".join(headers)
+ separator_line = " | ".join(["---"] * len(headers))
+ print(header_line)
+ print(separator_line)
+ for image, versions in data.items():
+ row = [image] + [versions.get(tool, "-") for tool in VERSION_GETTER_COMMANDS]
+ print(" | ".join(row))
+
+def main():
+ args = parse_arguments()
+ image_list_file = args.images
+ if not os.path.exists(image_list_file):
+ print(f"Error: File {image_list_file} not found.")
+ return
+ images = get_image_list(image_list_file)
+ all_versions = {}
+ with tqdm.tqdm(images, desc="Getting info") as pbar:
+ for image in pbar:
+ pbar.set_postfix(image=image)
+ all_versions[image] = get_tool_versions(image)
+ print("")
+ print_markdown_table(all_versions)
+
+if __name__ == "__main__":
+ main()
From 95908fe141dfdad12b39019e3232de125d5937a3 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Mon, 26 Aug 2024 15:22:18 +0200
Subject: [PATCH 49/64] improve generation of image version table
---
.vscode/launch.json | 32 +++++++++++++
utils/.gitignore | 1 +
...e_versions.py => export_image_versions.py} | 30 +++++++------
utils/generate_table.py | 45 +++++++++++++++++++
4 files changed, 94 insertions(+), 14 deletions(-)
create mode 100644 .vscode/launch.json
rename utils/{print_image_versions.py => export_image_versions.py} (75%)
create mode 100755 utils/generate_table.py
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..9e496e4
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,32 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "export_image_versions (amd64)",
+ "type": "debugpy",
+ "request": "launch",
+ "program": "utils/print_image_versions.py",
+ "console": "integratedTerminal",
+ "args": ["utils/images.txt", "--arch", "amd64"],
+ "justMyCode": true
+ },
+ {
+ "name": "export_image_versions (arm64)",
+ "type": "debugpy",
+ "request": "launch",
+ "program": "utils/print_image_versions.py",
+ "console": "integratedTerminal",
+ "args": ["utils/images.txt", "--arch", "arm64"],
+ "justMyCode": true
+ },
+ {
+ "name": "generate_table",
+ "type": "debugpy",
+ "request": "launch",
+ "program": "utils/generate_table.py",
+ "console": "integratedTerminal",
+ "args": ["utils/image_versions-amd64.csv", "utils/image_versions-arm64.csv"],
+ "justMyCode": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/utils/.gitignore b/utils/.gitignore
index 7a3c7d1..810452c 100644
--- a/utils/.gitignore
+++ b/utils/.gitignore
@@ -1 +1,2 @@
images.txt
+*.csv
diff --git a/utils/print_image_versions.py b/utils/export_image_versions.py
similarity index 75%
rename from utils/print_image_versions.py
rename to utils/export_image_versions.py
index 81624e3..f380bfb 100755
--- a/utils/print_image_versions.py
+++ b/utils/export_image_versions.py
@@ -4,6 +4,7 @@
import os
import subprocess
import tqdm
+import csv
VERSION_GETTER_COMMANDS = {
"Arch": "dpkg --print-architecture",
@@ -20,14 +21,17 @@
"TensorFlow": "export TF_CPP_MIN_LOG_LEVEL='1' && python -c 'exec(\\\"try:\\n import os; import tensorflow as tf; print(tf.__version__);\\n\\rexcept ImportError:\\n pass\\\")' | cut -d+ -f1 | cut -d- -f1",
}
+SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__))
+
def parse_arguments():
parser = argparse.ArgumentParser(description="Prints tool versions for docker-ros-ml-images")
parser.add_argument("images", help="File listing Docker images")
+ parser.add_argument("--arch", help="Architecture to filter images", choices=["amd64", "arm64"], required=True)
return parser.parse_args()
-def get_image_list(file_path):
+def get_image_list(file_path, arch):
with open(file_path, "r") as file:
- return [line.strip() for line in file if line.strip()]
+ return [line.strip() for line in file if line.strip().endswith(f"-{arch}")]
def get_tool_versions(image_name):
result = {}
@@ -45,15 +49,14 @@ def get_tool_versions(image_name):
result[tool] = f"Error: {e.output.decode('utf-8').strip()}"
return result
-def print_markdown_table(data):
- headers = ["Tag"] + list(VERSION_GETTER_COMMANDS.keys())
- header_line = " | ".join(headers)
- separator_line = " | ".join(["---"] * len(headers))
- print(header_line)
- print(separator_line)
- for image, versions in data.items():
- row = [image] + [versions.get(tool, "-") for tool in VERSION_GETTER_COMMANDS]
- print(" | ".join(row))
+def export_to_csv(data, file_path):
+ with open(file_path, 'w') as csvfile:
+ field_names = ["Tag"] + list(VERSION_GETTER_COMMANDS.keys())
+ writer = csv.DictWriter(csvfile, fieldnames = field_names)
+ writer.writeheader()
+ for image in data:
+ short_image = image.split("/")[-1]
+ writer.writerow({"Tag": short_image, **data[image]})
def main():
args = parse_arguments()
@@ -61,14 +64,13 @@ def main():
if not os.path.exists(image_list_file):
print(f"Error: File {image_list_file} not found.")
return
- images = get_image_list(image_list_file)
+ images = get_image_list(image_list_file, args.arch)
all_versions = {}
with tqdm.tqdm(images, desc="Getting info") as pbar:
for image in pbar:
pbar.set_postfix(image=image)
all_versions[image] = get_tool_versions(image)
- print("")
- print_markdown_table(all_versions)
+ export_to_csv(all_versions, os.path.join(SCRIPT_PATH, f"image_versions-{args.arch}.csv"))
if __name__ == "__main__":
main()
diff --git a/utils/generate_table.py b/utils/generate_table.py
new file mode 100755
index 0000000..45dc48a
--- /dev/null
+++ b/utils/generate_table.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python3
+
+import argparse
+import os
+import pandas as pd
+
+SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__))
+
+def parse_arguments():
+ parser = argparse.ArgumentParser(description="Prints tool versions for docker-ros-ml-images")
+ parser.add_argument("version_tables", nargs='+', help="List of csv files with version tables")
+ return parser.parse_args()
+
+def merge_tables(tables) -> pd.DataFrame:
+ all_tables = []
+ for table in tables:
+ if not os.path.exists(table):
+ print(f"Error: File {table} not found.")
+ return
+ all_tables.append(pd.read_csv(table))
+ merged_table = pd.concat(all_tables, sort=False)
+ merged_table = merged_table.drop_duplicates()
+ return merged_table
+
+def print_markdown_table(data: pd.DataFrame):
+ headers = list(data.columns)
+ header_line = " | ".join(headers)
+ separator_line = " | ".join(["---"] * len(headers))
+ print(header_line)
+ print(separator_line)
+
+ for index, row in data.iterrows():
+ print(" | ".join(row.values.astype(str)))
+
+def main():
+ args = parse_arguments()
+ version_information = merge_tables(args.version_tables)
+ md_table = version_information.to_markdown(index=False)
+ print(md_table)
+ print("\n\n")
+ print_markdown_table(version_information)
+
+
+if __name__ == "__main__":
+ main()
From 0b8fb5e48bd588dfc823bafb2c7d492a613bf416 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Mon, 26 Aug 2024 15:25:43 +0200
Subject: [PATCH 50/64] improvements for cuda apt lists
---
Dockerfile | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 84f5fcb..d38628e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -56,11 +56,13 @@ ARG TARGETARCH
ARG UBUNTU_VERSION
RUN if [[ $TARGETARCH == "arm64" && $UBUNTU_VERSION == "22.04" && $BASE_IMAGE_TYPE != "" ]]; then \
# bug in base image -> replace line in /etc/apt/sources.list to use "r36.3" instead of "r36.0"
+ # touch: https://forums.balena.io/t/getting-linux-for-tegra-into-a-container-on-balena-os/179421/20
sed -i 's/https:\/\/repo.download.nvidia.com\/jetson\/common r36.0 main/https:\/\/repo.download.nvidia.com\/jetson\/common r36.3 main/g' /etc/apt/sources.list && \
- echo "deb https://repo.download.nvidia.com/jetson/t234 r36.3 main" >> /etc/apt/sources.list; \
+ echo "deb https://repo.download.nvidia.com/jetson/t234 r36.3 main" >> /etc/apt/sources.list && \
+ mkdir -p /opt/nvidia/l4t-packages/ && \
+ touch /opt/nvidia/l4t-packages/.nv-l4t-disable-boot-fw-update-in-preinstall; \
elif [[ $TARGETARCH == "amd64" && $BASE_IMAGE_TYPE == "-tensorrt" ]]; then \
# add cuda apt repository for tensorrt base images
- echo "HI" && \
wget -q -O /tmp/cuda-keyring_1.0-1_all.deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu${UBUNTU_VERSION/./}/x86_64/cuda-keyring_1.0-1_all.deb && \
dpkg -i /tmp/cuda-keyring_1.0-1_all.deb && \
rm -rf /tmp/cuda-keyring_1.0-1_all.deb; \
From 9c617256e2a0d7d1e1d9097d081f8b84ee8bee9b Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Mon, 26 Aug 2024 18:18:39 +0200
Subject: [PATCH 51/64] finalize version printing utils
---
utils/export_image_versions.py | 8 +++---
utils/generate_table.py | 45 -----------------------------
utils/generate_version_table.py | 51 +++++++++++++++++++++++++++++++++
utils/requirements.txt | 2 ++
4 files changed, 57 insertions(+), 49 deletions(-)
delete mode 100755 utils/generate_table.py
create mode 100755 utils/generate_version_table.py
create mode 100644 utils/requirements.txt
diff --git a/utils/export_image_versions.py b/utils/export_image_versions.py
index f380bfb..06f3516 100755
--- a/utils/export_image_versions.py
+++ b/utils/export_image_versions.py
@@ -49,14 +49,14 @@ def get_tool_versions(image_name):
result[tool] = f"Error: {e.output.decode('utf-8').strip()}"
return result
-def export_to_csv(data, file_path):
+def export_to_csv(data, file_path, arch):
with open(file_path, 'w') as csvfile:
field_names = ["Tag"] + list(VERSION_GETTER_COMMANDS.keys())
writer = csv.DictWriter(csvfile, fieldnames = field_names)
writer.writeheader()
for image in data:
- short_image = image.split("/")[-1]
- writer.writerow({"Tag": short_image, **data[image]})
+ image_tag = "`" + image.split("/")[-1].replace(f"-{arch}", "") + "`"
+ writer.writerow({"Tag": image_tag, **data[image]})
def main():
args = parse_arguments()
@@ -70,7 +70,7 @@ def main():
for image in pbar:
pbar.set_postfix(image=image)
all_versions[image] = get_tool_versions(image)
- export_to_csv(all_versions, os.path.join(SCRIPT_PATH, f"image_versions-{args.arch}.csv"))
+ export_to_csv(all_versions, os.path.join(SCRIPT_PATH, f"image_versions-{args.arch}.csv"), args.arch)
if __name__ == "__main__":
main()
diff --git a/utils/generate_table.py b/utils/generate_table.py
deleted file mode 100755
index 45dc48a..0000000
--- a/utils/generate_table.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env python3
-
-import argparse
-import os
-import pandas as pd
-
-SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__))
-
-def parse_arguments():
- parser = argparse.ArgumentParser(description="Prints tool versions for docker-ros-ml-images")
- parser.add_argument("version_tables", nargs='+', help="List of csv files with version tables")
- return parser.parse_args()
-
-def merge_tables(tables) -> pd.DataFrame:
- all_tables = []
- for table in tables:
- if not os.path.exists(table):
- print(f"Error: File {table} not found.")
- return
- all_tables.append(pd.read_csv(table))
- merged_table = pd.concat(all_tables, sort=False)
- merged_table = merged_table.drop_duplicates()
- return merged_table
-
-def print_markdown_table(data: pd.DataFrame):
- headers = list(data.columns)
- header_line = " | ".join(headers)
- separator_line = " | ".join(["---"] * len(headers))
- print(header_line)
- print(separator_line)
-
- for index, row in data.iterrows():
- print(" | ".join(row.values.astype(str)))
-
-def main():
- args = parse_arguments()
- version_information = merge_tables(args.version_tables)
- md_table = version_information.to_markdown(index=False)
- print(md_table)
- print("\n\n")
- print_markdown_table(version_information)
-
-
-if __name__ == "__main__":
- main()
diff --git a/utils/generate_version_table.py b/utils/generate_version_table.py
new file mode 100755
index 0000000..4c2f1fb
--- /dev/null
+++ b/utils/generate_version_table.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+
+import argparse
+import os
+from typing import Dict
+
+import pandas as pd
+
+SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__))
+
+def parse_arguments():
+ parser = argparse.ArgumentParser(description="Prints tool versions for docker-ros-ml-images")
+ parser.add_argument("version_tables", nargs='+', help="List of csv files with version tables")
+ return parser.parse_args()
+
+def merge_tables(tables) -> Dict[str, pd.DataFrame]:
+ all_tables = []
+ for table in tables:
+ if not os.path.exists(table):
+ print(f"Error: File {table} not found.")
+ return
+ all_tables.append(pd.read_csv(table))
+ merged_table = pd.concat(all_tables, sort=False) # concat tables
+ merged_table = merged_table.fillna("-") # replace nan by -
+ merged_table = merged_table.groupby("Tag").agg(lambda x: "
".join([str(e) for e in x]) if len(set(x)) > 1 else str(x.iloc[0])).reset_index() # group by tag, keep unique values joined by
+ merged_table["Repo"] = merged_table["Tag"].str.split(":").str[0].str.replace("`", "") # extract repo name
+ repo_tables = merged_table.groupby("Repo")
+ table_by_repo = {repo: table.drop(columns=["Repo"]) for repo, table in repo_tables}
+ return table_by_repo
+
+def print_markdown_table(data: pd.DataFrame):
+ headers = list(data.columns)
+ header_line = " | ".join(headers)
+ separator_line = ":---" + " | " + " | ".join([":---:"] * (len(headers)-1))
+ print(header_line)
+ print(separator_line)
+ for index, row in data.iterrows():
+ print(" | ".join(row.values.astype(str)))
+
+def main():
+ args = parse_arguments()
+ table_by_repo = merge_tables(args.version_tables)
+ for repo, table in table_by_repo.items():
+ print(f"### {repo}")
+ print("")
+ print_markdown_table(table)
+ print("")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/utils/requirements.txt b/utils/requirements.txt
new file mode 100644
index 0000000..9da9e48
--- /dev/null
+++ b/utils/requirements.txt
@@ -0,0 +1,2 @@
+pandas
+tqdm
\ No newline at end of file
From 2f2f2589e4e97a2772b8edefdd9d13c90df7f57b Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Mon, 26 Aug 2024 18:57:03 +0200
Subject: [PATCH 52/64] enable bash completion in container
---
Dockerfile | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Dockerfile b/Dockerfile
index d38628e..ee5c290 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -73,6 +73,7 @@ RUN apt-get update && \
apt-get install -y \
bsdmainutils \
build-essential \
+ bash-completion \
curl \
dirmngr \
gdb \
@@ -98,6 +99,9 @@ RUN apt-get update && \
RUN if [[ $UBUNTU_VERSION == "24.04" ]]; then python -m pip config --global set global.break-system-packages true; \
else python -m pip install --upgrade pip; fi
+# enable bash completion
+RUN sed -i '/^#if \[ -f \/etc\/bash_completion \]/,/^#fi/ s/^#//' ~/.bashrc
+
# install more essentials
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
apt-get update && \
From 2406ea817e6b9328d63a0c7291a5252741892a9e Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Mon, 26 Aug 2024 18:57:37 +0200
Subject: [PATCH 53/64] bring back all pipeline jobs
---
.gitlab-ci.yml | 210 ++++++++++++++++++++++++-------------------------
1 file changed, 105 insertions(+), 105 deletions(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 65da52e..f916176 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,27 +25,27 @@ ros-noetic-ros-core:
include: .gitlab-ci/ros-noetic/ros-noetic-ros-core.yml
strategy: depend
-# ros-noetic-ros-base:
-# stage: ROS 1 Noetic
-# rules:
-# - if: $ROS_DISTROS =~ /.*noetic.*/
-# needs:
-# - job: ros-noetic-ros-core
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros-noetic/ros-noetic-ros-base.yml
-# strategy: depend
-
-# ros-noetic-desktop-full:
-# stage: ROS 1 Noetic
-# rules:
-# - if: $ROS_DISTROS =~ /.*noetic.*/
-# needs:
-# - job: ros-noetic-ros-base
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros-noetic/ros-noetic-desktop-full.yml
-# strategy: depend
+ros-noetic-ros-base:
+ stage: ROS 1 Noetic
+ rules:
+ - if: $ROS_DISTROS =~ /.*noetic.*/
+ needs:
+ - job: ros-noetic-ros-core
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros-noetic/ros-noetic-ros-base.yml
+ strategy: depend
+
+ros-noetic-desktop-full:
+ stage: ROS 1 Noetic
+ rules:
+ - if: $ROS_DISTROS =~ /.*noetic.*/
+ needs:
+ - job: ros-noetic-ros-base
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros-noetic/ros-noetic-desktop-full.yml
+ strategy: depend
ros2-humble-ros-core:
@@ -57,27 +57,27 @@ ros2-humble-ros-core:
include: .gitlab-ci/ros2-humble/ros2-humble-ros-core.yml
strategy: depend
-# ros2-humble-ros-base:
-# stage: ROS 2 Humble
-# rules:
-# - if: $ROS_DISTROS =~ /.*humble.*/
-# needs:
-# - job: ros2-humble-ros-core
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-humble/ros2-humble-ros-base.yml
-# strategy: depend
-
-# ros2-humble-desktop-full:
-# stage: ROS 2 Humble
-# rules:
-# - if: $ROS_DISTROS =~ /.*humble.*/
-# needs:
-# - job: ros2-humble-ros-base
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-humble/ros2-humble-desktop-full.yml
-# strategy: depend
+ros2-humble-ros-base:
+ stage: ROS 2 Humble
+ rules:
+ - if: $ROS_DISTROS =~ /.*humble.*/
+ needs:
+ - job: ros2-humble-ros-core
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-humble/ros2-humble-ros-base.yml
+ strategy: depend
+
+ros2-humble-desktop-full:
+ stage: ROS 2 Humble
+ rules:
+ - if: $ROS_DISTROS =~ /.*humble.*/
+ needs:
+ - job: ros2-humble-ros-base
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-humble/ros2-humble-desktop-full.yml
+ strategy: depend
ros2-iron-ros-core:
@@ -89,27 +89,27 @@ ros2-iron-ros-core:
include: .gitlab-ci/ros2-iron/ros2-iron-ros-core.yml
strategy: depend
-# ros2-iron-ros-base:
-# stage: ROS 2 Iron
-# rules:
-# - if: $ROS_DISTROS =~ /.*iron.*/
-# needs:
-# - job: ros2-iron-ros-core
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-iron/ros2-iron-ros-base.yml
-# strategy: depend
-
-# ros2-iron-desktop-full:
-# stage: ROS 2 Iron
-# rules:
-# - if: $ROS_DISTROS =~ /.*iron.*/
-# needs:
-# - job: ros2-iron-ros-base
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-iron/ros2-iron-desktop-full.yml
-# strategy: depend
+ros2-iron-ros-base:
+ stage: ROS 2 Iron
+ rules:
+ - if: $ROS_DISTROS =~ /.*iron.*/
+ needs:
+ - job: ros2-iron-ros-core
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-iron/ros2-iron-ros-base.yml
+ strategy: depend
+
+ros2-iron-desktop-full:
+ stage: ROS 2 Iron
+ rules:
+ - if: $ROS_DISTROS =~ /.*iron.*/
+ needs:
+ - job: ros2-iron-ros-base
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-iron/ros2-iron-desktop-full.yml
+ strategy: depend
ros2-jazzy-ros-core:
@@ -121,27 +121,27 @@ ros2-jazzy-ros-core:
include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-core.yml
strategy: depend
-# ros2-jazzy-ros-base:
-# stage: ROS 2 Jazzy
-# rules:
-# - if: $ROS_DISTROS =~ /.*jazzy.*/
-# needs:
-# - job: ros2-jazzy-ros-core
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
-# strategy: depend
-
-# ros2-jazzy-desktop-full:
-# stage: ROS 2 Jazzy
-# rules:
-# - if: $ROS_DISTROS =~ /.*jazzy.*/
-# needs:
-# - job: ros2-jazzy-ros-base
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
-# strategy: depend
+ros2-jazzy-ros-base:
+ stage: ROS 2 Jazzy
+ rules:
+ - if: $ROS_DISTROS =~ /.*jazzy.*/
+ needs:
+ - job: ros2-jazzy-ros-core
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
+ strategy: depend
+
+ros2-jazzy-desktop-full:
+ stage: ROS 2 Jazzy
+ rules:
+ - if: $ROS_DISTROS =~ /.*jazzy.*/
+ needs:
+ - job: ros2-jazzy-ros-base
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
+ strategy: depend
ros2-rolling-ros-core:
@@ -153,24 +153,24 @@ ros2-rolling-ros-core:
include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-core.yml
strategy: depend
-# ros2-rolling-ros-base:
-# stage: ROS 2 Rolling
-# rules:
-# - if: $ROS_DISTROS =~ /.*rolling.*/
-# needs:
-# - job: ros2-rolling-ros-core
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-base.yml
-# strategy: depend
-
-# ros2-rolling-desktop:
-# stage: ROS 2 Rolling
-# rules:
-# - if: $ROS_DISTROS =~ /.*rolling.*/
-# needs:
-# - job: ros2-rolling-ros-base
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-rolling/ros2-rolling-desktop.yml
-# strategy: depend
+ros2-rolling-ros-base:
+ stage: ROS 2 Rolling
+ rules:
+ - if: $ROS_DISTROS =~ /.*rolling.*/
+ needs:
+ - job: ros2-rolling-ros-core
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-base.yml
+ strategy: depend
+
+ros2-rolling-desktop:
+ stage: ROS 2 Rolling
+ rules:
+ - if: $ROS_DISTROS =~ /.*rolling.*/
+ needs:
+ - job: ros2-rolling-ros-base
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-rolling/ros2-rolling-desktop.yml
+ strategy: depend
From b3e67feb8a48beed79b486199995b4608de5b557 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Mon, 26 Aug 2024 22:49:04 +0200
Subject: [PATCH 54/64] install desktop-full also for rolling
---
.gitlab-ci/ros-packages/.desktop.yml | 2 --
.../{ros2-rolling-desktop.yml => ros2-rolling-desktop-full.yml} | 2 +-
2 files changed, 1 insertion(+), 3 deletions(-)
delete mode 100644 .gitlab-ci/ros-packages/.desktop.yml
rename .gitlab-ci/ros2-rolling/{ros2-rolling-desktop.yml => ros2-rolling-desktop-full.yml} (64%)
diff --git a/.gitlab-ci/ros-packages/.desktop.yml b/.gitlab-ci/ros-packages/.desktop.yml
deleted file mode 100644
index 93e4ff5..0000000
--- a/.gitlab-ci/ros-packages/.desktop.yml
+++ /dev/null
@@ -1,2 +0,0 @@
-variables:
- ROS_PACKAGE: desktop
diff --git a/.gitlab-ci/ros2-rolling/ros2-rolling-desktop.yml b/.gitlab-ci/ros2-rolling/ros2-rolling-desktop-full.yml
similarity index 64%
rename from .gitlab-ci/ros2-rolling/ros2-rolling-desktop.yml
rename to .gitlab-ci/ros2-rolling/ros2-rolling-desktop-full.yml
index bb91ab5..66e20cb 100644
--- a/.gitlab-ci/ros2-rolling/ros2-rolling-desktop.yml
+++ b/.gitlab-ci/ros2-rolling/ros2-rolling-desktop-full.yml
@@ -1,4 +1,4 @@
include:
- .gitlab-ci/.template.yml
- .gitlab-ci/ros2-rolling/.ros2-rolling.yml
- - .gitlab-ci/ros-packages/.desktop.yml
+ - .gitlab-ci/ros-packages/.desktop-full.yml
From 39d3bcdc86a5e2ec8e77daa305b6502dc600eac3 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Mon, 26 Aug 2024 22:51:58 +0200
Subject: [PATCH 55/64] remove docker-clean rule to enable auto-completion for
apt commands
---
Dockerfile | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Dockerfile b/Dockerfile
index ee5c290..586d477 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -231,6 +231,9 @@ ENV DOCKER_GID=
RUN echo "source /.version_information.sh" >> ~/.bashrc
COPY .version_information.sh /.version_information.sh
+# remove docker-clean rule to enable auto-completion for apt commands
+RUN rm -f /etc/apt/apt.conf.d/docker-clean
+
# container startup setup
ENV WORKSPACE=/docker-ros/ws
WORKDIR $WORKSPACE
From 035e1f99471706e887b360dcfea0f1446584210f Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Mon, 26 Aug 2024 22:53:38 +0200
Subject: [PATCH 56/64] fix rolling desktop-full job
---
.gitlab-ci.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f916176..1c8c761 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -164,7 +164,7 @@ ros2-rolling-ros-base:
include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-base.yml
strategy: depend
-ros2-rolling-desktop:
+ros2-rolling-desktop-full:
stage: ROS 2 Rolling
rules:
- if: $ROS_DISTROS =~ /.*rolling.*/
@@ -172,5 +172,5 @@ ros2-rolling-desktop:
- job: ros2-rolling-ros-base
optional: true
trigger:
- include: .gitlab-ci/ros2-rolling/ros2-rolling-desktop.yml
+ include: .gitlab-ci/ros2-rolling/ros2-rolling-desktop-full.yml
strategy: depend
From aaa7d0c61feabedc75d44656e196c0a44eea040c Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Mon, 26 Aug 2024 21:27:48 +0000
Subject: [PATCH 57/64] update readme text
---
README.md | 257 +++++++++++++++++++++---------------------------------
1 file changed, 98 insertions(+), 159 deletions(-)
diff --git a/README.md b/README.md
index 7f89b46..d329862 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,13 @@
# *docker-ros-ml-images* – Machine Learning-Enabled ROS Docker Images
-# TODO: add information for ROS 2 Jazzy
-
-
-
+
+
+
*docker-ros-ml-images* provides machine learning-enabled ROS Docker images.
@@ -24,6 +23,12 @@ We recommend to use *docker-ros-ml-images* in combination with our other tools f
- [*docker-run*](https://github.com/ika-rwth-aachen/docker-run) is a CLI tool for simplified interaction with Docker images
+## Quick Links to Available Images
+
+[`ros2`](#rwthikaros2-ros-2) | [`ros2-cuda`](#rwthikaros2-cuda-ros-2-nvidia-cuda) | [`ros2-tensorrt`](#rwthikaros2-tensorrt-ros-2-nvidia-cuda-nvidia-tensorrt) | [`ros2-triton`](#rwthikaros2-triton-ros-2-nvidia-cuda-nvidia-triton-client) | [`ros2-torch`](#rwthikaros2-torch-ros-2-nvidia-cuda-nvidia-tensorrt-pytorch) | [`ros2-tf`](#rwthikaros2-tf-ros-2-nvidia-cuda-nvidia-tensorrt-tensorflow) | [`ros2-ml`](#rwthikaros2-ml-ros-2-nvidia-cuda-nvidia-tensorrt-pytorch-tensorflow)
+[`ros`](#rwthikaros-ros) | [`ros-cuda`](#rwthikaros-cuda-ros-nvidia-cuda) | [`ros-tensorrt`](#rwthikaros-tensorrt-ros-nvidia-cuda-nvidia-tensorrt) | [`ros-triton`](#rwthikaros-triton-ros-nvidia-cuda-nvidia-triton-client) | [`ros-torch`](#rwthikaros-torch-ros-nvidia-cuda-nvidia-tensorrt-pytorch) | [`ros-tf`](#rwthikaros-tf-ros-nvidia-cuda-nvidia-tensorrt-tensorflow) | [`ros-ml`](#rwthikaros-ml-ros-nvidia-cuda-nvidia-tensorrt-pytorch-tensorflow)
+
+
## Quick Start
```bash
@@ -34,15 +39,18 @@ docker run --rm rwthika/ros2-ml:humble \
## Variations
-With *docker-ros-ml-images*, we provide a variety of lightweight multi-arch machine learning-enabled ROS Docker images. Each of the provided Docker images includes support for popular machine learning frameworks in addition to a ROS distribution. Currently, the supported machine learning frameworks are [*PyTorch*](https://pytorch.org/) and [*TensorFlow*](https://www.tensorflow.org/). Since robotic applications are often implemented in C++ instead of Python for performance reasons, we also offer the C++ APIs of both frameworks. Combining the components listed the table below, we have built more than 100 multi-arch images and make them publicly available on [DockerHub](https://hub.docker.com/u/rwthika). In addition to the provided images, we also publish the [generic Dockerfile](./Dockerfile) used to flexibly build images combining the different components.
+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*](https://developer.nvidia.com/cuda-toolkit), [*NVIDIA TensorRT*](https://developer.nvidia.com/tensorrt), [*NVIDIA Triton Client*](https://developer.nvidia.com/triton-inference-server), [*PyTorch*](https://pytorch.org/) and/or [*TensorFlow*](https://www.tensorflow.org/) 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](https://hub.docker.com/u/rwthika). In addition to the provided images, we also publish the [generic Dockerfile](./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 | CUDA, PyTorch Python, PyTorch C++, TensorFlow Python, TensorFlow C++ |
+| ML Framework | NVIDIA CUDA, NVIDIA TensorRT, NVIDIA Triton Client, PyTorch, TensorFlow |
| Architecture | amd64, arm64 |
+> [!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](https://hub.docker.com/r/rwthika/ros2-ml/tags?page=&page_size=&ordering=&name=-v23.08).
+
## Image Configuration
@@ -59,258 +67,188 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
## Available Images
-### ROS
+### ROS 2
-#### [`rwthika/ros`](https://hub.docker.com/r/rwthika/ros) (ROS)
+#### [`rwthika/ros2`](https://hub.docker.com/r/rwthika/ros2) (ROS 2)
+
+
+
+
+
+Click to expand
+
+TODO: table
+
+
+
+#### [`rwthika/ros2-cuda`](https://hub.docker.com/r/rwthika/ros2-cuda) (ROS 2, NVIDIA CUDA)
-
+
Click to expand
-| Tag | Arch | Ubuntu | Python | ROS | ROS Packages | CMake | CUDA | cuDNN | TensorRT | PyTorch Python | PyTorch C++ | TensorFlow Python | TensorFlow C++ |
-| ------------------------------------- | :------------: | :-----: | :----: | :----: | :----------: | :----: | :---: | :---: | :------: | :------------: | :---------: | :---------------: | :------------: |
-| `noetic-ros-core` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | - | - | - | - | - | - | - |
-| `latest`, `noetic`, `noetic-ros-base` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | - | - | - | - | - | - | - |
-| `noetic-desktop-full` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | - | - | - | - | - | - | - |
+TODO: table
-#### [`rwthika/ros-cuda-trt`](https://hub.docker.com/r/rwthika/ros-cuda-trt) (ROS + CUDA + TensorRT)
+#### [`rwthika/ros2-tensorrt`](https://hub.docker.com/r/rwthika/ros2-tensorrt) (ROS 2, NVIDIA CUDA, NVIDIA TensorRT)
-
+
Click to expand
-| Tag | Arch | Ubuntu | Python | ROS | ROS Packages | CMake | CUDA | cuDNN | TensorRT | PyTorch Python | PyTorch C++ | TensorFlow Python | TensorFlow C++ |
-| ------------------------------------- | :------------: | :-----: | :----: | :----: | :----------: | :----: | :-----: | :---: | :------: | :------------: | :---------: | :---------------: | :------------: |
-| `noetic-ros-core` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
-| `latest`, `noetic`, `noetic-ros-base` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
-| `noetic-desktop-full` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
+TODO: table
-#### [`rwthika/ros-torch`](https://hub.docker.com/r/rwthika/ros-torch) (ROS + PyTorch)
+#### [`rwthika/ros2-triton`](https://hub.docker.com/r/rwthika/ros2-triton) (ROS 2, NVIDIA CUDA, NVIDIA Triton Client)
-
+
Click to expand
-| Tag | Arch | Ubuntu | Python | ROS | ROS Packages | CMake | CUDA | cuDNN | TensorRT | PyTorch Python | PyTorch C++ | TensorFlow Python | TensorFlow C++ |
-| ------------------------------------------------ | :------------: | :----------: | :---------: | :---------: | :---------------: | :---------: | :----------: | :--------: | :--------: | :------------: | :---------: | :---------------: | :------------: |
-| `noetic-ros-core-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
-| `latest`, `noetic`, `noetic-ros-base-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
-| `noetic-desktop-full-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
-| `noetic-ros-core-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
-| `noetic-ros-base-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
-| `noetic-desktop-full-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
-| `noetic-ros-core-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | noetic
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `noetic-ros-base-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | noetic
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `noetic-desktop-full-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | noetic
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
+TODO: table
-#### [`rwthika/ros-tf`](https://hub.docker.com/r/rwthika/ros-tf) (ROS + TensorFlow)
+#### [`rwthika/ros2-torch`](https://hub.docker.com/r/rwthika/ros2-torch) (ROS 2, NVIDIA CUDA, NVIDIA TensorRT, PyTorch)
-
+
Click to expand
-| Tag | Arch | Ubuntu | Python | ROS | ROS Packages | CMake | CUDA | cuDNN | TensorRT | PyTorch Python | PyTorch C++ | TensorFlow Python | TensorFlow C++ |
-| ---------------------------------------------- | :------------: | :-----: | :----: | :----: | :----------: | :----: | :-----: | :---: | :------: | :------------: | :---------: | :---------------: | :------------: |
-| `noetic-ros-core-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
-| `latest`, `noetic`, `noetic-ros-base-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
-| `noetic-desktop-full-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
-| `noetic-ros-core-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
-| `noetic-ros-base-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
-| `noetic-desktop-full-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
-| `noetic-ros-core-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
-| `noetic-ros-base-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
-| `noetic-desktop-full-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
+TODO: table
-#### [`rwthika/ros-ml`](https://hub.docker.com/r/rwthika/ros-ml) (ROS + PyTorch + TensorFlow)
+#### [`rwthika/ros2-tf`](https://hub.docker.com/r/rwthika/ros2-tf) (ROS 2, NVIDIA CUDA, NVIDIA TensorRT, TensorFlow)
-
+
Click to expand
-| Tag | Arch | Ubuntu | Python | ROS | ROS Packages | CMake | CUDA | cuDNN | TensorRT | PyTorch Python | PyTorch C++ | TensorFlow Python | TensorFlow C++ |
-| --------------------------------------------------------- | :------------: | :-----: | :----: | :----: | :----------: | :----: | :-----: | :---: | :------: | :------------: | :---------: | :---------------: | :------------: |
-| `noetic-ros-core-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
-| `latest`, `noetic`, `noetic-ros-base-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
-| `noetic-desktop-full-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | noetic | desktop-full | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
+TODO: table
-### ROS 2
+#### [`rwthika/ros2-ml`](https://hub.docker.com/r/rwthika/ros2-ml) (ROS 2, NVIDIA CUDA, NVIDIA TensorRT, PyTorch, TensorFlow)
-#### [`rwthika/ros2`](https://hub.docker.com/r/rwthika/ros2) (ROS 2)
+
+
+
+
+Click to expand
+
+TODO: table
+
+
+
+
+### ROS
+
+#### [`rwthika/ros`](https://hub.docker.com/r/rwthika/ros) (ROS)
-
+
Click to expand
-| Tag | Arch | Ubuntu | Python | ROS | ROS Packages | CMake | CUDA | cuDNN | TensorRT | PyTorch Python | PyTorch C++ | TensorFlow Python | TensorFlow C++ |
-| ------------------------------------- | :------------: | :-----: | :-----: | :-----: | :----------: | :----: | :---: | :---: | :------: | :------------: | :---------: | :---------------: | :------------: |
-| `rolling-ros-core` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-core | 3.27.2 | - | - | - | - | - | - | - |
-| `rolling`, `rolling-ros-base` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-base | 3.27.2 | - | - | - | - | - | - | - |
-| `rolling-desktop` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | - | - | - | - | - | - | - |
-| `iron-ros-core` | amd64
arm64 | 22.04.2 | 3.10.12 | iron | ros-core | 3.27.2 | - | - | - | - | - | - | - |
-| `iron`, `iron-ros-base` | amd64
arm64 | 22.04.2 | 3.10.12 | iron | ros-base | 3.27.2 | - | - | - | - | - | - | - |
-| `iron-desktop-full` | amd64
arm64 | 22.04.2 | 3.10.12 | iron | desktop-full | 3.27.2 | - | - | - | - | - | - | - |
-| `humble-ros-core` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | ros-core | 3.27.2 | - | - | - | - | - | - | - |
-| `latest`, `humble`, `humble-ros-base` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | ros-base | 3.27.2 | - | - | - | - | - | - | - |
-| `humble-desktop-full` | amd64
arm64 | 22.04.2 | 3.10.12 | humble | desktop-full | 3.27.2 | - | - | - | - | - | - | - |
-| `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 | - | - | - | - | - | - | - |
+TODO: table
-#### [`rwthika/ros2-cuda-trt`](https://hub.docker.com/r/rwthika/ros2-cuda-trt) (ROS 2 + CUDA + TensorRT)
+#### [`rwthika/ros-cuda`](https://hub.docker.com/r/rwthika/ros-cuda) (ROS, NVIDIA CUDA)
-
+
Click to expand
-| Tag | Arch | Ubuntu | Python | ROS | ROS Packages | CMake | CUDA | cuDNN | TensorRT | PyTorch Python | PyTorch C++ | TensorFlow Python | TensorFlow C++ |
-| ------------------------------------- | :------------: | :----------: | :----------: | :---------: | :---------------: | :---------: | :----------: | :--------: | :--------: | :------------: | :---------: | :---------------: | :------------: |
-| `rolling-ros-core` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
-| `rolling`, `rolling-ros-base` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
-| `rolling-desktop` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | - |
-| `iron-ros-core` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
-| `iron`, `iron-ros-base` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
-| `iron-desktop-full` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
-| `humble-ros-core` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
-| `latest`, `humble`, `humble-ros-base` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
-| `humble-desktop-full` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | - |
+TODO: table
-#### [`rwthika/ros2-torch`](https://hub.docker.com/r/rwthika/ros2-torch) (ROS 2 + PyTorch)
+#### [`rwthika/ros-tensorrt`](https://hub.docker.com/r/rwthika/ros-tensorrt) (ROS, NVIDIA CUDA, NVIDIA TensorRT)
-
+
Click to expand
-| Tag | Arch | Ubuntu | Python | ROS | ROS Packages | CMake | CUDA | cuDNN | TensorRT | PyTorch Python | PyTorch C++ | TensorFlow Python | TensorFlow C++ |
-| ------------------------------------------------ | :------------: | :----------: | :----------: | :----------: | :---------------: | :---------: | :----------: | :--------: | :--------: | :------------: | :---------: | :---------------: | :------------: |
-| `rolling-ros-core-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
-| `rolling`, `rolling-ros-base-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
-| `rolling-desktop-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | - | - |
-| `rolling-ros-core-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
-| `rolling-ros-base-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
-| `rolling-desktop-torch2.0.1-py` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | - | - | - |
-| `rolling-ros-core-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | rolling
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `rolling-ros-base-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | rolling
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `rolling-desktop-torch2.0.1-cpp` | amd64
- | 20.04.6
- | 3.8.10
- | rolling
- | desktop
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `iron-ros-core-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
-| `iron`, `iron-ros-base-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
-| `iron-desktop-full-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
-| `iron-ros-core-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
-| `iron-ros-base-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
-| `iron-desktop-full-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
-| `iron-ros-core-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `iron-ros-base-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `iron-desktop-full-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `humble-ros-core-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
-| `latest`, `humble`, `humble-ros-base-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
-| `humble-desktop-full-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | - | - |
-| `humble-ros-core-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
-| `humble-ros-base-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
-| `humble-desktop-full-torch2.0.1-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | - | - | - |
-| `humble-ros-core-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `humble-ros-base-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
-| `humble-desktop-full-torch2.0.1-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | 2.0.1
- | - | - |
+TODO: table
-#### [`rwthika/ros2-tf`](https://hub.docker.com/r/rwthika/ros2-tf) (ROS 2 + TensorFlow)
+#### [`rwthika/ros-triton`](https://hub.docker.com/r/rwthika/ros-triton) (ROS, NVIDIA CUDA, NVIDIA Triton Client)
-
+
Click to expand
-| Tag | Arch | Ubuntu | Python | ROS | ROS Packages | CMake | CUDA | cuDNN | TensorRT | PyTorch Python | PyTorch C++ | TensorFlow Python | TensorFlow C++ |
-| ---------------------------------------------- | :------------: | :----------: | :----------: | :---------: | :---------------: | :---------: | :----------: | :--------: | :--------: | :------------: | :---------: | :---------------: | :------------: |
-| `rolling-ros-core-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
-| `rolling`, `rolling-ros-base-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
-| `rolling-desktop-tf2.11.0` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | 2.11.0 |
-| `rolling-ros-core-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
-| `rolling-ros-base-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
-| `rolling-desktop-tf2.11.0-py` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | 2.11.0 | - |
-| `rolling-ros-core-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
-| `rolling-ros-base-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
-| `rolling-desktop-tf2.11.0-cpp` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | - | - | - | 2.11.0 |
-| `iron-ros-core-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
-| `iron`, `iron-ros-base-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
-| `iron-desktop-full-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
-| `iron-ros-core-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
-| `iron-ros-base-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
-| `iron-desktop-full-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
-| `iron-ros-core-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
-| `iron-ros-base-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
-| `iron-desktop-full-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
-| `humble-ros-core-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
-| `latest`, `humble`, `humble-ros-base-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
-| `humble-desktop-full-tf2.11.0` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | 2.11.0
- |
-| `humble-ros-core-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
-| `humble-ros-base-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
-| `humble-desktop-full-tf2.11.0-py` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | 2.11.0
- | - |
-| `humble-ros-core-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
-| `humble-ros-base-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
-| `humble-desktop-full-tf2.11.0-cpp` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | - | - | - | 2.11.0
- |
+TODO: table
-#### [`rwthika/ros2-ml`](https://hub.docker.com/r/rwthika/ros2-ml) (ROS 2 + PyTorch + TensorFlow)
+#### [`rwthika/ros-torch`](https://hub.docker.com/r/rwthika/ros-torch) (ROS, NVIDIA CUDA, NVIDIA TensorRT, PyTorch)
-
+
+
+Click to expand
+
+TODO: table
+
+
+
+
+#### [`rwthika/ros-tf`](https://hub.docker.com/r/rwthika/ros-tf) (ROS, NVIDIA CUDA, NVIDIA TensorRT, TensorFlow)
+
+
+
+
+
+Click to expand
+
+TODO: table
+
+
+
+
+#### [`rwthika/ros-ml`](https://hub.docker.com/r/rwthika/ros-ml) (ROS, NVIDIA CUDA, NVIDIA TensorRT, PyTorch, TensorFlow)
+
+
+
+
Click to expand
-| Tag | Arch | Ubuntu | Python | ROS | ROS Packages | CMake | CUDA | cuDNN | TensorRT | PyTorch Python | PyTorch C++ | TensorFlow Python | TensorFlow C++ |
-| --------------------------------------------------------- | :------------: | :----------: | :----------: | :---------: | :---------------: | :---------: | :----------: | :--------: | :--------: | :------------: | :---------: | :---------------: | :------------: |
-| `rolling-ros-core-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-core | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
-| `rolling`, `rolling-ros-base-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | ros-base | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
-| `rolling-desktop-tf2.11.0-torch2.0.1` | amd64
arm64 | 20.04.6 | 3.8.10 | rolling | desktop | 3.27.2 | 11.8.89 | 8.6.0 | 8.5.3 | 2.0.1
2.0.0 | 2.0.1
- | 2.11.0 | 2.11.0 |
-| `iron-ros-core-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
-| `iron`, `iron-ros-base-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
-| `iron-desktop-full-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | iron
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
-| `humble-ros-core-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-core
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
-| `latest`, `humble`, `humble-ros-base-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | ros-base
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
-| `humble-desktop-full-tf2.11.0-torch2.0.1` | amd64
- | 22.04.2
- | 3.10.12
- | humble
- | desktop-full
- | 3.27.2
- | 11.8.89
- | 8.6.0
- | 8.5.3
- | 2.0.1
- | 2.0.1
- | 2.11.0
- | 2.11.0
- |
+TODO: table
@@ -329,5 +267,6 @@ docker buildx build \
--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 .
```
From a26f247b02277bd16e7f854883c6abd3ee820a1f Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Tue, 27 Aug 2024 18:30:28 +0200
Subject: [PATCH 58/64] install requirements for torch 2.4.0
---
Dockerfile | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 586d477..c7f0fff 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -178,7 +178,13 @@ RUN if [[ -n $TORCH_VERSION ]]; then \
if [[ $UBUNTU_VERSION == "20.04" ]]; then \
pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-${TORCH_VERSION}a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl; \
else \
- pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v60/pytorch/torch-${TORCH_VERSION}a0+f70bd71a48.nv24.06.15634931-cp310-cp310-linux_aarch64.whl; \
+ wget -q -O /tmp/cusparselt-local-tegra-repo-ubuntu2204-0.6.2_1.0-1_arm64.deb https://developer.download.nvidia.com/compute/cusparselt/0.6.2/local_installers/cusparselt-local-tegra-repo-ubuntu2204-0.6.2_1.0-1_arm64.deb && \
+ dpkg -i /tmp/cusparselt-local-tegra-repo-ubuntu2204-0.6.2_1.0-1_arm64.deb && \
+ mv /var/cusparselt-local-tegra-repo-ubuntu2204-0.6.2/cusparselt-*-keyring.gpg /usr/share/keyrings/ && \
+ apt-get update && \
+ apt-get install -y cuda-cupti-12-2 libcusparselt0 && \
+ rm -rf /var/lib/apt/lists/* && \
+ pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v60/pytorch/torch-${TORCH_VERSION}a0+3bcc3cddb5.nv24.07.16234504-cp310-cp310-linux_aarch64.whl; \
fi; \
fi; \
fi
From 7ca511376804b350db3bbd36dd50a49374a7cb75 Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 28 Aug 2024 13:03:25 +0200
Subject: [PATCH 59/64] switch to torch 2.3.0 and also install torchvision
---
.gitlab-ci/os/.ubuntu22.yml | 2 +-
.gitlab-ci/os/.ubuntu24.yml | 2 --
Dockerfile | 15 ++++++++-------
README.md | 2 +-
4 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/.gitlab-ci/os/.ubuntu22.yml b/.gitlab-ci/os/.ubuntu22.yml
index 4a3df86..6d23a46 100644
--- a/.gitlab-ci/os/.ubuntu22.yml
+++ b/.gitlab-ci/os/.ubuntu22.yml
@@ -1,5 +1,5 @@
variables:
UBUNTU_VERSION: "22.04"
_TF_VERSION: 2.16.1
- _TORCH_VERSION: 2.4.0
+ _TORCH_VERSION: 2.3.0
_TRITON_VERSION: 2.48.0
\ No newline at end of file
diff --git a/.gitlab-ci/os/.ubuntu24.yml b/.gitlab-ci/os/.ubuntu24.yml
index 3d7a50f..28c6b52 100644
--- a/.gitlab-ci/os/.ubuntu24.yml
+++ b/.gitlab-ci/os/.ubuntu24.yml
@@ -1,7 +1,5 @@
variables:
UBUNTU_VERSION: "24.04"
- _TF_VERSION: 2.16.1
- _TORCH_VERSION: 2.4.0
_TRITON_VERSION: 2.48.0
DISABLE_TENSORRT: "true"
DISABLE_TORCH: "true"
diff --git a/Dockerfile b/Dockerfile
index c7f0fff..1067b94 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -168,23 +168,24 @@ ARG UBUNTU_VERSION
ARG TORCH_VERSION
RUN if [[ -n $TORCH_VERSION ]]; then \
if [[ "$TARGETARCH" == "amd64" ]]; then \
- pip3 install torch==${TORCH_VERSION}; \
+ pip3 install torch==${TORCH_VERSION} && \
+ if [[ "$TORCH_VERSION" == "2.3.0" ]]; then pip3 install torchversion==0.18.0; fi; \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
# from: https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
# and: https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html#prereqs-install
apt-get update && \
- apt-get install -y libopenblas-base && \
+ apt-get install -y libopenblas-base libopenmpi-dev libomp-dev && \
rm -rf /var/lib/apt/lists/* ; \
if [[ $UBUNTU_VERSION == "20.04" ]]; then \
pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-${TORCH_VERSION}a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl; \
else \
- wget -q -O /tmp/cusparselt-local-tegra-repo-ubuntu2204-0.6.2_1.0-1_arm64.deb https://developer.download.nvidia.com/compute/cusparselt/0.6.2/local_installers/cusparselt-local-tegra-repo-ubuntu2204-0.6.2_1.0-1_arm64.deb && \
- dpkg -i /tmp/cusparselt-local-tegra-repo-ubuntu2204-0.6.2_1.0-1_arm64.deb && \
- mv /var/cusparselt-local-tegra-repo-ubuntu2204-0.6.2/cusparselt-*-keyring.gpg /usr/share/keyrings/ && \
apt-get update && \
- apt-get install -y cuda-cupti-12-2 libcusparselt0 && \
+ apt-get install -y cuda-cupti-12-2 && \
rm -rf /var/lib/apt/lists/* && \
- pip install --no-cache https://developer.download.nvidia.com/compute/redist/jp/v60/pytorch/torch-${TORCH_VERSION}a0+3bcc3cddb5.nv24.07.16234504-cp310-cp310-linux_aarch64.whl; \
+ wget -q -O /tmp/torch-${TORCH_VERSION}-cp310-cp310-linux_aarch64.whl https://nvidia.box.com/shared/static/mp164asf3sceb570wvjsrezk1p4ftj8t.whl && \
+ wget -q -O /tmp/torchvision-0.18.0a0+6043bc2-cp310-cp310-linux_aarch64.whl https://nvidia.box.com/shared/static/xpr06qe6ql3l6rj22cu3c45tz1wzi36p.whl && \
+ pip install --no-cache /tmp/torch*.whl && \
+ rm -f /tmp/torch*.whl; \
fi; \
fi; \
fi
diff --git a/README.md b/README.md
index d329862..c5451f1 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
-
+
From f7f5b36e548c738a6dd915d45ae44744a256819b Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 28 Aug 2024 13:09:11 +0200
Subject: [PATCH 60/64] temp disable base and desktop for final tests
---
.gitlab-ci.yml | 210 ++++++++++++++++++++++++-------------------------
1 file changed, 105 insertions(+), 105 deletions(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1c8c761..c6f3c42 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,27 +25,27 @@ ros-noetic-ros-core:
include: .gitlab-ci/ros-noetic/ros-noetic-ros-core.yml
strategy: depend
-ros-noetic-ros-base:
- stage: ROS 1 Noetic
- rules:
- - if: $ROS_DISTROS =~ /.*noetic.*/
- needs:
- - job: ros-noetic-ros-core
- optional: true
- trigger:
- include: .gitlab-ci/ros-noetic/ros-noetic-ros-base.yml
- strategy: depend
-
-ros-noetic-desktop-full:
- stage: ROS 1 Noetic
- rules:
- - if: $ROS_DISTROS =~ /.*noetic.*/
- needs:
- - job: ros-noetic-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros-noetic/ros-noetic-desktop-full.yml
- strategy: depend
+# ros-noetic-ros-base:
+# stage: ROS 1 Noetic
+# rules:
+# - if: $ROS_DISTROS =~ /.*noetic.*/
+# needs:
+# - job: ros-noetic-ros-core
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros-noetic/ros-noetic-ros-base.yml
+# strategy: depend
+
+# ros-noetic-desktop-full:
+# stage: ROS 1 Noetic
+# rules:
+# - if: $ROS_DISTROS =~ /.*noetic.*/
+# needs:
+# - job: ros-noetic-ros-base
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros-noetic/ros-noetic-desktop-full.yml
+# strategy: depend
ros2-humble-ros-core:
@@ -57,27 +57,27 @@ ros2-humble-ros-core:
include: .gitlab-ci/ros2-humble/ros2-humble-ros-core.yml
strategy: depend
-ros2-humble-ros-base:
- stage: ROS 2 Humble
- rules:
- - if: $ROS_DISTROS =~ /.*humble.*/
- needs:
- - job: ros2-humble-ros-core
- optional: true
- trigger:
- include: .gitlab-ci/ros2-humble/ros2-humble-ros-base.yml
- strategy: depend
-
-ros2-humble-desktop-full:
- stage: ROS 2 Humble
- rules:
- - if: $ROS_DISTROS =~ /.*humble.*/
- needs:
- - job: ros2-humble-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-humble/ros2-humble-desktop-full.yml
- strategy: depend
+# ros2-humble-ros-base:
+# stage: ROS 2 Humble
+# rules:
+# - if: $ROS_DISTROS =~ /.*humble.*/
+# needs:
+# - job: ros2-humble-ros-core
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-humble/ros2-humble-ros-base.yml
+# strategy: depend
+
+# ros2-humble-desktop-full:
+# stage: ROS 2 Humble
+# rules:
+# - if: $ROS_DISTROS =~ /.*humble.*/
+# needs:
+# - job: ros2-humble-ros-base
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-humble/ros2-humble-desktop-full.yml
+# strategy: depend
ros2-iron-ros-core:
@@ -89,27 +89,27 @@ ros2-iron-ros-core:
include: .gitlab-ci/ros2-iron/ros2-iron-ros-core.yml
strategy: depend
-ros2-iron-ros-base:
- stage: ROS 2 Iron
- rules:
- - if: $ROS_DISTROS =~ /.*iron.*/
- needs:
- - job: ros2-iron-ros-core
- optional: true
- trigger:
- include: .gitlab-ci/ros2-iron/ros2-iron-ros-base.yml
- strategy: depend
-
-ros2-iron-desktop-full:
- stage: ROS 2 Iron
- rules:
- - if: $ROS_DISTROS =~ /.*iron.*/
- needs:
- - job: ros2-iron-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-iron/ros2-iron-desktop-full.yml
- strategy: depend
+# ros2-iron-ros-base:
+# stage: ROS 2 Iron
+# rules:
+# - if: $ROS_DISTROS =~ /.*iron.*/
+# needs:
+# - job: ros2-iron-ros-core
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-iron/ros2-iron-ros-base.yml
+# strategy: depend
+
+# ros2-iron-desktop-full:
+# stage: ROS 2 Iron
+# rules:
+# - if: $ROS_DISTROS =~ /.*iron.*/
+# needs:
+# - job: ros2-iron-ros-base
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-iron/ros2-iron-desktop-full.yml
+# strategy: depend
ros2-jazzy-ros-core:
@@ -121,27 +121,27 @@ ros2-jazzy-ros-core:
include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-core.yml
strategy: depend
-ros2-jazzy-ros-base:
- stage: ROS 2 Jazzy
- rules:
- - if: $ROS_DISTROS =~ /.*jazzy.*/
- needs:
- - job: ros2-jazzy-ros-core
- optional: true
- trigger:
- include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
- strategy: depend
-
-ros2-jazzy-desktop-full:
- stage: ROS 2 Jazzy
- rules:
- - if: $ROS_DISTROS =~ /.*jazzy.*/
- needs:
- - job: ros2-jazzy-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
- strategy: depend
+# ros2-jazzy-ros-base:
+# stage: ROS 2 Jazzy
+# rules:
+# - if: $ROS_DISTROS =~ /.*jazzy.*/
+# needs:
+# - job: ros2-jazzy-ros-core
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
+# strategy: depend
+
+# ros2-jazzy-desktop-full:
+# stage: ROS 2 Jazzy
+# rules:
+# - if: $ROS_DISTROS =~ /.*jazzy.*/
+# needs:
+# - job: ros2-jazzy-ros-base
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
+# strategy: depend
ros2-rolling-ros-core:
@@ -153,24 +153,24 @@ ros2-rolling-ros-core:
include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-core.yml
strategy: depend
-ros2-rolling-ros-base:
- stage: ROS 2 Rolling
- rules:
- - if: $ROS_DISTROS =~ /.*rolling.*/
- needs:
- - job: ros2-rolling-ros-core
- optional: true
- trigger:
- include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-base.yml
- strategy: depend
-
-ros2-rolling-desktop-full:
- stage: ROS 2 Rolling
- rules:
- - if: $ROS_DISTROS =~ /.*rolling.*/
- needs:
- - job: ros2-rolling-ros-base
- optional: true
- trigger:
- include: .gitlab-ci/ros2-rolling/ros2-rolling-desktop-full.yml
- strategy: depend
+# ros2-rolling-ros-base:
+# stage: ROS 2 Rolling
+# rules:
+# - if: $ROS_DISTROS =~ /.*rolling.*/
+# needs:
+# - job: ros2-rolling-ros-core
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-base.yml
+# strategy: depend
+
+# ros2-rolling-desktop-full:
+# stage: ROS 2 Rolling
+# rules:
+# - if: $ROS_DISTROS =~ /.*rolling.*/
+# needs:
+# - job: ros2-rolling-ros-base
+# optional: true
+# trigger:
+# include: .gitlab-ci/ros2-rolling/ros2-rolling-desktop-full.yml
+# strategy: depend
From 917b62287e49fe1227def38430cdf1a5df1d3f5a Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 28 Aug 2024 13:33:01 +0200
Subject: [PATCH 61/64] fix typo
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 1067b94..226560b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -169,7 +169,7 @@ ARG TORCH_VERSION
RUN if [[ -n $TORCH_VERSION ]]; then \
if [[ "$TARGETARCH" == "amd64" ]]; then \
pip3 install torch==${TORCH_VERSION} && \
- if [[ "$TORCH_VERSION" == "2.3.0" ]]; then pip3 install torchversion==0.18.0; fi; \
+ if [[ "$TORCH_VERSION" == "2.3.0" ]]; then pip3 install torchvision==0.18.0; fi; \
elif [[ "$TARGETARCH" == "arm64" ]]; then \
# from: https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
# and: https://docs.nvidia.com/deeplearning/frameworks/install-pytorch-jetson-platform/index.html#prereqs-install
From 4fb02e8c6209b190a7d7e08ce68d0d92f80e9a3f Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 28 Aug 2024 15:26:38 +0200
Subject: [PATCH 62/64] do not remove docker-clean apt rule
---
Dockerfile | 3 ---
1 file changed, 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 226560b..af1d7a9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -238,9 +238,6 @@ ENV DOCKER_GID=
RUN echo "source /.version_information.sh" >> ~/.bashrc
COPY .version_information.sh /.version_information.sh
-# remove docker-clean rule to enable auto-completion for apt commands
-RUN rm -f /etc/apt/apt.conf.d/docker-clean
-
# container startup setup
ENV WORKSPACE=/docker-ros/ws
WORKDIR $WORKSPACE
From 187d5c27d0cc785bb095ae62546e082129c117e8 Mon Sep 17 00:00:00 2001
From: Lennart Reiher
Date: Wed, 28 Aug 2024 15:56:58 +0200
Subject: [PATCH 63/64] update all version tables
---
README.md | 138 ++++++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 118 insertions(+), 20 deletions(-)
diff --git a/README.md b/README.md
index c5451f1..a925824 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@
-*docker-ros-ml-images* provides 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**](https://www.ika.rwth-aachen.de/).
@@ -41,12 +41,15 @@ docker run --rm rwthika/ros2-ml:humble \
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*](https://developer.nvidia.com/cuda-toolkit), [*NVIDIA TensorRT*](https://developer.nvidia.com/tensorrt), [*NVIDIA Triton Client*](https://developer.nvidia.com/triton-inference-server), [*PyTorch*](https://pytorch.org/) and/or [*TensorFlow*](https://www.tensorflow.org/) 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](https://hub.docker.com/u/rwthika). In addition to the provided images, we also publish the [generic Dockerfile](./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 |
+| 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 |
+| Architecture | amd64, arm64 |
+
+> [!NOTE]
+> All images are targeted at NVIDIA GPUs and therefore base off of official [NVIDIA base images](https://catalog.ngc.nvidia.com/containers). The arm64 images, in particular, target NVIDIA Jetson SoCs and are based off of [NVIDIA L4T base images](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-base). 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](https://hub.docker.com/r/rwthika/ros2-ml/tags?page=&page_size=&ordering=&name=-v23.08).
@@ -77,7 +80,20 @@ The password of the custom user is set to its username (`dockeruser:dockeruser`
Click to expand
-TODO: table
+| 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 | - | - | - | - | - | - |
@@ -90,7 +106,20 @@ TODO: table
Click to expand
-TODO: table
+| 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 | - | - | - | - | - |
@@ -103,7 +132,14 @@ TODO: table
Click to expand
-TODO: table
+| 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 | - | - | - |
@@ -116,7 +152,20 @@ TODO: table
Click to expand
-TODO: table
+| 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 | - | - |
@@ -129,7 +178,14 @@ TODO: table
Click to expand
-TODO: table
+| 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 | - |
@@ -142,7 +198,14 @@ TODO: table
Click to expand
-TODO: table
+| 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 |
@@ -155,7 +218,14 @@ TODO: table
Click to expand
-TODO: table
+| 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 |
@@ -170,7 +240,11 @@ TODO: table
Click to expand
-TODO: table
+| 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 | - | - | - | - | - | - |
@@ -183,7 +257,11 @@ TODO: table
Click to expand
-TODO: table
+| 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 | - | - | - | - | - |
@@ -196,7 +274,11 @@ TODO: table
Click to expand
-TODO: table
+| 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 | - | - | - |
@@ -209,7 +291,11 @@ TODO: table
Click to expand
-TODO: table
+| 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 | - | - |
@@ -222,7 +308,11 @@ TODO: table
Click to expand
-TODO: table
+| 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 | - |
@@ -235,7 +325,11 @@ TODO: table
Click to expand
-TODO: table
+| 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 |
@@ -248,7 +342,11 @@ TODO: table
Click to expand
-TODO: table
+| 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 |
From e3ed42bc9e7a8ddc4f93604858a8962a5dfbd83f Mon Sep 17 00:00:00 2001
From: Jean-Pierre Busch
Date: Wed, 28 Aug 2024 16:57:04 +0200
Subject: [PATCH 64/64] Revert "temp disable base and desktop for final tests"
This reverts commit f7f5b36e548c738a6dd915d45ae44744a256819b.
---
.gitlab-ci.yml | 210 ++++++++++++++++++++++++-------------------------
1 file changed, 105 insertions(+), 105 deletions(-)
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c6f3c42..1c8c761 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -25,27 +25,27 @@ ros-noetic-ros-core:
include: .gitlab-ci/ros-noetic/ros-noetic-ros-core.yml
strategy: depend
-# ros-noetic-ros-base:
-# stage: ROS 1 Noetic
-# rules:
-# - if: $ROS_DISTROS =~ /.*noetic.*/
-# needs:
-# - job: ros-noetic-ros-core
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros-noetic/ros-noetic-ros-base.yml
-# strategy: depend
-
-# ros-noetic-desktop-full:
-# stage: ROS 1 Noetic
-# rules:
-# - if: $ROS_DISTROS =~ /.*noetic.*/
-# needs:
-# - job: ros-noetic-ros-base
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros-noetic/ros-noetic-desktop-full.yml
-# strategy: depend
+ros-noetic-ros-base:
+ stage: ROS 1 Noetic
+ rules:
+ - if: $ROS_DISTROS =~ /.*noetic.*/
+ needs:
+ - job: ros-noetic-ros-core
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros-noetic/ros-noetic-ros-base.yml
+ strategy: depend
+
+ros-noetic-desktop-full:
+ stage: ROS 1 Noetic
+ rules:
+ - if: $ROS_DISTROS =~ /.*noetic.*/
+ needs:
+ - job: ros-noetic-ros-base
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros-noetic/ros-noetic-desktop-full.yml
+ strategy: depend
ros2-humble-ros-core:
@@ -57,27 +57,27 @@ ros2-humble-ros-core:
include: .gitlab-ci/ros2-humble/ros2-humble-ros-core.yml
strategy: depend
-# ros2-humble-ros-base:
-# stage: ROS 2 Humble
-# rules:
-# - if: $ROS_DISTROS =~ /.*humble.*/
-# needs:
-# - job: ros2-humble-ros-core
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-humble/ros2-humble-ros-base.yml
-# strategy: depend
-
-# ros2-humble-desktop-full:
-# stage: ROS 2 Humble
-# rules:
-# - if: $ROS_DISTROS =~ /.*humble.*/
-# needs:
-# - job: ros2-humble-ros-base
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-humble/ros2-humble-desktop-full.yml
-# strategy: depend
+ros2-humble-ros-base:
+ stage: ROS 2 Humble
+ rules:
+ - if: $ROS_DISTROS =~ /.*humble.*/
+ needs:
+ - job: ros2-humble-ros-core
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-humble/ros2-humble-ros-base.yml
+ strategy: depend
+
+ros2-humble-desktop-full:
+ stage: ROS 2 Humble
+ rules:
+ - if: $ROS_DISTROS =~ /.*humble.*/
+ needs:
+ - job: ros2-humble-ros-base
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-humble/ros2-humble-desktop-full.yml
+ strategy: depend
ros2-iron-ros-core:
@@ -89,27 +89,27 @@ ros2-iron-ros-core:
include: .gitlab-ci/ros2-iron/ros2-iron-ros-core.yml
strategy: depend
-# ros2-iron-ros-base:
-# stage: ROS 2 Iron
-# rules:
-# - if: $ROS_DISTROS =~ /.*iron.*/
-# needs:
-# - job: ros2-iron-ros-core
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-iron/ros2-iron-ros-base.yml
-# strategy: depend
-
-# ros2-iron-desktop-full:
-# stage: ROS 2 Iron
-# rules:
-# - if: $ROS_DISTROS =~ /.*iron.*/
-# needs:
-# - job: ros2-iron-ros-base
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-iron/ros2-iron-desktop-full.yml
-# strategy: depend
+ros2-iron-ros-base:
+ stage: ROS 2 Iron
+ rules:
+ - if: $ROS_DISTROS =~ /.*iron.*/
+ needs:
+ - job: ros2-iron-ros-core
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-iron/ros2-iron-ros-base.yml
+ strategy: depend
+
+ros2-iron-desktop-full:
+ stage: ROS 2 Iron
+ rules:
+ - if: $ROS_DISTROS =~ /.*iron.*/
+ needs:
+ - job: ros2-iron-ros-base
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-iron/ros2-iron-desktop-full.yml
+ strategy: depend
ros2-jazzy-ros-core:
@@ -121,27 +121,27 @@ ros2-jazzy-ros-core:
include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-core.yml
strategy: depend
-# ros2-jazzy-ros-base:
-# stage: ROS 2 Jazzy
-# rules:
-# - if: $ROS_DISTROS =~ /.*jazzy.*/
-# needs:
-# - job: ros2-jazzy-ros-core
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
-# strategy: depend
-
-# ros2-jazzy-desktop-full:
-# stage: ROS 2 Jazzy
-# rules:
-# - if: $ROS_DISTROS =~ /.*jazzy.*/
-# needs:
-# - job: ros2-jazzy-ros-base
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
-# strategy: depend
+ros2-jazzy-ros-base:
+ stage: ROS 2 Jazzy
+ rules:
+ - if: $ROS_DISTROS =~ /.*jazzy.*/
+ needs:
+ - job: ros2-jazzy-ros-core
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-jazzy/ros2-jazzy-ros-base.yml
+ strategy: depend
+
+ros2-jazzy-desktop-full:
+ stage: ROS 2 Jazzy
+ rules:
+ - if: $ROS_DISTROS =~ /.*jazzy.*/
+ needs:
+ - job: ros2-jazzy-ros-base
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-jazzy/ros2-jazzy-desktop-full.yml
+ strategy: depend
ros2-rolling-ros-core:
@@ -153,24 +153,24 @@ ros2-rolling-ros-core:
include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-core.yml
strategy: depend
-# ros2-rolling-ros-base:
-# stage: ROS 2 Rolling
-# rules:
-# - if: $ROS_DISTROS =~ /.*rolling.*/
-# needs:
-# - job: ros2-rolling-ros-core
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-base.yml
-# strategy: depend
-
-# ros2-rolling-desktop-full:
-# stage: ROS 2 Rolling
-# rules:
-# - if: $ROS_DISTROS =~ /.*rolling.*/
-# needs:
-# - job: ros2-rolling-ros-base
-# optional: true
-# trigger:
-# include: .gitlab-ci/ros2-rolling/ros2-rolling-desktop-full.yml
-# strategy: depend
+ros2-rolling-ros-base:
+ stage: ROS 2 Rolling
+ rules:
+ - if: $ROS_DISTROS =~ /.*rolling.*/
+ needs:
+ - job: ros2-rolling-ros-core
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-rolling/ros2-rolling-ros-base.yml
+ strategy: depend
+
+ros2-rolling-desktop-full:
+ stage: ROS 2 Rolling
+ rules:
+ - if: $ROS_DISTROS =~ /.*rolling.*/
+ needs:
+ - job: ros2-rolling-ros-base
+ optional: true
+ trigger:
+ include: .gitlab-ci/ros2-rolling/ros2-rolling-desktop-full.yml
+ strategy: depend