cpp-toolbox  0.0.1
A toolbox library for C++
Loading...
Searching...
No Matches
toolbox::pcl::base_fine_registration_t< Derived, DataType > Class Template Reference

细配准算法的基类(CRTP模式) / Base class for fine registration algorithms (CRTP pattern) More...

#include <base_fine_registration.hpp>

Public Types

using point_cloud = toolbox::types::point_cloud_t< DataType >
 
using point_cloud_ptr = std::shared_ptr< point_cloud >
 
using transformation_t = Eigen::Matrix< DataType, 4, 4 >
 
using result_type = fine_registration_result_t< DataType >
 
using iteration_callback_t = std::function< bool(const iteration_state_t< DataType > &)>
 

Public Member Functions

 base_fine_registration_t ()=default
 
virtual ~base_fine_registration_t ()=default
 
 base_fine_registration_t (const base_fine_registration_t &)=delete
 
base_fine_registration_toperator= (const base_fine_registration_t &)=delete
 
 base_fine_registration_t (base_fine_registration_t &&)=default
 
base_fine_registration_toperator= (base_fine_registration_t &&)=default
 
void set_source (const point_cloud_ptr &source)
 设置源点云 / Set source point cloud
 
void set_target (const point_cloud_ptr &target)
 设置目标点云 / Set target point cloud
 
void set_max_iterations (std::size_t max_iterations)
 设置最大迭代次数 / Set maximum iterations
 
std::size_t get_max_iterations () const
 获取最大迭代次数 / Get maximum iterations
 
void set_transformation_epsilon (DataType epsilon)
 设置变换epsilon(收敛阈值) / Set transformation epsilon (convergence threshold)
 
DataType get_transformation_epsilon () const
 获取变换epsilon / Get transformation epsilon
 
void set_euclidean_fitness_epsilon (DataType epsilon)
 设置欧氏距离epsilon / Set Euclidean fitness epsilon
 
DataType get_euclidean_fitness_epsilon () const
 获取欧氏距离epsilon / Get Euclidean fitness epsilon
 
void set_max_correspondence_distance (DataType distance)
 设置最大对应距离 / Set maximum correspondence distance
 
DataType get_max_correspondence_distance () const
 获取最大对应距离 / Get maximum correspondence distance
 
void set_record_history (bool record)
 设置是否记录迭代历史 / Set whether to record iteration history
 
bool get_record_history () const
 获取是否记录迭代历史 / Get whether to record iteration history
 
void set_iteration_callback (iteration_callback_t callback)
 设置迭代回调函数 / Set iteration callback function
 
correspondence_type_e get_correspondence_type () const
 获取对应关系类型 / Get correspondence type
 
bool has_source_normals () const
 检查源点云是否有法线 / Check if source cloud has normals
 
bool has_target_normals () const
 检查目标点云是否有法线 / Check if target cloud has normals
 
bool align (const transformation_t &initial_guess, result_type &result)
 执行配准 / Perform registration
 
bool align (result_type &result)
 执行配准(使用单位矩阵作为初始猜测) / Perform registration (using identity as initial guess)
 

Protected Member Functions

bool validate_input () const
 验证输入 / Validate input
 
bool validate_input_impl () const
 派生类的额外输入验证 / Additional input validation for derived class
 
bool has_converged (std::size_t iteration, const transformation_t &current_transform, const transformation_t &previous_transform, DataType current_error, DataType previous_error, std::string &termination_reason) const
 检查收敛条件 / Check convergence criteria
 
bool has_converged_impl (std::size_t, const transformation_t &, const transformation_t &, DataType, DataType, std::string &) const
 派生类的额外收敛检查 / Additional convergence check for derived class
 
void preprocess_impl ()
 预处理钩子(派生类实现) / Preprocessing hook (derived class implementation)
 
void record_iteration (result_type &result, std::size_t iteration, const transformation_t &transform, DataType error, DataType error_change, std::size_t num_correspondences)
 记录迭代状态 / Record iteration state
 

Protected Attributes

point_cloud_ptr m_source_cloud
 
point_cloud_ptr m_target_cloud
 
std::size_t m_max_iterations = 50
 
DataType m_transformation_epsilon = static_cast<DataType>(1e-8)
 
DataType m_euclidean_fitness_epsilon = static_cast<DataType>(1e-6)
 
DataType m_max_correspondence_distance = static_cast<DataType>(0.05)
 
bool m_source_updated = false
 
bool m_target_updated = false
 
bool m_record_history = false
 
iteration_callback_t m_iteration_callback
 

Detailed Description

template<typename Derived, typename DataType>
class toolbox::pcl::base_fine_registration_t< Derived, DataType >

细配准算法的基类(CRTP模式) / Base class for fine registration algorithms (CRTP pattern)

Template Parameters
Derived派生类类型 / Derived class type
DataType数据类型 / Data type

Member Typedef Documentation

◆ iteration_callback_t

