|
Point Cloud Library (PCL)
1.7.2
|
IterativeClosestPointNonLinear is an ICP variant that uses Levenberg-Marquardt optimization backend. More...
#include <pcl/registration/icp_nl.h>
Inheritance diagram for pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >:Public Member Functions | |
| IterativeClosestPointNonLinear () | |
| Empty constructor. | |
Public Member Functions inherited from pcl::IterativeClosestPoint< PointSource, PointTarget, Scalar > | |
| IterativeClosestPoint () | |
| Empty constructor. | |
| virtual | ~IterativeClosestPoint () |
| Empty destructor. | |
| pcl::registration::DefaultConvergenceCriteria < Scalar >::Ptr | getConvergeCriteria () |
| Returns a pointer to the DefaultConvergenceCriteria used by the IterativeClosestPoint class. | |
| virtual void | setInputSource (const PointCloudSourceConstPtr &cloud) |
| Provide a pointer to the input source (e.g., the point cloud that we want to align to the target) | |
| virtual void | setInputTarget (const PointCloudTargetConstPtr &cloud) |
| Provide a pointer to the input target (e.g., the point cloud that we want to align to the target) | |
| void | setUseReciprocalCorrespondences (bool use_reciprocal_correspondence) |
| Set whether to use reciprocal correspondence or not. | |
| bool | getUseReciprocalCorrespondences () const |
| Obtain whether reciprocal correspondence are used or not. | |
Public Member Functions inherited from pcl::Registration< PointSource, PointTarget, Scalar > | |
| Registration () | |
| Empty constructor. | |
| virtual | ~Registration () |
| destructor. | |
| void | setTransformationEstimation (const TransformationEstimationPtr &te) |
| Provide a pointer to the transformation estimation object. | |
| void | setCorrespondenceEstimation (const CorrespondenceEstimationPtr &ce) |
| Provide a pointer to the correspondence estimation object. | |
| void | setInputCloud (const PointCloudSourceConstPtr &cloud) |
| Provide a pointer to the input source (e.g., the point cloud that we want to align to the target) | |
| PointCloudSourceConstPtr const | getInputCloud () |
| Get a pointer to the input point cloud dataset target. | |
| virtual void | setInputSource (const PointCloudSourceConstPtr &cloud) |
| Provide a pointer to the input source (e.g., the point cloud that we want to align to the target) | |
| PointCloudSourceConstPtr const | getInputSource () |
| Get a pointer to the input point cloud dataset target. | |
| 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 to) | |
| PointCloudTargetConstPtr const | getInputTarget () |
| Get a pointer to the input point cloud dataset target. | |
| void | setSearchMethodTarget (const KdTreePtr &tree, bool force_no_recompute=false) |
| Provide a pointer to the search object used to find correspondences in the target cloud. | |
| KdTreePtr | getSearchMethodTarget () const |
| Get a pointer to the search method used to find correspondences in the target cloud. | |
| void | setSearchMethodSource (const KdTreeReciprocalPtr &tree, bool force_no_recompute=false) |
| Provide a pointer to the search object used to find correspondences in the source cloud (usually used by reciprocal correspondence finding). | |
| KdTreeReciprocalPtr | getSearchMethodSource () const |
| Get a pointer to the search method used to find correspondences in the source cloud. | |
| Matrix4 | getFinalTransformation () |
| Get the final transformation matrix estimated by the registration method. | |
| Matrix4 | getLastIncrementalTransformation () |
| Get the last incremental transformation matrix estimated by the registration method. | |
| void | setMaximumIterations (int nr_iterations) |
| Set the maximum number of iterations the internal optimization should run for. | |
| int | getMaximumIterations () |
| Get the maximum number of iterations the internal optimization should run for, as set by the user. | |
| void | setRANSACIterations (int ransac_iterations) |
| Set the number of iterations RANSAC should run for. | |
| double | getRANSACIterations () |
| Get the number of iterations RANSAC should run for, as set by the user. | |
| void | setRANSACOutlierRejectionThreshold (double inlier_threshold) |
| Set the inlier distance threshold for the internal RANSAC outlier rejection loop. | |
| double | getRANSACOutlierRejectionThreshold () |
| Get the inlier distance threshold for the internal outlier rejection loop as set by the user. | |
| void | setMaxCorrespondenceDistance (double distance_threshold) |
| Set the maximum distance threshold between two correspondent points in source <-> target. | |
| double | getMaxCorrespondenceDistance () |
| Get the maximum distance threshold between two correspondent points in source <-> target. | |
| void | setTransformationEpsilon (double epsilon) |
| Set the transformation epsilon (maximum allowable difference between two consecutive transformations) in order for an optimization to be considered as having converged to the final solution. | |
| double | getTransformationEpsilon () |
| Get the transformation epsilon (maximum allowable difference between two consecutive transformations) as set by the user. | |
| void | setEuclideanFitnessEpsilon (double epsilon) |
| Set the maximum allowed Euclidean error between two consecutive steps in the ICP loop, before the algorithm is considered to have converged. | |
| double | getEuclideanFitnessEpsilon () |
| Get the maximum allowed distance error before the algorithm will be considered to have converged, as set by the user. | |
| void | setPointRepresentation (const PointRepresentationConstPtr &point_representation) |
| Provide a boost shared pointer to the PointRepresentation to be used when comparing points. | |
| template<typename FunctionSignature > | |
| bool | registerVisualizationCallback (boost::function< FunctionSignature > &visualizerCallback) |
| Register the user callback function which will be called from registration thread in order to update point cloud obtained after each iteration. | |
| double | getFitnessScore (double max_range=std::numeric_limits< double >::max()) |
| Obtain the Euclidean fitness score (e.g., sum of squared distances from the source to the target) | |
| double | getFitnessScore (const std::vector< float > &distances_a, const std::vector< float > &distances_b) |
| Obtain the Euclidean fitness score (e.g., sum of squared distances from the source to the target) from two sets of correspondence distances (distances between source and target points) | |
| bool | hasConverged () |
| Return the state of convergence after the last align run. | |
| void | align (PointCloudSource &output) |
| Call the registration algorithm which estimates the transformation and returns the transformed source (input) as output. | |
| void | align (PointCloudSource &output, const Matrix4 &guess) |
| Call the registration algorithm which estimates the transformation and returns the transformed source (input) as output. | |
| const std::string & | getClassName () const |
| Abstract class get name method. | |
| bool | initCompute () |
| Internal computation initalization. | |
| bool | initComputeReciprocal () |
| Internal computation when reciprocal lookup is needed. | |
| void | addCorrespondenceRejector (const CorrespondenceRejectorPtr &rejector) |
| Add a new correspondence rejector to the list. | |
| std::vector < CorrespondenceRejectorPtr > | getCorrespondenceRejectors () |
| Get the list of correspondence rejectors. | |
| bool | removeCorrespondenceRejector (unsigned int i) |
| Remove the i-th correspondence rejector in the list. | |
| void | clearCorrespondenceRejectors () |
| Clear the list of correspondence rejectors. | |
Public Member Functions inherited from pcl::PCLBase< PointSource > | |
| PCLBase () | |
| Empty constructor. | |
| PCLBase (const PCLBase &base) | |
| Copy constructor. | |
| virtual | ~PCLBase () |
| Destructor. | |
| PointCloudConstPtr const | getInputCloud () const |
| Get a pointer to the input point cloud dataset. | |
| virtual void | setIndices (const IndicesPtr &indices) |
| Provide a pointer to the vector of indices that represents the input data. | |
| virtual void | setIndices (const IndicesConstPtr &indices) |
| Provide a pointer to the vector of indices that represents the input data. | |
| virtual void | setIndices (const PointIndicesConstPtr &indices) |
| Provide a pointer to the vector of indices that represents the input data. | |
| virtual void | setIndices (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols) |
| Set the indices for the points laying within an interest region of the point cloud. | |
| IndicesPtr const | getIndices () |
| Get a pointer to the vector of indices used. | |
| IndicesConstPtr const | getIndices () const |
| Get a pointer to the vector of indices used. | |
| const PointSource & | operator[] (size_t pos) const |
| Override PointCloud operator[] to shorten code. | |
Additional Inherited Members | |
Public Attributes inherited from pcl::IterativeClosestPoint< PointSource, PointTarget, Scalar > | |
| pcl::registration::DefaultConvergenceCriteria < Scalar >::Ptr | convergence_criteria_ |
Protected Member Functions inherited from pcl::IterativeClosestPoint< PointSource, PointTarget, Scalar > | |
| virtual void | transformCloud (const PointCloudSource &input, PointCloudSource &output, const Matrix4 &transform) |
| Apply a rigid transform to a given dataset. | |
| virtual void | computeTransformation (PointCloudSource &output, const Matrix4 &guess) |
| Rigid transformation computation method with initial guess. | |
| virtual void | determineRequiredBlobData () |
| Looks at the Estimators and Rejectors and determines whether their blob-setter methods need to be called. | |
Protected Attributes inherited from pcl::IterativeClosestPoint< PointSource, PointTarget, Scalar > | |
| size_t | x_idx_offset_ |
| XYZ fields offset. | |
| size_t | y_idx_offset_ |
| size_t | z_idx_offset_ |
| size_t | nx_idx_offset_ |
| Normal fields offset. | |
| size_t | ny_idx_offset_ |
| size_t | nz_idx_offset_ |
| bool | use_reciprocal_correspondence_ |
| The correspondence type used for correspondence estimation. | |
| bool | source_has_normals_ |
| Internal check whether source dataset has normals or not. | |
| bool | target_has_normals_ |
| Internal check whether target dataset has normals or not. | |
| bool | need_source_blob_ |
| Checks for whether estimators and rejectors need various data. | |
| bool | need_target_blob_ |
IterativeClosestPointNonLinear is an ICP variant that uses Levenberg-Marquardt optimization backend.
The resultant transformation is optimized as a quaternion.
The algorithm has several termination criteria:
| typedef boost::shared_ptr< const IterativeClosestPointNonLinear<PointSource, PointTarget, Scalar> > pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >::ConstPtr |
| typedef Registration<PointSource, PointTarget, Scalar>::Matrix4 pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >::Matrix4 |
| typedef boost::shared_ptr< IterativeClosestPointNonLinear<PointSource, PointTarget, Scalar> > pcl::IterativeClosestPointNonLinear< PointSource, PointTarget, Scalar >::Ptr |
|
inline |
Empty constructor.
Definition at line 83 of file icp_nl.h.
References pcl::Registration< PointSource, PointTarget, Scalar >::min_number_correspondences_, pcl::Registration< PointSource, PointTarget, Scalar >::reg_name_, and pcl::Registration< PointSource, PointTarget, Scalar >::transformation_estimation_.