From eaafe91adeb0d6a0221a85f2334b3013bde73337 Mon Sep 17 00:00:00 2001 From: matlabbe Date: Tue, 21 Mar 2017 10:35:46 -0400 Subject: [PATCH] Docker: added Dockerfile for android --- docker/xenial/Dockerfile | 3 +- docker/xenial/Makefile | 19 ---- docker/xenial/android/Dockerfile | 6 + docker/xenial/android/install_deps.bash | 145 ++++++++++++++++++++++++ docker/xenial/android/tango/Dockerfile | 9 ++ docker/xenial/android/tango/build.bash | 22 ++++ 6 files changed, 184 insertions(+), 20 deletions(-) delete mode 100644 docker/xenial/Makefile create mode 100644 docker/xenial/android/Dockerfile create mode 100644 docker/xenial/android/install_deps.bash create mode 100644 docker/xenial/android/tango/Dockerfile create mode 100644 docker/xenial/android/tango/build.bash diff --git a/docker/xenial/Dockerfile b/docker/xenial/Dockerfile index 2f81b6e1..e7eef500 100644 --- a/docker/xenial/Dockerfile +++ b/docker/xenial/Dockerfile @@ -8,7 +8,8 @@ RUN apt-get update && apt-get install -y \ git \ cmake \ libproj-dev \ - libqt5svg5-dev + libqt5svg5-dev \ + software-properties-common # Clone source code WORKDIR /root/ diff --git a/docker/xenial/Makefile b/docker/xenial/Makefile deleted file mode 100644 index a271daf3..00000000 --- a/docker/xenial/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -all: help - -help: - @echo "" - @echo "-- Help Menu" - @echo "" - @echo " 1. make build - build images" - @echo " 1. make pull - pull images" - @echo " 1. make clean - remove images" - @echo "" - -build: - @docker build --tag=rtabmap . - -pull: - @docker pull rtabmap - -clean: - @docker rmi -f rtabmap diff --git a/docker/xenial/android/Dockerfile b/docker/xenial/android/Dockerfile new file mode 100644 index 00000000..708dd16f --- /dev/null +++ b/docker/xenial/android/Dockerfile @@ -0,0 +1,6 @@ +FROM introlab3it/rtabmap + +WORKDIR /root/ +ADD install_deps.bash /root/install_deps.bash +RUN chmod +x install_deps.bash +RUN /bin/bash -c "./install_deps.bash" \ No newline at end of file diff --git a/docker/xenial/android/install_deps.bash b/docker/xenial/android/install_deps.bash new file mode 100644 index 00000000..3eddaea9 --- /dev/null +++ b/docker/xenial/android/install_deps.bash @@ -0,0 +1,145 @@ +#!/bin/bash + +# Setup java 1.8 +apt-get update +apt-get install -y --no-install-recommends apt-utils +apt-get install -y unzip wget ant +apt-get install -y default-jre default-jdk + +# Setup android sdk +export ANDROID_HOME="/opt/android-sdk" +export PATH="${PATH}:${ANDROID_HOME}/tools/:${ANDROID_HOME}/platform-tools/" +wget https://dl.google.com/android/repository/tools_r25.2.3-linux.zip +unzip -qq tools_r25.2.3-linux.zip +rm tools_r25.2.3-linux.zip +mkdir ${ANDROID_HOME} +mv tools ${ANDROID_HOME}/. +#android list sdk --all --extended +echo y | android update sdk --no-ui --all --filter platform-tools,android-19,build-tools-19.1.0 + +# Setup android ndk +wget https://dl.google.com/android/repository/android-ndk-r14-linux-x86_64.zip +unzip -qq android-ndk-r14-linux-x86_64.zip +rm android-ndk-r14-linux-x86_64.zip +mv android-ndk-r14 /opt/. +export ANDROID_NATIVE_API_LEVEL=android-19 +export ANDROID_NDK=/opt/android-ndk-r14 +export PATH="${PATH}:${ANDROID_NDK}" + +# Install directory for all dependencies +mkdir -p android/share +wget https://github.com/introlab/rtabmap/raw/master/cmake_modules/android.toolchain.cmake +mv android.toolchain.cmake android/share/. + +# Boost +wget 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 https://gist.github.com/matlabbe/0bce8feeb73a499a76afbbcc5c687221/raw/489ff2869eccd6f8d03ffb9090ef839108762741/BoostConfig.cmake.in +wget https://gist.github.com/matlabbe/0bce8feeb73a499a76afbbcc5c687221/raw/e7fbf0e301cfea417a7aa69989a761a4de08b8c3/CMakeLists.txt +mkdir build +cd build +cmake -DCMAKE_TOOLCHAIN_FILE=~/android/share/android.toolchain.cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/android .. +make +make install +cd +rm -r boost_1_59_0.tar.gz boost_1_59_0 + +# eigen +wget http://bitbucket.org/eigen/eigen/get/3.2.7.tar.gz +tar -xzf 3.2.7.tar.gz +cd eigen-eigen-b30b87236a1b +mkdir build +cd build +cmake -DCMAKE_TOOLCHAIN_FILE=~/android/share/android.toolchain.cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/android .. +make +make install +cd +rm -r 3.2.7.tar.gz eigen-eigen-b30b87236a1b + +# FLANN +wget http://www.cs.ubc.ca/research/flann/uploads/FLANN/flann-1.8.4-src.zip +unzip -qq flann-1.8.4-src.zip +cd flann-1.8.4-src +mkdir build +cd build +cmake -DCMAKE_TOOLCHAIN_FILE=~/android/share/android.toolchain.cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/android .. +make +make install +cd +rm -r flann-1.8.4-src.zip flann-1.8.4-src + +# GTSAM +git clone https://bitbucket.org/gtborg/gtsam.git +cd gtsam +git checkout fbb9d3bdda8b88df51896bc401bfd170573e66f5 +# patch +wget 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/share/android.toolchain.cmake -DMETIS_SHARED=OFF -DGTSAM_BUILD_STATIC_LIBRARY=ON -DGTSAM_BUILD_TESTS=OFF -DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/android .. +make +make install +cd +rm -r gtsam + +# g2o +git clone https://github.com/RainerKuemmerle/g2o.git +cd g2o +mkdir build +cd build +cmake -DCMAKE_TOOLCHAIN_FILE=~/android/share/android.toolchain.cmake -DBUILD_LGPL_SHARED_LIBS=OFF -DG2O_BUILD_APPS=OFF -DG2O_BUILD_EXAMPLES=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/android .. +make +make install +cd +rm -r g2o + + +#CMake 3.7 for VTK +wget https://cmake.org/files/v3.7/cmake-3.7.2-Linux-x86_64.tar.gz +tar -xzf cmake-3.7.2-Linux-x86_64.tar.gz +rm cmake-3.7.2-Linux-x86_64.tar.gz + +# VTK +git clone https://github.com/Kitware/VTK.git +cd VTK +git checkout tags/v7.1.1 +mkdir build +cd build +~/cmake-3.7.2-Linux-x86_64/bin/cmake -DBUILD_EXAMPLES=OFF -DBUILD_TESTING=OFF -DVTK_ANDROID_BUILD=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/android .. +make +cp -r CMakeExternals/Install/vtk-android/* ~/android/. +cd +rm -r VTK cmake-3.7.2-Linux-x86_64 + +# PCL +git clone https://github.com/PointCloudLibrary/pcl.git +cd pcl +git checkout tags/pcl-1.8.0 +# patch +wget https://gist.github.com/matlabbe/41812e50e459b2f27b331a2343569e5d/raw/b97cf6dda9aa9487ee75a3cc4e8826b216a1ad06/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/share/android.toolchain.cmake -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/android .. +cmake -DCMAKE_TOOLCHAIN_FILE=~/android/share/android.toolchain.cmake -DBUILD_apps=OFF -DBUILD_examples=OFF -DBUILD_tools=OFF -DBUILD_visualization=OFF -DBUILD_tracking=OFF -DBUILD_people=OFF -DBUILD_global_tests=OFF -DWITH_QT=OFF -DWITH_OPENGL=OFF -DWITH_VTK=ON -DPCL_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$HOME/android .. +make +make install +cd +rm -r pcl + +# OpenCV +wget https://downloads.sourceforge.net/project/opencvlibrary/opencv-android/3.2.0/opencv-3.2.0-android-sdk.zip +unzip -qq opencv-3.2.0-android-sdk.zip +rm opencv-3.2.0-android-sdk.zip +mv OpenCV-android-sdk /opt/. + +# setup environment variables +echo "export ANDROID_HOME=\"/opt/android-sdk\"" >> ~/.bashrc +echo "export PATH=\"${PATH}:${ANDROID_HOME}/tools/:${ANDROID_HOME}/platform-tools/\"" >> ~/.bashrc +echo "export ANDROID_NATIVE_API_LEVEL=android-19" >> ~/.bashrc +echo "export ANDROID_NDK=/opt/android-ndk-r14" >> ~/.bashrc +echo "export PATH=\"${PATH}:${ANDROID_NDK}\"" >> ~/.bashrc +source ~/.bashrc diff --git a/docker/xenial/android/tango/Dockerfile b/docker/xenial/android/tango/Dockerfile new file mode 100644 index 00000000..79dc5b6a --- /dev/null +++ b/docker/xenial/android/tango/Dockerfile @@ -0,0 +1,9 @@ +FROM introlab3it:rtabmap-android-deps + +WORKDIR /root/ + +ADD build.bash /root/build.bash +RUN chmod +x build.bash +RUN /bin/bash -c "./build.bash" + +WORKDIR /root/rtabmap-android/build/app/android/bin \ No newline at end of file diff --git a/docker/xenial/android/tango/build.bash b/docker/xenial/android/tango/build.bash new file mode 100644 index 00000000..b47ce6a7 --- /dev/null +++ b/docker/xenial/android/tango/build.bash @@ -0,0 +1,22 @@ +#!/bin/bash + +# get rtabmap +git clone https://github.com/introlab/rtabmap.git rtabmap-tango + +# tango +wget https://developers.google.com/tango/downloads/TangoSDK_Farandole_C.zip +unzip -qq TangoSDK_Farandole_C.zip +cp -r lib_tango_client_api/* android/. +rm -r lib_tango_client_api +wget https://developers.google.com/tango/downloads/TangoSupport_Farandole_C.zip +unzip -qq TangoSupport_Farandole_C.zip +cp -r lib_tango_support_api/* android/. +cp -r lib_tango_support_api/lib/* rtabmap-tango/app/android/jni/third-party/lib/. +rm -r lib_tango_support_api +wget https://developers.google.com/tango/downloads/TangoSDK_Farandole_Java.jar +mv TangoSDK_Farandole_Java.jar rtabmap-tango/app/android/libs/. + +# rtabmap +cd rtabmap-tango/build +cmake -DCMAKE_TOOLCHAIN_FILE=../cmake_modules/android.toolchain.cmake -DBUILD_SHARED_LIBS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TOOLS=OFF -DCMAKE_BUILD_TYPE=Release -DOpenCV_DIR=/opt/OpenCV-android-sdk/sdk/native/jni -DCMAKE_INSTALL_PREFIX=$HOME/android .. +make