template<typename Derived , typename DataType >
using toolbox::pcl::base_fine_registration_t< Derived, DataType >::iteration_callback_t = std::function<bool(const iteration_state_t<DataType>&)>

◆ point_cloud

template<typename Derived , typename DataType >
using toolbox::pcl::base_fine_registration_t< Derived, DataType >::point_cloud = toolbox::types::point_cloud_t<DataType>

◆ point_cloud_ptr

template<typename Derived , typename DataType >
using toolbox::pcl::base_fine_registration_t< Derived, DataType >::point_cloud_ptr = std::shared_ptr<point_cloud>

◆ result_type

template<typename Derived , typename DataType >
using toolbox::pcl::base_fine_registration_t< Derived, DataType >::result_type = fine_registration_result_t<DataType>

◆ transformation_t

template<typename Derived , typename DataType >
using toolbox::pcl::base_fine_registration_t< Derived, DataType >::transformation_t = Eigen::Matrix<DataType, 4, 4>

Constructor & Destructor Documentation

◆ base_fine_registration_t() [1/3]

template<typename Derived , typename DataType >
toolbox::pcl::base_fine_registration_t< Derived, DataType >::base_fine_registration_t ( )
default

◆ ~base_fine_registration_t()

template<typename Derived , typename DataType >
virtual toolbox::pcl::base_fine_registration_t< Derived, DataType >::~base_fine_registration_t ( )
virtualdefault

◆ base_fine_registration_t() [2/3]

template<typename Derived , typename DataType >
toolbox::pcl::base_fine_registration_t< Derived, DataType >::base_fine_registration_t ( const base_fine_registration_t< Derived, DataType > &  )
delete

◆ base_fine_registration_t() [3/3]

template<typename Derived , typename DataType >
toolbox::pcl::base_fine_registration_t< Derived, DataType >::base_fine_registration_t ( base_fine_registration_t< Derived, DataType > &&  )
default

Member Function Documentation

◆ align() [1/2]

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::align ( const transformation_t initial_guess,
result_type result 
)
inline

执行配准 / Perform registration

Parameters
initial_guess初始变换估计 / Initial transformation guess
result[out] 配准结果 / Registration result
Returns
是否成功 / Whether successful

◆ align() [2/2]

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::align ( result_type result)
inline

执行配准(使用单位矩阵作为初始猜测) / Perform registration (using identity as initial guess)

◆ get_correspondence_type()

template<typename Derived , typename DataType >
correspondence_type_e toolbox::pcl::base_fine_registration_t< Derived, DataType >::get_correspondence_type ( ) const
inline

获取对应关系类型 / Get correspondence type

◆ get_euclidean_fitness_epsilon()

template<typename Derived , typename DataType >
DataType toolbox::pcl::base_fine_registration_t< Derived, DataType >::get_euclidean_fitness_epsilon ( ) const
inline

获取欧氏距离epsilon / Get Euclidean fitness epsilon

◆ get_max_correspondence_distance()

template<typename Derived , typename DataType >
DataType toolbox::pcl::base_fine_registration_t< Derived, DataType >::get_max_correspondence_distance ( ) const
inline

获取最大对应距离 / Get maximum correspondence distance

◆ get_max_iterations()

template<typename Derived , typename DataType >
std::size_t toolbox::pcl::base_fine_registration_t< Derived, DataType >::get_max_iterations ( ) const
inline

获取最大迭代次数 / Get maximum iterations

◆ get_record_history()

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::get_record_history ( ) const
inline

获取是否记录迭代历史 / Get whether to record iteration history

◆ get_transformation_epsilon()

template<typename Derived , typename DataType >
DataType toolbox::pcl::base_fine_registration_t< Derived, DataType >::get_transformation_epsilon ( ) const
inline

获取变换epsilon / Get transformation epsilon

◆ has_converged()

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::has_converged ( std::size_t  iteration,
const transformation_t current_transform,
const transformation_t previous_transform,
DataType  current_error,
DataType  previous_error,
std::string &  termination_reason 
) const
inlineprotected

检查收敛条件 / Check convergence criteria

◆ has_converged_impl()

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::has_converged_impl ( std::size_t  ,
const transformation_t ,
const transformation_t ,
DataType  ,
DataType  ,
std::string &   
) const
inlineprotected

派生类的额外收敛检查 / Additional convergence check for derived class

◆ has_source_normals()

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::has_source_normals ( ) const
inline

检查源点云是否有法线 / Check if source cloud has normals

◆ has_target_normals()

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::has_target_normals ( ) const
inline

检查目标点云是否有法线 / Check if target cloud has normals

◆ operator=() [1/2]

template<typename Derived , typename DataType >
base_fine_registration_t & toolbox::pcl::base_fine_registration_t< Derived, DataType >::operator= ( base_fine_registration_t< Derived, DataType > &&  )
default

◆ operator=() [2/2]

