MRPT
1.9.9
|
Algorithms to find optimal transformations from sets of correspondences.
Back to list of all libraries | See all modules
[New in MRPT 2.0.0]
This C++ library is part of MRPT and can be installed in Debian-based systems with:
sudo apt install libmrpt-tfest-dev
See: Using MRPT from your CMake project
Transformation estimation (tfest): This module provides functions in charge of solving the optimization problem of aligning a set of 2D or 3D corresponding points, estimating the optimal transformation between the two frames of reference.
Note that this does not include the related iterative ICP algorithm (see mrpt::slam::CICP), included in the library [mrpt-slam]
See list of all functions: mrpt::tfest
Classes | |
struct | mrpt::tfest::TPotentialMatch |
For each individual-compatibility (IC) test, the indices of the candidate match between elements in both reference frames. More... | |
struct | mrpt::tfest::TSE2RobustParams |
Parameters for se2_l2_robust(). More... | |
struct | mrpt::tfest::TSE2RobustResult |
Output placeholder for se2_l2_robust() More... | |
struct | mrpt::tfest::TSE3RobustParams |
Parameters for se3_l2_robust(). More... | |
struct | mrpt::tfest::TSE3RobustResult |
Output placeholder for se3_l2_robust() More... | |
Namespaces | |
mrpt::tfest | |
Functions for estimating the optimal transformation between two frames of references given measurements of corresponding points. | |
Typedefs | |
using | mrpt::tfest::TFunctorCheckPotentialMatch = std::function< bool(const TPotentialMatch &)> |
Functions | |
bool | mrpt::tfest::se2_l2 (const mrpt::tfest::TMatchingPairList &in_correspondences, mrpt::math::TPose2D &out_transformation, mrpt::math::CMatrixDouble33 *out_estimateCovariance=nullptr) |
Least-squares (L2 norm) solution to finding the optimal SE(2) (x,y,yaw) between two reference frames. More... | |
bool | mrpt::tfest::se2_l2 (const mrpt::tfest::TMatchingPairList &in_correspondences, mrpt::poses::CPosePDFGaussian &out_transformation) |
bool | mrpt::tfest::se2_l2_robust (const mrpt::tfest::TMatchingPairList &in_correspondences, const double in_normalizationStd, const TSE2RobustParams &in_ransac_params, TSE2RobustResult &out_results) |
Robust least-squares (L2 norm) solution to finding the optimal SE(2) (x,y,yaw) between two reference frames. More... | |
bool | mrpt::tfest::se3_l2 (const mrpt::tfest::TMatchingPairList &in_correspondences, mrpt::poses::CPose3DQuat &out_transform, double &out_scale, bool forceScaleToUnity=false) |
Least-squares (L2 norm) solution to finding the optimal SE(3) transform between two reference frames using the "quaternion" or Horn's method: More... | |
bool | mrpt::tfest::se3_l2 (const std::vector< mrpt::math::TPoint3D > &in_points_this, const std::vector< mrpt::math::TPoint3D > &in_points_other, mrpt::poses::CPose3DQuat &out_transform, double &out_scale, bool forceScaleToUnity=false) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This version accepts corresponding points as two vectors of TPoint3D (must have identical length). More... | |
bool | mrpt::tfest::se3_l2_robust (const mrpt::tfest::TMatchingPairList &in_correspondences, const TSE3RobustParams &in_params, TSE3RobustResult &out_results) |
Least-squares (L2 norm) solution to finding the optimal SE(3) transform between two reference frames using RANSAC and the "quaternion" or Horn's method: More... | |
using mrpt::tfest::TFunctorCheckPotentialMatch = typedef std::function<bool(const TPotentialMatch&)> |
Definition at line 29 of file indiv-compat-decls.h.
bool mrpt::tfest::se2_l2 | ( | const mrpt::tfest::TMatchingPairList & | in_correspondences, |
mrpt::math::TPose2D & | out_transformation, | ||
mrpt::math::CMatrixDouble33 * | out_estimateCovariance = nullptr |
||
) |
Least-squares (L2 norm) solution to finding the optimal SE(2) (x,y,yaw) between two reference frames.
The optimal transformation q
fulfills , that is, the transformation of frame other
with respect to this
.
[in] | in_correspondences | The set of correspondences. |
[out] | out_transformation | The pose that minimizes the mean-square-error between all the correspondences. |
[out] | out_estimateCovariance | If provided (!=nullptr) this will contain on return a 3x3 covariance matrix with the NORMALIZED optimal estimate uncertainty. This matrix must be multiplied by , the variance of matched points in and (see paper https://www.mrpt.org/Paper:Occupancy_Grid_Matching) |
Definition at line 46 of file se2_l2.cpp.
References MRPT_END, MRPT_START, mrpt::math::TPose2D::phi, mrpt::square(), mrpt::math::TPose2D::x, and mrpt::math::TPose2D::y.
Referenced by mrpt::slam::CGridMapAligner::AlignPDF_robustMatch(), mrpt::slam::CICP::ICP_Method_Classic(), ransac_data_assoc_run(), mrpt::tfest::se2_l2(), and mrpt::tfest::se2_l2_robust().
bool mrpt::tfest::se2_l2 | ( | const mrpt::tfest::TMatchingPairList & | in_correspondences, |
mrpt::poses::CPosePDFGaussian & | out_transformation | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 28 of file se2_l2.cpp.
References mrpt::poses::CPosePDFGaussian::cov, mrpt::poses::CPosePDFGaussian::mean, and mrpt::tfest::se2_l2().
bool mrpt::tfest::se2_l2_robust | ( | const mrpt::tfest::TMatchingPairList & | in_correspondences, |
const double | in_normalizationStd, | ||
const TSE2RobustParams & | in_ransac_params, | ||
TSE2RobustResult & | out_results | ||
) |
Robust least-squares (L2 norm) solution to finding the optimal SE(2) (x,y,yaw) between two reference frames.
This method implements a RANSAC-based robust estimation, returning a probability distribution over all the posibilities as a Sum of Gaussians.
The optimal transformation q
fulfills , that is, the transformation of frame other
with respect to this
.
The technique was described in the paper:
This works as follows:
Repeat "ransac_nSimulations" times:
For more details refer to the tutorial on scan matching methods.
[in] | in_normalizationStd | The standard deviation (not variance) of landmarks/points/features being matched in X,Y. Used to normalize covariances returned as the SoG. (Refer to paper) |
NOTE: Parameter ransac_maxSetSize
should be set to in_correspondences.size()
to make sure that every correspondence is tested for each random permutation.
Definition at line 78 of file se2_l2_ransac.cpp.
References ASSERT_, mrpt::math::chi2inv(), mrpt::poses::CPose2D::composePoint(), mrpt::poses::CPosePDFGaussian::composePoint(), mrpt::poses::CPosePDFSOG::TGaussianMode::cov, mrpt::poses::CPosePDFGaussian::cov, mrpt::DEG2RAD(), mrpt::math::distanceBetweenPoints(), mrpt::random::getRandomGenerator(), mrpt::tfest::TPotentialMatch::idx_other, mrpt::tfest::TPotentialMatch::idx_this, mrpt::poses::CPosePDFSOG::TGaussianMode::log_w, mrpt::poses::CPoint2DPDFGaussian::mahalanobisDistanceToPoint(), markAsPicked(), mrpt::poses::CPosePDFGaussian::mean, mrpt::poses::CPosePDFSOG::TGaussianMode::mean, min, MRPT_END_WITH_CLEAN_UP, MRPT_START, normalizationStd, mrpt::tfest::TMatchingPair::other_idx, mrpt::tfest::TMatchingPair::other_x, mrpt::tfest::TMatchingPair::other_y, mrpt::random::CRandomGenerator::permuteVector(), mrpt::poses::CPose2D::phi(), results, mrpt::tfest::se2_l2(), mrpt::square(), mrpt::tfest::TMatchingPair::this_idx, mrpt::tfest::TMatchingPair::this_x, mrpt::tfest::TMatchingPair::this_y, and mrpt::math::wrapToPi().
Referenced by mrpt::slam::CGridMapAligner::AlignPDF_robustMatch(), mrpt::slam::CICP::ICP_Method_Classic(), and ransac_data_assoc_run().
bool mrpt::tfest::se3_l2 | ( | const mrpt::tfest::TMatchingPairList & | in_correspondences, |
mrpt::poses::CPose3DQuat & | out_transform, | ||
double & | out_scale, | ||
bool | forceScaleToUnity = false |
||
) |
Least-squares (L2 norm) solution to finding the optimal SE(3) transform between two reference frames using the "quaternion" or Horn's method:
The optimal transformation q
fulfills , that is, the transformation of frame other
with respect to this
.
[in] | in_correspondences | The coordinates of the input points for the two coordinate systems "this" and "other" |
[out] | out_transform | The output transformation |
[out] | out_scale | The computed scale of the optimal transformation (will be 1.0 for a perfectly rigid translation + rotation). |
[in] | forceScaleToUnity | Whether or not force the scale employed to rotate the coordinate systems to one (rigid transformation) |
Definition at line 218 of file se3_l2.cpp.
References se3_l2_internal().
Referenced by mrpt::slam::CICP::ICP3D_Method_Classic(), mrpt::topography::path_from_rtk_gps(), mrpt::tfest::se3_l2_robust(), and TEST().
bool mrpt::tfest::se3_l2 | ( | const std::vector< mrpt::math::TPoint3D > & | in_points_this, |
const std::vector< mrpt::math::TPoint3D > & | in_points_other, | ||
mrpt::poses::CPose3DQuat & | out_transform, | ||
double & | out_scale, | ||
bool | forceScaleToUnity = false |
||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This version accepts corresponding points as two vectors of TPoint3D (must have identical length).
Definition at line 203 of file se3_l2.cpp.
References se3_l2_internal().
bool mrpt::tfest::se3_l2_robust | ( | const mrpt::tfest::TMatchingPairList & | in_correspondences, |
const TSE3RobustParams & | in_params, | ||
TSE3RobustResult & | out_results | ||
) |
Least-squares (L2 norm) solution to finding the optimal SE(3) transform between two reference frames using RANSAC and the "quaternion" or Horn's method:
The optimal transformation q
fulfills , that is, the transformation of frame other
with respect to this
.
[in] | in_correspondences | The set of correspondences. |
[in] | in_params | Method parameters (see docs for TSE3RobustParams) |
[out] | out_results | Results: transformation, scale, etc. |
Definition at line 32 of file se3_l2_ransac.cpp.
References ASSERTMSG_, mrpt::random::getRandomGenerator(), mrpt::tfest::TPotentialMatch::idx_other, mrpt::tfest::TPotentialMatch::idx_this, mrpt::math::linspace(), MRPT_END, MRPT_START, mrpt::random::CRandomGenerator::permuteVector(), mrpt::poses::CPose3D::pitch(), results, mrpt::poses::CPose3D::roll(), mrpt::round(), mrpt::tfest::se3_l2(), mrpt::square(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::x(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS, DIM >::y(), and mrpt::poses::CPose3D::yaw().
Referenced by TEST().
Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 8fe78517f Sun Jul 14 19:43:28 2019 +0200 at lun oct 28 02:10:00 CET 2019 |