pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar > Class Template Reference
Module registration

TransformationEstimationSymmetricPointToPlaneLLS implements a Linear Least Squares (LLS) approximation for minimizing the symmetric point-to-plane distance between two clouds of corresponding points with normals. More...

`#include <pcl/registration/transformation_estimation_symmetric_point_to_plane_lls.h>`

Inheritance diagram for pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >:

## Public Types

using | Ptr = shared_ptr< TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar > >
using | ConstPtr = shared_ptr< const TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar > >
using | Matrix4 = typename TransformationEstimation< PointSource, PointTarget, Scalar >::Matrix4
using | Vector6 = Eigen::Matrix< Scalar, 6, 1 >
Public Types inherited from pcl::registration::TransformationEstimation< PointSource, PointTarget, float >
using | Matrix4 = Eigen::Matrix< float, 4, 4 >
using | Ptr = shared_ptr< TransformationEstimation< PointSource, PointTarget, float > >
using | ConstPtr = shared_ptr< const TransformationEstimation< PointSource, PointTarget, float > >

## Public Member Functions

| TransformationEstimationSymmetricPointToPlaneLLS ()
| ~TransformationEstimationSymmetricPointToPlaneLLS ()
void | estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::PointCloud< PointTarget > &cloud_tgt, Matrix4 &transformation_matrix) const override
| Estimate a rigid rotation transformation between a source and a target point cloud using SVD. More...
void | estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::Indices &indices_src, const pcl::PointCloud< PointTarget > &cloud_tgt, Matrix4 &transformation_matrix) const override
| Estimate a rigid rotation transformation between a source and a target point cloud using SVD. More...
void | estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::Indices &indices_src, const pcl::PointCloud< PointTarget > &cloud_tgt, const pcl::Indices &indices_tgt, Matrix4 &transformation_matrix) const override
| Estimate a rigid rotation transformation between a source and a target point cloud using SVD. More...
void | estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::PointCloud< PointTarget > &cloud_tgt, const pcl::Correspondences &correspondences, Matrix4 &transformation_matrix) const override
| Estimate a rigid rotation transformation between a source and a target point cloud using SVD. More...
void | setEnforceSameDirectionNormals (bool enforce_same_direction_normals)
| Set whether or not to negate source or target normals on a per-point basis such that they point in the same direction. More...
bool | getEnforceSameDirectionNormals ()
| Obtain whether source or target normals are negated on a per-point basis such that they point in the same direction or not. More...
Public Member Functions inherited from pcl::registration::TransformationEstimation< PointSource, PointTarget, float >
| TransformationEstimation ()
virtual | ~TransformationEstimation ()
virtual void | estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::PointCloud< PointTarget > &cloud_tgt, Matrix4 &transformation_matrix) const=0
| Estimate a rigid rotation transformation between a source and a target point cloud. More...
virtual void | estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::Indices &indices_src, const pcl::PointCloud< PointTarget > &cloud_tgt, Matrix4 &transformation_matrix) const=0
| Estimate a rigid rotation transformation between a source and a target point cloud. More...
virtual void | estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::Indices &indices_src, const pcl::PointCloud< PointTarget > &cloud_tgt, const pcl::Indices &indices_tgt, Matrix4 &transformation_matrix) const=0
| Estimate a rigid rotation transformation between a source and a target point cloud. More...
virtual void | estimateRigidTransformation (const pcl::PointCloud< PointSource > &cloud_src, const pcl::PointCloud< PointTarget > &cloud_tgt, const pcl::Correspondences &correspondences, Matrix4 &transformation_matrix) const=0
| Estimate a rigid rotation transformation between a source and a target point cloud. More...

## Protected Member Functions

void | estimateRigidTransformation (ConstCloudIterator< PointSource > &source_it, ConstCloudIterator< PointTarget > &target_it, Matrix4 &transformation_matrix) const
| Estimate a rigid rotation transformation between a source and a target. More...
void | constructTransformationMatrix (const Vector6 &parameters, Matrix4 &transformation_matrix) const
| Construct a 4 by 4 transformation matrix from the provided rotation and translation. More...

## Protected Attributes

bool | enforce_same_direction_normals_
| Whether or not to negate source and/or target normals such that they point in the same direction. More...

## Detailed Description

