When a user loses odometry (red screen) it seems that the only way to reconnect is by going back to the exact area where odometry was lost.
Is there any way to let odometry pick back up from a "remembered" location? Or perhaps to start a new virtual map that is stored separately until a portion of the original map is recognized, at which point the virtual map and original map could fuze in a way similar to a loop closure.
When calling reset_odom, rtabmap will start a new map, hiding the old one until a loop closure is found with the previous map. If you don't want rtabmap to start a new map when odometry is reset and wait until a first loop closure is found, you can set Rtabmap/StartNewMapOnLoopClosure to true.
If parameter Odom/ResetCountdown is set to 1 (default 0=disabled), odometry will automatically reset one frame after being lost, i.e., it has the same effect than calling reset_odom service.
In summary, by setting Rtabmap/StartNewMapOnLoopClosure=true (in rtabmap node) and Odom/ResetCountdown=1 (in rgbd_odometry node), odometry will be automatically reset when lost and rtabmap will wait to localize with a previous location before continuing mapping.