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 |