GCC Code Coverage Report


Directory: ./
File: unittest/model.cpp
Date: 2025-04-30 16:14:33
Exec Total Coverage
Lines: 593 603 98.3%
Branches: 2342 4682 50.0%

Line Branch Exec Source
1 //
2 // Copyright (c) 2016-2022 CNRS INRIA
3 //
4
5 #include "pinocchio/multibody/data.hpp"
6 #include "pinocchio/multibody/model.hpp"
7
8 #include "pinocchio/algorithm/check.hpp"
9 #include "pinocchio/algorithm/model.hpp"
10 #include "pinocchio/algorithm/kinematics.hpp"
11 #include "pinocchio/algorithm/frames.hpp"
12 #include "pinocchio/algorithm/joint-configuration.hpp"
13 #include "pinocchio/algorithm/geometry.hpp"
14 #include "pinocchio/algorithm/center-of-mass.hpp"
15
16 #include "pinocchio/multibody/sample-models.hpp"
17 #include "pinocchio/spatial/fwd.hpp"
18
19 #include <boost/test/unit_test.hpp>
20 #include <boost/utility/binary.hpp>
21
22 using namespace pinocchio;
23
24 BOOST_AUTO_TEST_SUITE(BOOST_TEST_MODULE)
25
26
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_model_subtree)
27 {
28
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
29
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidRandom(model);
30
31
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 Model::JointIndex idx_larm1 = model.getJointId("larm1_joint");
32
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(idx_larm1 < (Model::JointIndex)model.njoints);
33 2 Model::IndexVector & subtree = model.subtrees[idx_larm1];
34
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
2 BOOST_CHECK(subtree.size() == 6);
35
36
2/2
✓ Branch 1 taken 28 times.
✓ Branch 2 taken 1 times.
58 for (size_t joint_id = 0; joint_id < model.joints.size(); ++joint_id)
37 {
38 56 const Model::IndexVector & children = model.children[joint_id];
39
2/2
✓ Branch 1 taken 27 times.
✓ Branch 2 taken 28 times.
110 for (size_t i = 0; i < children.size(); ++i)
40 {
41
6/12
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 27 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 27 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 27 times.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 27 times.
54 BOOST_CHECK(model.parents[children[i]] == joint_id);
42 }
43 }
44
45
2/2
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
12 for (size_t i = 1; i < subtree.size(); ++i)
46 {
47
6/12
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 5 times.
✗ Branch 12 not taken.
✓ Branch 17 taken 5 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 5 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 5 times.
10 BOOST_CHECK(model.parents[subtree[i]] == subtree[i - 1]);
48 }
49
50 // Check that i starts subtree[i]
51
2/2
✓ Branch 0 taken 27 times.
✓ Branch 1 taken 1 times.
56 for (JointIndex joint_id = 1; joint_id < (JointIndex)model.njoints; ++joint_id)
52 {
53
6/12
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 27 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 27 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 27 times.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 27 times.
54 BOOST_CHECK(model.subtrees[joint_id][0] == joint_id);
54 }
55
56 // Check that subtree[0] contains all joint ids
57
2/2
✓ Branch 0 taken 27 times.
✓ Branch 1 taken 1 times.
56 for (JointIndex joint_id = 1; joint_id < (JointIndex)model.njoints; ++joint_id)
58 {
59
6/12
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 27 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 27 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 27 times.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 27 times.
54 BOOST_CHECK(model.subtrees[0][joint_id - 1] == joint_id);
60 }
61 2 }
62
63
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_model_get_frame_id)
64 {
65
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
66
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidRandom(model);
67
68
2/2
✓ Branch 0 taken 55 times.
✓ Branch 1 taken 1 times.
112 for (FrameIndex i = 0; i < static_cast<FrameIndex>(model.nframes); i++)
69 {
70
6/12
✓ Branch 1 taken 55 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 55 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 55 times.
✗ Branch 10 not taken.
✓ Branch 14 taken 55 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 55 times.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 55 times.
110 BOOST_CHECK_EQUAL(i, model.getFrameId(model.frames[i].name));
71 }
72
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 1 times.
2 BOOST_CHECK_EQUAL(model.nframes, model.getFrameId("NOT_A_FRAME"));
73 2 }
74
75
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_model_support)
76 {
77
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
78
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidRandom(model);
79
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 const Model::IndexVector support0_ref(1, 0);
80
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 1 times.
2 BOOST_CHECK(model.supports[0] == support0_ref);
81
82 // Check that i ends supports[i]
83
2/2
✓ Branch 0 taken 27 times.
✓ Branch 1 taken 1 times.
56 for (JointIndex joint_id = 1; joint_id < (JointIndex)model.njoints; ++joint_id)
84 {
85
6/12
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 27 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 27 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 27 times.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 27 times.
54 BOOST_CHECK(model.supports[joint_id].back() == joint_id);
86 54 Model::IndexVector & support = model.supports[joint_id];
87
88 54 size_t current_id = support.size() - 2;
89
2/2
✓ Branch 1 taken 111 times.
✓ Branch 2 taken 27 times.
276 for (JointIndex parent_id = model.parents[joint_id]; parent_id > 0;
90 222 parent_id = model.parents[parent_id], current_id--)
91 {
92
6/12
✓ Branch 1 taken 111 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 111 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 111 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 111 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 111 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 111 times.
222 BOOST_CHECK(parent_id == support[current_id]);
93 }
94 }
95 2 }
96
97 /// Test mimic_joint_support by creating manually a robot and
98 /// checking the content.
99
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_model_mimic_joint_support)
100 {
101
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
102 // j1 -- j2 -- j3
103 // -- j4 -- j5
104 // with j5 mimicking j3
105 // with j2 mimicking j1
106
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(0, JointModelRX(), SE3::Identity(), "j1");
107
3/6
✓ 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.
6 model.addJoint(
108
3/6
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
4 1, JointModelMimic(JointModelRX(), model.joints[1], 1., 0.), SE3::Identity(), "j2");
109
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(2, JointModelRX(), SE3::Identity(), "j3");
110
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(1, JointModelRX(), SE3::Identity(), "j4");
111
3/6
✓ 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.
6 model.addJoint(
112
3/6
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
4 4, JointModelMimic(JointModelRX(), model.joints[3], 1., 0.), SE3::Identity(), "j5");
113
114
5/10
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 1 times.
2 BOOST_REQUIRE_EQUAL(model.mimic_joint_supports.size(), 6);
115
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
2 BOOST_CHECK((model.mimic_joint_supports[0] == Model::IndexVector({0})));
116
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
2 BOOST_CHECK((model.mimic_joint_supports[1] == Model::IndexVector({0})));
117 // Mimic joint should support itself
118
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
2 BOOST_CHECK((model.mimic_joint_supports[2] == Model::IndexVector({0, 2})));
119 // j3 is supported by j2
120
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
2 BOOST_CHECK((model.mimic_joint_supports[3] == Model::IndexVector({0, 2})));
121
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
2 BOOST_CHECK((model.mimic_joint_supports[4] == Model::IndexVector({0})));
122 // Mimic joint should support itself
123
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
2 BOOST_CHECK((model.mimic_joint_supports[5] == Model::IndexVector({0, 5})));
124 2 }
125
126
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_model_subspace_dimensions)
127 {
128
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
129
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidRandom(model);
130
131 // Check that i ends supports[i]
132
2/2
✓ Branch 0 taken 27 times.
✓ Branch 1 taken 1 times.
56 for (JointIndex joint_id = 1; joint_id < (JointIndex)model.njoints; ++joint_id)
133 {
134 54 const Model::JointModel & jmodel = model.joints[joint_id];
135
136
7/14
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 27 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 27 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 27 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 27 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 27 times.
54 BOOST_CHECK(model.nqs[joint_id] == jmodel.nq());
137
7/14
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 27 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 27 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 27 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 27 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 27 times.
54 BOOST_CHECK(model.idx_qs[joint_id] == jmodel.idx_q());
138
139
7/14
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 27 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 27 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 27 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 27 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 27 times.
54 BOOST_CHECK(model.nvs[joint_id] == jmodel.nv());
140
7/14
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 27 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 27 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 27 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 27 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 27 times.
54 BOOST_CHECK(model.idx_vs[joint_id] == jmodel.idx_v());
141
142
7/14
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 27 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 27 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 27 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 27 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 27 times.
54 BOOST_CHECK(model.nvExtendeds[joint_id] == jmodel.nvExtended());
143
7/14
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 27 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 27 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 27 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 27 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 27 times.
54 BOOST_CHECK(model.idx_vExtendeds[joint_id] == jmodel.idx_vExtended());
144 }
145 2 }
146
147
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(comparison)
148 {
149
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
150
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidRandom(model);
151
152
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(model == model);
153 2 }
154
155
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(cast)
156 {
157
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
158
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidRandom(model);
159
160
9/18
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK(model.cast<double>() == model.cast<double>());
161
10/20
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✗ Branch 37 not taken.
✓ Branch 38 taken 1 times.
2 BOOST_CHECK(model.cast<double>().cast<long double>() == model.cast<long double>());
162
163 typedef ModelTpl<long double> Modelld;
164
165
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Modelld model2(model);
166
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
2 BOOST_CHECK(model2 == model.cast<long double>());
167 2 }
168
169
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_std_vector_of_Model)
170 {
171
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
172
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(model);
173
174
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 PINOCCHIO_ALIGNED_STD_VECTOR(Model) models;
175
2/2
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 1 times.
42 for (size_t k = 0; k < 20; ++k)
176 {
177
2/4
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
40 models.push_back(Model());
178
1/2
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
40 buildModels::humanoid(models.back());
179
180
7/14
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 20 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 20 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 20 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 20 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 20 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 20 times.
40 BOOST_CHECK(model == models.back());
181 }
182 2 }
183
184 #ifdef PINOCCHIO_WITH_HPP_FCL
185 struct AddPrefix
186 {
187 std::string p;
188 35 std::string operator()(const std::string & n)
189 {
190 35 return p + n;
191 }
192 84 Frame operator()(const Frame & _f)
193 {
194 84 Frame f(_f);
195
1/2
✓ Branch 1 taken 84 times.
✗ Branch 2 not taken.
84 f.name = p + f.name;
196 84 return f;
197 }
198 2 AddPrefix(const char * _p)
199
1/2
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
2 : p(_p)
200 {
201 2 }
202 };
203
204
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(append)
205 {
206
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Model manipulator, humanoid;
207
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 GeometryModel geomManipulator, geomHumanoid;
208
209
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::manipulator(manipulator, true);
210
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::manipulatorGeometries(manipulator, geomManipulator);
211
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 geomManipulator.addAllCollisionPairs();
212 // Add prefix to joint and frame names
213
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 AddPrefix addManipulatorPrefix("manipulator/");
214
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
6 std::transform(
215 6 ++manipulator.names.begin(), manipulator.names.end(), ++manipulator.names.begin(),
216 addManipulatorPrefix);
217
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
6 std::transform(
218 6 ++manipulator.frames.begin(), manipulator.frames.end(), ++manipulator.frames.begin(),
219 addManipulatorPrefix);
220
221
5/10
✓ 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 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
2 BOOST_TEST_MESSAGE(manipulator);
222
223
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(humanoid);
224
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidGeometries(humanoid, geomHumanoid);
225
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 geomHumanoid.addAllCollisionPairs();
226 // Add prefix to joint and frame names
227
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 AddPrefix addHumanoidPrefix("humanoid/");
228
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
6 std::transform(
229 6 ++humanoid.names.begin(), humanoid.names.end(), ++humanoid.names.begin(), addHumanoidPrefix);
230
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
6 std::transform(
231 6 ++humanoid.frames.begin(), humanoid.frames.end(), ++humanoid.frames.begin(), addHumanoidPrefix);
232
233
5/10
✓ 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 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
2 BOOST_TEST_MESSAGE(humanoid);
234
235
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 typename Model::ConfigVectorType humanoid_config_vector(humanoid.nq);
236
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 typename Model::ConfigVectorType manipulator_config_vector(manipulator.nq);
237
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid_config_vector = randomConfiguration(humanoid);
238
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 manipulator_config_vector = randomConfiguration(manipulator);
239
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 humanoid.referenceConfigurations.insert(std::make_pair("common_key", humanoid_config_vector));
240
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 manipulator.referenceConfigurations.insert(
241
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 std::make_pair("common_key", manipulator_config_vector));
242
243
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid_config_vector = randomConfiguration(humanoid);
244
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 manipulator_config_vector = randomConfiguration(manipulator);
245
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 humanoid.referenceConfigurations.insert(std::make_pair("humanoid_key", humanoid_config_vector));
246
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 manipulator.referenceConfigurations.insert(
247
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 std::make_pair("manipulator_key", manipulator_config_vector));
248
249 // TODO fix inertia of the base
250
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 manipulator.inertias[0].setRandom();
251
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 SE3 aMb = SE3::Random();
252
253 // First append a model to the universe frame.
254
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model1;
255
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel geomModel1;
256 2 FrameIndex fid = 0;
257
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 appendModel(
258
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid, manipulator, geomHumanoid, geomManipulator, fid, SE3::Identity(), model1, geomModel1);
259 typedef typename Model::ConfigVectorMap ConfigVectorMap;
260
261
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 typename Model::ConfigVectorType neutral_config_vector(model1.nq);
262
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 neutral(model1, neutral_config_vector);
263
264
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
2 BOOST_CHECK(model1.referenceConfigurations.size() == 3);
265 2 for (typename ConfigVectorMap::const_iterator config_it = model1.referenceConfigurations.begin();
266
2/2
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 1 times.
8 config_it != model1.referenceConfigurations.end(); ++config_it)
267 {
268 6 const std::string & config_name = config_it->first;
269 6 const typename Model::ConfigVectorType & config_vector = config_it->second;
270
271 typename ConfigVectorMap::const_iterator humanoid_config =
272
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 humanoid.referenceConfigurations.find(config_name);
273 typename ConfigVectorMap::const_iterator manipulator_config =
274
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 manipulator.referenceConfigurations.find(config_name);
275
2/2
✓ Branch 1 taken 105 times.
✓ Branch 2 taken 3 times.
216 for (JointIndex joint_id = 1; joint_id < model1.joints.size(); ++joint_id)
276 {
277 210 const JointModel & joint_model1 = model1.joints[joint_id];
278 210 if (
279 210 humanoid_config != humanoid.referenceConfigurations.end()
280
7/8
✓ Branch 0 taken 70 times.
✓ Branch 1 taken 35 times.
✓ Branch 4 taken 70 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 58 times.
✓ Branch 7 taken 12 times.
✓ Branch 8 taken 58 times.
✓ Branch 9 taken 47 times.
210 && humanoid.existJointName(model1.names[joint_id]))
281 { // key and joint exists in humanoid
282 const JointModel & joint_model_humanoid =
283
1/2
✓ Branch 2 taken 58 times.
✗ Branch 3 not taken.
116 humanoid.joints[humanoid.getJointId(model1.names[joint_id])];
284
9/18
✓ Branch 1 taken 58 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 58 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 58 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 58 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 58 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 58 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 58 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 58 times.
✗ Branch 28 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 58 times.
116 BOOST_CHECK(
285 joint_model_humanoid.jointConfigSelector(humanoid_config->second)
286 == joint_model1.jointConfigSelector(config_vector));
287
9/18
✓ Branch 1 taken 58 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 58 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 58 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 58 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 58 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 58 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 58 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 58 times.
✗ Branch 28 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 58 times.
116 BOOST_CHECK(
288 joint_model_humanoid.JointMappedConfigSelector(humanoid_config->second)
289 == joint_model1.JointMappedConfigSelector(config_vector));
290 // std::cerr<<"humanoid "<<config_name<<" "<<model1.names[joint_id]<<std::endl;
291 }
292 94 else if (
293 94 manipulator_config != manipulator.referenceConfigurations.end()
294
7/8
✓ Branch 0 taken 41 times.
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 41 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 12 times.
✓ Branch 7 taken 29 times.
✓ Branch 8 taken 12 times.
✓ Branch 9 taken 35 times.
94 && manipulator.existJointName(model1.names[joint_id]))
295 { // key and joint exists in manipulator.
296 const JointModel & joint_model_manipulator =
297
1/2
✓ Branch 2 taken 12 times.
✗ Branch 3 not taken.
24 manipulator.joints[manipulator.getJointId(model1.names[joint_id])];
298
9/18
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 12 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 12 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 12 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 12 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 12 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 12 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 12 times.
✗ Branch 28 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 12 times.
24 BOOST_CHECK(
299 joint_model_manipulator.jointConfigSelector(manipulator_config->second)
300 == joint_model1.jointConfigSelector(config_vector));
301
9/18
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 12 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 12 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 12 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 12 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 12 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 12 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 12 times.
✗ Branch 28 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 12 times.
24 BOOST_CHECK(
302 joint_model_manipulator.JointMappedConfigSelector(manipulator_config->second)
303 == joint_model1.JointMappedConfigSelector(config_vector));
304 // std::cerr<<"manipulator "<<config_name<<" "<<model1.names[joint_id]<<std::endl;
305 }
306 else
307 { // joint and key combo not found, should with neutral
308
9/18
✓ Branch 1 taken 35 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 35 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 35 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 35 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 35 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 35 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 35 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 35 times.
✗ Branch 27 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 35 times.
70 BOOST_CHECK(
309 joint_model1.jointConfigSelector(neutral_config_vector)
310 == joint_model1.jointConfigSelector(config_vector));
311
9/18
✓ Branch 1 taken 35 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 35 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 35 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 35 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 35 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 35 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 35 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 35 times.
✗ Branch 27 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 35 times.
70 BOOST_CHECK(
312 joint_model1.JointMappedConfigSelector(neutral_config_vector)
313 == joint_model1.JointMappedConfigSelector(config_vector));
314 // std::cerr<<"neutral "<<config_name<<" "<<model1.names[joint_id]<<std::endl;
315 }
316 }
317 }
318
319 {
320
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Model model2 = appendModel(humanoid, manipulator, fid, SE3::Identity());
321
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model3;
322
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 appendModel(humanoid, manipulator, fid, SE3::Identity(), model3);
323
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(model1 == model2);
324
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(model1 == model3);
325
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(model2 == model3);
326 2 }
327
328
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Data data1(model1);
329
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(model1.check(data1));
330
331
5/10
✓ 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 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
2 BOOST_TEST_MESSAGE(model1);
332
333 // Second, append a model to a moving frame.
334
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
335
336
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel geomModel;
337
9/18
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
2 fid = humanoid.addFrame(Frame(
338 "humanoid/add_manipulator", humanoid.getJointId("humanoid/chest2_joint"),
339 humanoid.getFrameId("humanoid/chest2_joint"), aMb, OP_FRAME));
340
341 // Append manipulator to chest2_joint of humanoid
342
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 appendModel(
343
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid, manipulator, geomHumanoid, geomManipulator, fid, SE3::Identity(), model, geomModel);
344
345
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 neutral_config_vector.resize(model.nq);
346
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 neutral(model, neutral_config_vector);
347
348
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
2 BOOST_CHECK(model.referenceConfigurations.size() == 3);
349 2 for (typename ConfigVectorMap::const_iterator config_it = model.referenceConfigurations.begin();
350
2/2
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 1 times.
8 config_it != model.referenceConfigurations.end(); ++config_it)
351 {
352 6 const std::string & config_name = config_it->first;
353 6 const typename Model::ConfigVectorType & config_vector = config_it->second;
354
355 typename ConfigVectorMap::const_iterator humanoid_config =
356
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 humanoid.referenceConfigurations.find(config_name);
357 typename ConfigVectorMap::const_iterator manipulator_config =
358
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 manipulator.referenceConfigurations.find(config_name);
359
2/2
✓ Branch 1 taken 105 times.
✓ Branch 2 taken 3 times.
216 for (JointIndex joint_id = 1; joint_id < model.joints.size(); ++joint_id)
360 {
361 210 const JointModel & joint_model = model.joints[joint_id];
362 210 if (
363 210 humanoid_config != humanoid.referenceConfigurations.end()
364
7/8
✓ Branch 0 taken 70 times.
✓ Branch 1 taken 35 times.
✓ Branch 4 taken 70 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 58 times.
✓ Branch 7 taken 12 times.
✓ Branch 8 taken 58 times.
✓ Branch 9 taken 47 times.
210 && humanoid.existJointName(model.names[joint_id]))
365 { // key and joint exists in humanoid
366 const JointModel & joint_model_humanoid =
367
1/2
✓ Branch 2 taken 58 times.
✗ Branch 3 not taken.
116 humanoid.joints[humanoid.getJointId(model.names[joint_id])];
368
9/18
✓ Branch 1 taken 58 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 58 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 58 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 58 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 58 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 58 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 58 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 58 times.
✗ Branch 28 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 58 times.
116 BOOST_CHECK(
369 joint_model_humanoid.jointConfigSelector(humanoid_config->second)
370 == joint_model.jointConfigSelector(config_vector));
371
9/18
✓ Branch 1 taken 58 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 58 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 58 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 58 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 58 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 58 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 58 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 58 times.
✗ Branch 28 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 58 times.
116 BOOST_CHECK(
372 joint_model_humanoid.JointMappedConfigSelector(humanoid_config->second)
373 == joint_model.JointMappedConfigSelector(config_vector));
374 // std::cerr<<"humanoid "<<config_name<<" "<<model.names[joint_id]<<std::endl;
375 }
376 94 else if (
377 94 manipulator_config != manipulator.referenceConfigurations.end()
378
7/8
✓ Branch 0 taken 41 times.
✓ Branch 1 taken 6 times.
✓ Branch 4 taken 41 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 12 times.
✓ Branch 7 taken 29 times.
✓ Branch 8 taken 12 times.
✓ Branch 9 taken 35 times.
94 && manipulator.existJointName(model.names[joint_id]))
379 { // key and joint exists in manipulator.
380 const JointModel & joint_model_manipulator =
381
1/2
✓ Branch 2 taken 12 times.
✗ Branch 3 not taken.
24 manipulator.joints[manipulator.getJointId(model.names[joint_id])];
382
9/18
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 12 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 12 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 12 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 12 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 12 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 12 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 12 times.
✗ Branch 28 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 12 times.
24 BOOST_CHECK(
383 joint_model_manipulator.jointConfigSelector(manipulator_config->second)
384 == joint_model.jointConfigSelector(config_vector));
385
9/18
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 12 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 12 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 12 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 12 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 12 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 12 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 12 times.
✗ Branch 28 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 12 times.
24 BOOST_CHECK(
386 joint_model_manipulator.JointMappedConfigSelector(manipulator_config->second)
387 == joint_model.JointMappedConfigSelector(config_vector));
388 // std::cerr<<"manipulator "<<config_name<<" "<<model.names[joint_id]<<std::endl;
389 }
390 else
391 { // joint and key combo not found, should with neutral
392
9/18
✓ Branch 1 taken 35 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 35 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 35 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 35 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 35 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 35 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 35 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 35 times.
✗ Branch 27 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 35 times.
70 BOOST_CHECK(
393 joint_model.jointConfigSelector(neutral_config_vector)
394 == joint_model.jointConfigSelector(config_vector));
395
9/18
✓ Branch 1 taken 35 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 35 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 35 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 35 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 35 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 35 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 35 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 35 times.
✗ Branch 27 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 35 times.
70 BOOST_CHECK(
396 joint_model.JointMappedConfigSelector(neutral_config_vector)
397 == joint_model.JointMappedConfigSelector(config_vector));
398 // std::cerr<<"neutral "<<config_name<<" "<<model.names[joint_id]<<std::endl;
399 }
400 }
401 }
402
403 {
404
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Model model2 = appendModel(humanoid, manipulator, fid, SE3::Identity());
405
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model3;
406
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 appendModel(humanoid, manipulator, fid, SE3::Identity(), model3);
407
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(model == model2);
408
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(model == model3);
409
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(model2 == model3);
410 2 }
411
412
5/10
✓ 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 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
2 BOOST_TEST_MESSAGE(model);
413
414
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Data data(model);
415
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(model.check(data));
416
417 // Check the model
418
9/18
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 1 times.
2 BOOST_CHECK_EQUAL(
419 model.getJointId("humanoid/chest2_joint"),
420 model.parents[model.getJointId("manipulator/shoulder1_joint")]);
421
422 // check the joint order and the inertias
423 // All the joints of the manipulator should be at the end of the merged model
424 2 JointIndex hnj = (JointIndex)humanoid.njoints;
425
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 JointIndex chest2 = model.getJointId("humanoid/chest2_joint");
426
2/2
✓ Branch 0 taken 29 times.
✓ Branch 1 taken 1 times.
60 for (JointIndex jid = 1; jid < hnj; ++jid)
427 {
428
8/16
✓ Branch 2 taken 29 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 29 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 29 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 29 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 29 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 29 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 29 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 29 times.
✗ Branch 26 not taken.
58 BOOST_TEST_MESSAGE("Checking joint " << jid << " " << model.names[jid]);
429
5/10
✓ Branch 1 taken 29 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 29 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 29 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 29 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 29 times.
58 BOOST_CHECK_EQUAL(model.names[jid], humanoid.names[jid]);
430
2/2
✓ Branch 0 taken 28 times.
✓ Branch 1 taken 1 times.
58 if (jid != chest2)
431
5/10
✓ Branch 1 taken 28 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 28 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 28 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 28 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 28 times.
56 BOOST_CHECK_EQUAL(model.inertias[jid], humanoid.inertias[jid]);
432 else
433
13/26
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 44 taken 1 times.
✗ Branch 45 not taken.
✗ Branch 51 not taken.
✓ Branch 52 taken 1 times.
2 BOOST_CHECK_MESSAGE(
434 model.inertias[jid].isApprox(
435 manipulator.inertias[0].se3Action(aMb) + humanoid.inertias[jid]),
436 model.inertias[jid] << " != "
437 << manipulator.inertias[0].se3Action(aMb) + humanoid.inertias[jid]);
438
439
5/10
✓ Branch 1 taken 29 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 29 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 29 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 29 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 29 times.
58 BOOST_CHECK_EQUAL(model.jointPlacements[jid], humanoid.jointPlacements[jid]);
440 }
441
2/2
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
12 for (JointIndex jid = 1; jid < manipulator.joints.size() - 1; ++jid)
442 {
443
8/16
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 5 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 5 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 5 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 5 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 5 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 5 times.
✗ Branch 26 not taken.
10 BOOST_TEST_MESSAGE("Checking joint " << hnj - 1 + jid << " " << model.names[hnj + jid]);
444
5/10
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 5 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 5 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 5 times.
10 BOOST_CHECK_EQUAL(model.names[hnj - 1 + jid], manipulator.names[jid]);
445
5/10
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 5 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 5 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 5 times.
10 BOOST_CHECK_EQUAL(model.inertias[hnj - 1 + jid], manipulator.inertias[jid]);
446
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
10 if (jid == 1)
447
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK_EQUAL(
448 model.jointPlacements[hnj - 1 + jid], aMb * manipulator.jointPlacements[jid]);
449 else
450
5/10
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 4 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 4 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 4 times.
8 BOOST_CHECK_EQUAL(model.jointPlacements[hnj - 1 + jid], manipulator.jointPlacements[jid]);
451 }
452 // Check the frames
453
2/2
✓ Branch 1 taken 70 times.
✓ Branch 2 taken 1 times.
142 for (FrameIndex fid = 1; fid < humanoid.frames.size(); ++fid)
454 {
455
1/2
✓ Branch 3 taken 70 times.
✗ Branch 4 not taken.
140 const Frame &frame = humanoid.frames[fid], parent = humanoid.frames[frame.parentFrame];
456
7/14
✓ Branch 1 taken 70 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 70 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 70 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 70 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 70 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 70 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 70 times.
140 BOOST_CHECK(model.existFrame(frame.name, frame.type));
457
1/2
✓ Branch 1 taken 70 times.
✗ Branch 2 not taken.
140 const Frame &nframe = model.frames[model.getFrameId(frame.name, frame.type)],
458
1/2
✓ Branch 2 taken 70 times.
✗ Branch 3 not taken.
140 nparent = model.frames[nframe.parentFrame];
459
5/10
✓ Branch 1 taken 70 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 70 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 70 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 70 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 70 times.
140 BOOST_CHECK_EQUAL(parent.name, nparent.name);
460
5/10
✓ Branch 1 taken 70 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 70 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 70 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 70 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 70 times.
140 BOOST_CHECK_EQUAL(frame.placement, nframe.placement);
461 140 }
462
2/2
✓ Branch 1 taken 15 times.
✓ Branch 2 taken 1 times.
32 for (FrameIndex fid = 1; fid < manipulator.frames.size(); ++fid)
463 {
464
1/2
✓ Branch 3 taken 15 times.
✗ Branch 4 not taken.
30 const Frame &frame = manipulator.frames[fid], parent = manipulator.frames[frame.parentFrame];
465
7/14
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 15 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 15 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 15 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 15 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 15 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 15 times.
30 BOOST_CHECK(model.existFrame(frame.name, frame.type));
466
1/2
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
30 const Frame &nframe = model.frames[model.getFrameId(frame.name, frame.type)],
467
1/2
✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
30 nparent = model.frames[nframe.parentFrame];
468
2/2
✓ Branch 0 taken 14 times.
✓ Branch 1 taken 1 times.
30 if (frame.parentFrame > 0)
469 {
470
5/10
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 14 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 14 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 14 times.
28 BOOST_CHECK_EQUAL(parent.name, nparent.name);
471
5/10
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 14 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 14 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 14 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 14 times.
28 BOOST_CHECK_EQUAL(frame.placement, nframe.placement);
472 }
473 30 }
474
475 {
476
4/8
✓ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 Inertia inertia(2., Eigen::Vector3d(0.1, 0.1, 0.1), Eigen::Matrix3d::Identity());
477
3/6
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
4 Frame additional_frame("inertial_frame", 2, SE3::Identity(), FrameType::JOINT, inertia);
478
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid.addFrame(additional_frame);
479
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 double mass_humanoid = computeTotalMass(humanoid);
480
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 double mass_manipulator = computeTotalMass(manipulator);
481 2 double total_mass = mass_manipulator + mass_humanoid;
482
483
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model4;
484
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel geomModel4;
485
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 appendModel(
486
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 humanoid, manipulator, geomHumanoid, geomManipulator, 0, SE3::Identity(), model4, geomModel4);
487
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
2 BOOST_CHECK_CLOSE(computeTotalMass(model4), total_mass, 1e-6);
488 2 }
489 {
490
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model ff_model;
491
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 auto ff_id = ff_model.addJoint(0, JointModelFreeFlyer(), SE3::Identity(), "floating_base");
492
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 ff_model.addJointFrame(ff_id);
493
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel ff_geom_model = GeometryModel();
494
3/6
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 FrameIndex frame_id = ff_model.getFrameId("floating_base");
495
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model4;
496
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel geomModel4;
497
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 appendModel(
498
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 ff_model, manipulator, ff_geom_model, geomManipulator, frame_id, SE3::Identity(), model4,
499 geomModel4);
500
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
2 BOOST_CHECK(model4.inertias[1] == model4.inertias[1]);
501 2 }
502
503 {
504
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Model model5, gripperModel;
505
506
4/8
✓ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
2 Inertia inertia(1., SE3::Vector3(0.5, 0., 0.0), SE3::Matrix3::Identity());
507
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 SE3 pos(1);
508
509
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 pos.translation() = SE3::LinearType(0.1, 0., 0.);
510
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.
2 JointIndex idx = gripperModel.addJoint(0, JointModelPX(), pos, "left_finger");
511
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gripperModel.addJointFrame(idx);
512
513
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 pos.translation() = SE3::LinearType(-0.1, 0., 0.);
514
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.
2 idx = gripperModel.addJoint(0, JointModelPX(), pos, "right_finger");
515
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gripperModel.addJointFrame(idx);
516
517
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 SE3 transformManGr = SE3::Random();
518 2 FrameIndex fid = (FrameIndex)(manipulator.frames.size() - 1);
519
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 appendModel(manipulator, gripperModel, fid, transformManGr, model5);
520
521
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 JointIndex jid5 = model5.getJointId("left_finger");
522
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 JointIndex jidG = gripperModel.getJointId("left_finger");
523
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
2 BOOST_CHECK(
524 model5.jointPlacements[jid5].isApprox(transformManGr * gripperModel.jointPlacements[jidG]));
525
526
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 jid5 = model5.getJointId("right_finger");
527
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 jidG = gripperModel.getJointId("right_finger");
528
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
2 BOOST_CHECK(
529 model5.jointPlacements[jid5].isApprox(transformManGr * gripperModel.jointPlacements[jidG]));
530 2 }
531 2 }
532 #endif
533
534
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_buildReducedModel_empty)
535 {
536
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model humanoid_model;
537
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(humanoid_model);
538
539
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 static const std::vector<JointIndex> empty_index_vector;
540
541
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 humanoid_model.lowerPositionLimit.head<3>().fill(-1.);
542
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 humanoid_model.upperPositionLimit.head<3>().fill(1.);
543
544
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid_model.referenceConfigurations.insert(
545
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
4 std::pair<std::string, Eigen::VectorXd>("neutral", neutral(humanoid_model)));
546
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Eigen::VectorXd reference_config_humanoid = randomConfiguration(humanoid_model);
547 Model humanoid_copy_model =
548
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(humanoid_model, empty_index_vector, reference_config_humanoid);
549
550
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_copy_model.names == humanoid_model.names);
551
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_copy_model.joints == humanoid_model.joints);
552
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_copy_model == humanoid_model);
553
10/20
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 1 times.
2 BOOST_CHECK(
554 humanoid_copy_model.referenceConfigurations["neutral"].isApprox(neutral(humanoid_copy_model)));
555
556 2 const std::vector<JointIndex> empty_joints_to_lock;
557
558 const Model reduced_humanoid_model =
559
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(humanoid_model, empty_joints_to_lock, reference_config_humanoid);
560
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(reduced_humanoid_model.njoints == humanoid_model.njoints);
561
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(reduced_humanoid_model.frames == humanoid_model.frames);
562
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(reduced_humanoid_model.jointPlacements == humanoid_model.jointPlacements);
563
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(reduced_humanoid_model.joints == humanoid_model.joints);
564
565
2/2
✓ Branch 0 taken 29 times.
✓ Branch 1 taken 1 times.
60 for (JointIndex joint_id = 1; joint_id < (JointIndex)reduced_humanoid_model.njoints; ++joint_id)
566 {
567
7/14
✓ Branch 1 taken 29 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 29 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 29 times.
✗ Branch 12 not taken.
✓ Branch 17 taken 29 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 29 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 29 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 29 times.
58 BOOST_CHECK(
568 reduced_humanoid_model.inertias[joint_id].isApprox(humanoid_model.inertias[joint_id]));
569 }
570 2 }
571
572
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_buildReducedModel)
573 {
574
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model humanoid_model;
575
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(humanoid_model);
576
577
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 static const std::vector<JointIndex> empty_index_vector;
578
579
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 humanoid_model.lowerPositionLimit.head<3>().fill(-1.);
580
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 humanoid_model.upperPositionLimit.head<3>().fill(1.);
581
582
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid_model.referenceConfigurations.insert(
583
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
4 std::pair<std::string, Eigen::VectorXd>("neutral", neutral(humanoid_model)));
584
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Eigen::VectorXd reference_config_humanoid = randomConfiguration(humanoid_model);
585 Model humanoid_copy_model =
586
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(humanoid_model, empty_index_vector, reference_config_humanoid);
587
588
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_copy_model.names == humanoid_model.names);
589
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_copy_model.joints == humanoid_model.joints);
590
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_copy_model == humanoid_model);
591
10/20
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 1 times.
2 BOOST_CHECK(
592 humanoid_copy_model.referenceConfigurations["neutral"].isApprox(neutral(humanoid_copy_model)));
593
594 2 std::vector<JointIndex> joints_to_lock;
595
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 const std::string joint1_to_lock = "rarm_shoulder2_joint";
596
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 joints_to_lock.push_back(humanoid_model.getJointId(joint1_to_lock));
597
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 const std::string joint2_to_lock = "larm_shoulder2_joint";
598
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 joints_to_lock.push_back(humanoid_model.getJointId(joint2_to_lock));
599
600 Model reduced_humanoid_model =
601
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(humanoid_model, joints_to_lock, reference_config_humanoid);
602
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
2 BOOST_CHECK(
603 reduced_humanoid_model.njoints == humanoid_model.njoints - (int)joints_to_lock.size());
604
605
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(reduced_humanoid_model != humanoid_model);
606
607
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model reduced_humanoid_model_other_signature;
608
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 buildReducedModel(
609 humanoid_model, joints_to_lock, reference_config_humanoid,
610 reduced_humanoid_model_other_signature);
611
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(reduced_humanoid_model == reduced_humanoid_model_other_signature);
612
613 // Check that forward kinematics give same results
614
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Data data(humanoid_model), reduced_data(reduced_humanoid_model);
615
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Eigen::VectorXd q = reference_config_humanoid;
616
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Eigen::VectorXd reduced_q(reduced_humanoid_model.nq);
617
618
2/2
✓ Branch 0 taken 27 times.
✓ Branch 1 taken 1 times.
56 for (JointIndex joint_id = 1; joint_id < (JointIndex)reduced_humanoid_model.njoints; ++joint_id)
619 {
620 const JointIndex reference_joint_id =
621
1/2
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
54 humanoid_model.getJointId(reduced_humanoid_model.names[joint_id]);
622
623
1/2
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
54 reduced_humanoid_model.joints[joint_id].jointConfigSelector(reduced_q) =
624
2/4
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
108 humanoid_model.joints[reference_joint_id].jointConfigSelector(q);
625
1/2
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
54 reduced_humanoid_model.joints[joint_id].JointMappedConfigSelector(reduced_q) =
626
2/4
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
108 humanoid_model.joints[reference_joint_id].JointMappedConfigSelector(q);
627 }
628
629
10/20
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 1 times.
2 BOOST_CHECK(reduced_humanoid_model.referenceConfigurations["neutral"].isApprox(
630 neutral(reduced_humanoid_model)));
631
632
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 framesForwardKinematics(humanoid_model, data, q);
633
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 framesForwardKinematics(reduced_humanoid_model, reduced_data, reduced_q);
634
635
2/2
✓ Branch 1 taken 70 times.
✓ Branch 2 taken 1 times.
142 for (size_t frame_id = 0; frame_id < reduced_humanoid_model.frames.size(); ++frame_id)
636 {
637 140 const Frame & reduced_frame = reduced_humanoid_model.frames[frame_id];
638
2/2
✓ Branch 0 taken 30 times.
✓ Branch 1 taken 40 times.
140 switch (reduced_frame.type)
639 {
640 60 case JOINT:
641 case FIXED_JOINT: {
642 // May not be present in the original model
643
2/4
✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 30 times.
✗ Branch 4 not taken.
60 if (humanoid_model.existJointName(reduced_frame.name))
644 {
645
1/2
✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
60 const JointIndex joint_id = humanoid_model.getJointId(reduced_frame.name);
646
7/14
✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 30 times.
✗ Branch 12 not taken.
✓ Branch 17 taken 30 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 30 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 30 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 30 times.
60 BOOST_CHECK(data.oMi[joint_id].isApprox(reduced_data.oMf[frame_id]));
647 }
648 else if (humanoid_model.existFrame(reduced_frame.name))
649 {
650 const FrameIndex humanoid_frame_id = humanoid_model.getFrameId(reduced_frame.name);
651 BOOST_CHECK(data.oMf[humanoid_frame_id].isApprox(reduced_data.oMf[frame_id]));
652 }
653 else
654 {
655 BOOST_CHECK_MESSAGE(
656 false, "The frame " << reduced_frame.name << " is not presend in the humanoid_model");
657 }
658 60 break;
659 }
660 default: {
661
7/14
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 40 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 40 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 40 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 40 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 40 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 40 times.
80 BOOST_CHECK(humanoid_model.existFrame(reduced_frame.name));
662
1/2
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
80 const FrameIndex humanoid_frame_id = humanoid_model.getFrameId(reduced_frame.name);
663
7/14
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 40 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 40 times.
✗ Branch 12 not taken.
✓ Branch 17 taken 40 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 40 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 40 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 40 times.
80 BOOST_CHECK(data.oMf[humanoid_frame_id].isApprox(reduced_data.oMf[frame_id]));
664 80 break;
665 }
666 }
667 }
668 2 }
669
670
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_aligned_vector_of_model)
671 {
672 typedef PINOCCHIO_ALIGNED_STD_VECTOR(Model) VectorOfModels;
673
674
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 VectorOfModels models;
675
2/2
✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 times.
202 for (size_t k = 0; k < 100; ++k)
676 {
677
2/4
✓ Branch 1 taken 100 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 100 times.
✗ Branch 5 not taken.
200 models.push_back(Model());
678
1/2
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
200 buildModels::humanoidRandom(models[k]);
679 }
680 2 }
681
682 #ifdef PINOCCHIO_WITH_HPP_FCL
683
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_buildReducedModel_with_geom)
684 {
685
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model humanoid_model;
686
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(humanoid_model);
687
688
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 humanoid_model.lowerPositionLimit.head<3>().fill(-1.);
689
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 humanoid_model.upperPositionLimit.head<3>().fill(1.);
690
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 const Eigen::VectorXd reference_config_humanoid = randomConfiguration(humanoid_model);
691
692
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel humanoid_geometry;
693
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidGeometries(humanoid_model, humanoid_geometry);
694
695
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 static const std::vector<JointIndex> empty_index_vector;
696
697
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model humanoid_copy_model;
698
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel humanoid_copy_geometry;
699
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(
700 humanoid_model, humanoid_geometry, empty_index_vector, reference_config_humanoid,
701 humanoid_copy_model, humanoid_copy_geometry);
702
703
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_copy_model == humanoid_model);
704
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_copy_geometry == humanoid_geometry);
705
706 2 std::vector<JointIndex> joints_to_lock;
707
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 const std::string joint1_to_lock = "rarm_shoulder2_joint";
708
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 joints_to_lock.push_back(humanoid_model.getJointId(joint1_to_lock));
709
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 const std::string joint2_to_lock = "larm_shoulder2_joint";
710
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 joints_to_lock.push_back(humanoid_model.getJointId(joint2_to_lock));
711
712
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model reduced_humanoid_model;
713
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel reduced_humanoid_geometry;
714
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(
715 humanoid_model, humanoid_geometry, joints_to_lock, reference_config_humanoid,
716 reduced_humanoid_model, reduced_humanoid_geometry);
717
718
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(reduced_humanoid_geometry.ngeoms == humanoid_geometry.ngeoms);
719
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(reduced_humanoid_geometry.collisionPairs == humanoid_geometry.collisionPairs);
720
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK(
721 reduced_humanoid_geometry.geometryObjects.size() == humanoid_geometry.geometryObjects.size());
722
723
2/2
✓ Branch 1 taken 27 times.
✓ Branch 2 taken 1 times.
56 for (Index i = 0; i < humanoid_geometry.geometryObjects.size(); ++i)
724 {
725 54 const GeometryObject & go1 = humanoid_geometry.geometryObjects[i];
726 54 const GeometryObject & go2 = reduced_humanoid_geometry.geometryObjects[i];
727
5/10
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 27 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 27 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 27 times.
54 BOOST_CHECK_EQUAL(go1.name, go2.name);
728
5/10
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 27 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 27 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 27 times.
54 BOOST_CHECK_EQUAL(go1.geometry, go2.geometry);
729
5/10
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 27 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 27 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 27 times.
54 BOOST_CHECK_EQUAL(go1.meshPath, go2.meshPath);
730
5/10
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 27 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 27 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 27 times.
54 BOOST_CHECK_EQUAL(go1.meshScale, go2.meshScale);
731
5/10
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 27 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 27 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 27 times.
54 BOOST_CHECK_EQUAL(go1.overrideMaterial, go2.overrideMaterial);
732
5/10
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 27 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 27 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 27 times.
54 BOOST_CHECK_EQUAL(go1.meshColor, go2.meshColor);
733
5/10
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 27 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 27 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 27 times.
54 BOOST_CHECK_EQUAL(go1.meshTexturePath, go2.meshTexturePath);
734
5/10
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 27 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 27 times.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 27 times.
54 BOOST_CHECK_EQUAL(go1.parentFrame, go2.parentFrame);
735
5/10
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 27 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 27 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 27 times.
54 BOOST_CHECK_EQUAL(
736 humanoid_model.frames[go1.parentFrame].name,
737 reduced_humanoid_model.frames[go2.parentFrame].name);
738 }
739
740
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Data data(humanoid_model), reduced_data(reduced_humanoid_model);
741
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 const Eigen::VectorXd q = reference_config_humanoid;
742
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Eigen::VectorXd reduced_q(reduced_humanoid_model.nq);
743
744
2/2
✓ Branch 0 taken 27 times.
✓ Branch 1 taken 1 times.
56 for (JointIndex joint_id = 1; joint_id < (JointIndex)reduced_humanoid_model.njoints; ++joint_id)
745 {
746 const JointIndex reference_joint_id =
747
1/2
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
54 humanoid_model.getJointId(reduced_humanoid_model.names[joint_id]);
748
749
1/2
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
54 reduced_humanoid_model.joints[joint_id].jointConfigSelector(reduced_q) =
750
2/4
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
108 humanoid_model.joints[reference_joint_id].jointConfigSelector(q);
751
1/2
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
54 reduced_humanoid_model.joints[joint_id].JointMappedConfigSelector(reduced_q) =
752
2/4
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
108 humanoid_model.joints[reference_joint_id].JointMappedConfigSelector(q);
753 }
754
755
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 framesForwardKinematics(humanoid_model, data, q);
756
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 framesForwardKinematics(reduced_humanoid_model, reduced_data, reduced_q);
757
758
2/2
✓ Branch 1 taken 70 times.
✓ Branch 2 taken 1 times.
142 for (size_t frame_id = 0; frame_id < reduced_humanoid_model.frames.size(); ++frame_id)
759 {
760 140 const Frame & reduced_frame = reduced_humanoid_model.frames[frame_id];
761
2/2
✓ Branch 0 taken 30 times.
✓ Branch 1 taken 40 times.
140 switch (reduced_frame.type)
762 {
763 60 case JOINT:
764 case FIXED_JOINT: {
765 // May not be present in the original model
766
2/4
✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 30 times.
✗ Branch 4 not taken.
60 if (humanoid_model.existJointName(reduced_frame.name))
767 {
768
1/2
✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
60 const JointIndex joint_id = humanoid_model.getJointId(reduced_frame.name);
769
7/14
✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 30 times.
✗ Branch 12 not taken.
✓ Branch 17 taken 30 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 30 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 30 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 30 times.
60 BOOST_CHECK(data.oMi[joint_id].isApprox(reduced_data.oMf[frame_id]));
770 }
771 else if (humanoid_model.existFrame(reduced_frame.name))
772 {
773 const FrameIndex humanoid_frame_id = humanoid_model.getFrameId(reduced_frame.name);
774 BOOST_CHECK(data.oMf[humanoid_frame_id].isApprox(reduced_data.oMf[frame_id]));
775 }
776 else
777 {
778 BOOST_CHECK_MESSAGE(
779 false, "The frame " << reduced_frame.name << " is not presend in the humanoid_model");
780 }
781 60 break;
782 }
783 default: {
784
7/14
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 40 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 40 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 40 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 40 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 40 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 40 times.
80 BOOST_CHECK(humanoid_model.existFrame(reduced_frame.name));
785
1/2
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
80 const FrameIndex humanoid_frame_id = humanoid_model.getFrameId(reduced_frame.name);
786
7/14
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 40 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 40 times.
✗ Branch 12 not taken.
✓ Branch 17 taken 40 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 40 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 40 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 40 times.
80 BOOST_CHECK(data.oMf[humanoid_frame_id].isApprox(reduced_data.oMf[frame_id]));
787 80 break;
788 }
789 }
790 }
791
792 // Test GeometryObject placements
793
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
4 GeometryData geom_data(humanoid_geometry), reduded_geom_data(reduced_humanoid_geometry);
794
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 updateGeometryPlacements(humanoid_model, data, humanoid_geometry, geom_data);
795
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 updateGeometryPlacements(
796 reduced_humanoid_model, reduced_data, reduced_humanoid_geometry, reduded_geom_data);
797
798
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK(geom_data.oMg.size() == reduded_geom_data.oMg.size());
799
2/2
✓ Branch 1 taken 27 times.
✓ Branch 2 taken 1 times.
56 for (FrameIndex i = 0; i < geom_data.oMg.size(); ++i)
800 {
801
7/14
✓ Branch 1 taken 27 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 27 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 27 times.
✗ Branch 12 not taken.
✓ Branch 17 taken 27 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 27 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 27 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 27 times.
54 BOOST_CHECK(geom_data.oMg[i].isApprox(reduded_geom_data.oMg[i]));
802 }
803
804 // Test other signature
805 4 std::vector<GeometryModel> full_geometry_models;
806
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 full_geometry_models.push_back(humanoid_geometry);
807
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 full_geometry_models.push_back(humanoid_geometry);
808
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 full_geometry_models.push_back(humanoid_geometry);
809
810 4 std::vector<GeometryModel> reduced_geometry_models;
811
812
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Model reduced_humanoid_model_other_sig;
813
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(
814 humanoid_model, full_geometry_models, joints_to_lock, reference_config_humanoid,
815 reduced_humanoid_model_other_sig, reduced_geometry_models);
816
817
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 1 times.
2 BOOST_CHECK(reduced_geometry_models[0] == reduced_humanoid_geometry);
818
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 1 times.
2 BOOST_CHECK(reduced_geometry_models[1] == reduced_humanoid_geometry);
819
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 1 times.
2 BOOST_CHECK(reduced_geometry_models[2] == reduced_humanoid_geometry);
820 2 }
821 #endif // PINOCCHIO_WITH_HPP_FCL
822
823
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_findCommonAncestor)
824 {
825
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
826
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(model);
827
828 {
829 size_t id_ancestor1, id_ancestor2;
830
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointIndex ancestor = findCommonAncestor(model, 0, 0, id_ancestor1, id_ancestor2);
831
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(ancestor == 0);
832
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(id_ancestor1 == 0);
833
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(id_ancestor2 == 0);
834 }
835
836 {
837 size_t id_ancestor1, id_ancestor2;
838 JointIndex ancestor =
839
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 findCommonAncestor(model, 0, (JointIndex)(model.njoints - 1), id_ancestor1, id_ancestor2);
840
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(ancestor == 0);
841
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(id_ancestor1 == 0);
842
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(id_ancestor2 == 0);
843 }
844
845 {
846 size_t id_ancestor1, id_ancestor2;
847 JointIndex ancestor =
848
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 findCommonAncestor(model, (JointIndex)(model.njoints - 1), 0, id_ancestor1, id_ancestor2);
849
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(ancestor == 0);
850
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(id_ancestor1 == 0);
851
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(id_ancestor2 == 0);
852 }
853
854 {
855 size_t id_ancestor1, id_ancestor2;
856 JointIndex ancestor =
857
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 findCommonAncestor(model, (JointIndex)(model.njoints - 1), 1, id_ancestor1, id_ancestor2);
858
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK(ancestor == 1);
859
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK(model.supports[(JointIndex)(model.njoints - 1)][id_ancestor1] == ancestor);
860
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK(model.supports[1][id_ancestor2] == ancestor);
861 }
862 2 }
863
864
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_has_configuration_limit)
865 {
866 using namespace Eigen;
867
868 // Test joint specific function hasConfigurationLimit
869
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelFreeFlyer test_joint_ff = JointModelFreeFlyer();
870
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_ff = test_joint_ff.hasConfigurationLimit();
871
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_tangent_ff = test_joint_ff.hasConfigurationLimitInTangent();
872
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 std::vector<bool> expected_cf_limits_ff({true, true, true, false, false, false, false});
873
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 std::vector<bool> expected_cf_limits_tangent_ff({true, true, true, false, false, false});
874
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(cf_limits_ff == expected_cf_limits_ff);
875
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(cf_limits_tangent_ff == expected_cf_limits_tangent_ff);
876
877
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelPlanar test_joint_planar = JointModelPlanar();
878
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_planar = test_joint_planar.hasConfigurationLimit();
879
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_tangent_planar = test_joint_planar.hasConfigurationLimitInTangent();
880
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 std::vector<bool> expected_cf_limits_planar({true, true, false, false});
881
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 std::vector<bool> expected_cf_limits_tangent_planar({true, true, false});
882
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(cf_limits_planar == expected_cf_limits_planar);
883
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(cf_limits_tangent_planar == expected_cf_limits_tangent_planar);
884
885
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelPX test_joint_p = JointModelPX();
886
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_prismatic = test_joint_p.hasConfigurationLimit();
887
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_tangent_prismatic = test_joint_p.hasConfigurationLimitInTangent();
888
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 std::vector<bool> expected_cf_limits_prismatic({true});
889
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 std::vector<bool> expected_cf_limits_tangent_prismatic({true});
890
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(cf_limits_prismatic == expected_cf_limits_prismatic);
891
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(cf_limits_tangent_prismatic == expected_cf_limits_tangent_prismatic);
892
893 // Test model.hasConfigurationLimit() function
894
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
895 2 JointIndex jointId = 0;
896
897
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 jointId = model.addJoint(jointId, JointModelFreeFlyer(), SE3::Identity(), "Joint0");
898
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 jointId = model.addJoint(jointId, JointModelRZ(), SE3::Identity(), "Joint1");
899
3/6
✓ 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.
6 jointId = model.addJoint(
900
4/8
✓ 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.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
4 jointId, JointModelRUBZ(), SE3(Matrix3d::Identity(), Vector3d(1.0, 0.0, 0.0)), "Joint2");
901
902 std::vector<bool> expected_cf_limits_model(
903 {true, true, true, // translation of FF
904 false, false, false, false, // rotation of FF
905 true, // roational joint
906
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 false, false}); // unbounded rotational joint
907
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> model_cf_limits = model.hasConfigurationLimit();
908
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK((model_cf_limits == expected_cf_limits_model));
909
910 // Test model.hasConfigurationLimitInTangent() function
911 std::vector<bool> expected_cf_limits_tangent_model(
912 {true, true, true, // translation of FF
913 false, false, false, // rotation of FF
914 true, // roational joint
915
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 false}); // unbounded rotational joint
916
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> model_cf_limits_tangent = model.hasConfigurationLimitInTangent();
917
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK((model_cf_limits_tangent == expected_cf_limits_tangent_model));
918 2 }
919
920 /// Test transformJointIntoMimic by creating a model manually and
921 /// a model modified with transformJointIntoMimic.
922
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_transform_to_mimic)
923 {
924
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model_exp;
925 // j1 -- j2 -- j3
926 // -- j4 -- j5
927 // with j5 mimicking j3
928 // with j2 mimicking j1
929
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model_exp.addJoint(0, JointModelRX(), SE3::Identity(), "j1");
930
3/6
✓ 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.
6 model_exp.addJoint(
931
3/6
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
4 1, JointModelMimic(JointModelRX(), model_exp.joints[1], 1., 0.), SE3::Identity(), "j2");
932
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model_exp.addJoint(2, JointModelRX(), SE3::Identity(), "j3");
933
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model_exp.addJoint(1, JointModelRX(), SE3::Identity(), "j4");
934
3/6
✓ 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.
6 model_exp.addJoint(
935
3/6
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
4 4, JointModelMimic(JointModelRX(), model_exp.joints[3], 1., 0.), SE3::Identity(), "j5");
936
937 // Model transformed with transformJointIntoMimic
938
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
939
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model_mimic;
940
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model_mimic2;
941
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(0, JointModelRX(), SE3::Identity(), "j1");
942
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(1, JointModelRX(), SE3::Identity(), "j2");
943
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(2, JointModelRX(), SE3::Identity(), "j3");
944
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(1, JointModelRX(), SE3::Identity(), "j4");
945
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(4, JointModelRX(), SE3::Identity(), "j5");
946
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 transformJointIntoMimic(model, 3, 5, 1., 0., model_mimic);
947
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 transformJointIntoMimic(model_mimic, 1, 2, 1., 0., model_mimic2);
948
949
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(model_mimic2 == model_exp);
950 2 }
951
952 /// Test buildMimicModel by creating a model manually and
953 /// a model modified with buildMimicModel
954
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_build_mimic_model)
955 {
956
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model_exp;
957 // j1 -- j2 -- j3
958 // -- j4 -- j5
959 // with j5 mimicking j3
960 // with j2 mimicking j1
961
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model_exp.addJoint(0, JointModelRX(), SE3::Identity(), "j1");
962
3/6
✓ 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.
6 model_exp.addJoint(
963
3/6
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
4 1, JointModelMimic(JointModelRX(), model_exp.joints[1], 1., 0.), SE3::Identity(), "j2");
964
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model_exp.addJoint(2, JointModelRX(), SE3::Identity(), "j3");
965
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model_exp.addJoint(1, JointModelRX(), SE3::Identity(), "j4");
966
3/6
✓ 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.
6 model_exp.addJoint(
967
3/6
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
4 4, JointModelMimic(JointModelRX(), model_exp.joints[3], 2., 1.), SE3::Identity(), "j5");
968
969 // Model transformed with buildMimicModel
970
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
971
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model_mimic;
972
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(0, JointModelRX(), SE3::Identity(), "j1");
973
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(1, JointModelRX(), SE3::Identity(), "j2");
974
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(2, JointModelRX(), SE3::Identity(), "j3");
975
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(1, JointModelRX(), SE3::Identity(), "j4");
976
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 model.addJoint(4, JointModelRX(), SE3::Identity(), "j5");
977
5/10
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
2 buildMimicModel(model, {1, 3}, {2, 5}, {1., 2.}, {0., 1.}, model_mimic);
978
979
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(model_mimic == model_exp);
980 2 }
981
982
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_cast_mimic)
983 {
984
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Model humanoid_model, humanoid_mimic;
985
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(humanoid_model);
986
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Data data(humanoid_model);
987
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_model.check(data));
988
989
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 JointIndex index_p = humanoid_model.getJointId("rleg_shoulder3_joint");
990
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 JointIndex index_s = humanoid_model.getJointId("lleg_shoulder3_joint");
991
992
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 transformJointIntoMimic(humanoid_model, index_p, index_s, 2.0, 0.4, humanoid_mimic);
993
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 data = Data(humanoid_mimic);
994
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_mimic.check(data));
995
996
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 humanoid_mimic = humanoid_mimic.cast<double>();
997
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 data = Data(humanoid_mimic);
998
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_mimic.check(data));
999
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 index_s = humanoid_mimic.getJointId("lleg_shoulder3_joint");
1000
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK_EQUAL(humanoid_mimic.idx_qs[index_s], humanoid_mimic.joints[index_s].idx_q());
1001
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK_EQUAL(humanoid_mimic.idx_vs[index_s], humanoid_mimic.joints[index_s].idx_v());
1002
1003
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 ModelTpl<float> humanoid_mimic_f = humanoid_mimic.cast<float>();
1004
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 DataTpl<float> data_f(humanoid_mimic_f);
1005
7/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK(humanoid_mimic_f.check(data_f));
1006
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 index_s = humanoid_mimic_f.getJointId("lleg_shoulder3_joint");
1007
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK_EQUAL(humanoid_mimic_f.idx_qs[index_s], humanoid_mimic_f.joints[index_s].idx_q());
1008
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1 times.
2 BOOST_CHECK_EQUAL(humanoid_mimic_f.idx_vs[index_s], humanoid_mimic_f.joints[index_s].idx_v());
1009 2 }
1010
1011
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_build_reduced_model_mimic)
1012 {
1013 typedef Model::JointCollection JC;
1014 typedef Model::JointIndex JointIndex;
1015 typedef JC::JointModelRX JointModelRX;
1016 typedef JC::JointModelRUBX JointModelRUBX;
1017
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
1018
1019
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 JointIndex ffidx = model.addJoint(0, JC::JointModelFreeFlyer(), SE3::Identity(), "root_joint");
1020
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 model.addJointFrame(ffidx);
1021
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 JointIndex idx = model.addJoint(ffidx, JointModelRX(), SE3::Identity(), "joint1");
1022
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 model.addJointFrame(idx);
1023
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 idx = model.addJoint(idx, JointModelRUBX(), SE3::Identity(), "joint2");
1024
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 model.addJointFrame(idx);
1025
5/10
✓ 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
2 idx = model.addJoint(idx, JointModelRX(), SE3::Identity(), "joint3");
1026
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 model.addJointFrame(idx);
1027
1028 auto const mimic = JointModelMimic(
1029
4/8
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
4 boost::get<JointModelRX>(model.joints[model.getJointId("joint3")].toVariant()), 1., 0.);
1030
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.
2 idx = model.addJoint(idx, mimic, SE3::Identity(), "joint4");
1031
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 model.addJointFrame(idx);
1032
1033 // We lock a 2 DoF joint that is before the mimicked joint.
1034
3/6
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
4 const std::vector<JointIndex> joints_to_lock = {model.getJointId("joint2")};
1035
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model reduced_model;
1036
10/34
✓ 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.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
2 BOOST_CHECK_NO_THROW(buildReducedModel(model, joints_to_lock, neutral(model), reduced_model));
1037 2 }
1038
1039
33/66
✓ Branch 1 taken 1 times.
✗ Branch 2 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.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
4 BOOST_AUTO_TEST_CASE(test_mimicked_mimicking_vectors)
1040 {
1041
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Model man_model, man_mimic;
1042
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::manipulator(man_model);
1043
1044 // No mimic in model, so vectors should be empty
1045
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
2 BOOST_CHECK(man_model.mimicked_joints.size() == 0);
1046
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
2 BOOST_CHECK(man_model.mimicking_joints.size() == 0);
1047
1048
5/10
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
2 buildMimicModel(man_model, {1, 3}, {2, 5}, {1., 2.}, {0., 1.}, man_mimic);
1049
1050 // Vectors should be of size 2
1051
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
2 BOOST_CHECK(man_mimic.mimicked_joints.size() == 2);
1052
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
2 BOOST_CHECK(man_mimic.mimicking_joints.size() == 2);
1053
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
4 for (size_t i = 1; i < man_mimic.mimicked_joints.size(); i++)
1054 {
1055
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK(man_mimic.mimicked_joints[i - 1] < man_mimic.mimicked_joints[i]);
1056
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK(man_mimic.mimicking_joints[i - 1] < man_mimic.mimicking_joints[i]);
1057 }
1058 2 }
1059
1060 BOOST_AUTO_TEST_SUITE_END()
1061