18 #ifndef __se3_joint_model_hpp__ 19 #define __se3_joint_model_hpp__ 21 #include "pinocchio/assert.hpp" 22 #include "pinocchio/multibody/joint/joint-variant.hpp" 23 #include "pinocchio/multibody/joint/joint-basic-visitors.hxx" 24 #include "pinocchio/container/aligned-vector.hpp" 40 typedef double Scalar;
48 typedef Eigen::Matrix<double,6,Eigen::Dynamic> F_t;
50 typedef Eigen::Matrix<double,6,Eigen::Dynamic> U_t;
51 typedef Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic> D_t;
52 typedef Eigen::Matrix<double,6,Eigen::Dynamic> UD_t;
54 typedef Eigen::Matrix<double,Eigen::Dynamic,1> ConfigVector_t;
55 typedef Eigen::Matrix<double,Eigen::Dynamic,1> TangentVector_t;
63 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
64 typedef Joint JointDerived;
68 JointDataVariant & toVariant() {
return *
static_cast<JointDataVariant*
>(
this); }
69 const JointDataVariant & toVariant()
const {
return *
static_cast<const JointDataVariant*
>(
this); }
73 const Motion_t v()
const {
return motion(*
this); }
74 const Bias_t c()
const {
return bias(*
this); }
77 const U_t U()
const {
return u_inertia(*
this); }
83 JointData(
const JointDataVariant & jdata) : JointDataVariant(jdata) {}
89 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
90 typedef JointModelVariant JointModelBoostVariant;
91 typedef Joint JointDerived;
94 SE3_JOINT_USE_INDEXES;
96 using Base::setIndexes;
97 using Base::operator==;
100 JointModel(
const JointModelVariant & model_variant) : JointModelVariant(model_variant)
103 JointModelVariant& toVariant() {
return *
static_cast<JointModelVariant*
>(
this); }
104 const JointModelVariant& toVariant()
const {
return *
static_cast<const JointModelVariant*
>(
this); }
106 JointDataVariant
createData() { return ::se3::createData(*
this); }
110 void calc(
JointData & data,
const Eigen::VectorXd & q,
const Eigen::VectorXd & v)
const 114 { ::se3::calc_aba(*
this,data,I,update_I); }
115 std::string
shortname()
const { return ::se3::shortname(*
this); }
116 static std::string classname() {
return "JointModel"; }
118 int nq_impl()
const { return ::se3::nq(*
this); }
119 int nv_impl()
const { return ::se3::nv(*
this); }
121 int idx_q()
const { return ::se3::idx_q(*
this); }
122 int idx_v()
const { return ::se3::idx_v(*
this); }
124 JointIndex
id()
const { return ::se3::id(*
this); }
126 void setIndexes(JointIndex
id,
int nq,
int nv) { ::se3::setIndexes(*
this,
id, nq, nv); }
134 #endif // ifndef __se3_joint_model_hpp__ ConstraintXd constraint_xd(const JointDataVariant &jdata)
Visit a JointDataVariant through JointConstraintVisitor to get the joint constraint as a dense constr...
JointDataVariant createData(const JointModelVariant &jmodel)
Visit a JointModelVariant through CreateData visitor to create a JointDataVariant.
Motion motion(const JointDataVariant &jdata)
Visit a JointDataVariant through JointMotionVisitor to get the joint internal motion as a dense motio...
Eigen::Matrix< double, 6, Eigen::Dynamic > u_inertia(const JointDataVariant &jdata)
Visit a JointDataVariant through JointUInertiaVisitor to get the U matrix of the inertia matrix decom...
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > dinv_inertia(const JointDataVariant &jdata)
Visit a JointDataVariant through JointDInvInertiaVisitor to get the D^{-1} matrix of the inertia matr...
SE3 joint_transform(const JointDataVariant &jdata)
Visit a JointDataVariant through JointTransformVisitor to get the joint internal transform (transform...
Eigen::Matrix< double, 6, Eigen::Dynamic > udinv_inertia(const JointDataVariant &jdata)
Visit a JointDataVariant through JointUDInvInertiaVisitor to get U*D^{-1} matrix of the inertia matri...
void calc_aba(const JointModelVariant &jmodel, JointDataVariant &jdata, Inertia::Matrix6 &I, const bool update_I)
Visit a JointDataVariant and the corresponding JointModelVariant through JointCalcAbaVisitor to...
int nq(const JointModelVariant &jmodel)
Visit a JointModelVariant through JointNqVisitor to get the dimension of the joint configuration spac...
Motion bias(const JointDataVariant &jdata)
Visit a JointDataVariant through JointBiasVisitor to get the joint bias as a dense motion...
void calc_zero_order(const JointModelVariant &jmodel, JointDataVariant &jdata, const Eigen::VectorXd &q)
Visit a JointDataVariant and the corresponding JointModelVariant through JointCalcZeroOrderVisitor to...
void setIndexes(JointModelVariant &jmodel, JointIndex id, int q, int v)
Visit a JointModelVariant through JointSetIndexesVisitor to set the indexes of the joint in the kinem...
std::string shortname(const JointModelVariant &jmodel)
Visit a JointModelVariant through JointShortnameVisitor to get the shortname of the derived joint mod...
int nv(const JointModelVariant &jmodel)
Visit a JointModelVariant through JointNvVisitor to get the dimension of the joint tangent space...
int idx_q(const JointModelVariant &jmodel)
Visit a JointModelVariant through JointIdxQVisitor to get the index in the full model configuration s...
JointIndex id(const JointModelVariant &jmodel)
Visit a JointModelVariant through JointIdVisitor to get the index of the joint in the kinematic chain...
int idx_v(const JointModelVariant &jmodel)
Visit a JointModelVariant through JointIdxVVisitor to get the index in the full model tangent space c...
void calc_first_order(const JointModelVariant &jmodel, JointDataVariant &jdata, const Eigen::VectorXd &q, const Eigen::VectorXd &v)
Visit a JointDataVariant and the corresponding JointModelVariant through JointCalcFirstOrderVisitor t...