I have been testing RTABMap's global localization as a solution to the kidnapping problem.
My robot is equipped with a D435i and a lidar.
Odometry is fused using robot_localization comprising of VO, IMU, wheels.
Our simple global localization (kidnapping) test is as follows:
1) Load the rtabmap db and localize the robot on rviz
2) Give a false pose to the robot on rviz (kidnapping)
3) Teleop the robot around to allow RTABMap to do global localization
Thus far, our observations are that the global localization does not seem to trigger.
We expect the global localization to "snap the robot" into the "true global pose" on the map, thus solving the kidnapping problem.
This behaviour is something we have been able to achieve using orb slam2 on the same robot.
Could I get your advice on what I can tune to allow for this global localization behaviour?
there could be warnings in the terminal that a loop closure has been rejected. This could tell at least that a localization has been detected, but for some reasons the transformation could not be computed (e.g., not enough matched features).
I assume that you restarted rtabmap in localization mode?
Note also that global localizations will happen only if the robot passes close to a localization in the map with same orientation.