5 #ifndef __pinocchio_autodiff_casadi_math_quaternion_hpp__     6 #define __pinocchio_autodiff_casadi_math_quaternion_hpp__     8 #include "pinocchio/math/quaternion.hpp"    17       template<
typename _Scalar>
    20         typedef ::casadi::Matrix<_Scalar> 
Scalar;
    21         template<
typename Matrix3, 
typename QuaternionDerived>
    22         static inline void run(Eigen::QuaternionBase<QuaternionDerived> & 
q,
    25           typedef typename Eigen::internal::traits<QuaternionDerived>::Coefficients QuatCoefficients;
    28           typedef Eigen::Quaternion<Scalar,QuatCoefficientsPlainType::Options> QuaternionPlain;
    29           QuaternionPlain quat_t_positive;
    31           Scalar 
t = mat.trace();
    34           QuaternionPlain quat_t_negative_0, quat_t_negative_1, quat_t_negative_2;
    41           const Scalar t_greater_than_zero = t > 
Scalar(0);
    42           const Scalar cond1 = mat.coeff(1,1) > mat.coeff(0,0);
    43           const Scalar cond2 = (cond1 && mat.coeff(2,2) > mat.coeff(1,1)) || (mat.coeff(2,2) > mat.coeff(0,0));
    45           for(Eigen::DenseIndex k = 0; k < 4; ++k)
    47             Scalar t_is_negative_cond1 = Scalar::if_else(cond1,
    48                                                          quat_t_negative_1.coeffs().coeff(k),
    49                                                          quat_t_negative_0.coeffs().coeff(k));
    50             Scalar t_is_negative_cond2 = Scalar::if_else(cond2,
    51                                                          quat_t_negative_2.coeffs().coeff(k),
    54             q.coeffs().coeffRef(k) = Scalar::if_else(t_greater_than_zero,
    55                                                      quat_t_positive.coeffs().coeff(k),
    67 #endif // ifndef __pinocchio_autodiff_casadi_math_quaternion_hpp__ static void run(Eigen::QuaternionBase< QuaternionDerived > &q, const Matrix3 &mat)
static void run(Scalar t, Eigen::QuaternionBase< QuaternionDerived > &q, const Matrix3 &mat)
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > & q
::casadi::Matrix< _Scalar > Scalar
Main pinocchio namespace. 
PINOCCHIO_EIGEN_PLAIN_TYPE(ConfigVectorType) integrate(const ModelTpl< Scalar
Integrate a configuration vector for the specified model for a tangent vector during one unit time...
static void run(Scalar t, Eigen::QuaternionBase< QuaternionDerived > &q, const Matrix3 &mat)