unittest/sample-models.cpp
Go to the documentation of this file.
1 //
2 // Copyright (c) 2015-2018 CNRS
3 //
4 
5 #include <iostream>
6 
14 
15 #include <boost/test/unit_test.hpp>
16 #include <boost/variant.hpp>
17 
18 // Helper functions to map reduced to full model
19 Eigen::VectorXd
20 toFull(const Eigen::VectorXd & vec, int mimPrim, int mimSec, double scaling, double offset)
21 {
22  Eigen::VectorXd vecFull(vec.size() + 1);
23  vecFull << vec.head(mimSec), scaling * vec[mimPrim] + offset, vec.tail(vec.size() - mimSec);
24  return vecFull;
25 }
26 
27 Eigen::MatrixXd create_G(const pinocchio::Model & model, const pinocchio::Model & modelMimic)
28 {
29  Eigen::MatrixXd G = Eigen::MatrixXd::Zero(model.nv, modelMimic.nv);
30  for (int i = 0; i < modelMimic.nv; ++i)
31  G(i, i) = 1;
32 
33  return G;
34 }
35 
36 BOOST_AUTO_TEST_SUITE(BOOST_TEST_MODULE)
37 
38 BOOST_AUTO_TEST_CASE(build_model_sample_humanoid_random)
39 {
42 
43  BOOST_CHECK(model.nq == 33);
44  BOOST_CHECK(model.nv == 32);
45 
46  pinocchio::Model modelff;
48 
49  BOOST_CHECK(modelff.nq == 32);
50  BOOST_CHECK(modelff.nv == 32);
51 
52  pinocchio::Model modelMimic;
53  pinocchio::buildModels::humanoidRandom(modelMimic, true, true);
54 
55  BOOST_CHECK(modelMimic.nq == 32);
56  BOOST_CHECK(modelMimic.nv == 31);
57 
58  pinocchio::Model modelMimicff;
59  pinocchio::buildModels::humanoidRandom(modelMimicff, false, true);
60 
61  BOOST_CHECK(modelMimicff.nq == 31);
62  BOOST_CHECK(modelMimicff.nv == 31);
63 }
64 
65 BOOST_AUTO_TEST_CASE(build_model_sample_manipulator)
66 {
69 
70  BOOST_CHECK(model.nq == 6);
71  BOOST_CHECK(model.nv == 6);
72 
73  pinocchio::Model model_m;
75 
76  BOOST_CHECK(model_m.nq == 5);
77  BOOST_CHECK(model_m.nv == 5);
78 
79 #ifdef PINOCCHIO_WITH_HPP_FCL
82  pinocchio::buildModels::manipulatorGeometries(model, geom);
83 #endif
84 }
85 
86 BOOST_AUTO_TEST_CASE(build_model_sample_humanoid)
87 {
91 
92  BOOST_CHECK(model.nq == 35);
93  BOOST_CHECK(model.nv == 34);
94 
95 #ifdef PINOCCHIO_WITH_HPP_FCL
97  pinocchio::buildModels::humanoidGeometries(model, geom);
98  pinocchio::GeometryData geomdata(geom);
99 
100  Eigen::VectorXd q = pinocchio::neutral(model);
102  pinocchio::updateGeometryPlacements(model, data, geom, geomdata, q);
103 #endif
104 
105  /* We might want to check here the joint namings, and validate the
106  * direct geometry with respect to reference values. */
107 }
108 
109 BOOST_AUTO_TEST_SUITE_END()
pinocchio::buildModels::manipulator
void manipulator(ModelTpl< Scalar, Options, JointCollectionTpl > &model, const bool mimic=false)
Create a 6-DOF kinematic chain shoulder-elbow-wrist.
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.
inverse-kinematics.i
int i
Definition: inverse-kinematics.py:17
kinematics.hpp
model.hpp
setup.data
data
Definition: cmake/cython/setup.in.py:48
vec
vec
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.
rnea.hpp
anymal-simulation.model
model
Definition: anymal-simulation.py:8
joint-configuration.hpp
geometry.hpp
q
q
toFull
Eigen::VectorXd toFull(const Eigen::VectorXd &vec, int mimPrim, int mimSec, double scaling, double offset)
Definition: unittest/sample-models.cpp:20
pinocchio::buildModels::humanoid
void humanoid(ModelTpl< Scalar, Options, JointCollectionTpl > &model, bool usingFF=true)
Create a 28-DOF kinematic chain of a floating humanoid robot.
mimic_dynamics.G
G
Definition: mimic_dynamics.py:27
pinocchio::ModelTpl::nv
int nv
Dimension of the velocity vector space.
Definition: multibody/model.hpp:101
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(build_model_sample_humanoid_random)
Definition: unittest/sample-models.cpp:38
pinocchio::GeometryModel
Definition: multibody/geometry.hpp:54
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
sample-models.hpp
pinocchio::ModelTpl< context::Scalar, context::Options >
crba.hpp
pinocchio::ModelTpl::nq
int nq
Dimension of the configuration vector representation.
Definition: multibody/model.hpp:98
create_G
Eigen::MatrixXd create_G(const pinocchio::Model &model, const pinocchio::Model &modelMimic)
Definition: unittest/sample-models.cpp:27


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