40 #ifndef PCL_REGISTRATION_H_
41 #define PCL_REGISTRATION_H_
43 #include <boost/function.hpp>
44 #include <boost/bind.hpp>
60 template <
typename Po
intSource,
typename Po
intTarget>
69 typedef boost::shared_ptr< Registration<PointSource, PointTarget> >
Ptr;
70 typedef boost::shared_ptr< const Registration<PointSource, PointTarget> >
ConstPtr;
94 ransac_iterations_ (0),
96 final_transformation_ (Eigen::Matrix4f::Identity ()),
97 transformation_ (Eigen::Matrix4f::Identity ()),
98 previous_transformation_ (Eigen::Matrix4f::Identity ()),
99 transformation_epsilon_ (0.0),
100 euclidean_fitness_epsilon_ (-std::numeric_limits<double>::max ()),
101 corr_dist_threshold_ (std::
sqrt (std::numeric_limits<double>::max ())),
102 inlier_threshold_ (0.05),
104 min_number_correspondences_ (3),
105 correspondence_distances_ (),
106 transformation_estimation_ (),
107 update_visualizer_ (NULL),
108 point_representation_ ()
132 inline Eigen::Matrix4f
136 inline Eigen::Matrix4f
225 point_representation_ = point_representation;
232 template<
typename FunctionSignature>
inline bool
235 if (visualizerCallback != NULL)
237 update_visualizer_ = visualizerCallback;
249 getFitnessScore (
double max_range = std::numeric_limits<double>::max ());
257 getFitnessScore (
const std::vector<float> &distances_a,
const std::vector<float> &distances_b);
279 inline const std::string&
284 std::string reg_name_;
298 int ransac_iterations_;
304 Eigen::Matrix4f final_transformation_;
307 Eigen::Matrix4f transformation_;
310 Eigen::Matrix4f previous_transformation_;
315 double transformation_epsilon_;
321 double euclidean_fitness_epsilon_;
326 double corr_dist_threshold_;
332 double inlier_threshold_;
340 int min_number_correspondences_;
345 std::vector<float> correspondence_distances_;
353 boost::function<void(const pcl::PointCloud<PointSource> &cloud_src,
354 const std::vector<int> &indices_src,
356 const std::vector<int> &indices_tgt)> update_visualizer_;
366 std::vector<int> &indices, std::vector<float> &distances)
368 int k = tree_->nearestKSearch (cloud, index, 1, indices, distances);
378 computeTransformation (
PointCloudSource &output,
const Eigen::Matrix4f& guess) = 0;
383 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
389 #endif //#ifndef PCL_REGISTRATION_H_