Re: Rtab map in different floors

Posted by matlabbe on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Rtab-map-in-different-floors-tp6947p6963.html

Hi,

a) That height change could be fused to odometry before feeding it to rtabmap. However, when the robot will exit the elevator at the second floor, it will overwrite the first floor if it is still in the same map. When detecting that you are about to change floor, we can trigger a new map either by setting large covariance values (>=9999) in odometry topic or by calling service "rosservice call /rtabmap/trigger_new_map".

b) Yeah, even if you split the internal maps like in a), the robot could jump between the floors if the layout is very similar. We would have to implement a mechanism like the GPS approach shown in this example, where loop closure detection is done only in a fixed radius around the current GPS position. In code, in this for loop, it is where we select signatures to compare, that height difference could be added here to filter signatures. This would have to be done by comparing z value of odometry poses (this assumes that if odometry is starting at floor 2, it as always the same height, barometric sensors can give an idea of the current height, but it should be calibrated against the pressure at sea level in the same area). Another approach for odometry to know which height to set would be to add an apriltag at each floor, so when the robot sees it, it knows at which floor it is and initializing odometry at the right height.

c) There is no service to do that. You would have to kill rtabmap node, then spawn another rtabmap node with the other database. Creating such service would not be that hard to do though. EDIT: a service now exists, see post below.

cheers,
Mathieu