-
Notifications
You must be signed in to change notification settings - Fork 2
Description
based on:
http://www.pointclouds.org/assets/iros2011/registration.pdf
Refining initial alignments using ICP:
- pcl::IterativeClosestPoint<PointT, PointT> icp;
// Threshold for outliers. If to far away between matches, ignore it while calculating rms.
? icp.setMaxCorrespondenceDistance (distance)
? icp.setRANSACOutlierRejectionThreshold (distance);
// ICP stops when the epsilon (difference) between the previous transformation and the current estimated transformation is smaller than an user imposed value (via setTransformationEpsilon)
- icp.setTransformationEpsilon (transformation_epsilon);
// ICP stops after n iterations.
- icp.setMaximumIterations (max_iterations);
// ICP stops when error between correspondences is smaller than this threshold.
- icp.setEuclideanFitnessEpsilon(distance)
// Provide a pointer to the input source (e.g., the point cloud that we want to align to the target)
- icp.setInputCloud (aligned_source);
// Provide a pointer to the input target (e.g., the point cloud that we want to align to the target)
- icp.setInputTarget (target_points);
- virtual void pcl::IterativeClosestPoint< PointSource, PointTarget, Scalar >::setInputTarget ( const PointCloudTargetConstPtr & cloud )
- PointCloud registration_output;
// Call the registration algorithm which estimates the transformation and returns the transformed source (input) as output.
- icp.align (registration_output);
- void pcl::Registration< PointSource, PointTarget, Scalar >::align ( PointCloudSource & output )
Get the final transformation matrix estimated by the registration method
- Eigen::Matrix4f refined_T = 14 icp.getFinalTransformation () * initial_T);
- Matrix4 pcl::Registration< PointSource, PointTarget, Scalar >::getFinalTransformation ( )