'The precision of ICP transformation matrix returned form "pcl::IterativeClosestPoint::getFinalTransformation()"

everyone who masters point cloud library.

[Goal] Execute ICP using dynamic iterations and get accuracy Transformation Matrix

[Problem] The built-in function "pcl::IterativeClosestPoint::getFinalTransformation()" provided by PCL loses accuracy when multiply with previous guess. After several iterations, the aligned pointcloud is not aligned actually because of low precision of transformation matrix.

[Alternative Method] Only execute fixed iteration and get the matrix, it is very precise but loss of flexibility

pcl::IterativeClosestPoint<PointT, PointT> icp;
        
......
        
transformation_matrix *= icp.**getFinalTransformation** ().cast<double>();  // WARNING /!\ This is not accurate! For "educational" purpose only!

transformation_matrix_affine3f *= icp.getFinalTransformation ();


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source