44 #include <pcl/registration/icp.h>
45 #include <pcl/registration/bfgs.h>
59 template <
typename Po
intSource,
typename Po
intTarget>
96 typedef boost::shared_ptr< GeneralizedIterativeClosestPoint<PointSource, PointTarget> >
Ptr;
97 typedef boost::shared_ptr< const GeneralizedIterativeClosestPoint<PointSource, PointTarget> >
ConstPtr;
113 reg_name_ =
"GeneralizedIterativeClosestPoint";
119 this, _1, _2, _3, _4, _5);
134 if (cloud->points.empty ())
136 PCL_ERROR (
"[pcl::%s::setInputSource] Invalid or empty point cloud dataset given!\n",
getClassName ().c_str ());
141 for (
size_t i = 0; i < input.
size (); ++i)
142 input[i].data[3] = 1.0;
168 const std::vector<int> &indices_src,
170 const std::vector<int> &indices_tgt,
171 Eigen::Matrix4f &transformation_matrix);
282 template<
typename Po
intT>
285 std::vector<Eigen::Matrix3d>& cloud_covariances);
295 size_t n = mat1.rows();
297 for(
size_t i = 0; i < n; i++)
298 for(
size_t j = 0; j < n; j++)
299 r += mat1 (j, i) * mat2 (i,j);
318 int k =
tree_->nearestKSearch (query, 1, index, distance);
339 boost::function<void(const pcl::PointCloud<PointSource> &cloud_src,
340 const std::vector<int> &src_indices,
342 const std::vector<int> &tgt_indices,
347 #include <pcl/registration/impl/gicp.hpp>
349 #endif //#ifndef PCL_GICP_H_