38 #include <boost/math/special_functions/fpclassify.hpp> 97 this->
limitNames.push_back(
"Min differential rotation err");
98 this->
limitNames.push_back(
"Min differential translation err");
110 if (parameters.rows() == 4)
117 Eigen::Matrix<T,3,3> m(Matrix::Identity(3,3));
118 m.topLeftCorner(2,2) = parameters.topLeftCorner(2,2);
122 const unsigned int nbRows = parameters.rows()-1;
123 translations.push_back(parameters.topRightCorner(nbRows,1));
132 const unsigned int nbRows = parameters.rows()-1;
133 translations.push_back(parameters.topRightCorner(nbRows,1));
155 throw ConvergenceError(
"abs rotation norm not a number");
157 throw ConvergenceError(
"abs translation norm not a number");
176 this->
limitNames.push_back(
"Max rotation angle");
177 this->
limitNames.push_back(
"Max translation norm");
186 if (parameters.rows() == 4)
188 else if (parameters.rows() == 3)
191 throw runtime_error(
"BoundTransformationChecker only works in 2D or 3D");
193 const unsigned int nbRows = parameters.rows()-1;
202 if (parameters.rows() == 4)
204 const Quaternion currentRotation =
Quaternion(Eigen::Matrix<T,3,3>(parameters.topLeftCorner(3,3)));
207 else if (parameters.rows() == 3)
214 const unsigned int nbRows = parameters.rows()-1;
215 const Vector currentTranslation = parameters.topRightCorner(nbRows,1);
220 oss <<
"limit out of bounds: ";
223 throw ConvergenceError(oss.str());
Point matcher did not converge.
std::map< std::string, Parameter > Parameters
Parameters stored as a map of string->string.
Functions and classes that are not dependant on scalar type are defined in this namespace.
Parameters parameters
parameters with their values encoded in string
const M::mapped_type & get(const M &m, const typename M::key_type &k)
static T normalizeAngle(T v)
The superclass of classes that are constructed using generic parameters. This class provides the para...
S get(const std::string ¶mName)
Return the value of paramName, lexically-casted to S.
static T anyabs(const T &v)