diff --git a/src/multibody/joint/joint-free-flyer.hpp b/src/multibody/joint/joint-free-flyer.hpp index 2fc68d2cadbf2f38aa31dda0f27b92d2604bda24..403a78daef70ec734720bc37bbc0cc670438e440 100644 --- a/src/multibody/joint/joint-free-flyer.hpp +++ b/src/multibody/joint/joint-free-flyer.hpp @@ -207,11 +207,12 @@ namespace se3 template<typename V> inline void forwardKinematics(Transformation_t & M, const Eigen::MatrixBase<V> & q_joint) const { + using std::sqrt; typedef Eigen::Map<const Motion_t::Quaternion_t> ConstQuaternionMap_t; typename Eigen::MatrixBase<V>::template ConstFixedSegmentReturnType<NQ>::Type & q = q_joint.template segment<NQ> (idx_q ()); ConstQuaternionMap_t quat(q.template tail<4>().data()); - assert(std::fabs(quat.coeffs().norm() - 1.) <= 1e-14); + assert(std::fabs(quat.coeffs().norm()-1.) <= sqrt(Eigen::NumTraits<typename V::Scalar>::epsilon())); M.rotation(quat.matrix()); M.translation(q_joint.template head<3>()); diff --git a/src/multibody/joint/joint-spherical.hpp b/src/multibody/joint/joint-spherical.hpp index b258d0d2187bf72bebaee0ca1491e25654227aa0..e80d1b1c9f56ecf41ff5380ca345cdd63ce90ee3 100644 --- a/src/multibody/joint/joint-spherical.hpp +++ b/src/multibody/joint/joint-spherical.hpp @@ -271,10 +271,11 @@ namespace se3 template<typename V> inline void forwardKinematics(Transformation_t & M, const Eigen::MatrixBase<V> & q_joint) const { + using std::sqrt; typename Eigen::MatrixBase<V>::template ConstFixedSegmentReturnType<NQ>::Type & q = q_joint.template segment<NQ> (idx_q ()); ConstQuaternionMap_t quat(q.data()); - assert(std::fabs(quat.coeffs().norm() - 1.) <= 1e-14); + assert(std::fabs(quat.coeffs().norm()-1.) <= sqrt(Eigen::NumTraits<typename V::Scalar>::epsilon())); M.rotation(quat.matrix()); M.translation().setZero();