GCC Code Coverage Report


Directory: ./
File: unittest/model.cpp
Date: 2025-02-12 21:03:38
Exec Total Coverage
Lines: 472 482 97.9%
Branches: 1690 3366 50.2%

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
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)
98 {
99
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
100
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidRandom(model);
101
102 // Check that i ends supports[i]
103
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)
104 {
105 54 const Model::JointModel & jmodel = model.joints[joint_id];
106
107
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());
108
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());
109
110
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());
111
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());
112 }
113 2 }
114
115
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)
116 {
117
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
118
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidRandom(model);
119
120
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);
121 2 }
122
123
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)
124 {
125
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
126
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidRandom(model);
127
128
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>());
129
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>());
130
131 typedef ModelTpl<long double> Modelld;
132
133
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Modelld model2(model);
134
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>());
135 2 }
136
137
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)
138 {
139
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
140
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(model);
141
142
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 PINOCCHIO_ALIGNED_STD_VECTOR(Model) models;
143
2/2
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 1 times.
42 for (size_t k = 0; k < 20; ++k)
144 {
145
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());
146
1/2
✓ Branch 2 taken 20 times.
✗ Branch 3 not taken.
40 buildModels::humanoid(models.back());
147
148
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());
149 }
150 2 }
151
152 #ifdef PINOCCHIO_WITH_HPP_FCL
153 struct AddPrefix
154 {
155 std::string p;
156 35 std::string operator()(const std::string & n)
157 {
158 35 return p + n;
159 }
160 84 Frame operator()(const Frame & _f)
161 {
162 84 Frame f(_f);
163
1/2
✓ Branch 1 taken 84 times.
✗ Branch 2 not taken.
84 f.name = p + f.name;
164 84 return f;
165 }
166 2 AddPrefix(const char * _p)
167
1/2
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
2 : p(_p)
168 {
169 2 }
170 };
171
172
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)
173 {
174
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Model manipulator, humanoid;
175
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 GeometryModel geomManipulator, geomHumanoid;
176
177
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::manipulator(manipulator);
178
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::manipulatorGeometries(manipulator, geomManipulator);
179
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 geomManipulator.addAllCollisionPairs();
180 // Add prefix to joint and frame names
181
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 AddPrefix addManipulatorPrefix("manipulator/");
182
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
6 std::transform(
183 6 ++manipulator.names.begin(), manipulator.names.end(), ++manipulator.names.begin(),
184 addManipulatorPrefix);
185
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
6 std::transform(
186 6 ++manipulator.frames.begin(), manipulator.frames.end(), ++manipulator.frames.begin(),
187 addManipulatorPrefix);
188
189
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);
190
191
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(humanoid);
192
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidGeometries(humanoid, geomHumanoid);
193
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 geomHumanoid.addAllCollisionPairs();
194 // Add prefix to joint and frame names
195
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 AddPrefix addHumanoidPrefix("humanoid/");
196
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
6 std::transform(
197 6 ++humanoid.names.begin(), humanoid.names.end(), ++humanoid.names.begin(), addHumanoidPrefix);
198
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
6 std::transform(
199 6 ++humanoid.frames.begin(), humanoid.frames.end(), ++humanoid.frames.begin(), addHumanoidPrefix);
200
201
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);
202
203
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 typename Model::ConfigVectorType humanoid_config_vector(humanoid.nq);
204
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 typename Model::ConfigVectorType manipulator_config_vector(manipulator.nq);
205
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid_config_vector = randomConfiguration(humanoid);
206
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 manipulator_config_vector = randomConfiguration(manipulator);
207
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));
208
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 manipulator.referenceConfigurations.insert(
209
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 std::make_pair("common_key", manipulator_config_vector));
210
211
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid_config_vector = randomConfiguration(humanoid);
212
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 manipulator_config_vector = randomConfiguration(manipulator);
213
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));
214
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 manipulator.referenceConfigurations.insert(
215
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 std::make_pair("manipulator_key", manipulator_config_vector));
216
217 // TODO fix inertia of the base
218
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 manipulator.inertias[0].setRandom();
219
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 SE3 aMb = SE3::Random();
220
221 // First append a model to the universe frame.
222
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model1;
223
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel geomModel1;
224 2 FrameIndex fid = 0;
225
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 appendModel(
226
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid, manipulator, geomHumanoid, geomManipulator, fid, SE3::Identity(), model1, geomModel1);
227 typedef typename Model::ConfigVectorMap ConfigVectorMap;
228
229
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 typename Model::ConfigVectorType neutral_config_vector(model1.nq);
230
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 neutral(model1, neutral_config_vector);
231
232
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);
233 2 for (typename ConfigVectorMap::const_iterator config_it = model1.referenceConfigurations.begin();
234
2/2
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 1 times.
8 config_it != model1.referenceConfigurations.end(); ++config_it)
235 {
236 6 const std::string & config_name = config_it->first;
237 6 const typename Model::ConfigVectorType & config_vector = config_it->second;
238
239 typename ConfigVectorMap::const_iterator humanoid_config =
240
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 humanoid.referenceConfigurations.find(config_name);
241 typename ConfigVectorMap::const_iterator manipulator_config =
242
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 manipulator.referenceConfigurations.find(config_name);
243
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)
244 {
245 210 const JointModel & joint_model1 = model1.joints[joint_id];
246 210 if (
247 210 humanoid_config != humanoid.referenceConfigurations.end()
248
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]))
249 { // key and joint exists in humanoid
250 const JointModel & joint_model_humanoid =
251
1/2
✓ Branch 2 taken 58 times.
✗ Branch 3 not taken.
116 humanoid.joints[humanoid.getJointId(model1.names[joint_id])];
252
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(
253 joint_model_humanoid.jointConfigSelector(humanoid_config->second)
254 == joint_model1.jointConfigSelector(config_vector));
255 // std::cerr<<"humanoid "<<config_name<<" "<<model1.names[joint_id]<<std::endl;
256 }
257 94 else if (
258 94 manipulator_config != manipulator.referenceConfigurations.end()
259
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]))
260 { // key and joint exists in manipulator.
261 const JointModel & joint_model_manipulator =
262
1/2
✓ Branch 2 taken 12 times.
✗ Branch 3 not taken.
24 manipulator.joints[manipulator.getJointId(model1.names[joint_id])];
263
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(
264 joint_model_manipulator.jointConfigSelector(manipulator_config->second)
265 == joint_model1.jointConfigSelector(config_vector));
266 // std::cerr<<"manipulator "<<config_name<<" "<<model1.names[joint_id]<<std::endl;
267 }
268 else
269 { // joint and key combo not found, should with neutral
270
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(
271 joint_model1.jointConfigSelector(neutral_config_vector)
272 == joint_model1.jointConfigSelector(config_vector));
273 // std::cerr<<"neutral "<<config_name<<" "<<model1.names[joint_id]<<std::endl;
274 }
275 }
276 }
277
278 {
279
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());
280
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model3;
281
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);
282
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);
283
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);
284
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);
285 2 }
286
287
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Data data1(model1);
288
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));
289
290
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);
291
292 // Second, append a model to a moving frame.
293
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
294
295
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel geomModel;
296
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(
297 "humanoid/add_manipulator", humanoid.getJointId("humanoid/chest2_joint"),
298 humanoid.getFrameId("humanoid/chest2_joint"), aMb, OP_FRAME));
299
300 // Append manipulator to chest2_joint of humanoid
301
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 appendModel(
302
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid, manipulator, geomHumanoid, geomManipulator, fid, SE3::Identity(), model, geomModel);
303
304
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 neutral_config_vector.resize(model.nq);
305
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 neutral(model, neutral_config_vector);
306
307
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);
308 2 for (typename ConfigVectorMap::const_iterator config_it = model.referenceConfigurations.begin();
309
2/2
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 1 times.
8 config_it != model.referenceConfigurations.end(); ++config_it)
310 {
311 6 const std::string & config_name = config_it->first;
312 6 const typename Model::ConfigVectorType & config_vector = config_it->second;
313
314 typename ConfigVectorMap::const_iterator humanoid_config =
315
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 humanoid.referenceConfigurations.find(config_name);
316 typename ConfigVectorMap::const_iterator manipulator_config =
317
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 manipulator.referenceConfigurations.find(config_name);
318
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)
319 {
320 210 const JointModel & joint_model = model.joints[joint_id];
321 210 if (
322 210 humanoid_config != humanoid.referenceConfigurations.end()
323
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]))
324 { // key and joint exists in humanoid
325 const JointModel & joint_model_humanoid =
326
1/2
✓ Branch 2 taken 58 times.
✗ Branch 3 not taken.
116 humanoid.joints[humanoid.getJointId(model.names[joint_id])];
327
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(
328 joint_model_humanoid.jointConfigSelector(humanoid_config->second)
329 == joint_model.jointConfigSelector(config_vector));
330 // std::cerr<<"humanoid "<<config_name<<" "<<model.names[joint_id]<<std::endl;
331 }
332 94 else if (
333 94 manipulator_config != manipulator.referenceConfigurations.end()
334
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]))
335 { // key and joint exists in manipulator.
336 const JointModel & joint_model_manipulator =
337
1/2
✓ Branch 2 taken 12 times.
✗ Branch 3 not taken.
24 manipulator.joints[manipulator.getJointId(model.names[joint_id])];
338
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(
339 joint_model_manipulator.jointConfigSelector(manipulator_config->second)
340 == joint_model.jointConfigSelector(config_vector));
341 // std::cerr<<"manipulator "<<config_name<<" "<<model.names[joint_id]<<std::endl;
342 }
343 else
344 { // joint and key combo not found, should with neutral
345
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(
346 joint_model.jointConfigSelector(neutral_config_vector)
347 == joint_model.jointConfigSelector(config_vector));
348 // std::cerr<<"neutral "<<config_name<<" "<<model.names[joint_id]<<std::endl;
349 }
350 }
351 }
352
353 {
354
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());
355
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model3;
356
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);
357
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);
358
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);
359
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);
360 2 }
361
362
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);
363
364
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Data data(model);
365
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));
366
367 // Check the model
368
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(
369 model.getJointId("humanoid/chest2_joint"),
370 model.parents[model.getJointId("manipulator/shoulder1_joint")]);
371
372 // check the joint order and the inertias
373 // All the joints of the manipulator should be at the end of the merged model
374 2 JointIndex hnj = (JointIndex)humanoid.njoints;
375
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");
376
2/2
✓ Branch 0 taken 29 times.
✓ Branch 1 taken 1 times.
60 for (JointIndex jid = 1; jid < hnj; ++jid)
377 {
378
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]);
379
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]);
380
2/2
✓ Branch 0 taken 28 times.
✓ Branch 1 taken 1 times.
58 if (jid != chest2)
381
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]);
382 else
383
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(
384 model.inertias[jid].isApprox(
385 manipulator.inertias[0].se3Action(aMb) + humanoid.inertias[jid]),
386 model.inertias[jid] << " != "
387 << manipulator.inertias[0].se3Action(aMb) + humanoid.inertias[jid]);
388
389
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]);
390 }
391
2/2
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
12 for (JointIndex jid = 1; jid < manipulator.joints.size() - 1; ++jid)
392 {
393
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]);
394
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]);
395
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]);
396
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 4 times.
10 if (jid == 1)
397
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(
398 model.jointPlacements[hnj - 1 + jid], aMb * manipulator.jointPlacements[jid]);
399 else
400
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]);
401 }
402 // Check the frames
403
2/2
✓ Branch 1 taken 70 times.
✓ Branch 2 taken 1 times.
142 for (FrameIndex fid = 1; fid < humanoid.frames.size(); ++fid)
404 {
405
1/2
✓ Branch 3 taken 70 times.
✗ Branch 4 not taken.
140 const Frame &frame = humanoid.frames[fid], parent = humanoid.frames[frame.parentFrame];
406
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));
407
1/2
✓ Branch 1 taken 70 times.
✗ Branch 2 not taken.
140 const Frame &nframe = model.frames[model.getFrameId(frame.name, frame.type)],
408
1/2
✓ Branch 2 taken 70 times.
✗ Branch 3 not taken.
140 nparent = model.frames[nframe.parentFrame];
409
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);
410
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);
411 140 }
412
2/2
✓ Branch 1 taken 15 times.
✓ Branch 2 taken 1 times.
32 for (FrameIndex fid = 1; fid < manipulator.frames.size(); ++fid)
413 {
414
1/2
✓ Branch 3 taken 15 times.
✗ Branch 4 not taken.
30 const Frame &frame = manipulator.frames[fid], parent = manipulator.frames[frame.parentFrame];
415
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));
416
1/2
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
30 const Frame &nframe = model.frames[model.getFrameId(frame.name, frame.type)],
417
1/2
✓ Branch 2 taken 15 times.
✗ Branch 3 not taken.
30 nparent = model.frames[nframe.parentFrame];
418
2/2
✓ Branch 0 taken 14 times.
✓ Branch 1 taken 1 times.
30 if (frame.parentFrame > 0)
419 {
420
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);
421
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);
422 }
423 30 }
424
425 {
426
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());
427
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);
428
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid.addFrame(additional_frame);
429
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 double mass_humanoid = computeTotalMass(humanoid);
430
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 double mass_manipulator = computeTotalMass(manipulator);
431 2 double total_mass = mass_manipulator + mass_humanoid;
432
433
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model4;
434
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel geomModel4;
435
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 appendModel(
436
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 humanoid, manipulator, geomHumanoid, geomManipulator, 0, SE3::Identity(), model4, geomModel4);
437
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);
438 2 }
439 {
440
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model ff_model;
441
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");
442
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 ff_model.addJointFrame(ff_id);
443
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel ff_geom_model = GeometryModel();
444
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");
445
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model4;
446
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel geomModel4;
447
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 appendModel(
448
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 ff_model, manipulator, ff_geom_model, geomManipulator, frame_id, SE3::Identity(), model4,
449 geomModel4);
450
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]);
451 2 }
452
453 {
454
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Model model5, gripperModel;
455
456
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());
457
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 SE3 pos(1);
458
459
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.);
460
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");
461
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gripperModel.addJointFrame(idx);
462
463
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.);
464
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");
465
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gripperModel.addJointFrame(idx);
466
467
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 SE3 transformManGr = SE3::Random();
468 2 FrameIndex fid = (FrameIndex)(manipulator.frames.size() - 1);
469
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 appendModel(manipulator, gripperModel, fid, transformManGr, model5);
470
471
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");
472
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");
473
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(
474 model5.jointPlacements[jid5].isApprox(transformManGr * gripperModel.jointPlacements[jidG]));
475
476
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");
477
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");
478
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(
479 model5.jointPlacements[jid5].isApprox(transformManGr * gripperModel.jointPlacements[jidG]));
480 2 }
481 2 }
482 #endif
483
484
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)
485 {
486
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model humanoid_model;
487
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(humanoid_model);
488
489
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;
490
491
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.);
492
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.);
493
494
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid_model.referenceConfigurations.insert(
495
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)));
496
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Eigen::VectorXd reference_config_humanoid = randomConfiguration(humanoid_model);
497 Model humanoid_copy_model =
498
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(humanoid_model, empty_index_vector, reference_config_humanoid);
499
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 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);
501
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);
502
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);
503
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(
504 humanoid_copy_model.referenceConfigurations["neutral"].isApprox(neutral(humanoid_copy_model)));
505
506 2 const std::vector<JointIndex> empty_joints_to_lock;
507
508 const Model reduced_humanoid_model =
509
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(humanoid_model, empty_joints_to_lock, reference_config_humanoid);
510
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);
511
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);
512
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);
513
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);
514
515
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)
516 {
517
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(
518 reduced_humanoid_model.inertias[joint_id].isApprox(humanoid_model.inertias[joint_id]));
519 }
520 2 }
521
522
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)
523 {
524
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model humanoid_model;
525
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(humanoid_model);
526
527
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;
528
529
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.);
530
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.);
531
532
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 humanoid_model.referenceConfigurations.insert(
533
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)));
534
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Eigen::VectorXd reference_config_humanoid = randomConfiguration(humanoid_model);
535 Model humanoid_copy_model =
536
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(humanoid_model, empty_index_vector, reference_config_humanoid);
537
538
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);
539
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);
540
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);
541
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(
542 humanoid_copy_model.referenceConfigurations["neutral"].isApprox(neutral(humanoid_copy_model)));
543
544 2 std::vector<JointIndex> joints_to_lock;
545
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 const std::string joint1_to_lock = "rarm_shoulder2_joint";
546
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));
547
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 const std::string joint2_to_lock = "larm_shoulder2_joint";
548
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));
549
550 Model reduced_humanoid_model =
551
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(humanoid_model, joints_to_lock, reference_config_humanoid);
552
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(
553 reduced_humanoid_model.njoints == humanoid_model.njoints - (int)joints_to_lock.size());
554
555
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);
556
557
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model reduced_humanoid_model_other_signature;
558
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 buildReducedModel(
559 humanoid_model, joints_to_lock, reference_config_humanoid,
560 reduced_humanoid_model_other_signature);
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 == reduced_humanoid_model_other_signature);
562
563 // Check that forward kinematics give same results
564
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);
565
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Eigen::VectorXd q = reference_config_humanoid;
566
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Eigen::VectorXd reduced_q(reduced_humanoid_model.nq);
567
568
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)
569 {
570 const JointIndex reference_joint_id =
571
1/2
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
54 humanoid_model.getJointId(reduced_humanoid_model.names[joint_id]);
572
573
1/2
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
54 reduced_humanoid_model.joints[joint_id].jointConfigSelector(reduced_q) =
574
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);
575 }
576
577
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(
578 neutral(reduced_humanoid_model)));
579
580
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 framesForwardKinematics(humanoid_model, data, q);
581
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 framesForwardKinematics(reduced_humanoid_model, reduced_data, reduced_q);
582
583
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)
584 {
585 140 const Frame & reduced_frame = reduced_humanoid_model.frames[frame_id];
586
2/2
✓ Branch 0 taken 30 times.
✓ Branch 1 taken 40 times.
140 switch (reduced_frame.type)
587 {
588 60 case JOINT:
589 case FIXED_JOINT: {
590 // May not be present in the original model
591
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))
592 {
593
1/2
✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
60 const JointIndex joint_id = humanoid_model.getJointId(reduced_frame.name);
594
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]));
595 }
596 else if (humanoid_model.existFrame(reduced_frame.name))
597 {
598 const FrameIndex humanoid_frame_id = humanoid_model.getFrameId(reduced_frame.name);
599 BOOST_CHECK(data.oMf[humanoid_frame_id].isApprox(reduced_data.oMf[frame_id]));
600 }
601 else
602 {
603 BOOST_CHECK_MESSAGE(
604 false, "The frame " << reduced_frame.name << " is not presend in the humanoid_model");
605 }
606 60 break;
607 }
608 default: {
609
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));
610
1/2
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
80 const FrameIndex humanoid_frame_id = humanoid_model.getFrameId(reduced_frame.name);
611
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]));
612 80 break;
613 }
614 }
615 }
616 2 }
617
618
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)
619 {
620 typedef PINOCCHIO_ALIGNED_STD_VECTOR(Model) VectorOfModels;
621
622
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 VectorOfModels models;
623
2/2
✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 times.
202 for (size_t k = 0; k < 100; ++k)
624 {
625
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());
626
1/2
✓ Branch 2 taken 100 times.
✗ Branch 3 not taken.
200 buildModels::humanoidRandom(models[k]);
627 }
628 2 }
629
630 #ifdef PINOCCHIO_WITH_HPP_FCL
631
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)
632 {
633
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model humanoid_model;
634
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(humanoid_model);
635
636
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.);
637
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.);
638
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 const Eigen::VectorXd reference_config_humanoid = randomConfiguration(humanoid_model);
639
640
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel humanoid_geometry;
641
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoidGeometries(humanoid_model, humanoid_geometry);
642
643
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;
644
645
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model humanoid_copy_model;
646
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel humanoid_copy_geometry;
647
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(
648 humanoid_model, humanoid_geometry, empty_index_vector, reference_config_humanoid,
649 humanoid_copy_model, humanoid_copy_geometry);
650
651
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);
652
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);
653
654 2 std::vector<JointIndex> joints_to_lock;
655
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 const std::string joint1_to_lock = "rarm_shoulder2_joint";
656
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));
657
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 const std::string joint2_to_lock = "larm_shoulder2_joint";
658
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));
659
660
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model reduced_humanoid_model;
661
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 GeometryModel reduced_humanoid_geometry;
662
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(
663 humanoid_model, humanoid_geometry, joints_to_lock, reference_config_humanoid,
664 reduced_humanoid_model, reduced_humanoid_geometry);
665
666
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);
667
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);
668
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(
669 reduced_humanoid_geometry.geometryObjects.size() == humanoid_geometry.geometryObjects.size());
670
671
2/2
✓ Branch 1 taken 27 times.
✓ Branch 2 taken 1 times.
56 for (Index i = 0; i < humanoid_geometry.geometryObjects.size(); ++i)
672 {
673 54 const GeometryObject & go1 = humanoid_geometry.geometryObjects[i];
674 54 const GeometryObject & go2 = reduced_humanoid_geometry.geometryObjects[i];
675
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);
676
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);
677
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);
678
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);
679
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);
680
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);
681
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);
682
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);
683
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(
684 humanoid_model.frames[go1.parentFrame].name,
685 reduced_humanoid_model.frames[go2.parentFrame].name);
686 }
687
688
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);
689
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 const Eigen::VectorXd q = reference_config_humanoid;
690
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Eigen::VectorXd reduced_q(reduced_humanoid_model.nq);
691
692
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)
693 {
694 const JointIndex reference_joint_id =
695
1/2
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
54 humanoid_model.getJointId(reduced_humanoid_model.names[joint_id]);
696
697
1/2
✓ Branch 2 taken 27 times.
✗ Branch 3 not taken.
54 reduced_humanoid_model.joints[joint_id].jointConfigSelector(reduced_q) =
698
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);
699 }
700
701
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 framesForwardKinematics(humanoid_model, data, q);
702
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 framesForwardKinematics(reduced_humanoid_model, reduced_data, reduced_q);
703
704
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)
705 {
706 140 const Frame & reduced_frame = reduced_humanoid_model.frames[frame_id];
707
2/2
✓ Branch 0 taken 30 times.
✓ Branch 1 taken 40 times.
140 switch (reduced_frame.type)
708 {
709 60 case JOINT:
710 case FIXED_JOINT: {
711 // May not be present in the original model
712
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))
713 {
714
1/2
✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
60 const JointIndex joint_id = humanoid_model.getJointId(reduced_frame.name);
715
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]));
716 }
717 else if (humanoid_model.existFrame(reduced_frame.name))
718 {
719 const FrameIndex humanoid_frame_id = humanoid_model.getFrameId(reduced_frame.name);
720 BOOST_CHECK(data.oMf[humanoid_frame_id].isApprox(reduced_data.oMf[frame_id]));
721 }
722 else
723 {
724 BOOST_CHECK_MESSAGE(
725 false, "The frame " << reduced_frame.name << " is not presend in the humanoid_model");
726 }
727 60 break;
728 }
729 default: {
730
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));
731
1/2
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
80 const FrameIndex humanoid_frame_id = humanoid_model.getFrameId(reduced_frame.name);
732
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]));
733 80 break;
734 }
735 }
736 }
737
738 // Test GeometryObject placements
739
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);
740
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 updateGeometryPlacements(humanoid_model, data, humanoid_geometry, geom_data);
741
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 updateGeometryPlacements(
742 reduced_humanoid_model, reduced_data, reduced_humanoid_geometry, reduded_geom_data);
743
744
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());
745
2/2
✓ Branch 1 taken 27 times.
✓ Branch 2 taken 1 times.
56 for (FrameIndex i = 0; i < geom_data.oMg.size(); ++i)
746 {
747
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]));
748 }
749
750 // Test other signature
751 4 std::vector<GeometryModel> full_geometry_models;
752
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 full_geometry_models.push_back(humanoid_geometry);
753
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 full_geometry_models.push_back(humanoid_geometry);
754
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 full_geometry_models.push_back(humanoid_geometry);
755
756 4 std::vector<GeometryModel> reduced_geometry_models;
757
758
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Model reduced_humanoid_model_other_sig;
759
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildReducedModel(
760 humanoid_model, full_geometry_models, joints_to_lock, reference_config_humanoid,
761 reduced_humanoid_model_other_sig, reduced_geometry_models);
762
763
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);
764
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);
765
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);
766 2 }
767 #endif // PINOCCHIO_WITH_HPP_FCL
768
769
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)
770 {
771
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
772
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 buildModels::humanoid(model);
773
774 {
775 size_t id_ancestor1, id_ancestor2;
776
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointIndex ancestor = findCommonAncestor(model, 0, 0, id_ancestor1, id_ancestor2);
777
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);
778
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);
779
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);
780 }
781
782 {
783 size_t id_ancestor1, id_ancestor2;
784 JointIndex ancestor =
785
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 findCommonAncestor(model, 0, (JointIndex)(model.njoints - 1), id_ancestor1, id_ancestor2);
786
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);
787
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);
788
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);
789 }
790
791 {
792 size_t id_ancestor1, id_ancestor2;
793 JointIndex ancestor =
794
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 findCommonAncestor(model, (JointIndex)(model.njoints - 1), 0, id_ancestor1, id_ancestor2);
795
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);
796
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);
797
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);
798 }
799
800 {
801 size_t id_ancestor1, id_ancestor2;
802 JointIndex ancestor =
803
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 findCommonAncestor(model, (JointIndex)(model.njoints - 1), 1, id_ancestor1, id_ancestor2);
804
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);
805
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);
806
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);
807 }
808 2 }
809
810
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)
811 {
812 using namespace Eigen;
813
814 // Test joint specific function hasConfigurationLimit
815
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelFreeFlyer test_joint_ff = JointModelFreeFlyer();
816
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_ff = test_joint_ff.hasConfigurationLimit();
817
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_tangent_ff = test_joint_ff.hasConfigurationLimitInTangent();
818
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});
819
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});
820
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);
821
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);
822
823
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelPlanar test_joint_planar = JointModelPlanar();
824
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_planar = test_joint_planar.hasConfigurationLimit();
825
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_tangent_planar = test_joint_planar.hasConfigurationLimitInTangent();
826
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 std::vector<bool> expected_cf_limits_planar({true, true, false, false});
827
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 std::vector<bool> expected_cf_limits_tangent_planar({true, true, false});
828
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);
829
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);
830
831
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointModelPX test_joint_p = JointModelPX();
832
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_prismatic = test_joint_p.hasConfigurationLimit();
833
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> cf_limits_tangent_prismatic = test_joint_p.hasConfigurationLimitInTangent();
834
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 std::vector<bool> expected_cf_limits_prismatic({true});
835
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 std::vector<bool> expected_cf_limits_tangent_prismatic({true});
836
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);
837
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);
838
839 // Test model.hasConfigurationLimit() function
840
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Model model;
841 2 JointIndex jointId = 0;
842
843
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");
844
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");
845
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(
846
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");
847
848 std::vector<bool> expected_cf_limits_model(
849 {true, true, true, // translation of FF
850 false, false, false, false, // rotation of FF
851 true, // roational joint
852
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 false, false}); // unbounded rotational joint
853
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> model_cf_limits = model.hasConfigurationLimit();
854
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));
855
856 // Test model.hasConfigurationLimitInTangent() function
857 std::vector<bool> expected_cf_limits_tangent_model(
858 {true, true, true, // translation of FF
859 false, false, false, // rotation of FF
860 true, // roational joint
861
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 false}); // unbounded rotational joint
862
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 std::vector<bool> model_cf_limits_tangent = model.hasConfigurationLimitInTangent();
863
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));
864 2 }
865
866 BOOST_AUTO_TEST_SUITE_END()
867