Parameter FeatureType vs. DetectorStrategy

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

Parameter FeatureType vs. DetectorStrategy

dobbolino
Hi everyone,

I'm new to RTAB-Map and trying to understand the difference between the parameters Vis/FeatureType and Kp/DetectorStrategy.

Both seem to accept similar values like:
0=SURF, 1=SIFT, 2=ORB, 3=FAST/FREAK, 4=FAST/BRIEF, 5=GFTT/FREAK, 6=GFTT/BRIEF, 7=BRISK, 8=GFTT/ORB.

Here’s what I’m trying to figure out:

- Are these two parameters both used to select the keypoint detector and descriptor of VO?

- Or is it that one of them (e.g., Kp/DetectorStrategy) is used for odometry, and the other (Vis/FeatureType) for SLAM (loop closure etc.)?

For example, I’d like to use FAST as detector and SIFT as descriptor. Is that combination even possible through these parameters?

Thanks in advance for your help!
Just trying to get a clear picture of how these settings interact.
Reply | Threaded
Open this post in threaded view
|

Re: Parameter FeatureType vs. DetectorStrategy

matlabbe
Administrator

"Kp/DetectorStrategy" is related to visual vocabulary for loop closure detection, while "Vis/FeatureType" is used for visual odometry.

However, there are other parameters that can change this behavior, notably "Mem/UseOdomFeatures" parameter (which is true by default), but only if features are sent to rtabmap node.

Here are most common examples:

* With standalone version, if you don't explicitly disable/uncheck "Mem/UseOdomFeatures", the feature type in "Vis/FeatureType" will be also used for loop closure detection.

* For ROS, the visual odometry nodes need only "Vis/FeatureType" to be set. For rtabmap node, unless we connect an output topic of visual odometry containing visual features to rtabmap node, "Mem/UseOdomFeatures" is ignored (even if set to true) and "Kp/DetectorStrategy" is used for loop closure detection.

Note that in all cases, if you want to make sure "Kp/DetectorStrategy" is used for loop closure detection, disable explicitly "Mem/UseOdomFeatures".

cheers,
Mathieu