42 #ifndef PCL_PPF_REGISTRATION_H_
43 #define PCL_PPF_REGISTRATION_H_
45 #include <pcl/registration/boost.h>
46 #include <pcl/registration/registration.h>
47 #include <pcl/features/ppf.h>
59 struct HashKeyStruct :
public std::pair <int, std::pair <int, std::pair <int, int> > >
64 this->second.first = b;
65 this->second.second.first = c;
66 this->second.second.second = d;
71 typedef boost::shared_ptr<PPFHashMapSearch>
Ptr;
78 PPFHashMapSearch (
float angle_discretization_step = 12.0f / 180.0f * static_cast<float> (M_PI),
79 float distance_discretization_step = 0.01f)
82 , internals_initialized_ (false)
83 , angle_discretization_step_ (angle_discretization_step)
84 , distance_discretization_step_ (distance_discretization_step)
104 nearestNeighborSearch (
float &f1,
float &f2,
float &f3,
float &f4,
105 std::vector<std::pair<size_t, size_t> > &indices);
126 bool internals_initialized_;
128 float angle_discretization_step_, distance_discretization_step_;
143 template <
typename Po
intSource,
typename Po
intTarget>
184 scene_reference_point_sampling_rate_ (5),
185 clustering_position_diff_threshold_ (0.01f),
186 clustering_rotation_diff_threshold_ (20.0f / 180.0f * static_cast<float> (M_PI))
247 computeTransformation (
PointCloudSource &output,
const Eigen::Matrix4f& guess);
254 unsigned int scene_reference_point_sampling_rate_;
258 float clustering_position_diff_threshold_, clustering_rotation_diff_threshold_;
266 poseWithVotesCompareFunction (
const PoseWithVotes &a,
267 const PoseWithVotes &b);
272 clusterVotesCompareFunction (
const std::pair<size_t, unsigned int> &a,
273 const std::pair<size_t, unsigned int> &b);
284 posesWithinErrorBounds (Eigen::Affine3f &pose1,
285 Eigen::Affine3f &pose2);
289 #include <pcl/registration/impl/ppf_registration.hpp>
291 #endif // PCL_PPF_REGISTRATION_H_