joint-composite.cpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2016 CNRS
3 //
4 
8 
9 #include <iostream>
10 #include <boost/test/unit_test.hpp>
11 #include <boost/utility/binary.hpp>
12 
13 using namespace pinocchio;
14 using namespace Eigen;
15 
16 template<typename JointModel>
18  const JointModelBase<JointModel> & jmodel, JointModelComposite & jmodel_composite);
19 
20 template<typename JointModel>
22 {
23  JointModelComposite jmodel_composite(jmodel);
24  test_joint_methods(jmodel, jmodel_composite);
25 }
26 
27 template<typename JointModel>
29  const JointModelBase<JointModel> & jmodel, JointModelComposite & jmodel_composite)
30 {
32 
33  JointData jdata = jmodel.createData();
34  JointDataComposite jdata_composite = jmodel_composite.createData();
35 
36  jmodel_composite.setIndexes(jmodel.id(), jmodel.idx_q(), jmodel.idx_v());
37 
38  typedef typename JointModel::ConfigVector_t ConfigVector_t;
39  typedef typename JointModel::TangentVector_t TangentVector_t;
40  typedef typename LieGroup<JointModel>::type LieGroupType;
41 
42  typedef Eigen::Matrix<typename ConfigVector_t::Scalar, Eigen::Dynamic, 1, ConfigVector_t::Options>
43  DynConfigVectorType;
44  typedef DynConfigVectorType DynTangentVectorType;
45 
46  ConfigVector_t ql(ConfigVector_t::Constant(jmodel.nq(), -M_PI));
47  ConfigVector_t qu(ConfigVector_t::Constant(jmodel.nq(), M_PI));
48  DynConfigVectorType q = LieGroupType().randomConfiguration(ql, qu);
49 
50  BOOST_CHECK(jmodel.nv() == jmodel_composite.nv());
51  BOOST_CHECK(jmodel.nq() == jmodel_composite.nq());
52 
53  jmodel.calc(jdata, q);
54  jmodel_composite.calc(jdata_composite, q);
55 
56  BOOST_CHECK(jdata_composite.M.isApprox((SE3)jdata.M));
57  BOOST_CHECK(jdata_composite.S.matrix().isApprox(jdata.S.matrix()));
58 
59  q = LieGroupType().randomConfiguration(ql, qu);
60  DynTangentVectorType v = TangentVector_t::Random(jmodel.nv());
61  jmodel.calc(jdata, q, v);
62  jmodel_composite.calc(jdata_composite, q, v);
63 
64  BOOST_CHECK(jdata_composite.M.isApprox((SE3)jdata.M));
65  BOOST_CHECK(jdata_composite.S.matrix().isApprox(jdata.S.matrix()));
66  BOOST_CHECK(jdata_composite.v.isApprox((Motion)jdata.v));
67  BOOST_CHECK(jdata_composite.c.isApprox((Motion)jdata.c));
68 
69  // TODO: Not yet checked
70  // {
71  // VectorXd q1(jmodel.random());
72  // jmodel.normalize(q1);
73  // VectorXd q2(jmodel.random());
74  // jmodel.normalize(q2);
75  // VectorXd v(VectorXd::Random(jmodel.nv()));
76  //
77  // BOOST_CHECK(jmodel_composite.integrate(q1,v).isApprox(jmodel.integrate(q1,v)));
78  //
79  // TangentVector_t v1 = jmodel_composite.difference(q1,q2);
80  // TangentVector_t v2 = jmodel.difference(q1,q2);
81  //
82  // BOOST_CHECK(v1.isApprox(v2));
83  //
84  // const double alpha = 0.2;
85  // BOOST_CHECK(jmodel_composite.interpolate(q1,q2,alpha).isApprox(jmodel.interpolate(q1,q2,alpha)));
86  // BOOST_CHECK(math::fabs(jmodel_composite.distance(q1,q2)-jmodel.distance(q1,q2))<=
87  // NumTraits<double>::dummy_precision());
88  // }
89 
90  Inertia::Matrix6 I0(Inertia::Random().matrix());
91 
92  Inertia::Matrix6 I1 = I0;
93  Inertia::Matrix6 I2 = I0;
94 
95  const Eigen::VectorXd armature =
96  Eigen::VectorXd::Random(jmodel.nv()) + Eigen::VectorXd::Ones(jmodel.nv());
97  jmodel.calc_aba(jdata, armature, I1, true);
98  jmodel_composite.calc_aba(jdata_composite, armature, I2, true);
99 
100  double prec = 1e-10; // higher tolerance to errors due to possible numerical imprecisions
101 
102  BOOST_CHECK(jdata.U.isApprox(jdata_composite.U, prec));
103  BOOST_CHECK(jdata.Dinv.isApprox(jdata_composite.Dinv, prec));
104  BOOST_CHECK(jdata.UDinv.isApprox(jdata_composite.UDinv, prec));
105 
106  // Checking the inertia was correctly updated
107  // We use isApprox as usual, except for the freeflyer,
108  // where the correct result is exacly zero and isApprox would fail.
109  // Only for this single case, we use the infinity norm of the difference
110  if (jmodel.shortname() == "JointModelFreeFlyer")
111  BOOST_CHECK((I1 - I2).lpNorm<Eigen::Infinity>() < prec);
112  else
113  BOOST_CHECK(I1.isApprox(I2, prec));
114 
115  // Test operator=
116  JointModelComposite jmodel_composite2 = jmodel_composite;
117  JointDataComposite jdata_composite2 = jmodel_composite2.createData();
118 
119  jmodel_composite2.calc(jdata_composite2, q, v);
120 
121  Inertia::Matrix6 I3 = I0;
122  jmodel_composite2.calc_aba(jdata_composite2, armature, I3, true);
123 
124  if (jmodel.shortname() == "JointModelFreeFlyer")
125  BOOST_CHECK((I3 - I2).lpNorm<Eigen::Infinity>() < prec);
126  else
127  BOOST_CHECK(I3.isApprox(I2, prec));
128 
129  BOOST_CHECK(jmodel_composite2 == jmodel_composite);
130 
131  BOOST_CHECK(jdata_composite2.U.isApprox(jdata_composite.U, prec));
132  BOOST_CHECK(jdata_composite2.Dinv.isApprox(jdata_composite.Dinv, prec));
133  BOOST_CHECK(jdata_composite2.UDinv.isApprox(jdata_composite.UDinv, prec));
134 
135  // Test operator <<
136  std::cout << "JointModelComposite operator<<:\n" << jmodel_composite << std::endl;
137 
138  // Test block operators
139  const int m = 100;
140  Data::Matrix6x mat(Data::Matrix6x::Ones(6, m));
141  const Data::Matrix6x mat_const(Data::Matrix6x::Ones(6, m));
142  Model::ConfigVectorType vec(Model::ConfigVectorType::Ones(m));
143  const Model::ConfigVectorType vec_const(Model::ConfigVectorType::Ones(m));
144 
145  BOOST_CHECK(jmodel.jointConfigSelector(vec) == jmodel_composite.jointConfigSelector(vec));
146  BOOST_CHECK(
147  jmodel.jointConfigSelector(vec_const) == jmodel_composite.jointConfigSelector(vec_const));
148 
149  BOOST_CHECK(jmodel.jointVelocitySelector(vec) == jmodel_composite.jointVelocitySelector(vec));
150  BOOST_CHECK(
151  jmodel.jointVelocitySelector(vec_const) == jmodel_composite.jointVelocitySelector(vec_const));
152 
153  BOOST_CHECK(jmodel.jointCols(mat) == jmodel_composite.jointCols(mat));
154  BOOST_CHECK(jmodel.jointCols(mat_const) == jmodel_composite.jointCols(mat_const));
155 }
156 
158 {
159 
160  template<typename JointModel>
162  {
163  JointModel jmodel;
164  jmodel.setIndexes(0, 0, 0);
165 
166  test_joint_methods(jmodel);
167  }
168 
169  // void operator()(const JointModelBase<JointModelComposite> &) const
170  // {
171  // JointModelComposite jmodel_composite;
172  // jmodel_composite.addJoint(pinocchio::JointModelRX());
173  // jmodel_composite.addJoint(pinocchio::JointModelRY());
174  // jmodel_composite.setIndexes(0,0,0);
175  //
176  // test_joint_methods(jmodel_composite);
177  // }
178 
180  {
181  JointModelRevoluteUnaligned jmodel(1.5, 1., 0.);
182  jmodel.setIndexes(0, 0, 0);
183 
184  test_joint_methods(jmodel);
185  }
186 
188  {
189  JointModelPrismaticUnaligned jmodel(1.5, 1., 0.);
190  jmodel.setIndexes(0, 0, 0);
191  test_joint_methods(jmodel);
192  }
193 };
194 
195 BOOST_AUTO_TEST_SUITE(BOOST_TEST_MODULE)
196 
198 {
199  typedef boost::variant<
204  Variant;
205 
206  boost::mpl::for_each<Variant::types>(TestJointComposite());
207 }
208 
210 {
211  JointModelComposite jmodel_composite;
212  jmodel_composite.addJoint(JointModelRZ())
213  .addJoint(JointModelRY(), SE3::Random())
214  .addJoint(JointModelRX());
215  BOOST_CHECK_MESSAGE(jmodel_composite.nq() == 3, "Chain did not work");
216  BOOST_CHECK_MESSAGE(jmodel_composite.nv() == 3, "Chain did not work");
217  BOOST_CHECK_MESSAGE(jmodel_composite.njoints == 3, "Chain did not work");
218 }
219 
221 {
222  JointModelSphericalZYX jmodel_spherical;
223  jmodel_spherical.setIndexes(0, 0, 0);
224 
225  JointModelComposite jmodel_composite((JointModelRZ()));
226  jmodel_composite.addJoint(JointModelRY());
227  jmodel_composite.addJoint(JointModelRX());
228 
229  test_joint_methods(jmodel_spherical, jmodel_composite);
230 }
231 
232 BOOST_AUTO_TEST_CASE(vsTranslation)
233 {
234  JointModelTranslation jmodel_translation;
235  jmodel_translation.setIndexes(0, 0, 0);
236 
237  JointModelComposite jmodel_composite((JointModelPX()));
238  jmodel_composite.addJoint(JointModelPY());
239  jmodel_composite.addJoint(JointModelPZ());
240 
241  test_joint_methods(jmodel_translation, jmodel_composite);
242 }
243 
244 BOOST_AUTO_TEST_CASE(test_recursive_variant)
245 {
247  JointModelComposite jmodel_composite_two_rx((JointModelRX()));
248  jmodel_composite_two_rx.addJoint(JointModelRY());
249 
252  JointModelComposite jmodel_composite_recursive((JointModelFreeFlyer()));
253  jmodel_composite_recursive.addJoint(JointModelPlanar());
254  jmodel_composite_recursive.addJoint(jmodel_composite_two_rx);
255 }
256 
258 {
259  JointModelComposite jmodel_composite_planar((JointModelPX()));
260  jmodel_composite_planar.addJoint(JointModelPY());
261  jmodel_composite_planar.addJoint(JointModelRZ());
262  jmodel_composite_planar.setIndexes(0, 0, 0);
263 
264  JointDataComposite jdata_composite_planar = jmodel_composite_planar.createData();
265 
266  VectorXd q1(VectorXd::Random(3));
267  VectorXd q1_dot(VectorXd::Random(3));
268 
269  JointModelComposite model_copy = jmodel_composite_planar;
270  JointDataComposite data_copy = model_copy.createData();
271 
272  BOOST_CHECK_MESSAGE(
273  model_copy.nq() == jmodel_composite_planar.nq(), "Test Copy Composite, nq are differents");
274  BOOST_CHECK_MESSAGE(
275  model_copy.nv() == jmodel_composite_planar.nv(), "Test Copy Composite, nv are differents");
276 
277  jmodel_composite_planar.calc(jdata_composite_planar, q1, q1_dot);
278  model_copy.calc(data_copy, q1, q1_dot);
279 }
280 
281 BOOST_AUTO_TEST_CASE(test_kinematics)
282 {
283  Model model;
284  JointModelComposite jmodel_composite;
285 
286  SE3 config = SE3::Random();
287  JointIndex parent = 0;
288 
289  for (int i = 0; i < 10; i++)
290  {
291  parent = model.addJoint(parent, JointModelRX(), config, "joint");
292  jmodel_composite.addJoint(JointModelRX(), config);
293 
294  config.setRandom();
295  }
296 
297  Data data(model);
298 
299  Model model_c;
300  model_c.addJoint(0, jmodel_composite, SE3::Identity(), "joint");
301 
302  Data data_c(model_c);
303 
304  BOOST_CHECK(model.nv == model_c.nv);
305  BOOST_CHECK(model.nq == model_c.nq);
306 
307  VectorXd q(VectorXd::Random(model.nv));
309  forwardKinematics(model_c, data_c, q);
310 
311  BOOST_CHECK(data.oMi.back().isApprox(data_c.oMi.back()));
312 
313  q.setRandom(model.nq);
314  VectorXd v(VectorXd::Random(model.nv));
316  forwardKinematics(model_c, data_c, q, v);
317 
318  BOOST_CHECK(data.oMi.back().isApprox(data_c.oMi.back()));
319  BOOST_CHECK(data.v.back().isApprox(data_c.v.back()));
320 
321  q.setRandom(model.nq);
322  v.setRandom(model.nv);
323  VectorXd a(VectorXd::Random(model.nv));
325  forwardKinematics(model_c, data_c, q, v, a);
326 
327  BOOST_CHECK(data.oMi.back().isApprox(data_c.oMi.back()));
328  BOOST_CHECK(data.v.back().isApprox(data_c.v.back()));
329  BOOST_CHECK(data.a.back().isApprox(data_c.a.back()));
330 }
331 
332 BOOST_AUTO_TEST_SUITE_END()
pinocchio::JointModelRevoluteUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:186
pinocchio::JointModelBase::createData
JointDataDerived createData() const
Definition: joint-model-base.hpp:91
pinocchio::JointModelCompositeTpl::createData
JointDataDerived createData() const
Definition: joint-composite.hpp:293
test_joint_methods
void test_joint_methods(const JointModelBase< JointModel > &jmodel, JointModelComposite &jmodel_composite)
Definition: joint-composite.cpp:28
pinocchio::JointDataTpl::v
Motion_t v() const
Definition: joint-generic.hpp:131
Eigen
test-cpp2pybind11.m
m
Definition: test-cpp2pybind11.py:22
pinocchio::JointModelFreeFlyer
JointModelFreeFlyerTpl< context::Scalar > JointModelFreeFlyer
Definition: multibody/joint/fwd.hpp:110
pinocchio::JointModelTranslationTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:186
pinocchio::DataTpl
Definition: context/generic.hpp:25
pinocchio::JointModelTranslation
JointModelTranslationTpl< context::Scalar > JointModelTranslation
Definition: multibody/joint/fwd.hpp:126
pinocchio::forwardKinematics
void forwardKinematics(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const Eigen::MatrixBase< ConfigVectorType > &q)
Update the joint placements according to the current joint configuration.
pinocchio::JointDataCompositeTpl::c
Bias_t c
Definition: joint-composite.hpp:134
pinocchio::JointModelBase
Definition: joint-model-base.hpp:75
lambdas.parent
parent
Definition: lambdas.py:20
pinocchio::SE3Tpl< context::Scalar, context::Options >
TestJointComposite::operator()
void operator()(const JointModelBase< JointModel > &) const
Definition: joint-composite.cpp:161
inverse-kinematics.i
int i
Definition: inverse-kinematics.py:20
kinematics.hpp
pinocchio::JointModelRX
JointModelRevoluteTpl< context::Scalar, context::Options, 0 > JointModelRX
Definition: joint-revolute.hpp:855
pinocchio::JointModelBase::jointConfigSelector
SizeDepType< NQ >::template SegmentReturn< D >::ConstType jointConfigSelector(const Eigen::MatrixBase< D > &a) const
Definition: joint-model-base.hpp:264
setup.data
data
Definition: cmake/cython/setup.in.py:48
pinocchio::JointModelSpherical
JointModelSphericalTpl< context::Scalar > JointModelSpherical
Definition: multibody/joint/fwd.hpp:73
vec
vec
pinocchio::JointDataTpl< context::Scalar >
pinocchio::JointModelTranslationTpl
Definition: multibody/joint/fwd.hpp:126
pinocchio::JointDataCompositeTpl::U
U_t U
Definition: joint-composite.hpp:137
pinocchio::JointDataTpl::c
Bias_t c() const
Definition: joint-generic.hpp:135
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:279
pinocchio::JointModelBase::jointVelocitySelector
SizeDepType< NV >::template SegmentReturn< D >::ConstType jointVelocitySelector(const Eigen::MatrixBase< D > &a) const
Definition: joint-model-base.hpp:295
pinocchio::ModelTpl::addJoint
JointIndex addJoint(const JointIndex parent, const JointModel &joint_model, const SE3 &joint_placement, const std::string &joint_name)
Add a joint to the kinematic tree with infinite bounds.
pinocchio::JointModelBase::calc_aba
void calc_aba(JointDataDerived &data, const Eigen::MatrixBase< VectorLike > &armature, const Eigen::MatrixBase< Matrix6Like > &I, const bool update_I=false) const
Definition: joint-model-base.hpp:131
pinocchio::JointModelPlanar
JointModelPlanarTpl< context::Scalar > JointModelPlanar
Definition: multibody/joint/fwd.hpp:118
joint-composite.hpp
pinocchio::JointModelRY
JointModelRevoluteTpl< context::Scalar, context::Options, 1 > JointModelRY
Definition: joint-revolute.hpp:859
pinocchio::JointModelTpl::setIndexes
void setIndexes(JointIndex id, int nq, int nv)
Definition: joint-generic.hpp:415
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(test_basic)
Definition: joint-composite.cpp:197
TestJointComposite::operator()
void operator()(const JointModelBase< JointModelRevoluteUnaligned > &) const
Definition: joint-composite.cpp:179
joint-configuration.hpp
pinocchio::JointModelSphericalZYXTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:186
pinocchio::JointData
JointDataTpl< context::Scalar > JointData
Definition: multibody/joint/fwd.hpp:162
pinocchio::JointModelTpl< context::Scalar >
mat
mat
pinocchio::JointModelBase::shortname
std::string shortname() const
Definition: joint-model-base.hpp:214
pinocchio::JointModelRZ
JointModelRevoluteTpl< context::Scalar, context::Options, 2 > JointModelRZ
Definition: joint-revolute.hpp:863
pinocchio::JointDataCompositeTpl::Dinv
D_t Dinv
Definition: joint-composite.hpp:138
pinocchio::JointModelPY
JointModelPrismaticTpl< context::Scalar, context::Options, 1 > JointModelPY
Definition: joint-prismatic.hpp:763
pinocchio::JointDataTpl::U
U_t U() const
Definition: joint-generic.hpp:141
pinocchio::InertiaTpl< context::Scalar, context::Options >::Random
static InertiaTpl Random()
Definition: spatial/inertia.hpp:356
pinocchio::JointModelCompositeTpl::jointCols
SizeDepType< NV >::template ColsReturn< D >::ConstType jointCols(const Eigen::MatrixBase< D > &A) const
Definition: joint-composite.hpp:480
pinocchio::JointDataCompositeTpl::M
Transformation_t M
Definition: joint-composite.hpp:132
pinocchio::JointDataCompositeTpl::UDinv
UD_t UDinv
Definition: joint-composite.hpp:139
pinocchio::JointDataTpl::UDinv
UD_t UDinv() const
Definition: joint-generic.hpp:149
pinocchio::JointModelCompositeTpl::njoints
int njoints
Number of joints contained in the JointModelComposite.
Definition: joint-composite.hpp:576
pinocchio::JointModelCompositeTpl::jointConfigSelector
SizeDepType< NQ >::template SegmentReturn< D >::ConstType jointConfigSelector(const Eigen::MatrixBase< D > &a) const
Definition: joint-composite.hpp:454
pinocchio::JointModelBase::nq
int nq() const
Definition: joint-model-base.hpp:145
pinocchio::JointDataTpl::S
Constraint_t S() const
Definition: joint-generic.hpp:123
pinocchio::JointModelPZ
JointModelPrismaticTpl< context::Scalar, context::Options, 2 > JointModelPZ
Definition: joint-prismatic.hpp:767
pinocchio::JointModelCompositeTpl::calc
void calc(JointDataDerived &data, const Eigen::MatrixBase< ConfigVectorType > &qs) const
pinocchio::q
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > & q
Definition: joint-configuration.hpp:1117
pinocchio::JointModelRUBX
JointModelRevoluteUnboundedTpl< context::Scalar, context::Options, 0 > JointModelRUBX
Definition: joint-revolute-unbounded.hpp:246
a
Vec3f a
pinocchio::JointModelBase::idx_v
int idx_v() const
Definition: joint-model-base.hpp:164
pinocchio::v
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > const Eigen::MatrixBase< TangentVectorType > & v
Definition: joint-configuration.hpp:1118
pinocchio::JointModelBase::jointCols
SizeDepType< NV >::template ColsReturn< D >::ConstType jointCols(const Eigen::MatrixBase< D > &A) const
Definition: joint-model-base.hpp:326
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::JointModelBase::idx_q
int idx_q() const
Definition: joint-model-base.hpp:160
pinocchio::SE3Tpl< context::Scalar, context::Options >::Random
static SE3Tpl Random()
Definition: spatial/se3-tpl.hpp:154
pinocchio::JointDataTpl::Dinv
D_t Dinv() const
Definition: joint-generic.hpp:145
M_PI
#define M_PI
pinocchio::ModelTpl::nv
int nv
Dimension of the velocity vector space.
Definition: multibody/model.hpp:102
pinocchio::SE3Tpl< context::Scalar, context::Options >::Identity
static SE3Tpl Identity()
Definition: spatial/se3-tpl.hpp:136
pinocchio::JointModelCompositeTpl::calc_aba
void calc_aba(JointDataDerived &data, const Eigen::MatrixBase< VectorLike > &armature, const Eigen::MatrixBase< Matrix6Like > &I, const bool update_I) const
Definition: joint-composite.hpp:346
pinocchio::JointModelSphericalZYXTpl
Definition: multibody/joint/fwd.hpp:81
pinocchio::JointModelBase::calc
void calc(JointDataDerived &data, const Eigen::MatrixBase< ConfigVectorType > &qs) const
Definition: joint-model-base.hpp:107
pinocchio::JointModelPrismaticUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:186
TestJointComposite::operator()
void operator()(const JointModelBase< JointModelPrismaticUnaligned > &) const
Definition: joint-composite.cpp:187
pinocchio::q1
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorIn1 > const Eigen::MatrixBase< ConfigVectorIn2 > & q1
Definition: joint-configuration.hpp:1174
pinocchio::JointDataCompositeTpl
Definition: multibody/joint/fwd.hpp:148
pinocchio::JointIndex
Index JointIndex
Definition: multibody/fwd.hpp:26
pinocchio::DataTpl::Matrix6x
Eigen::Matrix< Scalar, 6, Eigen::Dynamic, Options > Matrix6x
The 6d jacobian type (temporary)
Definition: multibody/data.hpp:92
pinocchio::JointModelPX
JointModelPrismaticTpl< context::Scalar, context::Options, 0 > JointModelPX
Definition: joint-prismatic.hpp:759
pinocchio::JointModelSphericalZYX
JointModelSphericalZYXTpl< context::Scalar > JointModelSphericalZYX
Definition: multibody/joint/fwd.hpp:81
pinocchio::VectorSpaceOperationTpl
Definition: vector-space.hpp:16
pinocchio::JointModelRevoluteUnaligned
JointModelRevoluteUnalignedTpl< context::Scalar > JointModelRevoluteUnaligned
Definition: multibody/joint/fwd.hpp:38
pinocchio::JointDataCompositeTpl::v
Motion_t v
Definition: joint-composite.hpp:133
pinocchio::JointModelBase::nv
int nv() const
Definition: joint-model-base.hpp:141
pinocchio::ModelTpl::ConfigVectorType
VectorXs ConfigVectorType
Dense vectorized version of a joint configuration vector.
Definition: multibody/model.hpp:88
pinocchio::JointModelPrismaticUnaligned
JointModelPrismaticUnalignedTpl< context::Scalar > JointModelPrismaticUnaligned
Definition: multibody/joint/fwd.hpp:94
pinocchio::MotionTpl
Definition: context/casadi.hpp:27
pinocchio::JointDataCompositeTpl::S
Constraint_t S
Definition: joint-composite.hpp:131
pinocchio::ModelTpl
Definition: context/generic.hpp:20
pinocchio::JointModelRevoluteUnboundedTpl
Definition: multibody/joint/fwd.hpp:55
pinocchio::JointDataTpl::M
Transformation_t M() const
Definition: joint-generic.hpp:127
setup.config
config
Definition: cmake/cython/setup.in.py:103
TestJointComposite
Definition: joint-composite.cpp:157
pinocchio::ModelTpl::nq
int nq
Dimension of the configuration vector representation.
Definition: multibody/model.hpp:99
pinocchio::model
JointCollectionTpl & model
Definition: joint-configuration.hpp:1116
pinocchio::JointModelCompositeTpl::jointVelocitySelector
SizeDepType< NV >::template SegmentReturn< D >::ConstType jointVelocitySelector(const Eigen::MatrixBase< D > &a) const
Definition: joint-composite.hpp:467
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:27
BOOST_CHECK
#define BOOST_CHECK(check)
Definition: overview-urdf.cpp:34
pinocchio::JointModelBase::id
JointIndex id() const
Definition: joint-model-base.hpp:168
pinocchio::JointModelRUBY
JointModelRevoluteUnboundedTpl< context::Scalar, context::Options, 1 > JointModelRUBY
Definition: joint-revolute-unbounded.hpp:250


pinocchio
Author(s):
autogenerated on Sat Jun 22 2024 02:41:47