sdf.cpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2015-2021 CNRS INRIA
3 //
4 
5 #include <iostream>
6 #include <fstream>
7 #include <streambuf>
8 
11 
12 #include <boost/test/unit_test.hpp>
13 
14 BOOST_AUTO_TEST_SUITE(BOOST_TEST_MODULE)
15 
17 {
18  const std::string filename =
20  + std::string("/example-robot-data/robots/cassie_description/robots/cassie.sdf");
21  const std::string dir = PINOCCHIO_MODEL_DIR;
22 
24  const std::string rootLinkName = "pelvis";
27  pinocchio::GeometryModel geomModel;
28  pinocchio::sdf::buildGeom(model, filename, pinocchio::COLLISION, geomModel, rootLinkName, dir);
29 
30  BOOST_CHECK(model.nq == 62);
31 }
32 
33 BOOST_AUTO_TEST_CASE(build_model_with_joint)
34 {
35 
36  const std::string filename =
38  + std::string("/example-robot-data/robots/cassie_description/robots/cassie.sdf");
39  const std::string dir = PINOCCHIO_MODEL_DIR;
40  const std::string rootLinkName = "pelvis";
45  pinocchio::GeometryModel geomModel;
46  pinocchio::sdf::buildGeom(model, filename, pinocchio::COLLISION, geomModel, rootLinkName, dir);
47 
48  BOOST_CHECK(model.nq == 69);
49 }
50 
51 BOOST_AUTO_TEST_CASE(build_model_without_rootLink)
52 {
53 
54  const std::string filename =
56  + std::string("/example-robot-data/robots/cassie_description/robots/cassie.sdf");
57  const std::string dir = PINOCCHIO_MODEL_DIR;
58  const std::string rootLinkName = "";
63  pinocchio::GeometryModel geomModel;
64  pinocchio::sdf::buildGeom(model, filename, pinocchio::COLLISION, geomModel, rootLinkName, dir);
65 
66  BOOST_CHECK(model.nq == 69);
67 }
68 
69 BOOST_AUTO_TEST_CASE(compare_model_with_urdf)
70 {
71  const std::string filename = PINOCCHIO_MODEL_DIR + std::string("/simple_humanoid.sdf");
72  const std::string dir = PINOCCHIO_MODEL_DIR;
73 
74  pinocchio::Model model_sdf;
75  const std::string rootLinkName = "WAIST_LINK0";
78  filename, pinocchio::JointModelFreeFlyer(), model_sdf, contact_models, rootLinkName);
79  pinocchio::GeometryModel geomModel;
81  model_sdf, filename, pinocchio::COLLISION, geomModel, rootLinkName, dir);
82 
83  const std::string filename_urdf = PINOCCHIO_MODEL_DIR + std::string("/simple_humanoid.urdf");
84  const std::string dir_urdf = PINOCCHIO_MODEL_DIR;
85  pinocchio::Model model_urdf;
86  pinocchio::urdf::buildModel(filename_urdf, pinocchio::JointModelFreeFlyer(), model_urdf);
87 
88  typedef typename pinocchio::Model::ConfigVectorMap ConfigVectorMap;
89  // Compare models
90  // BOOST_CHECK(model_urdf==model);
91 
92  BOOST_CHECK(model_urdf.nq == model_sdf.nq);
93  BOOST_CHECK(model_urdf.nv == model_sdf.nv);
94  BOOST_CHECK(model_urdf.njoints == model_sdf.njoints);
95  BOOST_CHECK(model_urdf.nbodies == model_sdf.nbodies);
96  BOOST_CHECK(model_urdf.nframes == model_sdf.nframes);
97  BOOST_CHECK(model_urdf.parents == model_sdf.parents);
98  BOOST_CHECK(model_urdf.children == model_sdf.children);
99  BOOST_CHECK(model_urdf.names == model_sdf.names);
100  BOOST_CHECK(model_urdf.subtrees == model_sdf.subtrees);
101  BOOST_CHECK(model_urdf.gravity == model_sdf.gravity);
102  BOOST_CHECK(model_urdf.name == model_sdf.name);
103  BOOST_CHECK(model_urdf.idx_qs == model_sdf.idx_qs);
104  BOOST_CHECK(model_urdf.nqs == model_sdf.nqs);
105  BOOST_CHECK(model_urdf.idx_vs == model_sdf.idx_vs);
106  BOOST_CHECK(model_urdf.nvs == model_sdf.nvs);
107  BOOST_CHECK(
108  model_urdf.referenceConfigurations.size() == model_sdf.referenceConfigurations.size());
109 
110  typename ConfigVectorMap::const_iterator it = model_sdf.referenceConfigurations.begin();
111  typename ConfigVectorMap::const_iterator it_model_urdf =
112  model_urdf.referenceConfigurations.begin();
113  for (long k = 0; k < (long)model_sdf.referenceConfigurations.size(); ++k)
114  {
115  std::advance(it, k);
116  std::advance(it_model_urdf, k);
117  BOOST_CHECK(it->second.size() == it_model_urdf->second.size());
118  BOOST_CHECK(it->second == it_model_urdf->second);
119  }
120  BOOST_CHECK(model_urdf.armature.size() == model_sdf.armature.size());
121 
122  BOOST_CHECK(model_urdf.armature == model_sdf.armature);
123  BOOST_CHECK(model_urdf.friction.size() == model_sdf.friction.size());
124  BOOST_CHECK(model_urdf.friction == model_sdf.friction);
125 
126  BOOST_CHECK(model_urdf.damping.size() == model_sdf.damping.size());
127 
128  BOOST_CHECK(model_urdf.damping == model_sdf.damping);
129 
130  BOOST_CHECK(model_urdf.rotorInertia.size() == model_sdf.rotorInertia.size());
131 
132  BOOST_CHECK(model_urdf.rotorInertia == model_sdf.rotorInertia);
133 
134  BOOST_CHECK(model_urdf.rotorGearRatio.size() == model_sdf.rotorGearRatio.size());
135 
136  BOOST_CHECK(model_urdf.rotorGearRatio == model_sdf.rotorGearRatio);
137 
138  BOOST_CHECK(model_urdf.effortLimit.size() == model_sdf.effortLimit.size());
139  BOOST_CHECK(model_urdf.effortLimit == model_sdf.effortLimit);
140 
141  BOOST_CHECK(model_urdf.velocityLimit.size() == model_sdf.velocityLimit.size());
142 
143  BOOST_CHECK(model_urdf.velocityLimit == model_sdf.velocityLimit);
144  BOOST_CHECK(model_urdf.lowerPositionLimit.size() == model_sdf.lowerPositionLimit.size());
145  BOOST_CHECK(model_urdf.lowerPositionLimit == model_sdf.lowerPositionLimit);
146 
147  BOOST_CHECK(model_urdf.upperPositionLimit.size() == model_sdf.upperPositionLimit.size());
148  BOOST_CHECK(model_urdf.upperPositionLimit == model_sdf.upperPositionLimit);
149 
150  for (size_t k = 1; k < model_sdf.inertias.size(); ++k)
151  {
152  BOOST_CHECK(model_urdf.inertias[k].isApprox(model_sdf.inertias[k]));
153  }
154 
155  for (size_t k = 1; k < model_urdf.jointPlacements.size(); ++k)
156  {
157  BOOST_CHECK(model_urdf.jointPlacements[k] == model_sdf.jointPlacements[k]);
158  }
159 
160  BOOST_CHECK(model_urdf.joints == model_sdf.joints);
161 
162  BOOST_CHECK(model_urdf.frames.size() == model_sdf.frames.size());
163  for (size_t k = 1; k < model_urdf.frames.size(); ++k)
164  {
165  BOOST_CHECK(model_urdf.frames[k] == model_sdf.frames[k]);
166  }
167 }
168 
169 BOOST_AUTO_TEST_CASE(compare_model_in_version_1_6)
170 {
171  // Read file as XML
172  std::string filestr("<sdf version=\"1.6\">"
173  " <model name=\"parallelogram\">"
174  " <link name=\"link_A1\">"
175  " <pose>0 0 0 0 0 0</pose>"
176  " <inertial>"
177  " <pose>0 0 0 0 0 0</pose>"
178  " <mass>10</mass>"
179  " <inertia>"
180  " <ixx>0.008416666667</ixx>"
181  " <iyy>0.841666666667</iyy>"
182  " <izz>0.833416666667</izz>"
183  " <ixy>0.</ixy>"
184  " <ixz>0.</ixz>"
185  " <iyz>0.</iyz>"
186  " </inertia>"
187  " </inertial>"
188  " <visual name=\"link_A1_visual\">"
189  " <geometry>"
190  " <cylinder>"
191  " <length>1.0</length>"
192  " <radius>0.05</radius>"
193  " </cylinder>"
194  " </geometry>"
195  " </visual>"
196  " </link>"
197  " <link name=\"link_B1\">"
198  " <pose>-0.2 0 0 0 0 0</pose>"
199  " <inertial>"
200  " <pose>0 0 0 0 0 0</pose>"
201  " <mass>5</mass>"
202  " <inertia>"
203  " <ixx>0.0042083333333</ixx>"
204  " <iyy>0.1541666666667</iyy>"
205  " <izz>0.1500416666667</izz>"
206  " <ixy>0</ixy>"
207  " <ixz>0</ixz>"
208  " <iyz>0</iyz>"
209  " </inertia>"
210  " </inertial>"
211  " <visual name=\"link_B1_visual\">"
212  " <geometry>"
213  " <cylinder>"
214  " <length>0.6</length>"
215  " <radius>0.05</radius>"
216  " </cylinder>"
217  " </geometry>"
218  " </visual>"
219  " </link>"
220  " <link name=\"link_A2\">"
221  " <pose>0.6 0 0 0 0 0</pose>"
222  " <inertial>"
223  " <pose>0 0 0 0 0 0</pose>"
224  " <mass>10</mass>"
225  " <inertia>"
226  " <ixx>0.008416666667</ixx>"
227  " <iyy>0.841666666667</iyy>"
228  " <izz>0.833416666667</izz>"
229  " <ixy>0.</ixy>"
230  " <ixz>0.</ixz>"
231  " <iyz>0.</iyz>"
232  " </inertia>"
233  " </inertial>"
234  " <visual name=\"link_A2_visual\">"
235  " <geometry>"
236  " <cylinder>"
237  " <length>1.0</length>"
238  " <radius>0.05</radius>"
239  " </cylinder>"
240  " </geometry>"
241  " </visual>"
242  " </link>"
243  " <link name=\"link_B2\">"
244  " <pose>0.8 0 0 0 0 0</pose>"
245  " <inertial>"
246  " <pose>0 0 0 0 0 0</pose>"
247  " <mass>5</mass>"
248  " <inertia>"
249  " <ixx>0.0042083333333</ixx>"
250  " <iyy>0.1541666666667</iyy>"
251  " <izz>0.1500416666667</izz>"
252  " <ixy>0</ixy>"
253  " <ixz>0</ixz>"
254  " <iyz>0</iyz>"
255  " </inertia>"
256  " </inertial>"
257  " <visual name=\"link_B2_visual\">"
258  " <geometry>"
259  " <cylinder>"
260  " <length>0.6</length>"
261  " <radius>0.05</radius>"
262  " </cylinder>"
263  " </geometry>"
264  " </visual>"
265  " </link>"
266  " <joint name=\"joint_B1\" type=\"revolute\">"
267  " <pose>-0.3 0 0 0 0 0</pose>"
268  " <child>link_B1</child>"
269  " <parent>link_A1</parent>"
270  " <axis>"
271  " <xyz>0 1 0</xyz>"
272  " <use_parent_model_frame>1</use_parent_model_frame>"
273  " </axis>"
274  " </joint>"
275  " <joint name=\"joint_A2\" type=\"revolute\">"
276  " <pose>-0.5 0 0 0 0 0</pose>"
277  " <child>link_A2</child>"
278  " <parent>link_B1</parent>"
279  " <axis>"
280  " <xyz>0 1 0</xyz>"
281  " <use_parent_model_frame>1</use_parent_model_frame>"
282  " </axis>"
283  " </joint>"
284  " <joint name=\"joint_B2\" type=\"revolute\">"
285  " <pose>-0.3 0 0 0 0 0</pose>"
286  " <child>link_B2</child>"
287  " <parent>link_A1</parent>"
288  " <axis>"
289  " <xyz>0 1 0</xyz>"
290  " <use_parent_model_frame>1</use_parent_model_frame>"
291  " </axis>"
292  " </joint>"
293  " <joint name=\"joint_B3\" type=\"revolute\">"
294  " <pose>0.5 0 0 0 0 0</pose>"
295  " <child>link_A2</child>"
296  " <parent>link_B2</parent>"
297  " <axis>"
298  " <xyz>0 1 0</xyz>"
299  " <use_parent_model_frame>1</use_parent_model_frame>"
300  " </axis>"
301  " </joint>"
302  " </model>"
303  "</sdf>");
304 
305  double height = 0.1;
306  double width = 0.01;
307 
308  double mass_link_A = 10.;
309  double length_link_A = 1.;
310 
311  double mass_link_B = 5.;
312  double length_link_B = .6;
313 
314  pinocchio::Inertia inertia_link_A_2 =
316 
318  placement_center_link_A.translation() = Eigen::Vector3d::UnitX() * length_link_A / 2.;
319 
320  pinocchio::SE3 placement_center_link_A_minus = pinocchio::SE3::Identity();
321  placement_center_link_A_minus.translation() = -Eigen::Vector3d::UnitX() * length_link_A / 2;
322 
324  placement_shape_A.rotation() = Eigen::Quaterniond::Quaternion::FromTwoVectors(
325  Eigen::Vector3d::UnitZ(), Eigen::Vector3d::UnitX())
326  .matrix();
327 
331  placement_center_link_B.translation() = Eigen::Vector3d::UnitX() * length_link_B / 2.;
333  placement_shape_B.rotation() =
334  Eigen::Quaterniond::FromTwoVectors(Eigen::Vector3d::UnitZ(), Eigen::Vector3d::UnitX()).matrix();
335 
338 
340  joint1_placement.translation() = -Eigen::Vector3d::UnitX() * length_link_A / 2;
344 
346  joint2_placement.translation() = Eigen::Vector3d::UnitX() * length_link_B;
348  model.addJoint(joint1_id, pinocchio::JointModelRY(), joint2_placement, "link_A2");
349  model.appendBodyToJoint(joint2_id, inertia_link_A_2, placement_center_link_A);
350 
352  joint3_placement.translation() = Eigen::Vector3d::UnitX() * length_link_A / 2;
356 
357  pinocchio::SE3 joint4_placement = pinocchio::SE3::Identity();
358  joint4_placement.translation() = Eigen::Vector3d::UnitX() * length_link_B;
359  pinocchio::JointIndex joint4_id =
360  model.addJoint(joint3_id, pinocchio::JointModelRY(), joint4_placement, "link_B3");
361  model.appendBodyToJoint(joint4_id, inertia_link_A_2, placement_center_link_A_minus);
362 
363  pinocchio::Model model_sdf;
366 
367  BOOST_CHECK(model.nq == model_sdf.nq);
368  BOOST_CHECK(model.nv == model_sdf.nv);
369  BOOST_CHECK(model.njoints == model_sdf.njoints);
370  BOOST_CHECK(model.nbodies == model_sdf.nbodies);
371 
372  BOOST_CHECK(model.parents == model_sdf.parents);
373 
374  BOOST_CHECK(model.children == model_sdf.children);
375  BOOST_CHECK(model.subtrees == model_sdf.subtrees);
376 
377  BOOST_CHECK(model.gravity == model_sdf.gravity);
378  BOOST_CHECK(model.idx_qs == model_sdf.idx_qs);
379 
380  BOOST_CHECK(model.nqs == model_sdf.nqs);
381  BOOST_CHECK(model.idx_vs == model_sdf.idx_vs);
382  BOOST_CHECK(model.nvs == model_sdf.nvs);
383 
384  for (std::size_t k = 1; k < model.jointPlacements.size(); k++)
385  {
386  BOOST_CHECK(model.jointPlacements[k].isApprox(model_sdf.jointPlacements[k]));
387  }
388 
389  for (std::size_t k = 1; k < model.inertias.size(); k++)
390  {
391  BOOST_CHECK(model.inertias[k].isApprox(model_sdf.inertias[k]));
392  }
393 
394  BOOST_CHECK(contact_models.size() == 1);
396  BOOST_CHECK(contact_models[0].joint1_placement == placement_center_link_A_minus);
400  BOOST_CHECK(contact_models[0].reference_frame == pinocchio::LOCAL);
401 }
402 
403 BOOST_AUTO_TEST_SUITE_END()
pinocchio::InertiaTpl< context::Scalar, context::Options >
simulation-closed-kinematic-chains.mass_link_B
float mass_link_B
Definition: simulation-closed-kinematic-chains.py:16
pinocchio::ModelTpl::names
std::vector< std::string > names
Name of the joints.
Definition: multibody/model.hpp:143
pinocchio::ModelTpl::frames
FrameVector frames
Vector of operational frames registered on the model.
Definition: multibody/model.hpp:177
simulation-closed-kinematic-chains.length_link_B
float length_link_B
Definition: simulation-closed-kinematic-chains.py:17
cassie-simulation.joint2_placement
joint2_placement
Definition: cassie-simulation.py:69
simulation-closed-kinematic-chains.length_link_A
float length_link_A
Definition: simulation-closed-kinematic-chains.py:13
pinocchio::sdf::buildModel
ModelTpl< Scalar, Options, JointCollectionTpl > & buildModel(const std::string &filename, const typename ModelTpl< Scalar, Options, JointCollectionTpl >::JointModel &rootJoint, ModelTpl< Scalar, Options, JointCollectionTpl > &model, PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(RigidConstraintModel) &contact_models, const std::string &rootLinkName="", const std::vector< std::string > &parentGuidance={}, const bool verbose=false)
Build the model from a SDF file with a particular joint as root of the model tree inside the model gi...
pinocchio::ModelTpl::jointPlacements
SE3Vector jointPlacements
Vector of joint placements: placement of a joint i wrt its parent joint frame.
Definition: multibody/model.hpp:117
pinocchio::ModelTpl::lowerPositionLimit
ConfigVectorType lowerPositionLimit
Lower joint configuration limit.
Definition: multibody/model.hpp:171
width
FCL_REAL width() const
pinocchio::SE3Tpl< context::Scalar, context::Options >
simulation-closed-kinematic-chains.inertia_link_B
inertia_link_B
Definition: simulation-closed-kinematic-chains.py:28
model.hpp
pinocchio::sdf::buildGeom
GeometryModel & buildGeom(const ModelTpl< Scalar, Options, JointCollectionTpl > &model, const std::string &filename, const GeometryType type, GeometryModel &geomModel, const std::string &rootLinkName="", const std::vector< std::string > &packageDirs=std::vector< std::string >(), ::hpp::fcl::MeshLoaderPtr meshLoader=::hpp::fcl::MeshLoaderPtr())
Build The GeometryModel from a SDF file. Search for meshes in the directories specified by the user f...
simulation-closed-kinematic-chains.placement_center_link_A
placement_center_link_A
Definition: simulation-closed-kinematic-chains.py:21
simulation-closed-kinematic-chains.joint1_placement
joint1_placement
Definition: simulation-closed-kinematic-chains.py:54
pinocchio::ModelTpl::joints
JointModelVector joints
Vector of joint models.
Definition: multibody/model.hpp:120
pinocchio::JointModelFreeFlyerTpl
Definition: multibody/joint/fwd.hpp:110
pinocchio::ModelTpl::name
std::string name
Model name.
Definition: multibody/model.hpp:198
pinocchio::CONTACT_6D
@ CONTACT_6D
Point contact model.
Definition: algorithm/contact-info.hpp:22
pinocchio::ModelTpl::rotorInertia
TangentVectorType rotorInertia
Vector of rotor inertia parameters.
Definition: multibody/model.hpp:153
height
FCL_REAL height() const
simulation-pendulum.type
type
Definition: simulation-pendulum.py:18
simulation-closed-kinematic-chains.mass_link_A
float mass_link_A
Definition: simulation-closed-kinematic-chains.py:12
anymal-simulation.model
model
Definition: anymal-simulation.py:12
pinocchio::ModelTpl::inertias
InertiaVector inertias
Vector of spatial inertias supported by each joint.
Definition: multibody/model.hpp:114
pinocchio::SE3Tpl::translation
ConstLinearRef translation() const
Definition: se3-base.hpp:52
pinocchio::ModelTpl::referenceConfigurations
ConfigVectorMap referenceConfigurations
Map of reference configurations, indexed by user given names.
Definition: multibody/model.hpp:146
pinocchio::ModelTpl::subtrees
std::vector< IndexVector > subtrees
Vector of joint subtrees. subtree[j] corresponds to the subtree supported by the joint j....
Definition: multibody/model.hpp:189
sdf.hpp
pinocchio::ModelTpl::nqs
std::vector< int > nqs
Vector of dimension of the joint configuration subspace.
Definition: multibody/model.hpp:126
pinocchio::ModelTpl::nvs
std::vector< int > nvs
Dimension of the *i*th joint tangent subspace.
Definition: multibody/model.hpp:132
pinocchio::RigidConstraintModelTpl
Definition: algorithm/constraints/fwd.hpp:14
pinocchio::ModelTpl::children
std::vector< IndexVector > children
Vector of children index. Chidren of the i*th joint, denoted *mu(i) corresponds to the set (i==parent...
Definition: multibody/model.hpp:140
pinocchio::urdf::buildModel
ModelTpl< Scalar, Options, JointCollectionTpl > & buildModel(const std::string &filename, const typename ModelTpl< Scalar, Options, JointCollectionTpl >::JointModel &rootJoint, ModelTpl< Scalar, Options, JointCollectionTpl > &model, const bool verbose=false)
Build the model from a URDF file with a particular joint as root of the model tree inside the model g...
pinocchio::ModelTpl::idx_qs
std::vector< int > idx_qs
Vector of starting index of the *i*th joint in the configuration space.
Definition: multibody/model.hpp:123
filename
filename
pinocchio::ModelTpl::rotorGearRatio
TangentVectorType rotorGearRatio
Vector of rotor gear ratio parameters.
Definition: multibody/model.hpp:156
pinocchio::ModelTpl::armature
VectorXs armature
Vector of armature values expressed at the joint level This vector may contain the contribution of ro...
Definition: multibody/model.hpp:150
pinocchio::ModelTpl::nframes
int nframes
Number of operational frames.
Definition: multibody/model.hpp:111
pinocchio::ModelTpl::velocityLimit
TangentVectorType velocityLimit
Vector of maximal joint velocities.
Definition: multibody/model.hpp:168
simulation-closed-kinematic-chains.placement_shape_B
placement_shape_B
Definition: simulation-closed-kinematic-chains.py:31
pinocchio::ModelTpl::nbodies
int nbodies
Number of bodies.
Definition: multibody/model.hpp:108
pinocchio::ModelTpl::friction
TangentVectorType friction
Vector of joint friction parameters.
Definition: multibody/model.hpp:159
PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR
#define PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(T)
Definition: container/aligned-vector.hpp:13
pinocchio::JointModelRevoluteTpl
Definition: multibody/joint/fwd.hpp:33
pinocchio::ModelTpl::gravity
Motion gravity
Spatial gravity of the model.
Definition: multibody/model.hpp:192
simulation-closed-kinematic-chains.joint1_id
joint1_id
Definition: simulation-closed-kinematic-chains.py:56
simulation-closed-kinematic-chains.placement_shape_A
placement_shape_A
Definition: simulation-closed-kinematic-chains.py:23
simulation-closed-kinematic-chains.joint2_id
joint2_id
Definition: simulation-closed-kinematic-chains.py:66
pinocchio::ModelTpl::damping
TangentVectorType damping
Vector of joint damping parameters.
Definition: multibody/model.hpp:162
pinocchio::ModelTpl::nv
int nv
Dimension of the velocity vector space.
Definition: multibody/model.hpp:102
pinocchio::ModelTpl::ConfigVectorMap
std::map< std::string, ConfigVectorType > ConfigVectorMap
Map between a string (key) and a configuration vector.
Definition: multibody/model.hpp:91
pinocchio::SE3Tpl< context::Scalar, context::Options >::Identity
static SE3Tpl Identity()
Definition: spatial/se3-tpl.hpp:136
pinocchio::JointIndex
Index JointIndex
Definition: multibody/fwd.hpp:26
simulation-closed-kinematic-chains.joint3_id
joint3_id
Definition: simulation-closed-kinematic-chains.py:74
pinocchio::ModelTpl::effortLimit
TangentVectorType effortLimit
Vector of maximal joint torques.
Definition: multibody/model.hpp:165
pinocchio::InertiaTpl< context::Scalar, context::Options >::FromBox
static InertiaTpl FromBox(const Scalar mass, const Scalar x, const Scalar y, const Scalar z)
Computes the Inertia of a box defined by its mass and main dimensions (x,y,z).
Definition: spatial/inertia.hpp:418
pinocchio::GeometryModel
Definition: multibody/geometry.hpp:50
pinocchio::ModelTpl::parents
std::vector< JointIndex > parents
Vector of parent joint indexes. The parent of joint i, denoted li, corresponds to li==parents[i].
Definition: multibody/model.hpp:136
contact-cholesky.contact_models
list contact_models
Definition: contact-cholesky.py:25
pinocchio::COLLISION
@ COLLISION
Definition: multibody/geometry-object.hpp:27
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(build_model)
Definition: sdf.cpp:16
simulation-closed-kinematic-chains.joint3_placement
joint3_placement
Definition: simulation-closed-kinematic-chains.py:72
pinocchio::ModelTpl::idx_vs
std::vector< int > idx_vs
Starting index of the *i*th joint in the tangent configuration space.
Definition: multibody/model.hpp:129
simulation-closed-kinematic-chains.placement_center_link_B
placement_center_link_B
Definition: simulation-closed-kinematic-chains.py:29
pinocchio::ModelTpl
Definition: context/generic.hpp:20
pinocchio::sdf::buildModelFromXML
ModelTpl< Scalar, Options, JointCollectionTpl > & buildModelFromXML(const std::string &xmlStream, const typename ModelTpl< Scalar, Options, JointCollectionTpl >::JointModel &rootJoint, ModelTpl< Scalar, Options, JointCollectionTpl > &model, PINOCCHIO_STD_VECTOR_WITH_EIGEN_ALLOCATOR(RigidConstraintModel) &contact_models, const std::string &rootLinkName="", const std::vector< std::string > &parentGuidance={}, const bool verbose=false)
Build the model from an XML stream with a particular joint as root of the model tree inside the model...
pinocchio::ModelTpl::upperPositionLimit
ConfigVectorType upperPositionLimit
Upper joint configuration limit.
Definition: multibody/model.hpp:174
pinocchio::ModelTpl::nq
int nq
Dimension of the configuration vector representation.
Definition: multibody/model.hpp:99
simulation-closed-kinematic-chains.base_joint_id
int base_joint_id
Definition: simulation-closed-kinematic-chains.py:42
pinocchio::ModelTpl::njoints
int njoints
Number of joints.
Definition: multibody/model.hpp:105
BOOST_CHECK
#define BOOST_CHECK(check)
Definition: overview-urdf.cpp:34
PINOCCHIO_MODEL_DIR
#define PINOCCHIO_MODEL_DIR
Definition: build-reduced-model.cpp:11
pinocchio::LOCAL
@ LOCAL
Definition: multibody/fwd.hpp:50


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