41 #ifndef PCL_REGISTRATION_NDT_H_
42 #define PCL_REGISTRATION_NDT_H_
44 #include <pcl/registration/registration.h>
45 #include <pcl/filters/voxel_grid_covariance.h>
47 #include <unsupported/Eigen/NonLinearOptimization>
62 template<
typename Po
intSource,
typename Po
intTarget>
90 typedef boost::shared_ptr< NormalDistributionsTransform<PointSource, PointTarget> >
Ptr;
91 typedef boost::shared_ptr< const NormalDistributionsTransform<PointSource, PointTarget> >
ConstPtr;
197 trans = Eigen::Translation<float, 3>(float (x (0)), float (x (1)), float (x (2))) *
198 Eigen::AngleAxis<float>(
float (x (3)), Eigen::Vector3f::UnitX ()) *
199 Eigen::AngleAxis<float>(
float (x (4)), Eigen::Vector3f::UnitY ()) *
200 Eigen::AngleAxis<float>(
float (x (5)), Eigen::Vector3f::UnitZ ());
210 Eigen::Affine3f _affine;
212 trans = _affine.matrix ();
270 Eigen::Matrix<double, 6, 6> &hessian,
272 Eigen::Matrix<double, 6, 1> &p,
273 bool compute_hessian =
true);
285 Eigen::Matrix<double, 6, 6> &hessian,
286 Eigen::Vector3d &x_trans, Eigen::Matrix3d &c_inv,
287 bool compute_hessian =
true);
314 Eigen::Matrix<double, 6, 1> &p);
324 Eigen::Vector3d &x_trans, Eigen::Matrix3d &c_inv);
341 Eigen::Matrix<double, 6, 1> &step_dir,
343 double step_max,
double step_min,
345 Eigen::Matrix<double, 6, 1> &score_gradient,
346 Eigen::Matrix<double, 6, 6> &hessian,
365 double &a_u,
double &f_u,
double &g_u,
366 double a_t,
double f_t,
double g_t);
386 double a_u,
double f_u,
double g_u,
387 double a_t,
double f_t,
double g_t);
401 return (f_a - f_0 - mu * g_0 * a);
414 return (g_a - mu * g_0);
461 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
467 #include <pcl/registration/impl/ndt.hpp>
469 #endif // PCL_REGISTRATION_NDT_H_
void filter(PointCloud &output, bool searchable=false)
Filter cloud and initializes voxel structure.
int nr_iterations_
The number of iterations the internal optimization ran for (used internally).
const Leaf * LeafConstPtr
Const pointer to VoxelGridCovariance leaf structure.
virtual void setInputTarget(const PointCloudTargetConstPtr &cloud)
Provide a pointer to the input target (e.g., the point cloud that we want to align the input source t...
PointCloudTargetConstPtr target_
The input point cloud dataset target.
Registration represents the base registration class for general purpose, ICP-like methods...
boost::shared_ptr< ::pcl::PointIndices > Ptr
virtual void setInputCloud(const PointCloudConstPtr &cloud)
Provide a pointer to the input dataset.
PointCloudConstPtr input_
The input point cloud dataset.
boost::shared_ptr< ::pcl::PointIndices const > ConstPtr
void setLeafSize(const Eigen::Vector4f &leaf_size)
Set the voxel grid leaf size.