diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f2bfd8329..c14cb659b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -814,6 +814,7 @@ IF(NOT MSVC) open_chisel_FOUND OR vins_FOUND OR ov_msckf_FOUND OR + msckf_vio_FOUND OR libpointmatcher_FOUND)) #Newest versions require std11 include(CheckCXXCompilerFlag) @@ -829,6 +830,7 @@ IF(NOT MSVC) ENDIF() ENDIF() + ####### OSX BUNDLE CMAKE_INSTALL_PREFIX ####### IF(APPLE AND BUILD_AS_BUNDLE) IF(Qt6_FOUND OR Qt5_FOUND OR (QT4_FOUND AND QT_QTCORE_FOUND AND QT_QTGUI_FOUND)) @@ -913,9 +915,9 @@ ENDIF(NOT Open3D_FOUND) IF(NOT FastCV_FOUND) SET(FASTCV "//") ENDIF(NOT FastCV_FOUND) -IF(NOT opengv_FOUND) +IF(NOT opengv_FOUND OR NOT WITH_OPENGV) SET(OPENGV "//") -ENDIF(NOT opengv_FOUND) +ENDIF(NOT opengv_FOUND OR NOT WITH_OPENGV) IF(NOT PDAL_FOUND) SET(PDAL "//") ENDIF(NOT PDAL_FOUND) @@ -1459,7 +1461,7 @@ ELSE() MESSAGE(STATUS " With Open3D = NO (Open3D not found)") ENDIF() -IF(opengv_FOUND) +IF(opengv_FOUND AND WITH_OPENGV) MESSAGE(STATUS " With OpenGV ${opengv_VERSION} = YES (License: BSD)") ELSEIF(NOT WITH_OPENGV) MESSAGE(STATUS " With OpenGV = NO (WITH_OPENGV=OFF)") diff --git a/docker/jfr2018/Dockerfile b/docker/jfr2018/Dockerfile index 064334f566..0eab9008ee 100644 --- a/docker/jfr2018/Dockerfile +++ b/docker/jfr2018/Dockerfile @@ -127,8 +127,7 @@ WORKDIR /root/catkin_ws/src RUN /bin/bash -c '. /opt/ros/${ROS_DISTRO}/setup.bash; catkin_init_workspace' RUN git clone https://github.com/tum-vision/dvo_slam.git && cd dvo_slam && git checkout kinetic-devel && rm dvo_slam/package.xml && rm dvo_benchmark/package.xml && rm dvo_ros/package.xml RUN git clone https://github.com/srv/viso2.git && cd viso2 && git checkout kinetic -# msckf: using a patched version to be used outside ros and c++14: -RUN git clone https://github.com/borongyuan/msckf_vio.git && cd msckf_vio && git checkout e69cdb68e9b31a438bbc51bb77cd34fe9b2e80cb +RUN git clone https://github.com/KumarRobotics/msckf_vio.git && cd msckf_vio && git checkout a9386c5 && wget https://gist.githubusercontent.com/matlabbe/f2518d7427e7f6740af2110e540b1f2b/raw/1b7c96b38e063bacfa77408686e4528f3d27af2e/msckf_vio_a9386c5_ros_commented.patch && git apply --ignore-space-change --ignore-whitespace msckf_vio_a9386c5_ros_commented.patch RUN git clone https://github.com/srv/libfovis.git && cd libfovis && git checkout db2fc39451e59317cf8486d92085da1c8e414785 RUN git clone https://github.com/ros-perception/vision_opencv.git && cd vision_opencv && git checkout kinetic RUN git clone https://github.com/laboshinl/loam_velodyne.git && cd loam_velodyne && git checkout a4c364a677647f2a35831439032dc5a58378b3fd diff --git a/docker/jfr2018/latest/Dockerfile b/docker/jfr2018/latest/Dockerfile index f98a2a89d5..9dde6f351f 100644 --- a/docker/jfr2018/latest/Dockerfile +++ b/docker/jfr2018/latest/Dockerfile @@ -138,7 +138,7 @@ RUN git clone https://github.com/tum-vision/dvo_slam.git && cd dvo_slam && git c # VISO2 RUN git clone https://github.com/srv/viso2.git && cd viso2 && git checkout ${ROS_DISTRO} # MSCKF-VIO: using a patched version to be used outside ros and c++14: -RUN git clone https://github.com/borongyuan/msckf_vio.git && cd msckf_vio && git checkout e69cdb68e9b31a438bbc51bb77cd34fe9b2e80cb +RUN git clone https://github.com/borongyuan/msckf_vio.git && cd msckf_vio && git checkout 916c917e5b481741c60732057f0141e8311962c1 # FOVIS RUN git clone https://github.com/srv/libfovis.git && cd libfovis && git checkout 896acc8425e9fd7c5609153b8bad349ae1abbb50 # LOAM @@ -227,21 +227,55 @@ ENV ORB_SLAM2_ROOT_DIR /root/ORB_SLAM2 WORKDIR /root +# To make "source" working +RUN rm /bin/sh && ln -s /bin/bash /bin/sh + +# Need cmake >=3.10 +RUN apt update && apt install -y wget && apt-get clean && rm -rf /var/lib/apt/lists/ && \ + wget -nv https://github.com/Kitware/CMake/releases/download/v3.17.0/cmake-3.17.0-Linux-x86_64.tar.gz && \ + tar -xzf cmake-3.17.0-Linux-x86_64.tar.gz && \ + rm cmake-3.17.0-Linux-x86_64.tar.gz &&\ + ln -s ~/cmake-3.17.0-Linux-x86_64/bin/cmake ~/cmake + # Copy current source code COPY . /root/rtabmap # Patch for OpenCV 3.1 -RUN cd rtabmap && wget https://gist.githubusercontent.com/matlabbe/ab42b8ea5d5902ffc6177539b98d9d51/raw/87520db7a54bf2673be3fc898578cd6348dd66f0/rtabmap_opencv310_backward_compatibility.patch && git apply --ignore-space-change --ignore-whitespace rtabmap_opencv310_backward_compatibility.patch +RUN cd rtabmap && git apply --ignore-space-change --ignore-whitespace docker/jfr2018/rtabmap_opencv310_backward_compatibility.patch # Build RTAB-Map (using standard g2o, then a version for orbslam2, which uses its own g2o version) RUN cp -r rtabmap rtabmap_os2 && cp -r rtabmap rtabmap_msckf && cp -r rtabmap rtabmap_loam -RUN /bin/bash -c '. /root/catkin_ws/devel/setup.bash; cd rtabmap ; cd build ; cmake -DWITH_FOVIS=ON -DWITH_VISO2=ON -DWITH_DVO=ON -DWITH_OKVIS=ON -DWITH_VINS=ON -DWITH_OPENVINS=ON .. ; make -j3 ; make install ; rm -rf * ; ldconfig' + +RUN source /root/catkin_ws/devel/setup.bash && \ + cd rtabmap && \ + cd build && \ + ~/cmake -DWITH_FOVIS=ON -DWITH_VISO2=ON -DWITH_DVO=ON -DWITH_OKVIS=ON -DWITH_VINS=ON -DWITH_OPENVINS=ON -DWITH_OPENGV=OFF .. && \ + make -j3 && \ + make install && \ + rm -rf * && \ + ldconfig # Version with orb_slam2 (system g2o disabled) -RUN /bin/bash -c '. /root/catkin_ws/devel/setup.bash; cd rtabmap_os2 ; cd build ; cmake -DWITH_G2O=OFF -DWITH_ORB_SLAM=ON .. ; make -j3 ; rm -rf *' +RUN source /root/catkin_ws/devel/setup.bash && \ + cd rtabmap_os2 && \ + cd build && \ + ~/cmake -DWITH_G2O=OFF -DWITH_ORB_SLAM=ON -DWITH_OPENGV=OFF .. && \ + make -j3 && \ + rm -rf * # rtabmap is crashing if LOAM and MSCKF dependencies are used at the same time, so split them -RUN /bin/bash -c '. /root/catkin_ws/devel/setup.bash; cd rtabmap_loam ;cd build ;cmake -DWITH_LOAM=ON -DWITH_FLOAM=ON .. ;make -j3 ;rm -rf *' -RUN /bin/bash -c '. /root/catkin_ws/devel/setup.bash; cd rtabmap_msckf ;cd build ;cmake -DWITH_MSCKF_VIO=ON .. ;make -j3 ;rm -rf *' +RUN source /root/catkin_ws/devel/setup.bash && \ + cd rtabmap_loam && \ + cd build && \ + ~/cmake -DWITH_LOAM=ON -DWITH_FLOAM=ON -DWITH_OPENGV=OFF .. && \ + make -j3 && \ + rm -rf * +RUN source /root/catkin_ws/devel/setup.bash && \ + cd rtabmap_msckf && \ + git apply --ignore-space-change --ignore-whitespace docker/jfr2018/rtabmap_msckf_ubuntu_16_compatibility.patch && \ + cd build && \ + ~/cmake -DWITH_MSCKF_VIO=ON -DWITH_OPENGV=OFF .. && \ + make -j3 && \ + rm -rf * WORKDIR /root diff --git a/docker/jfr2018/rtabmap_msckf_ubuntu_16_compatibility.patch b/docker/jfr2018/rtabmap_msckf_ubuntu_16_compatibility.patch new file mode 100644 index 0000000000..a396cde070 --- /dev/null +++ b/docker/jfr2018/rtabmap_msckf_ubuntu_16_compatibility.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c14cb659..2c370200 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -830,6 +830,8 @@ IF(NOT MSVC) + ENDIF() + ENDIF() + ++set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fext-numeric-literals") ++ + + ####### OSX BUNDLE CMAKE_INSTALL_PREFIX ####### + IF(APPLE AND BUILD_AS_BUNDLE) diff --git a/docker/jfr2018/rtabmap_opencv310_backward_compatibility.patch b/docker/jfr2018/rtabmap_opencv310_backward_compatibility.patch new file mode 100644 index 0000000000..949906ea10 --- /dev/null +++ b/docker/jfr2018/rtabmap_opencv310_backward_compatibility.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9f2bfd83..65b03eef 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -228,7 +228,7 @@ ENDIF() + set(RTABMAP_QT_VERSION AUTO CACHE STRING "Force a specific Qt version.") + set_property(CACHE RTABMAP_QT_VERSION PROPERTY STRINGS AUTO 4 5 6) + +-FIND_PACKAGE(OpenCV REQUIRED QUIET COMPONENTS core calib3d imgproc highgui stitching photo video videoio OPTIONAL_COMPONENTS aruco xfeatures2d nonfree gpu cudafeatures2d) ++FIND_PACKAGE(OpenCV QUIET COMPONENTS core calib3d imgproc highgui stitching photo video videoio OPTIONAL_COMPONENTS aruco xfeatures2d nonfree gpu cudafeatures2d) + + IF(WITH_QT) + FIND_PACKAGE(PCL 1.7 REQUIRED QUIET COMPONENTS common io kdtree search surface filters registration sample_consensus segmentation visualization)