diff --git a/Dockerfile b/Dockerfile index e4e3d78..0ee0fe2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,8 +10,9 @@ # changes — so the two drift apart silently. They did: the IMU-less calib fix # was in this tree but not in the base's binary, and every Gemini episode # aborted (SIGABRT, surfacing as rc=-6) in a Space whose source had the fix. -# Compiling from the deployed tree costs ~10 s and makes the binary match the -# source by construction. +# The base was rebuilt (:2026-10-20, now :latest) and matches the source again, +# but nothing keeps it that way. Compiling from the deployed tree costs ~10 s +# and makes the binary match the source by construction. FROM pollenrobotics/grabette-vslam USER root diff --git a/grabette-postprocess/README.md b/grabette-postprocess/README.md index 1d6f750..814ec05 100644 --- a/grabette-postprocess/README.md +++ b/grabette-postprocess/README.md @@ -51,13 +51,18 @@ The SLAM step requires Docker. The image is published, so pull it: docker pull pollenrobotics/grabette-vslam ``` -Pin `:2026-07-22` instead of `:latest` when a result has to stay comparable. +It is multi-arch (amd64 + arm64), so it runs natively on Apple Silicon. +Pin `:2026-10-20` instead of `:latest` when a result has to stay comparable +(`:2026-07-22` predates IMU-less camera support and aborts on Gemini episodes). To build it yourself (Dockerfile + `offline_vslam.cpp` are both in the repo): ```bash docker build -t pollenrobotics/grabette-vslam docker/vslam/ ``` +Add `--build-arg BUILD_JOBS=4` if the RTAB-Map compile runs out of memory +(e.g. in Docker Desktop's default 8 GB VM). + ## Quick start The pipeline expects `-i` to point at a **dataset directory** containing one or diff --git a/grabette-postprocess/docker/vslam/Dockerfile b/grabette-postprocess/docker/vslam/Dockerfile index 2ffbaab..38c040e 100644 --- a/grabette-postprocess/docker/vslam/Dockerfile +++ b/grabette-postprocess/docker/vslam/Dockerfile @@ -17,6 +17,9 @@ RUN apt-get update \ && rm -rf /var/lib/apt/lists/* ARG RTABMAP_VERSION=0.23.1 +# Parallel compile jobs (default: all cores). Each job can take >1 GB, so lower +# it on a small VM, e.g. --build-arg BUILD_JOBS=4 in an 8 GB Docker Desktop. +ARG BUILD_JOBS RUN git clone --depth 1 --branch ${RTABMAP_VERSION} \ https://github.com/introlab/rtabmap.git /tmp/rtabmap \ && cmake -S /tmp/rtabmap -B /tmp/rtabmap/build \ @@ -24,7 +27,7 @@ RUN git clone --depth 1 --branch ${RTABMAP_VERSION} \ -DBUILD_APP=OFF \ -DBUILD_EXAMPLES=OFF \ -DBUILD_TOOLS=OFF \ - && cmake --build /tmp/rtabmap/build --parallel $(nproc) \ + && cmake --build /tmp/rtabmap/build --parallel ${BUILD_JOBS:-$(nproc)} \ && cmake --install /tmp/rtabmap/build \ && ldconfig \ && rm -rf /tmp/rtabmap