1 #ifndef OBJECT_RECOGNITION_H_
2 #define OBJECT_RECOGNITION_H_
66 size_t n = filenames.size ();
69 for (
size_t i = 0; i < n; ++i)
71 const std::string & filename = filenames[i];
72 if (filename.compare (filename.size ()-4, 4,
".pcd") == 0)
83 models_[i].points = loadPointCloud<PointT> (filename,
"_points.pcd");
84 models_[i].keypoints = loadPointCloud<PointT> (filename,
"_keypoints.pcd");
85 models_[i].local_descriptors = loadPointCloud<LocalDescriptorT> (filename,
"_localdesc.pcd");
86 models_[i].global_descriptor = loadPointCloud<GlobalDescriptorT> (filename,
"_globaldesc.pcd");
88 *descriptors_ += *(models_[i].global_descriptor);
91 kdtree_->setInputCloud (descriptors_);
101 std::vector<int> nn_index (1);
102 std::vector<float> nn_sqr_distance (1);
103 kdtree_->nearestKSearch (query_descriptor, 1, nn_index, nn_sqr_distance);
104 const int & best_match = nn_index[0];
106 return (models_[best_match]);
116 std::vector<int> nn_index (1);
117 std::vector<float> nn_sqr_distance (1);
118 kdtree_->nearestKSearch (query_descriptor, 1, nn_index, nn_sqr_distance);
119 const int & best_match = nn_index[0];
121 PointCloudPtr output = alignModelPoints (models_[best_match], query_object, params_);
129 output.
points = applyFiltersAndSegment (points, params_);
147 std::vector<pcl::PointIndices> cluster_indices;
154 return (largest_cluster);
179 Eigen::Matrix4f tform;
197 std::vector<ObjectModel> models_;