mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 01:20:25 +08:00
Added ORB_SLAM3 support. IMU Filter: added base frame conversion option. (#698)
Referred issues: #655 https://github.com/introlab/rtabmap_ros/issues/492 Note: IMU not supported yet with ORB_SLAM3. Commits: * Added orbslam3 support. UI-Source->IMU filtering: Added base frame conversion option of IMU data to uniformize yaw initialization. Madgwick: fixed yaw initialization accordingly to Z acc. * fixed regression build error with ORB_SLAM2 * Renamed OdometryORBSLAM2 to OdometryORBSLAM (can be 2 or 3 now)
This commit is contained in:
53
cmake_modules/FindORB_SLAM.cmake
Normal file
53
cmake_modules/FindORB_SLAM.cmake
Normal file
@@ -0,0 +1,53 @@
|
||||
# - Find ORB_SLAM2 OR ORB_SLAM3
|
||||
#
|
||||
# It sets the following variables:
|
||||
# ORB_SLAM_FOUND - Set to false, or undefined, if ORB_SLAM isn't found.
|
||||
# ORB_SLAM_INCLUDE_DIRS - The ORB_SLAM include directory.
|
||||
# ORB_SLAM_LIBRARIES - The ORB_SLAM library to link against.
|
||||
# ORB_SLAM_VERSION - The ORB_SLAM major version.
|
||||
#
|
||||
# Set ORB_SLAM_ROOT_DIR environment variable as the path to ORB_SLAM2 or ORB_SLAM3 root folder.
|
||||
|
||||
find_path(ORB_SLAM_INCLUDE_DIR NAMES System.h PATHS $ENV{ORB_SLAM_ROOT_DIR}/include)
|
||||
find_library(ORB_SLAM2_LIBRARY NAMES ORB_SLAM2 PATHS $ENV{ORB_SLAM_ROOT_DIR}/lib)
|
||||
find_library(ORB_SLAM3_LIBRARY NAMES ORB_SLAM3 PATHS $ENV{ORB_SLAM_ROOT_DIR}/lib)
|
||||
find_path(g2o_INCLUDE_DIR NAMES g2o/core/sparse_optimizer.h PATHS $ENV{ORB_SLAM_ROOT_DIR}/Thirdparty/g2o NO_DEFAULT_PATH)
|
||||
find_library(g2o_LIBRARY NAMES g2o PATHS $ENV{ORB_SLAM_ROOT_DIR}/Thirdparty/g2o/lib NO_DEFAULT_PATH)
|
||||
find_library(DBoW2_LIBRARY NAMES DBoW2 PATHS $ENV{ORB_SLAM_ROOT_DIR}/Thirdparty/DBoW2/lib NO_DEFAULT_PATH)
|
||||
|
||||
IF(ORB_SLAM2_LIBRARY)
|
||||
SET(ORB_SLAM_VERSION 2)
|
||||
SET(ORB_SLAM_LIBRARY ${ORB_SLAM2_LIBRARY})
|
||||
ELSEIF(ORB_SLAM3_LIBRARY)
|
||||
SET(ORB_SLAM_VERSION 3)
|
||||
SET(ORB_SLAM_LIBRARY ${ORB_SLAM3_LIBRARY})
|
||||
ENDIF()
|
||||
|
||||
IF (ORB_SLAM_INCLUDE_DIR AND ORB_SLAM_LIBRARY AND DBoW2_LIBRARY AND g2o_INCLUDE_DIR AND g2o_LIBRARY)
|
||||
SET(ORB_SLAM_FOUND TRUE)
|
||||
SET(ORB_SLAM_INCLUDE_DIRS ${ORB_SLAM_INCLUDE_DIR} ${ORB_SLAM_INCLUDE_DIR}/CameraModels ${g2o_INCLUDE_DIR} $ENV{ORB_SLAM_ROOT_DIR})
|
||||
SET(ORB_SLAM_LIBRARIES ${g2o_LIBRARY} ${ORB_SLAM_LIBRARY} ${DBoW2_LIBRARY})
|
||||
ENDIF (ORB_SLAM_INCLUDE_DIR AND ORB_SLAM_LIBRARY AND DBoW2_LIBRARY AND g2o_INCLUDE_DIR AND g2o_LIBRARY)
|
||||
|
||||
FIND_PACKAGE(Pangolin QUIET)
|
||||
IF(NOT Pangolin_FOUND)
|
||||
SET(ORB_SLAM_FOUND FALSE)
|
||||
MESSAGE(STATUS "Found ORB_SLAM but not Pangolin, disabling ORB_SLAM.")
|
||||
ELSE()
|
||||
MESSAGE(STATUS "Found Pangolin: ${Pangolin_INCLUDE_DIRS}")
|
||||
SET(ORB_SLAM_INCLUDE_DIRS ${ORB_SLAM_INCLUDE_DIRS} ${Pangolin_INCLUDE_DIRS})
|
||||
SET(ORB_SLAM_LIBRARIES ${ORB_SLAM_LIBRARIES} ${Pangolin_LIBRARIES})
|
||||
ENDIF()
|
||||
|
||||
IF (ORB_SLAM_FOUND)
|
||||
# show which ORB_SLAM was found only if not quiet
|
||||
IF (NOT ORB_SLAM_FIND_QUIETLY)
|
||||
MESSAGE(STATUS "Found ORB_SLAM${ORB_SLAM_VERSION}: ${ORB_SLAM_LIBRARIES}")
|
||||
ENDIF (NOT ORB_SLAM_FIND_QUIETLY)
|
||||
ELSE (ORB_SLAM_FOUND)
|
||||
# fatal error if ORB_SLAM is required but not found
|
||||
IF (ORB_SLAM_FIND_REQUIRED)
|
||||
MESSAGE(FATAL_ERROR "Could not find ORB_SLAM")
|
||||
ENDIF (ORB_SLAM_FIND_REQUIRED)
|
||||
ENDIF (ORB_SLAM_FOUND)
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
# - Find ORB_SLAM2
|
||||
#
|
||||
# It sets the following variables:
|
||||
# ORB_SLAM2_FOUND - Set to false, or undefined, if ORB_SLAM2 isn't found.
|
||||
# ORB_SLAM2_INCLUDE_DIRS - The ORB_SLAM2 include directory.
|
||||
# ORB_SLAM2_LIBRARIES - The ORB_SLAM2 library to link against.
|
||||
#
|
||||
# Set ORB_SLAM2_ROOT_DIR environment variable as the path to ORB_SLAM2 root folder.
|
||||
|
||||
find_path(ORB_SLAM2_INCLUDE_DIR NAMES System.h PATHS $ENV{ORB_SLAM2_ROOT_DIR}/include)
|
||||
find_library(ORB_SLAM2_LIBRARY NAMES ORB_SLAM2 PATHS $ENV{ORB_SLAM2_ROOT_DIR}/lib)
|
||||
find_path(g2o_INCLUDE_DIR NAMES g2o/core/sparse_optimizer.h PATHS $ENV{ORB_SLAM2_ROOT_DIR}/Thirdparty/g2o NO_DEFAULT_PATH)
|
||||
find_library(g2o_LIBRARY NAMES g2o PATHS $ENV{ORB_SLAM2_ROOT_DIR}/Thirdparty/g2o/lib NO_DEFAULT_PATH)
|
||||
find_library(DBoW2_LIBRARY NAMES DBoW2 PATHS $ENV{ORB_SLAM2_ROOT_DIR}/Thirdparty/DBoW2/lib NO_DEFAULT_PATH)
|
||||
|
||||
IF (ORB_SLAM2_INCLUDE_DIR AND ORB_SLAM2_LIBRARY AND DBoW2_LIBRARY AND g2o_INCLUDE_DIR AND g2o_LIBRARY)
|
||||
SET(ORB_SLAM2_FOUND TRUE)
|
||||
SET(ORB_SLAM2_INCLUDE_DIRS ${ORB_SLAM2_INCLUDE_DIR} ${g2o_INCLUDE_DIR} $ENV{ORB_SLAM2_ROOT_DIR})
|
||||
SET(ORB_SLAM2_LIBRARIES ${g2o_LIBRARY} ${ORB_SLAM2_LIBRARY} ${DBoW2_LIBRARY})
|
||||
ENDIF (ORB_SLAM2_INCLUDE_DIR AND ORB_SLAM2_LIBRARY AND DBoW2_LIBRARY AND g2o_INCLUDE_DIR AND g2o_LIBRARY)
|
||||
|
||||
IF (ORB_SLAM2_FOUND)
|
||||
# show which ORB_SLAM2 was found only if not quiet
|
||||
IF (NOT ORB_SLAM2_FIND_QUIETLY)
|
||||
MESSAGE(STATUS "Found ORB_SLAM2: ${ORB_SLAM2_LIBRARIES}")
|
||||
ENDIF (NOT ORB_SLAM2_FIND_QUIETLY)
|
||||
ELSE (ORB_SLAM2_FOUND)
|
||||
# fatal error if ORB_SLAM2 is required but not found
|
||||
IF (ORB_SLAM2_FIND_REQUIRED)
|
||||
MESSAGE(FATAL_ERROR "Could not find ORB_SLAM2")
|
||||
ENDIF (ORB_SLAM2_FIND_REQUIRED)
|
||||
ENDIF (ORB_SLAM2_FOUND)
|
||||
|
||||
Reference in New Issue
Block a user