Commit Graph
1089 Commits
Author SHA1 Message Date
matlabbe 1ef19d6ac4 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. 2026-05-31 00:03:18 -07:00
matlabbe 0b0779079f Added Optimizer doc 2026-05-30 21:42:45 -07:00
matlabbe e8eabc1538 Added Optimizer tests and discovered some bugs (fixed) 2026-05-30 20:55:06 -07:00
matlabbe 1ce10ef6e7 Added RANSAC rejection filter to PCL ICP 2026-05-28 10:14:49 -07:00
matlabbe f49157b4e2 Merge branch 'python_singleton' of github.com:introlab/rtabmap into gtest 2026-05-26 20:52:31 -07:00
matlabbe fbea556380 Merge branch 'master' of github.com:introlab/rtabmap into gtest 2026-05-26 20:50:54 -07:00
matlabbe 4756474367 Adding support for AprilTag v3 library (#1702)
* Adding support for AprilTag v3 library

* New parameter: Marker/Strategy (default opencv-aruco as before). Optimized multicameras marker detection (do only once with stitched image)

* Exposed all AprilTag parameters. Sharing Marker/Dictionary between opencv and apriltag implementation. Added new Marker/Lengths parameter.

* Support AprilTAg library not built with aruco

* cleanup

* Added marker range support

* Make apriltag detection in same orientation than opencv

* fixed shenanigans when rendering markers with multi cameras

* Don't update odom cache (localization mode) when not moving (detecting loop/landmark or not)

* fixed some quirks (camera viewer + tag working)

* Setting quad decimate to 1 by default

* typo

* Implemented OptimizerG2O::loadGraph()

* added apriltag's aruco support info in the cmake config summary

* fixed warning

* fixed isam2 assert when using landmarks

* Fixed homography on multicam

* Adding marker detection time for convenience

* Added missing MIP 36h12 tag family in UI
2026-05-26 17:43:34 -07:00
matlabbe 7681e83c32 Refactored how/when python interpretor is created to simplify library usage 2026-05-26 11:01:04 -07:00
matlabbe 828a7ed100 making some tests less flaky 2026-05-24 22:39:04 -07:00
matlabbe e9c0194546 Added Memory and Rtabmap tests 2026-05-24 20:49:49 -07:00
matlabbe 5786a8796d Added doc for Rtabmap and Memory classes 2026-05-23 19:01:25 -07:00
matlabbe 5aff0721e9 Merge branch 'master' of github.com:introlab/rtabmap into gtest 2026-05-23 15:24:44 -07:00
matlabbe 49aa566613 Fixed empty global map on ros (regression from #1698) (#1709) 2026-05-23 13:36:15 -07:00
matlabbe 5959fe3505 Added RegistrationVis tests 2026-05-17 22:51:46 -07:00
matlabbe da27557787 Added Registration tests 2026-05-17 17:53:16 -07:00
matlabbe a9cc4fcebf Added Features2D tests 2026-05-17 17:47:13 -07:00
matlabbe 9a8b99f361 Added doc for EnvSensor 2026-05-17 17:12:35 -07:00
matlabbe d5deecaf1a Added GlobalMap tests 2026-05-17 17:10:08 -07:00
matlabbe 3cc21c636f fixing ci errors 2026-05-17 16:58:30 -07:00
matlabbe 77fb48a5af Added LocalGridMaker tests 2026-05-17 16:54:44 -07:00
matlabbe b62a113d0b Added LocalGrid tests 2026-05-17 15:17:31 -07:00
matlabbe 7ccc41de12 Added LASWriter tests 2026-05-17 14:58:35 -07:00
matlabbe 057d385404 Added Landmarks tests 2026-05-17 14:24:40 -07:00
matlabbe 7fdf3a13f2 Added IMUThread and IMUFilter tests 2026-05-17 14:20:34 -07:00
matlabbe ffe2482cfb Added Graph tests 2026-05-17 13:57:59 -07:00
matlabbe c498a71bc1 Added IMU tests 2026-05-17 10:03:13 -07:00
matlabbe c102c687d9 Added DBDriverSqlite3 tests 2026-05-17 09:53:57 -07:00
matlabbe c295b35a8a uniformized test names 2026-05-16 21:21:27 -07:00
matlabbe f6ba3e6d7d Added DBDriver tests 2026-05-16 18:51:17 -07:00
matlabbe 551c9e8a0f Added Odometry tests (base class only) 2026-05-16 17:55:03 -07:00
matlabbe a0d891bff0 Added tests for compression 2026-05-16 17:36:56 -07:00
matlabbe 69e943f80c Added GPS and GeodeticCoords tests 2026-05-16 17:19:33 -07:00
matlabbe c6a2d9721a fixed unresolved on windows 2026-05-16 17:00:35 -07:00
matlabbe 7e06eb7fe4 added test_link 2026-05-16 16:57:14 -07:00
matlabbe f6a0d63f3d Added doc and tests for BayesFilter class 2026-05-16 15:40:32 -07:00
matlabbe 46cf7ec344 Merge branch 'master' of github.com:introlab/rtabmap into gtest 2026-05-16 10:15:18 -07:00
matlabbeandBorong Yuan 8d0692eab0 Save intermediate node input features (#1698)
* Avoid removing nodes from STM when using CreateIntermediateNodes

* Clean up the data of the intermediate node when IntermediateNodeDataKept is false

* Save intermediate node input features

* Don't delete intermediate nodes

* comment typo

* Updated parameter description, bump patch for DBReader API chang

* When ID is not udpated to new one, don't disable words because that signature is still used in the bayes filter

* updated comment

* rtabmap-reprocess: support Rtabmap/DetectionRate when intermediate nodes are created and -skip option is not used

* Fixed smallMovement when rehearsal is not trigdered at the same time

* GUI: visualize rehearsal darkblue when intermediate nodes are used

* Fixed RtabmapThread not transfering input features on intermediate nodes

* Do not override smallMovement and fastMovement when converting to intermediate nodes to keep GUI visualization color working

---------

Co-authored-by: Borong Yuan <[email protected]>
2026-05-14 09:20:09 -07:00
matlabbe 37f8fa63c5 Auto graph repairing (#1691)
* Auto graph repairing: detect and remove bad loop closures accepted in the past that block new good loop closures to be accepted

* Added parameter RGBD/OptimizeMaxErrorRepairRadius: added approach to repair the graph (remove bad loop closures added in the past). Refactored max optimization error function, split repairGraph to its own function.

* Handling optimization from graph end in repair

* MaxGraphErrors: changed link's pointers to copy directly to avoid seg fault down the road if not used properly

* Dont publish optimization statistics if it was not computed.
2026-05-04 16:02:55 -07:00
matlabbe 9cbe84e445 Support intermediate nodes with memory management enabled (#1687)
* Support intermediate nodes with memory management enabled

* Adding fix from #1686

* Fixed odomCache overlay shown in mapping mode

* Fixed local retrieval with intermediate nodes

* bumping version for updating API. Fixed getting graph error.

* Disable planning if intermediate nodes are there. Updated usage of Kp/BadSignRatio to support intermediate nodes.
2026-04-19 16:08:03 -07:00
matlabbe 79ff91d293 Added Statisics: Loop/Optimization_max_error_from_id and Loop/Optimization_max_error_to_id to help with debugging rejected loop closures 2026-04-16 17:39:58 -07:00
Abhijithandmatlabbe a9f63bd5fd 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 <[email protected]>
2026-04-12 18:06:44 -07:00
matlabbe 0405949ff4 merged master->branch 2026-04-05 14:20:35 -07:00
matlabbe 1ea8fa2e06 New rtabmap-reduceGraph CLI tool (#1655)
* New rtabmap-reduceGraph CLI tool

* fixed some edge cases

* Regenerating optimized map if there was one before reducing the graph

* addMoreLoopClosures: refactored how ctrl-c is handled to stop faster when no loop closures are added

* Added kilted status

* Make offline tool always propagate neighbor merged links

* removed a parameter

* fixed disconnected graph

* fixed --help

* Added error log on Kp/NNStrategy not compatible with huge vocabulary. ReduceGraph/DetectMoreLoopClosures: Make sure original parameters are saved back on closing. g2o: fixing optimizer to Levenberg for SBA to avoid [SetJac] infinite jac fatal error.

* exposing neighbor merged ratio parameter to the tool

* show param in log

* refactored detectMoreLoopClosures to ignore too close nodes in terms of neighbor links based on Mem/STMSize parameter. Reduce graph: added direction parameter.

* Simplified: removed ratio parameter, removed recursive reduction. Just don't reduce if a NM link is longer than maxDistance.

* Removed NNStrategy override, as it was still done on closing when we changed back to original params

* DBViewer: show missing links when showing OptimizedPoses in GraphView, fixed clicking on landmark links

* DetectMoreLoopClosures: Added support for min graph distance option in MainWindow and DbViewer

* slight renaming of ROS jobs

* reprocess: added option --params_last
2026-04-04 19:48:03 -07:00
matlabbe 20409d2bf6 Cudasift tuning and SSC supporting multicameras (#1677)
* CudaSIFT: filter doubles

* removed fixed threshold

* SSC can be used with multicameras. Refactored CudaSIFT to support SSC. Add new parameter SIFT/MaxGaussianThreshold. DbViewer: show negative features with gray color (so that we can know which features are in the vocabulary)

* Added SIFT/MaxGaussianThreshold parameter

* Updated parameter description
2026-03-28 18:47:46 -07:00
matlabbe f94a963463 CID-SIMS support (#1676)
* cid-sims dataset support

* Added cli tool to test CID-SIMS dataset

* removed debug log
2026-03-28 14:33:26 -07:00
Borong Yuanandmatlabbe 5b985f69be Add params to filter out poor stereo flow matches (#1667)
* Add params to filter out poor stereo flow matches

* Added parameters: Vis/CorFlowUseMinEigenVals, Vis/CorFlowMinEigThreshold, Vis/CorFlowErrorThreshold. Renamed Stereo/GetMinEigenVals to Stereo/UseMinEigenVals

* Setting suggested default value of 20 for Vis/CorFlowErrorThreshold

---------

Co-authored-by: matlabbe <[email protected]>
2026-03-17 21:53:14 -07:00
matlabbe 8051be45b3 Automated dictionary recovery/repairing (#1669)
* Automated dictionary recovery/repairing

* typo

* updated comment

* updating dictionary after fixing it

* Fixing missing ref

* Adding helping assert msg in case of repairing failure
2026-03-11 15:10:52 -07:00
matlabbe 0ef907757b Detect more loop closures from/to specific map ID only option (#1653)
* Detect more loop closures from/to specific map ID only option

* default value -1

* Added elapsed time

* Avoid loading ALL signatures in RAM, only load them when necessary

* Avoid creating flann index when initializing with Kp/NNStrategy>=3

* Setting opt params by default
2026-02-13 10:49:12 -08:00
matlabbe da55168f60 Read-only localization mode (#1643)
* Read-only localization mode

* Localization: don't update map's node timestamps if statistic after run are not saved

* Updated Mem/LocalizationReadOnly description

* Updated description of Kp/FlannIndexSaved
2026-01-22 15:59:55 -08:00
matlabbe 48f529b4c6 Cleanup OccupancyGrid's cellCount_ unused member (#1639) (#1640) 2026-01-19 15:43:14 -08:00