Re: Loop closure registration strategies - Help

Posted by matlabbe on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Loop-closure-registration-strategies-Help-tp6421p6467.html

DavideR wrote
If a first Visual registration is necessary for both strategies, why more loop closure are accepted using a refinement?
For loop closure detection, it should be the same or even less with ICP refinement (if ICP fails after visually it has been accepted). Do you have both databases to share?

For Visual+Geometry, it is an old approach where for loop closure detection (bag-of-words), we used less features than for visual registration. It was used to re-extract features and recompute visual transformation with more features after a loop closure detection before doing ICP. In current version of rtabmap, we don't need to do that, as we can now have a different number of features for loop closure detection than for registration during signature initialization (no need to re-extract features). Looking at the newest code, it seems that Geometry and Visual+Geometry would give the same result, both using visual as guess for ICP. I don't see big differences between them by default. The only difference I see is if we force RGBD/LoopClosureReextractFeatures=true (to reproduce the old RTAB-Map behavior), features will be reextracted in Visual+Geometry approach, but they won't in Geometry approach. Ideally, the Geometry-only approach would not have rely on vision to get a first transformation guess, however there is no geometry-only approach implemented in RTAB-Map to do so (ICP requires a good first guess to not fall in a local minimum). Implementing a loop closure detector based only on geometry, we could be purely geometric. Until then, we use the vision guess for ICP.

In summary, when setting Visual+Geometry or Geometry, there is no difference for loop closure detection. However, for neighbor link refining (RGBD/NeighborLinkRefining=true), there is a difference: in the second approach a visual transformation is not done before ICP, ICP is done directly with odometry guess. Setting Visual+Geometry registration will force to refine the odometry guess using vision before refining with ICP (in general we don't want that if we expect odometry to be relatively accurate and to be able to refine odometry even in the dark or in textureless areas with the lidar, it is why I recommend using Reg/Strategy=1 with a lidar and not 2). For visual-only registration strategy, only visual transformation is done.

cheers,
Mathieu