casadi/joints.cpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2019-2020 INRIA
3 //
4 
6 
10 
11 #include <iostream>
12 #include <boost/test/unit_test.hpp>
13 #include <boost/utility/binary.hpp>
14 
15 BOOST_AUTO_TEST_SUITE(BOOST_TEST_MODULE)
16 
17 BOOST_AUTO_TEST_CASE(test_jointRX_motion_space)
18 {
19  typedef casadi::SX AD_double;
20  typedef pinocchio::JointCollectionDefaultTpl<AD_double> JointCollectionAD;
21  typedef pinocchio::JointCollectionDefaultTpl<double> JointCollection;
22 
23  typedef pinocchio::SE3Tpl<AD_double> SE3AD;
24  typedef pinocchio::MotionTpl<AD_double> MotionAD;
28 
29  typedef Eigen::Matrix<AD_double, Eigen::Dynamic, 1> VectorXAD;
30  typedef Eigen::Matrix<AD_double, 6, 1> Vector6AD;
31 
32  typedef JointCollectionAD::JointModelRX JointModelRXAD;
33  typedef JointModelRXAD::ConfigVector_t ConfigVectorAD;
34  // typedef JointModelRXAD::TangentVector_t TangentVectorAD;
35  typedef JointCollectionAD::JointDataRX JointDataRXAD;
36 
38  typedef JointModelRX::ConfigVector_t ConfigVector;
39  typedef JointModelRX::TangentVector_t TangentVector;
41 
42  JointModelRX jmodel;
43  jmodel.setIndexes(0, 0, 0);
44  JointDataRX jdata(jmodel.createData());
45 
46  JointModelRXAD jmodel_ad = jmodel.cast<AD_double>();
47  JointDataRXAD jdata_ad(jmodel_ad.createData());
48 
49  typedef pinocchio::LieGroup<JointModelRX>::type JointOperation;
50  ConfigVector q(jmodel.nq());
51  JointOperation().random(q);
52 
53  casadi::SX cs_q = casadi::SX::sym("q", jmodel.nq());
54  ConfigVectorAD q_ad(jmodel.nq());
55  for (Eigen::DenseIndex k = 0; k < jmodel.nq(); ++k)
56  {
57  q_ad[k] = cs_q(k);
58  }
59 
60  // Zero order
61  jmodel_ad.calc(jdata_ad, q_ad);
62  jmodel.calc(jdata, q);
63 
64  SE3 M1(jdata.M);
65  SE3AD M2(jdata_ad.M);
66 
67  casadi::SX cs_trans(3, 1);
68  for (Eigen::DenseIndex k = 0; k < 3; ++k)
69  {
70  cs_trans(k) = M2.translation()[k];
71  }
72  casadi::SX cs_rot(3, 3);
73  for (Eigen::DenseIndex i = 0; i < 3; ++i)
74  {
75  for (Eigen::DenseIndex j = 0; j < 3; ++j)
76  {
77  cs_rot(i, j) = M2.rotation()(i, j);
78  }
79  }
80 
81  casadi::Function eval_placement(
82  "eval_placement", casadi::SXVector{cs_q}, casadi::SXVector{cs_trans, cs_rot});
83  std::cout << "Joint Placement = " << eval_placement << std::endl;
84 
85  std::vector<double> q_vec((size_t)jmodel.nq());
86  Eigen::Map<ConfigVector>(q_vec.data(), jmodel.nq(), 1) = q;
87  casadi::DMVector res = eval_placement(casadi::DMVector{q_vec});
88  std::cout << "M(q)=" << res << std::endl;
89 
90  BOOST_CHECK(M1.translation().isApprox(Eigen::Map<SE3::Vector3>(res[0]->data())));
91  BOOST_CHECK(M1.rotation().isApprox(Eigen::Map<SE3::Matrix3>(res[1]->data())));
92 
93  // First order
94  casadi::SX cs_v = casadi::SX::sym("v", jmodel.nv());
95  TangentVector v(TangentVector::Random(jmodel.nv()));
96  VectorXAD v_ad(jmodel_ad.nv());
97 
98  std::vector<double> v_vec((size_t)jmodel.nv());
99  Eigen::Map<TangentVector>(v_vec.data(), jmodel.nv(), 1) = v;
100 
101  for (Eigen::DenseIndex k = 0; k < jmodel.nv(); ++k)
102  {
103  v_ad[k] = cs_v(k);
104  }
105 
106  jmodel.calc(jdata, q, v);
107  Motion m(jdata.v);
108  JointMotionSubspaceXd Sref(jdata.S.matrix());
109 
110  jmodel_ad.calc(jdata_ad, q_ad, v_ad);
111  Vector6AD Y;
112  MotionAD m_ad(jdata_ad.v);
113 
114  casadi::SX cs_vel(6, 1);
115  for (Eigen::DenseIndex k = 0; k < 6; ++k)
116  {
117  cs_vel(k) = m_ad.toVector()[k];
118  }
119  casadi::Function eval_velocity(
120  "eval_velocity", casadi::SXVector{cs_q, cs_v}, casadi::SXVector{cs_vel});
121  std::cout << "Joint Velocity = " << eval_velocity << std::endl;
122 
123  casadi::DMVector res_vel = eval_velocity(casadi::DMVector{q_vec, v_vec});
124  std::cout << "v(q,v)=" << res_vel << std::endl;
125 
126  BOOST_CHECK(m.linear().isApprox(Eigen::Map<Motion::Vector3>(res_vel[0]->data())));
127  BOOST_CHECK(m.angular().isApprox(Eigen::Map<Motion::Vector3>(res_vel[0]->data() + 3)));
128 
129  casadi::SX dvel_dv = jacobian(cs_vel, cs_v);
130  casadi::Function eval_S("eval_S", casadi::SXVector{cs_q, cs_v}, casadi::SXVector{dvel_dv});
131  std::cout << "S = " << eval_S << std::endl;
132 
133  casadi::DMVector res_S = eval_S(casadi::DMVector{q_vec, v_vec});
134  std::cout << "res_S:" << res_S << std::endl;
135  JointMotionSubspaceXd::DenseBase Sref_mat = Sref.matrix();
136 
137  for (Eigen::DenseIndex i = 0; i < 6; ++i)
138  {
139  for (Eigen::DenseIndex j = 0; i < Sref.nv(); ++i)
140  BOOST_CHECK(
141  std::fabs(Sref_mat(i, j) - (double)res_S[0](i, j))
142  <= Eigen::NumTraits<double>::dummy_precision());
143  }
144 }
145 
146 template<typename JointModel_>
147 struct init;
148 
149 template<typename JointModel_>
150 struct init
151 {
152  static JointModel_ run()
153  {
154  JointModel_ jmodel;
155  jmodel.setIndexes(0, 0, 0);
156  return jmodel;
157  }
158 
159  static std::string name()
160  {
161  return "default " + JointModel_::classname();
162  }
163 };
164 
165 template<typename Scalar, int Options>
166 struct init<pinocchio::JointModelRevoluteUnalignedTpl<Scalar, Options>>
167 {
169 
170  static JointModel run()
171  {
172  typedef typename JointModel::Vector3 Vector3;
173  JointModel jmodel(Vector3::Random().normalized());
174 
175  jmodel.setIndexes(0, 0, 0);
176  return jmodel;
177  }
178 
179  static std::string name()
180  {
181  return JointModel::classname();
182  }
183 };
184 
185 template<typename Scalar, int Options>
186 struct init<pinocchio::JointModelRevoluteUnboundedUnalignedTpl<Scalar, Options>>
187 {
189 
190  static JointModel run()
191  {
192  typedef typename JointModel::Vector3 Vector3;
193  JointModel jmodel(Vector3::Random().normalized());
194 
195  jmodel.setIndexes(0, 0, 0);
196  return jmodel;
197  }
198 
199  static std::string name()
200  {
201  return JointModel::classname();
202  }
203 };
204 
205 template<typename Scalar, int Options>
206 struct init<pinocchio::JointModelPrismaticUnalignedTpl<Scalar, Options>>
207 {
209 
210  static JointModel run()
211  {
212  typedef typename JointModel::Vector3 Vector3;
213  JointModel jmodel(Vector3::Random().normalized());
214 
215  jmodel.setIndexes(0, 0, 0);
216  return jmodel;
217  }
218 
219  static std::string name()
220  {
221  return JointModel::classname();
222  }
223 };
224 
225 template<typename Scalar, int Options, template<typename, int> class JointCollection>
226 struct init<pinocchio::JointModelTpl<Scalar, Options, JointCollection>>
227 {
229 
230  static JointModel run()
231  {
233  JointModel jmodel((JointModelRX()));
234 
235  jmodel.setIndexes(0, 0, 0);
236  return jmodel;
237  }
238 
239  static std::string name()
240  {
241  return JointModel::classname();
242  }
243 };
244 
245 template<typename Scalar, int Options, template<typename, int> class JointCollection>
246 struct init<pinocchio::JointModelCompositeTpl<Scalar, Options, JointCollection>>
247 {
249 
250  static JointModel run()
251  {
254  JointModel jmodel((JointModelRX()));
255  jmodel.addJoint(JointModelRY());
256 
257  jmodel.setIndexes(0, 0, 0);
258  return jmodel;
259  }
260 
261  static std::string name()
262  {
263  return JointModel::classname();
264  }
265 };
266 
267 template<typename Scalar, int Options, template<typename, int> class JointCollection>
268 struct init<pinocchio::JointModelMimicTpl<Scalar, Options, JointCollection>>
269 {
271 
272  static JointModel run()
273  {
275  JointModelRX jmodel_ref = init<JointModelRX>::run();
276 
277  JointModel jmodel(jmodel_ref, 1., 0.);
278  jmodel.setIndexes(1, 0, 0, 0);
279  return jmodel;
280  }
281 
282  static std::string name()
283  {
284  return JointModel::classname();
285  }
286 };
287 
289 {
290  template<typename JointModel_>
292  {
293  JointModel_ jmodel = init<JointModel_>::run();
294  test(jmodel);
295  }
296 
297  template<typename Scalar, int Options, int axis>
299  {
301  JointModel jmodel(Scalar(0.4));
302  jmodel.setIndexes(0, 0, 0);
303 
304  test(jmodel);
305  }
306 
307  template<typename Scalar, int Options>
309  {
311  typedef typename JointModel::Vector3 Vector3;
312  JointModel jmodel(Vector3::UnitX(), Vector3::UnitY());
313  jmodel.setIndexes(0, 0, 0);
314 
315  test(jmodel);
316  }
317 
318  template<typename Scalar, int Options>
320  {
322  typedef typename JointModel::Vector3 Vector3;
323  JointModel jmodel(Vector3::Random().normalized());
324  jmodel.setIndexes(0, 0, 0);
325 
326  test(jmodel);
327  }
328 
329  template<typename Scalar, int Options>
331  {
333  typedef typename JointModel::Vector3 Vector3;
334  JointModel jmodel(Vector3::Random().normalized());
335  jmodel.setIndexes(0, 0, 0);
336 
337  test(jmodel);
338  }
339 
340  template<typename Scalar, int Options>
342  {
344  typedef typename JointModel::Vector3 Vector3;
345  JointModel jmodel(Vector3::Random().normalized());
346  jmodel.setIndexes(0, 0, 0);
347 
348  test(jmodel);
349  }
350 
351  template<typename Scalar, int Options>
353  {
355  typedef typename JointModel::Vector3 Vector3;
356  JointModel jmodel(Vector3::Random().normalized());
357  jmodel.setIndexes(0, 0, 0);
358 
359  test(jmodel);
360  }
361 
362  template<typename Scalar, int Options, template<typename, int> class JointCollection>
364  {
367  JointModel jmodel((JointModelRX()));
368  jmodel.setIndexes(0, 0, 0);
369 
370  test(jmodel);
371  }
372 
373  template<typename Scalar, int Options, template<typename, int> class JointCollection>
375  {
379  JointModel jmodel((JointModelRX()));
380  jmodel.addJoint(JointModelRY());
381  jmodel.setIndexes(0, 0, 0);
382 
383  test(jmodel);
384  }
385 
386  // TODO: get the nq and nv quantity from LieGroups
387  template<typename Scalar, int Options, template<typename, int> class JointCollection>
388  static void
390  { /* do nothing */
391  }
392 
393  template<typename JointModel>
394  static void test(const pinocchio::JointModelBase<JointModel> & jmodel)
395  {
396  std::cout << "--" << std::endl;
397  std::cout << "jmodel: " << jmodel.shortname() << std::endl;
398 
399  typedef casadi::SX AD_double;
400 
401  typedef pinocchio::SE3Tpl<AD_double> SE3AD;
402  typedef pinocchio::MotionTpl<AD_double> MotionAD;
406 
407  typedef Eigen::Matrix<AD_double, Eigen::Dynamic, 1> VectorXAD;
408  typedef Eigen::Matrix<AD_double, 6, 1> Vector6AD;
409 
410  typedef typename pinocchio::CastType<AD_double, JointModel>::type JointModelAD;
411  typedef typename JointModelAD::JointDataDerived JointDataAD;
412 
413  typedef typename JointModelAD::ConfigVector_t ConfigVectorAD;
414 
415  typedef typename JointModel::JointDataDerived JointData;
416  typedef typename JointModel::ConfigVector_t ConfigVector;
417  typedef typename JointModel::TangentVector_t TangentVector;
418 
419  JointData jdata(jmodel.createData());
420  pinocchio::JointDataBase<JointData> & jdata_base = jdata;
421 
422  JointModelAD jmodel_ad = jmodel.template cast<AD_double>();
423  JointDataAD jdata_ad(jmodel_ad.createData());
424  pinocchio::JointDataBase<JointDataAD> & jdata_ad_base = jdata_ad;
425 
426  ConfigVector q(jmodel.nq());
427 
428  ConfigVector lb(ConfigVector::Constant(jmodel.nq(), -1.));
429  ConfigVector ub(ConfigVector::Constant(jmodel.nq(), 1.));
430 
431  typedef pinocchio::RandomConfigurationStep<
432  pinocchio::LieGroupMap, ConfigVector, ConfigVector, ConfigVector>
433  RandomConfigAlgo;
434  RandomConfigAlgo::run(jmodel.derived(), typename RandomConfigAlgo::ArgsType(q, lb, ub));
435 
436  casadi::SX cs_q = casadi::SX::sym("q", jmodel.nq());
437  ConfigVectorAD q_ad(jmodel.nq());
438  for (Eigen::DenseIndex k = 0; k < jmodel.nq(); ++k)
439  {
440  q_ad[k] = cs_q(k);
441  }
442 
443  // Zero order
444  jmodel_ad.calc(jdata_ad, q_ad);
445  jmodel.calc(jdata, q);
446 
447  SE3 M1(jdata_base.M());
448  SE3AD M2(jdata_ad_base.M());
449 
450  casadi::SX cs_trans(3, 1);
451  for (Eigen::DenseIndex k = 0; k < 3; ++k)
452  {
453  cs_trans(k) = M2.translation()[k];
454  }
455  casadi::SX cs_rot(3, 3);
456  for (Eigen::DenseIndex i = 0; i < 3; ++i)
457  {
458  for (Eigen::DenseIndex j = 0; j < 3; ++j)
459  {
460  cs_rot(i, j) = M2.rotation()(i, j);
461  }
462  }
463 
464  casadi::Function eval_placement(
465  "eval_placement", casadi::SXVector{cs_q}, casadi::SXVector{cs_trans, cs_rot});
466  std::cout << "Joint Placement = " << eval_placement << std::endl;
467 
468  std::vector<double> q_vec((size_t)jmodel.nq());
469  Eigen::Map<ConfigVector>(q_vec.data(), jmodel.nq(), 1) = q;
470  casadi::DMVector res = eval_placement(casadi::DMVector{q_vec});
471  std::cout << "M(q)=" << res << std::endl;
472 
473  BOOST_CHECK(M1.translation().isApprox(Eigen::Map<SE3::Vector3>(res[0]->data())));
474  BOOST_CHECK(M1.rotation().isApprox(Eigen::Map<SE3::Matrix3>(res[1]->data())));
475 
476  // First order
477  casadi::SX cs_v = casadi::SX::sym("v", jmodel.nv());
478  TangentVector v(TangentVector::Random(jmodel.nv()));
479  VectorXAD v_ad(jmodel_ad.nv());
480 
481  std::vector<double> v_vec((size_t)jmodel.nv());
482  Eigen::Map<TangentVector>(v_vec.data(), jmodel.nv(), 1) = v;
483 
484  for (Eigen::DenseIndex k = 0; k < jmodel.nv(); ++k)
485  {
486  v_ad[k] = cs_v(k);
487  }
488 
489  jmodel.calc(jdata, q, v);
490  Motion m(jdata_base.v());
491  JointMotionSubspaceXd Sref(jdata_base.S().matrix());
492 
493  jmodel_ad.calc(jdata_ad, q_ad, v_ad);
494  Vector6AD Y;
495  MotionAD m_ad(jdata_ad_base.v());
496 
497  casadi::SX cs_vel(6, 1);
498  for (Eigen::DenseIndex k = 0; k < 6; ++k)
499  {
500  cs_vel(k) = m_ad.toVector()[k];
501  }
502  casadi::Function eval_velocity(
503  "eval_velocity", casadi::SXVector{cs_q, cs_v}, casadi::SXVector{cs_vel});
504  std::cout << "Joint Velocity = " << eval_velocity << std::endl;
505 
506  casadi::DMVector res_vel = eval_velocity(casadi::DMVector{q_vec, v_vec});
507  std::cout << "v(q,v)=" << res_vel << std::endl;
508 
509  BOOST_CHECK(m.linear().isApprox(Eigen::Map<Motion::Vector3>(res_vel[0]->data())));
510  BOOST_CHECK(m.angular().isApprox(Eigen::Map<Motion::Vector3>(res_vel[0]->data() + 3)));
511 
512  casadi::SX dvel_dv = jacobian(cs_vel, cs_v);
513  casadi::Function eval_S("eval_S", casadi::SXVector{cs_q, cs_v}, casadi::SXVector{dvel_dv});
514  std::cout << "S = " << eval_S << std::endl;
515 
516  casadi::DMVector res_S = eval_S(casadi::DMVector{q_vec, v_vec});
517  std::cout << "res_S:" << res_S << std::endl;
518  JointMotionSubspaceXd::DenseBase Sref_mat = Sref.matrix();
519 
520  for (Eigen::DenseIndex i = 0; i < 6; ++i)
521  {
522  for (Eigen::DenseIndex j = 0; i < Sref.nv(); ++i)
523  BOOST_CHECK(
524  std::fabs(Sref_mat(i, j) - (double)res_S[0](i, j))
525  <= Eigen::NumTraits<double>::dummy_precision());
526  }
527 
528  std::cout << "--" << std::endl << std::endl;
529  }
530 };
531 
532 BOOST_AUTO_TEST_CASE(test_all_joints)
533 {
535  boost::mpl::for_each<JointModelVariant::types>(TestADOnJoints());
536 
538 }
539 
540 BOOST_AUTO_TEST_SUITE_END()
pinocchio::JointModelUniversalTpl
Definition: multibody/joint/fwd.hpp:102
pinocchio::JointModelRevoluteUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
pinocchio::JointModelBase::createData
JointDataDerived createData() const
Definition: joint-model-base.hpp:94
init< pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > >::name
static std::string name()
Definition: casadi/joints.cpp:179
pinocchio::JointDataBase::v
MotionTypeConstRef v() const
Definition: joint-data-base.hpp:211
init< pinocchio::JointModelPrismaticUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelPrismaticUnalignedTpl< Scalar, Options > JointModel
Definition: casadi/joints.cpp:208
pinocchio::JointModelRevoluteUnboundedUnalignedTpl
Definition: multibody/joint/fwd.hpp:46
test-cpp2pybind11.m
m
Definition: test-cpp2pybind11.py:25
TestADOnJoints::operator()
void operator()(const pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > &) const
Definition: casadi/joints.cpp:330
pinocchio::JointModelHelicalTpl
Definition: multibody/joint/fwd.hpp:60
init< pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > >::JointModel
pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > JointModel
Definition: casadi/joints.cpp:248
pinocchio::JointModelRevoluteUnboundedUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
TestADOnJoints::operator()
void operator()(const pinocchio::JointModelBase< JointModel_ > &) const
Definition: casadi/joints.cpp:291
pinocchio::python::context::JointDataRX
JointDataRevoluteTpl< Scalar, Options, 0 > JointDataRX
Definition: bindings/python/context/generic.hpp:72
omniidl_be_python_with_docstring.run
def run(tree, args)
Definition: cmake/hpp/idl/omniidl_be_python_with_docstring.py:140
pinocchio::JointModelBase
Definition: joint-model-base.hpp:78
pinocchio.casadi::sym
void sym(const Eigen::MatrixBase< MatrixDerived > &eig_mat, std::string const &name)
Definition: autodiff/casadi.hpp:230
pinocchio::SE3Tpl
Definition: context/casadi.hpp:24
pinocchio::JointDataBase
Definition: joint-data-base.hpp:161
inverse-kinematics.i
int i
Definition: inverse-kinematics.py:17
TestADOnJoints::operator()
void operator()(const pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > &) const
Definition: casadi/joints.cpp:374
pinocchio::JointDataBase::M
TansformTypeConstRef M() const
Definition: joint-data-base.hpp:203
init< pinocchio::JointModelTpl< Scalar, Options, JointCollection > >::run
static JointModel run()
Definition: casadi/joints.cpp:230
init< pinocchio::JointModelMimicTpl< Scalar, Options, JointCollection > >::JointModel
pinocchio::JointModelMimicTpl< Scalar, Options, JointCollection > JointModel
Definition: casadi/joints.cpp:270
pinocchio::python::context::Motion
MotionTpl< Scalar, Options > Motion
Definition: bindings/python/context/generic.hpp:54
liegroup-algo.hpp
init< pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > >::name
static std::string name()
Definition: casadi/joints.cpp:199
pinocchio::JointModelCompositeTpl::addJoint
JointModelDerived & addJoint(const JointModelBase< JointModel > &jmodel, const SE3 &placement=SE3::Identity())
Add a joint to the vector of joints.
Definition: joint-composite.hpp:286
init< pinocchio::JointModelPrismaticUnalignedTpl< Scalar, Options > >::name
static std::string name()
Definition: casadi/joints.cpp:219
TestADOnJoints::operator()
void operator()(const pinocchio::JointModelHelicalTpl< Scalar, Options, axis > &) const
Definition: casadi/joints.cpp:298
TestADOnJoints::operator()
void operator()(const pinocchio::JointModelPrismaticUnalignedTpl< Scalar, Options > &) const
Definition: casadi/joints.cpp:352
init< pinocchio::JointModelMimicTpl< Scalar, Options, JointCollection > >::run
static JointModel run()
Definition: casadi/joints.cpp:272
pinocchio::JointModelTpl::setIndexes
void setIndexes(JointIndex id, int nq, int nv)
Definition: joint-generic.hpp:450
pinocchio::python::context::JointModel
JointModelTpl< Scalar, Options > JointModel
Definition: bindings/python/context/generic.hpp:69
init< pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: casadi/joints.cpp:190
res
res
TestADOnJoints::test
static void test(const pinocchio::JointModelMimicTpl< Scalar, Options, JointCollection > &)
Definition: casadi/joints.cpp:389
pinocchio::JointDataBase::S
ConstraintTypeConstRef S() const
Definition: joint-data-base.hpp:195
pinocchio::LieGroupMap
Definition: liegroup.hpp:17
TestADOnJoints
Definition: casadi/joints.cpp:288
joint-generic.hpp
init< pinocchio::JointModelMimicTpl< Scalar, Options, JointCollection > >::name
static std::string name()
Definition: casadi/joints.cpp:282
pinocchio::JointModelVariant
JointCollectionDefault::JointModelVariant JointModelVariant
Definition: joint-collection.hpp:201
pinocchio::JointModelRevoluteUnboundedUnalignedTpl::Vector3
Eigen::Matrix< Scalar, 3, 1, Options > Vector3
Definition: joint-revolute-unbounded-unaligned.hpp:141
pinocchio::JointModelTpl
Definition: multibody/joint/fwd.hpp:169
TestADOnJoints::operator()
void operator()(const pinocchio::JointModelUniversalTpl< Scalar, Options > &) const
Definition: casadi/joints.cpp:308
cartpole.v
v
Definition: cartpole.py:153
pinocchio::JointModelBase::shortname
std::string shortname() const
Definition: joint-model-base.hpp:241
pinocchio::JointModelHelicalUnalignedTpl
Definition: multibody/joint/fwd.hpp:65
init< pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > JointModel
Definition: casadi/joints.cpp:188
pinocchio::JointModelPrismaticUnalignedTpl::Vector3
Eigen::Matrix< Scalar, 3, 1, _Options > Vector3
Definition: joint-prismatic-unaligned.hpp:600
init< pinocchio::JointModelTpl< Scalar, Options, JointCollection > >::JointModel
pinocchio::JointModelTpl< Scalar, Options, JointCollection > JointModel
Definition: casadi/joints.cpp:228
init< pinocchio::JointModelPrismaticUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: casadi/joints.cpp:210
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(test_jointRX_motion_space)
Definition: casadi/joints.cpp:17
q
q
pinocchio::JointModel
JointModelTpl< context::Scalar > JointModel
Definition: multibody/joint/fwd.hpp:169
pinocchio::JointModelBase::nq
int nq() const
Definition: joint-model-base.hpp:148
pinocchio::jacobian
void jacobian(const ConstraintModelTpl< Scalar, Options, ConstraintCollectionTpl > &cmodel, ConstraintDataTpl< Scalar, Options, ConstraintCollectionTpl > &cdata, const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const DataTpl< Scalar, Options, JointCollectionTpl > &data, const Eigen::MatrixBase< JacobianMatrix > &jacobian_matrix)
Definition: constraint-model-visitor.hpp:199
pinocchio::JointModelRevoluteTpl
Definition: multibody/joint/fwd.hpp:33
TestADOnJoints::operator()
void operator()(const pinocchio::JointModelTpl< Scalar, Options, JointCollection > &) const
Definition: casadi/joints.cpp:363
init< pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > JointModel
Definition: casadi/joints.cpp:168
init::name
static std::string name()
Definition: casadi/joints.cpp:159
pinocchio::JointModelRevoluteUnalignedTpl
Definition: multibody/joint/fwd.hpp:38
pinocchio::JointModelPrismaticUnalignedTpl
Definition: multibody/joint/fwd.hpp:94
pinocchio::JointModelCompositeTpl
Definition: multibody/joint/fwd.hpp:141
TestADOnJoints::test
static void test(const pinocchio::JointModelBase< JointModel > &jmodel)
Definition: casadi/joints.cpp:394
pinocchio::JointCollectionDefaultTpl::JointModelVariant
boost::variant< JointModelRX, JointModelRY, JointModelRZ, JointModelFreeFlyer, JointModelPlanar, JointModelRevoluteUnaligned, JointModelSpherical, JointModelSphericalZYX, JointModelPX, JointModelPY, JointModelPZ, JointModelPrismaticUnaligned, JointModelTranslation, JointModelRUBX, JointModelRUBY, JointModelRUBZ, JointModelRevoluteUnboundedUnaligned, JointModelHx, JointModelHy, JointModelHz, JointModelHelicalUnaligned, JointModelUniversal, boost::recursive_wrapper< JointModelComposite >, boost::recursive_wrapper< JointModelMimic > > JointModelVariant
Definition: joint-collection.hpp:111
init< pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > >::name
static std::string name()
Definition: casadi/joints.cpp:261
init::run
static JointModel_ run()
Definition: casadi/joints.cpp:152
pinocchio::python::context::JointModelRY
JointModelRevoluteTpl< Scalar, Options, 1 > JointModelRY
Definition: bindings/python/context/generic.hpp:76
liegroup.hpp
pinocchio::JointModelRevoluteUnalignedTpl::Vector3
Eigen::Matrix< Scalar, 3, 1, _Options > Vector3
Definition: joint-revolute-unaligned.hpp:617
pinocchio::JointModelBase::calc
void calc(JointDataDerived &data, const Eigen::MatrixBase< ConfigVectorType > &qs) const
Definition: joint-model-base.hpp:110
pinocchio::JointModelPrismaticUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
init< pinocchio::JointModelTpl< Scalar, Options, JointCollection > >::name
static std::string name()
Definition: casadi/joints.cpp:239
pinocchio::JointModelMimicTpl
Definition: multibody/joint/fwd.hpp:155
Y
Y
casadi.hpp
pinocchio::python::context::JointData
JointDataTpl< Scalar, Options > JointData
Definition: bindings/python/context/generic.hpp:70
pinocchio::VectorSpaceOperationTpl
Definition: vector-space.hpp:16
pinocchio::JointModelBase::nv
int nv() const
Definition: joint-model-base.hpp:144
pinocchio::python::context::SE3
SE3Tpl< Scalar, Options > SE3
Definition: bindings/python/context/generic.hpp:53
pinocchio::JointCollectionDefaultTpl
Definition: context/generic.hpp:15
pinocchio::MotionTpl
Definition: context/casadi.hpp:22
pinocchio::CastType
Type of the cast of a class C templated by Scalar and Options, to a new NewScalar type....
Definition: fwd.hpp:99
Scalar
double Scalar
Definition: timings-cppad-jit.cpp:37
init
Definition: all-joints.cpp:20
TestADOnJoints::operator()
void operator()(const pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > &) const
Definition: casadi/joints.cpp:341
TestADOnJoints::operator()
void operator()(const pinocchio::JointModelHelicalUnalignedTpl< Scalar, Options > &) const
Definition: casadi/joints.cpp:319
init< pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: casadi/joints.cpp:170
pinocchio::JointMotionSubspaceTpl
Definition: joint-motion-subspace-generic.hpp:65
pinocchio::JointModelBase::derived
JointModelDerived & derived()
Definition: joint-model-base.hpp:85
pinocchio::JointMotionSubspaceXd
JointMotionSubspaceTpl< Eigen::Dynamic, context::Scalar, context::Options > JointMotionSubspaceXd
Definition: joint-motion-subspace.hpp:20
init< pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > >::run
static JointModel run()
Definition: casadi/joints.cpp:250
pinocchio::python::context::JointModelRX
JointModelRevoluteTpl< Scalar, Options, 0 > JointModelRX
Definition: bindings/python/context/generic.hpp:73
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:33


pinocchio
Author(s):
autogenerated on Wed May 28 2025 02:41:20