joint-motion-subspace.cpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2015-2019 CNRS INRIA
3 //
4 
10 
11 #include "utils/macros.hpp"
12 
13 #include <iostream>
14 
15 #include <boost/test/unit_test.hpp>
16 #include <boost/utility/binary.hpp>
17 
18 using namespace pinocchio;
19 
20 BOOST_AUTO_TEST_SUITE(BOOST_TEST_MODULE)
21 
22 BOOST_AUTO_TEST_CASE(test_ForceSet)
23 {
24  using namespace pinocchio;
25 
26  SE3 amb = SE3::Random();
27  SE3 bmc = SE3::Random();
28  SE3 amc = amb * bmc;
29 
30  ForceSet F(12);
31  ForceSet F2(Eigen::Matrix<double, 3, 2>::Zero(), Eigen::Matrix<double, 3, 2>::Zero());
32  F.block(10, 2) = F2;
33  BOOST_CHECK_EQUAL(F.matrix().col(10).norm(), 0.0);
34  BOOST_CHECK(std::isnan(F.matrix()(0, 9)));
35 
36  ForceSet F3(Eigen::Matrix<double, 3, 12>::Random(), Eigen::Matrix<double, 3, 12>::Random());
37  ForceSet F4 = amb.act(F3);
38  SE3::Matrix6 aXb = amb;
39  BOOST_CHECK((aXb.transpose().inverse() * F3.matrix()).isApprox(F4.matrix(), 1e-12));
40 
41  ForceSet bF = bmc.act(F3);
42  ForceSet aF = amb.act(bF);
43  ForceSet aF2 = amc.act(F3);
44  BOOST_CHECK(aF.matrix().isApprox(aF2.matrix(), 1e-12));
45 
46  ForceSet F36 = amb.act(F3.block(3, 6));
47  BOOST_CHECK(
48  (aXb.transpose().inverse() * F3.matrix().block(0, 3, 6, 6)).isApprox(F36.matrix(), 1e-12));
49 
50  ForceSet F36full(12);
51  F36full.block(3, 6) = amb.act(F3.block(3, 6));
52  BOOST_CHECK((aXb.transpose().inverse() * F3.matrix().block(0, 3, 6, 6))
53  .isApprox(F36full.matrix().block(0, 3, 6, 6), 1e-12));
54 }
55 
56 BOOST_AUTO_TEST_CASE(test_ConstraintRX)
57 {
58  using namespace pinocchio;
59 
60  Inertia Y = Inertia::Random();
61  JointDataRX::Constraint_t S;
62 
63  ForceSet F1(1);
64  F1.block(0, 1) = Y * S;
65  BOOST_CHECK(F1.matrix().isApprox(Y.matrix().col(3), 1e-12));
66 
67  ForceSet F2(Eigen::Matrix<double, 3, 9>::Random(), Eigen::Matrix<double, 3, 9>::Random());
68  Eigen::MatrixXd StF2 = S.transpose() * F2.block(5, 3).matrix();
69  BOOST_CHECK(StF2.isApprox(S.matrix().transpose() * F2.matrix().block(0, 5, 6, 3), 1e-12));
70 }
71 
72 template<typename JointModel>
73 void test_jmodel_nq_against_nq_ref(const JointModelBase<JointModel> & jmodel, const int & nq_ref)
74 {
75  BOOST_CHECK(jmodel.nq() == nq_ref);
76 }
77 
78 template<typename Scalar, int Options, template<typename, int> class JointCollection>
80  const JointModelMimicTpl<Scalar, Options, JointCollection> & jmodel, const int & nq_ref)
81 {
82  BOOST_CHECK(jmodel.jmodel().nq() == nq_ref);
83 }
84 
85 template<typename JointModel, typename ConstraintDerived>
87  const JointModelBase<JointModel> & jmodel,
89 {
90  BOOST_CHECK(constraint.nv() == jmodel.nv());
91 }
92 
93 template<
94  typename Scalar,
95  int Options,
96  template<typename, int> class JointCollection,
97  typename ConstraintDerived>
101 {
102  BOOST_CHECK(constraint.nv() == jmodel.jmodel().nv());
103 }
104 
105 template<class JointModel>
107 {
108  static Model run(const JointModelBase<JointModel> & jmodel)
109  {
110  Model model;
111  model.addJoint(0, jmodel, SE3::Identity(), "joint");
112 
113  return model;
114  }
115 };
116 
117 template<typename JointModel>
119 {
120  typedef typename traits<JointModel>::JointDerived Joint;
121  typedef typename traits<Joint>::Constraint_t ConstraintType;
123  typedef Eigen::Matrix<typename JointModel::Scalar, 6, Eigen::Dynamic> Matrix6x;
124 
125  JointData jdata = jmodel.createData();
126  typedef typename JointModel::ConfigVector_t ConfigVector_t;
127  ConfigVector_t q;
128 
129  // We need to use a model here in order to call the randomConfiguration to init q.
131 
133 
135  model, ConfigVector_t::Constant(model.nq, -1.), ConfigVector_t::Constant(model.nq, 1.));
136 
137  // By calling jmodel.calc, we then have jdata.S which is initialized with non NaN quantities
138  jmodel.calc(jdata, q);
139 
140  ConstraintType constraint(jdata.S);
141 
142  test_nv_against_jmodel(jmodel.derived(), constraint);
143  BOOST_CHECK(constraint.cols() == constraint.nv());
144  BOOST_CHECK(constraint.rows() == 6);
145 
146  typedef typename JointModel::TangentVector_t TangentVector_t;
147  TangentVector_t v = TangentVector_t::Random(constraint.nv());
148 
149  typename ConstraintType::DenseBase constraint_mat = constraint.matrix();
150  Motion m = constraint * v;
151  Motion m_ref = Motion(constraint_mat * v);
152 
153  BOOST_CHECK(m.isApprox(m_ref));
154 
155  // Test SE3 action
156  {
157  SE3 M = SE3::Random();
158  typename ConstraintType::DenseBase S = M.act(constraint);
159  typename ConstraintType::DenseBase S_ref(6, constraint.nv());
160 
161  for (Eigen::DenseIndex k = 0; k < constraint.nv(); ++k)
162  {
163  typedef typename ConstraintType::DenseBase::ColXpr Vector6Like;
164  MotionRef<Vector6Like> m_in(constraint_mat.col(k)), m_out(S_ref.col(k));
165 
166  m_out = M.act(m_in);
167  }
168 
169  BOOST_CHECK(S.isApprox(S_ref));
170  }
171 
172  // Test SE3 action inverse
173  {
174  SE3 M = SE3::Random();
175  typename ConstraintType::DenseBase S = M.actInv(constraint);
176  typename ConstraintType::DenseBase S_ref(6, constraint.nv());
177 
178  for (Eigen::DenseIndex k = 0; k < constraint.nv(); ++k)
179  {
180  typedef typename ConstraintType::DenseBase::ColXpr Vector6Like;
181  MotionRef<Vector6Like> m_in(constraint_mat.col(k)), m_out(S_ref.col(k));
182 
183  m_out = M.actInv(m_in);
184  }
185 
186  BOOST_CHECK(S.isApprox(S_ref));
187  }
188 
189  // Test SE3 action and SE3 action inverse
190  {
191  const SE3 M = SE3::Random();
192  const SE3 Minv = M.inverse();
193 
194  typename ConstraintType::DenseBase S1_vice = M.actInv(constraint);
195  typename ConstraintType::DenseBase S2_vice = Minv.act(constraint);
196 
197  BOOST_CHECK(S1_vice.isApprox(S2_vice));
198 
199  typename ConstraintType::DenseBase S1_versa = M.act(constraint);
200  typename ConstraintType::DenseBase S2_versa = Minv.actInv(constraint);
201 
202  BOOST_CHECK(S1_versa.isApprox(S2_versa));
203  }
204 
205  // Test Motion action
206  {
207  Motion v = Motion::Random();
208 
209  typename ConstraintType::DenseBase S = v.cross(constraint);
210  typename ConstraintType::DenseBase S_ref(6, constraint.nv());
211 
212  for (Eigen::DenseIndex k = 0; k < constraint.nv(); ++k)
213  {
214  typedef typename ConstraintType::DenseBase::ColXpr Vector6Like;
215  MotionRef<Vector6Like> m_in(constraint_mat.col(k)), m_out(S_ref.col(k));
216 
217  m_out = v.cross(m_in);
218  }
219  BOOST_CHECK(S.isApprox(S_ref));
220  }
221 
222  // Test transpose operations
223  {
224  const Eigen::DenseIndex dim = 20;
225  const Matrix6x Fin = Matrix6x::Random(6, dim);
226  Eigen::MatrixXd Fout = constraint.transpose() * Fin;
227  Eigen::MatrixXd Fout_ref = constraint_mat.transpose() * Fin;
228  BOOST_CHECK(Fout.isApprox(Fout_ref));
229 
230  Force force_in(Force::Random());
231  Eigen::MatrixXd Stf = (constraint.transpose() * force_in);
232  Eigen::MatrixXd Stf_ref = constraint_mat.transpose() * force_in.toVector();
233  BOOST_CHECK(Stf_ref.isApprox(Stf));
234  }
235 
236  // CRBA operations
237  {
238  const Inertia Y = Inertia::Random();
239  Eigen::MatrixXd YS = Y * constraint;
240  Eigen::MatrixXd YS_ref = Y.matrix() * constraint_mat;
241  BOOST_CHECK(YS.isApprox(YS_ref));
242  }
243 
244  // ABA operations
245  {
246  const Inertia Y = Inertia::Random();
247  const Inertia::Matrix6 Y_mat = Y.matrix();
248  Eigen::MatrixXd YS = Y_mat * constraint;
249  Eigen::MatrixXd YS_ref = Y_mat * constraint_mat;
250  BOOST_CHECK(YS.isApprox(YS_ref));
251  }
252 
253  // Test constrainst operations
254  {
255  Eigen::MatrixXd StS = constraint.transpose() * constraint;
256  Eigen::MatrixXd StS_ref = constraint_mat.transpose() * constraint_mat;
257  BOOST_CHECK(StS.isApprox(StS_ref));
258  }
259 }
260 
261 template<typename Scalar, int Options, template<typename, int> class JointCollection>
264 {
265 } // Disable test for JointMimic
266 
267 template<typename JointModel_>
268 struct init;
269 
270 template<typename JointModel_>
271 struct init
272 {
273  static JointModel_ run()
274  {
275  JointModel_ jmodel;
276  jmodel.setIndexes(0, 0, 0);
277  return jmodel;
278  }
279 };
280 
281 template<typename Scalar, int Options>
282 struct init<pinocchio::JointModelRevoluteUnalignedTpl<Scalar, Options>>
283 {
285 
286  static JointModel run()
287  {
288  typedef typename JointModel::Vector3 Vector3;
289  JointModel jmodel(Vector3::Random().normalized());
290 
291  jmodel.setIndexes(0, 0, 0);
292  return jmodel;
293  }
294 };
295 
296 template<typename Scalar, int Options>
298 {
300 
301  static JointModel run()
302  {
303  typedef typename JointModel::Vector3 Vector3;
304  JointModel jmodel(Vector3::Random().normalized());
305 
306  jmodel.setIndexes(0, 0, 0);
307  return jmodel;
308  }
309 };
310 
311 template<typename Scalar, int Options>
312 struct init<pinocchio::JointModelPrismaticUnalignedTpl<Scalar, Options>>
313 {
315 
316  static JointModel run()
317  {
318  typedef typename JointModel::Vector3 Vector3;
319  JointModel jmodel(Vector3::Random().normalized());
320 
321  jmodel.setIndexes(0, 0, 0);
322  return jmodel;
323  }
324 };
325 
326 template<typename Scalar, int Options, template<typename, int> class JointCollection>
327 struct init<pinocchio::JointModelTpl<Scalar, Options, JointCollection>>
328 {
330 
331  static JointModel run()
332  {
334  JointModel jmodel((JointModelRX()));
335 
336  jmodel.setIndexes(0, 0, 0);
337  return jmodel;
338  }
339 };
340 
341 template<typename Scalar, int Options>
342 struct init<pinocchio::JointModelUniversalTpl<Scalar, Options>>
343 {
345 
346  static JointModel run()
347  {
349 
350  jmodel.setIndexes(0, 0, 0);
351  return jmodel;
352  }
353 };
354 
355 template<typename Scalar, int Options, template<typename, int> class JointCollection>
356 struct init<pinocchio::JointModelCompositeTpl<Scalar, Options, JointCollection>>
357 {
359 
360  static JointModel run()
361  {
365 
366  JointModel jmodel(JointModelRX(), SE3::Random());
367  jmodel.addJoint(JointModelRY(), SE3::Random());
368  jmodel.addJoint(JointModelRZ(), SE3::Random());
369 
370  jmodel.setIndexes(0, 0, 0);
371 
372  return jmodel;
373  }
374 };
375 
376 template<typename Scalar, int Options, template<typename, int> class JointCollection>
377 struct init<pinocchio::JointModelMimicTpl<Scalar, Options, JointCollection>>
378 {
380 
381  static JointModel run()
382  {
384  JointModelRX jmodel_ref = init<JointModelRX>::run();
385  JointModel jmodel(jmodel_ref, 1., 0.);
386  jmodel.setIndexes(1, 0, 0, 0);
387 
388  return jmodel;
389  }
390 };
391 
392 template<typename Scalar, int Options, int axis>
393 struct init<pinocchio::JointModelHelicalTpl<Scalar, Options, axis>>
394 {
396 
397  static JointModel run()
398  {
399  JointModel jmodel(static_cast<Scalar>(0.5));
400 
401  jmodel.setIndexes(0, 0, 0);
402  return jmodel;
403  }
404 };
405 
406 template<typename Scalar, int Options>
407 struct init<pinocchio::JointModelHelicalUnalignedTpl<Scalar, Options>>
408 {
410 
411  static JointModel run()
412  {
413  typedef typename JointModel::Vector3 Vector3;
414  JointModel jmodel(Vector3::Random().normalized());
415 
416  jmodel.setIndexes(0, 0, 0);
417  return jmodel;
418  }
419 };
420 
421 struct TestJointConstraint
422 {
423 
424  template<typename JointModel>
426  {
429  }
430 };
431 
432 BOOST_AUTO_TEST_CASE(test_joint_constraint_operations)
433 {
435  boost::mpl::for_each<Variant::types>(TestJointConstraint());
436 }
437 
438 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::JointModelPrismaticUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelPrismaticUnalignedTpl< Scalar, Options > JointModel
Definition: joint-motion-subspace.cpp:314
pinocchio::JointMotionSubspaceBase::nv
int nv() const
Definition: joint-motion-subspace-base.hpp:91
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(test_ForceSet)
Definition: joint-motion-subspace.cpp:22
pinocchio::JointModelRevoluteUnboundedUnalignedTpl
Definition: multibody/joint/fwd.hpp:46
test-cpp2pybind11.m
m
Definition: test-cpp2pybind11.py:25
pinocchio::ForceSetTpl::matrix
Matrix6x matrix() const
Definition: force-set.hpp:49
pinocchio::JointModelHelicalTpl
Definition: multibody/joint/fwd.hpp:60
init< pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > >::JointModel
pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > JointModel
Definition: joint-motion-subspace.cpp:358
pinocchio::JointModelRevoluteUnboundedUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
pinocchio::JointModelBase
Definition: joint-model-base.hpp:78
pinocchio::Options
Options
Definition: joint-configuration.hpp:1082
pinocchio::JointMotionSubspaceBase
Definition: joint-motion-subspace-base.hpp:59
pinocchio::SE3
context::SE3 SE3
Definition: spatial/fwd.hpp:59
model.hpp
pinocchio::JointModelRX
JointModelRevoluteTpl< context::Scalar, context::Options, 0 > JointModelRX
Definition: joint-revolute.hpp:877
init< pinocchio::JointModelTpl< Scalar, Options, JointCollection > >::run
static JointModel run()
Definition: joint-motion-subspace.cpp:331
inertia.hpp
pinocchio::JointDataTpl
Definition: multibody/joint/fwd.hpp:176
pinocchio::JointModelUniversalTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
init< pinocchio::JointModelMimicTpl< Scalar, Options, JointCollection > >::JointModel
pinocchio::JointModelMimicTpl< Scalar, Options, JointCollection > JointModel
Definition: joint-motion-subspace.cpp:379
pinocchio::Joint
JointTpl< context::Scalar > Joint
Definition: joint-generic.hpp:22
pinocchio::randomConfiguration
void randomConfiguration(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ConfigVectorIn1 > &lowerLimits, const Eigen::MatrixBase< ConfigVectorIn2 > &upperLimits, const Eigen::MatrixBase< ReturnType > &qout)
Generate a configuration vector uniformly sampled among provided limits.
Definition: joint-configuration.hpp:315
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
pinocchio::CartesianAxis::vector
static Eigen::Matrix< Scalar, 3, 1 > vector()
Definition: cartesian-axis.hpp:79
init< pinocchio::JointModelMimicTpl< Scalar, Options, JointCollection > >::run
static JointModel run()
Definition: joint-motion-subspace.cpp:381
pinocchio::JointModelRY
JointModelRevoluteTpl< context::Scalar, context::Options, 1 > JointModelRY
Definition: joint-revolute.hpp:881
pinocchio::JointModelTpl::setIndexes
void setIndexes(JointIndex id, int nq, int nv)
Definition: joint-generic.hpp:450
init< pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: joint-motion-subspace.cpp:301
joint-configuration.hpp
pinocchio::JointModelHelicalTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
init< pinocchio::JointModelHelicalUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelHelicalUnalignedTpl< Scalar, Options > JointModel
Definition: joint-motion-subspace.cpp:409
simulation-contact-dynamics.S
S
Definition: simulation-contact-dynamics.py:80
pinocchio::Force
context::Force Force
Definition: spatial/fwd.hpp:63
pinocchio::JointData
JointDataTpl< context::Scalar > JointData
Definition: multibody/joint/fwd.hpp:176
init< pinocchio::JointModelHelicalUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: joint-motion-subspace.cpp:411
pinocchio::JointModelHelicalUnalignedTpl::Vector3
Eigen::Matrix< Scalar, 3, 1, _Options > Vector3
Definition: joint-helical-unaligned.hpp:638
TestJointConstraint
Definition: joint-mimic.cpp:89
se3.hpp
pinocchio::JointModelRevoluteUnboundedUnalignedTpl::Vector3
Eigen::Matrix< Scalar, 3, 1, Options > Vector3
Definition: joint-revolute-unbounded-unaligned.hpp:141
pinocchio::JointModelMimicTpl::jmodel
const JointModel & jmodel() const
Definition: joint-mimic.hpp:755
pinocchio::JointModelTpl
Definition: multibody/joint/fwd.hpp:169
pinocchio::JointModelHelicalUnalignedTpl
Definition: multibody/joint/fwd.hpp:65
buildModel::run
static Model run(const JointModelBase< JointModel > &jmodel)
Definition: joint-motion-subspace.cpp:108
pinocchio::JointModelRZ
JointModelRevoluteTpl< context::Scalar, context::Options, 2 > JointModelRZ
Definition: joint-revolute.hpp:885
init< pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > JointModel
Definition: joint-motion-subspace.cpp:299
pinocchio::Inertia
context::Inertia Inertia
Definition: spatial/fwd.hpp:64
init< pinocchio::JointModelHelicalTpl< Scalar, Options, axis > >::JointModel
pinocchio::JointModelHelicalTpl< Scalar, Options, axis > JointModel
Definition: joint-motion-subspace.cpp:395
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: joint-motion-subspace.cpp:329
M
M
init< pinocchio::JointModelUniversalTpl< Scalar, Options > >::JointModel
pinocchio::JointModelUniversalTpl< Scalar, Options > JointModel
Definition: joint-motion-subspace.cpp:344
init< pinocchio::JointModelPrismaticUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: joint-motion-subspace.cpp:316
test_jmodel_nq_against_nq_ref
void test_jmodel_nq_against_nq_ref(const JointModelBase< JointModel > &jmodel, const int &nq_ref)
Definition: joint-motion-subspace.cpp:73
pinocchio::JointModelBase::nq
int nq() const
Definition: joint-model-base.hpp:148
pinocchio::JointDataTpl::S
Constraint_t S() const
Definition: joint-generic.hpp:126
pinocchio::MotionTpl::Random
static MotionTpl Random()
Definition: motion-tpl.hpp:140
pinocchio::JointModelRevoluteTpl
Definition: multibody/joint/fwd.hpp:33
pinocchio::q
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > & q
Definition: joint-configuration.hpp:1083
init< pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > JointModel
Definition: joint-motion-subspace.cpp:284
pinocchio::JointModelHelicalUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
Matrix6x
Eigen::Matrix< double, 6, Eigen::Dynamic > Matrix6x
Definition: joint-mimic.cpp:15
pinocchio::ForceSetTpl
Definition: force-set.hpp:14
pinocchio::v
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > const Eigen::MatrixBase< TangentVectorType > & v
Definition: joint-configuration.hpp:1084
pinocchio::JointModelRevoluteUnalignedTpl
Definition: multibody/joint/fwd.hpp:38
pinocchio::JointModelPrismaticUnalignedTpl
Definition: multibody/joint/fwd.hpp:94
pinocchio::JointModelCompositeTpl
Definition: multibody/joint/fwd.hpp:141
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::run
static JointModel_ run()
Definition: joint-motion-subspace.cpp:273
pinocchio::ForceSetTpl::Block::matrix
ForceSetTpl::Matrix6x matrix() const
Definition: force-set.hpp:123
TestJointConstraint::operator()
void operator()(const JointModelBase< JointModel > &) const
Definition: joint-motion-subspace.cpp:425
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
test_nv_against_jmodel
void test_nv_against_jmodel(const JointModelBase< JointModel > &jmodel, const JointMotionSubspaceBase< ConstraintDerived > &constraint)
Definition: joint-motion-subspace.cpp:86
test_constraint_operations
void test_constraint_operations(const JointModelBase< JointModel > &jmodel)
Definition: joint-motion-subspace.cpp:118
pinocchio::JointModelPrismaticUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
pinocchio::Motion
MotionTpl<::CppAD::AD< double >, 0 > Motion
Definition: context/cppad.hpp:39
pinocchio::JointModelMimicTpl
Definition: multibody/joint/fwd.hpp:155
Y
Y
pinocchio::traits
Common traits structure to fully define base classes for CRTP.
Definition: fwd.hpp:71
buildModel
Definition: joint-motion-subspace.cpp:106
pinocchio::JointModelBase::nv
int nv() const
Definition: joint-model-base.hpp:144
dim
int dim
force-set.hpp
pinocchio::MotionTpl
Definition: context/casadi.hpp:28
Scalar
double Scalar
Definition: timings-cppad-jit.cpp:37
pinocchio::ModelTpl< Scalar >
init
Definition: all-joints.cpp:20
pinocchio::MotionRef
Definition: context/casadi.hpp:39
init< pinocchio::JointModelHelicalTpl< Scalar, Options, axis > >::run
static JointModel run()
Definition: joint-motion-subspace.cpp:397
pinocchio::ForceSetTpl::block
Block block(const int &idx, const int &len)
Definition: force-set.hpp:179
init< pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: joint-motion-subspace.cpp:286
pinocchio::JointModelBase::derived
JointModelDerived & derived()
Definition: joint-model-base.hpp:85
init< pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > >::run
static JointModel run()
Definition: joint-motion-subspace.cpp:360
init< pinocchio::JointModelUniversalTpl< Scalar, Options > >::run
static JointModel run()
Definition: joint-motion-subspace.cpp:346
pinocchio::model
JointCollectionTpl & model
Definition: joint-configuration.hpp:1082
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:33


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