Template Class LsqRegistration

Inheritance Relationships

Base Type

  • public pcl::Registration< PointSource, PointTarget, float >

Derived Types

Class Documentation

template<typename PointSource, typename PointTarget>
class LsqRegistration : public pcl::Registration<PointSource, PointTarget, float>

Subclassed by fast_gicp::FastGICP< PointSource, PointTarget, SearchMethodSource, SearchMethodTarget >, fast_gicp::FastVGICPCuda< PointSource, PointTarget >, fast_gicp::NDTCuda< PointSource, PointTarget >

Public Types

using Scalar = float
using Matrix4 = typename pcl::Registration<PointSource, PointTarget, Scalar>::Matrix4
using PointCloudSource = typename pcl::Registration<PointSource, PointTarget, Scalar>::PointCloudSource
using PointCloudSourcePtr = typename PointCloudSource::Ptr
using PointCloudSourceConstPtr = typename PointCloudSource::ConstPtr
using PointCloudTarget = typename pcl::Registration<PointSource, PointTarget, Scalar>::PointCloudTarget
using PointCloudTargetPtr = typename PointCloudTarget::Ptr
using PointCloudTargetConstPtr = typename PointCloudTarget::ConstPtr
using Ptr = pcl::shared_ptr<LsqRegistration<PointSource, PointTarget>>
using ConstPtr = pcl::shared_ptr<const LsqRegistration<PointSource, PointTarget>>

Public Functions

EIGEN_MAKE_ALIGNED_OPERATOR_NEW LsqRegistration()
virtual ~LsqRegistration()
void setRotationEpsilon(double eps)
void setInitialLambdaFactor(double init_lambda_factor)
void setDebugPrint(bool lm_debug_print)
const Eigen::Matrix<double, 6, 6> &getFinalHessian() const
double evaluateCost(const Eigen::Matrix4f &relative_pose, Eigen::Matrix<double, 6, 6> *H = nullptr, Eigen::Matrix<double, 6, 1> *b = nullptr)
inline virtual void swapSourceAndTarget()
inline virtual void clearSource()
inline virtual void clearTarget()

Protected Functions

virtual void computeTransformation(PointCloudSource &output, const Matrix4 &guess) override
bool is_converged(const Eigen::Isometry3d &delta) const
virtual double linearize(const Eigen::Isometry3d &trans, Eigen::Matrix<double, 6, 6> *H = nullptr, Eigen::Matrix<double, 6, 1> *b = nullptr) = 0
virtual double compute_error(const Eigen::Isometry3d &trans) = 0
bool step_optimize(Eigen::Isometry3d &x0, Eigen::Isometry3d &delta)
bool step_gn(Eigen::Isometry3d &x0, Eigen::Isometry3d &delta)
bool step_lm(Eigen::Isometry3d &x0, Eigen::Isometry3d &delta)

Protected Attributes

double rotation_epsilon_
LSQ_OPTIMIZER_TYPE lsq_optimizer_type_
int lm_max_iterations_
double lm_init_lambda_factor_
double lm_lambda_
bool lm_debug_print_
Eigen::Matrix<double, 6, 6> final_hessian_