#include <ndt_matcher_d2d.h>
Classes | |
struct | MoreThuente |
Public Member Functions | |
bool | covariance (pcl::PointCloud< pcl::PointXYZ > &target, pcl::PointCloud< pcl::PointXYZ > &source, Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > &T, Eigen::MatrixXd &cov) |
bool | covariance (NDTMap &target, NDTMap &source, Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > &T, Eigen::MatrixXd &cov) |
virtual double | derivativesNDT (const std::vector< NDTCell * > &source, const NDTMap &target, Eigen::MatrixXd &score_gradient, Eigen::MatrixXd &Hessian, bool computeHessian) |
bool | match (pcl::PointCloud< pcl::PointXYZ > &target, pcl::PointCloud< pcl::PointXYZ > &source, Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > &T, bool useInitialGuess=false) |
bool | match (NDTMap &target, NDTMap &source, Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > &T, bool useInitialGuess=false) |
NDTMatcherD2D (bool _isIrregularGrid, bool useDefaultGridResolutions, std::vector< double > _resolutions) | |
NDTMatcherD2D () | |
NDTMatcherD2D (const NDTMatcherD2D &other) | |
virtual double | scoreNDT (std::vector< NDTCell * > &source, NDTMap &target) |
virtual double | scoreNDT_OM (NDTMap &source, NDTMap &target) |
virtual double | scoreNDTPositive (std::vector< NDTCell * > &sourceNDT, NDTMap &targetNDT, Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > &T) |
Public Attributes | |
double | current_resolution |
double | DELTA_SCORE |
the change in score after which we converge. Set to 1e-3 in constructor | |
double | finalscore |
int | ITR_MAX |
max iterations, set in constructor | |
int | n_neighbours |
bool | regularize |
bool | step_control |
sets step control on/off. set to true in constructor | |
Protected Member Functions | |
void | computeDerivatives (Eigen::Vector3d &m1, Eigen::Matrix3d C1, bool computeHessian=true) |
void | computeDerivativesLocal (Eigen::Vector3d &m1, Eigen::Matrix3d C1, Eigen::Matrix< double, 3, 6 > &_Jest, Eigen::Matrix< double, 18, 6 > &_Hest, Eigen::Matrix< double, 3, 18 > &_Zest, Eigen::Matrix< double, 18, 18 > &_ZHest, bool computeHessian) |
void | init (bool _isIrregularGrid, bool useDefaultGridResolutions, std::vector< double > _resolutions) |
double | lineSearchMT (Eigen::Matrix< double, 6, 1 > &increment, std::vector< NDTCell * > &source, NDTMap &target) |
double | normalizeAngle (double a) |
virtual bool | update_gradient_hessian (Eigen::MatrixXd &score_gradient, Eigen::MatrixXd &Hessian, const Eigen::Vector3d &m1, const Eigen::Matrix3d &C1, const double &likelihood, bool computeHessian) |
virtual bool | update_gradient_hessian_local (Eigen::MatrixXd &score_gradient, Eigen::MatrixXd &Hessian, const Eigen::Vector3d &m1, const Eigen::Matrix3d &C1, const double &likelihood, const Eigen::Matrix< double, 3, 6 > &_Jest, const Eigen::Matrix< double, 18, 6 > &_Hest, const Eigen::Matrix< double, 3, 18 > &_Zest, const Eigen::Matrix< double, 18, 18 > &_ZHest, bool computeHessian) |
Protected Attributes | |
Eigen::Matrix< double, 3, 3 > | dRdx |
Eigen::Matrix< double, 3, 3 > | dRdxdx |
Eigen::Matrix< double, 3, 3 > | dRdxdy |
Eigen::Matrix< double, 3, 3 > | dRdxdz |
Eigen::Matrix< double, 3, 3 > | dRdy |
Eigen::Matrix< double, 3, 3 > | dRdydy |
Eigen::Matrix< double, 3, 3 > | dRdydz |
Eigen::Matrix< double, 3, 3 > | dRdz |
Eigen::Matrix< double, 3, 3 > | dRdzdz |
Eigen::Matrix< double, 18, 6 > | Hest |
bool | isIrregularGrid |
int | iteration_counter_internal |
Eigen::Matrix< double, 3, 6 > | Jest |
Eigen::Matrix< double, 6, 6 > | JtBJ |
double | lfd1 |
double | lfd2 |
int | NUMBER_OF_ACTIVE_CELLS |
int | NUMBER_OF_POINTS |
Eigen::Matrix< double, 6, 1 > | Q |
std::vector< double > | resolutions |
Eigen::Matrix< double, 1, 3 > | TMP1 |
Eigen::Matrix< double, 1, 3 > | xtB |
Eigen::Matrix< double, 6, 6 > | xtBH |
Eigen::Matrix< double, 6, 1 > | xtBJ |
Eigen::Matrix< double, 6, 6 > | xtBZBJ |
Eigen::Matrix< double, 6, 1 > | xtBZBx |
Eigen::Matrix< double, 6, 6 > | xtBZBZBx |
Eigen::Matrix< double, 6, 6 > | xtBZhBx |
Eigen::Matrix< double, 3, 18 > | Zest |
Eigen::Matrix< double, 18, 18 > | ZHest |
This class implements NDT registration for 3D point cloud scans.
Definition at line 52 of file ndt_matcher_d2d.h.
lslgeneric::NDTMatcherD2D::NDTMatcherD2D | ( | bool | _isIrregularGrid, |
bool | useDefaultGridResolutions, | ||
std::vector< double > | _resolutions | ||
) | [inline] |
parametrized constructor. A default set is (false,false,true,empty_vector). parameters are:
_isIrregularGrid | --- experimental single pass through an irregular grid. also unstable |
useDefaultGridResolutions | --- if set, the following parameter is set to a preset value |
_resolutions | --- if previous bool is not set, these are the resolutions (in reverse order) that we will go through |
Definition at line 61 of file ndt_matcher_d2d.h.
lslgeneric::NDTMatcherD2D::NDTMatcherD2D | ( | ) | [inline] |
Definition at line 66 of file ndt_matcher_d2d.h.
lslgeneric::NDTMatcherD2D::NDTMatcherD2D | ( | const NDTMatcherD2D & | other | ) | [inline] |
Definition at line 70 of file ndt_matcher_d2d.h.
void lslgeneric::NDTMatcherD2D::computeDerivatives | ( | Eigen::Vector3d & | m1, |
Eigen::Matrix3d | C1, | ||
bool | computeHessian = true |
||
) | [protected] |
Definition at line 685 of file ndt_matcher_d2d.cpp.
void lslgeneric::NDTMatcherD2D::computeDerivativesLocal | ( | Eigen::Vector3d & | m1, |
Eigen::Matrix3d | C1, | ||
Eigen::Matrix< double, 3, 6 > & | _Jest, | ||
Eigen::Matrix< double, 18, 6 > & | _Hest, | ||
Eigen::Matrix< double, 3, 18 > & | _Zest, | ||
Eigen::Matrix< double, 18, 18 > & | _ZHest, | ||
bool | computeHessian | ||
) | [protected] |
Definition at line 589 of file ndt_matcher_d2d.cpp.
bool lslgeneric::NDTMatcherD2D::covariance | ( | pcl::PointCloud< pcl::PointXYZ > & | target, |
pcl::PointCloud< pcl::PointXYZ > & | source, | ||
Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > & | T, | ||
Eigen::MatrixXd & | cov | ||
) |
computes the covariance of the match between moving and fixed, at T. note --- computes NDT distributions based on the resolution in res result is returned in cov
Definition at line 2123 of file ndt_matcher_d2d.cpp.
bool lslgeneric::NDTMatcherD2D::covariance | ( | NDTMap & | target, |
NDTMap & | source, | ||
Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > & | T, | ||
Eigen::MatrixXd & | cov | ||
) |
computes the covariance of the match between moving and fixed, at T. result is returned in cov
Definition at line 1994 of file ndt_matcher_d2d.cpp.
double lslgeneric::NDTMatcherD2D::derivativesNDT | ( | const std::vector< NDTCell * > & | source, |
const NDTMap & | target, | ||
Eigen::MatrixXd & | score_gradient, | ||
Eigen::MatrixXd & | Hessian, | ||
bool | computeHessian | ||
) | [virtual] |
Reimplemented in lslgeneric::NDTMatcherFeatureD2D.
Definition at line 1029 of file ndt_matcher_d2d.cpp.
void lslgeneric::NDTMatcherD2D::init | ( | bool | _isIrregularGrid, |
bool | useDefaultGridResolutions, | ||
std::vector< double > | _resolutions | ||
) | [protected] |
Definition at line 15 of file ndt_matcher_d2d.cpp.
double lslgeneric::NDTMatcherD2D::lineSearchMT | ( | Eigen::Matrix< double, 6, 1 > & | increment, |
std::vector< NDTCell * > & | source, | ||
NDTMap & | target | ||
) | [protected] |
Definition at line 1269 of file ndt_matcher_d2d.cpp.
bool lslgeneric::NDTMatcherD2D::match | ( | pcl::PointCloud< pcl::PointXYZ > & | target, |
pcl::PointCloud< pcl::PointXYZ > & | source, | ||
Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > & | T, | ||
bool | useInitialGuess = false |
||
) |
Register two point clouds. This method builds an NDT representation of the "fixed" point cloud and uses that for registering the "moving" point cloud.
fixed | Reference data. NDT structure is built for this point cloud. |
moving | The output transformation registers this point cloud to fixed . |
T | This is an input/output parameter. The initial value of T gives the initial pose estimate of moving . When the algorithm terminates, T holds the registration result. |
Definition at line 50 of file ndt_matcher_d2d.cpp.
bool lslgeneric::NDTMatcherD2D::match | ( | NDTMap & | target, |
NDTMap & | source, | ||
Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > & | T, | ||
bool | useInitialGuess = false |
||
) |
Registers a point cloud to an NDT structure.
fixed | Reference data. |
moving | The output transformation registers this point cloud to fixed . |
T | This is an input/output parameter. The initial value of T gives the initial pose estimate of moving . When the algorithm terminates, T holds the registration result. |
Definition at line 150 of file ndt_matcher_d2d.cpp.
double lslgeneric::NDTMatcherD2D::normalizeAngle | ( | double | a | ) | [protected] |
Definition at line 1832 of file ndt_matcher_d2d.cpp.
double lslgeneric::NDTMatcherD2D::scoreNDT | ( | std::vector< NDTCell * > & | source, |
NDTMap & | target | ||
) | [virtual] |
Definition at line 776 of file ndt_matcher_d2d.cpp.
double lslgeneric::NDTMatcherD2D::scoreNDT_OM | ( | NDTMap & | source, |
NDTMap & | target | ||
) | [virtual] |
Definition at line 836 of file ndt_matcher_d2d.cpp.
double lslgeneric::NDTMatcherD2D::scoreNDTPositive | ( | std::vector< NDTCell * > & | sourceNDT, |
NDTMap & | targetNDT, | ||
Eigen::Transform< double, 3, Eigen::Affine, Eigen::ColMajor > & | T | ||
) | [virtual] |
Added by Jari - Uses 1-p as a score instead of -p
Definition at line 947 of file ndt_matcher_d2d.cpp.
bool lslgeneric::NDTMatcherD2D::update_gradient_hessian | ( | Eigen::MatrixXd & | score_gradient, |
Eigen::MatrixXd & | Hessian, | ||
const Eigen::Vector3d & | m1, | ||
const Eigen::Matrix3d & | C1, | ||
const double & | likelihood, | ||
bool | computeHessian | ||
) | [protected, virtual] |
Definition at line 500 of file ndt_matcher_d2d.cpp.
bool lslgeneric::NDTMatcherD2D::update_gradient_hessian_local | ( | Eigen::MatrixXd & | score_gradient, |
Eigen::MatrixXd & | Hessian, | ||
const Eigen::Vector3d & | m1, | ||
const Eigen::Matrix3d & | C1, | ||
const double & | likelihood, | ||
const Eigen::Matrix< double, 3, 6 > & | _Jest, | ||
const Eigen::Matrix< double, 18, 6 > & | _Hest, | ||
const Eigen::Matrix< double, 3, 18 > & | _Zest, | ||
const Eigen::Matrix< double, 18, 18 > & | _ZHest, | ||
bool | computeHessian | ||
) | [protected, virtual] |
Definition at line 439 of file ndt_matcher_d2d.cpp.
Definition at line 154 of file ndt_matcher_d2d.h.
the change in score after which we converge. Set to 1e-3 in constructor
Definition at line 160 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,3,3> lslgeneric::NDTMatcherD2D::dRdx [protected] |
Definition at line 173 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,3,3> lslgeneric::NDTMatcherD2D::dRdxdx [protected] |
Definition at line 174 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,3,3> lslgeneric::NDTMatcherD2D::dRdxdy [protected] |
Definition at line 174 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,3,3> lslgeneric::NDTMatcherD2D::dRdxdz [protected] |
Definition at line 174 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,3,3> lslgeneric::NDTMatcherD2D::dRdy [protected] |
Definition at line 173 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,3,3> lslgeneric::NDTMatcherD2D::dRdydy [protected] |
Definition at line 174 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,3,3> lslgeneric::NDTMatcherD2D::dRdydz [protected] |
Definition at line 174 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,3,3> lslgeneric::NDTMatcherD2D::dRdz [protected] |
Definition at line 173 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,3,3> lslgeneric::NDTMatcherD2D::dRdzdz [protected] |
Definition at line 174 of file ndt_matcher_d2d.h.
Definition at line 153 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,18,6> lslgeneric::NDTMatcherD2D::Hest [protected] |
Definition at line 169 of file ndt_matcher_d2d.h.
bool lslgeneric::NDTMatcherD2D::isIrregularGrid [protected] |
Definition at line 180 of file ndt_matcher_d2d.h.
int lslgeneric::NDTMatcherD2D::iteration_counter_internal [protected] |
Definition at line 178 of file ndt_matcher_d2d.h.
max iterations, set in constructor
Definition at line 156 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,3,6> lslgeneric::NDTMatcherD2D::Jest [protected] |
Definition at line 168 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,6,6> lslgeneric::NDTMatcherD2D::JtBJ [protected] |
Definition at line 261 of file ndt_matcher_d2d.h.
double lslgeneric::NDTMatcherD2D::lfd1 [protected] |
Definition at line 176 of file ndt_matcher_d2d.h.
double lslgeneric::NDTMatcherD2D::lfd2 [protected] |
Definition at line 176 of file ndt_matcher_d2d.h.
Definition at line 165 of file ndt_matcher_d2d.h.
int lslgeneric::NDTMatcherD2D::NUMBER_OF_ACTIVE_CELLS [protected] |
Definition at line 255 of file ndt_matcher_d2d.h.
int lslgeneric::NDTMatcherD2D::NUMBER_OF_POINTS [protected] |
Definition at line 240 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,6,1> lslgeneric::NDTMatcherD2D::Q [protected] |
Definition at line 259 of file ndt_matcher_d2d.h.
Definition at line 163 of file ndt_matcher_d2d.h.
std::vector<double> lslgeneric::NDTMatcherD2D::resolutions [protected] |
Definition at line 181 of file ndt_matcher_d2d.h.
sets step control on/off. set to true in constructor
Definition at line 158 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,1,3> lslgeneric::NDTMatcherD2D::TMP1 [protected] |
Definition at line 262 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,1,3> lslgeneric::NDTMatcherD2D::xtB [protected] |
Definition at line 262 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,6,6> lslgeneric::NDTMatcherD2D::xtBH [protected] |
Definition at line 261 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,6,1> lslgeneric::NDTMatcherD2D::xtBJ [protected] |
Definition at line 259 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,6,6> lslgeneric::NDTMatcherD2D::xtBZBJ [protected] |
Definition at line 261 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,6,1> lslgeneric::NDTMatcherD2D::xtBZBx [protected] |
Definition at line 259 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,6,6> lslgeneric::NDTMatcherD2D::xtBZBZBx [protected] |
Definition at line 261 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,6,6> lslgeneric::NDTMatcherD2D::xtBZhBx [protected] |
Definition at line 261 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,3,18> lslgeneric::NDTMatcherD2D::Zest [protected] |
Definition at line 170 of file ndt_matcher_d2d.h.
Eigen::Matrix<double,18,18> lslgeneric::NDTMatcherD2D::ZHest [protected] |
Definition at line 171 of file ndt_matcher_d2d.h.