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