joint-revolute-unbounded.hpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2016-2020 CNRS INRIA
3 //
4 
5 #ifndef __pinocchio_multibody_joint_revolute_unbounded_hpp__
6 #define __pinocchio_multibody_joint_revolute_unbounded_hpp__
7 
8 #include "pinocchio/math/fwd.hpp"
13 
14 namespace pinocchio
15 {
16 
17  template<typename Scalar, int Options, int axis>
19 
20  template<typename _Scalar, int _Options, int axis>
21  struct traits<JointRevoluteUnboundedTpl<_Scalar, _Options, axis>>
22  {
23  enum
24  {
25  NQ = 2,
26  NV = 1
27  };
28  typedef _Scalar Scalar;
29  enum
30  {
31  Options = _Options
32  };
39 
40  // [ABA]
41  typedef Eigen::Matrix<Scalar, 6, NV, Options> U_t;
42  typedef Eigen::Matrix<Scalar, NV, NV, Options> D_t;
43  typedef Eigen::Matrix<Scalar, 6, NV, Options> UD_t;
44 
45  typedef Eigen::Matrix<Scalar, NQ, 1, Options> ConfigVector_t;
46  typedef Eigen::Matrix<Scalar, NV, 1, Options> TangentVector_t;
47 
49  };
50 
51  template<typename _Scalar, int _Options, int axis>
52  struct traits<JointDataRevoluteUnboundedTpl<_Scalar, _Options, axis>>
53  {
55  typedef _Scalar Scalar;
56  };
57 
58  template<typename _Scalar, int _Options, int axis>
59  struct traits<JointModelRevoluteUnboundedTpl<_Scalar, _Options, axis>>
60  {
62  typedef _Scalar Scalar;
63  };
64 
65  template<typename _Scalar, int _Options, int axis>
67  : public JointDataBase<JointDataRevoluteUnboundedTpl<_Scalar, _Options, axis>>
68  {
69  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
73 
74  ConfigVector_t joint_q;
75  TangentVector_t joint_v;
76 
77  Constraint_t S;
78  Transformation_t M;
79  Motion_t v;
80  Bias_t c;
81 
82  // [ABA] specific data
83  U_t U;
84  D_t Dinv;
85  UD_t UDinv;
86  D_t StU;
87 
89  : joint_q(Scalar(1), Scalar(0))
90  , joint_v(TangentVector_t::Zero())
91  , M((Scalar)0, (Scalar)1)
92  , v((Scalar)0)
93  , U(U_t::Zero())
94  , Dinv(D_t::Zero())
95  , UDinv(UD_t::Zero())
96  , StU(D_t::Zero())
97  {
98  }
99 
100  static std::string classname()
101  {
102  return std::string("JointDataRUB") + axisLabel<axis>();
103  }
104  std::string shortname() const
105  {
106  return classname();
107  }
108 
109  }; // struct JointDataRevoluteUnbounded
110 
111  template<typename NewScalar, typename Scalar, int Options, int axis>
113  {
115  };
116 
117  template<typename _Scalar, int _Options, int axis>
119  : public JointModelBase<JointModelRevoluteUnboundedTpl<_Scalar, _Options, axis>>
120  {
121  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
125 
127  using Base::id;
128  using Base::idx_q;
129  using Base::idx_v;
130  using Base::setIndexes;
131 
132  typedef Eigen::Matrix<Scalar, 3, 1, _Options> Vector3;
133 
134  JointDataDerived createData() const
135  {
136  return JointDataDerived();
137  }
138 
139  const std::vector<bool> hasConfigurationLimit() const
140  {
141  return {false, false};
142  }
143 
144  const std::vector<bool> hasConfigurationLimitInTangent() const
145  {
146  return {false};
147  }
148 
149  template<typename ConfigVector>
150  void calc(JointDataDerived & data, const typename Eigen::MatrixBase<ConfigVector> & qs) const
151  {
152  data.joint_q = qs.template segment<NQ>(idx_q());
153 
154  const Scalar & ca = data.joint_q[0];
155  const Scalar & sa = data.joint_q[1];
156 
157  data.M.setValues(sa, ca);
158  }
159 
160  template<typename TangentVector>
161  void
162  calc(JointDataDerived & data, const Blank, const typename Eigen::MatrixBase<TangentVector> & vs)
163  const
164  {
165  data.joint_v[0] = vs[idx_v()];
166  data.v.angularRate() = data.joint_v[0];
167  }
168 
169  template<typename ConfigVector, typename TangentVector>
170  void calc(
171  JointDataDerived & data,
172  const typename Eigen::MatrixBase<ConfigVector> & qs,
173  const typename Eigen::MatrixBase<TangentVector> & vs) const
174  {
175  calc(data, qs.derived());
176  data.joint_v[0] = vs[idx_v()];
177  data.v.angularRate() = data.joint_v[0];
178  }
179 
180  template<typename VectorLike, typename Matrix6Like>
181  void calc_aba(
182  JointDataDerived & data,
183  const Eigen::MatrixBase<VectorLike> & armature,
184  const Eigen::MatrixBase<Matrix6Like> & I,
185  const bool update_I) const
186  {
187  data.U = I.col(Inertia::ANGULAR + axis);
188  data.Dinv[0] =
189  (Scalar)(1) / (I(Inertia::ANGULAR + axis, Inertia::ANGULAR + axis) + armature[0]);
190  data.UDinv.noalias() = data.U * data.Dinv[0];
191 
192  if (update_I)
193  PINOCCHIO_EIGEN_CONST_CAST(Matrix6Like, I).noalias() -= data.UDinv * data.U.transpose();
194  }
195 
196  static std::string classname()
197  {
198  return std::string("JointModelRUB") + axisLabel<axis>();
199  }
200  std::string shortname() const
201  {
202  return classname();
203  }
204 
206  {
207  switch (axis)
208  {
209  case 0:
210  return Vector3::UnitX();
211  case 1:
212  return Vector3::UnitY();
213  case 2:
214  return Vector3::UnitZ();
215  default:
216  assert(false && "must never happen");
217  break;
218  }
219  }
220 
222  template<typename NewScalar>
224  {
226  ReturnType res;
227  res.setIndexes(id(), idx_q(), idx_v());
228  return res;
229  }
230 
231  }; // struct JointModelRevoluteUnboundedTpl
232 
234  {
235  template<typename ConfigVectorIn, typename Scalar, typename ConfigVectorOut>
236  static void run(
237  const Eigen::MatrixBase<ConfigVectorIn> & q,
238  const Scalar & scaling,
239  const Scalar & offset,
240  const Eigen::MatrixBase<ConfigVectorOut> & dest)
241  {
242  EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(ConfigVectorIn, 2);
243  EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(ConfigVectorOut, 2);
244 
245  const typename ConfigVectorIn::Scalar & ca = q(0);
246  const typename ConfigVectorIn::Scalar & sa = q(1);
247 
248  const typename ConfigVectorIn::Scalar & theta = math::atan2(sa, ca);
249  const typename ConfigVectorIn::Scalar & theta_transform = scaling * theta + offset;
250 
251  ConfigVectorOut & dest_ = PINOCCHIO_EIGEN_CONST_CAST(ConfigVectorOut, dest);
252  SINCOS(theta_transform, &dest_.coeffRef(1), &dest_.coeffRef(0));
253  }
254  };
255 
256  template<typename Scalar, int Options, int axis>
258  {
260  };
261 
265 
269 
273 
274 } // namespace pinocchio
275 
276 #include <boost/type_traits.hpp>
277 
278 namespace boost
279 {
280  template<typename Scalar, int Options, int axis>
281  struct has_nothrow_constructor<::pinocchio::JointModelRevoluteUnboundedTpl<Scalar, Options, axis>>
282  : public integral_constant<bool, true>
283  {
284  };
285 
286  template<typename Scalar, int Options, int axis>
287  struct has_nothrow_copy<::pinocchio::JointModelRevoluteUnboundedTpl<Scalar, Options, axis>>
288  : public integral_constant<bool, true>
289  {
290  };
291 
292  template<typename Scalar, int Options, int axis>
293  struct has_nothrow_constructor<::pinocchio::JointDataRevoluteUnboundedTpl<Scalar, Options, axis>>
294  : public integral_constant<bool, true>
295  {
296  };
297 
298  template<typename Scalar, int Options, int axis>
299  struct has_nothrow_copy<::pinocchio::JointDataRevoluteUnboundedTpl<Scalar, Options, axis>>
300  : public integral_constant<bool, true>
301  {
302  };
303 } // namespace boost
304 
305 #endif // ifndef __pinocchio_multibody_joint_revolute_unbounded_hpp__
pinocchio::JointDataRevoluteUnboundedTpl::StU
D_t StU
Definition: joint-revolute-unbounded.hpp:86
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::Bias_t
MotionZeroTpl< Scalar, Options > Bias_t
Definition: joint-revolute-unbounded.hpp:38
PINOCCHIO_JOINT_DATA_BASE_ACCESSOR_DEFAULT_RETURN_TYPE
#define PINOCCHIO_JOINT_DATA_BASE_ACCESSOR_DEFAULT_RETURN_TYPE
Definition: joint-data-base.hpp:137
sincos.hpp
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::UD_t
Eigen::Matrix< Scalar, 6, NV, Options > UD_t
Definition: joint-revolute-unbounded.hpp:43
pinocchio::JointModelRevoluteUnboundedTpl::getMotionAxis
Vector3 getMotionAxis() const
Definition: joint-revolute-unbounded.hpp:205
pinocchio::traits< JointModelRevoluteUnboundedTpl< _Scalar, _Options, axis > >::Scalar
_Scalar Scalar
Definition: joint-revolute-unbounded.hpp:62
pinocchio::JointDataRevoluteUnboundedTpl::U
U_t U
Definition: joint-revolute-unbounded.hpp:83
pinocchio::MotionRevoluteTpl
Definition: joint-revolute.hpp:20
pinocchio::JointDataRevoluteUnboundedTpl::shortname
std::string shortname() const
Definition: joint-revolute-unbounded.hpp:104
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::JointModelBase
Definition: joint-model-base.hpp:75
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::Constraint_t
JointMotionSubspaceRevoluteTpl< Scalar, Options, axis > Constraint_t
Definition: joint-revolute-unbounded.hpp:35
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::Options
Options
Definition: joint-configuration.hpp:1082
pinocchio::JointModelRevoluteUnboundedTpl::JointDerived
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef JointRevoluteUnboundedTpl< _Scalar, _Options, axis > JointDerived
Definition: joint-revolute-unbounded.hpp:122
pinocchio::UnboundedRevoluteAffineTransform::run
static void run(const Eigen::MatrixBase< ConfigVectorIn > &q, const Scalar &scaling, const Scalar &offset, const Eigen::MatrixBase< ConfigVectorOut > &dest)
Definition: joint-revolute-unbounded.hpp:236
pinocchio::JointModelRevoluteUnboundedTpl::classname
static std::string classname()
Definition: joint-revolute-unbounded.hpp:196
PINOCCHIO_EIGEN_CONST_CAST
#define PINOCCHIO_EIGEN_CONST_CAST(TYPE, OBJ)
Macro for an automatic const_cast.
Definition: eigen-macros.hpp:51
pinocchio::JointDataBase
Definition: joint-data-base.hpp:161
pinocchio::JointDataRevoluteUnboundedTpl::c
Bias_t c
Definition: joint-revolute-unbounded.hpp:80
pinocchio::traits< JointDataRevoluteUnboundedTpl< _Scalar, _Options, axis > >::Scalar
_Scalar Scalar
Definition: joint-revolute-unbounded.hpp:55
pinocchio::JointModelRevoluteUnboundedTpl::shortname
std::string shortname() const
Definition: joint-revolute-unbounded.hpp:200
pinocchio::JointDataRevoluteUnboundedTpl::JointDataRevoluteUnboundedTpl
JointDataRevoluteUnboundedTpl()
Definition: joint-revolute-unbounded.hpp:88
setup.data
data
Definition: cmake/cython/setup.in.py:48
pinocchio::traits< JointModelRevoluteUnboundedTpl< _Scalar, _Options, axis > >::JointDerived
JointRevoluteUnboundedTpl< _Scalar, _Options, axis > JointDerived
Definition: joint-revolute-unbounded.hpp:61
inertia.hpp
pinocchio::python::Scalar
context::Scalar Scalar
Definition: admm-solver.cpp:29
pinocchio::JointModelRevoluteUnboundedTpl::calc_aba
void calc_aba(JointDataDerived &data, const Eigen::MatrixBase< VectorLike > &armature, const Eigen::MatrixBase< Matrix6Like > &I, const bool update_I) const
Definition: joint-revolute-unbounded.hpp:181
boost
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::Transformation_t
TransformRevoluteTpl< Scalar, Options, axis > Transformation_t
Definition: joint-revolute-unbounded.hpp:36
pinocchio::JointDataRevoluteUnboundedTpl::joint_v
TangentVector_t joint_v
Definition: joint-revolute-unbounded.hpp:75
pinocchio::JointModelRevoluteUnboundedTpl::calc
void calc(JointDataDerived &data, const typename Eigen::MatrixBase< ConfigVector > &qs) const
Definition: joint-revolute-unbounded.hpp:150
pinocchio::JointDataRevoluteUnboundedTpl::M
Transformation_t M
Definition: joint-revolute-unbounded.hpp:78
pinocchio::JointModelBase::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:186
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::JointModelDerived
JointModelRevoluteUnboundedTpl< Scalar, Options, axis > JointModelDerived
Definition: joint-revolute-unbounded.hpp:34
pinocchio::res
ReturnType res
Definition: spatial/classic-acceleration.hpp:57
pinocchio::SINCOS
void SINCOS(const S1 &a, S2 *sa, S3 *ca)
Computes sin/cos values of a given input scalar.
Definition: sincos.hpp:27
pinocchio::JointModelRevoluteUnboundedTpl::PINOCCHIO_JOINT_TYPEDEF_TEMPLATE
PINOCCHIO_JOINT_TYPEDEF_TEMPLATE(JointDerived)
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::JointDataDerived
JointDataRevoluteUnboundedTpl< Scalar, Options, axis > JointDataDerived
Definition: joint-revolute-unbounded.hpp:33
pinocchio::Blank
Blank type.
Definition: fwd.hpp:76
pinocchio::JointRevoluteTpl
Definition: joint-revolute.hpp:546
pinocchio::MotionZeroTpl
Definition: context/casadi.hpp:23
pinocchio::JointRUBY
JointRevoluteUnboundedTpl< context::Scalar, context::Options, 1 > JointRUBY
Definition: joint-revolute-unbounded.hpp:266
PINOCCHIO_JOINT_DATA_BASE_DEFAULT_ACCESSOR
#define PINOCCHIO_JOINT_DATA_BASE_DEFAULT_ACCESSOR
Definition: joint-data-base.hpp:55
pinocchio::JointModelRevoluteUnboundedTpl::cast
JointModelRevoluteUnboundedTpl< NewScalar, Options, axis > cast() const
Definition: joint-revolute-unbounded.hpp:223
pinocchio::JointDataRUBZ
JointDataRevoluteUnboundedTpl< context::Scalar, context::Options, 2 > JointDataRUBZ
Definition: joint-revolute-unbounded.hpp:271
pinocchio::JointModelRevoluteUnboundedTpl::hasConfigurationLimit
const std::vector< bool > hasConfigurationLimit() const
Definition: joint-revolute-unbounded.hpp:139
pinocchio::JointModelRevoluteUnboundedTpl::JointDerivedBase
JointRevoluteTpl< Scalar, _Options, axis > JointDerivedBase
Definition: joint-revolute-unbounded.hpp:124
pinocchio::JointDataRevoluteUnboundedTpl::PINOCCHIO_JOINT_DATA_TYPEDEF_TEMPLATE
PINOCCHIO_JOINT_DATA_TYPEDEF_TEMPLATE(JointDerived)
fwd.hpp
pinocchio::TransformRevoluteTpl
Definition: joint-revolute.hpp:64
pinocchio::ConfigVectorAffineTransform
Assign the correct configuration vector space affine transformation according to the joint type.
Definition: joint-common-operations.hpp:70
joint-base.hpp
pinocchio::JointModelRevoluteUnboundedTpl::hasConfigurationLimitInTangent
const std::vector< bool > hasConfigurationLimitInTangent() const
Definition: joint-revolute-unbounded.hpp:144
pinocchio::JointModelRevoluteUnboundedTpl::calc
void calc(JointDataDerived &data, const Blank, const typename Eigen::MatrixBase< TangentVector > &vs) const
Definition: joint-revolute-unbounded.hpp:162
axis
axis
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::Motion_t
MotionRevoluteTpl< Scalar, Options, axis > Motion_t
Definition: joint-revolute-unbounded.hpp:37
pinocchio::JointDataRevoluteUnboundedTpl::classname
static std::string classname()
Definition: joint-revolute-unbounded.hpp:100
pinocchio::JointDataRevoluteUnboundedTpl::Dinv
D_t Dinv
Definition: joint-revolute-unbounded.hpp:84
pinocchio::JointRevoluteUnboundedTpl
Definition: joint-revolute-unbounded.hpp:18
pinocchio::JointModelRevoluteUnboundedTpl::Vector3
Eigen::Matrix< Scalar, 3, 1, _Options > Vector3
Definition: joint-revolute-unbounded.hpp:132
pinocchio::ConfigVectorAffineTransform< JointRevoluteUnboundedTpl< Scalar, Options, axis > >::Type
UnboundedRevoluteAffineTransform Type
Definition: joint-revolute-unbounded.hpp:259
pinocchio::q
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > & q
Definition: joint-configuration.hpp:1083
pinocchio::JointModelRUBX
JointModelRevoluteUnboundedTpl< context::Scalar, context::Options, 0 > JointModelRUBX
Definition: joint-revolute-unbounded.hpp:264
pinocchio::traits< JointDataRevoluteUnboundedTpl< _Scalar, _Options, axis > >::JointDerived
JointRevoluteUnboundedTpl< _Scalar, _Options, axis > JointDerived
Definition: joint-revolute-unbounded.hpp:54
pinocchio::JointModelBase::idx_v
int idx_v() const
Definition: joint-model-base.hpp:164
joint-revolute.hpp
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::TangentVector_t
Eigen::Matrix< Scalar, NV, 1, Options > TangentVector_t
Definition: joint-revolute-unbounded.hpp:46
pinocchio::CastType< NewScalar, JointModelRevoluteUnboundedTpl< Scalar, Options, axis > >::type
JointModelRevoluteUnboundedTpl< NewScalar, Options, axis > type
Definition: joint-revolute-unbounded.hpp:114
pinocchio::JointRUBZ
JointRevoluteUnboundedTpl< context::Scalar, context::Options, 2 > JointRUBZ
Definition: joint-revolute-unbounded.hpp:270
pinocchio::JointModelBase::idx_q
int idx_q() const
Definition: joint-model-base.hpp:160
pinocchio::JointDataRUBX
JointDataRevoluteUnboundedTpl< context::Scalar, context::Options, 0 > JointDataRUBX
Definition: joint-revolute-unbounded.hpp:263
pinocchio::JointDataRUBY
JointDataRevoluteUnboundedTpl< context::Scalar, context::Options, 1 > JointDataRUBY
Definition: joint-revolute-unbounded.hpp:267
pinocchio::JointModelRevoluteUnboundedTpl::Base
JointModelBase< JointModelRevoluteUnboundedTpl > Base
Definition: joint-revolute-unbounded.hpp:126
pinocchio::JointMotionSubspaceRevoluteTpl
Definition: joint-revolute.hpp:376
pinocchio::JointDataRevoluteUnboundedTpl::S
Constraint_t S
Definition: joint-revolute-unbounded.hpp:77
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::D_t
Eigen::Matrix< Scalar, NV, NV, Options > D_t
Definition: joint-revolute-unbounded.hpp:42
pinocchio::JointDataRevoluteUnboundedTpl::JointDerived
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef JointRevoluteUnboundedTpl< _Scalar, _Options, axis > JointDerived
Definition: joint-revolute-unbounded.hpp:70
pinocchio::JointModelRevoluteUnboundedTpl::calc
void calc(JointDataDerived &data, const typename Eigen::MatrixBase< ConfigVector > &qs, const typename Eigen::MatrixBase< TangentVector > &vs) const
Definition: joint-revolute-unbounded.hpp:170
pinocchio::JointRUBX
JointRevoluteUnboundedTpl< context::Scalar, context::Options, 0 > JointRUBX
Definition: joint-revolute-unbounded.hpp:262
pinocchio::traits
Common traits structure to fully define base classes for CRTP.
Definition: fwd.hpp:71
pinocchio::UnboundedRevoluteAffineTransform
Definition: joint-revolute-unbounded.hpp:233
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::U_t
Eigen::Matrix< Scalar, 6, NV, Options > U_t
Definition: joint-revolute-unbounded.hpp:41
pinocchio::JointDataRevoluteUnboundedTpl::UDinv
UD_t UDinv
Definition: joint-revolute-unbounded.hpp:85
pinocchio::JointDataRevoluteUnboundedTpl::v
Motion_t v
Definition: joint-revolute-unbounded.hpp:79
pinocchio::JointModelRevoluteUnboundedTpl::createData
JointDataDerived createData() const
Definition: joint-revolute-unbounded.hpp:134
pinocchio::JointDataRevoluteUnboundedTpl::joint_q
PINOCCHIO_JOINT_DATA_BASE_DEFAULT_ACCESSOR ConfigVector_t joint_q
Definition: joint-revolute-unbounded.hpp:74
pinocchio::JointModelRUBZ
JointModelRevoluteUnboundedTpl< context::Scalar, context::Options, 2 > JointModelRUBZ
Definition: joint-revolute-unbounded.hpp:272
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::ConfigVector_t
Eigen::Matrix< Scalar, NQ, 1, Options > ConfigVector_t
Definition: joint-revolute-unbounded.hpp:45
pinocchio::CastType
Type of the cast of a class C templated by Scalar and Options, to a new NewScalar type....
Definition: fwd.hpp:99
dcrba.NV
NV
Definition: dcrba.py:536
dpendulum.NQ
int NQ
Definition: dpendulum.py:9
pinocchio::JointModelRevoluteUnboundedTpl
Definition: multibody/joint/fwd.hpp:55
meshcat-viewer.qs
qs
Definition: meshcat-viewer.py:128
pinocchio::JointDataRevoluteUnboundedTpl
Definition: multibody/joint/fwd.hpp:57
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:27
pinocchio::JointModelBase::id
JointIndex id() const
Definition: joint-model-base.hpp:168
pinocchio::traits< JointRevoluteUnboundedTpl< _Scalar, _Options, axis > >::Scalar
_Scalar Scalar
Definition: joint-revolute-unbounded.hpp:28
pinocchio::JointModelRUBY
JointModelRevoluteUnboundedTpl< context::Scalar, context::Options, 1 > JointModelRUBY
Definition: joint-revolute-unbounded.hpp:268


pinocchio
Author(s):
autogenerated on Sun Dec 22 2024 03:41:10