* 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 <[email protected]>
Co-authored-by: matlabbe <[email protected]>
* 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
* 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 <[email protected]>
Co-authored-by: matlabbe <[email protected]>
* 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 <[email protected]>
* Added OdomF2M/BundleAdjustmentMinMotion and OdomF2M/BundleAdjustmentMaxKeyFramesPerFeature parameters
* Added new odom stats localBundleMaxKeyFramesForInlier
* Adjusted how localBundleMaxKeyFramesForInlier is computed when OdomF2M/BundleAdjustmentMaxFrames is used.
* optimization: Dont compute average pixel distance if parameter is not used
* Working rtabmap_lidar-mapping example (live and pcap)
* finalizing merge, added some deprecated
* fixed build
* Working deskewing for Lidar + Camera/IMU (no camera pose correction yet) and Lidar + Odom Sensor in main UI.
* backward compatibility
* fixed some not used variable warnings, fixed qt build for lidar mapping example
* Refactored CameraMobile, added AREngine background support, fixed LidarVPL16 build error with PCL 1.8
* ARCoreJava: buffer last depth image in case its stamp i higher than pose stamp. CameraMobile: added pose buffer. SensorCaptureThread: to get pose, odomSensor should be explicitly set, but can be same as lidar or camera inputs.
* Working external lidar on iOS
* util3d::commonFiltering()/adjustNormalsToViewPoint() added organized cloud support. MainWindow: updated odomSensor setup
* fixed winsock include order
* reverted camera tool
* disable imu filtering when odom sensor is used
* Updated package version
* fixed windows build
* fixing more windows build erros
* set the PrintLevel of OpenVINS to be equivalent to that of ULogger
* use global FAST settings
* add online calibration params
* add dynamic initialization params
* add necessary feature initializer options
* fix segfault of OdomImageDecimation
* add mask settings
* use depth as mask in OpenVINS
* set twist covariance
* restore default values of VisMinDepth and VisMaxDepth
* fix openvins build
* Add OpenVINS params to UI
* update OdometryOpenVINS implementation
* the pixel noise of most cameras should be less than 3 after factory calibration
* propagation and update are only performed after camera measurement feeding
* fix openvins feature reprojection
* Integrated OpenGV
* Fixed build without opengv
* Cmake: moved OpenGV dependency status under solvers group
* Added multi-stereocamera models support
* Fixed OpenGV 0 sample error when one of the camera doesn't have features. Fixed g2o BA id offset with multi-camera.
* Fixed multicam 3d points generated from stereo correspondences
* db: Fixed multi stereo models not loaded correctly
* gui: fixed stereo rectification option, RegVis: fixed projection error with old databases (image size not set in calibration)
* OdomF2M: Fixed map.at error when bundle adjustment is not used
* depthai: added imu firmware update option for convenience
* Fixed various refactor errors
* Moved "large number stereo correspondences rejected" warning outside computeCorrespondences function for multicam
* Added error log if ba correspondences are computed with empty signatures
* fixed compilation errors with latest opencv
Co-authored-by: mathieu86 <[email protected]>
* Refactored RegistrationIcp so that libpointmatcher yaml can work with icp odometry (we can then avoid refiltering data with local map of F2M). All data filtering (including libpointmatcher DataFilters) are done at the beginning of the function.
* ICP: Restored ref and data scans order for libpointmatcher (seems more stable this way).
* Fixed compilation error without libpointmatcher
* CCCoreLib integration (Icp/Strategy=2). Icp/PMForce4DoF is now Icp/Force4DoF. Icp/PM is now Icp/Strategy. Icp/PMOutlierRatio is now Icp/OutlierRatio.
* Fixed build without CCCoreLib
* Cleanup RegistrationIcp from third party functions.
* Preferences: disable libpointmatcher and cccorlib options if not available
Referred issues:
#655https://github.com/introlab/rtabmap_ros/issues/492
Note: IMU not supported yet with ORB_SLAM3.
Commits:
* Added orbslam3 support. UI-Source->IMU filtering: Added base frame conversion option of IMU data to uniformize yaw initialization. Madgwick: fixed yaw initialization accordingly to Z acc.
* fixed regression build error with ORB_SLAM2
* Renamed OdometryORBSLAM2 to OdometryORBSLAM (can be 2 or 3 now)