joint-basic-visitors.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2016-2020 CNRS INRIA
3 //
4 
5 #ifndef __pinocchio_multibody_joint_basic_visitors_hpp__
6 #define __pinocchio_multibody_joint_basic_visitors_hpp__
7 
9 
10 namespace pinocchio
11 {
12 
22  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
23  inline JointDataTpl<Scalar, Options, JointCollectionTpl>
24  createData(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
25 
38  template<
39  typename Scalar,
40  int Options,
41  template<typename S, int O> class JointCollectionTpl,
42  typename ConfigVectorType>
43  inline void calc_zero_order(
44  const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel,
45  JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata,
46  const Eigen::MatrixBase<ConfigVectorType> & q);
47 
62  template<
63  typename Scalar,
64  int Options,
65  template<typename S, int O> class JointCollectionTpl,
66  typename ConfigVectorType,
67  typename TangentVectorType>
68  inline void calc_first_order(
69  const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel,
70  JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata,
71  const Eigen::MatrixBase<ConfigVectorType> & q,
72  const Eigen::MatrixBase<TangentVectorType> & v);
73 
86  template<
87  typename Scalar,
88  int Options,
89  template<typename S, int O> class JointCollectionTpl,
90  typename TangentVectorType>
91  inline void calc_first_order(
92  const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel,
93  JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata,
94  const Blank blank,
95  const Eigen::MatrixBase<TangentVectorType> & v);
96 
112  template<
113  typename Scalar,
114  int Options,
115  template<typename S, int O> class JointCollectionTpl,
116  typename VectorLike,
117  typename Matrix6Type>
118  inline void calc_aba(
119  const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel,
120  JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata,
121  const Eigen::MatrixBase<VectorLike> & armature,
122  const Eigen::MatrixBase<Matrix6Type> & I,
123  const bool update_I);
124 
133  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
134  inline int nv(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
135 
144  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
145  inline int nq(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
146 
155  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
156  inline int nvExtended(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
157 
166  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
167  inline const std::vector<bool>
168  hasConfigurationLimit(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
169 
178  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
179  inline const std::vector<bool>
180  hasConfigurationLimitInTangent(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
181 
191  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
192  inline int idx_q(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
193 
203  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
204  inline int idx_v(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
205 
215  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
216  inline int idx_vExtended(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
217 
226  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
227  inline JointIndex id(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
228 
244  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
245  inline void setIndexes(
246  JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel,
247  JointIndex id,
248  int q,
249  int v,
250  int vExtended);
251 
265  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
266  inline void setIndexes(
267  JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel, JointIndex id, int q, int v);
268 
275  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
276  inline std::string shortname(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
277 
287  template<
288  typename NewScalar,
289  typename Scalar,
290  int Options,
291  template<typename S, int O> class JointCollectionTpl>
292  typename CastType<NewScalar, JointModelTpl<Scalar, Options, JointCollectionTpl>>::type
293  cast_joint(const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel);
294 
303  template<
304  typename Scalar,
305  int Options,
306  template<typename S, int O> class JointCollectionTpl,
307  typename JointModelDerived>
308  bool isEqual(
309  const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel_generic,
310  const JointModelBase<JointModelDerived> & jmodel);
311 
321  template<
322  typename NewScalar,
323  typename Scalar,
324  int Options,
325  template<typename S, int O> class JointCollectionTpl,
326  typename JointModelDerived>
327  bool hasSameIndexes(
328  const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel_generic,
329  const JointModelBase<JointModelDerived> & jmodel);
330 
331  //
332  // Visitors on JointDatas
333  //
334 
343  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
344  inline typename JointDataTpl<Scalar, Options, JointCollectionTpl>::ConfigVector_t
345  joint_q(const JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata);
346 
355  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
356  inline typename JointDataTpl<Scalar, Options, JointCollectionTpl>::TangentVector_t
357  joint_v(const JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata);
358 
367  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
368  inline JointMotionSubspaceTpl<Eigen::Dynamic, Scalar, Options>
369  joint_motin_subspace_xd(const JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata);
370 
379  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
380  inline SE3Tpl<Scalar, Options>
381  joint_transform(const JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata);
382 
391  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
392  inline MotionTpl<Scalar, Options>
393  motion(const JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata);
394 
403  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
404  inline MotionTpl<Scalar, Options>
405  bias(const JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata);
406 
415  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
416  inline Eigen::Matrix<Scalar, 6, Eigen::Dynamic, Options>
417  u_inertia(const JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata);
418 
427  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
428  inline Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Options>
429  dinv_inertia(const JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata);
430 
439  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
440  inline Eigen::Matrix<Scalar, 6, Eigen::Dynamic, Options>
441  udinv_inertia(const JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata);
442 
451  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
452  inline Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Options>
453  stu_inertia(const JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata);
454 
463  template<
464  typename Scalar,
465  int Options,
466  template<typename S, int O> class JointCollectionTpl,
467  typename JointDataDerived>
468  bool isEqual(
469  const JointDataTpl<Scalar, Options, JointCollectionTpl> & jmodel_generic,
470  const JointDataBase<JointDataDerived> & jmodel);
471 
487  template<
488  typename Scalar,
489  int Options,
490  template<typename S, int O> class JointCollectionTpl,
491  typename ConfigVectorIn,
492  typename ConfigVectorOut>
494  const JointModelTpl<Scalar, Options, JointCollectionTpl> & jmodel,
495  const Eigen::MatrixBase<ConfigVectorIn> & qIn,
496  const Scalar & scaling,
497  const Scalar & offset,
498  const Eigen::MatrixBase<ConfigVectorOut> & qOut);
499 
512  template<
513  int Op,
514  typename Scalar,
515  int Options,
516  template<typename S, int O> class JointCollectionTpl,
517  typename ForceType,
518  typename ExpressionType>
520  JointDataTpl<Scalar, Options, JointCollectionTpl> & jdata, ForceType F, ExpressionType R);
521 
522 } // namespace pinocchio
523 
524 /* --- Details -------------------------------------------------------------------- */
525 // Included later
526 // #include "pinocchio/multibody/joint/joint-basic-visitors.hxx"
527 
528 #endif // ifndef __pinocchio_multibody_joint_basic_visitors_hpp__
pinocchio::joint_q
JointDataTpl< Scalar, Options, JointCollectionTpl >::ConfigVector_t joint_q(const JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata)
Visit a JointDataVariant through JointConfigVisitor to get the joint configuration vector.
common_symbols.type
type
Definition: common_symbols.py:34
pinocchio::idx_q
int idx_q(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointIdxQVisitor to get the index in the full model configuration space...
pinocchio::idx_v
int idx_v(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointIdxVVisitor to get the index in the model tangent space correspond...
pinocchio::Options
Options
Definition: joint-configuration.hpp:1082
pinocchio::nv
int nv(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointNvVisitor to get the dimension of the joint tangent space.
pinocchio::id
JointIndex id(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointIdVisitor to get the index of the joint in the kinematic chain.
pinocchio::nq
int nq(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointNqVisitor to get the dimension of the joint configuration space.
pinocchio::u_inertia
Eigen::Matrix< Scalar, 6, Eigen::Dynamic, Options > u_inertia(const JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata)
Visit a JointDataTpl through JointUInertiaVisitor to get the U matrix of the inertia matrix decomposi...
pinocchio::hasSameIndexes
bool hasSameIndexes(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel_generic, const JointModelBase< JointModelDerived > &jmodel)
Check whether JointModelTpl<Scalar,...> has the indexes than another JointModelDerived.
pinocchio::motion
MotionTpl< Scalar, Options > motion(const JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata)
Visit a JointDataTpl through JointMotionVisitor to get the joint internal motion as a dense motion.
pinocchio::hasConfigurationLimitInTangent
const std::vector< bool > hasConfigurationLimitInTangent(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointConfigurationLimitInTangentVisitor to get the configurations limit...
pinocchio::joint_v
JointDataTpl< Scalar, Options, JointCollectionTpl >::TangentVector_t joint_v(const JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata)
Visit a JointDataVariant through JointConfigVisitor to get the joint velocity vector.
pinocchio::shortname
std::string shortname(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointShortnameVisitor to get the shortname of the derived joint model.
pinocchio::configVectorAffineTransform
void configVectorAffineTransform(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel, const Eigen::MatrixBase< ConfigVectorIn > &qIn, const Scalar &scaling, const Scalar &offset, const Eigen::MatrixBase< ConfigVectorOut > &qOut)
Apply the correct affine transform, on a joint configuration, depending on the joint type.
pinocchio::createData
ConstraintDataTpl< Scalar, Options, ConstraintCollectionTpl > createData(const ConstraintModelTpl< Scalar, Options, ConstraintCollectionTpl > &cmodel)
Definition: constraint-model-visitor.hpp:239
ConfigVectorType
Model::ConfigVectorType ConfigVectorType
Definition: timings-cppad-jit.cpp:57
pinocchio::calc_first_order
void calc_first_order(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel, JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata, const Eigen::MatrixBase< ConfigVectorType > &q, const Eigen::MatrixBase< TangentVectorType > &v)
Visit a JointModelTpl and the corresponding JointDataTpl through JointCalcFirstOrderVisitor to comput...
pinocchio::joint_transform
SE3Tpl< Scalar, Options > joint_transform(const JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata)
Visit a JointDataTpl through JointTransformVisitor to get the joint internal transform (transform bet...
pinocchio::hasConfigurationLimit
const std::vector< bool > hasConfigurationLimit(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointConfigurationLimitVisitor to get the configurations limits.
pinocchio::cast_joint
CastType< NewScalar, JointModelTpl< Scalar, Options, JointCollectionTpl > >::type cast_joint(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl<Scalar,...> to cast it into JointModelTpl<NewScalar,...>
pinocchio::calc_aba
void calc_aba(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel, JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata, const Eigen::MatrixBase< VectorLike > &armature, const Eigen::MatrixBase< Matrix6Type > &I, const bool update_I)
Visit a JointModelTpl and the corresponding JointDataTpl through JointCalcAbaVisitor to.
TangentVectorType
Model::TangentVectorType TangentVectorType
Definition: timings-cppad-jit.cpp:58
pinocchio::nvExtended
int nvExtended(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointNvExtendVisitor to get the dimension of the joint extended tangent...
pinocchio::q
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > & q
Definition: joint-configuration.hpp:1083
pinocchio::idx_vExtended
int idx_vExtended(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointIdvExtendedVisitor to get the index in the model extended tangent ...
pinocchio::v
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > const Eigen::MatrixBase< TangentVectorType > & v
Definition: joint-configuration.hpp:1084
pinocchio::bias
MotionTpl< Scalar, Options > bias(const JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata)
Visit a JointDataTpl through JointBiasVisitor to get the joint bias as a dense motion.
pinocchio::setIndexes
void setIndexes(JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel, JointIndex id, int q, int v, int vExtended)
Visit a JointModelTpl through JointSetIndexesVisitor to set the indexes of the joint in the kinematic...
pinocchio::isEqual
bool isEqual(const ConstraintDataTpl< Scalar, Options, ConstraintCollectionTpl > &cdata_generic, const ConstraintDataBase< ConstraintDataDerived > &cdata)
Definition: constraint-model-visitor.hpp:273
pinocchio::dinv_inertia
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic, Options > dinv_inertia(const JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata)
Visit a JointDataTpl through JointDInvInertiaVisitor to get the D^{-1} matrix of the inertia matrix d...
pinocchio::udinv_inertia
Eigen::Matrix< Scalar, 6, Eigen::Dynamic, Options > udinv_inertia(const JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata)
Visit a JointDataTpl through JointUDInvInertiaVisitor to get U*D^{-1} matrix of the inertia matrix de...
fwd.hpp
pinocchio::JointIndex
Index JointIndex
Definition: multibody/fwd.hpp:26
pinocchio::stu_inertia
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic, Options > stu_inertia(const JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata)
Visit a JointDataTpl through JointStUInertiaVisitor to get St*I*S matrix of the inertia matrix decomp...
pinocchio::calc_zero_order
void calc_zero_order(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel, JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata, const Eigen::MatrixBase< ConfigVectorType > &q)
Visit a JointModelTpl and the corresponding JointDataTpl through JointCalcZeroOrderVisitor to compute...
pinocchio::applyConstraintOnForceVisitor
void applyConstraintOnForceVisitor(JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata, ForceType F, ExpressionType R)
Apply joint constraint (motion subspace) on a force.
Scalar
double Scalar
Definition: timings-cppad-jit.cpp:37
pinocchio::joint_motin_subspace_xd
JointMotionSubspaceTpl< Eigen::Dynamic, Scalar, Options > joint_motin_subspace_xd(const JointDataTpl< Scalar, Options, JointCollectionTpl > &jdata)
Visit a JointDataVariant through JointConstraintVisitor to get the joint constraint as a dense constr...
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:33


pinocchio
Author(s):
autogenerated on Wed Apr 16 2025 02:41:47