1 #define BOOST_TEST_MODULE ArmarX::RobotTrajectoryDesigner::SplineInterpolationSegment
2 #define ARMARX_BOOST_TEST
7 #include <RobotComponents/Test.h>
9 #include "../../Interpolation/LinearInterpolation.h"
10 #include "../../Interpolation/SplineInterpolation.h"
11 #include "../../Util/OrientationConversion.h"
17 Vector3BasePtr pos1 =
new Vector3(2, 4, 6);
19 PoseBasePtr pose1 =
new Pose(pos1, ori1);
21 Vector3BasePtr pos2 =
new Vector3(0, 1, 2);
23 PoseBasePtr pose2 =
new Pose(pos2, ori2);
26 Vector3BasePtr pos3 =
new Vector3(0, -5, -2);
28 PoseBasePtr pose3 =
new Pose(pos3, ori3);
30 std::vector<PoseBasePtr> cp = {pose1, pose2, pose3};
36 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->x, 2);
37 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->y, 4);
38 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->z, 6);
39 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->x, 0);
40 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->y, 1);
41 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->z, 2);
42 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->x, 0);
43 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->y, 1);
44 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->z, 2);
45 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->x, 0);
46 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->y, -5);
47 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->z, -2);
52 Vector3BasePtr pos1 =
new Vector3(2, 4, 6);
54 PoseBasePtr pose1 =
new Pose(pos1, ori1);
56 Vector3BasePtr pos2 =
new Vector3(2, 4, 6);
58 PoseBasePtr pose2 =
new Pose(pos2, ori2);
60 Vector3BasePtr pos3 =
new Vector3(2, 4, 6);
62 PoseBasePtr pose3 =
new Pose(pos3, ori3);
64 Vector3BasePtr pos4 =
new Vector3(2, 4, 6);
66 PoseBasePtr pose4 =
new Pose(pos4, ori4);
68 std::vector<PoseBasePtr> cp = {pose1, pose2, pose3, pose4};
79 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->orientation->qw, q1->qw);
80 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->orientation->qx, q1->qx);
81 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->orientation->qy, q1->qy);
82 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->orientation->qz, q1->qz);
84 BOOST_CHECK_CLOSE(ips1->getPoseAt(1)->orientation->qw, q2->qw, 1);
85 BOOST_CHECK_CLOSE(ips1->getPoseAt(1)->orientation->qx, q2->qx, 1);
86 BOOST_CHECK_CLOSE(ips1->getPoseAt(1)->orientation->qy, q2->qy, 1);
87 BOOST_CHECK_CLOSE(ips1->getPoseAt(1)->orientation->qz, q2->qz, 1);
89 BOOST_CHECK_CLOSE(ips2->getPoseAt(0)->orientation->qw, q2->qw, 1);
90 BOOST_CHECK_CLOSE(ips2->getPoseAt(0)->orientation->qx, q2->qx, 1);
91 BOOST_CHECK_CLOSE(ips2->getPoseAt(0)->orientation->qy, q2->qy, 1);
92 BOOST_CHECK_CLOSE(ips2->getPoseAt(0)->orientation->qz, q2->qz, 1);
94 BOOST_CHECK_CLOSE(ips2->getPoseAt(1)->orientation->qw, q3->qw, 1);
95 BOOST_CHECK_CLOSE(ips2->getPoseAt(1)->orientation->qx, q3->qx, 1);
96 BOOST_CHECK_CLOSE(ips2->getPoseAt(1)->orientation->qy, q3->qy, 1);
97 BOOST_CHECK_CLOSE(ips2->getPoseAt(1)->orientation->qz, q3->qz, 1);
100 BOOST_CHECK_CLOSE(ips3->getPoseAt(0)->orientation->qw, q3->qw, 1);
101 BOOST_CHECK_CLOSE(ips3->getPoseAt(0)->orientation->qx, q3->qx, 1);
102 BOOST_CHECK_CLOSE(ips3->getPoseAt(0)->orientation->qy, q3->qy, 1);
103 BOOST_CHECK_CLOSE(ips3->getPoseAt(0)->orientation->qz, q3->qz, 1);
105 BOOST_CHECK_EQUAL(ips3->getPoseAt(1)->orientation->qw, q4->qw);
106 BOOST_CHECK_EQUAL(ips3->getPoseAt(1)->orientation->qx, q4->qx);
107 BOOST_CHECK_EQUAL(ips3->getPoseAt(1)->orientation->qy, q4->qy);
108 BOOST_CHECK_EQUAL(ips3->getPoseAt(1)->orientation->qz, q4->qz);
113 Vector3BasePtr pos1 =
new Vector3(2, 4, 6);
115 PoseBasePtr pose1 =
new Pose(pos1, ori1);
117 Vector3BasePtr pos2 =
new Vector3(0, -2, -8);
119 PoseBasePtr pose2 =
new Pose(pos2, ori2);
121 Vector3BasePtr pos3 =
new Vector3(2, 4, 6);
123 PoseBasePtr pose3 =
new Pose(pos3, ori3);
125 std::vector<PoseBasePtr> cp = {pose1, pose2, pose3};
131 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->x, 2);
132 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->y, 4);
133 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->z, 6);
134 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->x, 0);
135 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->y, -2);
136 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->z, -8);
137 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->x, 0);
138 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->y, -2);
139 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->z, -8);
140 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->x, 2);
141 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->y, 4);
142 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->z, 6);
147 Vector3BasePtr pos1 =
new Vector3(2, 4, 6);
149 PoseBasePtr pose1 =
new Pose(pos1, ori1);
151 Vector3BasePtr pos2 =
new Vector3(0, -2, -8);
153 PoseBasePtr pose2 =
new Pose(pos2, ori2);
155 Vector3BasePtr pos3 =
new Vector3(5, 8, 7);
157 PoseBasePtr pose3 =
new Pose(pos3, ori3);
159 Vector3BasePtr pos4 =
new Vector3(4, 23, 1);
161 PoseBasePtr pose4 =
new Pose(pos4, ori4);
163 Vector3BasePtr pos5 =
new Vector3(7, 12, 4);
165 PoseBasePtr pose5 =
new Pose(pos5, ori5);
167 Vector3BasePtr pos6 =
new Vector3(7, 44, -3);
169 PoseBasePtr pose6 =
new Pose(pos6, ori6);
171 Vector3BasePtr pos7 =
new Vector3(5, 4, -8);
173 PoseBasePtr pose7 =
new Pose(pos7, ori7);
175 Vector3BasePtr pos8 =
new Vector3(5, -4, -8);
177 PoseBasePtr pose8 =
new Pose(pos8, ori8);
179 Vector3BasePtr pos9 =
new Vector3(0, 0, 4);
181 PoseBasePtr pose9 =
new Pose(pos9, ori9);
183 Vector3BasePtr pos10 =
new Vector3(0, 1, 2);
185 PoseBasePtr pose10 =
new Pose(pos10, ori10);
187 Vector3BasePtr pos11 =
new Vector3(0, 0, 0);
189 PoseBasePtr pose11 =
new Pose(pos11, ori11);
191 std::vector<PoseBasePtr> cp = {
192 pose1, pose2, pose3, pose4, pose5, pose6, pose7, pose8, pose9, pose10, pose11};
205 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->x, 2);
206 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->y, 4);
207 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->z, 6);
208 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->x, 0);
209 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->y, -2);
210 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->z, -8);
212 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->x, 0);
213 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->y, -2);
214 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->z, -8);
215 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->x, 5);
216 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->y, 8);
217 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->z, 7);
219 BOOST_CHECK_EQUAL(ips3->getPoseAt(0)->position->x, 5);
220 BOOST_CHECK_EQUAL(ips3->getPoseAt(0)->position->y, 8);
221 BOOST_CHECK_EQUAL(ips3->getPoseAt(0)->position->z, 7);
222 BOOST_CHECK_EQUAL(ips3->getPoseAt(1)->position->x, 4);
223 BOOST_CHECK_EQUAL(ips3->getPoseAt(1)->position->y, 23);
224 BOOST_CHECK_EQUAL(ips3->getPoseAt(1)->position->z, 1);
226 BOOST_CHECK_EQUAL(ips4->getPoseAt(0)->position->x, 4);
227 BOOST_CHECK_EQUAL(ips4->getPoseAt(0)->position->y, 23);
228 BOOST_CHECK_EQUAL(ips4->getPoseAt(0)->position->z, 1);
229 BOOST_CHECK_EQUAL(ips4->getPoseAt(1)->position->x, 7);
230 BOOST_CHECK_EQUAL(ips4->getPoseAt(1)->position->y, 12);
231 BOOST_CHECK_EQUAL(ips4->getPoseAt(1)->position->z, 4);
233 BOOST_CHECK_EQUAL(ips5->getPoseAt(0)->position->x, 7);
234 BOOST_CHECK_EQUAL(ips5->getPoseAt(0)->position->y, 12);
235 BOOST_CHECK_EQUAL(ips5->getPoseAt(0)->position->z, 4);
236 BOOST_CHECK_EQUAL(ips5->getPoseAt(1)->position->x, 7);
237 BOOST_CHECK_EQUAL(ips5->getPoseAt(1)->position->y, 44);
238 BOOST_CHECK_EQUAL(ips5->getPoseAt(1)->position->z, -3);
240 BOOST_CHECK_EQUAL(ips6->getPoseAt(0)->position->x, 7);
241 BOOST_CHECK_EQUAL(ips6->getPoseAt(0)->position->y, 44);
242 BOOST_CHECK_EQUAL(ips6->getPoseAt(0)->position->z, -3);
243 BOOST_CHECK_EQUAL(ips6->getPoseAt(1)->position->x, 5);
244 BOOST_CHECK_EQUAL(ips6->getPoseAt(1)->position->y, 4);
245 BOOST_CHECK_EQUAL(ips6->getPoseAt(1)->position->z, -8);
247 BOOST_CHECK_EQUAL(ips7->getPoseAt(0)->position->x, 5);
248 BOOST_CHECK_EQUAL(ips7->getPoseAt(0)->position->y, 4);
249 BOOST_CHECK_EQUAL(ips7->getPoseAt(0)->position->z, -8);
250 BOOST_CHECK_EQUAL(ips7->getPoseAt(1)->position->x, 5);
251 BOOST_CHECK_EQUAL(ips7->getPoseAt(1)->position->y, -4);
252 BOOST_CHECK_EQUAL(ips7->getPoseAt(1)->position->z, -8);
254 BOOST_CHECK_EQUAL(ips8->getPoseAt(0)->position->x, 5);
255 BOOST_CHECK_EQUAL(ips8->getPoseAt(0)->position->y, -4);
256 BOOST_CHECK_EQUAL(ips8->getPoseAt(0)->position->z, -8);
257 BOOST_CHECK_EQUAL(ips8->getPoseAt(1)->position->x, 0);
259 BOOST_CHECK_EQUAL(ips8->getPoseAt(1)->position->z, 4);
261 BOOST_CHECK_EQUAL(ips9->getPoseAt(0)->position->x, 0);
263 BOOST_CHECK_EQUAL(ips9->getPoseAt(0)->position->z, 4);
265 BOOST_CHECK_EQUAL(ips9->getPoseAt(1)->position->y, 1);
266 BOOST_CHECK_EQUAL(ips9->getPoseAt(1)->position->z, 2);
269 BOOST_CHECK_EQUAL(ips10->getPoseAt(0)->position->y, 1);
270 BOOST_CHECK_EQUAL(ips10->getPoseAt(0)->position->z, 2);
271 BOOST_CHECK_EQUAL(ips10->getPoseAt(1)->position->x, 0);
272 BOOST_CHECK_EQUAL(ips10->getPoseAt(1)->position->y, 0);
273 BOOST_CHECK_EQUAL(ips10->getPoseAt(1)->position->z, 0);