### template<typename PointSource, typename PointTarget, typename Scalar = float>
class pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >

TransformationEstimationSymmetricPointToPlaneLLS implements a Linear Least Squares (LLS) approximation for minimizing the symmetric point-to-plane distance between two clouds of corresponding points with normals.

For additional details, see "Linear Least-Squares Optimization for Point-to-Plane ICP Surface Registration", Kok-Lim Low, 2004 "A Symmetric Objective Function for ICP", Szymon Rusinkiewicz, 2019

Note
  The class is templated on the source and target point types as well as on the output scalar of the transformation matrix (i.e., float or double). Default: float.

Author
  Matthew Cong

Definition at line 59 of file transformation_estimation_symmetric_point_to_plane_lls.h.

## Member Typedef Documentation

## ConstPtr

template<typename PointSource , typename PointTarget , typename Scalar = float>

using pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::ConstPtr = shared_ptr<const TransformationEstimationSymmetricPointToPlaneLLS<PointSource, PointTarget, Scalar> >

Definition at line 65 of file transformation_estimation_symmetric_point_to_plane_lls.h.

## Matrix4

template<typename PointSource , typename PointTarget , typename Scalar = float>

using pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::Matrix4 = typename TransformationEstimation<PointSource, PointTarget, Scalar>::Matrix4

Definition at line 70 of file transformation_estimation_symmetric_point_to_plane_lls.h.

## Ptr

template<typename PointSource , typename PointTarget , typename Scalar = float>

using pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::Ptr = shared_ptr<TransformationEstimationSymmetricPointToPlaneLLS<PointSource, PointTarget, Scalar> >

Definition at line 62 of file transformation_estimation_symmetric_point_to_plane_lls.h.

## Vector6

template<typename PointSource , typename PointTarget , typename Scalar = float>

using pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::Vector6 = Eigen::Matrix<Scalar, 6, 1>

Definition at line 72 of file transformation_estimation_symmetric_point_to_plane_lls.h.

## Constructor & Destructor Documentation

## TransformationEstimationSymmetricPointToPlaneLLS()

template<typename PointSource , typename PointTarget , typename Scalar = float>

pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::TransformationEstimationSymmetricPointToPlaneLLS | ( |  | ) |

inline

Definition at line 74 of file transformation_estimation_symmetric_point_to_plane_lls.h.

## ~TransformationEstimationSymmetricPointToPlaneLLS()

template<typename PointSource , typename PointTarget , typename Scalar = float>

pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::~TransformationEstimationSymmetricPointToPlaneLLS | ( |  | ) |

inline

Definition at line 76 of file transformation_estimation_symmetric_point_to_plane_lls.h.

## Member Function Documentation

## constructTransformationMatrix()

template<typename PointSource , typename PointTarget , typename Scalar >

void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::constructTransformationMatrix | ( | const Vector6 & | parameters,
|  | Matrix4 & | transformation_matrix
| ) |  | const

inline protected

Construct a 4 by 4 transformation matrix from the provided rotation and translation.

Parameters

  [in] | parameters | (alpha, beta, gamma, tx, ty, tz) specifying rotation about the x, y, and z-axis and translation along the the x, y, and z-axis respectively
  [out] | transformation_matrix | the resultant transformation matrix

Definition at line 130 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

## estimateRigidTransformation() [1/5]

template<typename PointSource , typename PointTarget , typename Scalar >

void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation | ( | const pcl::PointCloud< PointSource > & | cloud_src,
|  | const pcl::Indices & | indices_src,
|  | const pcl::PointCloud< PointTarget > & | cloud_tgt,
|  | const pcl::Indices & | indices_tgt,
|  | Matrix4 & | transformation_matrix
| ) |  | const

inline override

Estimate a rigid rotation transformation between a source and a target point cloud using SVD.

Parameters

  [in] | cloud_src | the source point cloud dataset
  [in] | indices_src | the vector of indices describing the points of interest in cloud_src
  [in] | cloud_tgt | the target point cloud dataset
  [in] | indices_tgt | the vector of indices describing the correspondences of the interest points from indices_src
  [out] | transformation_matrix | the resultant transformation matrix

Definition at line 93 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

## estimateRigidTransformation() [2/5]

template<typename PointSource , typename PointTarget , typename Scalar >

