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

Revision history [back]

click to hide/show revision 1
initial version

Don't use BruteForce matching for the vocabulary (Kp group), use KDTree (default). I tested both databases (see in comments) and ORB seems to find most of the loop closures. The database with ORB seems to be already ok. Note that I have a better global optimized graph using TORO or GTSAM on this database (well g2o with GaussNewton optimizer seems better too g2o/Optimizer=1). For features, I personally prefer SURF for loop closure detection but it is just I've never did an exhaustive comparison of ORB and SURF, just did SURF benchmark for loop closure detection and it works well most of the time.

Here some parameters I changed:

<param name="Kp/DetectorStrategy" type="string" value="0"/> <!-- SURF -->
<param name="Kp/MaxDepth"  type="string" value="0"/> <!-- unlimited distance for the vocabulary  -->
<param name="Kp/NNStrategy"       type="string" value="1"/> <!-- KdTree -->
<param name="Vis/CorNNType"       type="string" value="1"/> <!-- KdTree -->
<param name="Optimizer/Strategy"  type="string" value="2"/> <!-- GTSAM global optimization -->
<param name="RGBD/LoopClosureReextractFeatures" type="string" value="true"/> <!-- optional but more loop closures would be accepted -->

<!-- optional for odometry and rtabmap node -->
<param name="Vis/EstimationType" type="string" value="1"/> <!-- use 2D to 3D estimation -->
<param name="Vis/MaxDepth"       type="string" value="5"/> <!-- max depth can be higher with 2D to 3D estimation -->

In the database where you traverse two floors, most loop closures are detected with SURF or ORB. You may want to close the loop between the two floors by taking the stairs at the other side, this may reduce the "bending" map effect between the two floors. Well, the visual odometry could be also better, to reduce the drift. Also, be careful when you pass a door so that visual odometry can keep a high number of features to track, otherwise large drifts would happen.

cheers