Multi session mapping using multiple databases - Linking the sessions to get a single map

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Multi session mapping using multiple databases - Linking the sessions to get a single map

cedm
Hello,

I have a (primitive) question regarding multi mapping. I want to use the Kinect to map an entire building by hand (without a robot).
The problem is that the program crashes randomly. I think this is a compatibility problem, because I use RTAB-Map for Windows.
So I decided to create a own database for each room and scan them with overlapping areas to the next room / database.
After processing the databases as source in a superior database, I expected the sessions to be linked together when a loop closure is detected.
However, RTAB-Map doesn't search for corresponding visual words in other (already processed) databases, but rather treats every session as a own map.

For testing purposes, I did everything like it is described in the multi session tutorial, except this step:
"Do Edit->Apply settings to detector, this will initialize the core mapping module."
I use version 0.8.3 for Windows and there is no option to "Apply settings to detector".
After loading the database of the mapping sessions and processing them one by one, I only get the local maps of the different sessions.
Shouldn't the program recognize the overlapping areas of the previous sessions and perform a loop closure to link them to an entire map like the map which is shown in the tutorial?
If I click on "Download all clouds" -> "Global map optimized" I only see the Graph and points of the map which is processed from the current initialized database.

How can I link the different sessions together and what does the option "Apply settings to detector" do (and where is this option)?
Reply | Threaded
Open this post in threaded view
|

Re: Multi session mapping using multiple databases - Linking the sessions to get a single map

matlabbe
Administrator
Hi,

Thx for the info, I've updated the Multi-Session tutorial to remove "Apply settings to detector", which doesn't exist anymore. RTAB-Map only shows the latest map, unless it has been merged with one of a previous session (by detecting a loop closure with a previous map).

> However, RTAB-Map doesn't search for corresponding visual words in other (already processed) databases, but rather treats every session as a own map.
> [...]
> Shouldn't the program recognize the overlapping areas of the previous sessions and perform a loop closure to link them to an entire map like the map which is shown in the tutorial?

Yes, it should try to detect automatically loop closures with previous maps. To know if RTAB-Map is comparing with past images, you can show the highest loop closure hypothesis by checking "Preferences->General Settings (GUI) -> 'Show image with the highest hypothesis'". Note that it must have enough matching features to accept a loop closure. To increase the rate of accepting loop closures on large-scale environment, you may want to enable "Preferences (Advanced) -> RGBD-SLAM -> Loop closure constraint -> 'Reextract features on global loop closure'".

You can also open the view "Window -> Show view... -> A posteriori PDF" to see actual loop closure hypotheses with locations from the previous maps. From this page:
"[A posteriori PDF panel] If the detection has run for enough time, you should see a curve with some dots. A dot represents a location in the Working Memory. The dot "-1" represents the "No loop closure" hypothesis. You can select a dot (only in graphics view mode... see right-click menu) to show up the related image corresponding to this loop closure hypothesis."
Reply | Threaded
Open this post in threaded view
|

Re: Multi session mapping using multiple databases - Linking the sessions to get a single map

cedm
Thank you, the statistics helped me a lot to find the solution of my problem :)
I think the downloadable preferences of your multi session tutorial are corrupt in 0.8.3 ?
I used own settings and then the loop closures were found correctly and the maps were merged together.

Shortly coming back to the crashes I experienced: I remembered, that I had a lot of error messages which said that there is a issue in accessing the pcl_io_release.dll
I googled it, but couldn't find a lot of information. Can somebody say what's the purpose of this library and maybe why my computer has a problem with it?
I uninstalled all kinect releated software and driver and reinstalled only RTAB and the corresponding driver on my main drive, but it didn't help.
Reply | Threaded
Open this post in threaded view
|

Re: Multi session mapping using multiple databases - Linking the sessions to get a single map

matlabbe
Administrator
Hi,

The INI files used for this demo are using settings specific for the experiment shown. In your case (Hand-held kinect mapping), you are effectively better to start with default settings.

For the crashes, it seems related to OpenNI used in the PCL library (pcl_io_release.dll). Are you on Windows 7 or Windows 8? Recently, I tried the Microsoft Kinect SDK and it worked in Windows 8 under OpenNI2 driver. Installation steps on windows were updated (you may need to uninstall OpenNI):
Windows 8: Install Kinect for Windows SDK 1.6  (Note for 0.8.3: select OpenNI2 driver in RTAB-Map: "Detection-> Select source -> RGB-D Camera -> Xtion PRO LIVE-> OpenNI2")

Cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Multi session mapping using multiple databases - Linking the sessions to get a single map

cedm
Hey, I'm on Windows 7 but I will try it with the Kinect SDK, too
Reply | Threaded
Open this post in threaded view
|

Re: Multi session mapping using multiple databases - Linking the sessions to get a single map

matlabbe
Administrator
[Update] I've fixed a bug that explains why config files from the Multi-session tutorial rejected all global loop closures.