void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation | ( | const pcl::PointCloud< PointSource > & | cloud_src,
|  | const pcl::Indices & | indices_src,
|  | const pcl::PointCloud< PointTarget > & | cloud_tgt,
|  | Matrix4 & | transformation_matrix
| ) |  | const

inline override

Estimate a rigid rotation transformation between a source and a target point cloud using SVD.

Parameters

  [in] | cloud_src | the source point cloud dataset
  [in] | indices_src | the vector of indices describing the points of interest in cloud_src
  [in] | cloud_tgt | the target point cloud dataset
  [out] | transformation_matrix | the resultant transformation matrix

Definition at line 70 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

References pcl::PointCloud< PointT >::size().

## estimateRigidTransformation() [3/5]

template<typename PointSource , typename PointTarget , typename Scalar >

void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation | ( | const pcl::PointCloud< PointSource > & | cloud_src,
|  | const pcl::PointCloud< PointTarget > & | cloud_tgt,
|  | const pcl::Correspondences & | correspondences,
|  | Matrix4 & | transformation_matrix
| ) |  | const

inline override

Estimate a rigid rotation transformation between a source and a target point cloud using SVD.

Parameters

  [in] | cloud_src | the source point cloud dataset
  [in] | cloud_tgt | the target point cloud dataset
  [in] | correspondences | the vector of correspondences between source and target point cloud
  [out] | transformation_matrix | the resultant transformation matrix

Definition at line 117 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

## estimateRigidTransformation() [4/5]

template<typename PointSource , typename PointTarget , typename Scalar >

void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation | ( | const pcl::PointCloud< PointSource > & | cloud_src,
|  | const pcl::PointCloud< PointTarget > & | cloud_tgt,
|  | Matrix4 & | transformation_matrix
| ) |  | const

inline override

Estimate a rigid rotation transformation between a source and a target point cloud using SVD.

Parameters

  [in] | cloud_src | the source point cloud dataset
  [in] | cloud_tgt | the target point cloud dataset
  [out] | transformation_matrix | the resultant transformation matrix

Definition at line 48 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

References pcl::PointCloud< PointT >::size().

## estimateRigidTransformation() [5/5]

template<typename PointSource , typename PointTarget , typename Scalar >

void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::estimateRigidTransformation | ( | ConstCloudIterator< PointSource > & | source_it,
|  | ConstCloudIterator< PointTarget > & | target_it,
|  | Matrix4 & | transformation_matrix
| ) |  | const

inline protected

Estimate a rigid rotation transformation between a source and a target.

Parameters

  [in] | source_it | an iterator over the source point cloud dataset
  [in] | target_it | an iterator over the target point cloud dataset
  [out] | transformation_matrix | the resultant transformation matrix

Definition at line 151 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

References pcl::ConstCloudIterator< PointT >::isValid(), and pcl::ConstCloudIterator< PointT >::reset().

## getEnforceSameDirectionNormals()

template<typename PointSource , typename PointTarget , typename Scalar >

bool pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::getEnforceSameDirectionNormals

inline

Obtain whether source or target normals are negated on a per-point basis such that they point in the same direction or not.

Definition at line 213 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

## setEnforceSameDirectionNormals()

template<typename PointSource , typename PointTarget , typename Scalar >

void pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::setEnforceSameDirectionNormals | ( | bool | enforce_same_direction_normals | ) |

inline

Set whether or not to negate source or target normals on a per-point basis such that they point in the same direction.

Parameters

  [in] | enforce_same_direction_normals | whether to negate source or target normals on a per-point basis such that they point in the same direction.

Definition at line 205 of file transformation_estimation_symmetric_point_to_plane_lls.hpp.

## Member Data Documentation

## enforce_same_direction_normals_

template<typename PointSource , typename PointTarget , typename Scalar = float>

bool pcl::registration::TransformationEstimationSymmetricPointToPlaneLLS< PointSource, PointTarget, Scalar >::enforce_same_direction_normals_

protected

Whether or not to negate source and/or target normals such that they point in the same direction.

Definition at line 164 of file transformation_estimation_symmetric_point_to_plane_lls.h.

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

- pcl/registration/transformation_estimation_symmetric_point_to_plane_lls.h
- pcl/registration/impl/transformation_estimation_symmetric_point_to_plane_lls.hpp