Robotics StackExchange | Archived questions

Point Cloud Registration Problems

I am currently working with PCL and a 360-degree point scanner to create maps. I am currently trying to localize them using PCL's ICP to attempt to register the scans. The scans were taken roughly 15 - 20 meters apart but I am getting transforms that look like this from the pcl::GeneralizedIterativeClosestPoint

The point clouds being aligned are created by aligning a series of scans from a spinning lidar while the robot sits still.

Transform Code:

pcl::GeneralizedIterativeClosestPoint< PointT, PointT > icp;
icp.setTransformationEpsilon( 0.00001 );
icp.setMaxCorrespondenceDistance( 1.0 );
icp.setMaximumIterations( 10 );          
icp.setRANSACIterations(10);              
icp.setMaximumOptimizerIterations( 20 ); 

icp.setInputSource(i_query);
icp.setInputTarget(i_reference);

PointCloud temp;
icp.align( temp );

Transform:

0.999574 0.0244488 -0.015959 -0.0191285
-0.0247078 0.999563 -0.0162421 0.0443592
0.015555 0.0166295 0.999741 0.12248
0 0 0 1

This doesn't look right to me as I would expect a much larger offset in the x and y components of the transform. Any suggestions would be appreciated.

Asked by badrobit on 2016-06-18 22:00:44 UTC

Comments

Answers