mirror of
https://github.com/introlab/rtabmap.git
synced 2026-10-03 16:47:47 +08:00
Added OptimizerCeres class (Optimizer/Strategy=3)
This commit is contained in:
+126
-94
@@ -172,6 +172,7 @@ 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" ON)
|
||||
option(WITH_VERTIGO "Include Vertigo support" ON)
|
||||
option(WITH_CVSBA "Include cvsba support" ON)
|
||||
option(WITH_POINTMATCHER "Include libpointmatcher support" ON)
|
||||
@@ -501,6 +502,11 @@ IF(WITH_OKVIS)
|
||||
ENDIF(okvis_FOUND)
|
||||
ENDIF(WITH_OKVIS)
|
||||
|
||||
# If built with okvis, we found already ceres above
|
||||
IF(NOT okvis_FOUND AND WITH_CERES)
|
||||
FIND_PACKAGE(Ceres QUIET)
|
||||
ENDIF(NOT okvis_FOUND AND WITH_CERES)
|
||||
|
||||
IF(WITH_MSCKF_VIO)
|
||||
FIND_PACKAGE(msckf_vio QUIET)
|
||||
IF(msckf_vio_FOUND)
|
||||
@@ -554,6 +560,7 @@ IF(loam_velodyne_FOUND)
|
||||
ENDIF()
|
||||
ELSEIF(G2O_FOUND OR
|
||||
GTSAM_FOUND OR
|
||||
CERES_FOUND OR
|
||||
ZED_FOUND OR
|
||||
ANDROID OR
|
||||
RealSense_FOUND OR
|
||||
@@ -638,6 +645,9 @@ IF(NOT GTSAM_FOUND)
|
||||
ELSE()
|
||||
SET(CONF_DEPENDENCIES ${CONF_DEPENDENCIES} ${GTSAM_LIBRARIES})
|
||||
ENDIF()
|
||||
IF(NOT CERES_FOUND)
|
||||
SET(CERES "//")
|
||||
ENDIF(NOT CERES_FOUND)
|
||||
IF(NOT WITH_TORO)
|
||||
SET(TORO "//")
|
||||
ENDIF(NOT WITH_TORO)
|
||||
@@ -966,10 +976,12 @@ ENDIF(APPLE OR WIN32)
|
||||
MESSAGE(STATUS " CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}")
|
||||
MESSAGE(STATUS " FLANN_KDTREE_MEM_OPT = ${FLANN_KDTREE_MEM_OPT}")
|
||||
MESSAGE(STATUS " PCL_DEFINITIONS = ${PCL_DEFINITIONS}")
|
||||
MESSAGE(STATUS " PCL_VERSION = ${PCL_VERSION}")
|
||||
IF(PCL_COMPILE_OPTIONS)
|
||||
MESSAGE(STATUS " PCL_COMPILE_OPTIONS = ${PCL_COMPILE_OPTIONS}")
|
||||
ENDIF(PCL_COMPILE_OPTIONS)
|
||||
|
||||
MESSAGE(STATUS "")
|
||||
MESSAGE(STATUS "Optional dependencies ('*' affects some default parameters) :")
|
||||
IF(OpenCV_FOUND)
|
||||
IF(OpenCV_VERSION_MAJOR EQUAL 2)
|
||||
@@ -987,12 +999,17 @@ IF(OpenCV_FOUND)
|
||||
ENDIF()
|
||||
ENDIF(OpenCV_FOUND)
|
||||
|
||||
IF(FastCV_FOUND)
|
||||
MESSAGE(STATUS " With FastCV = YES (License: Apache v2)")
|
||||
ELSEIF(NOT WITH_FASTCV)
|
||||
MESSAGE(STATUS " With FastCV = NO (WITH_FASTCV=OFF)")
|
||||
IF(QT4_FOUND)
|
||||
MESSAGE(STATUS " With Qt4 = YES (License: Open Source or Commercial)")
|
||||
MESSAGE(STATUS " With VTK ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION} = YES (License: BSD)")
|
||||
ELSEIF(Qt5_FOUND)
|
||||
MESSAGE(STATUS " With Qt5 = YES (License: Open Source or Commercial)")
|
||||
MESSAGE(STATUS " With VTK ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION} = YES (License: BSD)")
|
||||
|
||||
ELSEIF(NOT WITH_QT)
|
||||
MESSAGE(STATUS " With Qt = NO (WITH_QT=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With FastCV = NO (FastCV not found)")
|
||||
MESSAGE(STATUS " With Qt = NO (Qt not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(Sqlite3_FOUND)
|
||||
@@ -1013,6 +1030,100 @@ ELSE()
|
||||
MESSAGE(STATUS " With Madgwick = NO (WITH_MADGWICK=OFF)")
|
||||
ENDIF()
|
||||
|
||||
IF(FastCV_FOUND)
|
||||
MESSAGE(STATUS " With FastCV = YES (License: Apache v2)")
|
||||
ELSEIF(NOT WITH_FASTCV)
|
||||
MESSAGE(STATUS " With FastCV = NO (WITH_FASTCV=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With FastCV = NO (FastCV not found)")
|
||||
ENDIF()
|
||||
|
||||
MESSAGE(STATUS "")
|
||||
MESSAGE(STATUS " Solvers:")
|
||||
IF(WITH_TORO)
|
||||
MESSAGE(STATUS " With TORO = YES (License: Creative Commons [Attribution-NonCommercial-ShareAlike])")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With TORO = NO (WITH_TORO=OFF)")
|
||||
ENDIF()
|
||||
|
||||
IF(G2O_FOUND)
|
||||
MESSAGE(STATUS " *With g2o = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_G2O)
|
||||
MESSAGE(STATUS " *With g2o = NO (WITH_G2O=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " *With g2o = NO (g2o not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(GTSAM_FOUND)
|
||||
MESSAGE(STATUS " *With GTSAM = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_GTSAM)
|
||||
MESSAGE(STATUS " *With GTSAM = NO (WITH_GTSAM=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " *With GTSAM = NO (GTSAM not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(CERES_FOUND)
|
||||
MESSAGE(STATUS " *With Ceres = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_CERES)
|
||||
MESSAGE(STATUS " *With Ceres = NO (WITH_CERES=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " *With Ceres = NO (Ceres not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(G2O_FOUND OR GTSAM_FOUND)
|
||||
IF(WITH_VERTIGO)
|
||||
MESSAGE(STATUS " With VERTIGO = YES (License: GPLv3)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With VERTIGO = NO (WITH_VERTIGO=OFF)")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With VERTIGO = NO (GTSAM or g2o required)")
|
||||
ENDIF()
|
||||
|
||||
IF(cvsba_FOUND)
|
||||
MESSAGE(STATUS " With cvsba = YES (License: GPLv2)")
|
||||
ELSEIF(NOT WITH_CVSBA)
|
||||
MESSAGE(STATUS " With cvsba = NO (WITH_CVSBA=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With cvsba = NO (cvsba not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(libpointmatcher_FOUND)
|
||||
MESSAGE(STATUS " *With libpointmatcher = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_POINTMATCHER)
|
||||
MESSAGE(STATUS " *With libpointmatcher = NO (WITH_POINTMATCHER=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " *With libpointmatcher = NO (libpointmatcher not found)")
|
||||
ENDIF()
|
||||
|
||||
MESSAGE(STATUS "")
|
||||
MESSAGE(STATUS " Reconstruction Approaches:")
|
||||
IF(OCTOMAP_FOUND)
|
||||
MESSAGE(STATUS " With OCTOMAP = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_OCTOMAP)
|
||||
MESSAGE(STATUS " With OCTOMAP = NO (WITH_OCTOMAP=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With OCTOMAP = NO (octomap not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(CPUTSDF_FOUND)
|
||||
MESSAGE(STATUS " With CPUTSDF = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_CPUTSDF)
|
||||
MESSAGE(STATUS " With CPUTSDF = NO (WITH_CPUTSDF=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With CPUTSDF = NO (CPUTSDF not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(open_chisel_FOUND)
|
||||
MESSAGE(STATUS " With OpenChisel = YES (License: ???)")
|
||||
ELSEIF(NOT WITH_OPENCHISEL)
|
||||
MESSAGE(STATUS " With OpenChisel = NO (WITH_OPENCHISEL=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With OpenChisel = NO (open_chisel not found)")
|
||||
ENDIF()
|
||||
|
||||
MESSAGE(STATUS "")
|
||||
MESSAGE(STATUS " Camera Drivers:")
|
||||
IF(Freenect_FOUND)
|
||||
MESSAGE(STATUS " With Freenect = YES (License: Apache v2 and/or GPLv2)")
|
||||
ELSEIF(NOT WITH_FREENECT)
|
||||
@@ -1069,62 +1180,6 @@ ELSE()
|
||||
MESSAGE(STATUS " With FlyCapture2/Triclops = NO (Point Grey SDK not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(WITH_TORO)
|
||||
MESSAGE(STATUS " With TORO = YES (License: Creative Commons [Attribution-NonCommercial-ShareAlike])")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With TORO = NO (WITH_TORO=OFF)")
|
||||
ENDIF()
|
||||
|
||||
IF(G2O_FOUND)
|
||||
MESSAGE(STATUS " *With g2o = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_G2O)
|
||||
MESSAGE(STATUS " *With g2o = NO (WITH_G2O=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " *With g2o = NO (g2o not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(GTSAM_FOUND)
|
||||
MESSAGE(STATUS " *With GTSAM = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_GTSAM)
|
||||
MESSAGE(STATUS " *With GTSAM = NO (WITH_GTSAM=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " *With GTSAM = NO (GTSAM not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(G2O_FOUND OR GTSAM_FOUND)
|
||||
IF(WITH_VERTIGO)
|
||||
MESSAGE(STATUS " With VERTIGO = YES (License: GPLv3)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With VERTIGO = NO (WITH_VERTIGO=OFF)")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With VERTIGO = NO (GTSAM or g2o required)")
|
||||
ENDIF()
|
||||
|
||||
IF(cvsba_FOUND)
|
||||
MESSAGE(STATUS " With cvsba = YES (License: GPLv2)")
|
||||
ELSEIF(NOT WITH_CVSBA)
|
||||
MESSAGE(STATUS " With cvsba = NO (WITH_CVSBA=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With cvsba = NO (cvsba not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(libpointmatcher_FOUND)
|
||||
MESSAGE(STATUS " *With libpointmatcher = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_POINTMATCHER)
|
||||
MESSAGE(STATUS " *With libpointmatcher = NO (WITH_POINTMATCHER=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " *With libpointmatcher = NO (libpointmatcher not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(loam_velodyne_FOUND)
|
||||
MESSAGE(STATUS " With loam_velodyne = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_LOAM)
|
||||
MESSAGE(STATUS " With loam_velodyne = NO (WITH_LOAM=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With loam_velodyne = NO (loam_velodyne not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(ZED_FOUND)
|
||||
IF(CUDA_FOUND)
|
||||
MESSAGE(STATUS " With ZED = YES (With CUDA)")
|
||||
@@ -1160,28 +1215,14 @@ ELSE()
|
||||
MESSAGE(STATUS " With RealSense2 = NO (librealsense2 not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(OCTOMAP_FOUND)
|
||||
MESSAGE(STATUS " With OCTOMAP = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_OCTOMAP)
|
||||
MESSAGE(STATUS " With OCTOMAP = NO (WITH_OCTOMAP=OFF)")
|
||||
MESSAGE(STATUS "")
|
||||
MESSAGE(STATUS " Odometry Approaches:")
|
||||
IF(loam_velodyne_FOUND)
|
||||
MESSAGE(STATUS " With loam_velodyne = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_LOAM)
|
||||
MESSAGE(STATUS " With loam_velodyne = NO (WITH_LOAM=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With OCTOMAP = NO (octomap not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(CPUTSDF_FOUND)
|
||||
MESSAGE(STATUS " With CPUTSDF = YES (License: BSD)")
|
||||
ELSEIF(NOT WITH_CPUTSDF)
|
||||
MESSAGE(STATUS " With CPUTSDF = NO (WITH_CPUTSDF=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With CPUTSDF = NO (CPUTSDF not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(open_chisel_FOUND)
|
||||
MESSAGE(STATUS " With OpenChisel = YES (License: ???)")
|
||||
ELSEIF(NOT WITH_OPENCHISEL)
|
||||
MESSAGE(STATUS " With OpenChisel = NO (WITH_OPENCHISEL=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With OpenChisel = NO (open_chisel not found)")
|
||||
MESSAGE(STATUS " With loam_velodyne = NO (loam_velodyne not found)")
|
||||
ENDIF()
|
||||
|
||||
IF(libfovis_FOUND)
|
||||
@@ -1242,23 +1283,14 @@ ELSE()
|
||||
MESSAGE(STATUS " With ORB_SLAM2 = NO (ORB_SLAM2 not found, make sure environment variable ORB_SLAM2_ROOT_DIR is set)")
|
||||
ENDIF()
|
||||
|
||||
IF(QT4_FOUND)
|
||||
MESSAGE(STATUS " With Qt4 = YES (License: Open Source or Commercial)")
|
||||
ELSEIF(Qt5_FOUND)
|
||||
MESSAGE(STATUS " With Qt5 = YES (License: Open Source or Commercial)")
|
||||
ELSEIF(NOT WITH_QT)
|
||||
MESSAGE(STATUS " With Qt = NO (WITH_QT=OFF)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With Qt = NO (Qt not found)")
|
||||
ENDIF()
|
||||
|
||||
MESSAGE(STATUS "--------------------------------------------")
|
||||
|
||||
IF(NOT GTSAM_FOUND AND NOT G2O_FOUND AND NOT WITH_TORO)
|
||||
IF(NOT GTSAM_FOUND AND NOT G2O_FOUND AND NOT WITH_TORO AND NOT CERES_FOUND)
|
||||
MESSAGE(SEND_ERROR "No graph optimizer found! You should have at least one of these options:
|
||||
g2o (https://github.com/RainerKuemmerle/g2o)
|
||||
GTSAM (https://collab.cc.gatech.edu/borg/gtsam)
|
||||
Ceres (http://ceres-solver.org)
|
||||
set -DWITH_TORO=ON")
|
||||
ENDIF(NOT GTSAM_FOUND AND NOT G2O_FOUND AND NOT WITH_TORO)
|
||||
ENDIF(NOT GTSAM_FOUND AND NOT G2O_FOUND AND NOT WITH_TORO AND NOT CERES_FOUND)
|
||||
|
||||
# vim: set et ft=cmake fenc=utf-8 ff=unix sts=0 sw=2 ts=2 :
|
||||
|
||||
Reference in New Issue
Block a user