|
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 |
|
Administrator
|
Not sure what happened. Make sure the database is not deleted when restarting in localization mode (the -d or --delete_db_on_start argument to rtabmap node). It should normally work out-of-the-box, like in this Turtlebot3 Nav2, 2D LiDAR and RGB-D SLAM example. # Mapping session: ros2 launch rtabmap_demos turtlebot3_sim_rgbd_scan_demo.launch.py # Localization session: ros2 launch rtabmap_demos turtlebot3_sim_rgbd_scan_demo.launch.py localization:=true Loop closure detection is done by RTAB-Map approach... and yes, it is the same name than what is RTAB-Map now (original paper at IROS 2011, more papers at the top of the project's page). In general terms, it is an incremental Bag-of-Words (BoW) loop closure detection approach, using BRIEF descriptors now by default for convenience, though original benchmark was done with non-free SURF features. It was created following FAB-Map work (2009) and highly inspired from this Adrien Angeli's work (2008), though before DBoW existed. If you are not using lidar (ICP related stuff), libnabo/libpointmatcher are not necessary (however if you are using lidar, highly recommended to keep). Flann is a required dependency of PCL, for all point cloud search filtering algorithms. PCL is required by rtabmap for many point cloud filtering approaches, and cannot be compiled without it. cheers, Mathieu |
| Free forum by Nabble | Edit this page |
