4ICP::ICP(std::string target_file,
double max_correspondence_distance,
long max_iteration,
5 double transformation_epsilon,
double euclidean_fitness_epsilon){
7 pcl::PointCloud<pcl::PointXYZI>::Ptr target_cloud(
new pcl::PointCloud<pcl::PointXYZI>);
9 if (pcl::io::loadPCDFile<pcl::PointXYZI>(target_file, *target_cloud) < 0) {
10 PCL_ERROR(
"Couldn't read file\n");
13 _icp_.setInputTarget(target_cloud);
15 _icp_.setMaxCorrespondenceDistance(max_correspondence_distance);
17 _icp_.setMaximumIterations(max_iteration);
19 _icp_.setTransformationEpsilon(transformation_epsilon);
21 _icp_.setEuclideanFitnessEpsilon(euclidean_fitness_epsilon);
24double ICP::executeICP(pcl::PointCloud<pcl::PointXYZI>::Ptr source_cloud, pcl::PointCloud<pcl::PointXYZI>::Ptr final_cloud){
26 _icp_.setInputSource(source_cloud);
29 pcl::PointCloud<pcl::PointXYZI>::Ptr aligned_cloud(
new pcl::PointCloud<pcl::PointXYZI>);
30 _icp_.align(*aligned_cloud);
32 if (
_icp_.hasConverged()) {
33 *final_cloud = *aligned_cloud;
34 return _icp_.getFitnessScore();
ICP(std::string target_file, double max_correspondence_distance, long max_iteration, double transformation_epsilon, double euclidean_fitness_epsilon)
Constructor for the ICP class.