GCC Code Coverage Report


Directory: ./
File: tests/test-kinodynamic.cc
Date: 2024-08-10 11:29:48
Exec Total Coverage
Lines: 428 428 100.0%
Branches: 1946 3854 50.5%

Line Branch Exec Source
1 // Copyright (c) 2016, LAAS-CNRS
2 // Authors: Pierre Fernbach (pierre.fernbach@laas.fr)
3 //
4
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // 1. Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 //
12 // 2. Redistributions in binary form must reproduce the above copyright
13 // notice, this list of conditions and the following disclaimer in the
14 // documentation and/or other materials provided with the distribution.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 // HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
27 // DAMAGE.
28
29 #define BOOST_TEST_MODULE kinodynamic
30
31 #include <../tests/util.hh>
32 #include <boost/assign.hpp>
33 #include <boost/test/included/unit_test.hpp>
34 #include <fstream>
35 #include <hpp/core/configuration-shooter/uniform.hh>
36 #include <hpp/core/connected-component.hh>
37 #include <hpp/core/fwd.hh>
38 #include <hpp/core/joint-bound-validation.hh>
39 #include <hpp/core/kinodynamic-distance.hh>
40 #include <hpp/core/kinodynamic-oriented-path.hh>
41 #include <hpp/core/kinodynamic-path.hh>
42 #include <hpp/core/nearest-neighbor.hh>
43 #include <hpp/core/node.hh>
44 #include <hpp/core/path-validation/discretized-collision-checking.hh>
45 #include <hpp/core/problem.hh>
46 #include <hpp/core/roadmap.hh>
47 #include <hpp/core/steering-method/steering-kinodynamic.hh>
48 #include <hpp/core/weighed-distance.hh>
49 #include <hpp/pinocchio/configuration.hh>
50 #include <hpp/pinocchio/joint.hh>
51 #include <hpp/pinocchio/liegroup.hh>
52 #include <hpp/pinocchio/simple-device.hh>
53 #include <hpp/util/debug.hh>
54 #include <ostream>
55 #include <sstream>
56 #include <vector>
57
58 using namespace hpp::core;
59 using namespace hpp::pinocchio;
60
61 BOOST_AUTO_TEST_SUITE(test_hpp_core)
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(kinodynamic) {
64
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
4 DevicePtr_t robot = unittest::makeDevice(unittest::HumanoidSimple);
65
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->lowerBound(0, -10);
66
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->lowerBound(1, -10);
67
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->lowerBound(2, 0);
68
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->upperBound(0, 10);
69
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->upperBound(1, 10);
70
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->upperBound(2, 0);
71
72
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 robot->setDimensionExtraConfigSpace(6);
73 // define velocity and acceleration bounds
74 2 const double vMax = 2;
75 2 const double aMax = 0.5;
76
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(0) = -vMax;
77
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(1) = -vMax;
78
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(2) = 0;
79
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(0) = vMax;
80
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(1) = vMax;
81
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(2) = 0;
82
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(3) = -aMax;
83
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(4) = -aMax;
84
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(5) = 0;
85
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(3) = aMax;
86
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(4) = aMax;
87
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(5) = 0;
88
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 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_MESSAGE(robot->extraConfigSpace().dimension() == 6,
89 "error during creation of the robot");
90
91 // Create steering method
92
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 ProblemPtr_t p = Problem::create(robot);
93
3/6
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
2 p->setParameter(std::string("Kinodynamic/velocityBound"), Parameter(vMax));
94
2/4
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
4 p->setParameter(std::string("Kinodynamic/accelerationBound"),
95
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Parameter(aMax));
96
97
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 steeringMethod::KinodynamicPtr_t sm = steeringMethod::Kinodynamic::create(p);
98
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 KinodynamicDistancePtr_t dist = KinodynamicDistance::createFromProblem(p);
99
100 // try to connect several states : (notation : sx = (px, vx, ax)
101
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 Configuration_t q0(robot->currentConfiguration());
102
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 Configuration_t q1(robot->currentConfiguration());
103
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 size_t indexECS = robot->configSize() - 6;
104
105 JointBoundValidationPtr_t jointValidation =
106
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointBoundValidation::create(robot);
107 pathValidation::DiscretizedPtr_t pathVal =
108
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 pathValidation::createDiscretizedCollisionChecking(robot, 0.001);
109
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 pathVal->add(jointValidation);
110 2 PathValidationReportPtr_t validationReport;
111 2 PathPtr_t validPath;
112
113 // 1) simple case with null velocity, require a 2 segment trajectory
114 // px0 = (0,0,0) , px1 = (1,0,0)
115
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q0[0] = 0;
116
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q1[0] = 1;
117
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.
4 PathPtr_t path = (*sm)(q0, q1);
118
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_REQUIRE(path);
119 2 KinodynamicPathPtr_t pathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, path);
120
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_REQUIRE(pathKino);
121
122 // length should be 2.82843
123
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 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 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK_CLOSE(path->length(), 2.82843, 1e-3);
124
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 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(path->length(), (*dist)(q0, q1));
125 // check if 2 segment only
126
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getTv()[0], 0.);
127
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT0()[0], 0.);
128
12/24
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 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 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 1 times.
2 BOOST_CHECK_EQUAL(
129 pathKino->getT1()[0] + pathKino->getTv()[0] + pathKino->getT2()[0],
130 path->length());
131
132 // check if no unecessary motion :
133
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
6 for (size_t i = 1; i < 3; i++) {
134
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT0()[i], 0.);
135
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT1()[i], 0.);
136
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT2()[i], 0.);
137
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getA1()[i], 0.);
138
8/16
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getTv()[i], path->length());
139 }
140 // check if the trajectory is really bang-bang :
141
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getA1()[0], aMax);
142
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT1()[0], pathKino->getT2()[0]);
143 // check if bounds are respected :
144
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(pathVal->validate(path, false, validPath, validationReport));
145
146 // 2) null velocity but hit velocity bounds, require 3 segments trajectory
147
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q0[0] = -2;
148
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q1[0] = 7;
149
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.
2 path = (*sm)(q0, q1);
150
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_REQUIRE(path);
151 2 pathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, path);
152
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_REQUIRE(pathKino);
153
154 // check length
155
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 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 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK_CLOSE(path->length(), 8.5, 1e-3);
156
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 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(path->length(), (*dist)(q0, q1));
157 // check if 3 segment
158
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT0()[0], 0.);
159
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK(pathKino->getT1()[0] > 0);
160
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK(pathKino->getTv()[0] > 0);
161
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK(pathKino->getT2()[0] > 0);
162
12/24
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 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 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 1 times.
2 BOOST_CHECK_EQUAL(
163 pathKino->getT1()[0] + pathKino->getTv()[0] + pathKino->getT2()[0],
164 path->length());
165
166 // check if no unecessary motion :
167
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
6 for (size_t i = 1; i < 3; i++) {
168
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT0()[i], 0.);
169
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT1()[i], 0.);
170
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT2()[i], 0.);
171
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getA1()[i], 0.);
172
8/16
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getTv()[i], path->length());
173 }
174 // check if the trajectory is really bang-bang :
175
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getA1()[0], aMax);
176
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT1()[0], pathKino->getT2()[0]);
177 // check if bounds are respected :
178
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(pathVal->validate(path, false, validPath, validationReport));
179
180 // 3) only velocity change :
181 // px0 = (0,2,0) ; px1 = (0,-1,0)
182
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q0[0] = 0;
183
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q0[indexECS] = 2;
184
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q1[0] = 0;
185
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q1[indexECS] = -1;
186
187
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.
2 path = (*sm)(q0, q1);
188
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_REQUIRE(path);
189 2 pathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, path);
190
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_REQUIRE(pathKino);
191
192 // check length
193
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 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 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK_CLOSE(path->length(), 8.32456, 1e-3);
194
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 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(path->length(), (*dist)(q0, q1));
195 // check if 2 segment
196
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT0()[0], 0.);
197
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK(pathKino->getT1()[0] > 0);
198
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getTv()[0], 0);
199
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK(pathKino->getT2()[0] > 0);
200
12/24
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 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 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 1 times.
2 BOOST_CHECK_EQUAL(
201 pathKino->getT1()[0] + pathKino->getTv()[0] + pathKino->getT2()[0],
202 path->length());
203
204 // check if no unecessary motion :
205
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
6 for (size_t i = 1; i < 3; i++) {
206
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT0()[i], 0.);
207
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT1()[i], 0.);
208
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT2()[i], 0.);
209
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getA1()[i], 0.);
210
8/16
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getTv()[i], path->length());
211 }
212 // check if the trajectory is really bang-bang :
213
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getA1()[0], -aMax);
214 // check if bounds are respected :
215
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(pathVal->validate(path, false, validPath, validationReport));
216
217 // 4) non null velocity (and sigma == 0)
218 // px0 = (0,1,0) ; px1 = (1,1,0)
219
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q0[0] = 0;
220
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q0[indexECS] = 1;
221
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q1[0] = 1;
222
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q1[indexECS] = 1;
223
224
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.
2 path = (*sm)(q0, q1);
225
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_REQUIRE(path);
226 2 pathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, path);
227
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_REQUIRE(pathKino);
228
229 // check length
230
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 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 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK_CLOSE(path->length(), 0.89898, 1e-3);
231
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 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(path->length(), (*dist)(q0, q1));
232 // check if 2 segment
233
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT0()[0], 0.);
234
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK(pathKino->getT1()[0] > 0);
235
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getTv()[0], 0);
236
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK(pathKino->getT2()[0] > 0);
237
12/24
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 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 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 1 times.
2 BOOST_CHECK_EQUAL(
238 pathKino->getT1()[0] + pathKino->getTv()[0] + pathKino->getT2()[0],
239 path->length());
240
241 // check if no unecessary motion :
242
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
6 for (size_t i = 1; i < 3; i++) {
243
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT0()[i], 0.);
244
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT1()[i], 0.);
245
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT2()[i], 0.);
246
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getA1()[i], 0.);
247
8/16
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getTv()[i], path->length());
248 }
249 // check if the trajectory is really bang-bang :
250
8/16
✓ 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 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
2 BOOST_CHECK_CLOSE(pathKino->getA1()[0], aMax, 1e-3);
251
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT1()[0], pathKino->getT2()[0]);
252 // check if bounds are respected :
253
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(pathVal->validate(path, false, validPath, validationReport));
254
255 // 5) case with infeasible interval
256 // infeasible interval on x axis is [1.172,6.828] , add a motion on y axis
257 // with a min time inside this interval : py0 = (-2,0,0) py1 = (1,0,0)
258
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q0[1] = -2;
259
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q0[indexECS + 1] = 0;
260
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q1[1] = 1;
261
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q1[indexECS + 1] = 0;
262
263
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.
2 path = (*sm)(q0, q1);
264
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 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_REQUIRE(path);
265 2 pathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, path);
266
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_REQUIRE(pathKino);
267
268 // check length
269
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 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 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK_CLOSE(path->length(), 6.82843, 1e-3);
270 // don't check if distance == length here because the distance method don't
271 // consider infeasile interval It's a arbitrary choice made to speed up the
272 // computation of the distance
273
274 // check if 2 segment
275
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
6 for (size_t i = 0; i < 2; i++) {
276
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT0()[0], 0.);
277
8/16
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
4 BOOST_CHECK(pathKino->getT1()[i] > 0);
278
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getTv()[i], 0);
279
8/16
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
4 BOOST_CHECK(pathKino->getT2()[i] > 0);
280
12/24
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 2 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 2 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✓ Branch 35 taken 2 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 2 times.
4 BOOST_CHECK_EQUAL(
281 pathKino->getT1()[i] + pathKino->getTv()[i] + pathKino->getT2()[i],
282 path->length());
283 }
284
285 // check if no unecessary motion :
286
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT0()[2], 0.);
287
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT1()[2], 0.);
288
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT2()[2], 0.);
289
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getA1()[2], 0.);
290
8/16
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getTv()[2], path->length());
291 // check if the trajectory is really bang-bang :
292
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getA1()[0], -aMax);
293
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT1()[0], pathKino->getT2()[0]);
294
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT1()[1], pathKino->getT2()[1]);
295
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK(pathKino->getA1()[1] < aMax);
296
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK(pathKino->getA1()[1] > 0);
297
298 // check if bounds are respected :
299
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(pathVal->validate(path, false, validPath, validationReport));
300
301 // ## check extract method
302
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q0[0] = -2;
303
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q0[indexECS] = 0;
304
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q1[0] = 7;
305
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q1[indexECS] = 0;
306
307
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.
2 path = (*sm)(q0, q1);
308
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_REQUIRE(path);
309 2 pathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, path);
310
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_REQUIRE(pathKino);
311
312 2 PathPtr_t extractedPath;
313 2 KinodynamicPathPtr_t extractedPathKino;
314 bool success;
315 // take only beginning of the path (cut during second segment on x and third
316 // segment on y):
317 2 double begin = 0.;
318 2 double end = 4.3;
319
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 extractedPath = path->extract(std::make_pair(begin, end));
320
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_REQUIRE(extractedPath);
321 2 extractedPathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, extractedPath);
322
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_REQUIRE(extractedPathKino);
323
324
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 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPath->length(), end - begin);
325
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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPath->initial(), path->initial());
326
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPath->end().head(indexECS + 3),
327 path->eval(end, success).head(indexECS + 3));
328 // ignore last 3 extraDof because acceleration is set to 0 in initial/end
329 // configuration
330
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
8 for (size_t i = 0; i < 3; i++) {
331
9/18
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 3 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 3 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
6 BOOST_CHECK_EQUAL(extractedPathKino->getA1()[i], pathKino->getA1()[i]);
332
9/18
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 3 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 3 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
6 BOOST_CHECK_EQUAL(extractedPathKino->getT0()[i], pathKino->getT0()[i]);
333
9/18
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 3 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 3 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
6 BOOST_CHECK_EQUAL(extractedPathKino->getT1()[i], pathKino->getT1()[i]);
334 }
335
8/16
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[2], extractedPath->length());
336
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT2()[2], 0);
337
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[0],
338 end - extractedPathKino->getT1()[0]);
339
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT2()[0], 0);
340
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[1], 0);
341
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT2()[1],
342 end - extractedPathKino->getT1()[1]);
343
344 // take only beginning of the path (cut during first segment on both axis):
345 2 begin = 0.;
346 2 end = 3.;
347
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 extractedPath = path->extract(std::make_pair(begin, end));
348
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 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_REQUIRE(extractedPath);
349 2 extractedPathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, extractedPath);
350
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_REQUIRE(extractedPathKino);
351
352
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 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPath->length(), end - begin);
353
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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPath->initial(), path->initial());
354
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(
355 extractedPath->end().head(indexECS + 3),
356 path->eval(end, success)
357 .head(indexECS + 3)); // ignore last 3 extraDof because acceleration
358 // is set to 0 in initial/end configuration
359
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
8 for (size_t i = 0; i < 3; i++) {
360
9/18
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 3 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 3 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
6 BOOST_CHECK_EQUAL(extractedPathKino->getA1()[i], pathKino->getA1()[i]);
361
9/18
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 3 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 3 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
6 BOOST_CHECK_EQUAL(extractedPathKino->getT0()[i], pathKino->getT0()[i]);
362
7/14
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 3 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 3 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 3 times.
6 BOOST_CHECK_EQUAL(extractedPathKino->getT2()[i], 0.);
363 }
364
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT1()[2], 0);
365
8/16
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[2], extractedPath->length());
366
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT2()[2], 0);
367
8/16
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT1()[0], extractedPath->length());
368
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[0], 0);
369
8/16
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT1()[1], extractedPath->length());
370
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[1], 0);
371
372 // take only end of the path (cut during first segment)
373 2 begin = 2.;
374
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 end = path->length();
375
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 extractedPath = path->extract(std::make_pair(begin, end));
376
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_REQUIRE(extractedPath);
377 2 extractedPathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, extractedPath);
378
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_REQUIRE(extractedPathKino);
379
380
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 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPath->length(), end - begin);
381
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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPath->end(), path->end());
382
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(
383 extractedPath->initial().head(indexECS + 3),
384 path->eval(begin, success)
385 .head(indexECS + 3)); // ignore last 3 extraDof because acceleration
386 // is set to 0 in initial/end configuration
387
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
8 for (size_t i = 0; i < 3; i++) {
388
9/18
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 3 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 3 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
6 BOOST_CHECK_EQUAL(extractedPathKino->getA1()[i], pathKino->getA1()[i]);
389
9/18
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 3 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 3 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
6 BOOST_CHECK_EQUAL(extractedPathKino->getT0()[i], pathKino->getT0()[i]);
390
9/18
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 3 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 3 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
6 BOOST_CHECK_EQUAL(extractedPathKino->getT2()[i], pathKino->getT2()[i]);
391 }
392
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT1()[2], 0);
393
8/16
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[2], extractedPath->length());
394
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT2()[2], 0);
395
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT1()[0],
396 pathKino->getT1()[0] - begin);
397
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[0], pathKino->getTv()[0]);
398
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT1()[1],
399 pathKino->getT1()[1] - begin);
400
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[1], 0);
401
402 // extract path in the middle :
403 2 begin = 1.5;
404 2 end = 4.4;
405
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 extractedPath = path->extract(std::make_pair(begin, end));
406
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_REQUIRE(extractedPath);
407 2 extractedPathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, extractedPath);
408
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_REQUIRE(extractedPathKino);
409
410
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 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPath->length(), end - begin);
411
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPath->end().head(indexECS + 3),
412 path->eval(end, success).head(indexECS + 3));
413
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(
414 extractedPath->initial().head(indexECS + 3),
415 path->eval(begin, success)
416 .head(indexECS + 3)); // ignore last 3 extraDof because acceleration
417 // is set to 0 in initial/end configuration
418
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 times.
8 for (size_t i = 0; i < 3; i++) {
419
9/18
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 3 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 3 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
6 BOOST_CHECK_EQUAL(extractedPathKino->getA1()[i], pathKino->getA1()[i]);
420
9/18
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 3 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 3 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
6 BOOST_CHECK_EQUAL(extractedPathKino->getT0()[i], pathKino->getT0()[i]);
421 }
422
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT1()[2], 0);
423
8/16
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[2], extractedPath->length());
424
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT2()[2], 0);
425 // x axis is cut during first and second segment :
426
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT1()[0],
427 pathKino->getT1()[0] - begin);
428
10/20
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✗ Branch 37 not taken.
✓ Branch 38 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[0],
429 extractedPath->length() - extractedPathKino->getT1()[0]);
430
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT2()[0], 0);
431 // y axis is cut during first and third segment
432
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT1()[1],
433 pathKino->getT1()[1] - begin);
434
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getTv()[1], 0);
435
10/20
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✗ Branch 37 not taken.
✓ Branch 38 taken 1 times.
2 BOOST_CHECK_EQUAL(extractedPathKino->getT2()[1],
436 extractedPath->length() - extractedPathKino->getT1()[1]);
437
438 // random tests with non null initial and final acceleration
439
440 ConfigurationShooterPtr_t shooter =
441
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 configurationShooter::Uniform::create(robot);
442
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Configuration_t qr1, qr0;
443 value_type t1, t2;
444
2/2
✓ Branch 0 taken 1000 times.
✓ Branch 1 taken 1 times.
2002 for (size_t i = 0; i < 1000; i++) {
445
1/2
✓ Branch 2 taken 1000 times.
✗ Branch 3 not taken.
2000 qr0 = shooter->shoot();
446
1/2
✓ Branch 2 taken 1000 times.
✗ Branch 3 not taken.
2000 qr1 = shooter->shoot();
447
3/6
✓ Branch 2 taken 1000 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1000 times.
✗ Branch 9 not taken.
2000 path = (*sm)(qr0, qr1);
448
6/12
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1000 times.
2000 BOOST_REQUIRE(path);
449 2000 pathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, path);
450
6/12
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1000 times.
2000 BOOST_REQUIRE(pathKino);
451
10/20
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1000 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1000 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1000 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1000 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1000 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1000 times.
✗ Branch 32 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 1000 times.
2000 BOOST_CHECK(path->length() >= (*dist)(qr0, qr1));
452
8/16
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1000 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 1000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1000 times.
✗ Branch 16 not taken.
✓ Branch 20 taken 1000 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1000 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1000 times.
2000 BOOST_CHECK_EQUAL(path->end().head(indexECS + 3), (qr1).head(indexECS + 3));
453
8/16
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1000 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 1000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1000 times.
✗ Branch 16 not taken.
✓ Branch 20 taken 1000 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1000 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1000 times.
2000 BOOST_CHECK_EQUAL(path->initial().head(indexECS + 3),
454 (qr0).head(indexECS + 3));
455
9/18
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1000 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 1000 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1000 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1000 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1000 times.
✗ Branch 28 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1000 times.
2000 BOOST_CHECK_EQUAL(path->eval(path->length(), success).head(indexECS + 3),
456 (qr1).head(indexECS + 3));
457
8/16
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1000 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 1000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1000 times.
✗ Branch 16 not taken.
✓ Branch 20 taken 1000 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1000 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1000 times.
2000 BOOST_CHECK_EQUAL(path->eval(0., success).head(indexECS + 3),
458 (qr0).head(indexECS + 3));
459
460
2/2
✓ Branch 0 taken 3000 times.
✓ Branch 1 taken 1000 times.
8000 for (size_t k = 0; k < 3; k++) {
461
7/14
✓ Branch 1 taken 3000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3000 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3000 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 3000 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 3000 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 3000 times.
6000 BOOST_CHECK_EQUAL(pathKino->getT0()[k], 0.);
462
8/16
✓ Branch 1 taken 3000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 3000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 3000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 3000 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 3000 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 3000 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 3000 times.
6000 BOOST_CHECK(pathKino->getT1()[k] >= 0.);
463
8/16
✓ Branch 1 taken 3000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 3000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 3000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 3000 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 3000 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 3000 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 3000 times.
6000 BOOST_CHECK(pathKino->getTv()[k] >= 0.);
464
8/16
✓ Branch 1 taken 3000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 3000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 3000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 3000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 3000 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 3000 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 3000 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 3000 times.
6000 BOOST_CHECK(pathKino->getT2()[k] >= 0.);
465 }
466
467
2/2
✓ Branch 0 taken 10000 times.
✓ Branch 1 taken 1000 times.
22000 for (size_t j = 0; j < 10; j++) {
468 value_type a =
469
1/2
✓ Branch 3 taken 10000 times.
✗ Branch 4 not taken.
20000 ((value_type)rand() / (value_type)RAND_MAX) * path->length();
470 value_type b =
471
1/2
✓ Branch 3 taken 10000 times.
✗ Branch 4 not taken.
20000 ((value_type)rand() / (value_type)RAND_MAX) * path->length();
472
2/2
✓ Branch 0 taken 5021 times.
✓ Branch 1 taken 4979 times.
20000 if (a < b) {
473 10042 t1 = a;
474 10042 t2 = b;
475 } else {
476 9958 t1 = b;
477 9958 t2 = a;
478 }
479
2/4
✓ Branch 2 taken 10000 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
20000 extractedPath = path->extract(std::make_pair(t1, t2));
480
6/12
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 10000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 10000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 10000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 10000 times.
20000 BOOST_REQUIRE(extractedPath);
481
6/12
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 10000 times.
✗ Branch 10 not taken.
✓ Branch 14 taken 10000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 10000 times.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->length(), t2 - t1);
482
5/10
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 10000 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->timeRange().first, 0.);
483
5/10
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 10000 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->timeRange().second, t2 - t1);
484
9/18
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 10000 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 10000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10000 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 10000 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 10000 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->initial().head(indexECS + 3),
485 path->eval(t1, success).head(indexECS + 3));
486
9/18
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 10000 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 10000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10000 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 10000 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 10000 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->end().head(indexECS + 3),
487 path->eval(t2, success).head(indexECS + 3));
488
9/18
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 10000 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 10000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10000 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 10000 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 10000 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->eval(0., success).head(indexECS + 3),
489 path->eval(t1, success).head(indexECS + 3));
490
9/18
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 10000 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 10000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10000 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 10000 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 10000 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 10000 times.
20000 BOOST_CHECK_EQUAL(
491 extractedPath->eval(t2 - t1, success).head(indexECS + 3),
492 path->eval(t2, success).head(indexECS + 3));
493
494
1/2
✓ Branch 0 taken 10000 times.
✗ Branch 1 not taken.
20000 if (t1 < t2) {
495 extractedPathKino =
496 20000 HPP_DYNAMIC_PTR_CAST(KinodynamicPath, extractedPath);
497
6/12
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 10000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 10000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 10000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 10000 times.
20000 BOOST_REQUIRE(extractedPathKino);
498
2/2
✓ Branch 0 taken 30000 times.
✓ Branch 1 taken 10000 times.
80000 for (size_t k = 0; k < 3; k++) {
499
7/14
✓ Branch 1 taken 30000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 30000 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 30000 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 30000 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 30000 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 30000 times.
60000 BOOST_CHECK_EQUAL(extractedPathKino->getT0()[k], 0.);
500
8/16
✓ Branch 1 taken 30000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 30000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 30000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 30000 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 30000 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 30000 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 30000 times.
60000 BOOST_CHECK(extractedPathKino->getT1()[k] >= 0.);
501
8/16
✓ Branch 1 taken 30000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 30000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 30000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 30000 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 30000 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 30000 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 30000 times.
60000 BOOST_CHECK(extractedPathKino->getTv()[k] >= 0.);
502
8/16
✓ Branch 1 taken 30000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 30000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 30000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 30000 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 30000 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 30000 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 30000 times.
60000 BOOST_CHECK(extractedPathKino->getT2()[k] >= 0.);
503
12/24
✓ Branch 1 taken 30000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 30000 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 30000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 30000 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 30000 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 30000 times.
✗ Branch 23 not taken.
✓ Branch 26 taken 30000 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 30000 times.
✗ Branch 30 not taken.
✓ Branch 34 taken 30000 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 30000 times.
✗ Branch 38 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 30000 times.
60000 BOOST_CHECK_CLOSE(extractedPathKino->getT1()[k] +
504 extractedPathKino->getTv()[k] +
505 extractedPathKino->getT2()[k],
506 t2 - t1, 1e-3);
507 }
508 }
509 }
510 }
511 2 }
512
513
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(kinodynamic_aMax1) {
514
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
4 DevicePtr_t robot = unittest::makeDevice(unittest::HumanoidSimple);
515
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->lowerBound(0, -10);
516
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->lowerBound(1, -10);
517
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->lowerBound(2, 0);
518
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->upperBound(0, 10);
519
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->upperBound(1, 10);
520
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->upperBound(2, 0);
521
522
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 robot->setDimensionExtraConfigSpace(6);
523 // define velocity and acceleration bounds
524 2 const double vMax = 0.3;
525 2 const double aMax = 1.;
526
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(0) = -vMax;
527
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(1) = -vMax;
528
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(2) = 0;
529
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(0) = vMax;
530
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(1) = vMax;
531
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(2) = 0;
532
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(3) = -aMax;
533
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(4) = -aMax;
534
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(5) = 0;
535
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(3) = aMax;
536
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(4) = aMax;
537
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(5) = 0;
538
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 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_MESSAGE(robot->extraConfigSpace().dimension() == 6,
539 "error during creation of the robot");
540
541 // Create steering method
542
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 ProblemPtr_t p = Problem::create(robot);
543
3/6
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
2 p->setParameter(std::string("Kinodynamic/velocityBound"), Parameter(vMax));
544
2/4
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
4 p->setParameter(std::string("Kinodynamic/accelerationBound"),
545
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Parameter(aMax));
546
547
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 steeringMethod::KinodynamicPtr_t sm = steeringMethod::Kinodynamic::create(p);
548
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 KinodynamicDistancePtr_t dist = KinodynamicDistance::createFromProblem(p);
549
550 // try to connect several states : (notation : sx = (px, vx, ax)
551
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 Configuration_t q0(robot->currentConfiguration());
552
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
2 Configuration_t q1(robot->currentConfiguration());
553
554 JointBoundValidationPtr_t jointValidation =
555
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointBoundValidation::create(robot);
556 pathValidation::DiscretizedPtr_t pathVal =
557
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 pathValidation::createDiscretizedCollisionChecking(robot, 0.001);
558
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 pathVal->add(jointValidation);
559 2 PathValidationReportPtr_t validationReport;
560 2 PathPtr_t validPath;
561
562
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q0[0] = 0;
563
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 q1[0] = 1.5;
564
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.
4 PathPtr_t path = (*sm)(q0, q1);
565
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_REQUIRE(path);
566 2 KinodynamicPathPtr_t pathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicPath, path);
567
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_REQUIRE(pathKino);
568
569 // length should be 2.82843
570
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 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 24 not taken.
✓ Branch 25 taken 1 times.
2 BOOST_CHECK_CLOSE(path->length(), 5.3, 1e-3);
571
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 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(path->length(), (*dist)(q0, q1));
572 // check if 3 segments
573
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
2 BOOST_CHECK(pathKino->getTv()[0] > 0.);
574
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT0()[0], 0.);
575
12/24
✓ 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 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 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 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 1 times.
2 BOOST_CHECK_EQUAL(
576 pathKino->getT1()[0] + pathKino->getTv()[0] + pathKino->getT2()[0],
577 path->length());
578
579 // check if no unecessary motion :
580
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
6 for (size_t i = 1; i < 3; i++) {
581
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT0()[i], 0.);
582
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT1()[i], 0.);
583
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getT2()[i], 0.);
584
7/14
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getA1()[i], 0.);
585
8/16
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 2 times.
4 BOOST_CHECK_EQUAL(pathKino->getTv()[i], path->length());
586 }
587 // check if the trajectory is really bang-bang :
588
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 25 not taken.
✓ Branch 26 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getA1()[0], aMax);
589
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 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
2 BOOST_CHECK_EQUAL(pathKino->getT1()[0], pathKino->getT2()[0]);
590 // check if bounds are respected :
591
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(pathVal->validate(path, false, validPath, validationReport));
592 2 }
593
594
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(kinodynamicOriented) {
595
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
4 DevicePtr_t robot = unittest::makeDevice(unittest::HumanoidSimple);
596
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->lowerBound(0, -10);
597
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->lowerBound(1, -10);
598
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->lowerBound(2, 0);
599
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->upperBound(0, 10);
600
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->upperBound(1, 10);
601
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 robot->rootJoint()->upperBound(2, 0);
602
603
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 robot->setDimensionExtraConfigSpace(6);
604 // define velocity and acceleration bounds
605 2 const double vMax = 2;
606 2 const double aMax = 0.5;
607
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(0) = -vMax;
608
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(1) = -vMax;
609
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(2) = 0;
610
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(0) = vMax;
611
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(1) = vMax;
612
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(2) = 0;
613
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(3) = -aMax;
614
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(4) = -aMax;
615
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().lower(5) = 0;
616
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(3) = aMax;
617
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(4) = aMax;
618
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 robot->extraConfigSpace().upper(5) = 0;
619
6/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 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_MESSAGE(robot->extraConfigSpace().dimension() == 6,
620 "error during creation of the robot");
621
622 // Create steering method
623
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 ProblemPtr_t p = Problem::create(robot);
624
3/6
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
2 p->setParameter(std::string("Kinodynamic/velocityBound"), Parameter(vMax));
625
2/4
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
4 p->setParameter(std::string("Kinodynamic/accelerationBound"),
626
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Parameter(aMax));
627
2/4
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
4 p->setParameter(std::string("Kinodynamic/forceAllOrientation"),
628
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Parameter(true));
629
630
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 steeringMethod::KinodynamicPtr_t sm = steeringMethod::Kinodynamic::create(p);
631
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 KinodynamicDistancePtr_t dist = KinodynamicDistance::createFromProblem(p);
632 2 KinodynamicOrientedPathPtr_t pathKino, extractedPathKino;
633 2 PathPtr_t path, extractedPath;
634
635
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 size_t indexECS = robot->configSize() - 6;
636 bool success;
637
638 JointBoundValidationPtr_t jointValidation =
639
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 JointBoundValidation::create(robot);
640 pathValidation::DiscretizedPtr_t pathVal =
641
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 pathValidation::createDiscretizedCollisionChecking(robot, 0.001);
642
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 pathVal->add(jointValidation);
643 2 PathValidationReportPtr_t validationReport;
644 2 PathPtr_t validPath;
645
646 ConfigurationShooterPtr_t shooter =
647
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 configurationShooter::Uniform::create(robot);
648
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Configuration_t qr1, qr0;
649 value_type t1, t2;
650
2/2
✓ Branch 0 taken 1000 times.
✓ Branch 1 taken 1 times.
2002 for (size_t i = 0; i < 1000; i++) {
651
1/2
✓ Branch 2 taken 1000 times.
✗ Branch 3 not taken.
2000 qr0 = shooter->shoot();
652
1/2
✓ Branch 2 taken 1000 times.
✗ Branch 3 not taken.
2000 qr1 = shooter->shoot();
653
3/6
✓ Branch 2 taken 1000 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1000 times.
✗ Branch 9 not taken.
2000 path = (*sm)(qr0, qr1);
654
6/12
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1000 times.
2000 BOOST_REQUIRE(path);
655 2000 pathKino = HPP_DYNAMIC_PTR_CAST(KinodynamicOrientedPath, path);
656
6/12
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 1000 times.
2000 BOOST_REQUIRE(pathKino);
657
10/20
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1000 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 1000 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1000 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1000 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1000 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1000 times.
✗ Branch 32 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 1000 times.
2000 BOOST_CHECK(path->length() >= (*dist)(qr0, qr1));
658
8/16
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1000 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 1000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1000 times.
✗ Branch 16 not taken.
✓ Branch 20 taken 1000 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1000 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1000 times.
2000 BOOST_CHECK_EQUAL(path->end().head(3), (qr1).head(3));
659
8/16
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1000 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 1000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1000 times.
✗ Branch 16 not taken.
✓ Branch 20 taken 1000 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1000 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1000 times.
2000 BOOST_CHECK_EQUAL(path->initial().head(3), (qr0).head(3));
660
9/18
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1000 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 1000 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1000 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 1000 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1000 times.
✗ Branch 28 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1000 times.
2000 BOOST_CHECK_EQUAL(path->eval(path->length(), success).head(3),
661 (qr1).head(3));
662
8/16
✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1000 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 1000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1000 times.
✗ Branch 16 not taken.
✓ Branch 20 taken 1000 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1000 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1000 times.
2000 BOOST_CHECK_EQUAL(path->eval(0., success).head(3), (qr0).head(3));
663
2/2
✓ Branch 0 taken 10000 times.
✓ Branch 1 taken 1000 times.
22000 for (size_t j = 0; j < 10; j++) {
664 value_type a =
665
1/2
✓ Branch 3 taken 10000 times.
✗ Branch 4 not taken.
20000 ((value_type)rand() / (value_type)RAND_MAX) * path->length();
666 value_type b =
667
1/2
✓ Branch 3 taken 10000 times.
✗ Branch 4 not taken.
20000 ((value_type)rand() / (value_type)RAND_MAX) * path->length();
668
2/2
✓ Branch 0 taken 4991 times.
✓ Branch 1 taken 5009 times.
20000 if (a < b) {
669 9982 t1 = a;
670 9982 t2 = b;
671 } else {
672 10018 t1 = b;
673 10018 t2 = a;
674 }
675
2/4
✓ Branch 2 taken 10000 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
20000 extractedPath = path->extract(std::make_pair(t1, t2));
676
6/12
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 10000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 10000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 10000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 10000 times.
20000 BOOST_REQUIRE(extractedPath);
677
6/12
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 10000 times.
✗ Branch 10 not taken.
✓ Branch 14 taken 10000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 10000 times.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->length(), t2 - t1);
678
5/10
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 10000 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->timeRange().first, 0.);
679
5/10
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 10000 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->timeRange().second, t2 - t1);
680
9/18
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 10000 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 10000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10000 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 10000 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 10000 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->initial().head(indexECS + 3),
681 path->eval(t1, success).head(indexECS + 3));
682
9/18
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 10000 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 10000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10000 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 10000 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 10000 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->end().head(indexECS + 3),
683 path->eval(t2, success).head(indexECS + 3));
684
9/18
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 10000 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 10000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10000 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 10000 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 10000 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 10000 times.
20000 BOOST_CHECK_EQUAL(extractedPath->eval(0., success).head(indexECS + 3),
685 path->eval(t1, success).head(indexECS + 3));
686
9/18
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 10000 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 10000 times.
✗ Branch 13 not taken.
✓ Branch 16 taken 10000 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 10000 times.
✗ Branch 20 not taken.
✓ Branch 24 taken 10000 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 10000 times.
✗ Branch 28 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 10000 times.
20000 BOOST_CHECK_EQUAL(
687 extractedPath->eval(t2 - t1, success).head(indexECS + 3),
688 path->eval(t2, success).head(indexECS + 3));
689
690
1/2
✓ Branch 0 taken 10000 times.
✗ Branch 1 not taken.
20000 if (t1 < t2) {
691 extractedPathKino =
692 20000 HPP_DYNAMIC_PTR_CAST(KinodynamicOrientedPath, extractedPath);
693
6/12
✓ Branch 1 taken 10000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 10000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 10000 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 10000 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 10000 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 10000 times.
20000 BOOST_REQUIRE(extractedPathKino);
694
2/2
✓ Branch 0 taken 30000 times.
✓ Branch 1 taken 10000 times.
80000 for (size_t k = 0; k < 3; k++) {
695
7/14
✓ Branch 1 taken 30000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30000 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 30000 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 30000 times.
✗ Branch 13 not taken.
✓ Branch 17 taken 30000 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 30000 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 30000 times.
60000 BOOST_CHECK_EQUAL(extractedPathKino->getT0()[k], 0.);
696
8/16
✓ Branch 1 taken 30000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 30000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 30000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 30000 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 30000 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 30000 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 30000 times.
60000 BOOST_CHECK(extractedPathKino->getT1()[k] >= 0.);
697
8/16
✓ Branch 1 taken 30000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 30000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 30000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 30000 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 30000 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 30000 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 30000 times.
60000 BOOST_CHECK(extractedPathKino->getTv()[k] >= 0.);
698
8/16
✓ Branch 1 taken 30000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30000 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 30000 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 30000 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 30000 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 30000 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 30000 times.
✗ Branch 25 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 30000 times.
60000 BOOST_CHECK(extractedPathKino->getT2()[k] >= 0.);
699
12/24
✓ Branch 1 taken 30000 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 30000 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 30000 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 30000 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 30000 times.
✗ Branch 16 not taken.
✓ Branch 19 taken 30000 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 30000 times.
✗ Branch 23 not taken.
✓ Branch 26 taken 30000 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 30000 times.
✗ Branch 30 not taken.
✓ Branch 34 taken 30000 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 30000 times.
✗ Branch 38 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 30000 times.
60000 BOOST_CHECK_CLOSE(extractedPathKino->getT1()[k] +
700 extractedPathKino->getTv()[k] +
701 extractedPathKino->getT2()[k],
702 t2 - t1, 1e-3);
703 }
704 }
705 }
706 }
707 2 }
708
709 BOOST_AUTO_TEST_SUITE_END()
710