ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

RTABmap deletes half of my map

asked 2019-07-17 09:32:03 -0500

EdwardNur gravatar image


When I am doing SLAM using RTABmap, at half point, I got half of my map and rtabmap deleted some of my map for some reason, why is that? I have uplodade the database here:

Also, how can I set an initial point during the localization? As rtabmap does not localize sometimes and if I click on 2dposeestimate button, nothing happens.

The last question is, how can I reduce the resolution of my map?

edit retag flag offensive close merge delete


Ok after reading more papers on Rtabmap, I have figured out that some of by bag-of-words went to the Long term memory as I have set the parameter for the TimeThr = 700. Still, I cannot understand why I cannot localise the robot myself with a button and how to use the long term saved memory for the nav

EdwardNur gravatar image EdwardNur  ( 2019-07-17 14:29:13 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2019-07-17 16:22:51 -0500

matlabbe gravatar image


The problem is that the working memory (WM) is very small. For this map size, nodes should be easily be all in WM (even on a RPI3). The real problem is that just for processing one frame, you already reached the time threshold of 700 ms, thus locations just seen are already transferred to long-term memory. You can disable memory management to see the difference (Rtabmap/TimeThr=0). Looking at the timing statistics saved in the database (using rtabmap-databaseViewer -> Statistics view -> TimingMem): image description

A lot of time is used to create the local occupancy grids (green line). Signature creation curve includes all others. What is your computer? Here is on my computer (also in ms):

image description

You are feeding 720p stereo images to create the grid. When input is stereo, disparity image should computed (at 720p) to create the grids. If you are using a ZED, I would recommend to use the depth image already created by the ZED wrapper to save time on disparity computation. Another way is to use smaller images as input to rtabmap node. Another approach is to decimate the stereo images prior to compute the disparity image, using Mem/ImagePostDecimation=2 for example (you would need to set Grid/DepthDecimation=2 if you do so).

To save time on feature extraction (red line of first figure), you can set Mem/ImagePreDecimation=2.

For the 2d pose estimate button of RVIZ, you should remap its publishing topic to /rtabmap/initialpose (well, assuming rtabmap node is started in rtabmap namespace), and this only works in localization mode (Mem/IncrementalMemory=false).


edit flag offensive delete link more


@matlabbe I am using Jetson Nano.

EdwardNur gravatar image EdwardNur  ( 2019-07-18 03:01:02 -0500 )edit

@matlabbe I have added a new question where I used Lidar and depth images instead of stereo images. Also, I set the TimeThr to 0. Can you have a look and possibly help me with my questions? Link: LINK

EdwardNur gravatar image EdwardNur  ( 2019-07-18 08:38:25 -0500 )edit

Question Tools

1 follower


Asked: 2019-07-17 09:32:03 -0500

Seen: 287 times

Last updated: Jul 17 '19