Reproducing Multi-session Deployment

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

Reproducing Multi-session Deployment

Kaifei
This post was updated on .
I'm trying to reproduce the results of multi-session deployment.

It works perfectly with RTAB-Map version 0.8.x.
But I cannot get the correct results using RTAB-Map 0.10.4.
Attached a snapshot of map2 result using RTAB-Map 0.10.4 in Ubuntu 14.04 (compiled from git commit b90b46e).
The output log is also attached. It seems there are always insufficient inliers between two frames.

I'm using OpenCV 2.4.11 (with non-free) and PCL 1.7.2.
I'm using SURF.
I'm sure I loaded the provided ini file before I processed the data.
Is there any changes between 0.8.x and 0.10.4 that make this happen?


Thanks a lot!

Best,
Kaifei


output.txt
Reply | Threaded
Open this post in threaded view
|

Re: Reproducing Multi-session Deployment

matlabbe
Administrator
Hi Kaifei,

For this experiment, you should use the odometry saved in the databases. In Preferences dialog, under Source->Database group box, you should leave unchecked the parameter "Ignore odometry saved in the database, so if RGB-D SLAM is activated, odometry will be recomputed."

However, I've found a backward compatibility problem with these databases that makes all loop closures rejected. I fixed the source code in 0350e47 to be backward compatible with them. So after updating the code, you should get something like this after the first database processed (used 1Hz version here):



I've already planned to re-upload these databases soon for a synchronisation problem between the odometry, laser scans and RGB-D images, so this problem will be fixed at the same time for releases after 0.8 until now.

cheers
Reply | Threaded
Open this post in threaded view
|

Re: Reproducing Multi-session Deployment

Kaifei
Thanks for quick response!
Now it works!

I have another question.
Why can't I recompute the odometry in this case?
I have both image and depth in the database, so supposedly I have all raw data for mapping.

Thanks!

Kaifei
Reply | Threaded
Open this post in threaded view
|

Re: Reproducing Multi-session Deployment

matlabbe
Administrator
Hi,

The odometry contained in the database comes from the wheel odometry. Because of the lack of visual features in this environment, using wheel odometry is more appropriate than using visual odometry.

If you want to experiment visual odometry, you should take the 10 Hz databases. I've updated the multi-session10Hz.ini with odometry that works relatively ok (there is no "lost odometry"). Example of results using visual odometry:



The hall is lacking of robust visual features, we can see that the biggest odometry errors are there. It is an environnement with halls and white walls, that is why we used wheel odometry in the paper.

cheers
Reply | Threaded
Open this post in threaded view
|

Re: Reproducing Multi-session Deployment

Mingxi
Hi,

Thanks for the software and tutorial. I am following your tutorials. Everything works fine, except when I was trying to run the multi session data processing by following https://github.com/introlab/rtabmap/wiki/Multi-session. I met the following issue when clicking "Start". Here is the error information:



I followed the instruction by
1. go windows -> preferences -> GUI - > load "multi-session1Hz.ini"
2. go Source -> Database source -> choose "map1_1Hz.db", the parameters are set as follows


3. new database -> Start.

Has anybody met this issue before? Thanks!

Here is my RTABMAP information


Best regards,
Mingxi
Reply | Threaded
Open this post in threaded view
|

Re: Reproducing Multi-session Deployment

matlabbe
Administrator
Hi,

Thx for reporting, there was a regression bug. This commit should fix the problem. I also updated the multi-session1Hz.ini file so that the 2D occupancy map is built on versions >=0.11.10.

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

Re: Reproducing Multi-session Deployment

Mingxi
Hi Mathieu,
Many thanks for your reply! This solved the problem.
Best regards,
Reply | Threaded
Open this post in threaded view
|

Re: Reproducing Multi-session Deployment

Mingxi
In reply to this post by matlabbe
Hi Mathieu,
I met an issue after revision based on https://github.com/introlab/rtabmap/commit/8560baca8760679b591b14afddc23369a4358ddc
and re-install rtabmap
Also, I used your updated  multi-session1Hz.ini file.

The multi-session data can be run now. However, the issue occurs:


Here is the error information in terminal:


Have you met this issue before?

Thanks!
Reply | Threaded
Open this post in threaded view
|

Re: Reproducing Multi-session Deployment

matlabbe
Administrator
Hi,

This is an issue with GTSAM, sometimes it doesn't find a solution. The original experiment used TORO. I updated the config file multi_session1Hz.ini so that TORO is used (backward compatibility). Load this new config or change the graph optimization approach from GTSAM to TORO under Preferences->Graph Optimization.

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

Re: Reproducing Multi-session Deployment

Mingxi
This post was updated on .
Thanks for the quick replying! I used the new config file, and TORO as the graph optimization algorithm now.

It seem that now the loop detection is not working well, which can be seen from this figure:




I tried to fix it with your solution above
https://github.com/introlab/rtabmap/commit/0350e475b2e47e9329d5a484ca8719e354494963

However, I could not find the lines to be revised in this web. That is, my Memory.cpp file is different. Here is my file:
Memory.cpp

Thanks a lot.
Reply | Threaded
Open this post in threaded view
|

Re: Reproducing Multi-session Deployment

matlabbe
Administrator
Hi,

Indeed, I just updated the ini file again. The visual inlier distance was 0.005 m instead of 0.1 m, making rejecting all loop closures because too low inliers. There was a conversion error when reading old parameters from the ini file.

I just tried on one of the map and loop closures are now accepted.

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

Re: Reproducing Multi-session Deployment

Mingxi
This post was updated on .
Thanks Mathieu. I tried you method by changing the inlier distance in the config file to 0.1 m, but still obtained a drift. Can you share your updated config file?

Also, when I used the same config file, and chose the graph optimization approach to "g2o", I also got a drifting result (without proper loop detection).


Meanwhile, I tried the 10 HZ data by following "3.3 Multi-session mapping" on http://wiki.ros.org/rtabmap_ros#Multi-session_mapping. The result is also drifting, no matter I use your original demo_multi-session_mapping.launch file, or change the graph optimization method to g2o.




Best regards.
Reply | Threaded
Open this post in threaded view
|

Re: Reproducing Multi-session Deployment

matlabbe
Administrator
Hi,

It is the same link from the Multi-Session tutorial:  multi-session1Hz.ini. Make sure to click on "Reset all settings" before doing "Load settings" to start fresh.

Just tried the map1_1Hz.db and it seems ok:


Note that ICP refining and proximity detection are disabled in this particular experiment. Drift is only corrected on visual loop closures.

I will try the rosbag version to see if it is okay.

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

Re: Reproducing Multi-session Deployment

matlabbe
Administrator
Update for ROS: the multi-session demo seems ok (just tried the first database).

Before loop closure:


After loop closure:
Reply | Threaded
Open this post in threaded view
|

Re: Reproducing Multi-session Deployment

Mingxi
Hi Mathieu,

Thank you for the testing and instruction. Yes, the result for map 1 is good in 10 Hz data. However, the other ones seems not so good. Here is the whole result:


Best regards,
Reply | Threaded
Open this post in threaded view
|

Re: Reproducing Multi-session Deployment

matlabbe
Administrator
Hi,

The problem here is a mix of a wrong loop closure detected and g2o/GTSAM used. I updated demo_multi-session_mapping.launch file to use TORO by default (which is more stable for multi-session mapping) and slightly modified loop closure rejection threshold.

Here is what I have after running the 5 bags (with Download Graph -> Global map when finished):


Note there are missing loop closures in the center (where pink and red overlap) that were found in the paper. I didn't check all parameters, but overall it works.

cheers,
Mathieu