joint-planar.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2015-2019 CNRS INRIA
3 // Copyright (c) 2015-2016 Wandercraft, 86 rue de Paris 91400 Orsay, France.
4 //
5 
6 #ifndef __pinocchio_joint_planar_hpp__
7 #define __pinocchio_joint_planar_hpp__
8 
9 #include "pinocchio/macros.hpp"
15 
16 namespace pinocchio
17 {
18 
19  template<typename Scalar, int Options = 0> struct MotionPlanarTpl;
21 
22  template<typename Scalar, int Options>
24  {
26  };
27 
28  template<typename Scalar, int Options, typename MotionDerived>
30  {
32  };
33 
34  template<typename _Scalar, int _Options>
35  struct traits< MotionPlanarTpl<_Scalar,_Options> >
36  {
37  typedef _Scalar Scalar;
38  enum { Options = _Options };
39  typedef Eigen::Matrix<Scalar,3,1,Options> Vector3;
40  typedef Eigen::Matrix<Scalar,6,1,Options> Vector6;
41  typedef Eigen::Matrix<Scalar,4,4,Options> Matrix4;
42  typedef Eigen::Matrix<Scalar,6,6,Options> Matrix6;
43  typedef typename PINOCCHIO_EIGEN_REF_CONST_TYPE(Vector6) ToVectorConstReturnType;
44  typedef typename PINOCCHIO_EIGEN_REF_TYPE(Vector6) ToVectorReturnType;
47  typedef const Vector3 ConstAngularType;
48  typedef const Vector3 ConstLinearType;
53  enum {
54  LINEAR = 0,
55  ANGULAR = 3
56  };
57  }; // traits MotionPlanarTpl
58 
59  template<typename _Scalar, int _Options>
60  struct MotionPlanarTpl
61  : MotionBase< MotionPlanarTpl<_Scalar,_Options> >
62  {
63  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
65 
67 
69 
70  MotionPlanarTpl(const Scalar & x_dot, const Scalar & y_dot,
71  const Scalar & theta_dot)
72  {
73  m_data << x_dot, y_dot, theta_dot;
74  }
75 
76  template<typename Vector3Like>
77  MotionPlanarTpl(const Eigen::MatrixBase<Vector3Like> & vj)
78  : m_data(vj)
79  {
80  EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Vector3Like,3);
81  }
82 
83  inline PlainReturnType plain() const
84  {
85  return PlainReturnType(typename PlainReturnType::Vector3(vx(),vy(),Scalar(0)),
86  typename PlainReturnType::Vector3(Scalar(0),Scalar(0),wz()));
87  }
88 
89  template<typename Derived>
90  void addTo(MotionDense<Derived> & other) const
91  {
92  other.linear()[0] += vx();
93  other.linear()[1] += vy();
94  other.angular()[2] += wz();
95  }
96 
97  template<typename MotionDerived>
98  void setTo(MotionDense<MotionDerived> & other) const
99  {
100  other.linear() << vx(), vy(), (Scalar)0;
101  other.angular() << (Scalar)0, (Scalar)0, wz();
102  }
103 
104  template<typename S2, int O2, typename D2>
106  {
107  v.angular().noalias() = m.rotation().col(2) * wz();
108  v.linear().noalias() = m.rotation().template leftCols<2>() * m_data.template head<2>();
109  v.linear() += m.translation().cross(v.angular());
110  }
111 
112  template<typename S2, int O2>
113  MotionPlain se3Action_impl(const SE3Tpl<S2,O2> & m) const
114  {
115  MotionPlain res;
117  return res;
118  }
119 
120  template<typename S2, int O2, typename D2>
122  {
123  // Linear
124  // TODO: use v.angular() as temporary variable
125  Vector3 v3_tmp;
126  AxisZ::alphaCross(wz(),m.translation(),v3_tmp);
127  v3_tmp[0] += vx(); v3_tmp[1] += vy();
128  v.linear().noalias() = m.rotation().transpose() * v3_tmp;
129 
130  // Angular
131  v.angular().noalias() = m.rotation().transpose().col(2) * wz();
132  }
133 
134  template<typename S2, int O2>
135  MotionPlain se3ActionInverse_impl(const SE3Tpl<S2,O2> & m) const
136  {
137  MotionPlain res;
139  return res;
140  }
141 
142  template<typename M1, typename M2>
143  void motionAction(const MotionDense<M1> & v, MotionDense<M2> & mout) const
144  {
145  // Linear
146  AxisZ::alphaCross(-wz(),v.linear(),mout.linear());
147 
148  typename M1::ConstAngularType w_in = v.angular();
149  typename M2::LinearType v_out = mout.linear();
150 
151  v_out[0] -= w_in[2] * vy();
152  v_out[1] += w_in[2] * vx();
153  v_out[2] += -w_in[1] * vx() + w_in[0] * vy() ;
154 
155  // Angular
156  AxisZ::alphaCross(-wz(),v.angular(),mout.angular());
157  }
158 
159  template<typename M1>
160  MotionPlain motionAction(const MotionDense<M1> & v) const
161  {
162  MotionPlain res;
163  motionAction(v,res);
164  return res;
165  }
166 
167  const Scalar & vx() const { return m_data[0]; }
168  Scalar & vx() { return m_data[0]; }
169 
170  const Scalar & vy() const { return m_data[1]; }
171  Scalar & vy() { return m_data[1]; }
172 
173  const Scalar & wz() const { return m_data[2]; }
174  Scalar & wz() { return m_data[2]; }
175 
176  const Vector3 & data() const { return m_data; }
177  Vector3 & data() { return m_data; }
178 
179  bool isEqual_impl(const MotionPlanarTpl & other) const
180  {
181  return m_data == other.m_data;
182  }
183 
184  protected:
185 
186  Vector3 m_data;
187 
188  }; // struct MotionPlanarTpl
189 
190  template<typename Scalar, int Options, typename MotionDerived>
191  inline typename MotionDerived::MotionPlain
193  {
194  typename MotionDerived::MotionPlain result(m2);
195  result.linear()[0] += m1.vx();
196  result.linear()[1] += m1.vy();
197 
198  result.angular()[2] += m1.wz();
199 
200  return result;
201  }
202 
203  template<typename Scalar, int Options> struct ConstraintPlanarTpl;
204 
205  template<typename _Scalar, int _Options>
206  struct traits< ConstraintPlanarTpl<_Scalar,_Options> >
207  {
208  typedef _Scalar Scalar;
209  enum { Options = _Options };
210  enum {
211  LINEAR = 0,
212  ANGULAR = 3
213  };
215  typedef Eigen::Matrix<Scalar,3,1,Options> JointForce;
216  typedef Eigen::Matrix<Scalar,6,3,Options> DenseBase;
219  }; // struct traits ConstraintPlanarTpl
220 
221  template<typename _Scalar, int _Options>
222  struct ConstraintPlanarTpl
223  : ConstraintBase< ConstraintPlanarTpl<_Scalar,_Options> >
224  {
225  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
227 
228  enum { NV = 3 };
229 
231 
232  template<typename Vector3Like>
233  JointMotion __mult__(const Eigen::MatrixBase<Vector3Like> & vj) const
234  {
235  EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(Vector3Like,3);
236  return JointMotion(vj);
237  }
238 
239  int nv_impl() const { return NV; }
240 
242  {
245 
246  template<typename Derived>
248  {
249  typedef typename ForceDense<Derived>::Vector3 Vector3;
250  return Vector3(phi.linear()[0], phi.linear()[1], phi.angular()[2]);
251  }
252 
253  /* [CRBA] MatrixBase operator* (Constraint::Transpose S, ForceSet::Block) */
254  template<typename Derived>
255  friend typename Eigen::Matrix <typename Eigen::MatrixBase<Derived>::Scalar, 3, Derived::ColsAtCompileTime>
256  operator*(const ConstraintTranspose &, const Eigen::MatrixBase<Derived> & F)
257  {
259  typedef Eigen::Matrix<Scalar, 3, Derived::ColsAtCompileTime> MatrixReturnType;
260  assert(F.rows()==6);
261 
262  MatrixReturnType result(3, F.cols ());
263  result.template topRows<2>() = F.template topRows<2>();
264  result.template bottomRows<1>() = F.template bottomRows<1>();
265  return result;
266  }
267 
268  }; // struct ConstraintTranspose
269 
271 
272  DenseBase matrix_impl() const
273  {
274  DenseBase S;
275  S.template block<3,3>(Inertia::LINEAR, 0).setZero ();
276  S.template block<3,3>(Inertia::ANGULAR, 0).setZero ();
277  S(Inertia::LINEAR + 0,0) = Scalar(1);
278  S(Inertia::LINEAR + 1,1) = Scalar(1);
279  S(Inertia::ANGULAR + 2,2) = Scalar(1);
280  return S;
281  }
282 
283  template<typename S1, int O1>
284  DenseBase se3Action(const SE3Tpl<S1,O1> & m) const
285  {
286  DenseBase X_subspace;
287 
288  // LINEAR
289  X_subspace.template block <3,2>(Motion::LINEAR, 0) = m.rotation ().template leftCols <2> ();
290  X_subspace.template block <3,1>(Motion::LINEAR, 2).noalias()
291  = m.translation().cross(m.rotation ().template rightCols<1>());
292 
293  // ANGULAR
294  X_subspace.template block <3,2>(Motion::ANGULAR, 0).setZero ();
295  X_subspace.template block <3,1>(Motion::ANGULAR, 2) = m.rotation ().template rightCols<1>();
296 
297  return X_subspace;
298  }
299 
300  template<typename S1, int O1>
301  DenseBase se3ActionInverse(const SE3Tpl<S1,O1> & m) const
302  {
303  DenseBase X_subspace;
304 
305  // LINEAR
306  X_subspace.template block <3,2>(Motion::LINEAR, 0) = m.rotation().transpose().template leftCols <2>();
307  X_subspace.template block <3,1>(Motion::ANGULAR,2).noalias() = m.rotation().transpose() * m.translation(); // tmp variable
308  X_subspace.template block <3,1>(Motion::LINEAR, 2).noalias() = -X_subspace.template block <3,1>(Motion::ANGULAR,2).cross(m.rotation().transpose().template rightCols<1>());
309 
310  // ANGULAR
311  X_subspace.template block <3,2>(Motion::ANGULAR, 0).setZero();
312  X_subspace.template block <3,1>(Motion::ANGULAR, 2) = m.rotation().transpose().template rightCols<1>();
313 
314  return X_subspace;
315  }
316 
317  template<typename MotionDerived>
318  DenseBase motionAction(const MotionDense<MotionDerived> & m) const
319  {
320  const typename MotionDerived::ConstLinearType v = m.linear();
321  const typename MotionDerived::ConstAngularType w = m.angular();
322  DenseBase res(DenseBase::Zero());
323 
324  res(0,1) = -w[2]; res(0,2) = v[1];
325  res(1,0) = w[2]; res(1,2) = -v[0];
326  res(2,0) = -w[1]; res(2,1) = w[0];
327  res(3,2) = w[1];
328  res(4,2) = -w[0];
329 
330  return res;
331  }
332 
333  bool isEqual(const ConstraintPlanarTpl &) const { return true; }
334 
335  }; // struct ConstraintPlanarTpl
336 
337  template<typename MotionDerived, typename S2, int O2>
338  inline typename MotionDerived::MotionPlain
340  {
341  return m2.motionAction(m1);
342  }
343 
344  /* [CRBA] ForceSet operator* (Inertia Y,Constraint S) */
345  template<typename S1, int O1, typename S2, int O2>
346  inline typename Eigen::Matrix<S1,6,3,O1>
348  {
349  typedef InertiaTpl<S1,O1> Inertia;
350  typedef typename Inertia::Scalar Scalar;
351  typedef Eigen::Matrix<S1,6,3,O1> ReturnType;
352 
353  ReturnType M;
354  const Scalar mass = Y.mass();
355  const typename Inertia::Vector3 & com = Y.lever();
356  const typename Inertia::Symmetric3 & inertia = Y.inertia();
357 
358  M.template topLeftCorner<3,3>().setZero();
359  M.template topLeftCorner<2,2>().diagonal().fill(mass);
360 
361  const typename Inertia::Vector3 mc(mass * com);
362  M.template rightCols<1>().template head<2>() << -mc(1), mc(0);
363 
364  M.template bottomLeftCorner<3,2>() << (Scalar)0, -mc(2), mc(2), (Scalar)0, -mc(1), mc(0);
365  M.template rightCols<1>().template tail<3>() = inertia.data().template tail<3>();
366  M.template rightCols<1>()[3] -= mc(0)*com(2);
367  M.template rightCols<1>()[4] -= mc(1)*com(2);
368  M.template rightCols<1>()[5] += mass*(com(0)*com(0) + com(1)*com(1));
369 
370  return M;
371  }
372 
373  /* [ABA] Y*S operator (Inertia Y,Constraint S) */
374  // inline Eigen::Matrix<double,6,1>
375 
376  template<typename M6Like, typename S2, int O2>
377  inline Eigen::Matrix<S2,6,3,O2>
378  operator*(const Eigen::MatrixBase<M6Like> & Y,
380  {
381  EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(M6Like,6,6);
382  typedef Eigen::Matrix<S2,6,3,O2> Matrix63;
383 
384  Matrix63 IS;
385  IS.template leftCols<2>() = Y.template leftCols<2>();
386  IS.template rightCols<1>() = Y.template rightCols<1>();
387 
388  return IS;
389  }
390 
391  template<typename S1, int O1>
393  { typedef Eigen::Matrix<S1,6,3,O1> ReturnType; };
394 
395  template<typename S1, int O1, typename MotionDerived>
396  struct MotionAlgebraAction< ConstraintPlanarTpl<S1,O1>,MotionDerived >
397  { typedef Eigen::Matrix<S1,6,3,O1> ReturnType; };
398 
399  template<typename Scalar, int Options> struct JointPlanarTpl;
400 
401  template<typename _Scalar, int _Options>
402  struct traits< JointPlanarTpl<_Scalar,_Options> >
403  {
404  enum {
405  NQ = 4,
406  NV = 3
407  };
408  enum { Options = _Options };
409  typedef _Scalar Scalar;
416 
417  // [ABA]
418  typedef Eigen::Matrix<Scalar,6,NV,Options> U_t;
419  typedef Eigen::Matrix<Scalar,NV,NV,Options> D_t;
420  typedef Eigen::Matrix<Scalar,6,NV,Options> UD_t;
421 
423 
424  typedef Eigen::Matrix<Scalar,NQ,1,Options> ConfigVector_t;
425  typedef Eigen::Matrix<Scalar,NV,1,Options> TangentVector_t;
426  };
427 
428  template<typename Scalar, int Options>
430  template<typename Scalar, int Options>
432 
433  template<typename _Scalar, int _Options>
434  struct JointDataPlanarTpl : public JointDataBase< JointDataPlanarTpl<_Scalar,_Options> >
435  {
436  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
440 
441  Constraint_t S;
442  Transformation_t M;
443  Motion_t v;
444  Bias_t c;
445 
446  // [ABA] specific data
447  U_t U;
448  D_t Dinv;
449  UD_t UDinv;
450 
451  D_t StU;
452 
454  : M(Transformation_t::Identity())
455  , v(Motion_t::Vector3::Zero())
456  , U(U_t::Zero())
457  , Dinv(D_t::Zero())
458  , UDinv(UD_t::Zero())
459  {}
460 
461  static std::string classname() { return std::string("JointDataPlanar"); }
462  std::string shortname() const { return classname(); }
463 
464  }; // struct JointDataPlanarTpl
465 
466  PINOCCHIO_JOINT_CAST_TYPE_SPECIALIZATION(JointModelPlanarTpl);
467  template<typename _Scalar, int _Options>
468  struct JointModelPlanarTpl
469  : public JointModelBase< JointModelPlanarTpl<_Scalar,_Options> >
470  {
471  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
474 
476  using Base::id;
477  using Base::idx_q;
478  using Base::idx_v;
479  using Base::setIndexes;
480 
481  JointDataDerived createData() const { return JointDataDerived(); }
482 
483  const std::vector<bool> hasConfigurationLimit() const
484  {
485  return {true, true, false, false};
486  }
487 
488  const std::vector<bool> hasConfigurationLimitInTangent() const
489  {
490  return {true, true, false};
491  }
492 
493  template<typename ConfigVector>
494  inline void forwardKinematics(Transformation_t & M, const Eigen::MatrixBase<ConfigVector> & q_joint) const
495  {
496  const Scalar
497  & c_theta = q_joint(2),
498  & s_theta = q_joint(3);
499 
500  M.rotation().template topLeftCorner<2,2>() << c_theta, -s_theta, s_theta, c_theta;
501  M.translation().template head<2>() = q_joint.template head<2>();
502  }
503 
504  template<typename ConfigVector>
505  void calc(JointDataDerived & data,
506  const typename Eigen::MatrixBase<ConfigVector> & qs) const
507  {
508  typedef typename ConfigVector::Scalar Scalar;
509  typename ConfigVector::template ConstFixedSegmentReturnType<NQ>::Type & q = qs.template segment<NQ>(idx_q());
510 
511  const Scalar
512  &c_theta = q(2),
513  &s_theta = q(3);
514 
515  data.M.rotation().template topLeftCorner<2,2>() << c_theta, -s_theta, s_theta, c_theta;
516  data.M.translation().template head<2>() = q.template head<2>();
517 
518  }
519 
520  template<typename ConfigVector, typename TangentVector>
521  void calc(JointDataDerived & data,
522  const typename Eigen::MatrixBase<ConfigVector> & qs,
523  const typename Eigen::MatrixBase<TangentVector> & vs) const
524  {
525  calc(data,qs.derived());
526 
527  typename TangentVector::template ConstFixedSegmentReturnType<NV>::Type & q_dot = vs.template segment<NV>(idx_v ());
528 
529  data.v.vx() = q_dot(0);
530  data.v.vy() = q_dot(1);
531  data.v.wz() = q_dot(2);
532  }
533 
534  template<typename Matrix6Like>
535  void calc_aba(JointDataDerived & data,
536  const Eigen::MatrixBase<Matrix6Like> & I,
537  const bool update_I) const
538  {
539  data.U.template leftCols<2>() = I.template leftCols<2>();
540  data.U.template rightCols<1>() = I.template rightCols<1>();
541 
542  data.StU.template leftCols<2>() = data.U.template topRows<2>().transpose();
543  data.StU.template rightCols<1>() = data.U.template bottomRows<1>();
544 
545  // compute inverse
546 // data.Dinv.setIdentity();
547 // data.StU.llt().solveInPlace(data.Dinv);
549 
550  data.UDinv.noalias() = data.U * data.Dinv;
551 
552  if(update_I)
553  PINOCCHIO_EIGEN_CONST_CAST(Matrix6Like,I).noalias() -= data.UDinv * data.U.transpose();
554  }
555 
556  static std::string classname() { return std::string("JointModelPlanar");}
557  std::string shortname() const { return classname(); }
558 
560  template<typename NewScalar>
562  {
563  typedef JointModelPlanarTpl<NewScalar,Options> ReturnType;
564  ReturnType res;
565  res.setIndexes(id(),idx_q(),idx_v());
566  return res;
567  }
568 
569  }; // struct JointModelPlanarTpl
570 
571 } // namespace pinocchio
572 
573 #include <boost/type_traits.hpp>
574 
575 namespace boost
576 {
577  template<typename Scalar, int Options>
578  struct has_nothrow_constructor< ::pinocchio::JointModelPlanarTpl<Scalar,Options> >
579  : public integral_constant<bool,true> {};
580 
581  template<typename Scalar, int Options>
582  struct has_nothrow_copy< ::pinocchio::JointModelPlanarTpl<Scalar,Options> >
583  : public integral_constant<bool,true> {};
584 
585  template<typename Scalar, int Options>
586  struct has_nothrow_constructor< ::pinocchio::JointDataPlanarTpl<Scalar,Options> >
587  : public integral_constant<bool,true> {};
588 
589  template<typename Scalar, int Options>
590  struct has_nothrow_copy< ::pinocchio::JointDataPlanarTpl<Scalar,Options> >
591  : public integral_constant<bool,true> {};
592 }
593 
594 #endif // ifndef __pinocchio_joint_planar_hpp__
m
float m
pinocchio::MotionPlanar
MotionPlanarTpl< double > MotionPlanar
Definition: joint-planar.hpp:19
PINOCCHIO_JOINT_DATA_BASE_ACCESSOR_DEFAULT_RETURN_TYPE
#define PINOCCHIO_JOINT_DATA_BASE_ACCESSOR_DEFAULT_RETURN_TYPE
Definition: joint-data-base.hpp:62
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::ActionMatrixType
Matrix6 ActionMatrixType
Definition: joint-planar.hpp:49
pinocchio::ForceDense::linear
ConstLinearType linear() const
Return the linear part of the force vector.
Definition: force-base.hpp:42
pinocchio::traits< JointPlanarTpl< _Scalar, _Options > >::D_t
Eigen::Matrix< Scalar, NV, NV, Options > D_t
Definition: joint-planar.hpp:419
pinocchio::MotionPlanarTpl::MotionPlanarTpl
MotionPlanarTpl()
Definition: joint-planar.hpp:68
pinocchio::ConstraintPlanarTpl
Definition: joint-planar.hpp:203
macros.hpp
pinocchio::JointModelPlanarTpl::hasConfigurationLimit
const std::vector< bool > hasConfigurationLimit() const
Definition: joint-planar.hpp:483
pinocchio::operator*
MultiplicationOp< InertiaTpl< Scalar, Options >, ConstraintDerived >::ReturnType operator*(const InertiaTpl< Scalar, Options > &Y, const ConstraintBase< ConstraintDerived > &constraint)
&#160;
Definition: constraint-base.hpp:112
pinocchio::JointModelPlanarTpl
Definition: multibody/joint/fwd.hpp:69
pinocchio::MotionPlanarTpl::wz
Scalar & wz()
Definition: joint-planar.hpp:174
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::Scalar
_Scalar Scalar
Definition: joint-planar.hpp:37
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::traits< JointPlanarTpl< _Scalar, _Options > >::JointModelDerived
JointModelPlanarTpl< Scalar, Options > JointModelDerived
Definition: joint-planar.hpp:411
pinocchio::JointModelBase
Definition: joint-model-base.hpp:67
pinocchio::traits< JointPlanarTpl< _Scalar, _Options > >::Transformation_t
SE3Tpl< Scalar, Options > Transformation_t
Definition: joint-planar.hpp:413
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::MotionPlain
MotionTpl< Scalar, Options > MotionPlain
Definition: joint-planar.hpp:51
pinocchio::MotionPlanarTpl::vy
const Scalar & vy() const
Definition: joint-planar.hpp:170
pinocchio::ConstraintPlanarTpl::motionAction
DenseBase motionAction(const MotionDense< MotionDerived > &m) const
Definition: joint-planar.hpp:318
pinocchio::idx_v
int idx_v(const JointModelTpl< Scalar, Options, JointCollectionTpl > &jmodel)
Visit a JointModelTpl through JointIdxVVisitor to get the index in the full model tangent space corre...
pinocchio::JointDataPlanarTpl::v
Motion_t v
Definition: joint-planar.hpp:443
pinocchio::Options
Options
Definition: joint-configuration.hpp:746
pinocchio::traits< ConstraintPlanarTpl< _Scalar, _Options > >::JointMotion
MotionPlanarTpl< Scalar, Options > JointMotion
Definition: joint-planar.hpp:214
pinocchio::ConstraintPlanarTpl::matrix_impl
DenseBase matrix_impl() const
Definition: joint-planar.hpp:272
pinocchio::JointModelPlanarTpl::calc_aba
void calc_aba(JointDataDerived &data, const Eigen::MatrixBase< Matrix6Like > &I, const bool update_I) const
Definition: joint-planar.hpp:535
pinocchio::traits< JointDataPlanarTpl< Scalar, Options > >::JointDerived
JointPlanarTpl< Scalar, Options > JointDerived
Definition: joint-planar.hpp:429
PINOCCHIO_EIGEN_CONST_CAST
#define PINOCCHIO_EIGEN_CONST_CAST(TYPE, OBJ)
Macro for an automatic const_cast.
Definition: eigen-macros.hpp:43
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::ConstAngularType
const typedef Vector3 ConstAngularType
Definition: joint-planar.hpp:47
pinocchio::SE3Tpl
Definition: spatial/fwd.hpp:38
pinocchio::internal::PerformStYSInversion::run
static EIGEN_STRONG_INLINE void run(const Eigen::MatrixBase< M1 > &StYS, const Eigen::MatrixBase< M2 > &Dinv)
Definition: joint-common-operations.hpp:25
pinocchio::JointDataBase
Definition: joint-data-base.hpp:82
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::Matrix6
Eigen::Matrix< Scalar, 6, 6, Options > Matrix6
Definition: joint-planar.hpp:42
pinocchio::PINOCCHIO_EIGEN_REF_CONST_TYPE
PINOCCHIO_EIGEN_REF_CONST_TYPE(Matrix6Like) operator*(const Eigen
Definition: joint-free-flyer.hpp:122
setup.data
data
Definition: cmake/cython/setup.in.py:48
inertia.hpp
pinocchio::JointModelPlanarTpl::hasConfigurationLimitInTangent
const std::vector< bool > hasConfigurationLimitInTangent() const
Definition: joint-planar.hpp:488
pinocchio::MotionPlanarTpl::motionAction
MotionPlain motionAction(const MotionDense< M1 > &v) const
Definition: joint-planar.hpp:160
pinocchio::JointDataPlanarTpl::classname
static std::string classname()
Definition: joint-planar.hpp:461
pinocchio::ConstraintPlanarTpl::ConstraintTranspose::operator*
friend Eigen::Matrix< typename Eigen::MatrixBase< Derived >::Scalar, 3, Derived::ColsAtCompileTime > operator*(const ConstraintTranspose &, const Eigen::MatrixBase< Derived > &F)
Definition: joint-planar.hpp:256
pinocchio::JointDataPlanarTpl::JointDerived
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef JointPlanarTpl< _Scalar, _Options > JointDerived
Definition: joint-planar.hpp:437
pinocchio::MotionDense
Definition: spatial/fwd.hpp:41
pinocchio::ConstraintPlanarTpl::transpose
ConstraintTranspose transpose() const
Definition: joint-planar.hpp:270
boost
pinocchio::JointModelBase::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:127
pinocchio::ConstraintPlanarTpl::__mult__
JointMotion __mult__(const Eigen::MatrixBase< Vector3Like > &vj) const
Definition: joint-planar.hpp:233
pinocchio::SE3GroupAction< ConstraintPlanarTpl< S1, O1 > >::ReturnType
Eigen::Matrix< S1, 6, 3, O1 > ReturnType
Definition: joint-planar.hpp:393
pinocchio::ConstraintPlanarTpl::ConstraintTranspose
Definition: joint-planar.hpp:241
pinocchio::traits< JointPlanarTpl< _Scalar, _Options > >::ConfigVector_t
PINOCCHIO_JOINT_DATA_BASE_ACCESSOR_DEFAULT_RETURN_TYPE typedef Eigen::Matrix< Scalar, NQ, 1, Options > ConfigVector_t
Definition: joint-planar.hpp:424
pinocchio::MotionPlanarTpl::se3ActionInverse_impl
MotionPlain se3ActionInverse_impl(const SE3Tpl< S2, O2 > &m) const
Definition: joint-planar.hpp:135
pinocchio::JointModelPlanarTpl::shortname
std::string shortname() const
Definition: joint-planar.hpp:557
pinocchio::JointModelPlanarTpl::createData
JointDataDerived createData() const
Definition: joint-planar.hpp:481
pinocchio::JointDataPlanarTpl::PINOCCHIO_JOINT_DATA_TYPEDEF_TEMPLATE
PINOCCHIO_JOINT_DATA_TYPEDEF_TEMPLATE(JointDerived)
pinocchio::MotionAlgebraAction
Return type of the ation of a Motion onto an object of type D.
Definition: spatial/motion.hpp:46
pinocchio::ConstraintPlanarTpl::ConstraintTranspose::ConstraintTranspose
ConstraintTranspose(const ConstraintPlanarTpl &ref)
Definition: joint-planar.hpp:244
motion.hpp
pinocchio::ConstraintPlanarTpl::se3ActionInverse
DenseBase se3ActionInverse(const SE3Tpl< S1, O1 > &m) const
Definition: joint-planar.hpp:301
pinocchio::traits< JointPlanarTpl< _Scalar, _Options > >::U_t
Eigen::Matrix< Scalar, 6, NV, Options > U_t
Definition: joint-planar.hpp:418
pinocchio::MotionPlanarTpl::data
Vector3 & data()
Definition: joint-planar.hpp:177
pinocchio::JointDataPlanarTpl::JointDataPlanarTpl
JointDataPlanarTpl()
Definition: joint-planar.hpp:453
pinocchio::ConstraintPlanarTpl::isEqual
bool isEqual(const ConstraintPlanarTpl &) const
Definition: joint-planar.hpp:333
pinocchio::MotionDense::linear
ConstLinearType linear() const
Definition: motion-base.hpp:22
pinocchio::SE3GroupAction
Definition: spatial/se3.hpp:39
pinocchio::SE3GroupAction< MotionPlanarTpl< Scalar, Options > >::ReturnType
MotionTpl< Scalar, Options > ReturnType
Definition: joint-planar.hpp:25
pinocchio::MotionZeroTpl
Definition: spatial/fwd.hpp:44
PINOCCHIO_JOINT_DATA_BASE_DEFAULT_ACCESSOR
#define PINOCCHIO_JOINT_DATA_BASE_DEFAULT_ACCESSOR
Definition: joint-data-base.hpp:46
pinocchio::Inertia
InertiaTpl< double, 0 > Inertia
Definition: spatial/fwd.hpp:59
pinocchio::traits< JointPlanarTpl< _Scalar, _Options > >::Motion_t
MotionPlanarTpl< Scalar, Options > Motion_t
Definition: joint-planar.hpp:414
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::Vector6
Eigen::Matrix< Scalar, 6, 1, Options > Vector6
Definition: joint-planar.hpp:40
pinocchio::ConstraintPlanarTpl::ConstraintTranspose::operator*
ForceDense< Derived >::Vector3 operator*(const ForceDense< Derived > &phi)
Definition: joint-planar.hpp:247
pinocchio::JointDataPlanarTpl::c
Bias_t c
Definition: joint-planar.hpp:444
pinocchio::JointDataPlanarTpl
Definition: multibody/joint/fwd.hpp:72
pinocchio::traits< JointPlanarTpl< _Scalar, _Options > >::Scalar
_Scalar Scalar
Definition: joint-planar.hpp:409
res
res
pinocchio::traits< JointPlanarTpl< _Scalar, _Options > >::UD_t
Eigen::Matrix< Scalar, 6, NV, Options > UD_t
Definition: joint-planar.hpp:420
pinocchio::JointModelPlanarTpl::calc
void calc(JointDataDerived &data, const typename Eigen::MatrixBase< ConfigVector > &qs, const typename Eigen::MatrixBase< TangentVector > &vs) const
Definition: joint-planar.hpp:521
pinocchio::python::Scalar
SE3::Scalar Scalar
Definition: conversions.cpp:15
pinocchio::PINOCCHIO_JOINT_CAST_TYPE_SPECIALIZATION
PINOCCHIO_JOINT_CAST_TYPE_SPECIALIZATION(JointModelFreeFlyerTpl)
pinocchio::MotionAlgebraAction< ConstraintPlanarTpl< S1, O1 >, MotionDerived >::ReturnType
Eigen::Matrix< S1, 6, 3, O1 > ReturnType
Definition: joint-planar.hpp:397
cartesian-axis.hpp
pinocchio::MotionPlanarTpl::motionAction
void motionAction(const MotionDense< M1 > &v, MotionDense< M2 > &mout) const
Definition: joint-planar.hpp:143
pinocchio::MotionAlgebraAction< MotionPlanarTpl< Scalar, Options >, MotionDerived >::ReturnType
MotionTpl< Scalar, Options > ReturnType
Definition: joint-planar.hpp:31
pinocchio::ConstraintPlanarTpl::se3Action
DenseBase se3Action(const SE3Tpl< S1, O1 > &m) const
Definition: joint-planar.hpp:284
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::LinearType
Vector3 LinearType
Definition: joint-planar.hpp:46
pinocchio::MotionPlanarTpl::MotionPlanarTpl
MotionPlanarTpl(const Eigen::MatrixBase< Vector3Like > &vj)
Definition: joint-planar.hpp:77
pinocchio::MotionPlanarTpl
Definition: joint-planar.hpp:19
pinocchio::traits< ConstraintPlanarTpl< _Scalar, _Options > >::ConstMatrixReturnType
const typedef DenseBase ConstMatrixReturnType
Definition: joint-planar.hpp:218
pinocchio::traits< JointPlanarTpl< _Scalar, _Options > >::Constraint_t
ConstraintPlanarTpl< Scalar, Options > Constraint_t
Definition: joint-planar.hpp:412
pinocchio::MotionPlanarTpl::MotionPlanarTpl
MotionPlanarTpl(const Scalar &x_dot, const Scalar &y_dot, const Scalar &theta_dot)
Definition: joint-planar.hpp:70
pinocchio::JointDataPlanarTpl::S
PINOCCHIO_JOINT_DATA_BASE_DEFAULT_ACCESSOR Constraint_t S
Definition: joint-planar.hpp:441
pinocchio::MotionPlanarTpl::data
const Vector3 & data() const
Definition: joint-planar.hpp:176
pinocchio::JointDataPlanarTpl::StU
D_t StU
Definition: joint-planar.hpp:451
pinocchio::JointModelPlanarTpl::cast
JointModelPlanarTpl< NewScalar, Options > cast() const
Definition: joint-planar.hpp:561
joint-base.hpp
pinocchio::ConstraintPlanarTpl::ConstraintPlanarTpl
ConstraintPlanarTpl()
Definition: joint-planar.hpp:230
pinocchio::MotionPlanarTpl::setTo
void setTo(MotionDense< MotionDerived > &other) const
Definition: joint-planar.hpp:98
pinocchio::JointModelPlanarTpl::JointDerived
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef JointPlanarTpl< _Scalar, _Options > JointDerived
Definition: joint-planar.hpp:472
pinocchio::operator+
MotionDerived::MotionPlain operator+(const MotionPlanarTpl< Scalar, Options > &m1, const MotionDense< MotionDerived > &m2)
Definition: joint-planar.hpp:192
M
M
pinocchio::MotionPlanarTpl::isEqual_impl
bool isEqual_impl(const MotionPlanarTpl &other) const
Definition: joint-planar.hpp:179
ur5x4.w
w
Definition: ur5x4.py:45
pinocchio::traits< ConstraintPlanarTpl< _Scalar, _Options > >::DenseBase
Eigen::Matrix< Scalar, 6, 3, Options > DenseBase
Definition: joint-planar.hpp:216
pinocchio::traits< JointPlanarTpl< _Scalar, _Options > >::Bias_t
MotionZeroTpl< Scalar, Options > Bias_t
Definition: joint-planar.hpp:415
pinocchio::traits< JointPlanarTpl< _Scalar, _Options > >::JointDataDerived
JointDataPlanarTpl< Scalar, Options > JointDataDerived
Definition: joint-planar.hpp:410
pinocchio::MotionPlanarTpl::vx
const Scalar & vx() const
Definition: joint-planar.hpp:167
pinocchio::MotionPlanarTpl::vy
Scalar & vy()
Definition: joint-planar.hpp:171
pinocchio::Symmetric3
Symmetric3Tpl< double, 0 > Symmetric3
Definition: spatial/fwd.hpp:60
pinocchio::traits< JointModelPlanarTpl< Scalar, Options > >::JointDerived
JointPlanarTpl< Scalar, Options > JointDerived
Definition: joint-planar.hpp:431
pinocchio::q
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > & q
Definition: joint-configuration.hpp:747
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::Matrix4
Eigen::Matrix< Scalar, 4, 4, Options > Matrix4
Definition: joint-planar.hpp:41
pinocchio::MotionPlanarTpl::wz
const Scalar & wz() const
Definition: joint-planar.hpp:173
pinocchio::MotionPlanarTpl::m_data
Vector3 m_data
Definition: joint-planar.hpp:186
pinocchio::JointModelPlanarTpl::PINOCCHIO_JOINT_TYPEDEF_TEMPLATE
PINOCCHIO_JOINT_TYPEDEF_TEMPLATE(JointDerived)
pinocchio::JointModelBase::idx_v
int idx_v() const
Definition: joint-model-base.hpp:120
pinocchio::v
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > const Eigen::MatrixBase< TangentVectorType > & v
Definition: joint-configuration.hpp:748
constraint.hpp
pinocchio::JointModelPlanarTpl::classname
static std::string classname()
Definition: joint-planar.hpp:556
pinocchio::MotionPlanarTpl::vx
Scalar & vx()
Definition: joint-planar.hpp:168
pinocchio::traits< ConstraintPlanarTpl< _Scalar, _Options > >::Scalar
_Scalar Scalar
Definition: joint-planar.hpp:208
collision-with-point-clouds.Y
Y
Definition: collision-with-point-clouds.py:31
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::HomogeneousMatrixType
Matrix4 HomogeneousMatrixType
Definition: joint-planar.hpp:50
pinocchio::JointModelBase::idx_q
int idx_q() const
Definition: joint-model-base.hpp:119
pinocchio::JointDataPlanarTpl::U
U_t U
Definition: joint-planar.hpp:447
pinocchio::ConstraintPlanarTpl::NV
@ NV
Definition: joint-planar.hpp:228
pinocchio::MotionPlanarTpl::addTo
void addTo(MotionDense< Derived > &other) const
Definition: joint-planar.hpp:90
pinocchio::JointDataPlanarTpl::Dinv
D_t Dinv
Definition: joint-planar.hpp:448
pinocchio::traits< ConstraintPlanarTpl< _Scalar, _Options > >::JointForce
Eigen::Matrix< Scalar, 3, 1, Options > JointForce
Definition: joint-planar.hpp:215
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::ConstLinearType
const typedef Vector3 ConstLinearType
Definition: joint-planar.hpp:48
pinocchio::ForceDense
Definition: force-dense.hpp:24
pinocchio::JointModelPlanarTpl::Base
JointModelBase< JointModelPlanarTpl > Base
Definition: joint-planar.hpp:475
pinocchio::ConstraintBase
Definition: constraint-base.hpp:48
pinocchio::traits< ConstraintPlanarTpl< _Scalar, _Options > >::MatrixReturnType
DenseBase MatrixReturnType
Definition: joint-planar.hpp:217
PINOCCHIO_CONSTRAINT_TYPEDEF_TPL
#define PINOCCHIO_CONSTRAINT_TYPEDEF_TPL(DERIVED)
Definition: constraint-base.hpp:27
pinocchio::JointModelPlanarTpl::forwardKinematics
void forwardKinematics(Transformation_t &M, const Eigen::MatrixBase< ConfigVector > &q_joint) const
Definition: joint-planar.hpp:494
pinocchio::JointDataPlanarTpl::M
Transformation_t M
Definition: joint-planar.hpp:442
pinocchio::InertiaTpl
Definition: spatial/fwd.hpp:52
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::Vector3
Eigen::Matrix< Scalar, 3, 1, Options > Vector3
Definition: joint-planar.hpp:39
pinocchio::traits
Common traits structure to fully define base classes for CRTP.
Definition: fwd.hpp:44
pinocchio::ConstraintPlanarTpl::nv_impl
int nv_impl() const
Definition: joint-planar.hpp:239
pinocchio::MotionPlanarTpl::MOTION_TYPEDEF_TPL
EIGEN_MAKE_ALIGNED_OPERATOR_NEW MOTION_TYPEDEF_TPL(MotionPlanarTpl)
pinocchio::MotionPlanarTpl::se3ActionInverse_impl
void se3ActionInverse_impl(const SE3Tpl< S2, O2 > &m, MotionDense< D2 > &v) const
Definition: joint-planar.hpp:121
PINOCCHIO_EIGEN_REF_TYPE
#define PINOCCHIO_EIGEN_REF_TYPE(D)
Definition: eigen-macros.hpp:25
pinocchio::MotionPlanarTpl::se3Action_impl
void se3Action_impl(const SE3Tpl< S2, O2 > &m, MotionDense< D2 > &v) const
Definition: joint-planar.hpp:105
pinocchio::ConstraintPlanarTpl::ConstraintTranspose::ref
const ConstraintPlanarTpl & ref
Definition: joint-planar.hpp:243
pinocchio::JointPlanarTpl
Definition: joint-planar.hpp:399
pinocchio::MotionTpl< Scalar, Options >
dcrba.NV
NV
Definition: dcrba.py:444
pinocchio::MotionPlanarTpl::plain
PlainReturnType plain() const
Definition: joint-planar.hpp:83
dpendulum.NQ
int NQ
Definition: dpendulum.py:8
meshcat-viewer.qs
qs
Definition: meshcat-viewer.py:130
pinocchio::JointDataPlanarTpl::shortname
std::string shortname() const
Definition: joint-planar.hpp:462
pinocchio::MotionPlanarTpl::AxisZ
CartesianAxis< 2 > AxisZ
Definition: joint-planar.hpp:66
pinocchio::operator^
MotionDerived::MotionPlain operator^(const MotionDense< MotionDerived > &m1, const MotionPlanarTpl< S2, O2 > &m2)
Definition: joint-planar.hpp:339
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::AngularType
Vector3 AngularType
Definition: joint-planar.hpp:45
pinocchio::JointModelPlanarTpl::calc
void calc(JointDataDerived &data, const typename Eigen::MatrixBase< ConfigVector > &qs) const
Definition: joint-planar.hpp:505
pinocchio::ForceDense::angular
ConstAngularType angular() const
Return the angular part of the force vector.
Definition: force-base.hpp:35
pinocchio::MotionPlanarTpl::se3Action_impl
MotionPlain se3Action_impl(const SE3Tpl< S2, O2 > &m) const
Definition: joint-planar.hpp:113
robot-wrapper-viewer.com
com
Definition: robot-wrapper-viewer.py:45
pinocchio::MotionDense::angular
ConstAngularType angular() const
Definition: motion-base.hpp:21
pinocchio::traits< MotionPlanarTpl< _Scalar, _Options > >::PlainReturnType
MotionPlain PlainReturnType
Definition: joint-planar.hpp:52
pinocchio::CartesianAxis::alphaCross
static void alphaCross(const Scalar &s, const Eigen::MatrixBase< V3_in > &vin, const Eigen::MatrixBase< V3_out > &vout)
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:28
pinocchio::traits< JointPlanarTpl< _Scalar, _Options > >::TangentVector_t
Eigen::Matrix< Scalar, NV, 1, Options > TangentVector_t
Definition: joint-planar.hpp:425
pinocchio::JointDataPlanarTpl::UDinv
UD_t UDinv
Definition: joint-planar.hpp:449
pinocchio::JointModelBase::id
JointIndex id() const
Definition: joint-model-base.hpp:121
pinocchio::CartesianAxis
Definition: cartesian-axis.hpp:14


pinocchio
Author(s):
autogenerated on Tue Feb 13 2024 03:43:59