Login  Register

Re: Realtime Map Merger Improvements

Posted by derektan1995 on Jul 24, 2021; 4:28am
URL: http://official-rtab-map-forum.206.s1.nabble.com/Realtime-Map-Merger-Improvements-tp8200p8369.html

Hi Mathieu,

I took some time digging deeper into the disappearing map issue mentioned above. I noticed a few observations:

1) As the map is continuously merged with time, the nodes contained in the Memory class does continue to increase. I verified by printing out all node IDs using the Memory::getAllSignatureIds method as well as the Memory::dumpMemory method.

2) The reason why the RTABMap suddenly 'forgot' old parts of the map happened here:
rtabmap::getGraph -> rtabmap::optimizeCurrentMap -> memory::getNeighborsId. Interestingly, despite the memory growing as shown in (1), memory::getNeighborsId only retrieves some of the latest nodes in memory, not all of them.

3) One possible reason could be missing link constraints between the nodes in the map. It might be due to the Rtabmap::triggerNewMap called. However, I did establish a global loop closure between the first nodes of robot 1 and robot 2. Besides, I also attempted to continuously add such loop closures as the map grew, but the map disappearance issue still persisted.

4) I attempted to artificially include all node IDs from memory Memory::getAllSignatureIds instead of using memory::getNeighborsId. However, this method did not work. I kept getting errors of GTSAM not being able to optimize graph.

I am quite loss as to why memory::getNeighborsId only retrieves some of the latest nodes in memory, not all of them. Do you happen to have insights to this matter?

Regards,
Derek