GCC Code Coverage Report


Directory: ./
File: include/pinocchio/multibody/sample-models.hxx
Date: 2025-02-12 21:03:38
Exec Total Coverage
Lines: 210 211 99.5%
Branches: 535 1080 49.5%

Line Branch Exec Source
1 //
2 // Copyright (c) 2015-2020 CNRS INRIA
3 // Copyright (c) 2015 Wandercraft, 86 rue de Paris 91400 Orsay, France.
4 //
5
6 #ifndef __pinocchio_multibody_sample_models_hxx__
7 #define __pinocchio_multibody_sample_models_hxx__
8
9 namespace pinocchio
10 {
11 namespace buildModels
12 {
13 namespace details
14 {
15 template<
16 typename Scalar,
17 int Options,
18 template<typename, int> class JointCollectionTpl,
19 typename JointModel>
20 21780 static JointIndex addJointAndBody(
21 ModelTpl<Scalar, Options, JointCollectionTpl> & model,
22 const JointModelBase<JointModel> & joint,
23 const std::string & parent_name,
24 const std::string & name,
25 const typename ModelTpl<Scalar, Options, JointCollectionTpl>::SE3 & placement =
26 ModelTpl<Scalar, Options, JointCollectionTpl>::SE3::Random(),
27 bool setRandomLimits = true)
28 {
29 typedef typename JointModel::ConfigVector_t CV;
30 typedef typename JointModel::TangentVector_t TV;
31
32
6/12
✓ Branch 1 taken 10890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10890 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10890 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10890 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10890 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10890 times.
✗ Branch 17 not taken.
21780 CV qmin = CV::Constant(joint.nq(), -3.14), qmax = CV::Constant(joint.nq(), 3.14);
33
6/12
✓ Branch 1 taken 10890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10890 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10890 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10890 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10890 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10890 times.
✗ Branch 17 not taken.
21780 TV vmax = TV::Constant(joint.nv(), 10), taumax = TV::Constant(joint.nv(), 10);
34
35 JointIndex idx;
36
37
1/2
✓ Branch 0 taken 10890 times.
✗ Branch 1 not taken.
21780 if (setRandomLimits)
38
12/24
✓ Branch 1 taken 10890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10890 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10890 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10890 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 10890 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10890 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10890 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 10890 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 10890 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 10890 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 10890 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 10890 times.
✗ Branch 35 not taken.
87120 idx = model.addJoint(
39 model.getJointId(parent_name), joint, placement, name + "_joint",
40
4/8
✓ Branch 1 taken 10890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10890 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10890 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10890 times.
✗ Branch 11 not taken.
21780 TV::Random(joint.nv(), 1) + TV::Constant(joint.nv(), 1, 1), // effort
41
4/8
✓ Branch 1 taken 10890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10890 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10890 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10890 times.
✗ Branch 11 not taken.
21780 TV::Random(joint.nv(), 1) + TV::Constant(joint.nv(), 1, 1), // vel
42
4/8
✓ Branch 1 taken 10890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10890 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10890 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10890 times.
✗ Branch 11 not taken.
21780 CV::Random(joint.nq(), 1) - CV::Constant(joint.nq(), 1, 1), // qmin
43
4/8
✓ Branch 1 taken 10890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10890 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10890 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 10890 times.
✗ Branch 11 not taken.
21780 CV::Random(joint.nq(), 1) + CV::Constant(joint.nq(), 1, 1) // qmax
44 );
45 else
46 idx = model.addJoint(
47 model.getJointId(parent_name), joint, placement, name + "_joint", taumax, vmax, qmin,
48 qmax);
49
50
1/2
✓ Branch 1 taken 10890 times.
✗ Branch 2 not taken.
21780 model.addJointFrame(idx);
51
52
3/6
✓ Branch 1 taken 10890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10890 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10890 times.
✗ Branch 8 not taken.
21780 model.appendBodyToJoint(idx, Inertia::Random(), SE3::Identity());
53
3/6
✓ Branch 1 taken 10890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10890 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10890 times.
✗ Branch 8 not taken.
21780 model.addBodyFrame(name + "_body", idx);
54 21780 return idx;
55 }
56
57 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
58 186 static void addManipulator(
59 ModelTpl<Scalar, Options, JointCollectionTpl> & model,
60 typename ModelTpl<Scalar, Options, JointCollectionTpl>::JointIndex root_joint_idx = 0,
61 const typename ModelTpl<Scalar, Options, JointCollectionTpl>::SE3 & Mroot =
62 ModelTpl<Scalar, Options, JointCollectionTpl>::SE3::Identity(),
63 const std::string & pre = "")
64 {
65 typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model;
66 typedef typename Model::JointIndex JointIndex;
67 typedef typename Model::SE3 SE3;
68 typedef typename Model::Inertia Inertia;
69
70 typedef JointCollectionTpl<Scalar, Options> JC;
71
6/12
✓ Branch 0 taken 18 times.
✓ Branch 1 taken 168 times.
✓ Branch 3 taken 18 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 18 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 18 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
186 static const SE3 Marm(SE3::Matrix3::Identity(), SE3::Vector3::UnitZ());
72
4/8
✓ Branch 0 taken 18 times.
✓ Branch 1 taken 168 times.
✓ Branch 3 taken 18 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
186 static const SE3 Id4 = SE3::Identity();
73
7/14
✓ Branch 0 taken 18 times.
✓ Branch 1 taken 168 times.
✓ Branch 3 taken 18 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 18 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 18 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 18 times.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
222 static const Inertia Ijoint(
74
2/4
✓ Branch 1 taken 18 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
54 .1, Inertia::Vector3::Zero(), Inertia::Matrix3::Identity() * .01);
75
5/10
✓ Branch 0 taken 18 times.
✓ Branch 1 taken 168 times.
✓ Branch 3 taken 18 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 18 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 18 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
204 static const Inertia Iarm(
76
2/4
✓ Branch 1 taken 18 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 18 times.
✗ Branch 5 not taken.
36 1., typename Inertia::Vector3(0, 0, .5), Inertia::Matrix3::Identity());
77 static const Scalar qmin = -3.14, qmax = 3.14;
78 static const Scalar vmax = 10., taumax = 10.;
79
80 JointIndex joint_id;
81
82 186 const std::string & root_joint_name = model.names[root_joint_idx];
83
2/4
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
372 joint_id = addJointAndBody(
84
1/2
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
372 model, typename JC::JointModelRX(), root_joint_name, pre + "shoulder1", Mroot);
85
1/2
✓ Branch 2 taken 186 times.
✗ Branch 3 not taken.
186 model.inertias[joint_id] = Ijoint;
86 186 const JointIndex root_joint_id = joint_id;
87
88
2/4
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
372 joint_id = addJointAndBody(
89
1/2
✓ Branch 2 taken 186 times.
✗ Branch 3 not taken.
372 model, typename JC::JointModelRY(), model.names[joint_id], pre + "shoulder2", Id4);
90
1/2
✓ Branch 2 taken 186 times.
✗ Branch 3 not taken.
186 model.inertias[joint_id] = Ijoint;
91
92
2/4
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
372 joint_id = addJointAndBody(
93
1/2
✓ Branch 2 taken 186 times.
✗ Branch 3 not taken.
372 model, typename JC::JointModelRZ(), model.names[joint_id], pre + "shoulder3", Id4);
94
1/2
✓ Branch 2 taken 186 times.
✗ Branch 3 not taken.
186 model.inertias[joint_id] = Iarm;
95
3/6
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 186 times.
✗ Branch 8 not taken.
186 model.addBodyFrame(pre + "upperarm_body", joint_id);
96
97
2/4
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
372 joint_id = addJointAndBody(
98
1/2
✓ Branch 2 taken 186 times.
✗ Branch 3 not taken.
372 model, typename JC::JointModelRY(), model.names[joint_id], pre + "elbow", Marm);
99
1/2
✓ Branch 2 taken 186 times.
✗ Branch 3 not taken.
186 model.inertias[joint_id] = Iarm;
100
3/6
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 186 times.
✗ Branch 8 not taken.
186 model.addBodyFrame(pre + "lowerarm_body", joint_id);
101
3/6
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 186 times.
✗ Branch 8 not taken.
186 model.addBodyFrame(pre + "elbow_body", joint_id);
102
103
2/4
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
372 joint_id = addJointAndBody(
104
1/2
✓ Branch 2 taken 186 times.
✗ Branch 3 not taken.
372 model, typename JC::JointModelRX(), model.names[joint_id], pre + "wrist1", Marm);
105
1/2
✓ Branch 2 taken 186 times.
✗ Branch 3 not taken.
186 model.inertias[joint_id] = Ijoint;
106
107
2/4
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
372 joint_id = addJointAndBody(
108
1/2
✓ Branch 2 taken 186 times.
✗ Branch 3 not taken.
372 model, typename JC::JointModelRY(), model.names[joint_id], pre + "wrist2", Id4);
109
1/2
✓ Branch 2 taken 186 times.
✗ Branch 3 not taken.
186 model.inertias[joint_id] = Iarm;
110
3/6
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 186 times.
✗ Branch 8 not taken.
186 model.addBodyFrame(pre + "effector_body", joint_id);
111
112 186 const JointModel & base_joint = model.joints[root_joint_id];
113
1/2
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
186 const int idx_q = base_joint.idx_q();
114
1/2
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
186 const int idx_v = base_joint.idx_v();
115
116
2/4
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
186 model.lowerPositionLimit.template segment<6>(idx_q).fill(qmin);
117
2/4
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
186 model.upperPositionLimit.template segment<6>(idx_q).fill(qmax);
118
2/4
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
186 model.velocityLimit.template segment<6>(idx_v).fill(vmax);
119
2/4
✓ Branch 1 taken 186 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 186 times.
✗ Branch 5 not taken.
186 model.effortLimit.template segment<6>(idx_v).fill(taumax);
120 186 }
121
122 #ifdef PINOCCHIO_WITH_HPP_FCL
123 /* Add a 6DOF manipulator shoulder-elbow-wrist geometries to an existing model.
124 * <model> is the the kinematic chain, constant.
125 * <geom> is the geometry model where the new geoms are added.
126 * <pre> is the prefix (string) before every name in the model.
127 */
128 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
129 59 static void addManipulatorGeometries(
130 const ModelTpl<Scalar, Options, JointCollectionTpl> & model,
131 GeometryModel & geom,
132 const std::string & pre = "")
133 {
134 typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model;
135 typedef typename Model::FrameIndex FrameIndex;
136 typedef typename Model::SE3 SE3;
137
138
1/2
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
59 const Eigen::Vector4d meshColor(1., 1., 0.78, 1.0);
139
140 FrameIndex parentFrame;
141
142
2/4
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
59 parentFrame = model.getBodyId(pre + "shoulder1_body");
143
7/14
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 59 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 59 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 59 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 59 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 59 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 59 times.
✗ Branch 23 not taken.
295 GeometryObject shoulderBall(
144
1/2
✓ Branch 2 taken 59 times.
✗ Branch 3 not taken.
59 pre + "shoulder_object", model.frames[parentFrame].parentJoint, parentFrame,
145
3/6
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 59 times.
✗ Branch 8 not taken.
118 SE3::Identity(), std::shared_ptr<fcl::Sphere>(new fcl::Sphere(0.05)), "SPHERE",
146 Eigen::Vector3d::Ones(), false, meshColor);
147
1/2
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
59 geom.addGeometryObject(shoulderBall);
148
149
2/4
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
59 parentFrame = model.getBodyId(pre + "elbow_body");
150
7/14
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 59 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 59 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 59 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 59 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 59 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 59 times.
✗ Branch 23 not taken.
295 GeometryObject elbowBall(
151
1/2
✓ Branch 2 taken 59 times.
✗ Branch 3 not taken.
59 pre + "elbow_object", model.frames[parentFrame].parentJoint, parentFrame, SE3::Identity(),
152
3/6
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 59 times.
✗ Branch 8 not taken.
118 std::shared_ptr<fcl::Sphere>(new fcl::Sphere(0.05)), "SPHERE", Eigen::Vector3d::Ones(),
153 false, meshColor);
154
1/2
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
59 geom.addGeometryObject(elbowBall);
155
156
2/4
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
59 parentFrame = model.getBodyId(pre + "wrist1_body");
157
7/14
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 59 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 59 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 59 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 59 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 59 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 59 times.
✗ Branch 23 not taken.
295 GeometryObject wristBall(
158
1/2
✓ Branch 2 taken 59 times.
✗ Branch 3 not taken.
59 pre + "wrist_object", model.frames[parentFrame].parentJoint, parentFrame, SE3::Identity(),
159
3/6
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 59 times.
✗ Branch 8 not taken.
118 std::shared_ptr<fcl::Sphere>(new fcl::Sphere(0.05)), "SPHERE", Eigen::Vector3d::Ones(),
160 false, meshColor);
161
1/2
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
59 geom.addGeometryObject(wristBall);
162
163
2/4
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
59 parentFrame = model.getBodyId(pre + "upperarm_body");
164
6/12
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 59 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 59 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 59 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 59 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 59 times.
✗ Branch 20 not taken.
295 GeometryObject upperArm(
165
1/2
✓ Branch 2 taken 59 times.
✗ Branch 3 not taken.
59 pre + "upperarm_object", model.frames[parentFrame].parentJoint, parentFrame,
166
3/6
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 59 times.
✗ Branch 8 not taken.
118 SE3(SE3::Matrix3::Identity(), typename SE3::Vector3(0, 0, 0.5)),
167
3/6
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 59 times.
✗ Branch 8 not taken.
118 std::shared_ptr<fcl::Capsule>(new fcl::Capsule(0.05, .8)), "CAPSULE",
168 Eigen::Vector3d::Ones(), false, meshColor);
169
1/2
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
59 geom.addGeometryObject(upperArm);
170
171
2/4
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
59 parentFrame = model.getBodyId(pre + "lowerarm_body");
172
6/12
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 59 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 59 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 59 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 59 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 59 times.
✗ Branch 20 not taken.
295 GeometryObject lowerArm(
173
1/2
✓ Branch 2 taken 59 times.
✗ Branch 3 not taken.
59 pre + "lowerarm_object", model.frames[parentFrame].parentJoint, parentFrame,
174
3/6
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 59 times.
✗ Branch 8 not taken.
118 SE3(SE3::Matrix3::Identity(), typename SE3::Vector3(0, 0, 0.5)),
175
3/6
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 59 times.
✗ Branch 8 not taken.
118 std::shared_ptr<fcl::Capsule>(new fcl::Capsule(0.05, .8)), "CAPSULE",
176 Eigen::Vector3d::Ones(), false, meshColor);
177
1/2
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
59 geom.addGeometryObject(lowerArm);
178
179
2/4
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
59 parentFrame = model.getBodyId(pre + "effector_body");
180
6/12
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 59 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 59 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 59 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 59 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 59 times.
✗ Branch 20 not taken.
295 GeometryObject effectorArm(
181
1/2
✓ Branch 2 taken 59 times.
✗ Branch 3 not taken.
59 pre + "effector_object", model.frames[parentFrame].parentJoint, parentFrame,
182
3/6
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 59 times.
✗ Branch 8 not taken.
118 SE3(SE3::Matrix3::Identity(), typename SE3::Vector3(0, 0, 0.1)),
183
3/6
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 59 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 59 times.
✗ Branch 8 not taken.
118 std::shared_ptr<fcl::Capsule>(new fcl::Capsule(0.05, .2)), "CAPSULE",
184 Eigen::Vector3d::Ones(), false, meshColor);
185
1/2
✓ Branch 1 taken 59 times.
✗ Branch 2 not taken.
59 geom.addGeometryObject(effectorArm);
186 59 }
187 #endif
188
189 template<typename Vector3Like>
190 static typename Eigen::AngleAxis<typename Vector3Like::Scalar>::Matrix3
191 258 rotate(const typename Vector3Like::Scalar angle, const Eigen::MatrixBase<Vector3Like> & axis)
192 {
193 typedef typename Vector3Like::Scalar Scalar;
194 typedef Eigen::AngleAxis<Scalar> AngleAxis;
195
196
1/2
✓ Branch 2 taken 258 times.
✗ Branch 3 not taken.
516 return AngleAxis(angle, axis).toRotationMatrix();
197 }
198
199 } // namespace details
200
201 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
202 14 void manipulator(ModelTpl<Scalar, Options, JointCollectionTpl> & model)
203 {
204
3/6
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 14 times.
✗ Branch 9 not taken.
14 details::addManipulator(model);
205 14 }
206
207 #ifdef PINOCCHIO_WITH_HPP_FCL
208 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
209 3 void manipulatorGeometries(
210 const ModelTpl<Scalar, Options, JointCollectionTpl> & model, GeometryModel & geom)
211 {
212
2/4
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
3 details::addManipulatorGeometries(model, geom);
213 3 }
214 #endif
215
216 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
217 362 void humanoidRandom(ModelTpl<Scalar, Options, JointCollectionTpl> & model, bool usingFF)
218 {
219 typedef JointCollectionTpl<Scalar, Options> JC;
220 typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model;
221 typedef typename Model::SE3 SE3;
222 using details::addJointAndBody;
223
4/8
✓ Branch 0 taken 67 times.
✓ Branch 1 taken 295 times.
✓ Branch 3 taken 67 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 67 times.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
362 static const SE3 Id = SE3::Identity();
224
225 // root
226
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 360 times.
362 if (!usingFF)
227 {
228
3/6
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
2 typename JC::JointModelComposite jff((typename JC::JointModelTranslation()));
229
3/6
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
2 jff.addJoint(typename JC::JointModelSphericalZYX());
230
3/6
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
2 addJointAndBody(model, jff, "universe", "root", Id);
231 2 }
232 else
233 {
234
4/8
✓ Branch 2 taken 360 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 360 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 360 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 360 times.
✗ Branch 13 not taken.
360 addJointAndBody(model, typename JC::JointModelFreeFlyer(), "universe", "root", Id);
235
1/2
✓ Branch 2 taken 360 times.
✗ Branch 3 not taken.
360 model.lowerPositionLimit.template segment<4>(3).fill(-1.);
236
1/2
✓ Branch 2 taken 360 times.
✗ Branch 3 not taken.
360 model.upperPositionLimit.template segment<4>(3).fill(1.);
237 }
238
239 // lleg
240
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRX(), "root_joint", "lleg1");
241
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "lleg1_joint", "lleg2");
242
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRZ(), "lleg2_joint", "lleg3");
243
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "lleg3_joint", "lleg4");
244
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "lleg4_joint", "lleg5");
245
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRX(), "lleg5_joint", "lleg6");
246
247 // rleg
248
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRX(), "root_joint", "rleg1");
249
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "rleg1_joint", "rleg2");
250
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRZ(), "rleg2_joint", "rleg3");
251
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "rleg3_joint", "rleg4");
252
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "rleg4_joint", "rleg5");
253
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRX(), "rleg5_joint", "rleg6");
254
255 // trunc
256
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "root_joint", "torso1");
257
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRZ(), "torso1_joint", "chest");
258
259 // rarm
260
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRX(), "chest_joint", "rarm1");
261
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "rarm1_joint", "rarm2");
262
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRZ(), "rarm2_joint", "rarm3");
263
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "rarm3_joint", "rarm4");
264
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "rarm4_joint", "rarm5");
265
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRX(), "rarm5_joint", "rarm6");
266
267 // larm
268
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRX(), "chest_joint", "larm1");
269
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "larm1_joint", "larm2");
270
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRZ(), "larm2_joint", "larm3");
271
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "larm3_joint", "larm4");
272
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRY(), "larm4_joint", "larm5");
273
4/8
✓ Branch 3 taken 362 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 362 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 362 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 362 times.
✗ Branch 14 not taken.
362 addJointAndBody(model, typename JC::JointModelRX(), "larm5_joint", "larm6");
274 362 }
275
276 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
277 43 void humanoid(ModelTpl<Scalar, Options, JointCollectionTpl> & model, bool usingFF)
278 {
279 typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model;
280 typedef JointCollectionTpl<Scalar, Options> JC;
281 typedef typename Model::SE3 SE3;
282 typedef typename Model::Inertia Inertia;
283
284 typedef typename JC::JointModelRX::ConfigVector_t CV;
285 typedef typename JC::JointModelRX::TangentVector_t TV;
286
287 typename Model::JointIndex idx, chest, ffidx;
288
289
3/4
✓ Branch 0 taken 9 times.
✓ Branch 1 taken 34 times.
✓ Branch 3 taken 9 times.
✗ Branch 4 not taken.
43 static const Scalar pi = PI<Scalar>();
290
291
3/6
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
43 SE3 Marm(SE3::Matrix3::Identity(), SE3::Vector3::UnitZ());
292
1/2
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
43 SE3 I4 = SE3::Identity();
293
6/12
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 43 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 43 times.
✗ Branch 17 not taken.
43 Inertia Ijoint(.1, Inertia::Vector3::Zero(), Inertia::Matrix3::Identity() * .01);
294
4/8
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
43 Inertia Iarm(1., typename Inertia::Vector3(0, 0, .5), Inertia::Matrix3::Identity());
295
4/8
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
43 CV qmin = CV::Constant(-3.14), qmax = CV::Constant(3.14);
296
4/8
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
43 TV vmax = TV::Constant(10), taumax = TV::Constant(10);
297
298 /* --- Free flyer --- */
299
2/2
✓ Branch 0 taken 42 times.
✓ Branch 1 taken 1 times.
43 if (usingFF)
300 {
301 42 ffidx =
302
5/10
✓ Branch 2 taken 42 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 42 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 42 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 42 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 42 times.
✗ Branch 15 not taken.
42 model.addJoint(0, typename JC::JointModelFreeFlyer(), SE3::Identity(), "root_joint");
303
2/4
✓ Branch 1 taken 42 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 42 times.
✗ Branch 5 not taken.
42 model.lowerPositionLimit.template segment<4>(3).fill(-1.);
304
2/4
✓ Branch 1 taken 42 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 42 times.
✗ Branch 5 not taken.
42 model.upperPositionLimit.template segment<4>(3).fill(1.);
305 }
306 else
307 {
308
3/6
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
1 typename JC::JointModelComposite jff((typename JC::JointModelTranslation()));
309
3/6
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
1 jff.addJoint(typename JC::JointModelSphericalZYX());
310
4/8
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
1 ffidx = model.addJoint(0, jff, SE3::Identity(), "root_joint");
311 1 }
312
2/4
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
43 model.appendBodyToJoint(ffidx, Ijoint);
313
1/2
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
43 model.addJointFrame(ffidx);
314
315 /* --- Lower limbs --- */
316
317
2/4
✓ Branch 2 taken 43 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 43 times.
✗ Branch 6 not taken.
129 details::addManipulator(
318 model, ffidx,
319
4/8
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
86 SE3(details::rotate(pi, SE3::Vector3::UnitX()), typename SE3::Vector3(0, -0.2, -.1)),
320 "rleg_");
321
2/4
✓ Branch 2 taken 43 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 43 times.
✗ Branch 6 not taken.
129 details::addManipulator(
322 model, ffidx,
323
4/8
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
86 SE3(details::rotate(pi, SE3::Vector3::UnitX()), typename SE3::Vector3(0, 0.2, -.1)),
324 "lleg_");
325
326
2/4
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 43 times.
✗ Branch 6 not taken.
86 model.jointPlacements[7].rotation() =
327
1/2
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
43 details::rotate(pi / 2, SE3::Vector3::UnitY()); // rotate right foot
328
2/4
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 43 times.
✗ Branch 6 not taken.
86 model.jointPlacements[13].rotation() =
329
1/2
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
43 details::rotate(pi / 2, SE3::Vector3::UnitY()); // rotate left foot
330
331 /* --- Chest --- */
332
7/14
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 43 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 43 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 43 times.
✗ Branch 21 not taken.
129 idx = model.addJoint(
333
1/2
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
86 ffidx, typename JC::JointModelRX(), I4, "chest1_joint", taumax, vmax, qmin, qmax);
334
2/4
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
43 model.appendBodyToJoint(idx, Ijoint);
335
1/2
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
43 model.addJointFrame(idx);
336
3/6
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 43 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 43 times.
✗ Branch 9 not taken.
43 model.addBodyFrame("chest1_body", idx);
337
338
7/14
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 43 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 43 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 43 times.
✗ Branch 21 not taken.
129 idx = model.addJoint(
339
1/2
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
86 idx, typename JC::JointModelRY(), I4, "chest2_joint", taumax, vmax, qmin, qmax);
340
2/4
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
43 model.appendBodyToJoint(idx, Iarm);
341
1/2
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
43 model.addJointFrame(idx);
342
3/6
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 43 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 43 times.
✗ Branch 9 not taken.
43 model.addBodyFrame("chest2_body", idx);
343
344 43 chest = idx;
345
346 /* --- Head --- */
347
7/14
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 43 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 43 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 43 times.
✗ Branch 21 not taken.
129 idx = model.addJoint(
348
4/8
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
86 idx, typename JC::JointModelRX(), SE3(SE3::Matrix3::Identity(), SE3::Vector3::UnitZ()),
349 "head1_joint", taumax, vmax, qmin, qmax);
350
2/4
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
43 model.appendBodyToJoint(idx, Ijoint);
351
1/2
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
43 model.addJointFrame(idx);
352
3/6
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 43 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 43 times.
✗ Branch 9 not taken.
43 model.addBodyFrame("head1_body", idx);
353
354
7/14
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 43 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 43 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 43 times.
✗ Branch 21 not taken.
129 idx = model.addJoint(
355
1/2
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
86 idx, typename JC::JointModelRY(), I4, "head2_joint", taumax, vmax, qmin, qmax);
356
2/4
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
43 model.appendBodyToJoint(idx, Iarm);
357
1/2
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
43 model.addJointFrame(idx);
358
3/6
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 43 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 43 times.
✗ Branch 9 not taken.
43 model.addBodyFrame("head2_body", idx);
359
360 /* --- Upper Limbs --- */
361
2/4
✓ Branch 2 taken 43 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 43 times.
✗ Branch 6 not taken.
129 details::addManipulator(
362 model, chest,
363
4/8
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
86 SE3(details::rotate(pi, SE3::Vector3::UnitX()), typename SE3::Vector3(0, -0.3, 1.)),
364 "rarm_");
365
2/4
✓ Branch 2 taken 43 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 43 times.
✗ Branch 6 not taken.
129 details::addManipulator(
366 model, chest,
367
4/8
✓ Branch 1 taken 43 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 43 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
86 SE3(details::rotate(pi, SE3::Vector3::UnitX()), typename SE3::Vector3(0, 0.3, 1.)),
368 "larm_");
369 43 }
370
371 #ifdef PINOCCHIO_WITH_HPP_FCL
372 template<typename Scalar, int Options, template<typename, int> class JointCollectionTpl>
373 14 void humanoidGeometries(
374 const ModelTpl<Scalar, Options, JointCollectionTpl> & model, GeometryModel & geom)
375 {
376 typedef ModelTpl<Scalar, Options, JointCollectionTpl> Model;
377 typedef typename Model::FrameIndex FrameIndex;
378 typedef typename Model::SE3 SE3;
379
380
2/4
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
14 details::addManipulatorGeometries(model, geom, "rleg_");
381
2/4
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
14 details::addManipulatorGeometries(model, geom, "lleg_");
382
2/4
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
14 details::addManipulatorGeometries(model, geom, "rarm_");
383
2/4
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
14 details::addManipulatorGeometries(model, geom, "larm_");
384
385 FrameIndex parentFrame;
386
387
1/2
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
14 const Eigen::Vector4d meshColor(1., 1., 0.78, 1.0);
388
389
2/4
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
14 parentFrame = model.getBodyId("chest1_body");
390
8/16
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 14 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 14 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 14 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 14 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 14 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 14 times.
✗ Branch 26 not taken.
70 GeometryObject chestBall(
391 14 "chest_object", model.frames[parentFrame].parentJoint, parentFrame, SE3::Identity(),
392
3/6
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
28 std::shared_ptr<fcl::Sphere>(new fcl::Sphere(0.05)), "SPHERE", Eigen::Vector3d::Ones(),
393 false, meshColor);
394
1/2
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
14 geom.addGeometryObject(chestBall);
395
396
2/4
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
14 parentFrame = model.getBodyId("head2_body");
397
7/14
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 14 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 14 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 14 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 14 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 14 times.
✗ Branch 23 not taken.
84 GeometryObject headBall(
398 14 "head_object", model.frames[parentFrame].parentJoint, parentFrame,
399
3/6
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
28 SE3(SE3::Matrix3::Identity(), typename SE3::Vector3(0, 0, 0.5)),
400
3/6
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
28 std::shared_ptr<fcl::Sphere>(new fcl::Sphere(0.25)), "SPHERE", Eigen::Vector3d::Ones(),
401 false, meshColor);
402
1/2
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
14 geom.addGeometryObject(headBall);
403
404
2/4
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
14 parentFrame = model.getBodyId("chest2_body");
405
7/14
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 14 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 14 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 14 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 14 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 14 times.
✗ Branch 23 not taken.
84 GeometryObject chestArm(
406 14 "chest2_object", model.frames[parentFrame].parentJoint, parentFrame,
407
3/6
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
28 SE3(SE3::Matrix3::Identity(), typename SE3::Vector3(0, 0, 0.5)),
408
3/6
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 14 times.
✗ Branch 8 not taken.
28 std::shared_ptr<fcl::Capsule>(new fcl::Capsule(0.05, .8)), "SPHERE",
409 Eigen::Vector3d::Ones(), false, meshColor);
410
1/2
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
14 geom.addGeometryObject(chestArm);
411 14 }
412 #endif
413
414 } // namespace buildModels
415
416 } // namespace pinocchio
417
418 #endif // ifndef __pinocchio_multibody_sample_models_hxx__
419