all-joints.cpp
Go to the documentation of this file.
1 //
2 // Copyright(c) 2015-2021 CNRS INRIA
3 // Copyright(c) 2015 Wandercraft, 86 rue de Paris 91400 Orsay, France.
4 //
5 
6 #include "pinocchio/math/fwd.hpp"
13 
14 #include <boost/test/unit_test.hpp>
15 #include <iostream>
16 
17 using namespace pinocchio;
18 
19 template<typename JointModel_>
20 struct init;
21 
22 template<typename JointModel_>
23 struct init
24 {
25  static JointModel_ run()
26  {
27  JointModel_ jmodel;
28  jmodel.setIndexes(0, 0, 0);
29  return jmodel;
30  }
31 };
32 
33 template<typename Scalar, int Options>
35 {
37 
38  static JointModel run()
39  {
40  typedef typename JointModel::Vector3 Vector3;
41  JointModel jmodel(Vector3::Random().normalized());
42 
43  jmodel.setIndexes(0, 0, 0);
44  return jmodel;
45  }
46 };
47 
48 template<typename Scalar, int Options>
50 {
52 
53  static JointModel run()
54  {
55  typedef typename JointModel::Vector3 Vector3;
56  JointModel jmodel(Vector3::Random().normalized());
57 
58  jmodel.setIndexes(0, 0, 0);
59  return jmodel;
60  }
61 };
62 
63 template<typename Scalar, int Options>
65 {
67 
68  static JointModel run()
69  {
70  typedef typename JointModel::Vector3 Vector3;
71  JointModel jmodel(Vector3::Random().normalized());
72 
73  jmodel.setIndexes(0, 0, 0);
74  return jmodel;
75  }
76 };
77 
78 template<typename Scalar, int Options, template<typename, int> class JointCollection>
79 struct init<pinocchio::JointModelTpl<Scalar, Options, JointCollection>>
80 {
82 
83  static JointModel run()
84  {
86  JointModel jmodel((JointModelRX()));
87 
88  jmodel.setIndexes(0, 0, 0);
89  return jmodel;
90  }
91 };
92 
93 template<typename Scalar, int Options, template<typename, int> class JointCollection>
94 struct init<pinocchio::JointModelCompositeTpl<Scalar, Options, JointCollection>>
95 {
97 
98  static JointModel run()
99  {
102  JointModel jmodel((JointModelRX()));
103  jmodel.addJoint(JointModelRY());
104 
105  jmodel.setIndexes(0, 0, 0);
106  return jmodel;
107  }
108 };
109 
110 template<typename Scalar, int Options, template<typename, int> class JointCollection>
111 struct init<pinocchio::JointModelMimicTpl<Scalar, Options, JointCollection>>
112 {
114 
115  static JointModel run()
116  {
117 
119  JointModelRX jmodel_ref = init<JointModelRX>::run();
120 
121  JointModel jmodel(jmodel_ref, 1., 0.);
122  jmodel.setIndexes(1, 0, 0, 0);
123  return jmodel;
124  }
125 };
126 
127 template<typename Scalar, int Options>
128 struct init<pinocchio::JointModelUniversalTpl<Scalar, Options>>
129 {
131 
132  static JointModel run()
133  {
135 
136  jmodel.setIndexes(0, 0, 0);
137  return jmodel;
138  }
139 };
140 
141 template<typename Scalar, int Options, int axis>
142 struct init<pinocchio::JointModelHelicalTpl<Scalar, Options, axis>>
143 {
145 
146  static JointModel run()
147  {
148  JointModel jmodel(static_cast<Scalar>(0.5));
149 
150  jmodel.setIndexes(0, 0, 0);
151  return jmodel;
152  }
153 };
154 
155 template<typename Scalar, int Options>
157 {
159 
160  static JointModel run()
161  {
162  typedef typename JointModel::Vector3 Vector3;
163  JointModel jmodel(Vector3::Random().normalized());
164 
165  jmodel.setIndexes(0, 0, 0);
166  return jmodel;
167  }
168 };
169 
170 BOOST_AUTO_TEST_SUITE(joint_model_base_test)
171 
172 template<typename TestDerived>
174 {
175  template<typename JointModel>
177  {
179  return TestDerived::test(jmodel);
180  }
181 };
182 
183 struct TestJointModelIsEqual : TestJointModel<TestJointModelIsEqual>
184 {
185  template<typename JointModel>
186  static void test(const JointModelBase<JointModel> & jmodel)
187  {
188  JointModel jmodel_copy = jmodel.derived();
189  BOOST_CHECK(jmodel_copy == jmodel.derived());
190 
191  JointModel jmodel_any;
192  BOOST_CHECK(jmodel_any != jmodel.derived());
193  BOOST_CHECK(!jmodel_any.isEqual(jmodel.derived()));
194  }
195 };
196 
197 struct TestJointModelTransform : TestJointModel<TestJointModelTransform>
198 {
199  template<typename JointModel>
200  static void test(const JointModelBase<JointModel> & jmodel)
201  {
202  typedef typename JointModel::JointDataDerived JointData;
203  JointData jdata = jmodel.createData();
204  Eigen::Matrix<typename JointModel::Scalar, 3, 1> t = jdata.M_accessor().translation();
206  Eigen::Matrix<typename JointModel::Scalar, 3, 3> R = jdata.M_accessor().rotation();
208  }
209 };
210 
212 {
214  boost::mpl::for_each<JointModelVariant::types>(TestJointModelIsEqual());
215 
216  JointModelRX joint_revolutex;
217  JointModelRY joint_revolutey;
218 
219  BOOST_CHECK(joint_revolutex != joint_revolutey);
220 
221  JointModel jmodelx(joint_revolutex);
222  jmodelx.setIndexes(0, 0, 0);
224 
225  JointModel jmodel_any;
226  BOOST_CHECK(jmodel_any != jmodelx);
227 }
228 
230 {
232  boost::mpl::for_each<JointModelVariant::types>(TestJointModelTransform());
233 
235 }
236 
237 struct TestJointModelCast : TestJointModel<TestJointModelCast>
238 {
239  template<typename JointModel>
240  static void test(const JointModelBase<JointModel> & jmodel)
241  {
242  typedef typename JointModel::Scalar Scalar;
243  BOOST_CHECK(jmodel == jmodel);
244  BOOST_CHECK(jmodel.template cast<Scalar>().isEqual(jmodel));
245  BOOST_CHECK(jmodel.template cast<Scalar>() == jmodel);
246  BOOST_CHECK_MESSAGE(
247  jmodel.template cast<long double>().template cast<double>() == jmodel,
248  std::string("Error when casting " + jmodel.shortname() + " from long double to double."));
249  }
250 };
251 
253 {
255  boost::mpl::for_each<JointModelVariant::types>(TestJointModelCast());
256 
258 }
259 
260 struct TestJointModelDisp : TestJointModel<TestJointModelDisp>
261 {
262  template<typename JointModel>
263  static void test(const JointModelBase<JointModel> & jmodel)
264  {
265  typedef typename JointModel::JointDataDerived JointData;
266 
267  std::cout << "shortname: " << jmodel.shortname() << std::endl;
268  std::cout << "classname: " << jmodel.classname() << std::endl;
269  std::cout << "disp:\n" << jmodel << std::endl;
270 
271  JointData jdata = jmodel.createData();
272 
273  std::cout << "shortname: " << jdata.shortname() << std::endl;
274  std::cout << "classname: " << jdata.classname() << std::endl;
275  std::cout << "disp:\n" << jdata << std::endl;
276  }
277 };
278 
280 {
282  boost::mpl::for_each<JointModelVariant::types>(TestJointModelDisp());
283 
285 }
286 
287 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: all-joints.cpp:66
TestJointModelTransform
Definition: all-joints.cpp:197
pinocchio::JointModelRevoluteUnboundedUnalignedTpl
Definition: multibody/joint/fwd.hpp:46
pinocchio::JointModelHelicalTpl
Definition: multibody/joint/fwd.hpp:60
TestJointModelIsEqual
Definition: all-joints.cpp:183
init< pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > >::JointModel
pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > JointModel
Definition: all-joints.cpp:96
pinocchio::JointModelRevoluteUnboundedUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
compute-all-terms.hpp
pinocchio::JointModelBase
Definition: joint-model-base.hpp:78
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(isEqual)
Definition: all-joints.cpp:211
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: all-joints.cpp:83
TestJointModelCast
Definition: all-joints.cpp:237
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: all-joints.cpp:113
pinocchio::JointModelTpl::isEqual
bool isEqual(const JointModelBase< JointModelDerived > &other) const
Definition: joint-generic.hpp:326
R
R
pinocchio::cast
NewScalar cast(const Scalar &value)
Definition: utils/cast.hpp:13
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
rnea.hpp
TestJointModelDisp
Definition: all-joints.cpp:260
aba.hpp
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: all-joints.cpp:115
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: all-joints.cpp:53
pinocchio::JointModelBase::classname
static std::string classname()
Definition: joint-model-base.hpp:245
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: all-joints.cpp:158
TestJointModel::operator()
void operator()(const pinocchio::JointModelBase< JointModel > &) const
Definition: all-joints.cpp:176
pinocchio::JointData
JointDataTpl< context::Scalar > JointData
Definition: multibody/joint/fwd.hpp:176
init< pinocchio::JointModelHelicalUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: all-joints.cpp:160
TestJointModelCast::test
static void test(const JointModelBase< JointModel > &jmodel)
Definition: all-joints.cpp:240
pinocchio::JointModelHelicalUnalignedTpl::Vector3
Eigen::Matrix< Scalar, 3, 1, _Options > Vector3
Definition: joint-helical-unaligned.hpp:638
pinocchio::JointDataTpl::classname
static std::string classname()
Definition: joint-generic.hpp:220
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
pinocchio::JointModelBase::shortname
std::string shortname() const
Definition: joint-model-base.hpp:241
pinocchio::JointModelHelicalUnalignedTpl
Definition: multibody/joint/fwd.hpp:65
fwd.hpp
init< pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > JointModel
Definition: all-joints.cpp:51
init< pinocchio::JointModelHelicalTpl< Scalar, Options, axis > >::JointModel
pinocchio::JointModelHelicalTpl< Scalar, Options, axis > JointModel
Definition: all-joints.cpp:144
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: all-joints.cpp:81
init< pinocchio::JointModelUniversalTpl< Scalar, Options > >::JointModel
pinocchio::JointModelUniversalTpl< Scalar, Options > JointModel
Definition: all-joints.cpp:130
init< pinocchio::JointModelPrismaticUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: all-joints.cpp:68
pinocchio::JointModel
JointModelTpl< context::Scalar > JointModel
Definition: multibody/joint/fwd.hpp:169
TestJointModel
Definition: all-joints.cpp:173
pinocchio::JointModelRevoluteTpl
Definition: multibody/joint/fwd.hpp:33
init< pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > JointModel
Definition: all-joints.cpp:36
pinocchio::JointModelHelicalUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
TestJointModelIsEqual::test
static void test(const JointModelBase< JointModel > &jmodel)
Definition: all-joints.cpp:186
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::isEqual
bool isEqual(const ConstraintDataTpl< Scalar, Options, ConstraintCollectionTpl > &cdata_generic, const ConstraintDataBase< ConstraintDataDerived > &cdata)
Definition: constraint-model-visitor.hpp:273
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
TestJointModelDisp::test
static void test(const JointModelBase< JointModel > &jmodel)
Definition: all-joints.cpp:263
init::run
static JointModel_ run()
Definition: all-joints.cpp:25
pinocchio::JointModelRevoluteUnalignedTpl::Vector3
Eigen::Matrix< Scalar, 3, 1, _Options > Vector3
Definition: joint-revolute-unaligned.hpp:617
pinocchio::JointModelPrismaticUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
pinocchio::JointModelMimicTpl
Definition: multibody/joint/fwd.hpp:155
joints.hpp
t
Transform3f t
TestJointModelTransform::test
static void test(const JointModelBase< JointModel > &jmodel)
Definition: all-joints.cpp:200
pinocchio::JointDataTpl::shortname
std::string shortname() const
Definition: joint-generic.hpp:224
Scalar
double Scalar
Definition: timings-cppad-jit.cpp:37
jacobian.hpp
init
Definition: all-joints.cpp:20
crba.hpp
init< pinocchio::JointModelHelicalTpl< Scalar, Options, axis > >::run
static JointModel run()
Definition: all-joints.cpp:146
init< pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: all-joints.cpp:38
pinocchio::JointModelBase::isEqual
bool isEqual(const JointModelBase< OtherDerived > &) const
Definition: joint-model-base.hpp:269
pinocchio::JointModelBase::derived
JointModelDerived & derived()
Definition: joint-model-base.hpp:85
init< pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > >::run
static JointModel run()
Definition: all-joints.cpp:98
init< pinocchio::JointModelUniversalTpl< Scalar, Options > >::run
static JointModel run()
Definition: all-joints.cpp:132
pinocchio::JointDataTpl::M_accessor
Transformation_t M_accessor() const
Definition: joint-generic.hpp:191
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:33
PINOCCHIO_UNUSED_VARIABLE
#define PINOCCHIO_UNUSED_VARIABLE(var)
Helper to declare that a parameter is unused.
Definition: include/pinocchio/macros.hpp:76


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