* Windows CI: make vcpkg download compatible with draft release
* forcing nvdia driver dll to be ignored in fixup_bundle
* disabling opencv cudec and python
* disabling rtabmap-console --version on cuda build
* Added assert when bad imu data is provided. Added checks when zed sdk is returning nan imu data.
* Updated zed sdk5 resolution and quality
* Updated zed sdk5 resolution and quality
* Fixing parameters reloaded when testing camera. Also fixed app freezing when closing Preferences dialog after using test camera dialog
* cleanup and debug logs
* Added dialogs when starting/stopping sensors/detection. Fixed nullptr bug on MainWindow::handleEvents
* renamed
* found a way to expose ZED model downloads
* Updated default config path on Windows
* Fixed extra endline in file logging (windows)
* Fixed camera local transform when used with lidar and odomSensor
* CI(macos): build g2o from source with OpenMP (libomp include/link fix)
* Mac: added ceres dep, fixed omp not found by cmake
* Mac: bundle orbbec extensions
* stripping rpath of orbbec's extensions
* cleanup
* Realsense2 error as error (not warning)
* Fixed config ownership changed to root when sarting in sudo. LidarVLP16: fixed crash on Mac by reimplementing our own socket threading
* LidarVLP16: own socket implementation only for Mac (linux and windows use original PCL's reader)
* CameraImages: support reading multicamera image and calibration files
* Added multi camera support for CameraStereoImages. Refactored single calib per frame option.
* refactored
* refactor
* bump 0.23.8
* 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
* 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 <yuanborong@hotmail.com>
* 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.
* 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.
* 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>
* 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
* 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
* 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
* 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
* rtabmap-rgbd_camera: added width/height options,
* using CameraViewer for visualization by default (use -pcl option for old visualization).
* CameraViewer: added capture and render rate.
* Note that non-TOF orbbec cameras could not be tested.
* update cuvslam api call to adhere to new v4.0 changes
* update comment
* parse cuvslam major version from the header and throw an error if theversion doesn't match the expected
* moving average filter + extensive debug logging
* lots more logs
* improvement by turning off use_motion_model in cuvslam config. lots of debug logs.
* slight improvements to velocity guard logic. lots of debug logs
* removing debug logs. working.
* let find_package_handle_standard_args handle the version comparison logic. Custom logic to handle newer then requested major version
* proper warning message if the major version doesn't match
* add back debug logs. Handle no guess transform case.
* adding warnings when no guess transform is provided
* clean up comments
* lowering average window to 5
* moderate odometry mode, 5 value averaging window
* adding comment
* add reset logs to investigate reset issue
* try returning guess or identity on init to avoid reset cascade
* disable motion model again
* big log when tracking
* remove some debug logs
* flag to use original covariance from cuVSLAM
* use raw covariance
* data collection for revised lost detection
* compare guess to estimated transform for lost detection
* re-enable motion model, it appears to reduce false-positives for the new lost detection
* run pose estimation afer init on first frame
* don't initialize if we don't have enough features
* dont warm up GPU everytime we reset
* low estimate velocity guard. Passes all challenges. Debug comments still everywhere.
* Remove debug logs. Add thresholds to header in a config section.
* Cleanup logs
* exposing multi-cam mode as a rtabmap param
* remove max frame delta
* change to use assertion instead of conditional
* replaced some UERROR by UWARN
---------
Co-authored-by: Felix Toft <felix@robust.ai>
Co-authored-by: matlabbe <matlabbe@gmail.com>
* Working IMU_RGBD and IMU_STEREO. Changing Inter IMU base frame is now possible.
* Output error msg when vocabulary path is wrong.
* Showing full local feature map
* Prioritize neighbor links in Optimizer::getConnectedGraph() to avoid odometry jumps.
* Fixed landmark order
* report: added search for first valid id
* Fixed non-neighbor comparison logic
* RGBD/LocalizationPriorError can now be 0 (disabled) to avoid using priors to fix the graph (https://github.com/introlab/rtabmap_ros/issues/1371)
* amend previous commit
* 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>
* Orbbec SDK 2 integration (new CameraOrbbecSDK class)
* Added rectification option, fixed the build without orbbec sdk
* Fixed timestamp issue on Windows
* Removed WITH_ORBBEC_SDK=ON by default in case v1 is installed. Enabled inter imu when selecting orbbec sdk.
* requiring orbbec version=2 to avoid confusion
* Finalizing options
* 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>
* On init, rebuild the dictionnary only once
* Fixed first dictionary update to avoid rebuilding multiple times. Commented some very verbose debug logs (should create a new level: UVERBOSE or UTRACE)
* bump version 0.23: added parameters "Mem/LoadVisualLocalFeaturesOnInit", "Mem/FlannIndexSaved", "Kp/SerializeWithChecksum".
* Renamed Mem/FlannIndexSaved to Kp/FlannIndexSaved. Update UI Preferences with new parameters.
* commented some very verbose debug logs
* Warn flann index serialization not implemented on windows
* Warn flann index deserialization not implemented on windows
* Removing some verbose logs
* missing header (win32)
* Added GlobalMap::fullUpdateNeeded() function
* Adding log
* Save flann index even if links changed
* log time to serialize flann index
* Make dictionary modified only after we update
---------
Co-authored-by: Mathieu Labbe <mathieu@robust.ai>
* Added parameter RGBD/LocalizationSecondTryWithoutProximityLinks
* Statistics: added new stat to know when proximity links are removed after a successful second loc try
* changed kLoopProximity_links_cleared for a count instead of bool
* Updating odomCachePoses with optimization for better visualization