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

rtabmap and gmapping are not compatible. Their map structure is different: rtabmap is a graph and gmapping is multiple 2d occupancy grid maps (one for each particle of its particle filter). If gmapping closes a loop, there is no way to tell rtabmap how rtabmap's nodes should be corrected to match the poses in gmapping (of its current best map).

With your settings, rtabmap should give relatively good maps. Maybe Icp parameters could be tuned to get better results:

$ rosrun rtabmap_ros rtabmap --params | grep Icp
Param: Icp/CorrespondenceRatio = "0.2" [Ratio of matching correspondences to accept the transform.]
Param: Icp/DownsamplingStep = "1" [Downsampling step size (1=no sampling). This is done before uniform sampling.]
Param: Icp/Epsilon = "0"  [Set the transformation epsilon (maximum allowable difference between two consecutive transformations) in order for an optimization to be considered as having converged to the final solution.]
Param: Icp/Iterations = "30"  [Max iterations.]
Param: Icp/MaxCorrespondenceDistance = "0.05"   [Max distance for point correspondences.]
Param: Icp/MaxRotation = "0.78"   [Maximum ICP rotation correction accepted (rad).]
Param: Icp/MaxTranslation = "0.2"    [Maximum ICP translation correction accepted (m).]
Param: Icp/PointToPlane = "false"     [Use point to plane ICP.]
Param: Icp/PointToPlaneNormalNeighbors = "20"   [Number of neighbors to compute normals for point to plane.]
Param: Icp/VoxelSize = "0.0"     [Uniform sampling voxel size (0=disabled).]
Param: Reg/Strategy = "0"        [0=Vis, 1=Icp, 2=VisIcp]

For example, Icp/CorrespondenceRatio could be lowered or Icp/MaxCorrespondenceDistance increased to accept more Icp refined transforms between added poses to map.

cheers,

Mathieu