feat(slam): add rtabmap_ros
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
# Image: introlab3it/rtabmap:noble
|
||||
|
||||
FROM introlab3it/rtabmap:noble-deps
|
||||
|
||||
# Will be used to read/store databases on host
|
||||
RUN mkdir -p /root/Documents/RTAB-Map && chmod 777 /root/Documents/RTAB-Map
|
||||
|
||||
# Copy current source code
|
||||
COPY . /root/rtabmap
|
||||
|
||||
# Build RTAB-Map project
|
||||
RUN source /ros_entrypoint.sh && \
|
||||
cd rtabmap/build && \
|
||||
cmake -DWITH_OPENGV=ON .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd ../.. && \
|
||||
rm -rf rtabmap && \
|
||||
ldconfig
|
||||
|
||||
@@ -0,0 +1,206 @@
|
||||
# Image: introlab3it/rtabmap:android-noble-deps
|
||||
|
||||
FROM ubuntu:24.04
|
||||
|
||||
# Install build dependencies
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends apt-utils
|
||||
RUN apt-get update && apt-get install -y \
|
||||
git unzip wget ant cmake \
|
||||
g++ lib32stdc++6 lib32z1 \
|
||||
software-properties-common \
|
||||
freeglut3-dev \
|
||||
openjdk-8-jdk openjdk-8-jre \
|
||||
curl
|
||||
|
||||
ENV ANDROID_HOME=/opt/android-sdk
|
||||
ENV PATH=$PATH:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/tools:/opt/android-sdk/platform-tools:/opt/android-sdk/ndk/21.4.7075529
|
||||
ENV ANDROID_NDK=/opt/android-sdk/ndk/21.4.7075529
|
||||
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
|
||||
|
||||
WORKDIR /root/
|
||||
|
||||
# Setup android sdk
|
||||
RUN wget -nv https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip && \
|
||||
unzip -qq commandlinetools-linux-7583922_latest.zip && \
|
||||
rm commandlinetools-linux-7583922_latest.zip && \
|
||||
mkdir $ANDROID_HOME && \
|
||||
mkdir $ANDROID_HOME/cmdline-tools && \
|
||||
mv cmdline-tools $ANDROID_HOME/cmdline-tools/latest
|
||||
# We should use build-tools <=30 to avoid dx missing error
|
||||
RUN echo y | sdkmanager --install "platform-tools" "platforms;android-23" "platforms;android-24" "platforms;android-26" "platforms;android-30" "build-tools;30.0.3" "ndk;21.4.7075529"
|
||||
|
||||
# we need <=r25 tools to use "android" command (now deprecated)
|
||||
RUN wget -nv http://dl-ssl.google.com/android/repository/tools_r25.2.5-linux.zip && \
|
||||
unzip -qq tools_r25.2.5-linux.zip && \
|
||||
mv tools $ANDROID_HOME/. && \
|
||||
rm tools_r25.2.5-linux.zip
|
||||
|
||||
##############
|
||||
# Dependencies (took from docker/bionic/android/deps.bash)
|
||||
##############
|
||||
|
||||
# Install directory for all dependencies
|
||||
RUN mkdir -p /opt/android/arm64-v8a
|
||||
|
||||
# Boost
|
||||
RUN echo "Install boost..." && \
|
||||
wget -nv https://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz && \
|
||||
tar -xzf boost_1_59_0.tar.gz && \
|
||||
cd boost_1_59_0 && \
|
||||
wget -nv https://gist.github.com/matlabbe/0bce8feeb73a499a76afbbcc5c687221/raw/1733253195bc4d4d9b7f9eda1e60628dc1e51429/BoostConfig.cmake.in && \
|
||||
wget -nv https://gist.github.com/matlabbe/0bce8feeb73a499a76afbbcc5c687221/raw/1733253195bc4d4d9b7f9eda1e60628dc1e51429/CMakeLists.txt && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NDK=$ANDROID_NDK -DANDROID_NATIVE_API_LEVEL=23 -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a -DCMAKE_FIND_ROOT_PATH="/opt/android/arm64-v8a/bin;/opt/android/arm64-v8a;/opt/android/arm64-v8a/share" .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd /root && \
|
||||
rm -r boost_1_59_0.tar.gz boost_1_59_0
|
||||
|
||||
# eigen
|
||||
RUN echo "Install eigen..." && \
|
||||
curl -L https://gitlab.com/libeigen/eigen/-/archive/3.3.9/eigen-3.3.9.tar.gz -o 3.3.9.tar.gz && \
|
||||
tar -xzf 3.3.9.tar.gz && \
|
||||
cd eigen-3.3.9 && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NDK=$ANDROID_NDK -DANDROID_NATIVE_API_LEVEL=23 -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a -DCMAKE_FIND_ROOT_PATH="/opt/android/arm64-v8a/bin;/opt/android/arm64-v8a;/opt/android/arm64-v8a/share" .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd /root && \
|
||||
rm -r 3.3.9.tar.gz eigen-3.3.9
|
||||
|
||||
# FLANN
|
||||
RUN echo "Install flann..." && \
|
||||
git clone -b 1.8.4 https://github.com/mariusmuja/flann.git && \
|
||||
cd flann && \
|
||||
wget -nv https://gist.githubusercontent.com/matlabbe/cacff9f8271d0c42acd622939a26cab4/raw/85baf4927b32844ebd7f8eccce421bde181cd190/flann_1_8_4_android_fix.patch && \
|
||||
git apply flann_1_8_4_android_fix.patch && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NDK=$ANDROID_NDK -DANDROID_NATIVE_API_LEVEL=23 -DBUILD_SHARED_LIBS=OFF -DBUILD_PYTHON_BINDINGS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a -DCMAKE_FIND_ROOT_PATH="/opt/android/arm64-v8a/bin;/opt/android/arm64-v8a;/opt/android/arm64-v8a/share" .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd /root && \
|
||||
rm -rf flann
|
||||
|
||||
# GTSAM
|
||||
RUN echo "Install gtsam..." && \
|
||||
git clone https://bitbucket.org/gtborg/gtsam.git && \
|
||||
cd gtsam && \
|
||||
git checkout fbb9d3bdda8b88df51896bc401bfd170573e66f5 && \
|
||||
wget -nv https://gist.github.com/matlabbe/726b490c658afd3293f4b3f2f501b863/raw/df09fc8e238a495d66b062d92dc1c1fb20a581e8/gtsam_GKlib_android_fix.patch && \
|
||||
git apply gtsam_GKlib_android_fix.patch && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NDK=$ANDROID_NDK -DANDROID_NATIVE_API_LEVEL=23 -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a -DCMAKE_FIND_ROOT_PATH="/opt/android/arm64-v8a/bin;/opt/android/arm64-v8a;/opt/android/arm64-v8a/share" -DMETIS_SHARED=OFF -DGTSAM_BUILD_STATIC_LIBRARY=ON -DGTSAM_BUILD_TESTS=OFF -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DGTSAM_USE_SYSTEM_EIGEN=ON .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd /root && \
|
||||
rm -rf gtsam
|
||||
|
||||
# g2o
|
||||
RUN echo "Install g2o..." && \
|
||||
git clone https://github.com/RainerKuemmerle/g2o.git && \
|
||||
cd g2o && \
|
||||
git checkout a3f7706bdbb849b2808dc3e1b7aee189f63b498e && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NDK=$ANDROID_NDK -DANDROID_NATIVE_API_LEVEL=23 -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a -DCMAKE_FIND_ROOT_PATH="/opt/android/arm64-v8a/bin;/opt/android/arm64-v8a;/opt/android/arm64-v8a/share" -DBUILD_LGPL_SHARED_LIBS=OFF -DG2O_BUILD_APPS=OFF -DG2O_BUILD_EXAMPLES=OFF -DG2O_USE_OPENGL=OFF .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd /root && \
|
||||
rm -rf g2o
|
||||
|
||||
# VTK
|
||||
RUN echo "Install VTK..." && \
|
||||
git clone https://github.com/Kitware/VTK.git && \
|
||||
cd VTK && \
|
||||
git checkout tags/v8.2.0 && \
|
||||
wget https://gist.github.com/matlabbe/e217259fb8ece9ee6daf5a8f70e896a0/raw/2214b503a537d6431d764526b5b780f07d6f168d/vtk_8_2_0_android_r21_fix.patch && \
|
||||
git apply vtk_8_2_0_android_r21_fix.patch && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -DVTK_ANDROID_BUILD=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a -DANDROID_ARCH_ABI=arm64-v8a -DCMAKE_FIND_ROOT_PATH="/opt/android/arm64-v8a/bin;/opt/android/arm64-v8a;/opt/android/arm64-v8a/share" .. && \
|
||||
make -j4 && \
|
||||
cp -r CMakeExternals/Install/vtk-android/* /opt/android/arm64-v8a/. && \
|
||||
cd /root && \
|
||||
rm -rf VTK
|
||||
|
||||
# PCL
|
||||
RUN echo "Install pcl..." && \
|
||||
git clone https://github.com/PointCloudLibrary/pcl.git && \
|
||||
cd pcl && \
|
||||
git checkout tags/pcl-1.8.0 && \
|
||||
wget https://gist.github.com/matlabbe/41812e50e459b2f27b331a2343569e5d/raw/b2fc0c4d1cfffb3a9f2811abae782e317c539bfb/pcl_1_8_0_vtk_android_support.patch && \
|
||||
git apply pcl_1_8_0_vtk_android_support.patch && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
# do it 2 times because there is a cmake error on the first time and not the second time!?
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NDK=$ANDROID_NDK -DANDROID_NATIVE_API_LEVEL=23 -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a -DCMAKE_FIND_ROOT_PATH="/opt/android/arm64-v8a/bin;/opt/android/arm64-v8a;/opt/android/arm64-v8a/share" -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_tools=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF .. || true && \
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NDK=$ANDROID_NDK -DANDROID_NATIVE_API_LEVEL=23 -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a -DCMAKE_FIND_ROOT_PATH="/opt/android/arm64-v8a/bin;/opt/android/arm64-v8a;/opt/android/arm64-v8a/share" -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_tools=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd /root && \
|
||||
rm -rf pcl
|
||||
|
||||
# make sure opencv is using the shared version of zlib
|
||||
# see https://github.com/android/ndk/issues/1179
|
||||
RUN mv $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libz.a $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/libz.a.back
|
||||
|
||||
# OpenCV
|
||||
RUN echo "Install OpenCV..." && \
|
||||
git clone https://github.com/opencv/opencv_contrib.git && \
|
||||
git clone https://github.com/opencv/opencv.git && \
|
||||
cd opencv_contrib && \
|
||||
git checkout tags/4.5.5 && \
|
||||
cd /root && \
|
||||
cd opencv && \
|
||||
git checkout tags/4.5.5 && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NDK=$ANDROID_NDK -DANDROID_NATIVE_API_LEVEL=23 -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/android/arm64-v8a -DCMAKE_FIND_ROOT_PATH="/opt/android/arm64-v8a/bin;/opt/android/arm64-v8a;/opt/android/arm64-v8a/share" -DOPENCV_EXTRA_MODULES_PATH=/root/opencv_contrib/modules -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DWITH_CUDA=OFF -DBUILD_opencv_structured_light=OFF -DBUILD_ANDROID_PROJECTS=OFF -DOPENCV_ENABLE_NONFREE=ON -DBUILD_ANDROID_EXAMPLES=OFF -DWITH_PROTOBUF=OFF -DBUILD_opencv_stereo=OFF -DBUILD_JAVA=OFF -DWITH_QUIRC=OFF -DBUILD_opencv_js_bindings_generator=OFF -DBUILD_opencv_objc_bindings_generator=OFF -DBUILD_opencv_objdetect=OFF -DBUILD_opencv_xobjdetect=OFF .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd /root && \
|
||||
rm -rf opencv opencv_contrib
|
||||
|
||||
RUN echo "Strip libraries..." && \
|
||||
$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip -g -S -d --strip-debug --verbose /opt/android/arm64-v8a/lib/*.a && \
|
||||
$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip -g -S -d --strip-debug --verbose /opt/android/arm64-v8a/sdk/native/staticlibs/arm64-v8a/*.a
|
||||
|
||||
RUN mkdir /opt/android/lib
|
||||
|
||||
# tango
|
||||
RUN wget 'https://docs.google.com/uc?authuser=0&id=12rHHkYM5k-UnQn-xGXs9JqYWhSXrgJr3&export=download' -O TangoSDK_Ikariotikos_C.zip && \
|
||||
unzip -qq TangoSDK_Ikariotikos_C.zip && \
|
||||
rm TangoSDK_Ikariotikos_C.zip && \
|
||||
cp -r lib_tango_client_api/include/* /opt/android/arm64-v8a/include/. && \
|
||||
cp -r lib_tango_client_api/lib/arm64-v8a/* /opt/android/arm64-v8a/lib/. && \
|
||||
rm -r lib_tango_client_api && \
|
||||
wget 'https://docs.google.com/uc?authuser=0&id=1AqVuEVu5284X6OgrGWu12VTrx4pY99Jb&export=download' -O TangoSupport_Ikariotikos_C.zip && \
|
||||
unzip -qq TangoSupport_Ikariotikos_C.zip && \
|
||||
rm TangoSupport_Ikariotikos_C.zip && \
|
||||
cp -r lib_tango_support_api/include/* /opt/android/arm64-v8a/include/. && \
|
||||
cp -r lib_tango_support_api/lib/arm64-v8a/* /opt/android/arm64-v8a/lib/. && \
|
||||
rm -r lib_tango_support_api && \
|
||||
wget 'https://docs.google.com/uc?authuser=0&id=1s5iPJ7xiridj9Jj--gCy2XiQFniheVm6&export=download' -O TangoSDK_Ikariotikos_Java.jar && \
|
||||
mv TangoSDK_Ikariotikos_Java.jar /opt/android/lib/
|
||||
|
||||
# ARCore
|
||||
RUN wget 'https://docs.google.com/uc?authuser=0&id=1VsibeqRYpS5pjmrG-vYTXyiPg8kbIfVN&export=download' -O arcore.zip && \
|
||||
unzip -qq arcore.zip && \
|
||||
rm arcore.zip && \
|
||||
cp -r arcore1_18/include/* /opt/android/arm64-v8a/include/. && \
|
||||
cp -r arcore1_18/arm64-v8a/* /opt/android/arm64-v8a/lib/. && \
|
||||
cp arcore1_18/*.jar /opt/android/lib/ && \
|
||||
rm -r arcore1_18
|
||||
|
||||
# AREngine
|
||||
RUN wget 'https://docs.google.com/uc?authuser=0&id=1rdaD2Z1QBv-SUeUy0oBmg3C2odfxTHgR&export=download' -O arengine.zip && \
|
||||
unzip -qq arengine.zip && \
|
||||
rm arengine.zip && \
|
||||
cp -r arengine/include/* /opt/android/arm64-v8a/include/. && \
|
||||
cp -r arengine/arm64-v8a/* /opt/android/arm64-v8a/lib/. && \
|
||||
cp arengine/*.jar /opt/android/lib/ && \
|
||||
rm -r arengine
|
||||
@@ -0,0 +1,13 @@
|
||||
# Image: introlab3it/rtabmap:androidXX
|
||||
|
||||
FROM introlab3it/rtabmap:android-noble-deps
|
||||
|
||||
ARG API_VERSION=23
|
||||
|
||||
# Copy current source code
|
||||
COPY . /root/rtabmap-tango
|
||||
|
||||
WORKDIR /root/rtabmap-tango
|
||||
|
||||
RUN /bin/bash -c "./docker/noble/android/rtabmap_apiXX/rtabmap.bash /opt/android $API_VERSION"
|
||||
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
if [ $# -ne 2 ]; then
|
||||
echo "rtabmap.bash android_install_prefix api_level (23 for tango, 24 for arengine) # Example: build.bash /opt/android 24"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
prefix=$1
|
||||
api=$2
|
||||
|
||||
# copy required jars
|
||||
cp /opt/android/lib/*.jar app/android/libs/.
|
||||
|
||||
# resource tool
|
||||
cd build
|
||||
cmake -DANDROID_PREBUILD=ON ..
|
||||
make
|
||||
|
||||
# rtabmap
|
||||
mkdir arm64-v8a
|
||||
cd arm64-v8a
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NDK=$ANDROID_NDK -DANDROID_NATIVE_API_LEVEL=$api -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix/arm64-v8a -DCMAKE_FIND_ROOT_PATH="$prefix/arm64-v8a/bin;$prefix/arm64-v8a;$prefix/arm64-v8a/share" -DBUILD_EXAMPLES=OFF -DBUILD_TOOLS=OFF -DOpenCV_DIR=$prefix/arm64-v8a/sdk/native/jni ../..
|
||||
make
|
||||
make clean
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
# Image: introlab3it/rtabmap:noble-deps
|
||||
|
||||
FROM ubuntu:24.04
|
||||
|
||||
ARG TARGETPLATFORM
|
||||
ENV TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64}
|
||||
RUN echo "I am building for $TARGETPLATFORM"
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Install ROS2
|
||||
RUN apt update && \
|
||||
apt install software-properties-common -y && \
|
||||
add-apt-repository universe && \
|
||||
apt update && \
|
||||
apt install curl -y && \
|
||||
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg && \
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/
|
||||
|
||||
# Install build dependencies
|
||||
RUN apt-get update && \
|
||||
apt upgrade -y && \
|
||||
apt-get install -y \
|
||||
git \
|
||||
wget \
|
||||
libtbb-dev \
|
||||
libproj-dev \
|
||||
libpcl-dev \
|
||||
liboctomap-dev \
|
||||
libfreenect-dev \
|
||||
ros-jazzy-ros-base \
|
||||
ros-dev-tools \
|
||||
ros-jazzy-cv-bridge \
|
||||
ros-jazzy-image-geometry \
|
||||
ros-jazzy-laser-geometry \
|
||||
ros-jazzy-pcl-conversions \
|
||||
ros-jazzy-rviz-common \
|
||||
ros-jazzy-rviz-rendering \
|
||||
ros-jazzy-rviz-default-plugins \
|
||||
ros-jazzy-pcl-ros \
|
||||
ros-jazzy-imu-filter-madgwick \
|
||||
ros-jazzy-velodyne \
|
||||
ros-jazzy-image-transport \
|
||||
ros-jazzy-octomap-msgs \
|
||||
ros-jazzy-libg2o \
|
||||
ros-jazzy-libpointmatcher \
|
||||
ros-jazzy-qt-gui-cpp \
|
||||
ros-jazzy-diagnostic-updater && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/
|
||||
|
||||
WORKDIR /root/
|
||||
|
||||
# GTSAM (we cannot use ros-jazzy-gtsam on Noble because it is linked to a different internal Eigen version than system one)
|
||||
RUN git clone https://github.com/borglab/gtsam.git && \
|
||||
cd gtsam && \
|
||||
git checkout 4.2.0 && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DGTSAM_USE_SYSTEM_EIGEN=ON .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd && \
|
||||
rm -r gtsam
|
||||
|
||||
# libfreenect2
|
||||
RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then echo "Installing libfreenect2..." && \
|
||||
apt-get update && apt-get install -y mesa-utils xserver-xorg-video-all libusb-1.0-0-dev libturbojpeg0-dev libglfw3-dev && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/ && \
|
||||
git clone https://github.com/OpenKinect/libfreenect2 && \
|
||||
cd libfreenect2 && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Release .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd && \
|
||||
rm -r libfreenect2; fi
|
||||
|
||||
# zed open capture
|
||||
RUN if [ "$TARGETPLATFORM" = "linux/amd64" ]; then echo "Installing zed-open-capture..." && \
|
||||
apt-get update && apt install -y libusb-1.0-0-dev libhidapi-libusb0 libhidapi-dev wget && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/ && \
|
||||
git clone https://github.com/stereolabs/zed-open-capture.git && \
|
||||
cd zed-open-capture && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Release .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd && \
|
||||
rm -r zed-open-capture; fi
|
||||
|
||||
# OpenCV with all modules (same version than distro version to avoid conflicts with cv_bridge ros package)
|
||||
RUN git clone --branch 4.6.0 https://github.com/opencv/opencv.git && \
|
||||
git clone --branch 4.6.0 https://github.com/opencv/opencv_contrib.git && \
|
||||
cd opencv && \
|
||||
sed -i '/#include <libavformat\/avformat.h>/i #include <libavcodec/version.h>' modules/videoio/src/ffmpeg_codecs.hpp && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DWITH_TBB=ON -DWITH_ADE=OFF -DWITH_OPENMP=ON -DBUILD_opencv_python3=OFF -DBUILD_opencv_python_bindings_generator=OFF -DBUILD_opencv_python_tests=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DOPENCV_ENABLE_NONFREE=ON -DOPENCV_EXTRA_MODULES_PATH=/root/opencv_contrib/modules .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd ../.. && \
|
||||
rm -rf opencv opencv_contrib
|
||||
|
||||
RUN git clone https://github.com/laurentkneip/opengv.git && \
|
||||
cd opengv && \
|
||||
git checkout 91f4b19c73450833a40e463ad3648aae80b3a7f3 && \
|
||||
wget https://gist.githubusercontent.com/matlabbe/a412cf7c4627253874f81a00745a7fbb/raw/accc3acf465d1ffd0304a46b17741f62d4d354ef/opengv_disable_march_native.patch && \
|
||||
git apply opengv_disable_march_native.patch && \
|
||||
mkdir build && \
|
||||
cd build && \
|
||||
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF .. && \
|
||||
make -j4 && \
|
||||
make install && \
|
||||
cd && \
|
||||
rm -r opengv
|
||||
|
||||
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
|
||||
RUN chmod +x /ros_entrypoint.sh
|
||||
ENTRYPOINT [ "/ros_entrypoint.sh" ]
|
||||
|
||||
# ros2 seems not sourcing by default its multi-arch folders
|
||||
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/ros/jazzy/lib/x86_64-linux-gnu:/opt/ros/jazzy/lib/aarch64-linux-gnu
|
||||
|
||||
# for jetson (https://github.com/introlab/rtabmap/issues/776)
|
||||
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/aarch64-linux-gnu/tegra
|
||||
|
||||
Reference in New Issue
Block a user