61 #include "pcl/registration/registration.h" 62 #include "unsupported/Eigen/NonLinearOptimization" 69 namespace localization {
72 template <
typename Po
intSource,
typename Po
intTarget>
91 typedef pcl::search::KdTree<PointTarget>
KdTree;
92 typedef typename pcl::search::KdTree<PointTarget>::Ptr
KdTreePtr;
96 typedef boost::shared_ptr<
99 typedef boost::shared_ptr<
114 const PointCloudTargetConstPtr &cloud) {
115 if (cell_leaf.empty()) {
116 AWARN <<
"Input leaf is empty.";
119 if (cloud->points.empty()) {
120 AWARN <<
"Input target is empty.";
132 if (cloud->points.empty()) {
133 AWARN <<
"Input source is empty.";
201 *trans = Eigen::Translation<float, 3>(
static_cast<float>(x(0)),
202 static_cast<float>(x(1)),
203 static_cast<float>(x(2))) *
204 Eigen::AngleAxis<float>(
static_cast<float>(x(3)),
205 Eigen::Vector3f::UnitX()) *
206 Eigen::AngleAxis<float>(static_cast<float>(x(4)),
207 Eigen::Vector3f::UnitY()) *
208 Eigen::AngleAxis<float>(static_cast<float>(x(5)),
209 Eigen::Vector3f::UnitZ());
217 *trans = _affine.matrix();
231 double GetFitnessScore(
double max_range = std::numeric_limits<double>::max());
252 Eigen::Matrix<double, 6, 6> *hessian,
253 PointCloudSourcePtr trans_cloud,
254 Eigen::Matrix<double, 6, 1> *p,
260 Eigen::Matrix<double, 6, 6> *hessian,
276 const PointCloudSource &trans_cloud,
277 Eigen::Matrix<double, 6, 1> *p);
288 Eigen::Matrix<double, 6, 1> *step_dir,
289 double step_init,
double step_max,
double step_min,
291 Eigen::Matrix<double, 6, 1> *score_gradient,
292 Eigen::Matrix<double, 6, 6> *hessian,
293 PointCloudSourcePtr trans_cloud);
297 double *f_u,
double *g_u,
double a_t,
double f_t,
302 double f_u,
double g_u,
double a_t,
double f_t,
308 double g_0,
double mu = 1.e-4) {
309 return (f_a - f_0 - mu * g_0 * a);
316 return (g_a - mu * g_0);
374 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
381 #include "modules/localization/ndt/ndt_locator/ndt_solver.hpp"
void SetVoxelGridResolution(float lx, float ly, float lz)
Definition: ndt_voxel_grid_covariance.h:250
PlanningContext is the runtime context in planning. It is persistent across multiple frames...
Definition: atomic_hash_map.h:25
void SetInputCloud(const PointCloudConstPtr &cloud)
Provide a pointer to the input dataset.
Definition: ndt_voxel_grid_covariance.h:136
void GetDisplayCloud(pcl::PointCloud< pcl::PointXYZ > *cell_cloud)
Eigen::Vector3d Vector3d
Definition: frame_transform.h:27
Eigen::Affine3f Affine3f
Definition: base_map_fwd.h:28
void SetMapLeftTopCorner(const Eigen::Vector3d &left_top_corner)
Definition: ndt_voxel_grid_covariance.h:246
Eigen::Matrix4f Matrix4f
Definition: base_map_fwd.h:26
Simple structure to hold a centroid, covarince and the number of points in a leaf.
Definition: ndt_voxel_grid_covariance.h:72
#define AWARN
Definition: log.h:43
#define AINFO
Definition: log.h:42
Eigen::Matrix3d Matrix3d
Definition: base_map_fwd.h:33
void filter(const std::vector< Leaf > &cell_leaf, bool searchable=true)
Initializes voxel structure.
Definition: ndt_voxel_grid_covariance.h:154