Files
rtabmap/corelib/src/CMakeLists.txt

987 lines
21 KiB
CMake
Raw Normal View History

SET(SRC_FILES
Rtabmap.cpp
RtabmapThread.cpp
Statistics.cpp
Memory.cpp
DBDriver.cpp
DBDriverSqlite3.cpp
DBReader.cpp
Recovery.cpp
SensorCapture.cpp
SensorCaptureThread.cpp
Camera.cpp
CameraModel.cpp
camera/CameraFreenect.cpp
camera/CameraFreenect2.cpp
camera/CameraImages.cpp
camera/CameraK4W2.cpp
2019-07-10 12:34:13 -04:00
camera/CameraK4A.cpp
camera/CameraOpenni.cpp
camera/CameraOpenNI2.cpp
camera/CameraOpenNICV.cpp
camera/CameraRealSense.cpp
camera/CameraRealSense2.cpp
camera/CameraRGBDImages.cpp
camera/CameraStereoDC1394.cpp
camera/CameraStereoFlyCapture2.cpp
camera/CameraStereoImages.cpp
camera/CameraStereoVideo.cpp
camera/CameraStereoZed.cpp
camera/CameraStereoZedOC.cpp
camera/CameraStereoTara.cpp
camera/CameraVideo.cpp
camera/CameraMyntEye.cpp
camera/CameraDepthAI.cpp
2024-05-23 20:51:13 +08:00
camera/CameraSeerSense.cpp
camera/CameraOrbbecSDK.cpp
EpipolarGeometry.cpp
VisualWord.cpp
VWDictionary.cpp
BayesFilter.cpp
Parameters.cpp
Signature.cpp
Features2d.cpp
Transform.cpp
GeodeticCoords.cpp
util2d.cpp
util3d.cpp
util3d_filtering.cpp
util3d_mapping.cpp
util3d_transforms.cpp
util3d_registration.cpp
util3d_surface.cpp
util3d_features.cpp
util3d_correspondences.cpp
util3d_motion_estimation.cpp
rvl_codec.cpp
SensorData.cpp
Graph.cpp
Compression.cpp
Link.cpp
LaserScan.cpp
Optimizer.cpp
optimizer/OptimizerTORO.cpp
optimizer/OptimizerG2O.cpp
optimizer/OptimizerGTSAM.cpp
optimizer/OptimizerCVSBA.cpp
optimizer/OptimizerCeres.cpp
Registration.cpp
RegistrationIcp.cpp
RegistrationVis.cpp
Odometry.cpp
OdometryThread.cpp
OdometryInfo.cpp
odometry/OdometryF2M.cpp
odometry/OdometryMono.cpp
odometry/OdometryF2F.cpp
odometry/OdometryFovis.cpp
odometry/OdometryViso2.cpp
odometry/OdometryDVO.cpp
odometry/OdometryOkvis.cpp
odometry/OdometryORBSLAM2.cpp
odometry/OdometryORBSLAM3.cpp
odometry/OdometryLOAM.cpp
2021-09-09 17:38:54 -04:00
odometry/OdometryFLOAM.cpp
Add LIO-SAM as an odometry strategy (#1684) * Added liosam odometry integration * Add kXYZIRT scan format with per-point ring channel for LIO-SAM integration Introduce PointXYZIRT point type and kXYZIRT LaserScan format (x,y,z, intensity,ring,time) so that ring indices survive the scan pipeline. Update OdometryLIOSAM to require kXYZIRT and properly split ring/time into the parallel buffers LIO-SAM expects. Extend deskewing to preserve ring data and disable base-class deskew in OdometryLIOSAM since LIO-SAM handles it internally. * Address PR review: config file, deferred init, and GUI panel for LIO-SAM - Add OdomLIOSAM/ConfigPath parameter to load LIO-SAM settings from a YAML file. When set, individual params are ignored. Extrinsics from sensor local transforms always override config file values. - Defer LioSamCore initialization until both IMU and lidar local transforms are available, computing T_lidar_imu from sensor data. IMU samples are buffered and replayed after init. - Fix deferred init for scan-only messages that arrive after IMU local transform is already cached. - Add LIO-SAM entry to odometry strategy combo box (index 14) with full PreferencesDialog panel including config path browse button and all parameter widgets. * OdometryLIOSAM: propagate deskewed scan to SensorData Capture the deskewed cloud produced by LIO-SAM's image projection stage and replace the raw scan on SensorData with it, so loop closure registration and other downstream stages operate on the motion- compensated points instead of the raw pre-deskew input. * Minor updates for rtabmap_ros --------- Co-authored-by: matlabbe <matlabbe@gmail.com>
2026-04-12 20:06:44 -05:00
odometry/OdometryLIOSAM.cpp
odometry/OdometryMSCKF.cpp
odometry/OdometryVINSFusion.cpp
odometry/OdometryOpenVINS.cpp
2021-11-13 19:45:57 -05:00
odometry/OdometryOpen3D.cpp
CuVSLAM VO Strategy (#1583) * integrating cuvslam, stereo cam initialization * fixing transformations * use isaac ros TocuVSLAMPose * organizing * handling covariance conversion * cleaning up config * moving cmake instructions to FindCuVSLAM.cmake file * fixing ui integration * updating software license for cuvslam * improving memory management * cleaning up header more * reverting mistake in GUI * using opaque pointers for header definitions, compiles * back to typed definitions using forward-referencing * fixing dangling pointer * cleaning up * fixing variable scope issues * Using cuda to allocate gpu memory * fixing transfrom from cuvslam back to ros coordinate frame * reducing excessive logs * removing redundant if true in cuvslam cmake * moving find cuda into cuvslam cmake * cleaning cmake to use modern target * adding copyright line * Finding tf2 and eigen3 in cmake * simplifying clean up logic * better logs * moving cuvslam implementation methods into cpp * fixing build with implmentation function declarations moved to the cpp * cleaning transformation logic and adding grayscale support * typo * removing unecessary class member variable for processed images * remove trailing underscore from initialize cuvslam function signature * locally scoping config params since they are copied by cuvslam * removing unecessary member variables and using locally scoped values since cuvslam seems to copy them * more cleaning and refactoring * fixing cmake inconsistancies and surpress warning * fixing up baseline transform * trying to remove tf2 for transformations * fixing incorect baseline transform swap * comment, begin reset logic investigation * better handling of previous pose and transform during error cases * hunting for reset bug, not found * observation export implementatin, currently getting strange errors * multi cam support * Memory fixes * comments * make cuda stream a member variable so it isn't initialized and destroyed on every frame * preparing to add ground constraints * adding ground constraints, working * adding wheel odom fusion into cuvslam tracker * parsing parameter to apply planar constraints * removing planar constraint in config, doesn't do anything * using proper cuda stream type for member variable * cleaning up for merge * only parse params when cuvslam is compiled * updating error message if using rgb-d instead of stereo * removing wheel odom testing logs * reverting bgr to rgb conversion * fixing initial pose logic * return null transform on invalid covariance * debugging covariance * guard against low velocity situations where cuvslam covariance spikes, but we aren't lost * cleaning things up --------- Co-authored-by: Felix Toft <felix@robust.ai> Co-authored-by: matlabbe <matlabbe@gmail.com>
2025-10-03 11:49:21 -07:00
odometry/OdometryCuVSLAM.cpp
IMU.cpp
IMUThread.cpp
IMUFilter.cpp
imufilter/ComplementaryFilter.cpp
Stereo.cpp
StereoDense.cpp
StereoCameraModel.cpp
stereo/StereoBM.cpp
stereo/StereoSGBM.cpp
GlobalMap.cpp
LocalGridMaker.cpp
LocalGrid.cpp
global_map/OccupancyGrid.cpp
global_map/CloudMap.cpp
MarkerDetector.cpp
GlobalDescriptorExtractor.cpp
GainCompensator.cpp
rtflann/ext/lz4.c
rtflann/ext/lz4hc.c
FlannIndex.cpp
nanoflann/NanoFlannIndex.cpp
#clams stuff
clams/discrete_depth_distortion_model_helpers.cpp
clams/discrete_depth_distortion_model.cpp
clams/frame_projector.cpp
clams/slam_calibrator.cpp
opencv/ORBextractor.cc
opencv/solvepnp.cpp
opencv/five-point.cpp
)
2024-05-12 19:13:05 -07:00
IF(PCL_VERSION VERSION_GREATER_EQUAL "1.8")
SET(SRC_FILES
${SRC_FILES}
lidar/LidarVLP16.cpp
)
ENDIF(PCL_VERSION VERSION_GREATER_EQUAL "1.8")
IF(OpenCV_VERSION_MAJOR EQUAL 2)
SET(SRC_FILES
${SRC_FILES}
opencv/Orb.cpp
)
ENDIF(OpenCV_VERSION_MAJOR EQUAL 2)
# to get includes in visual studio
IF(MSVC)
FILE(GLOB HEADERS
../include/${PROJECT_PREFIX}/core/*.h
)
SET(SRC_FILES ${SRC_FILES} ${HEADERS})
ENDIF(MSVC)
SET(INCLUDE_DIRS
${ZLIB_INCLUDE_DIRS}
)
SET(PUBLIC_INCLUDE_DIRS
${OpenCV_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}
)
SET(LIBRARIES
${ZLIB_LIBRARIES}
)
# Issue that qhull dependency uses optimized and debug keywords,
# which are converted to \$<\$<NOT:\$<CONFIG:DEBUG>> and \$<\$<CONFIG:DEBUG>
# in RTABMap_coreTargets.cmake (not sure why?!).
list(REMOVE_ITEM PCL_LIBRARIES "debug" "optimized")
SET(PUBLIC_LIBRARIES
${OpenCV_LIBS}
${PCL_LIBRARIES}
)
2024-03-23 14:34:54 -07:00
IF(SQLite3_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
2024-03-23 14:34:54 -07:00
${SQLite3_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
2024-03-23 14:34:54 -07:00
${SQLite3_LIBRARIES}
)
ELSE()
SET(SRC_FILES
${SRC_FILES}
sqlite3/sqlite3.c
)
SET(INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}/sqlite3
${INCLUDE_DIRS}
)
ENDIF()
IF(TORCH_FOUND)
SET(LIBRARIES
${LIBRARIES}
${TORCH_LIBRARIES}
)
SET(SRC_FILES
${SRC_FILES}
superpoint_torch/SuperPoint.cc
)
SuperPoint Rpautrat (MIT license) (#1603) * initial python implementation of superpoint rpautrat * working python implementation of superpoint * small tweaks to try and work around the GIL issue * fix missing os import * begging cpp impl of superpoint python model * finishing cpp superpoint impl using the same SPDetector interface * finalizing superpoint cpp impl, working with cpu but needs to be cleaned * fixing feature matching by reworking nms and filtering logic * speeding up nms with batched operations and cleaning up * updating conversion script * adding args for image dimensions and cuda usage to model tracer * wiring up UI to parse superpoint params * adding label to superpoint rpautrat ui * reverting some unintended ui changes * typo * oneline revert * removing nms and threshold filtering from cpp, this is handled internally by the superpoint model * using python interface to run the superpoint _to_torchscript.py script at runtime * generate and load model file on the first incoming frame * reverting unintented change * ui changes appear mysteriously again, reverting * remove topk from model to prevent issue when number of detected keypoints is lower then the k value (scripting fails in this case) * cleaning up for review * change dest for model file and remove debug logs * bump patch and add version comment * rm unucessary comment * use resources to load file to ensure it works when rtabmap isn't built from source * execute with pybind runpy instead of system call * only build superpoint rpautrat if we have torch and python support * changing param to accept a path to the weights .pth file directly * parse the default working directory to save the model file in * rm extraneous change * rm setters and re-initialize the detector whenever params change. We cannot support changing params after the model is constructed * update UI text * only enable superpoint rpautrat when built with python and torch * more build information regarding superpoint rpautrat * generate temporary python script in the working dir * rm unecessary changes to rtabmap_superpoint.py * fix comment and only add repo root to sys.path * introduce a new parameter for the superpoint python model definition * execute script from string instead of writing to a file * wrap parse params in a single compiler directive * remove descriptor spatial matching logic and rely on upstream RTAB-Map processes to take the top-K desc and kpts * only add python script to resources if built with superpoint rpautrat support. supress warning with type casting * isolate pybind11 setup so it can't affect any other modules or potential regnerations of the model file * update about dialog to show superpoint rpautrat * remove debug logs --------- Co-authored-by: Felix Toft <felix@robust.ai>
2025-11-07 17:22:35 -08:00
SET(INCLUDE_DIRS
${TORCH_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/superpoint_torch
${INCLUDE_DIRS}
)
SuperPoint Rpautrat (MIT license) (#1603) * initial python implementation of superpoint rpautrat * working python implementation of superpoint * small tweaks to try and work around the GIL issue * fix missing os import * begging cpp impl of superpoint python model * finishing cpp superpoint impl using the same SPDetector interface * finalizing superpoint cpp impl, working with cpu but needs to be cleaned * fixing feature matching by reworking nms and filtering logic * speeding up nms with batched operations and cleaning up * updating conversion script * adding args for image dimensions and cuda usage to model tracer * wiring up UI to parse superpoint params * adding label to superpoint rpautrat ui * reverting some unintended ui changes * typo * oneline revert * removing nms and threshold filtering from cpp, this is handled internally by the superpoint model * using python interface to run the superpoint _to_torchscript.py script at runtime * generate and load model file on the first incoming frame * reverting unintented change * ui changes appear mysteriously again, reverting * remove topk from model to prevent issue when number of detected keypoints is lower then the k value (scripting fails in this case) * cleaning up for review * change dest for model file and remove debug logs * bump patch and add version comment * rm unucessary comment * use resources to load file to ensure it works when rtabmap isn't built from source * execute with pybind runpy instead of system call * only build superpoint rpautrat if we have torch and python support * changing param to accept a path to the weights .pth file directly * parse the default working directory to save the model file in * rm extraneous change * rm setters and re-initialize the detector whenever params change. We cannot support changing params after the model is constructed * update UI text * only enable superpoint rpautrat when built with python and torch * more build information regarding superpoint rpautrat * generate temporary python script in the working dir * rm unecessary changes to rtabmap_superpoint.py * fix comment and only add repo root to sys.path * introduce a new parameter for the superpoint python model definition * execute script from string instead of writing to a file * wrap parse params in a single compiler directive * remove descriptor spatial matching logic and rely on upstream RTAB-Map processes to take the top-K desc and kpts * only add python script to resources if built with superpoint rpautrat support. supress warning with type casting * isolate pybind11 setup so it can't affect any other modules or potential regnerations of the model file * update about dialog to show superpoint rpautrat * remove debug logs --------- Co-authored-by: Felix Toft <felix@robust.ai>
2025-11-07 17:22:35 -08:00
IF(WITH_PYTHON AND Python3_FOUND)
SET(SRC_FILES
${SRC_FILES}
superpoint_rpautrat/SuperpointRpautrat.cpp
)
SET(INCLUDE_DIRS
${CMAKE_CURRENT_SOURCE_DIR}/superpoint_rpautrat
${INCLUDE_DIRS}
)
ENDIF(WITH_PYTHON AND Python3_FOUND)
ENDIF(TORCH_FOUND)
IF(WITH_PYTHON AND Python3_FOUND)
2023-06-17 15:46:44 -07:00
SET(PUBLIC_LIBRARIES
${PUBLIC_LIBRARIES}
Python3::Python
Python3::NumPy
)
SET(LIBRARIES
${LIBRARIES}
pybind11::embed
)
SET(SRC_FILES
${SRC_FILES}
python/PythonInterface.cpp
python/PyMatcher.cpp
python/PyDetector.cpp
python/PyDescriptor.cpp
)
SET(INCLUDE_DIRS
${TORCH_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/python
${INCLUDE_DIRS}
)
ENDIF(WITH_PYTHON AND Python3_FOUND)
IF(Freenect_FOUND)
IF(Freenect_DASH_INCLUDES)
ADD_DEFINITIONS("-DFREENECT_DASH_INCLUDES")
ENDIF(Freenect_DASH_INCLUDES)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${Freenect_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${Freenect_LIBRARIES}
)
ENDIF(Freenect_FOUND)
IF(OpenNI2_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${OpenNI2_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${OpenNI2_LIBRARIES}
)
ENDIF(OpenNI2_FOUND)
IF(freenect2_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${freenect2_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${freenect2_LIBRARIES}
)
ENDIF(freenect2_FOUND)
IF(KinectSDK2_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${KinectSDK2_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${KinectSDK2_LIBRARIES}
)
ENDIF(KinectSDK2_FOUND)
2019-07-10 12:34:13 -04:00
IF(k4a_FOUND)
SET(PUBLIC_INCLUDE_DIRS
${PUBLIC_INCLUDE_DIRS}
2019-07-10 12:34:13 -04:00
${k4a_INCLUDE_DIRS}
)
2019-07-10 12:34:13 -04:00
IF(WIN32)
SET(PUBLIC_LIBRARIES
${PUBLIC_LIBRARIES}
2019-07-10 12:34:13 -04:00
${k4a_LIBRARIES}
)
ELSE()
SET(PUBLIC_LIBRARIES
${PUBLIC_LIBRARIES}
2019-07-10 12:34:13 -04:00
k4a::k4a
k4a::k4arecord
)
ENDIF()
ENDIF(k4a_FOUND)
2016-07-26 18:39:34 -04:00
IF(RealSense_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${RealSense_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${RealSense_LIBRARIES}
)
ENDIF(RealSense_FOUND)
IF(realsense2_FOUND)
SET(PUBLIC_INCLUDE_DIRS
${PUBLIC_INCLUDE_DIRS}
${realsense2_INCLUDE_DIRS}
)
IF(WIN32)
SET(PUBLIC_LIBRARIES
${PUBLIC_LIBRARIES}
${RealSense2_LIBRARIES}
)
ELSEIF(APPLE)
SET(PUBLIC_LIBRARIES
${PUBLIC_LIBRARIES}
${realsense2_LIBRARIES}
)
ELSE()
SET(PUBLIC_LIBRARIES
${PUBLIC_LIBRARIES}
realsense2::realsense2 # target
)
ENDIF()
ENDIF(realsense2_FOUND)
2015-04-03 15:13:05 -04:00
IF(DC1394_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${DC1394_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${DC1394_LIBRARIES}
)
ENDIF(DC1394_FOUND)
IF(FlyCapture2_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${FlyCapture2_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${FlyCapture2_LIBRARIES}
)
ENDIF(FlyCapture2_FOUND)
IF(mynteye_FOUND)
SET(LIBRARIES
${LIBRARIES}
mynteye # target
)
ENDIF(mynteye_FOUND)
IF(depthai_FOUND)
SET(PUBLIC_LIBRARIES
${PUBLIC_LIBRARIES}
depthai::core
)
ENDIF(depthai_FOUND)
2024-05-23 20:51:13 +08:00
IF(xvsdk_FOUND)
SET(PUBLIC_LIBRARIES
${PUBLIC_LIBRARIES}
2024-05-24 23:12:16 +08:00
${xvsdk_LIBRARIES}
2024-05-23 20:51:13 +08:00
)
ENDIF(xvsdk_FOUND)
IF(OrbbecSDK_FOUND)
SET(LIBRARIES
${LIBRARIES}
ob::OrbbecSDK
)
ENDIF(OrbbecSDK_FOUND)
2021-06-08 00:06:49 -04:00
IF(TARGET OpenMP::OpenMP_CXX)
SET(LIBRARIES
${LIBRARIES}
OpenMP::OpenMP_CXX
)
ENDIF(TARGET OpenMP::OpenMP_CXX)
IF(WITH_TORO)
SET(SRC_FILES
${SRC_FILES}
optimizer/toro3d/posegraph3.cpp
optimizer/toro3d/treeoptimizer3_iteration.cpp
optimizer/toro3d/treeoptimizer3.cpp
optimizer/toro3d/posegraph2.cpp
optimizer/toro3d/treeoptimizer2.cpp
)
ENDIF(WITH_TORO)
IF(G2O_FOUND)
IF(g2o_FOUND)
2022-01-03 16:05:11 -05:00
SET(LIBRARIES ${LIBRARIES}
g2o::core
g2o::solver_eigen
g2o::solver_pcg
g2o::types_slam2d
g2o::types_slam3d
2022-01-03 16:05:11 -05:00
g2o::types_sba)
IF(TARGET g2o::solver_csparse)
2022-01-03 16:05:11 -05:00
SET(LIBRARIES ${LIBRARIES}
g2o::solver_csparse
g2o::csparse_extension)
ENDIF(TARGET g2o::solver_csparse)
IF(TARGET g2o::solver_cholmod)
SET(LIBRARIES ${LIBRARIES}
2022-01-03 16:05:11 -05:00
g2o::solver_cholmod)
ENDIF(TARGET g2o::solver_cholmod)
ELSE()
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${G2O_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${G2O_LIBRARIES}
)
ENDIF()
IF(WITH_VERTIGO)
2022-01-03 16:05:11 -05:00
SET(SRC_FILES ${SRC_FILES}
optimizer/vertigo/g2o/edge_se2Switchable.cpp
optimizer/vertigo/g2o/edge_se3Switchable.cpp
optimizer/vertigo/g2o/edge_switchPrior.cpp
optimizer/vertigo/g2o/types_g2o_robust.cpp
optimizer/vertigo/g2o/vertex_switchLinear.cpp
)
ENDIF(WITH_VERTIGO)
ENDIF(G2O_FOUND)
IF(cvsba_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${cvsba_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${cvsba_LIBS}
)
ENDIF(cvsba_FOUND)
IF(CERES_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${CERES_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${CERES_LIBRARIES}
)
ENDIF(CERES_FOUND)
IF(MRPT_FOUND)
SET(LIBRARIES
${LIBRARIES}
${MRPT_LIBRARIES}
)
ENDIF(MRPT_FOUND)
2017-08-22 16:20:49 -04:00
IF(libpointmatcher_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${libpointmatcher_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${libpointmatcher_LIBRARIES}
)
ENDIF(libpointmatcher_FOUND)
IF(CCCoreLib_FOUND)
SET(LIBRARIES
${LIBRARIES}
CCCoreLib::CCCoreLib
)
ENDIF(CCCoreLib_FOUND)
2021-11-13 19:45:57 -05:00
IF(Open3D_FOUND)
SET(LIBRARIES
${LIBRARIES}
Open3D::Open3D
)
ENDIF(Open3D_FOUND)
IF(FastCV_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${FastCV_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${FastCV_LIBRARIES}
)
ENDIF(FastCV_FOUND)
IF(apriltag_FOUND)
SET(LIBRARIES
apriltag::apriltag
${LIBRARIES}
)
ENDIF(apriltag_FOUND)
IF(opengv_FOUND)
SET(LIBRARIES
${LIBRARIES}
opengv
)
ENDIF(opengv_FOUND)
IF(PDAL_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${PDAL_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${PDAL_LIBRARIES}
)
SET(SRC_FILES
${SRC_FILES}
PDALWriter.cpp
)
IF(PDAL_VERSION VERSION_LESS "1.7")
add_definitions("-DRTABMAP_PDAL_16")
ENDIF(PDAL_VERSION VERSION_LESS "1.7")
ENDIF(PDAL_FOUND)
IF(libLAS_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${libLAS_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${libLAS_LIBRARIES}
)
SET(SRC_FILES
${SRC_FILES}
LASWriter.cpp
)
ENDIF(libLAS_FOUND)
IF(CudaSift_FOUND)
#target
SET(LIBRARIES
${LIBRARIES}
cudasift
)
ENDIF(CudaSift_FOUND)
IF(loam_velodyne_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${loam_velodyne_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${loam_velodyne_LIBRARIES}
)
ENDIF(loam_velodyne_FOUND)
2021-09-09 17:38:54 -04:00
IF(floam_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${floam_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${floam_LIBRARIES}
)
ENDIF(floam_FOUND)
Add LIO-SAM as an odometry strategy (#1684) * Added liosam odometry integration * Add kXYZIRT scan format with per-point ring channel for LIO-SAM integration Introduce PointXYZIRT point type and kXYZIRT LaserScan format (x,y,z, intensity,ring,time) so that ring indices survive the scan pipeline. Update OdometryLIOSAM to require kXYZIRT and properly split ring/time into the parallel buffers LIO-SAM expects. Extend deskewing to preserve ring data and disable base-class deskew in OdometryLIOSAM since LIO-SAM handles it internally. * Address PR review: config file, deferred init, and GUI panel for LIO-SAM - Add OdomLIOSAM/ConfigPath parameter to load LIO-SAM settings from a YAML file. When set, individual params are ignored. Extrinsics from sensor local transforms always override config file values. - Defer LioSamCore initialization until both IMU and lidar local transforms are available, computing T_lidar_imu from sensor data. IMU samples are buffered and replayed after init. - Fix deferred init for scan-only messages that arrive after IMU local transform is already cached. - Add LIO-SAM entry to odometry strategy combo box (index 14) with full PreferencesDialog panel including config path browse button and all parameter widgets. * OdometryLIOSAM: propagate deskewed scan to SensorData Capture the deskewed cloud produced by LIO-SAM's image projection stage and replace the raw scan on SensorData with it, so loop closure registration and other downstream stages operate on the motion- compensated points instead of the raw pre-deskew input. * Minor updates for rtabmap_ros --------- Co-authored-by: matlabbe <matlabbe@gmail.com>
2026-04-12 20:06:44 -05:00
IF(lio_sam_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${lio_sam_INCLUDE_DIRS}
)
link_directories(${lio_sam_LIBRARY_DIRS})
SET(LIBRARIES
${LIBRARIES}
lio_sam_core
)
ENDIF(lio_sam_FOUND)
2016-05-31 19:09:49 -04:00
IF(ZED_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${ZED_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${ZED_LIBRARIES}
)
IF(CUDA_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${CUDA_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${CUDA_LIBRARIES}
)
ENDIF(CUDA_FOUND)
ENDIF(ZED_FOUND)
IF(ZEDOC_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${ZEDOC_INCLUDE_DIRS}
${HIDAPI_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${ZEDOC_LIBRARIES}
${HIDAPI_LIBRARIES}
)
ENDIF(ZEDOC_FOUND)
IF(octomap_FOUND)
IF(TARGET octomap)
SET(PUBLIC_LIBRARIES
${PUBLIC_LIBRARIES}
octomap
)
ELSE()
SET(PUBLIC_INCLUDE_DIRS
${PUBLIC_INCLUDE_DIRS}
${OCTOMAP_INCLUDE_DIRS}
)
SET(PUBLIC_LIBRARIES
${PUBLIC_LIBRARIES}
${OCTOMAP_LIBRARIES}
)
ENDIF()
2016-06-28 19:00:44 -04:00
SET(SRC_FILES
${SRC_FILES}
global_map/OctoMap.cpp
2016-06-28 19:00:44 -04:00
)
ENDIF(octomap_FOUND)
2016-06-28 19:00:44 -04:00
IF(grid_map_core_FOUND)
IF(TARGET grid_map_core::grid_map_core)
2024-10-08 20:01:38 -07:00
SET(LIBRARIES
${LIBRARIES}
grid_map_core::grid_map_core
)
ELSE()
2024-10-08 20:01:38 -07:00
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${grid_map_core_INCLUDE_DIRS}
)
2024-10-08 20:01:38 -07:00
SET(LIBRARIES
${LIBRARIES}
${grid_map_core_LIBRARIES}
)
ENDIF()
SET(SRC_FILES
${SRC_FILES}
global_map/GridMap.cpp
)
ENDIF(grid_map_core_FOUND)
IF(AliceVision_FOUND)
SET(LIBRARIES
${LIBRARIES}
aliceVision_mesh
aliceVision_sfmDataIO)
ENDIF(AliceVision_FOUND)
2017-05-30 09:27:31 -04:00
IF(libfovis_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${libfovis_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${libfovis_LIBRARIES}
)
ENDIF(libfovis_FOUND)
IF(libviso2_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${libviso2_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${libviso2_LIBRARIES}
)
ENDIF(libviso2_FOUND)
2017-05-31 20:57:24 -04:00
IF(dvo_core_FOUND)
SET(INCLUDE_DIRS
${INCLUDE_DIRS}
${dvo_core_INCLUDE_DIRS}
)
SET(LIBRARIES
${LIBRARIES}
${dvo_core_LIBRARIES}
)
ENDIF(dvo_core_FOUND)
IF(okvis_FOUND)
SET(INCLUDE_DIRS
${OKVIS_INCLUDE_DIRS}
${BRISK_INCLUDE_DIRS}
${OPENGV_INCLUDE_DIRS}
${CERES_INCLUDE_DIRS}
${INCLUDE_DIRS}
)
SET(LIBRARIES
${OKVIS_LIBRARIES}
${BRISK_LIBRARIES}
${OPENGV_LIBRARIES}
${CERES_LIBRARIES}
${LIBRARIES}
)
ENDIF(okvis_FOUND)
2018-07-14 20:40:44 -04:00
IF(msckf_vio_FOUND)
SET(INCLUDE_DIRS
${msckf_vio_INCLUDE_DIRS}
${INCLUDE_DIRS}
)
SET(LIBRARIES
${msckf_vio_LIBRARIES}
${LIBRARIES}
)
ENDIF(msckf_vio_FOUND)
IF(vins_FOUND)
SET(INCLUDE_DIRS
${vins_INCLUDE_DIRS}
${INCLUDE_DIRS}
)
SET(LIBRARIES
${vins_LIBRARIES}
${LIBRARIES}
)
ENDIF(vins_FOUND)
2026-06-13 16:20:37 -07:00
IF(OpenVINS_FOUND)
SET(INCLUDE_DIRS
2026-06-13 16:20:37 -07:00
${OpenVINS_INCLUDE_DIRS}
${INCLUDE_DIRS}
)
SET(LIBRARIES
2026-06-13 16:20:37 -07:00
${OpenVINS_LIBRARIES}
${LIBRARIES}
)
2026-06-13 16:20:37 -07:00
ENDIF(OpenVINS_FOUND)
IF(ORB_SLAM_FOUND)
SET(INCLUDE_DIRS
${ORB_SLAM_INCLUDE_DIRS} #before so that g2o includes are taken from ORB_SLAM directory before the official g2o one
${INCLUDE_DIRS}
)
SET(LIBRARIES
${ORB_SLAM_LIBRARIES}
${LIBRARIES}
)
ENDIF(ORB_SLAM_FOUND)
CuVSLAM VO Strategy (#1583) * integrating cuvslam, stereo cam initialization * fixing transformations * use isaac ros TocuVSLAMPose * organizing * handling covariance conversion * cleaning up config * moving cmake instructions to FindCuVSLAM.cmake file * fixing ui integration * updating software license for cuvslam * improving memory management * cleaning up header more * reverting mistake in GUI * using opaque pointers for header definitions, compiles * back to typed definitions using forward-referencing * fixing dangling pointer * cleaning up * fixing variable scope issues * Using cuda to allocate gpu memory * fixing transfrom from cuvslam back to ros coordinate frame * reducing excessive logs * removing redundant if true in cuvslam cmake * moving find cuda into cuvslam cmake * cleaning cmake to use modern target * adding copyright line * Finding tf2 and eigen3 in cmake * simplifying clean up logic * better logs * moving cuvslam implementation methods into cpp * fixing build with implmentation function declarations moved to the cpp * cleaning transformation logic and adding grayscale support * typo * removing unecessary class member variable for processed images * remove trailing underscore from initialize cuvslam function signature * locally scoping config params since they are copied by cuvslam * removing unecessary member variables and using locally scoped values since cuvslam seems to copy them * more cleaning and refactoring * fixing cmake inconsistancies and surpress warning * fixing up baseline transform * trying to remove tf2 for transformations * fixing incorect baseline transform swap * comment, begin reset logic investigation * better handling of previous pose and transform during error cases * hunting for reset bug, not found * observation export implementatin, currently getting strange errors * multi cam support * Memory fixes * comments * make cuda stream a member variable so it isn't initialized and destroyed on every frame * preparing to add ground constraints * adding ground constraints, working * adding wheel odom fusion into cuvslam tracker * parsing parameter to apply planar constraints * removing planar constraint in config, doesn't do anything * using proper cuda stream type for member variable * cleaning up for merge * only parse params when cuvslam is compiled * updating error message if using rgb-d instead of stereo * removing wheel odom testing logs * reverting bgr to rgb conversion * fixing initial pose logic * return null transform on invalid covariance * debugging covariance * guard against low velocity situations where cuvslam covariance spikes, but we aren't lost * cleaning things up --------- Co-authored-by: Felix Toft <felix@robust.ai> Co-authored-by: matlabbe <matlabbe@gmail.com>
2025-10-03 11:49:21 -07:00
IF(CUVSLAM_FOUND)
SET(LIBRARIES
${LIBRARIES}
cuvslam::cuvslam
)
ENDIF(CUVSLAM_FOUND)
IF(GTSAM_FOUND)
SET(LIBRARIES
${LIBRARIES}
Adding OpenGV as submodule (optional) and use Github actions for windows CI (#1656) * Adding OpenGV as submodule (optional) * Remove submodule to migrate to FetchContent * using FetchContent * remove empty .gitmodules * Fixing OpenGV not able to find eigen on windows * patching opengv to adjust -march=native based on PCL * fixing patching on windows * eigen fix * PR cancel on-going CI builds if new commit is added to PR * try another approach * updating patch with some logs * more debug mesage * fixing EIGEN_INCLUDE_DIR * enable rolling_builds on appveyor * removed rolling_builds appveyor * fixing eigen cache * test * more debug logs * another try * cleanup * updated appveyor to work with fetchcontent * removed mkdir build (appveyor) * appveyor: trying ninja to increase CI speed * removed mkdr * appveyor: spitting opengv and rtabmap builds to be under 60 min per job * appveyor: caching dependencies * using global configuration * using baked image * fixing wget in ps * fixing not support for * pip error * reverted pip install * fixed realsense cache * fixing multi step build * removing baked image * typo * Windows: Converted appveyor to github actions * updated boost version * fixing boost * udpated boost config * boost... * platform_version * install boost directly * silent boost install * very silent boost * fixing ls * added boost install dir * showing boost install dir * moved windows dependencies in external action file * explicitly save boost cache to same time on iterations * pip install gdown * update * caching more deps * caching all depts * removed explicit boost cache save * mscv 14.0 * forcing building visual studio 14 2015 * installing v12 in 2022 instead * setup cmd prompt * init right toolset * fixing system version for opengv compilation error * fixing package and artifact * CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION * removing cmd * find manually psapi.lib * resolve * refactor psapi env * forcing 10.0.19041.0 * using windows=2022 runner instead * added vcpkg * commenting windows-latest for now * trying vcpkg instead * search path * updated path * moved json * removed deleted file for git * adding a real version * using version-string * cleanup vcpkg * building artifacts with vcpkg * removed old windows build approach, added custom dependencies (gtsam, libpointmatcher) to vcpkg build * udpated vcpkg version for issue https://github.com/microsoft/vcpkg/pull/49103 * try with minimal dep first * disable opengv for now * try vcpkg single compilation * space * updated link * fixed qupote * fixing cache name * adding debug folder * adjust path * adjust path * providing vcpkg binaries instead * ident * added triplet * added BOOST_ROOT * boost root * boost root * fixed path * adding eigen headers * try path * cmake prefix path * boost timer def * libnabo fixes * pointmatcher prefix * disabling pointmathcer tests * updated cmake parameters * changed how file is downloaded * trying curl instead * puttoing backe InvokeWeb because it is a dropbox issue * skipping optional deps for now * ficing env variable * triplet * installing triplets * not overriding default vcpkg env variables * missing path * manifet install off * that was working locally * missing protobuf path * fixing tiff not found * fixing vtk not found * more vtk fixes * another thy * changing download url * updated url * try * shoudl work now * protobuf exe * readding tiff * explicit vcpkg installed folder * missing commands * try without tiff * ficing vtk comple path * -DPSAPI_LIBRARIES=Psapi.lib * quoting * fixing psapi required * Set up MSVC Developer Command Prompt * disabling pckaging for now * openni.ini * renabling packing * Added stripped deps * fix name * updated binaries * format * updated opengv eigen path * added tbb dep * updatd archive name with vs version * updated archive in action * fixing patch error * corrupted * updated gtsam version / vcpkg * removed appveyor. Set internal opengv build disabled by defaut (because build can be very long on some machines), will enable it inside the ros release branches instead. * updated opengv patch * gtsam mkl dep * updated vcpkg binaries * updated patches * removed mkl dep * missing eigen in gtsam dep * disabling gtsam till we find a compatible version locally * all working locally! * removed ninja * working python calls * fixed hard symlink for python3.dll * fixed qt missing png, fixed opengv not finding eigen with config, fixed python3.dll missing * fixed flaoting dockwidget on start, removed cmd line window when launching bundled app * use sub-packages cudnn * Added cuda dev workflow * fixed archive name * Updated deps with pytorch cuda * updating ci PATH * fixing ci build without torch * rename cuda artifacts * cache cuda, add job to test internal opengv build * Updated output artifacts zip name * windows package: only zip on pull request * Change USE_INTERNAL_OPENGV to BUILD_OPENGV * use use-github-cache * updated artifacts path
2026-03-15 14:57:27 -07:00
gtsam
)
ENDIF(GTSAM_FOUND)
IF(WITH_MADGWICK)
SET(SRC_FILES
${SRC_FILES}
imufilter/MadgwickFilter.cpp
)
ENDIF(WITH_MADGWICK)
####################################
# Generate resources files
####################################
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/resources/DatabaseSchema.sql.in ${CMAKE_CURRENT_SOURCE_DIR}/resources/DatabaseSchema.sql)
SET(RESOURCES
${CMAKE_CURRENT_SOURCE_DIR}/resources/DatabaseSchema.sql
${CMAKE_CURRENT_SOURCE_DIR}/resources/backward_compatibility/DatabaseSchema_0_22_0.sql
${CMAKE_CURRENT_SOURCE_DIR}/resources/backward_compatibility/DatabaseSchema_0_20_0.sql
${CMAKE_CURRENT_SOURCE_DIR}/resources/backward_compatibility/DatabaseSchema_0_18_3.sql
${CMAKE_CURRENT_SOURCE_DIR}/resources/backward_compatibility/DatabaseSchema_0_18_0.sql
${CMAKE_CURRENT_SOURCE_DIR}/resources/backward_compatibility/DatabaseSchema_0_17_0.sql
${CMAKE_CURRENT_SOURCE_DIR}/resources/backward_compatibility/DatabaseSchema_0_16_2.sql
${CMAKE_CURRENT_SOURCE_DIR}/resources/backward_compatibility/DatabaseSchema_0_16_1.sql
${CMAKE_CURRENT_SOURCE_DIR}/resources/backward_compatibility/DatabaseSchema_0_16_0.sql
)
SuperPoint Rpautrat (MIT license) (#1603) * initial python implementation of superpoint rpautrat * working python implementation of superpoint * small tweaks to try and work around the GIL issue * fix missing os import * begging cpp impl of superpoint python model * finishing cpp superpoint impl using the same SPDetector interface * finalizing superpoint cpp impl, working with cpu but needs to be cleaned * fixing feature matching by reworking nms and filtering logic * speeding up nms with batched operations and cleaning up * updating conversion script * adding args for image dimensions and cuda usage to model tracer * wiring up UI to parse superpoint params * adding label to superpoint rpautrat ui * reverting some unintended ui changes * typo * oneline revert * removing nms and threshold filtering from cpp, this is handled internally by the superpoint model * using python interface to run the superpoint _to_torchscript.py script at runtime * generate and load model file on the first incoming frame * reverting unintented change * ui changes appear mysteriously again, reverting * remove topk from model to prevent issue when number of detected keypoints is lower then the k value (scripting fails in this case) * cleaning up for review * change dest for model file and remove debug logs * bump patch and add version comment * rm unucessary comment * use resources to load file to ensure it works when rtabmap isn't built from source * execute with pybind runpy instead of system call * only build superpoint rpautrat if we have torch and python support * changing param to accept a path to the weights .pth file directly * parse the default working directory to save the model file in * rm extraneous change * rm setters and re-initialize the detector whenever params change. We cannot support changing params after the model is constructed * update UI text * only enable superpoint rpautrat when built with python and torch * more build information regarding superpoint rpautrat * generate temporary python script in the working dir * rm unecessary changes to rtabmap_superpoint.py * fix comment and only add repo root to sys.path * introduce a new parameter for the superpoint python model definition * execute script from string instead of writing to a file * wrap parse params in a single compiler directive * remove descriptor spatial matching logic and rely on upstream RTAB-Map processes to take the top-K desc and kpts * only add python script to resources if built with superpoint rpautrat support. supress warning with type casting * isolate pybind11 setup so it can't affect any other modules or potential regnerations of the model file * update about dialog to show superpoint rpautrat * remove debug logs --------- Co-authored-by: Felix Toft <felix@robust.ai>
2025-11-07 17:22:35 -08:00
IF(TORCH_FOUND AND WITH_PYTHON AND Python3_FOUND)
SET(RESOURCES
${RESOURCES}
${CMAKE_CURRENT_SOURCE_DIR}/superpoint_rpautrat/superpoint_to_torchscript.py
)
ENDIF()
foreach(arg ${RESOURCES})
get_filename_component(filename ${arg} NAME)
string(REPLACE "." "_" output ${filename})
set(RESOURCES_HEADERS "${RESOURCES_HEADERS}" "${CMAKE_CURRENT_BINARY_DIR}/${output}.h")
set_property(SOURCE "${CMAKE_CURRENT_BINARY_DIR}/${output}.h" PROPERTY SKIP_AUTOGEN ON)
endforeach(arg ${RESOURCES})
#MESSAGE(STATUS "RESOURCES = ${RESOURCES}")
#MESSAGE(STATUS "RESOURCES_HEADERS = ${RESOURCES_HEADERS}")
ADD_CUSTOM_COMMAND(
OUTPUT ${RESOURCES_HEADERS}
COMMAND res_tool -n rtabmap -p ${CMAKE_CURRENT_BINARY_DIR} ${RESOURCES}
COMMENT "[Creating resources]"
DEPENDS ${RESOURCES}
)
####################################
# Generate resources files END
####################################
add_definitions(${PCL_DEFINITIONS})
# Add binary that is built from the source file "main.cpp".
# The extension is automatically found.
# rtflann's config.h is generated, as it is upstream, so that the
# FLANN_KDTREE_MEM_OPT option travels in a header instead of a compile
# definition: toggling it then recompiles the sources including rtflann rather
# than every object file of the library (see the header for the details).
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/rtflann/config.h.in
${CMAKE_CURRENT_BINARY_DIR}/rtflann/config.h)
ADD_LIBRARY(rtabmap_core ${SRC_FILES} ${RESOURCES_HEADERS})
ADD_LIBRARY(rtabmap::core ALIAS rtabmap_core)
generate_export_header(rtabmap_core
DEPRECATED_MACRO_NAME RTABMAP_DEPRECATED)
target_include_directories(rtabmap_core PUBLIC
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_SOURCE_DIR}/../include;${CMAKE_CURRENT_BINARY_DIR};${CMAKE_CURRENT_BINARY_DIR}/include>"
"$<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}>")
Adding doc and tests (#1492) * added doc and tests for util2d.h * updated cmake-ros ci * Added util3d.h doc and tests * util3d_transforms.h: Added doc and tests * util3d_filtering.h: started doc and test * util3d_filtering.h: more tests and doc * Added more doc/tests * finished util3d_filtering doc and tests * added test for util2d::depthBleedingFiltering * Added util3d_registration tests * Added util3d_features.h doc/tests * added doc/tests for util3d_correspondences.h * added doc/gtest for util3d_mapping.h (missing hpp functions) * finished testing util3d_mapping.hpp * Added util3d_motion_estimation.h tests (2D->3D done) * finished util3d_motion_estimation.h tests * minimal util3d_surface.h * Added Transform and VisualWord tests * Added doc for CameraModel and StereoCameraModel * Added more logs in ros ci * Passing tests on fical * improved all devcontainer * added devcontainer kilted, fixed source setup.bash, removed ldconfig in ros-cmake workflow * cleanup * source ros * Added utilite tests * Added testing to appveyor, github actions cancellable on re-commit on same branch * appveyor testing without all targets * appveyor: specifying ALL_BUILD target * Fixed Util2dTest.NMSImageBoundsRespected test * Fixing PCL Indices error on old pcl * Added VWDictionary tests and doc. Fixed LSH not working (fix from https://github.com/flann-lib/flann/pull/472 * fixing some appveyor CI errors, added test to check dictionary serialization against all type * Added StereoDense, StereoBM and StereoSGBM doc and tests * Added Stereo tests * Added CameraModel and StereoCameraModel tests * Added doc and test for Statistics * Added doc/tests for Signature * Added doc/test for SensorEvent, added doc for SensorCaptureInfo * Added doc to SensorData * Added SensorData tests * Added SensorCapture and SensorCaptureThread doc and tests * fixed sensordata test * updated SSC test and doc * Added doc and tests for BayesFilter class * Enabled testing on mac, updated windows testing like on linux * added test_link * fixed unresolved on windows * fixed ThreadHandle error on macos ci * Added GPS and GeodeticCoords tests * Added tests for compression * Added Odometry tests (base class only) * Added DBDriver tests * Added coverage report * uniformized test names * fixing concurancy and coverage ci * dont built tools, examples and app for coverage build * fixed report tool rebuilt without qt compilation error * updated coverage option * updated coverage config * added doc CI job * fixing windows and mac ci errors * Added DBDriverSqlite3 tests * Added IMU tests * Added Graph tests * fixing flaky macos test * Added IMUThread and IMUFilter tests * Added Landmarks tests * Added LASWriter tests * fixing seed flaky test * fixing flaky macos timing tests * Added LocalGrid tests * Added LocalGridMaker tests * fixing ci errors * Added GlobalMap tests * Added doc for EnvSensor * Added Features2D tests * Added Registration tests * Added RegistrationVis tests * Added doc for Rtabmap and Memory classes * Added Memory and Rtabmap tests * making some tests less flaky * lcov 1.14 support * updated compatible tool arguments * Added integration tests (RGB-D, Stereo, Lidar2d, Lidar3d) * More octomap checks * Refactored how/when python interpretor is created to simplify library usage * Added python tests * fixed some flaky tests * suppressed some third party related warnings * fixed ceres tests * more flaky fixes * Fixing tests without libpointmatcher * Added RANSAC rejection filter to PCL ICP * fixing multi platform flakiness * Added test to detect regression * Fixing windows pcl link error * fixed some macos flakiness * bigger 2D2D registration error on opencv 4.6.0 * flakiness * fixing flaky tests on windows and mac * flaky thread test on slow mac VM * windows slow test * fixing more ci erros * fxing temp dir on windows * Added Optimizer tests and discovered some bugs (fixed) * fixing flaky tests in mac and windows * Added Optimizer doc * Added GTSAM BA, updated Ceres to use g2o ba parameters. Renamed g2o's ba related parameters to Optimizer group and used by both gtsam and ceres. * fixing build without gtsam * fixing home dir * fixing python ci isssues * Added multicam ba tests * Added Ceres multicam BA support * Aligned BundleAdjustment parameters with Optimizer/Strategy to avoid confusion in the code * Added BA integration test * Added robust graph optimization integration test * Added loop3it test * Added stereo20Hz test * Added smartfactor gtsam * Fixed bugged check and warn if python didn't return any descriptors * Fixing gtsam version build issues * fixing tilt on windows ci * loosing ceres integration test for ci * mac ci flakiness * updating missing param in gui * updating test bound for mac * added appearance-based tests, set min gftt quality to quality level * testing more stuff * improving features2d tests * ci flakiness * fixing flaky ci * ci fixes * flaky fixes * Added RegistrationIcp tests * Added icp integration test with real-worl corridor like env * intermediate nodes * fixing enum * Updated test to catch #1714 * Fixed 2d corridor failing on pcl * flaky pnp test * flaky brisk test * Set rtabmap_integration test as long * updating loop closure test * flaky ci tests * TEsting roundtrip g2o/toro save/load * loosing test bound * fixed cuda capable checks * flaky tests * Debugging test hanging * more debugging stuff * updating limit * windows: disabled cuda on ci to avoid incompatible driver issue. Fixing a bad test mem allocation * trying fixing cuda hanging issue * fixing ci flakyness * flaky tests * Updated BOW flaky tests by checking min precision/recall instead of recall@100precision. Fixed signature test * CameraModel::load() test initRectificationMap param * test dbdriver load dictionary idsOnly * Memory: test keepLinkedInDb param * added dummyDictionary tests * test intermediate nodes count * Added MarkerDetector tests * reverted breaking change of UMutex and USemaphore * Features2d: fixed compiltion warnings with clang about override * clang warnings * fixing test build with pcl 1.8 * g2o and gtsam build errors on android * opencv5 test fixes * disabled testing for ios and android builds * normalized endline characters for easier diff * added LF CRLF rule * bump 0.23.10. fixing doc version * Publish rtabmap website doc from ci * fixing MSCVC build error * macos icp flaky test * fixing ceres macos test bound * ficing more flaky tests * fixing opencv5 related test errors. Also fixed an actual bug in ENU_WGS84ToGeocentric_WGS84() * added comment about mrpt change * removed rosdoc2 (will add it for rtabmap_ros later) * fixing website style * updated download links * locally deployable website with api * sweep doxygen issues * improved/revised doxygen main pages * removed examples empty page * Updated doxygen style * more concise doxygen groups * added api link on main readme * fixing utilite test error * fixing CommonFilteringGroundNormalsUp test * updated precisionRecall test bounds for Freak and brief descriptors * fixing scale check in ba tests * disabled tests on windows cuda build (missing dlls amd runner cannot test cuda anyway) * ceres: missing suitesparse dep in windows ci * adjusting recall thr for fast/freak * ficing more flaky tests * fixing flaky tests * disabled coverage in ros ci * Enable integration tests for ros ci jobs * loosing up some threshold for failing tests * trigger cache * fixing test data in ros ci. Updated flaky test for mac * slaking some test limit * Fixed rtabmap-detectMoreLoopClosures inverted output value * loosing up sift recall on mac * optimizer re-ordered distribution for reproducible results (mac g2o) * macos dump test crash log * combining all tests to save time on shared library reload. Also fixed Logs with missing arguments. * Added ENABLE_FORMAT_ERRORS cmake option * do test only one time * fixed all format warnings * format security android build errors * less verbose tests * updated ImuUThread test * fixed a log * Fixed libpointmatcher 2d normals eigen issue * Fixing libpointmatcher conversion issues * fixing libpointmatcher test on windows ci * cleanup comments, relax some test thr * disabled sequoia-intel ci build (too flaky, would need extensive testing directly on that machine)
2026-08-06 13:32:20 -07:00
target_include_directories(rtabmap_core SYSTEM PUBLIC
"$<BUILD_INTERFACE:${PUBLIC_INCLUDE_DIRS};${INCLUDE_DIRS}>"
"$<INSTALL_INTERFACE:${PUBLIC_INCLUDE_DIRS}>")
Adding doc and tests (#1492) * added doc and tests for util2d.h * updated cmake-ros ci * Added util3d.h doc and tests * util3d_transforms.h: Added doc and tests * util3d_filtering.h: started doc and test * util3d_filtering.h: more tests and doc * Added more doc/tests * finished util3d_filtering doc and tests * added test for util2d::depthBleedingFiltering * Added util3d_registration tests * Added util3d_features.h doc/tests * added doc/tests for util3d_correspondences.h * added doc/gtest for util3d_mapping.h (missing hpp functions) * finished testing util3d_mapping.hpp * Added util3d_motion_estimation.h tests (2D->3D done) * finished util3d_motion_estimation.h tests * minimal util3d_surface.h * Added Transform and VisualWord tests * Added doc for CameraModel and StereoCameraModel * Added more logs in ros ci * Passing tests on fical * improved all devcontainer * added devcontainer kilted, fixed source setup.bash, removed ldconfig in ros-cmake workflow * cleanup * source ros * Added utilite tests * Added testing to appveyor, github actions cancellable on re-commit on same branch * appveyor testing without all targets * appveyor: specifying ALL_BUILD target * Fixed Util2dTest.NMSImageBoundsRespected test * Fixing PCL Indices error on old pcl * Added VWDictionary tests and doc. Fixed LSH not working (fix from https://github.com/flann-lib/flann/pull/472 * fixing some appveyor CI errors, added test to check dictionary serialization against all type * Added StereoDense, StereoBM and StereoSGBM doc and tests * Added Stereo tests * Added CameraModel and StereoCameraModel tests * Added doc and test for Statistics * Added doc/tests for Signature * Added doc/test for SensorEvent, added doc for SensorCaptureInfo * Added doc to SensorData * Added SensorData tests * Added SensorCapture and SensorCaptureThread doc and tests * fixed sensordata test * updated SSC test and doc * Added doc and tests for BayesFilter class * Enabled testing on mac, updated windows testing like on linux * added test_link * fixed unresolved on windows * fixed ThreadHandle error on macos ci * Added GPS and GeodeticCoords tests * Added tests for compression * Added Odometry tests (base class only) * Added DBDriver tests * Added coverage report * uniformized test names * fixing concurancy and coverage ci * dont built tools, examples and app for coverage build * fixed report tool rebuilt without qt compilation error * updated coverage option * updated coverage config * added doc CI job * fixing windows and mac ci errors * Added DBDriverSqlite3 tests * Added IMU tests * Added Graph tests * fixing flaky macos test * Added IMUThread and IMUFilter tests * Added Landmarks tests * Added LASWriter tests * fixing seed flaky test * fixing flaky macos timing tests * Added LocalGrid tests * Added LocalGridMaker tests * fixing ci errors * Added GlobalMap tests * Added doc for EnvSensor * Added Features2D tests * Added Registration tests * Added RegistrationVis tests * Added doc for Rtabmap and Memory classes * Added Memory and Rtabmap tests * making some tests less flaky * lcov 1.14 support * updated compatible tool arguments * Added integration tests (RGB-D, Stereo, Lidar2d, Lidar3d) * More octomap checks * Refactored how/when python interpretor is created to simplify library usage * Added python tests * fixed some flaky tests * suppressed some third party related warnings * fixed ceres tests * more flaky fixes * Fixing tests without libpointmatcher * Added RANSAC rejection filter to PCL ICP * fixing multi platform flakiness * Added test to detect regression * Fixing windows pcl link error * fixed some macos flakiness * bigger 2D2D registration error on opencv 4.6.0 * flakiness * fixing flaky tests on windows and mac * flaky thread test on slow mac VM * windows slow test * fixing more ci erros * fxing temp dir on windows * Added Optimizer tests and discovered some bugs (fixed) * fixing flaky tests in mac and windows * Added Optimizer doc * Added GTSAM BA, updated Ceres to use g2o ba parameters. Renamed g2o's ba related parameters to Optimizer group and used by both gtsam and ceres. * fixing build without gtsam * fixing home dir * fixing python ci isssues * Added multicam ba tests * Added Ceres multicam BA support * Aligned BundleAdjustment parameters with Optimizer/Strategy to avoid confusion in the code * Added BA integration test * Added robust graph optimization integration test * Added loop3it test * Added stereo20Hz test * Added smartfactor gtsam * Fixed bugged check and warn if python didn't return any descriptors * Fixing gtsam version build issues * fixing tilt on windows ci * loosing ceres integration test for ci * mac ci flakiness * updating missing param in gui * updating test bound for mac * added appearance-based tests, set min gftt quality to quality level * testing more stuff * improving features2d tests * ci flakiness * fixing flaky ci * ci fixes * flaky fixes * Added RegistrationIcp tests * Added icp integration test with real-worl corridor like env * intermediate nodes * fixing enum * Updated test to catch #1714 * Fixed 2d corridor failing on pcl * flaky pnp test * flaky brisk test * Set rtabmap_integration test as long * updating loop closure test * flaky ci tests * TEsting roundtrip g2o/toro save/load * loosing test bound * fixed cuda capable checks * flaky tests * Debugging test hanging * more debugging stuff * updating limit * windows: disabled cuda on ci to avoid incompatible driver issue. Fixing a bad test mem allocation * trying fixing cuda hanging issue * fixing ci flakyness * flaky tests * Updated BOW flaky tests by checking min precision/recall instead of recall@100precision. Fixed signature test * CameraModel::load() test initRectificationMap param * test dbdriver load dictionary idsOnly * Memory: test keepLinkedInDb param * added dummyDictionary tests * test intermediate nodes count * Added MarkerDetector tests * reverted breaking change of UMutex and USemaphore * Features2d: fixed compiltion warnings with clang about override * clang warnings * fixing test build with pcl 1.8 * g2o and gtsam build errors on android * opencv5 test fixes * disabled testing for ios and android builds * normalized endline characters for easier diff * added LF CRLF rule * bump 0.23.10. fixing doc version * Publish rtabmap website doc from ci * fixing MSCVC build error * macos icp flaky test * fixing ceres macos test bound * ficing more flaky tests * fixing opencv5 related test errors. Also fixed an actual bug in ENU_WGS84ToGeocentric_WGS84() * added comment about mrpt change * removed rosdoc2 (will add it for rtabmap_ros later) * fixing website style * updated download links * locally deployable website with api * sweep doxygen issues * improved/revised doxygen main pages * removed examples empty page * Updated doxygen style * more concise doxygen groups * added api link on main readme * fixing utilite test error * fixing CommonFilteringGroundNormalsUp test * updated precisionRecall test bounds for Freak and brief descriptors * fixing scale check in ba tests * disabled tests on windows cuda build (missing dlls amd runner cannot test cuda anyway) * ceres: missing suitesparse dep in windows ci * adjusting recall thr for fast/freak * ficing more flaky tests * fixing flaky tests * disabled coverage in ros ci * Enable integration tests for ros ci jobs * loosing up some threshold for failing tests * trigger cache * fixing test data in ros ci. Updated flaky test for mac * slaking some test limit * Fixed rtabmap-detectMoreLoopClosures inverted output value * loosing up sift recall on mac * optimizer re-ordered distribution for reproducible results (mac g2o) * macos dump test crash log * combining all tests to save time on shared library reload. Also fixed Logs with missing arguments. * Added ENABLE_FORMAT_ERRORS cmake option * do test only one time * fixed all format warnings * format security android build errors * less verbose tests * updated ImuUThread test * fixed a log * Fixed libpointmatcher 2d normals eigen issue * Fixing libpointmatcher conversion issues * fixing libpointmatcher test on windows ci * cleanup comments, relax some test thr * disabled sequoia-intel ci build (too flaky, would need extensive testing directly on that machine)
2026-08-06 13:32:20 -07:00
# GCC 12 false positives from PCL/Eigen template instantiations (SSE codepath
# unaligned-loads 16 bytes from a 3-element Eigen vector). Eigen knows the
# over-read is safe; GCC 12 doesn't. Fixed in GCC 13. PCL itself doesn't
# trigger this in its own build because the offending code is in templated
# headers and only fires in downstream TUs. Same scope/approach as
# pybind11 PR #5355.
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12
AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13)
target_compile_options(rtabmap_core PRIVATE -Wno-array-bounds -Wno-stringop-overread)
# GCC 12 -Wuse-after-free false positive on the vendored TORO library's
# reference-counted DMatrix destructor: when multiple ~DMatrix<double>()
# inline at the same closing brace, GCC's cross-call flow analysis can't
# prove the freed and re-read 'shares' pointers belong to different
# objects. Scope to the TORO sources only.
if(WITH_TORO)
set_source_files_properties(
optimizer/toro3d/posegraph3.cpp
optimizer/toro3d/treeoptimizer3_iteration.cpp
optimizer/toro3d/treeoptimizer3.cpp
optimizer/toro3d/posegraph2.cpp
optimizer/toro3d/treeoptimizer2.cpp
PROPERTIES COMPILE_OPTIONS "-Wno-use-after-free")
endif()
# GCC 12 -Wmaybe-uninitialized false positive: Eigen's SSE codepath
# _mm_loadu_pd's an uninitialized-by-design Eigen::Matrix<double,3,3>
# inside g2o::SBACam. GCC follows the SIMD load through and flags it as
# potentially uninitialized; Eigen relies on the caller to assign before
# reading. Only OptimizerG2O.cpp instantiates SBACam.
if(G2O_FOUND)
set_source_files_properties(
optimizer/OptimizerG2O.cpp
PROPERTIES COMPILE_OPTIONS "-Wno-maybe-uninitialized")
endif()
endif()
TARGET_LINK_LIBRARIES(rtabmap_core
PUBLIC
rtabmap_utilite
${PUBLIC_LIBRARIES}
PRIVATE
${LIBRARIES})
SET_TARGET_PROPERTIES(
rtabmap_core
PROPERTIES
VERSION ${RTABMAP_VERSION}
SOVERSION ${RTABMAP_MAJOR_VERSION}.${RTABMAP_MINOR_VERSION}
EXPORT_NAME "core"
)
INSTALL(TARGETS rtabmap_core EXPORT rtabmap_coreTargets
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT runtime
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT devel
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT devel)
configure_file(
${CMAKE_CURRENT_BINARY_DIR}/rtabmap_core_export.h
${CMAKE_CURRENT_BINARY_DIR}/include/${PROJECT_PREFIX}/core/rtabmap_core_export.h
COPYONLY)
install(
DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}/../include/${PROJECT_PREFIX}
${CMAKE_CURRENT_BINARY_DIR}/include/${PROJECT_PREFIX}
DESTINATION
${INSTALL_INCLUDE_DIR}
COMPONENT
devel
FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
)
export(EXPORT rtabmap_coreTargets
FILE "${CMAKE_CURRENT_BINARY_DIR}/../../${PROJECT_NAME}_coreTargets.cmake"
NAMESPACE rtabmap::
)
install(EXPORT rtabmap_coreTargets
FILE
${PROJECT_NAME}_coreTargets.cmake
DESTINATION
${INSTALL_CMAKE_DIR}
NAMESPACE rtabmap::
COMPONENT
devel
)