unittest/serialization.cpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2019-2023 INRIA
3 //
4 
9 
12 
14 
16 
20 
22 
24 
25 #include <iostream>
26 
27 #include <boost/test/unit_test.hpp>
28 #include <boost/utility/binary.hpp>
29 
30 BOOST_AUTO_TEST_SUITE(BOOST_TEST_MODULE)
31 
32 template<typename T1, typename T2 = T1>
34 {
35  static bool run(const T1 & v1, const T2 & v2)
36  {
37  return v1 == v2;
38  }
39 };
40 
41 template<typename T>
42 bool run_call_equality_op(const T & v1, const T & v2)
43 {
44  return call_equality_op<T, T>::run(v1, v2);
45 }
46 
47 // Bug fix in Eigen::Tensor
48 #ifdef PINOCCHIO_WITH_EIGEN_TENSOR_MODULE
49 template<typename Scalar, int NumIndices, int Options, typename IndexType>
50 struct call_equality_op<pinocchio::Tensor<Scalar, NumIndices, Options, IndexType>>
51 {
53 
54  static bool run(const T & v1, const T & v2)
55  {
56  typedef Eigen::Matrix<Scalar, Eigen::Dynamic, 1, Options> VectorXd;
57  Eigen::Map<const VectorXd> map1(v1.data(), v1.size(), 1);
58  Eigen::Map<const VectorXd> map2(v2.data(), v2.size(), 1);
59  return map1 == map2;
60  }
61 };
62 #endif
63 
64 template<typename T>
66 {
67  static T * run()
68  {
69  return new T();
70  }
71 };
72 
73 template<>
74 struct empty_contructor_algo<pinocchio::GeometryObject>
75 {
77  {
78  return new pinocchio::GeometryObject("", 0, 0, pinocchio::SE3::Identity(), nullptr);
79  }
80 };
81 
82 template<typename T>
84 {
86 }
87 
88 template<typename T>
89 void generic_test(const T & object, const std::string & filename, const std::string & tag_name)
90 {
91  using namespace pinocchio::serialization;
92 
93  // Load and save as TXT
94  const std::string txt_filename = filename + ".txt";
95  saveToText(object, txt_filename);
96 
97  {
98  T & object_loaded = *empty_contructor<T>();
99  loadFromText(object_loaded, txt_filename);
100 
101  // Check
102  BOOST_CHECK(run_call_equality_op(object_loaded, object));
103 
104  delete &object_loaded;
105  }
106 
107  // Load and save as string stream (TXT format)
108  std::stringstream ss_out;
109  saveToStringStream(object, ss_out);
110 
111  {
112  T & object_loaded = *empty_contructor<T>();
113  std::istringstream is(ss_out.str());
114  loadFromStringStream(object_loaded, is);
115 
116  // Check
117  BOOST_CHECK(run_call_equality_op(object_loaded, object));
118 
119  delete &object_loaded;
120  }
121 
122  // Load and save as string
123  std::string str_out = saveToString(object);
124 
125  {
126  T & object_loaded = *empty_contructor<T>();
127  std::string str_in(str_out);
128  loadFromString(object_loaded, str_in);
129 
130  // Check
131  BOOST_CHECK(run_call_equality_op(object_loaded, object));
132 
133  delete &object_loaded;
134  }
135  // Load and save as XML
136  const std::string xml_filename = filename + ".xml";
137  saveToXML(object, xml_filename, tag_name);
138 
139  {
140  T & object_loaded = *empty_contructor<T>();
141  loadFromXML(object_loaded, xml_filename, tag_name);
142  // Check
143  BOOST_CHECK(run_call_equality_op(object_loaded, object));
144 
145  delete &object_loaded;
146  }
147 
148  // Load and save as binary
149  const std::string bin_filename = filename + ".bin";
150  saveToBinary(object, bin_filename);
151 
152  {
153  T & object_loaded = *empty_contructor<T>();
154  loadFromBinary(object_loaded, bin_filename);
155 
156  // Check
157  BOOST_CHECK(run_call_equality_op(object_loaded, object));
158 
159  delete &object_loaded;
160  }
161 
162  // Load and save as binary stream
163  boost::asio::streambuf buffer;
164  saveToBinary(object, buffer);
165 
166  {
167  T & object_loaded = *empty_contructor<T>();
168  loadFromBinary(object_loaded, buffer);
169 
170  // Check
171  BOOST_CHECK(run_call_equality_op(object_loaded, object));
172 
173  delete &object_loaded;
174  }
175 
176  // Load and save as static binary stream
177  pinocchio::serialization::StaticBuffer static_buffer(100000000);
178  saveToBinary(object, static_buffer);
179 
180  {
181  T & object_loaded = *empty_contructor<T>();
182  loadFromBinary(object_loaded, static_buffer);
183 
184  // Check
185  BOOST_CHECK(run_call_equality_op(object_loaded, object));
186 
187  delete &object_loaded;
188  }
189 }
190 
191 BOOST_AUTO_TEST_CASE(test_static_buffer)
192 {
193  using namespace pinocchio::serialization;
194  const size_t size = 10000000;
195  StaticBuffer static_buffer(size);
196  BOOST_CHECK(size == static_buffer.size());
197 
198  const size_t new_size = 2 * size;
199  static_buffer.resize(new_size);
200  BOOST_CHECK(new_size == static_buffer.size());
201 
202  BOOST_CHECK(static_buffer.data() != NULL);
203  BOOST_CHECK(reinterpret_cast<const StaticBuffer &>(static_buffer).data() != NULL);
204  BOOST_CHECK(reinterpret_cast<const StaticBuffer &>(static_buffer).data() == static_buffer.data());
205 }
206 
207 BOOST_AUTO_TEST_CASE(test_eigen_serialization)
208 {
209  using namespace pinocchio;
210 
211  const Eigen::DenseIndex num_cols = 10;
212  const Eigen::DenseIndex num_rows = 20;
213 
214  const Eigen::DenseIndex array_size = 3;
215 
216  Eigen::MatrixXd Mat = Eigen::MatrixXd::Random(num_rows, num_cols);
217  generic_test(Mat, TEST_SERIALIZATION_FOLDER "/eigen_matrix", "matrix");
218 
219  Eigen::VectorXd Vec = Eigen::VectorXd::Random(num_rows * num_cols);
220  generic_test(Vec, TEST_SERIALIZATION_FOLDER "/eigen_vector", "vector");
221 
223  generic_test(array, TEST_SERIALIZATION_FOLDER "/eigen_array", "array");
224 
225  const Eigen::DenseIndex tensor_size = 3;
226  const Eigen::DenseIndex x_dim = 10, y_dim = 20, z_dim = 30;
227 
229  Tensor3x tensor(x_dim, y_dim, z_dim);
230 
231  Eigen::Map<Eigen::VectorXd>(tensor.data(), tensor.size(), 1).setRandom();
232 
233  generic_test(tensor, TEST_SERIALIZATION_FOLDER "/eigen_tensor", "tensor");
234 }
235 
236 BOOST_AUTO_TEST_CASE(test_spatial_serialization)
237 {
238  using namespace pinocchio;
239 
240  SE3 M(SE3::Random());
241  generic_test(M, TEST_SERIALIZATION_FOLDER "/SE3", "SE3");
242 
244  generic_test(m, TEST_SERIALIZATION_FOLDER "/Motion", "Motion");
245 
246  Force f(Force::Random());
247  generic_test(f, TEST_SERIALIZATION_FOLDER "/Force", "Force");
248 
250  generic_test(S, TEST_SERIALIZATION_FOLDER "/Symmetric3", "Symmetric3");
251 
252  Inertia I(Inertia::Random());
253  generic_test(I, TEST_SERIALIZATION_FOLDER "/Inertia", "Inertia");
254 }
255 
256 BOOST_AUTO_TEST_CASE(test_multibody_serialization)
257 {
258  using namespace pinocchio;
259 
260  Frame frame("frame", 0, 0, SE3::Random(), SENSOR);
261  generic_test(frame, TEST_SERIALIZATION_FOLDER "/Frame", "Frame");
262 }
263 
264 template<typename JointModel_>
265 struct init;
266 
267 template<typename JointModel_>
268 struct init
269 {
270  static JointModel_ run()
271  {
272  JointModel_ jmodel;
273  jmodel.setIndexes(0, 0, 0);
274  return jmodel;
275  }
276 };
277 
278 template<typename Scalar, int Options>
279 struct init<pinocchio::JointModelRevoluteUnalignedTpl<Scalar, Options>>
280 {
282 
283  static JointModel run()
284  {
285  typedef typename JointModel::Vector3 Vector3;
286  JointModel jmodel(Vector3::Random().normalized());
287 
288  jmodel.setIndexes(0, 0, 0);
289  return jmodel;
290  }
291 };
292 
293 template<typename Scalar, int Options>
295 {
297 
298  static JointModel run()
299  {
300  typedef typename JointModel::Vector3 Vector3;
301  JointModel jmodel(Vector3::Random().normalized());
302 
303  jmodel.setIndexes(0, 0, 0);
304  return jmodel;
305  }
306 };
307 
308 template<typename Scalar, int Options>
309 struct init<pinocchio::JointModelPrismaticUnalignedTpl<Scalar, Options>>
310 {
312 
313  static JointModel run()
314  {
315  typedef typename JointModel::Vector3 Vector3;
316  JointModel jmodel(Vector3::Random().normalized());
317 
318  jmodel.setIndexes(0, 0, 0);
319  return jmodel;
320  }
321 };
322 
323 template<typename Scalar, int Options>
324 struct init<pinocchio::JointModelHelicalUnalignedTpl<Scalar, Options>>
325 {
327 
328  static JointModel run()
329  {
330  typedef typename JointModel::Vector3 Vector3;
331  JointModel jmodel(Vector3::Random().normalized());
332 
333  jmodel.setIndexes(0, 0, 0);
334  return jmodel;
335  }
336 };
337 
338 template<typename Scalar, int Options, int axis>
339 struct init<pinocchio::JointModelHelicalTpl<Scalar, Options, axis>>
340 {
342 
343  static JointModel run()
344  {
345  JointModel jmodel(static_cast<Scalar>(0.0));
346 
347  jmodel.setIndexes(0, 0, 0);
348  return jmodel;
349  }
350 };
351 
352 template<typename Scalar, int Options, template<typename, int> class JointCollection>
353 struct init<pinocchio::JointModelTpl<Scalar, Options, JointCollection>>
354 {
356 
357  static JointModel run()
358  {
360  JointModel jmodel((JointModelRX()));
361 
362  jmodel.setIndexes(0, 0, 0);
363  return jmodel;
364  }
365 };
366 
367 template<typename Scalar, int Options>
368 struct init<pinocchio::JointModelUniversalTpl<Scalar, Options>>
369 {
371 
372  static JointModel run()
373  {
375 
376  jmodel.setIndexes(0, 0, 0);
377  return jmodel;
378  }
379 };
380 
381 template<typename Scalar, int Options, template<typename, int> class JointCollection>
382 struct init<pinocchio::JointModelCompositeTpl<Scalar, Options, JointCollection>>
383 {
385 
386  static JointModel run()
387  {
390  JointModel jmodel((JointModelRX()));
391  jmodel.addJoint(JointModelRY());
392 
393  jmodel.setIndexes(0, 0, 0);
394  return jmodel;
395  }
396 };
397 
398 template<typename Scalar, int Options, template<typename, int> class JointCollection>
399 struct init<pinocchio::JointModelMimicTpl<Scalar, Options, JointCollection>>
400 {
402 
403  static JointModel run()
404  {
406  JointModelRX jmodel_ref = init<JointModelRX>::run();
407 
408  JointModel jmodel(jmodel_ref, 1., 0.);
409  jmodel.setIndexes(1, 0, 0, 0);
410 
411  return jmodel;
412  }
413 };
414 
415 struct TestJointModel
416 {
417  template<typename JointModel>
419  {
421  test(jmodel);
422  }
423 
424  template<typename JointType>
425  static void test(JointType & jmodel)
426  {
427  generic_test(jmodel, TEST_SERIALIZATION_FOLDER "/Joint", "jmodel");
428  }
429 };
430 
431 BOOST_AUTO_TEST_CASE(test_multibody_joints_model_serialization)
432 {
433  using namespace pinocchio;
434  boost::mpl::for_each<JointModelVariant::types>(TestJointModel());
435 }
436 
438 {
439  template<typename JointModel>
441  {
442  typedef typename JointModel::JointDerived JointDerived;
443  typedef typename pinocchio::traits<JointDerived>::Transformation_t Transform;
444  typedef typename pinocchio::traits<JointDerived>::Constraint_t Constraint;
448 
449  JointData jdata = jmodel.createData();
450  JointDataBase & jdata_base = static_cast<JointDataBase &>(jdata);
451 
452  typedef typename pinocchio::LieGroup<JointModel>::type LieGroupType;
453  LieGroupType lg;
454 
455  Eigen::VectorXd lb(Eigen::VectorXd::Constant(jmodel.nq(), -1.));
456  Eigen::VectorXd ub(Eigen::VectorXd::Constant(jmodel.nq(), 1.));
457 
458  Eigen::VectorXd q_random = lg.randomConfiguration(lb, ub);
459 
460  jmodel.calc(jdata, q_random);
461  Transform & m = jdata_base.M();
462  test(m);
463 
464  Constraint & S = jdata_base.S();
465  test(S);
466  }
467 
468  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
470  {
471  // Do nothing
472  }
473 
474  template<typename Scalar, int Options, template<typename, int> class JointCollection>
476  {
477  // Do nothing
478  }
479 
480  template<typename Transform>
481  static void test(Transform & m)
482  {
483  generic_test(m, TEST_SERIALIZATION_FOLDER "/JointTransform", "transform");
484  }
485 };
486 
487 BOOST_AUTO_TEST_CASE(test_multibody_joints_transform_serialization)
488 {
489  using namespace pinocchio;
490  boost::mpl::for_each<JointModelVariant::types>(TestJointTransform());
491 }
492 
494 {
495  template<typename JointModel>
497  {
498  typedef typename JointModel::JointDerived JointDerived;
500  typedef typename pinocchio::traits<JointDerived>::Bias_t Bias;
504 
505  JointData jdata = jmodel.createData();
506  JointDataBase & jdata_base = static_cast<JointDataBase &>(jdata);
507 
508  typedef typename pinocchio::LieGroup<JointModel>::type LieGroupType;
509  LieGroupType lg;
510 
511  Eigen::VectorXd lb(Eigen::VectorXd::Constant(jmodel.nq(), -1.));
512  Eigen::VectorXd ub(Eigen::VectorXd::Constant(jmodel.nq(), 1.));
513 
514  Eigen::VectorXd q_random = lg.randomConfiguration(lb, ub);
515  Eigen::VectorXd v_random = Eigen::VectorXd::Random(jmodel.nv());
516 
517  jmodel.calc(jdata, q_random, v_random);
518  Motion & m = jdata_base.v();
519 
520  test(m);
521 
522  Bias & b = jdata_base.c();
523  test(b);
524  }
525 
526  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
528  {
529  // Do nothing
530  }
531 
532  template<typename Scalar, int Options, template<typename, int> class JointCollection>
534  {
535  // Do nothing
536  }
537 
538  template<typename Motion>
539  static void test(Motion & m)
540  {
541  generic_test(m, TEST_SERIALIZATION_FOLDER "/JointMotion", "motion");
542  }
543 };
544 
545 BOOST_AUTO_TEST_CASE(test_multibody_joints_motion_serialization)
546 {
547  using namespace pinocchio;
548  boost::mpl::for_each<JointModelVariant::types>(TestJointMotion());
549 }
550 
552 {
553  template<typename JointModel>
555  {
556  typedef typename JointModel::JointDerived JointDerived;
559 
560  JointData jdata = jmodel.createData();
561 
562  typedef typename pinocchio::LieGroup<JointModel>::type LieGroupType;
563  LieGroupType lg;
564 
565  Eigen::VectorXd lb(Eigen::VectorXd::Constant(jmodel.nq(), -1.));
566  Eigen::VectorXd ub(Eigen::VectorXd::Constant(jmodel.nq(), 1.));
567 
568  Eigen::VectorXd q_random = lg.randomConfiguration(lb, ub);
569  Eigen::VectorXd v_random = Eigen::VectorXd::Random(jmodel.nv());
570 
571  jmodel.calc(jdata, q_random, v_random);
572  pinocchio::Inertia::Matrix6 I(pinocchio::Inertia::Matrix6::Identity());
573  jmodel.calc_aba(jdata, Eigen::VectorXd::Zero(jmodel.nv()), I, false);
574  test(jdata);
575  }
576 
577  template<typename Scalar, int Options, template<typename S, int O> class JointCollectionTpl>
579  {
581  typedef typename JointModel::JointDerived JointDerived;
583 
584  JointModel jmodel_build = init<JointModel>::run();
585 
587  model.addJoint(0, jmodel_build, pinocchio::SE3::Random(), "model");
588  model.lowerPositionLimit.fill(-1.);
589  model.upperPositionLimit.fill(1.);
590 
591  JointModel & jmodel = boost::get<JointModel>(model.joints[1]);
592  Eigen::VectorXd q_random = pinocchio::randomConfiguration(model);
593  Eigen::VectorXd v_random = Eigen::VectorXd::Random(model.nv);
594 
596  JointData & jdata = boost::get<JointData>(data.joints[1]);
597 
598  jmodel.calc(jdata, q_random, v_random);
599  pinocchio::Inertia::Matrix6 I(pinocchio::Inertia::Matrix6::Identity());
600  jmodel.calc_aba(jdata, Eigen::VectorXd::Zero(jmodel.nv()), I, false);
601 
602  test(jdata);
603  }
604 
605  template<typename Scalar, int Options, template<typename, int> class JointCollection>
607  {
609  typedef typename JointModel::JointDerived JointDerived;
611 
613  JointData jdata = jmodel.createData();
614 
615  Eigen::VectorXd q_random = Eigen::VectorXd::Random(jmodel.jmodel().nq());
616  Eigen::VectorXd v_random = Eigen::VectorXd::Random(jmodel.jmodel().nv());
617  jmodel.calc(jdata, q_random, v_random);
618 
619  test(jdata);
620  }
621 
622  template<typename JointData>
623  static void test(JointData & joint_data)
624  {
625  generic_test(joint_data, TEST_SERIALIZATION_FOLDER "/JointData", "data");
626  }
627 };
628 
629 BOOST_AUTO_TEST_CASE(test_multibody_joints_data_serialization)
630 {
631  using namespace pinocchio;
632  boost::mpl::for_each<JointModelVariant::types>(TestJointData());
633 }
634 
635 BOOST_AUTO_TEST_CASE(test_model_serialization)
636 {
637  using namespace pinocchio;
638 
639  Model model;
641 
642  generic_test(model, TEST_SERIALIZATION_FOLDER "/Model", "Model");
643 }
644 
645 BOOST_AUTO_TEST_CASE(test_throw_extension)
646 {
647  using namespace pinocchio;
648 
649  Model model;
651 
652  const std::string & fake_filename = "this_is_a_fake_filename";
653 
654  {
655  const std::string complete_filename = fake_filename + ".txt";
656  BOOST_REQUIRE_THROW(loadFromText(model, complete_filename), std::invalid_argument);
657  }
658 
659  saveToText(model, TEST_SERIALIZATION_FOLDER "/model.txt");
660  saveToXML(model, TEST_SERIALIZATION_FOLDER "/model.xml", "model");
661  saveToBinary(model, TEST_SERIALIZATION_FOLDER "/model.bin");
662 
663  {
664  const std::string complete_filename = fake_filename + ".txte";
665 
666  BOOST_REQUIRE_THROW(loadFromText(model, complete_filename), std::invalid_argument);
667  }
668 
669  {
670  const std::string complete_filename = fake_filename + ".xmle";
671  BOOST_REQUIRE_THROW(loadFromXML(model, complete_filename, "model"), std::invalid_argument);
672  }
673 
674  {
675  const std::string complete_filename = fake_filename + ".bine";
676  BOOST_REQUIRE_THROW(loadFromBinary(model, complete_filename), std::invalid_argument);
677  }
678 }
679 
680 BOOST_AUTO_TEST_CASE(test_data_serialization)
681 {
682  using namespace pinocchio;
683 
684  Model model;
686 
687  Data data(model);
688 
689  generic_test(data, TEST_SERIALIZATION_FOLDER "/Data", "Data");
690 }
691 
692 BOOST_AUTO_TEST_CASE(test_collision_pair)
693 {
694  using namespace pinocchio;
695 
697  generic_test(collision_pair, TEST_SERIALIZATION_FOLDER "/CollisionPair", "CollisionPair");
698 }
699 
700 BOOST_AUTO_TEST_CASE(test_model_item)
701 {
702  using namespace pinocchio;
703 
704  typedef GeometryObject::Base GeometryObject_ModelItem;
705  GeometryObject_ModelItem model_item("pinocchio", 1, 2, SE3::Random());
706  generic_test(model_item, TEST_SERIALIZATION_FOLDER "/ModelItem", "ModelItem");
707 }
708 
709 BOOST_AUTO_TEST_CASE(test_geometry_object)
710 {
711  using namespace pinocchio;
712 
713  {
714  GeometryObject geometry_object("nullptr", 1, 2, SE3::Random(), nullptr);
715  generic_test(geometry_object, TEST_SERIALIZATION_FOLDER "/GeometryObject", "GeometryObject");
716  }
717 
718 #ifdef PINOCCHIO_WITH_HPP_FCL
719  {
720  hpp::fcl::Box box(1., 2., 3.);
721  generic_test(box, TEST_SERIALIZATION_FOLDER "/Box", "Box");
722  }
723 
724  #if HPP_FCL_VERSION_AT_LEAST(3, 0, 0)
725  {
726  typedef GeometryObject::CollisionGeometryPtr CollisionGeometryPtr;
727  CollisionGeometryPtr box_ptr = CollisionGeometryPtr(new hpp::fcl::Box(1., 2., 3.));
728  GeometryObject geometry_object("box", 1, 2, SE3::Random(), box_ptr);
729  generic_test(geometry_object, TEST_SERIALIZATION_FOLDER "/GeometryObject", "GeometryObject");
730  }
731  #endif // hpp-fcl >= 3.0.0
732 #endif
733 }
734 
735 BOOST_AUTO_TEST_CASE(test_geometry_model_and_data_serialization)
736 {
737  using namespace pinocchio;
738 
739  Model model;
741  Data data(model);
742 
743  // Empty structures
744  {
746  generic_test(geom_model, TEST_SERIALIZATION_FOLDER "/GeometryModel", "GeometryModel");
747 
749  generic_test(geom_data, TEST_SERIALIZATION_FOLDER "/GeometryData", "GeometryData");
750  }
751 
752 #ifdef PINOCCHIO_WITH_HPP_FCL
753  #if HPP_FCL_VERSION_AT_LEAST(3, 0, 0)
754  {
756  pinocchio::buildModels::humanoidGeometries(model, geom_model);
757  // Append new objects
758  {
759  using namespace hpp::fcl;
760  BVHModel<OBBRSS> * bvh_ptr = new BVHModel<OBBRSS>();
761  // bvh_ptr->beginModel();
762  // bvh_ptr->addSubModel(p1, t1);
763  // bvh_ptr->endModel();
764 
765  GeometryObject obj_bvh(
766  "bvh", 0, 0, SE3::Identity(), GeometryObject::CollisionGeometryPtr(bvh_ptr));
767  geom_model.addGeometryObject(obj_bvh);
768 
769  const double min_altitude = -1.;
770  const double x_dim = 1., y_dim = 2.;
771  const Eigen::DenseIndex nx = 100, ny = 200;
772  const Eigen::MatrixXd heights = Eigen::MatrixXd::Random(ny, nx);
773 
774  HeightField<OBBRSS> * hfield_ptr =
775  new HeightField<OBBRSS>(x_dim, y_dim, heights, min_altitude);
776 
777  GeometryObject obj_hfield(
778  "hfield", 0, 0, SE3::Identity(), GeometryObject::CollisionGeometryPtr(hfield_ptr));
779  geom_model.addGeometryObject(obj_hfield);
780  }
781  generic_test(geom_model, TEST_SERIALIZATION_FOLDER "/GeometryModel", "GeometryModel");
782 
784  const Eigen::VectorXd q = pinocchio::neutral(model);
787 
788  generic_test(geom_data, TEST_SERIALIZATION_FOLDER "/GeometryData", "GeometryData");
789  }
790  #endif // hpp-fcl >= 3.0.0
791 #endif // PINOCCHIO_WITH_HPP_FCL
792 }
793 
794 BOOST_AUTO_TEST_SUITE_END()
simulation-contact-dynamics.T
int T
Definition: simulation-contact-dynamics.py:89
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
call_equality_op
Definition: unittest/serialization.cpp:33
pinocchio::serialization
Definition: archive.hpp:49
archive.hpp
pinocchio::JointDataBase::v
MotionTypeConstRef v() const
Definition: joint-data-base.hpp:211
pinocchio::GeometryObject::Base
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef ModelItem< GeometryObject > Base
Definition: multibody/geometry-object.hpp:93
TestJointTransform::operator()
void operator()(const pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollectionTpl > &)
Definition: unittest/serialization.cpp:469
pinocchio::serialization::loadFromXML
void loadFromXML(T &object, const std::string &filename, const std::string &tag_name)
Loads an object from a XML file.
Definition: archive.hpp:174
init< pinocchio::JointModelPrismaticUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelPrismaticUnalignedTpl< Scalar, Options > JointModel
Definition: unittest/serialization.cpp:311
pinocchio::JointModelRevoluteUnboundedUnalignedTpl
Definition: multibody/joint/fwd.hpp:46
test-cpp2pybind11.m
m
Definition: test-cpp2pybind11.py:25
pinocchio::JointModelHelicalTpl
Definition: multibody/joint/fwd.hpp:60
model.hpp
pinocchio::DataTpl
Definition: context/generic.hpp:25
TestJointData::operator()
void operator()(const pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollectionTpl > &)
Definition: unittest/serialization.cpp:578
init< pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > >::JointModel
pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > JointModel
Definition: unittest/serialization.cpp:384
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::JointModelRevoluteUnboundedUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
box
box
pinocchio::updateGeometryPlacements
void updateGeometryPlacements(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, DataTpl< Scalar, Options, JointCollectionTpl > &data, const GeometryModel &geom_model, GeometryData &geom_data, const Eigen::MatrixBase< ConfigVectorType > &q)
Apply a forward kinematics and update the placement of the geometry objects.
TestJointModel::test
static void test(JointType &jmodel)
Definition: unittest/serialization.cpp:425
collision-with-point-clouds.collision_pair
collision_pair
Definition: collision-with-point-clouds.py:87
pinocchio::JointModelBase
Definition: joint-model-base.hpp:78
empty_contructor_algo< pinocchio::GeometryObject >::run
static pinocchio::GeometryObject * run()
Definition: unittest/serialization.cpp:76
call_equality_op::run
static bool run(const T1 &v1, const T2 &v2)
Definition: unittest/serialization.cpp:35
pinocchio::serialization::loadFromString
void loadFromString(T &object, const std::string &str)
Loads an object from a std::string.
Definition: archive.hpp:141
pinocchio::SE3
context::SE3 SE3
Definition: spatial/fwd.hpp:59
pinocchio::SENSOR
@ SENSOR
sensor frame: defined in a sensor element
Definition: multibody/frame.hpp:38
pinocchio::JointDataBase
Definition: joint-data-base.hpp:161
kinematics.hpp
pinocchio::JointDataBase::M
TansformTypeConstRef M() const
Definition: joint-data-base.hpp:203
setup.data
data
Definition: cmake/cython/setup.in.py:48
init< pinocchio::JointModelTpl< Scalar, Options, JointCollection > >::run
static JointModel run()
Definition: unittest/serialization.cpp:357
pinocchio::serialization::saveToBinary
void saveToBinary(const T &object, const std::string &filename)
Saves an object inside a binary file.
Definition: archive.hpp:254
TestJointTransform::test
static void test(Transform &m)
Definition: unittest/serialization.cpp:481
hpp::fcl::HeightField
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(test_static_buffer)
Definition: unittest/serialization.cpp:191
TestJointTransform
Definition: unittest/serialization.cpp:437
frame.hpp
TestJointData::operator()
void operator()(const pinocchio::JointModelBase< JointModel > &) const
Definition: unittest/serialization.cpp:554
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: unittest/serialization.cpp:401
pinocchio::serialization::StaticBuffer
Static buffer with pre-allocated memory.
Definition: static-buffer.hpp:16
pinocchio::GeometryObject
Definition: multibody/geometry-object.hpp:87
data.hpp
pinocchio::python::context::Motion
MotionTpl< Scalar, Options > Motion
Definition: bindings/python/context/generic.hpp:54
generic_test
void generic_test(const T &object, const std::string &filename, const std::string &tag_name)
Definition: unittest/serialization.cpp:89
pinocchio::GeometryData
Definition: multibody/geometry.hpp:241
pinocchio::buildModels::humanoidRandom
void humanoidRandom(ModelTpl< Scalar, Options, JointCollectionTpl > &model, bool usingFF=true, bool mimic=false)
Create a humanoid kinematic tree with 6-DOF limbs and random joint placements.
TestJointData
Definition: unittest/serialization.cpp:551
autodiff-rnea.f
f
Definition: autodiff-rnea.py:24
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
b
Vec3f b
pinocchio::FrameTpl
A Plucker coordinate frame attached to a parent joint inside a kinematic tree.
Definition: multibody/frame.hpp:55
pinocchio::Symmetric3Tpl< context::Scalar, context::Options >::Random
static Symmetric3Tpl Random()
Definition: spatial/symmetric3.hpp:101
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: unittest/serialization.cpp:403
loadFromBinary
void loadFromBinary(T &object, boost::asio::streambuf &buffer)
pinocchio::serialization::StaticBuffer::size
size_t size() const
Returns the current size of the buffer.
Definition: static-buffer.hpp:27
collision-with-point-clouds.nx
int nx
Definition: collision-with-point-clouds.py:40
pinocchio::JointModelTpl::calc_aba
void calc_aba(JointDataDerived &data, const Eigen::MatrixBase< VectorLike > &armature, const Eigen::MatrixBase< Matrix6Like > &I, const bool update_I) const
Definition: joint-generic.hpp:375
anymal-simulation.model
model
Definition: anymal-simulation.py:8
TestJointData::operator()
void operator()(const pinocchio::JointModelMimicTpl< Scalar, Options, JointCollection > &)
Definition: unittest/serialization.cpp:606
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: unittest/serialization.cpp:298
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: unittest/serialization.cpp:326
simulation-contact-dynamics.S
S
Definition: simulation-contact-dynamics.py:80
empty_contructor_algo::run
static T * run()
Definition: unittest/serialization.cpp:67
pinocchio::Force
context::Force Force
Definition: spatial/fwd.hpp:63
pinocchio::JointDataBase::S
ConstraintTypeConstRef S() const
Definition: joint-data-base.hpp:195
geometry.hpp
TestJointData::test
static void test(JointData &joint_data)
Definition: unittest/serialization.cpp:623
pinocchio::serialization::saveToString
std::string saveToString(const T &object)
Saves an object inside a std::string.
Definition: archive.hpp:157
pinocchio::serialization::saveToText
void saveToText(const T &object, const std::string &filename)
Saves an object inside a TXT file.
Definition: archive.hpp:87
pinocchio::CollisionPair
Definition: multibody/geometry.hpp:21
TestJointModel::operator()
void operator()(const pinocchio::JointModelBase< JointModel > &) const
Definition: unittest/serialization.cpp:418
TestJointTransform::operator()
void operator()(const pinocchio::JointModelMimicTpl< Scalar, Options, JointCollection > &)
Definition: unittest/serialization.cpp:475
init< pinocchio::JointModelHelicalUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: unittest/serialization.cpp:328
pinocchio::JointModelHelicalUnalignedTpl::Vector3
Eigen::Matrix< Scalar, 3, 1, _Options > Vector3
Definition: joint-helical-unaligned.hpp:638
pinocchio::Tensor::size
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index size() const
Definition: tensor.hpp:145
empty_contructor
T * empty_contructor()
Definition: unittest/serialization.cpp:83
pinocchio::JointModelTpl::createData
JointDataDerived createData() const
Definition: joint-generic.hpp:320
filename
filename
Eigen::array
Definition: tensor.hpp:20
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
collision-with-point-clouds.ny
int ny
Definition: collision-with-point-clouds.py:46
data.hpp
collision-with-point-clouds.x_dim
x_dim
Definition: collision-with-point-clouds.py:44
pinocchio::JointModelHelicalUnalignedTpl
Definition: multibody/joint/fwd.hpp:65
geometry.hpp
size
FCL_REAL size() const
TestJointMotion::operator()
void operator()(const pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollectionTpl > &)
Definition: unittest/serialization.cpp:527
init< pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelRevoluteUnboundedUnalignedTpl< Scalar, Options > JointModel
Definition: unittest/serialization.cpp:296
pinocchio::Inertia
context::Inertia Inertia
Definition: spatial/fwd.hpp:64
init< pinocchio::JointModelHelicalTpl< Scalar, Options, axis > >::JointModel
pinocchio::JointModelHelicalTpl< Scalar, Options, axis > JointModel
Definition: unittest/serialization.cpp:341
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: unittest/serialization.cpp:355
TestJointMotion
Definition: unittest/serialization.cpp:493
M
M
init< pinocchio::JointModelUniversalTpl< Scalar, Options > >::JointModel
pinocchio::JointModelUniversalTpl< Scalar, Options > JointModel
Definition: unittest/serialization.cpp:370
collision-with-point-clouds.y_dim
y_dim
Definition: collision-with-point-clouds.py:50
init< pinocchio::JointModelPrismaticUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: unittest/serialization.cpp:313
saveToBinary
void saveToBinary(const T &object, boost::asio::streambuf &buffer)
empty_contructor_algo
Definition: unittest/serialization.cpp:65
TestJointModel
Definition: all-joints.cpp:173
spatial.hpp
contact-cholesky.frame
frame
Definition: contact-cholesky.py:24
pinocchio::serialization::loadFromStringStream
void loadFromStringStream(T &object, std::istringstream &is)
Loads an object from a std::stringstream.
Definition: archive.hpp:111
TestJointTransform::operator()
void operator()(const pinocchio::JointModelBase< JointModel > &) const
Definition: unittest/serialization.cpp:440
pinocchio::MotionTpl::Random
static MotionTpl Random()
Definition: motion-tpl.hpp:140
pinocchio::serialization::saveToStringStream
void saveToStringStream(const T &object, std::stringstream &ss)
Saves an object inside a std::stringstream.
Definition: archive.hpp:126
pinocchio::JointModelRevoluteTpl
Definition: multibody/joint/fwd.hpp:33
pinocchio::Tensor::data
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar * data()
Definition: tensor.hpp:150
hpp::fcl
append-urdf-model-with-another-model.geom_model
geom_model
Definition: append-urdf-model-with-another-model.py:26
pinocchio::q
JointCollectionTpl const Eigen::MatrixBase< ConfigVectorType > & q
Definition: joint-configuration.hpp:1083
pinocchio::serialization::saveToXML
void saveToXML(const T &object, const std::string &filename, const std::string &tag_name)
Saves an object inside a XML file.
Definition: archive.hpp:204
init< pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > >::JointModel
pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > JointModel
Definition: unittest/serialization.cpp:281
pinocchio::JointModelHelicalUnalignedTpl::setIndexes
void setIndexes(JointIndex id, int q, int v)
Definition: joint-model-base.hpp:205
pinocchio::serialization::loadFromBinary
void loadFromBinary(T &object, const std::string &filename)
Loads an object from a binary file.
Definition: archive.hpp:230
TestJointMotion::operator()
void operator()(const pinocchio::JointModelMimicTpl< Scalar, Options, JointCollection > &)
Definition: unittest/serialization.cpp:533
collisions.geom_data
geom_data
Definition: collisions.py:42
collision-with-point-clouds.heights
heights
Definition: collision-with-point-clouds.py:53
pinocchio::buildModels::humanoid
void humanoid(ModelTpl< Scalar, Options, JointCollectionTpl > &model, bool usingFF=true)
Create a 28-DOF kinematic chain of a floating humanoid robot.
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::Symmetric3Tpl< context::Scalar, context::Options >
hpp::fcl::BVHModel
init::run
static JointModel_ run()
Definition: unittest/serialization.cpp:270
TestJointMotion::test
static void test(Motion &m)
Definition: unittest/serialization.cpp:539
pinocchio::python::context::JointModelRY
JointModelRevoluteTpl< Scalar, Options, 1 > JointModelRY
Definition: bindings/python/context/generic.hpp:76
TestJointMotion::operator()
void operator()(const pinocchio::JointModelBase< JointModel > &) const
Definition: unittest/serialization.cpp:496
pinocchio::JointModelRevoluteUnalignedTpl::Vector3
Eigen::Matrix< Scalar, 3, 1, _Options > Vector3
Definition: joint-revolute-unaligned.hpp:617
pinocchio::serialization::loadFromText
void loadFromText(T &object, const std::string &filename)
Loads an object from a TXT file.
Definition: archive.hpp:61
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
pinocchio::GeometryModel
Definition: multibody/geometry.hpp:54
pinocchio::python::context::JointData
JointDataTpl< Scalar, Options > JointData
Definition: bindings/python/context/generic.hpp:70
Tensor3x
pinocchio::Data::Tensor3x Tensor3x
Definition: timings-derivatives.cpp:23
pinocchio::traits
Common traits structure to fully define base classes for CRTP.
Definition: fwd.hpp:71
pinocchio::neutral
void neutral(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const Eigen::MatrixBase< ReturnType > &qout)
Return the neutral configuration element related to the model configuration space.
Definition: joint-configuration.hpp:363
pinocchio::Tensor
Definition: tensor.hpp:103
pinocchio::VectorSpaceOperationTpl
Definition: vector-space.hpp:16
pinocchio::GeometryObject::CollisionGeometryPtr
std::shared_ptr< fcl::CollisionGeometry > CollisionGeometryPtr
Definition: multibody/geometry-object.hpp:102
sample-models.hpp
pinocchio::MotionTpl
Definition: context/casadi.hpp:28
Scalar
double Scalar
Definition: timings-cppad-jit.cpp:37
pinocchio::ModelTpl< context::Scalar, context::Options >
init
Definition: all-joints.cpp:20
pinocchio::serialization::StaticBuffer::resize
void resize(const size_t new_size)
Increase the capacity of the vector to a value that's greater or equal to new_size.
Definition: static-buffer.hpp:48
init< pinocchio::JointModelHelicalTpl< Scalar, Options, axis > >::run
static JointModel run()
Definition: unittest/serialization.cpp:343
pinocchio::JointDataBase::c
BiasTypeConstRef c() const
Definition: joint-data-base.hpp:219
run_call_equality_op
bool run_call_equality_op(const T &v1, const T &v2)
Definition: unittest/serialization.cpp:42
joints.hpp
init< pinocchio::JointModelRevoluteUnalignedTpl< Scalar, Options > >::run
static JointModel run()
Definition: unittest/serialization.cpp:283
fwd.hpp
init< pinocchio::JointModelCompositeTpl< Scalar, Options, JointCollection > >::run
static JointModel run()
Definition: unittest/serialization.cpp:386
init< pinocchio::JointModelUniversalTpl< Scalar, Options > >::run
static JointModel run()
Definition: unittest/serialization.cpp:372
pinocchio::model
JointCollectionTpl & model
Definition: joint-configuration.hpp:1082
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::serialization::StaticBuffer::data
char * data()
Returns the pointer on the data.
Definition: static-buffer.hpp:33
pinocchio::JointModelTpl::calc
void calc(JointDataDerived &data, const Eigen::MatrixBase< ConfigVector > &q) const
Definition: joint-generic.hpp:353
hpp::fcl::Box


pinocchio
Author(s):
autogenerated on Thu Apr 10 2025 02:42:21