overview-urdf.cpp
Go to the documentation of this file.
2 
6 
11 
14 
16 
18 
22 
24 
25 #include <boost/filesystem.hpp>
26 
27 #include <iostream>
28 
29 // PINOCCHIO_MODEL_DIR is defined by the CMake but you can define your own directory here.
30 #ifndef PINOCCHIO_MODEL_DIR
31  #define PINOCCHIO_MODEL_DIR "path_to_the_model_dir"
32 #endif
33 
34 #define BOOST_CHECK(check) \
35  if (!(check)) \
36  std::cout << BOOST_STRINGIZE(check) << " has failed" << std::endl;
37 
38 using namespace pinocchio;
39 
40 template<typename T1, typename T2 = T1>
42 {
43  static bool run(const T1 & v1, const T2 & v2)
44  {
45  return v1 == v2;
46  }
47 };
48 
49 template<typename T>
50 bool run_call_equality_op(const T & v1, const T & v2)
51 {
52  return call_equality_op<T, T>::run(v1, v2);
53 }
54 
55 template<typename T>
57 {
58  static T * run()
59  {
60  return new T();
61  }
62 };
63 
64 template<>
66 {
68  {
69  return new pinocchio::GeometryObject("", 0, 0, pinocchio::SE3::Identity(), nullptr);
70  }
71 };
72 
73 template<typename T>
75 {
77 }
78 
79 template<typename T>
80 void generic_test(const T & object, const std::string & filename, const std::string & tag_name)
81 {
82  using namespace pinocchio::serialization;
83 
84  // Load and save as TXT
85  const std::string txt_filename = filename + ".txt";
86  saveToText(object, txt_filename);
87 
88  {
89  T & object_loaded = *empty_contructor<T>();
90  loadFromText(object_loaded, txt_filename);
91 
92  // Check
93  BOOST_CHECK(run_call_equality_op(object_loaded, object));
94 
95  delete &object_loaded;
96  }
97 
98  // Load and save as string stream (TXT format)
99  std::stringstream ss_out;
100  saveToStringStream(object, ss_out);
101 
102  {
103  T & object_loaded = *empty_contructor<T>();
104  std::istringstream is(ss_out.str());
105  loadFromStringStream(object_loaded, is);
106 
107  // Check
108  BOOST_CHECK(run_call_equality_op(object_loaded, object));
109 
110  delete &object_loaded;
111  }
112 
113  // Load and save as string
114  std::string str_out = saveToString(object);
115 
116  {
117  T & object_loaded = *empty_contructor<T>();
118  std::string str_in(str_out);
119  loadFromString(object_loaded, str_in);
120 
121  // Check
122  BOOST_CHECK(run_call_equality_op(object_loaded, object));
123 
124  delete &object_loaded;
125  }
126 
127  // Load and save as XML
128  const std::string xml_filename = filename + ".xml";
129  saveToXML(object, xml_filename, tag_name);
130 
131  {
132  T & object_loaded = *empty_contructor<T>();
133  loadFromXML(object_loaded, xml_filename, tag_name);
134 
135  // Check
136  BOOST_CHECK(run_call_equality_op(object_loaded, object));
137 
138  delete &object_loaded;
139  }
140 
141  // Load and save as binary
142  const std::string bin_filename = filename + ".bin";
143  saveToBinary(object, bin_filename);
144 
145  {
146  T & object_loaded = *empty_contructor<T>();
147  loadFromBinary(object_loaded, bin_filename);
148 
149  // Check
150  BOOST_CHECK(run_call_equality_op(object_loaded, object));
151 
152  delete &object_loaded;
153  }
154 
155  // Load and save as binary stream
156  boost::asio::streambuf buffer;
157  saveToBinary(object, buffer);
158 
159  {
160  T & object_loaded = *empty_contructor<T>();
161  loadFromBinary(object_loaded, buffer);
162 
163  // Check
164  BOOST_CHECK(run_call_equality_op(object_loaded, object));
165 
166  delete &object_loaded;
167  }
168 
169  // Load and save as static binary stream
170  pinocchio::serialization::StaticBuffer static_buffer(10000000);
171  saveToBinary(object, static_buffer);
172 
173  {
174  T & object_loaded = *empty_contructor<T>();
175  loadFromBinary(object_loaded, static_buffer);
176 
177  // Check
178  BOOST_CHECK(run_call_equality_op(object_loaded, object));
179 
180  delete &object_loaded;
181  }
182 }
183 
184 int main(int, char **)
185 {
186  namespace fs = boost::filesystem;
187 
188  Model model;
190  Data data(model);
191 
192  fs::path model_path = fs::temp_directory_path() / "GeometryModel";
193  fs::path data_path = fs::temp_directory_path() / "GeometryData";
194  // boost::serialization::void_cast_register<hpp::fcl::BVHModel<hpp::fcl::OBBRSS>,hpp::fcl::CollisionGeometry>();
195  // Empty structures
196  {
198  generic_test(geom_model, model_path.string(), "GeometryModel");
199 
201  generic_test(geom_data, data_path.string(), "GeometryData");
202  }
203 
204 #ifdef PINOCCHIO_WITH_HPP_FCL
205  #if HPP_FCL_VERSION_AT_LEAST(3, 0, 0)
206  {
208  pinocchio::buildModels::humanoidGeometries(model, geom_model);
209  // Append new objects
210  {
211  using namespace hpp::fcl;
212  BVHModel<OBBRSS> * bvh_ptr = new BVHModel<OBBRSS>();
213  // bvh_ptr->beginModel();
214  // bvh_ptr->addSubModel(p1, t1);
215  // bvh_ptr->endModel();
216 
217  GeometryObject obj_bvh(
218  "bvh", 0, 0, SE3::Identity(), GeometryObject::CollisionGeometryPtr(bvh_ptr));
219  geom_model.addGeometryObject(obj_bvh);
220  }
221  generic_test(geom_model, model_path.string(), "GeometryModel");
222 
224  const Eigen::VectorXd q = pinocchio::neutral(model);
227 
228  generic_test(geom_data, data_path.string(), "GeometryData");
229  }
230  #endif // hpp-fcl >= 3.0.0
231 #endif // PINOCCHIO_WITH_HPP_FCL
232 }
simulation-contact-dynamics.T
int T
Definition: simulation-contact-dynamics.py:94
call_equality_op
Definition: overview-urdf.cpp:41
pinocchio::serialization
Definition: archive.hpp:49
archive.hpp
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
model.hpp
pinocchio::DataTpl
Definition: context/generic.hpp:25
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::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.
empty_contructor_algo< pinocchio::GeometryObject >::run
static pinocchio::GeometryObject * run()
Definition: overview-urdf.cpp:67
append-urdf-model-with-another-model.model_path
model_path
Definition: append-urdf-model-with-another-model.py:14
call_equality_op::run
static bool run(const T1 &v1, const T2 &v2)
Definition: overview-urdf.cpp:43
pinocchio::serialization::loadFromString
void loadFromString(T &object, const std::string &str)
Loads an object from a std::string.
Definition: archive.hpp:141
main
int main(int, char **)
Definition: overview-urdf.cpp:184
kinematics.hpp
setup.data
data
Definition: cmake/cython/setup.in.py:48
pinocchio::serialization::saveToBinary
void saveToBinary(const T &object, const std::string &filename)
Saves an object inside a binary file.
Definition: archive.hpp:254
frame.hpp
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::GeometryData
Definition: multibody/geometry.hpp:233
joint-configuration.hpp
empty_contructor_algo::run
static T * run()
Definition: overview-urdf.cpp:58
geometry.hpp
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
filename
filename
urdf.hpp
data.hpp
geometry.hpp
empty_contructor_algo
Definition: overview-urdf.cpp:56
run_call_equality_op
bool run_call_equality_op(const T &v1, const T &v2)
Definition: overview-urdf.cpp:50
spatial.hpp
pinocchio::serialization::loadFromStringStream
void loadFromStringStream(T &object, std::istringstream &is)
Loads an object from a std::stringstream.
Definition: archive.hpp:111
pinocchio::serialization::saveToStringStream
void saveToStringStream(const T &object, std::stringstream &ss)
Saves an object inside a std::stringstream.
Definition: archive.hpp:126
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:1117
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
pinocchio::serialization::loadFromBinary
void loadFromBinary(T &object, const std::string &filename)
Loads an object from a binary file.
Definition: archive.hpp:230
empty_contructor
T * empty_contructor()
Definition: overview-urdf.cpp:74
collisions.geom_data
geom_data
Definition: collisions.py:45
pinocchio::buildModels::humanoid
void humanoid(ModelTpl< Scalar, Options, JointCollectionTpl > &model, bool usingFF=true)
Create a 28-DOF kinematic chain of a floating humanoid robot.
hpp::fcl::BVHModel
pinocchio::SE3Tpl< context::Scalar, context::Options >::Identity
static SE3Tpl Identity()
Definition: spatial/se3-tpl.hpp:136
pinocchio::serialization::loadFromText
void loadFromText(T &object, const std::string &filename)
Loads an object from a TXT file.
Definition: archive.hpp:61
pinocchio::GeometryModel
Definition: multibody/geometry.hpp:50
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:375
pinocchio::GeometryObject::CollisionGeometryPtr
std::shared_ptr< fcl::CollisionGeometry > CollisionGeometryPtr
Definition: multibody/geometry-object.hpp:102
sample-models.hpp
casadi-quadrotor-ocp.path
path
Definition: casadi-quadrotor-ocp.py:10
generic_test
void generic_test(const T &object, const std::string &filename, const std::string &tag_name)
Definition: overview-urdf.cpp:80
pinocchio::ModelTpl
Definition: context/generic.hpp:20
joints.hpp
fwd.hpp
pinocchio::model
JointCollectionTpl & model
Definition: joint-configuration.hpp:1116
pinocchio
Main pinocchio namespace.
Definition: timings.cpp:27
BOOST_CHECK
#define BOOST_CHECK(check)
Definition: overview-urdf.cpp:34


pinocchio
Author(s):
autogenerated on Sat Jun 1 2024 02:40:37