I'm trying out the LTM/WM strategy to improve online performance of RTAB-Map. I mapped the same small office area with the Rtabmap/TimeThr:0 and Rtabmap/TimeThr:700 to compare. However, I found out that the mapping timing is slower for when the Rtabmap/TimeThr:700. I can see that the local graph size is lower for the database with time threshold so I suppose the long-term memory strategy is working. Is this behaviour expected?
For that map size, normally you would get similar results (memory management would not even trigger). Here the timing summary (left= not threshold, right=threshold):
For some reason the map update at the beginning took longer on the "with threshold" run, triggering the memory management that is adding afterwards some overhead (reactivation time).
Looking at the memory update details:
The occupancy grid creation is slower on the second run than on the first run (normally they should be similar with or without memory management). Is there something else running on the computer during the second run? Grid/RayTracing with Grid/3D are also enabled at the same time, which is the worst case scenario for long local occupancy grid creation. The memory management approach was benchmarked against loop closure detection computation time increasing over time, while assuming low local computation grid time. You may try again with Grid/3D to false unless you really need an OctoMap.
Thanks for the clarification! I tried mapping out a larger area and found the LTM/WM working to improve the online SLAM performance. I found from this forum that RGBD/OptimizeFromGraphEnd should be set to true while using LTM/WM for SLAM, but in localization mode RTAB-Map is able to handle online large maps without memory management. I tried out creating a map with memory management. However, when I try to run RTAB-Map in localization mode with this map without the memory management by setting Rtabmap/TimeThr='0' and RGBD/OptimizeFromGraphEnd='false', the database switches it back to the setting I was using while mapping, which is to use TimeThr=700 and OptimizeFromGraphEnd='true'. Is there a way for me to use the new localization parameters while using the database that used memory management?
Furthermore, is there a way for me to save the statistics of the localization mode (e.g.: processing mode and MapToBase_lin_std in the database or somewhere else so I can do post-analysis on the localization performance?