Re: Lidar based 3d SLAM in sparse feature environment

Posted by matlabbe on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Lidar-based-3d-SLAM-in-sparse-feature-environment-tp10174p10184.html

If your target environment is textureless and you have access to a lidar, I'll would do icp_odometry. The problem in your test with icp_odometry is that default ICP parameters are tuned for 2D lidar, not 3D lidar. There is a test_velodyne.launch example here using velodyne for hand-held mapping.

Feeding the IMU to icp_odometry can also help for better ICP.

From your launch file, you may be able to continue using rtabmap.launch by adding those parameters related to lidar (based on test_velodyne.launch):

odom_args:="
  Icp/MaxTranslation 2 Icp/CorrespondenceRatio 0.01 
  Odom/ScanKeyFrameThr 0.4 OdomF2M/ScanSubtractRadius 0.15 
  OdomF2M/ScanMaxSize 15000 
..."
 
rtabmap_args:="
  Icp/PointToPlane true Icp/Iterations 10 Icp/VoxelSize 0.15 Icp/Epsilon 0.001 
  Icp/PointToPlaneK 20 Icp/PointToPlaneRadius 0 Icp/MaxTranslation 3 
  Icp/MaxCorrespondenceDistance 1.5 Icp/PM true Icp/PMOutlierRatio 0.7 
  Icp/CorrespondenceRatio 0.2 RGBD/ProximityMaxGraphDepth 0 
  RGBD/ProximityPathMaxNeighbors 1 Mem/LaserScanNormalK 20 Reg/Strategy 1 
..."

Notes:
 - icp_odometry node combines rtabmap_args and odom_args together (that's why I've overriden 2 ICP parameters for odom).
 - I skipped to mention deskewing stuff to keep example simple in simulation, but you would need to re-enable it for real-world tests.
 - In the test_velodyne.launch example, there is also a point_cloud_assembler node, you can use it if you want to record ALL scans in the database.

cheers,
Mathieu