iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
nrt::TransformationEstimationLM Class Reference

#include <nrt/PointCloud2/Registration/Transformation/TransformationEstimationLM.H>

Estimates a rigid transform using Levenberg Marquardt.

This transformation supports multiple distance metrics which are used to score how well the currently estimated transform fits during the LM optimization. See LMDistanceMethod for the available methods.

If using Mahalanobis distance, the covariance must be specified with each call to estimateTransform. As such, using Mahalanobis distance is not supported within the default nrt::Registration framework and needs to be done by hand.

Examples:
tests/test-PointCloud2OpenNI.C, and tests/test-PointCloud2Registration.C.

Definition at line 61 of file TransformationEstimationLM.H.

Inheritance diagram for nrt::TransformationEstimationLM:
nrt::TransformationEstimationBase

Public Types

typedef
PointCloud2::AffineTransform 
AffineTransform
 
- Public Types inherited from nrt::TransformationEstimationBase
typedef std::shared_ptr
< TransformationEstimationBase
SharedPtr
 Convenience typedef for shared ptr to this.
 

Public Member Functions

 TransformationEstimationLM (LMDistanceMethod method=LMDistanceMethod::L2Square)
 
AffineTransform estimateTransform (PointCloud2 const source, PointCloud2 const target)
 Estimates a rigid transformation between a source and target cloud. More...
 
AffineTransform estimateTransform (PointCloud2 const source, PointCloud2 const target, Correspondences const correspondences)
 Estimates a rigid transformation between a source and target cloud. More...
 
AffineTransform estimateTransform (PointCloud2 const source, PointCloud2 const target, Correspondences const correspondences, PointCloud2::Matrix4 const &covariance)
 
size_t minimumNumCorrespondences () const
 Gets the minimum required number of correspondences to estimate a transform.
 
- Public Member Functions inherited from nrt::TransformationEstimationBase
virtual ~TransformationEstimationBase ()
 Virtual destruction.
 

Protected Member Functions

AffineTransform estimate (PointCloud2::ConstIterator<> &&sourceBegin, PointCloud2::ConstIterator<> &&targetBegin, const size_t srcSize, PointCloud2::Matrix4 const &covariance=PointCloud2::Matrix4::Identity())
 Does the actual estimation. More...
 

Member Function Documentation

AffineTransform nrt::TransformationEstimationLM::estimateTransform ( PointCloud2 const  source,
PointCloud2 const  target 
)
virtual

Estimates a rigid transformation between a source and target cloud.

Parameters
sourceThe source point cloud
targetThe target point cloud
Returns
The 4x4 rotation matrix that performs the transform

Implements nrt::TransformationEstimationBase.

AffineTransform nrt::TransformationEstimationLM::estimateTransform ( PointCloud2 const  source,
PointCloud2 const  target,
Correspondences const  correspondences 
)
virtual

Estimates a rigid transformation between a source and target cloud.

Parameters
sourceThe source point cloud
targetThe target point cloud
correspondencesThe correspondences between two clouds
Returns
The 4x4 rotation matrix that performs the transform

Implements nrt::TransformationEstimationBase.

AffineTransform nrt::TransformationEstimationLM::estimateTransform ( PointCloud2 const  source,
PointCloud2 const  target,
Correspondences const  correspondences,
PointCloud2::Matrix4 const &  covariance 
)

Estimates a rigid transformation between a source and target cloud with some given covariance

Parameters
sourceThe source point cloud
targetThe target point cloud
correspondencesThe correspondences between two clouds
covarianceThe covariance to use for Mahalanobis distance
Returns
The 4x4 rotation matrix that performs the transform
AffineTransform nrt::TransformationEstimationLM::estimate ( PointCloud2::ConstIterator<> &&  sourceBegin,
PointCloud2::ConstIterator<> &&  targetBegin,
const size_t  srcSize,
PointCloud2::Matrix4 const &  covariance = PointCloud2::Matrix4::Identity() 
)
protected

Does the actual estimation.

The covariance matrix is only required for mahalanobis distance


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