CI: use ubuntu arm runners instead of QEMU (#1771)

* CI: use ubuntu arm runners instead of QEMU

* removed focal deps docker image ci

* run tests in docker ci

* revert temporary test

* trigger ci jobs with modified files

* ldconfig

* arm64 ldconfig order

* No response filtering here: cv::goodFeaturesToTrack() already applies GFTT/QualityLevel, relative to the best corner's measure. Re-applying it as an absolute floor on KeyPoint::response double-filtered (~86% of keypoints ropped on OpenCV 4.5), and dropped *every* keypoint on OpenCV < 4.5, whose GFTTDetector leaves response at 0.

* fixing ExtractXYZCorrespondencesRANSAC ci error

* increased windows timeout (probably caused by gftt fix now extracting more features)
This commit is contained in:
matlabbe
2026-09-22 14:41:07 -07:00
committed by GitHub
parent 9ed83a71db
commit 16fb2f0541
30 changed files with 719 additions and 278 deletions
+33
View File
@@ -1,3 +1,36 @@
### Docker
* Go to the [wiki](https://github.com/introlab/rtabmap/wiki/Installation#docker) for usage examples and how to build locally the images.
#### Tags
All images are published to [introlab3it/rtabmap](https://hub.docker.com/r/introlab3it/rtabmap) as
multi-arch manifests (`linux/amd64` and `linux/arm64`).
| Tag | Alias | Base | ROS |
| --- | --- | --- | --- |
| `resolute` | `26.04`, `latest` | Ubuntu 26.04 | ROS2 Lyrical |
| `noble-kilted` | | Ubuntu 24.04 | ROS2 Kilted |
| `noble` | `24.04` | Ubuntu 24.04 | ROS2 Jazzy |
| `jammy` | `22.04` | Ubuntu 22.04 | ROS2 Humble |
| `focal` | `20.04` | Ubuntu 20.04 | ROS1 Noetic |
Each image is built on top of a matching `<tag>-deps` image holding the third-party
dependencies, so that a source change only rebuilds the top layer.
> [!IMPORTANT]
> **`latest` now points to the newest ROS2 image** (`resolute`), where it used to point
> to `focal` (ROS1 Noetic). Pulling `introlab3it/rtabmap` without a tag therefore gets you
> a different ROS version than before. Use `introlab3it/rtabmap:focal` to stay on ROS1, or
> pin an explicit tag in general rather than relying on `latest`.
`bionic` / `18.04` (ROS1 Melodic) is no longer built; the last published image stays on
Docker Hub but will not be updated. Its Dockerfile is kept in [bionic/](bionic) for reference.
The `<tag>-amd64` / `<tag>-arm64` tags are per-architecture build outputs that CI joins into
the manifests above (see [.github/workflows/docker-ros.yml](../.github/workflows/docker-ros.yml));
use the plain tags instead.
Android build environments (`android23`, `android24`, `android26`, `android30`, `tango`) are
`linux/amd64` only and are built by
[.github/workflows/android.yml](../.github/workflows/android.yml).
+4
View File
@@ -165,6 +165,10 @@ RUN git clone --branch 4.2.0 https://github.com/opencv/opencv.git && \
cd ../.. && \
rm -rf opencv opencv_contrib
# ld.so.conf.d is read in filename order: <arch>-linux-gnu.conf sorts before
# libc.conf (/usr/local/lib) on arm64, so source builds lose to the distro ones.
RUN echo /usr/local/lib > /etc/ld.so.conf.d/00-usr-local.conf && ldconfig
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
COPY ./docker/focal-foxy/deps/ros_entrypoint.sh /ros_entrypoint.sh
+5 -1
View File
@@ -8,11 +8,15 @@ RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map
# Copy current source code
COPY . /root/rtabmap
ARG RUN_TESTS=0
# Build RTAB-Map project
RUN source /ros_entrypoint.sh && \
cd rtabmap/build && \
cmake -DWITH_ALICE_VISION=ON -DWITH_OPENGV=ON .. && \
cmake -DWITH_ALICE_VISION=ON -DWITH_OPENGV=ON -DBUILD_TESTING=$RUN_TESTS .. && \
make -j4 && \
# ldconfig first: source-installed deps (GTSAM) are not yet in the loader cache.
if [ "$RUN_TESTS" = "1" ]; then ldconfig && ctest --output-on-failure -LE "long|performance"; fi && \
make install && \
cd ../.. && \
rm -rf rtabmap && \
+4
View File
@@ -190,6 +190,10 @@ RUN git clone https://github.com/laurentkneip/opengv.git && \
cd && \
rm -r opengv
# ld.so.conf.d is read in filename order: <arch>-linux-gnu.conf sorts before
# libc.conf (/usr/local/lib) on arm64, so source builds lose to the distro ones.
RUN echo /usr/local/lib > /etc/ld.so.conf.d/00-usr-local.conf && ldconfig
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
# for jetson (https://github.com/introlab/rtabmap/issues/776)
+4
View File
@@ -74,6 +74,10 @@ RUN git clone --branch 4.5.4 https://github.com/opencv/opencv.git && \
cd ../.. && \
rm -rf opencv opencv_contrib
# ld.so.conf.d is read in filename order: <arch>-linux-gnu.conf sorts before
# libc.conf (/usr/local/lib) on arm64, so source builds lose to the distro ones.
RUN echo /usr/local/lib > /etc/ld.so.conf.d/00-usr-local.conf && ldconfig
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
COPY ./docker/jammy-iron/deps/ros_entrypoint.sh /ros_entrypoint.sh
+5 -1
View File
@@ -8,11 +8,15 @@ RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map
# Copy current source code
COPY . /root/rtabmap
ARG RUN_TESTS=0
# Build RTAB-Map project
RUN source /ros_entrypoint.sh && \
cd rtabmap/build && \
cmake -DWITH_OPENGV=ON .. && \
cmake -DWITH_OPENGV=ON -DBUILD_TESTING=$RUN_TESTS .. && \
make -j4 && \
# ldconfig first: source-installed deps (GTSAM) are not yet in the loader cache.
if [ "$RUN_TESTS" = "1" ]; then ldconfig && ctest --output-on-failure -LE "long|performance"; fi && \
make install && \
cd ../.. && \
rm -rf rtabmap && \
+4
View File
@@ -98,6 +98,10 @@ RUN git clone https://github.com/laurentkneip/opengv.git && \
cd && \
rm -r opengv
# ld.so.conf.d is read in filename order: <arch>-linux-gnu.conf sorts before
# libc.conf (/usr/local/lib) on arm64, so source builds lose to the distro ones.
RUN echo /usr/local/lib > /etc/ld.so.conf.d/00-usr-local.conf && ldconfig
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN echo -e '#!/bin/bash\nset -e\n\n# setup ros2 environment\nsource "/opt/ros/humble/setup.bash" --\nexec "$@"' > /ros_entrypoint.sh
+5 -1
View File
@@ -8,11 +8,15 @@ RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map
# Copy current source code
COPY . /root/rtabmap
ARG RUN_TESTS=0
# Build RTAB-Map project
RUN source /ros_entrypoint.sh && \
cd rtabmap/build && \
cmake -DWITH_OPENGV=ON .. && \
cmake -DWITH_OPENGV=ON -DBUILD_TESTING=$RUN_TESTS .. && \
make -j4 && \
# ldconfig first: source-installed deps (GTSAM) are not yet in the loader cache.
if [ "$RUN_TESTS" = "1" ]; then ldconfig && ctest --output-on-failure -LE "long|performance"; fi && \
make install && \
cd ../.. && \
rm -rf rtabmap && \
+4
View File
@@ -118,6 +118,10 @@ RUN git clone https://github.com/laurentkneip/opengv.git && \
cd && \
rm -r opengv
# ld.so.conf.d is read in filename order: <arch>-linux-gnu.conf sorts before
# libc.conf (/usr/local/lib) on arm64, so source builds lose to the distro ones.
RUN echo /usr/local/lib > /etc/ld.so.conf.d/00-usr-local.conf && ldconfig
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN echo -e '#!/bin/bash\nset -e\n\n# setup ros2 environment\nsource "/opt/ros/kilted/setup.bash" --\nexec "$@"' > /ros_entrypoint.sh
+5 -1
View File
@@ -8,11 +8,15 @@ RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map
# Copy current source code
COPY . /root/rtabmap
ARG RUN_TESTS=0
# Build RTAB-Map project
RUN source /ros_entrypoint.sh && \
cd rtabmap/build && \
cmake -DWITH_OPENGV=ON .. && \
cmake -DWITH_OPENGV=ON -DBUILD_TESTING=$RUN_TESTS .. && \
make -j4 && \
# ldconfig first: source-installed deps (GTSAM) are not yet in the loader cache.
if [ "$RUN_TESTS" = "1" ]; then ldconfig && ctest --output-on-failure -LE "long|performance"; fi && \
make install && \
cd ../.. && \
rm -rf rtabmap && \
+4
View File
@@ -117,6 +117,10 @@ RUN git clone https://github.com/laurentkneip/opengv.git && \
cd && \
rm -r opengv
# ld.so.conf.d is read in filename order: <arch>-linux-gnu.conf sorts before
# libc.conf (/usr/local/lib) on arm64, so source builds lose to the distro ones.
RUN echo /usr/local/lib > /etc/ld.so.conf.d/00-usr-local.conf && ldconfig
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN echo -e '#!/bin/bash\nset -e\n\n# setup ros2 environment\nsource "/opt/ros/jazzy/setup.bash" --\nexec "$@"' > /ros_entrypoint.sh
+5 -1
View File
@@ -8,11 +8,15 @@ RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map
# Copy current source code
COPY . /root/rtabmap
ARG RUN_TESTS=0
# Build RTAB-Map project
RUN source /ros_entrypoint.sh && \
cd rtabmap/build && \
cmake -DWITH_OPENGV=ON .. && \
cmake -DWITH_OPENGV=ON -DBUILD_TESTING=$RUN_TESTS .. && \
make -j4 && \
# ldconfig first: source-installed deps (GTSAM) are not yet in the loader cache.
if [ "$RUN_TESTS" = "1" ]; then ldconfig && ctest --output-on-failure -LE "long|performance"; fi && \
make install && \
cd ../.. && \
rm -rf rtabmap && \
+4
View File
@@ -107,6 +107,10 @@ RUN git clone https://github.com/laurentkneip/opengv.git && \
cd && \
rm -r opengv
# ld.so.conf.d is read in filename order: <arch>-linux-gnu.conf sorts before
# libc.conf (/usr/local/lib) on arm64, so source builds lose to the distro ones.
RUN echo /usr/local/lib > /etc/ld.so.conf.d/00-usr-local.conf && ldconfig
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN echo -e '#!/bin/bash\nset -e\n\n# setup ros2 environment\nsource "/opt/ros/lyrical/setup.bash" --\nexec "$@"' > /ros_entrypoint.sh