Cannot localize using RTABmap
Hi,
I am using stereo_image_proc to create a disparity images and then create a depth map using RTABmap standalone nodelet to create RGBD images:
<node pkg="nodelet" type="nodelet" name="disparity2depth" args="standalone rtabmap_ros/disparity_to_depth">
<remap from="disparity" to="/stereo/disparity"/>
</node>
<node pkg="nodelet" type="nodelet" name="rgbd_sync" args="standalone rtabmap_ros/rgbd_sync" output="screen">
<remap from="rgb/image" to="/stereo/left/image_rect"/>
<remap from="depth/image" to="depth"/>
<remap from="rgb/camera_info" to="stereo/left/camera_info"/>
<remap from="rgbd_image" to="rgbd_image"/>
<param name="approx_sync" type="bool" value="false"/>
</node>
Then I am feeding the rgbd images to rtabmap in order to create a map (using LiDAR but letting images to be saved in a vocabulary for a future localization) and then trying to localize with the same nodelet as above with previously created map and rgbd images. At some point, I will get this error:
what(): OpenCV(4.1.1-pre) /home/a/opencv-4.1.0/modules/calib3d/src/calibration.cpp:1171: error: (-2:Unspecified error) in function 'void cvFindExtrinsicCameraParams2(const CvMat*, const CvMat*, const CvMat*, const CvMat*, CvMat*, CvMat*, int)'
DLT algorithm needs at least 6 points for pose estimation from 3D-2D point correspondences. (expected: 'count >= 6'), where
'count' is 5
must be greater than or equal to
'6' is 6
After this error, I have decided to turn off the loop closure:
<!-- RTAB-Map's parameters -->
<param name="RGBD/OptimizeMaxError" type="double" value="3" />
<param name="RGBD/NeighborLinkRefining" type="string" value="true"/>
<param name="RGBD/ProximityBySpace" type="string" value="true"/>
<param name="RGBD/OptimizeFromGraphEnd" type="string" value="false"/>
<param name="RGBD/AngularUpdate" type="string" value="0.05"/>
<param name="RGBD/LinearUpdate" type="string" value="0.05"/>
<param name="Vis/MinInliers" type="string" value="5"/>
<param name="Kp/MaxDepth" type="string" value="4"/>
<param name="Vis/MaxDepth" type="string" value="4"/>
<param name="Rtabmap/TimeThr" type="string" value="0"/>
<param name="Rtabmap/DetectionRate" type="string" value="$(arg rate)" />
<param name="Mem/RehearsalSimilarity" type="string" value="0.45"/>
<param name="Grid/MaxObstacleHeight" type="string" value="1.7" />
<param name="Grid/NoiseFilteringRadius" type="string" value="0.05"/>
<param name="Grid/NoiseFilteringMinNeighbors" type="string" value="5"/>
<param name="Grid/3D" type="bool" value="false"/>
<param name="Grid/RayTracing" type="bool" value="true"/>
<param name="Reg/Force3DoF" type="bool" value="true"/>
<param name="Stereo/MaxDisparity" type="string" value="200"/>
<param if="$(arg localization)" name="Reg/Strategy" type="string" value="0"/>
<param unless="$(arg localization)" name="Reg/Strategy" type="string" value="1"/>
<param if="$(arg localization)" name="RGBD/CreateOccupancyGrid" type="string" value="false"/>
<param name="Kp/WordsPerImage" type="string" value="-1"/>
<!-- Localization mode -->
<param if="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="false"/>
<param unless="$(arg localization)" name="Mem/IncrementalMemory" type="string" value="true"/>
<param name="Mem/InitWMWithAllNodes" type="string" value="$(arg localization)"/> ...