14 #define MRPT_SCANMATCHING_SUPRESS_BACKCOMPAT_WARNING 26 const std::vector<double> &
input,
28 bool forceScaleToUnity)
31 const size_t nMatches =
input.size()/6;
33 vector<TPoint3D> inThis(nMatches), inOther(nMatches);
34 for(
size_t i = 0; i < nMatches; i++ )
36 inThis[i].x =
input[i*6+0];
37 inThis[i].y =
input[i*6+1];
38 inThis[i].z =
input[i*6+2];
40 inOther[i].x =
input[i*6+3];
41 inOther[i].y =
input[i*6+4];
42 inOther[i].z =
input[i*6+5];
55 const std::vector<double> &inPoints,
56 std::vector<double> &outVector,
57 bool forceScaleToUnity)
62 outVector.resize( 7 );
63 for (
int i=0;i<7;i++) outVector[i] = outQuat[i];
69 const std::vector<double> &inPoints,
71 bool forceScaleToUnity)
81 const bool forceScaleToUnity)
83 return mrpt::tfest::se3_l2(in_correspondences,out_transformation,out_scale,forceScaleToUnity);
91 const bool forceScaleToUnity)
105 const unsigned int ransac_minSetSize,
106 const unsigned int ransac_nmaxSimulations,
107 const double ransac_maxSetSizePct,
108 const bool forceScaleToUnity)
111 params.forceScaleToUnity = forceScaleToUnity;
112 params.ransac_maxSetSizePct = ransac_maxSetSizePct;
113 params.ransac_minSetSize = ransac_minSetSize;
114 params.ransac_nmaxSimulations = ransac_nmaxSimulations;
120 out_scale = results.
scale;
134 out_transformation =
CPose2D(estPose);
151 unsigned int ransac_minSetSize,
152 unsigned int ransac_maxSetSize,
154 unsigned int ransac_nSimulations,
156 bool ransac_fuseByCorrsMatch,
157 float ransac_fuseMaxDiffXY,
158 float ransac_fuseMaxDiffPhi,
159 bool ransac_algorithmForLandmarks,
160 double probability_find_good_model,
161 unsigned int ransac_min_nSimulations,
163 double max_rmse_to_end
167 params.ransac_minSetSize = ransac_minSetSize;
168 params.ransac_maxSetSize = ransac_maxSetSize;
170 params.ransac_nSimulations = ransac_nSimulations;
171 params.ransac_fuseByCorrsMatch = ransac_fuseByCorrsMatch;
172 params.ransac_fuseMaxDiffXY = ransac_fuseMaxDiffXY;
173 params.ransac_fuseMaxDiffPhi = ransac_fuseMaxDiffPhi;
174 params.ransac_algorithmForLandmarks = ransac_algorithmForLandmarks;
175 params.probability_find_good_model = probability_find_good_model;
176 params.ransac_min_nSimulations = ransac_min_nSimulations;
177 params.max_rmse_to_end = max_rmse_to_end;
185 if (out_largestSubSet) *out_largestSubSet = results.
largestSubSet;
#define ASSERT_EQUAL_(__A, __B)
bool TFEST_IMPEXP leastSquareErrorRigidTransformation(mrpt::utils::TMatchingPairList &in_correspondences, mrpt::poses::CPose2D &out_transformation, mrpt::math::CMatrixDouble33 *out_estimateCovariance=NULL)
Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values, timewatch, extensions to STL.
const float normalizationStd
void TFEST_IMPEXP robustRigidTransformation(mrpt::utils::TMatchingPairList &in_correspondences, mrpt::poses::CPosePDFSOG &out_transformation, float normalizationStd, unsigned int ransac_minSetSize=3, unsigned int ransac_maxSetSize=20, float ransac_mahalanobisDistanceThreshold=3.0f, unsigned int ransac_nSimulations=0, mrpt::utils::TMatchingPairList *out_largestSubSet=NULL, bool ransac_fuseByCorrsMatch=true, float ransac_fuseMaxDiffXY=0.01f, float ransac_fuseMaxDiffPhi=mrpt::utils::DEG2RAD(0.1f), bool ransac_algorithmForLandmarks=true, double probability_find_good_model=0.999, unsigned int ransac_min_nSimulations=1500, const bool verbose=false, double max_rmse_to_end=0)
bool TFEST_IMPEXP leastSquareErrorRigidTransformation6D(const mrpt::utils::TMatchingPairList &in_correspondences, mrpt::poses::CPose3DQuat &out_transformation, double &out_scale, const bool forceScaleToUnity=false)
bool TFEST_IMPEXP se3_l2_robust(const mrpt::utils::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 ...
Declares a class that represents a Probability Density function (PDF) of a 2D pose ...
double backwards_compat_HornMethod(const std::vector< double > &input, mrpt::poses::CPose3DQuat &outQuat, bool forceScaleToUnity)
Parameters for se3_l2_robust().
GLenum GLenum GLenum GLenum GLenum scale
Parameters for se2_l2_robust().
mrpt::utils::TMatchingPairList largestSubSet
the largest consensus sub-set
const float ransac_mahalanobisDistanceThreshold
bool TFEST_IMPEXP se2_l2_robust(const mrpt::utils::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 ...
mrpt::vector_int inliers_idx
Indexes within the in_correspondences list which corresponds with inliers.
This base provides a set of functions for maths stuff.
Declares a class that represents a Probability Density function (PDF) of a 2D pose ...
bool TFEST_IMPEXP se3_l2(const mrpt::utils::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 ...
double scale
The estimated scale of the rigid transformation (should be very close to 1.0)
A class used to store a 3D pose as a translation (x,y,z) and a quaternion (qr,qx,qy,qz).
Classes for 2D/3D geometry representation, both of single values and probability density distribution...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle...
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
GLenum GLenum GLenum input
mrpt::poses::CPosePDFSOG transformation
The output as a set of transformations (sum of Gaussians)
std::vector< int32_t > vector_int
double TFEST_IMPEXP HornMethod(const std::vector< double > &inPoints, std::vector< double > &outQuat, bool forceScaleToUnity=false)
mrpt::poses::CPose3DQuat transformation
The best transformation found.
bool TFEST_IMPEXP se2_l2(const mrpt::utils::TMatchingPairList &in_correspondences, mrpt::math::TPose2D &out_transformation, mrpt::math::CMatrixDouble33 *out_estimateCovariance=NULL)
Least-squares (L2 norm) solution to finding the optimal SE(2) (x,y,yaw) between two reference frames...
GLenum const GLfloat * params
Output placeholder for se2_l2_robust()
Output placeholder for se3_l2_robust()
bool TFEST_IMPEXP leastSquareErrorRigidTransformation6DRANSAC(const mrpt::utils::TMatchingPairList &in_correspondences, mrpt::poses::CPose3D &out_transformation, double &out_scale, vector_int &out_inliers_idx, const unsigned int ransac_minSetSize=5, const unsigned int ransac_nmaxSimulations=50, const double ransac_maxSetSizePct=0.7, const bool forceScaleToUnity=false)