Building RTABMap from Source but Loop Closures are not being Detected

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Building RTABMap from Source but Loop Closures are not being Detected

Kameel Amareen
This post was updated on .
Hello Mathieu Labbé ! Wishing you a great new year

I am building RTABMap's Core and all its Dependencies from Source as I want to statically link all dependencies into the Core library, I was successful with the following dependencies:

External Dependencies:
* boost-1.83.0
* eigen-3.4.0
* yaml-cpp-0.6.0
* libnabo-1.0.7
* libpointmatcher-1.4.0
* zlib-1.2.11
* flann-1.9.1 # not flann-1.9.2 used by due to lz4 library building bugs
* pcl-1.13.1
* gtsam-4.2.0-ros    # Using gtsam for optimization - g2o caused issues
* opencv-4.9.0

Where the build arguments for some of the dependencies are as follows:
1) flann-1.9.1
* -D USE_MPI=OFF

2) libpointmatcher-1.4.0
* -D USE_OPEN_MP=OFF

3) PCL
* -D WITH_VTK=OFF
* -D WITH_OPENGL=OFF
* -D WITH_QT=OFF
* -D WITH_OPENMP=OFF
* -D WITH_LIBUSB=OFF
* -D WITH_PNG=OFF
* -D WITH_VTK=OFF
* -D WITH_PCAP=OFF
* -D PCL_ENABLE_MARCH_NATIVE=False
* -D PCL_ENABLE_MARCHNATIVE=False
* -D PCL_ENABLE_SSE=False

And the CMAKELISTS Settings of Core is as such:
####### DEPENDENCIES #######
IF(MOBILE_BUILD)
option(WITH_QT            "Include Qt support"                   OFF)
ELSE()
option(WITH_QT            "Include Qt support"                   OFF)    # Turned OFF
ENDIF()
option(WITH_ORB_OCTREE    "Include ORB Octree feature support"   ON)
option(WITH_TORCH         "Include Torch support (SuperPoint)"   OFF)
option(WITH_PYTHON        "Include Python3 support (PyMatcher, PyDetector)"  OFF)
option(WITH_PYTHON_THREADING  "Use more than one Python interpreter."  OFF)
option(WITH_PDAL          "Include PDAL support"                 ON)
option(WITH_FREENECT      "Include Freenect support"             OFF)   # Turned OFF
option(WITH_FREENECT2     "Include Freenect2 support"            OFF)   # Turned OFF
option(WITH_K4W2          "Include Kinect for Windows v2 support" OFF)  # Turned OFF
option(WITH_K4A           "Include Kinect for Azure support"     OFF)   # Turned OFF
option(WITH_OPENNI        "Include OpenNI support"               OFF)    # Turned OFF
option(WITH_OPENNI2       "Include OpenNI2 support"              OFF)    # Turned OFF
option(WITH_DC1394        "Include dc1394 support"               ON)
option(WITH_G2O           "Include g2o support"                  ON)
option(WITH_GTSAM         "Include GTSAM support"                ON)
option(WITH_TORO          "Include TORO support"                 ON)
option(WITH_CERES         "Include Ceres support"                OFF)
option(WITH_MRPT          "Include MRPT support"                 ON)
option(WITH_VERTIGO       "Include Vertigo support"              ON)
option(WITH_CVSBA         "Include cvsba support"                OFF)
option(WITH_POINTMATCHER  "Include libpointmatcher support"      ON)
option(WITH_CCCORELIB     "Include CCCoreLib support"            OFF)
option(WITH_OPEN3D        "Include Open3D support"               OFF)
option(WITH_LOAM          "Include LOAM support"                 OFF)
option(WITH_FLOAM         "Include FLOAM support"                OFF)
option(WITH_FLYCAPTURE2   "Include FlyCapture2/Triclops support" OFF)   # Turned OFF
option(WITH_ZED           "Include ZED sdk support"              OFF)   # Turned OFF
option(WITH_ZEDOC         "Include ZED Open Capture support"     OFF)   # Turned OFF
option(WITH_REALSENSE     "Include RealSense support"            OFF)   # Turned OFF
option(WITH_REALSENSE_SLAM "Include RealSenseSlam support"       OFF)   # Turned OFF
option(WITH_REALSENSE2    "Include RealSense support"            OFF)   # Turned OFF
option(WITH_MYNTEYE       "Include mynteye-s support"            OFF)   # Turned OFF
option(WITH_DEPTHAI       "Include depthai-core support"         OFF)
option(WITH_XVSDK         "Include XVisio SDK support"           OFF)
option(WITH_OCTOMAP       "Include OctoMap support"              ON)
option(WITH_GRIDMAP       "Include GridMap support"              ON)
option(WITH_CPUTSDF       "Include CPUTSDF support"              OFF)
option(WITH_OPENCHISEL    "Include open_chisel support"          OFF)
option(WITH_ALICE_VISION  "Include AliceVision support"          OFF)
option(WITH_FOVIS         "Include FOVIS supp++ort"                OFF)
option(WITH_VISO2         "Include VISO2 support"                OFF)
option(WITH_DVO           "Include DVO support"                  OFF)
option(WITH_ORB_SLAM      "Include ORB_SLAM2 or ORB_SLAM3  support" OFF)
option(WITH_OKVIS         "Include OKVIS support"                OFF)
option(WITH_MSCKF_VIO     "Include MSCKF_VIO support"            OFF)
option(WITH_VINS          "Include VINS-Fusion support"          OFF)
option(WITH_OPENVINS      "Include OpenVINS support"             OFF)
option(WITH_MADGWICK      "Include Madgwick IMU filtering support" OFF)  # Turned OFF
option(WITH_FASTCV        "Include FastCV support"               ON)
option(WITH_OPENMP        "Include OpenMP support"               OFF)       # Turned OFF
option(WITH_OPENGV        "Include OpenGV support"               OFF)       # Turned OFF
IF(MOBILE_BUILD)
option(PCL_OMP            "With PCL OMP implementations"         OFF)
ELSE()
option(PCL_OMP            "With PCL OMP implementations"         ON)
ENDIF()

And the following Build Flags: -DWITH_G2O=OFF -DCMAKE_IGNORE_PREFIX_PATH=/usr/local -DBUILD_TOOLS=OFF -DWITH_GRIDMAP=OFF -DWITH_OCTOMAP=OFF

I have managed to run RTABMAP SLAM Node that uses this Compiled Core and an RTABMAP database was generated, which was investigated on a separate Laptop that had RTABMAP ROS installed


This screenshot shows that Visual Features have been extracted.

Attached are the Node and .ini file used when mapping
mapping.ini
rtabmap_slam.yaml

When turning off incremental mapping (to get into localization mode and while using init with all Nodes to Working memory) and loading the Database, moving the camera back to the positions seen while mapping does NOT trigger ANY loop closure detections nor trials (logs does not show Loop Closure Rejected)

I am wondering on why is that the case ? Which packages are used for Loop Closure detection ?

I would also be thankful if you could shed some insights on the use of following libraries and how are they used in RTABMAP ?
* PCL
* Flann
* libpointermatcher
* libnabo

Assuming that I need only RTABMAP SLAM , can any of the previous libraries be dismissed ?

Your assistance is highly appreciated