template<typename Derived , typename DataType >
base_fine_registration_t & toolbox::pcl::base_fine_registration_t< Derived, DataType >::operator= ( const base_fine_registration_t< Derived, DataType > &  )
delete

◆ preprocess_impl()

template<typename Derived , typename DataType >
void toolbox::pcl::base_fine_registration_t< Derived, DataType >::preprocess_impl ( )
inlineprotected

预处理钩子(派生类实现) / Preprocessing hook (derived class implementation)

◆ record_iteration()

template<typename Derived , typename DataType >
void toolbox::pcl::base_fine_registration_t< Derived, DataType >::record_iteration ( result_type result,
std::size_t  iteration,
const transformation_t transform,
DataType  error,
DataType  error_change,
std::size_t  num_correspondences 
)
inlineprotected

记录迭代状态 / Record iteration state

◆ set_euclidean_fitness_epsilon()

template<typename Derived , typename DataType >
void toolbox::pcl::base_fine_registration_t< Derived, DataType >::set_euclidean_fitness_epsilon ( DataType  epsilon)
inline

设置欧氏距离epsilon / Set Euclidean fitness epsilon

◆ set_iteration_callback()

template<typename Derived , typename DataType >
void toolbox::pcl::base_fine_registration_t< Derived, DataType >::set_iteration_callback ( iteration_callback_t  callback)
inline

设置迭代回调函数 / Set iteration callback function

Parameters
callback回调函数,返回false可提前终止 / Callback function, return false to terminate early

◆ set_max_correspondence_distance()

template<typename Derived , typename DataType >
void toolbox::pcl::base_fine_registration_t< Derived, DataType >::set_max_correspondence_distance ( DataType  distance)
inline

设置最大对应距离 / Set maximum correspondence distance

◆ set_max_iterations()

template<typename Derived , typename DataType >
void toolbox::pcl::base_fine_registration_t< Derived, DataType >::set_max_iterations ( std::size_t  max_iterations)
inline

设置最大迭代次数 / Set maximum iterations

◆ set_record_history()

template<typename Derived , typename DataType >
void toolbox::pcl::base_fine_registration_t< Derived, DataType >::set_record_history ( bool  record)
inline

设置是否记录迭代历史 / Set whether to record iteration history

◆ set_source()

template<typename Derived , typename DataType >
void toolbox::pcl::base_fine_registration_t< Derived, DataType >::set_source ( const point_cloud_ptr source)
inline

设置源点云 / Set source point cloud

◆ set_target()

template<typename Derived , typename DataType >
void toolbox::pcl::base_fine_registration_t< Derived, DataType >::set_target ( const point_cloud_ptr target)
inline

设置目标点云 / Set target point cloud

◆ set_transformation_epsilon()

template<typename Derived , typename DataType >
void toolbox::pcl::base_fine_registration_t< Derived, DataType >::set_transformation_epsilon ( DataType  epsilon)
inline

设置变换epsilon(收敛阈值) / Set transformation epsilon (convergence threshold)

◆ validate_input()

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::validate_input ( ) const
inlineprotected

验证输入 / Validate input

◆ validate_input_impl()

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::validate_input_impl ( ) const
inlineprotected

派生类的额外输入验证 / Additional input validation for derived class

Member Data Documentation

◆ m_euclidean_fitness_epsilon

template<typename Derived , typename DataType >
DataType toolbox::pcl::base_fine_registration_t< Derived, DataType >::m_euclidean_fitness_epsilon = static_cast<DataType>(1e-6)
protected

◆ m_iteration_callback

template<typename Derived , typename DataType >
iteration_callback_t toolbox::pcl::base_fine_registration_t< Derived, DataType >::m_iteration_callback
protected

◆ m_max_correspondence_distance

template<typename Derived , typename DataType >
DataType toolbox::pcl::base_fine_registration_t< Derived, DataType >::m_max_correspondence_distance = static_cast<DataType>(0.05)
protected

◆ m_max_iterations

template<typename Derived , typename DataType >
std::size_t toolbox::pcl::base_fine_registration_t< Derived, DataType >::m_max_iterations = 50
protected

◆ m_record_history

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::m_record_history = false
protected

◆ m_source_cloud

template<typename Derived , typename DataType >
point_cloud_ptr toolbox::pcl::base_fine_registration_t< Derived, DataType >::m_source_cloud
protected

◆ m_source_updated

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::m_source_updated = false
protected

◆ m_target_cloud

template<typename Derived , typename DataType >
point_cloud_ptr toolbox::pcl::base_fine_registration_t< Derived, DataType >::m_target_cloud
protected

◆ m_target_updated

template<typename Derived , typename DataType >
bool toolbox::pcl::base_fine_registration_t< Derived, DataType >::m_target_updated = false
protected

◆ m_transformation_epsilon

template<typename Derived , typename DataType >
DataType toolbox::pcl::base_fine_registration_t< Derived, DataType >::m_transformation_epsilon = static_cast<DataType>(1e-8)
protected

The documentation for this class was generated from the following file: