1 #define BOOST_TEST_MODULE ArmarX::RobotTrajectoryDesigner::InterpolationSegmentFactory
2 #define ARMARX_BOOST_TEST
4 #include "../InterpolationSegmentFactory.h"
6 #include <boost/test/unit_test.hpp>
10 #include <RobotComponents/Test.h>
12 #include "../../Interpolation/LinearInterpolation.h"
13 #include "../../Util/OrientationConversion.h"
14 #include "../InterpolationType.h"
15 #include "../exceptions/InterpolationNotDefinedException.h"
16 #include "../exceptions/NoInterpolationPossibleException.h"
22 Vector3BasePtr pos1 =
new Vector3(2, 4, 6);
24 PoseBasePtr pose1 =
new Pose(pos1, ori1);
26 Vector3BasePtr pos2 =
new Vector3(0, -2, -8);
28 PoseBasePtr pose2 =
new Pose(pos2, ori2);
30 Vector3BasePtr pos3 =
new Vector3(5, 8, 7);
32 PoseBasePtr pose3 =
new Pose(pos3, ori3);
34 Vector3BasePtr pos4 =
new Vector3(4, 23, 1);
36 PoseBasePtr pose4 =
new Pose(pos4, ori4);
38 Vector3BasePtr pos5 =
new Vector3(7, 12, 4);
40 PoseBasePtr pose5 =
new Pose(pos5, ori5);
42 Vector3BasePtr pos6 =
new Vector3(7, 44, -3);
44 PoseBasePtr pose6 =
new Pose(pos6, ori6);
46 Vector3BasePtr pos7 =
new Vector3(5, 4, -8);
48 PoseBasePtr pose7 =
new Pose(pos7, ori7);
50 Vector3BasePtr pos8 =
new Vector3(5, -4, -8);
52 PoseBasePtr pose8 =
new Pose(pos8, ori8);
54 Vector3BasePtr pos9 =
new Vector3(0, 0, 4);
56 PoseBasePtr pose9 =
new Pose(pos9, ori9);
58 Vector3BasePtr pos10 =
new Vector3(0, 1, 2);
60 PoseBasePtr pose10 =
new Pose(pos10, ori10);
62 Vector3BasePtr pos11 =
new Vector3(0, 0, 0);
64 PoseBasePtr pose11 =
new Pose(pos11, ori11);
66 std::vector<PoseBasePtr> cp = {
67 pose1, pose2, pose3, pose4, pose5, pose6, pose7, pose8, pose9, pose10, pose11};
80 std::vector<AbstractInterpolationPtr> ip =
94 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->x, 2);
95 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->y, 4);
96 BOOST_CHECK_EQUAL(ips1->getPoseAt(0)->position->z, 6);
97 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->x, 0);
98 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->y, -2);
99 BOOST_CHECK_EQUAL(ips1->getPoseAt(1)->position->z, -8);
101 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->x, 0);
102 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->y, -2);
103 BOOST_CHECK_EQUAL(ips2->getPoseAt(0)->position->z, -8);
104 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->x, 5);
105 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->y, 8);
106 BOOST_CHECK_EQUAL(ips2->getPoseAt(1)->position->z, 7);
108 BOOST_CHECK_EQUAL(ips3->getPoseAt(0)->position->x, 5);
109 BOOST_CHECK_EQUAL(ips3->getPoseAt(0)->position->y, 8);
110 BOOST_CHECK_EQUAL(ips3->getPoseAt(0)->position->z, 7);
111 BOOST_CHECK_EQUAL(ips3->getPoseAt(1)->position->x, 4);
112 BOOST_CHECK_EQUAL(ips3->getPoseAt(1)->position->y, 23);
113 BOOST_CHECK_EQUAL(ips3->getPoseAt(1)->position->z, 1);
115 BOOST_CHECK_EQUAL(ips4->getPoseAt(0)->position->x, 4);
116 BOOST_CHECK_EQUAL(ips4->getPoseAt(0)->position->y, 23);
117 BOOST_CHECK_EQUAL(ips4->getPoseAt(0)->position->z, 1);
118 BOOST_CHECK_EQUAL(ips4->getPoseAt(1)->position->x, 7);
119 BOOST_CHECK_EQUAL(ips4->getPoseAt(1)->position->y, 12);
120 BOOST_CHECK_EQUAL(ips4->getPoseAt(1)->position->z, 4);
122 BOOST_CHECK_EQUAL(ips5->getPoseAt(0)->position->x, 7);
123 BOOST_CHECK_EQUAL(ips5->getPoseAt(0)->position->y, 12);
124 BOOST_CHECK_EQUAL(ips5->getPoseAt(0)->position->z, 4);
125 BOOST_CHECK_EQUAL(ips5->getPoseAt(1)->position->x, 7);
126 BOOST_CHECK_EQUAL(ips5->getPoseAt(1)->position->y, 44);
127 BOOST_CHECK_EQUAL(ips5->getPoseAt(1)->position->z, -3);
129 BOOST_CHECK_EQUAL(ips6->getPoseAt(0)->position->x, 7);
130 BOOST_CHECK_EQUAL(ips6->getPoseAt(0)->position->y, 44);
131 BOOST_CHECK_EQUAL(ips6->getPoseAt(0)->position->z, -3);
132 BOOST_CHECK_EQUAL(ips6->getPoseAt(1)->position->x, 5);
133 BOOST_CHECK_EQUAL(ips6->getPoseAt(1)->position->y, 4);
134 BOOST_CHECK_EQUAL(ips6->getPoseAt(1)->position->z, -8);
136 BOOST_CHECK_EQUAL(ips7->getPoseAt(0)->position->x, 5);
137 BOOST_CHECK_EQUAL(ips7->getPoseAt(0)->position->y, 4);
138 BOOST_CHECK_EQUAL(ips7->getPoseAt(0)->position->z, -8);
139 BOOST_CHECK_EQUAL(ips7->getPoseAt(1)->position->x, 5);
140 BOOST_CHECK_EQUAL(ips7->getPoseAt(1)->position->y, -4);
141 BOOST_CHECK_EQUAL(ips7->getPoseAt(1)->position->z, -8);
143 BOOST_CHECK_EQUAL(ips8->getPoseAt(0)->position->x, 5);
144 BOOST_CHECK_EQUAL(ips8->getPoseAt(0)->position->y, -4);
145 BOOST_CHECK_EQUAL(ips8->getPoseAt(0)->position->z, -8);
146 BOOST_CHECK_EQUAL(ips8->getPoseAt(1)->position->x, 0);
147 BOOST_CHECK_EQUAL(ips8->getPoseAt(1)->position->y, 0);
148 BOOST_CHECK_EQUAL(ips8->getPoseAt(1)->position->z, 4);
150 BOOST_CHECK_EQUAL(ips9->getPoseAt(0)->position->x, 0);
151 BOOST_CHECK_EQUAL(ips9->getPoseAt(0)->position->y, 0);
152 BOOST_CHECK_EQUAL(ips9->getPoseAt(0)->position->z, 4);
153 BOOST_CHECK_EQUAL(ips9->getPoseAt(1)->position->x, 0);
154 BOOST_CHECK_EQUAL(ips9->getPoseAt(1)->position->y, 1);
155 BOOST_CHECK_EQUAL(ips9->getPoseAt(1)->position->z, 2);
157 BOOST_CHECK_EQUAL(ips10->getPoseAt(0)->position->x, 0);
158 BOOST_CHECK_EQUAL(ips10->getPoseAt(0)->position->y, 1);
159 BOOST_CHECK_EQUAL(ips10->getPoseAt(0)->position->z, 2);
160 BOOST_CHECK_EQUAL(ips10->getPoseAt(1)->position->x, 0);
161 BOOST_CHECK_EQUAL(ips10->getPoseAt(1)->position->y, 0);
162 BOOST_CHECK_EQUAL(ips10->getPoseAt(1)->position->z, 0);
180 Vector3BasePtr pos1 =
new Vector3(2, 4, 6);
182 PoseBasePtr pose1 =
new Pose(pos1, ori1);
184 Vector3BasePtr pos2 =
new Vector3(0, -2, -8);
186 PoseBasePtr pose2 =
new Pose(pos2, ori2);
188 Vector3BasePtr pos3 =
new Vector3(5, 8, 7);
190 PoseBasePtr pose3 =
new Pose(pos3, ori3);
192 Vector3BasePtr pos4 =
new Vector3(4, 23, 1);
194 PoseBasePtr pose4 =
new Pose(pos4, ori4);
196 Vector3BasePtr pos5 =
new Vector3(7, 12, 4);
198 PoseBasePtr pose5 =
new Pose(pos5, ori5);
200 Vector3BasePtr pos6 =
new Vector3(7, 44, -3);
202 PoseBasePtr pose6 =
new Pose(pos6, ori6);
204 Vector3BasePtr pos7 =
new Vector3(5, 4, -8);
206 PoseBasePtr pose7 =
new Pose(pos7, ori7);
208 Vector3BasePtr pos8 =
new Vector3(5, -4, -8);
210 PoseBasePtr pose8 =
new Pose(pos8, ori8);
212 Vector3BasePtr pos9 =
new Vector3(0, 0, 4);
214 PoseBasePtr pose9 =
new Pose(pos9, ori9);
216 Vector3BasePtr pos10 =
new Vector3(0, 1, 2);
218 PoseBasePtr pose10 =
new Pose(pos10, ori10);
220 Vector3BasePtr pos11 =
new Vector3(0, 0, 0);
222 PoseBasePtr pose11 =
new Pose(pos11, ori11);
224 std::vector<PoseBasePtr> cp = {
225 pose1, pose2, pose3, pose4, pose5, pose6, pose7, pose8, pose9, pose10, pose11};
265 Vector3BasePtr pos1 =
new Vector3(2, 4, 6);
267 PoseBasePtr pose1 =
new Pose(pos1, ori1);
269 std::vector<PoseBasePtr> poses = std::vector<PoseBasePtr>();
270 for (
int i = 0; i < 10; i++)
272 poses.push_back(pose1);
274 std::vector<VirtualRobot::IKSolver::CartesianSelection> selections =
275 std::vector<VirtualRobot::IKSolver::CartesianSelection>();
276 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::All);
279 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::All);
282 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::All);
283 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::All);
285 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::All);
289 BOOST_CHECK_EQUAL(selections[0], VirtualRobot::IKSolver::CartesianSelection::All);
290 BOOST_CHECK_EQUAL(selections[1], VirtualRobot::IKSolver::CartesianSelection::All);
291 BOOST_CHECK_EQUAL(selections[2], VirtualRobot::IKSolver::CartesianSelection::All);
292 BOOST_CHECK_EQUAL(selections[3], VirtualRobot::IKSolver::CartesianSelection::All);
293 BOOST_CHECK_EQUAL(selections[4], VirtualRobot::IKSolver::CartesianSelection::All);
294 BOOST_CHECK_EQUAL(selections[5], VirtualRobot::IKSolver::CartesianSelection::All);
295 BOOST_CHECK_EQUAL(selections[6], VirtualRobot::IKSolver::CartesianSelection::All);
296 BOOST_CHECK_EQUAL(selections[7], VirtualRobot::IKSolver::CartesianSelection::All);
297 BOOST_CHECK_EQUAL(selections[8], VirtualRobot::IKSolver::CartesianSelection::All);
298 BOOST_CHECK_EQUAL(selections[9], VirtualRobot::IKSolver::CartesianSelection::All);
303 Vector3BasePtr pos1 =
new Vector3(2, 4, 6);
305 PoseBasePtr pose1 =
new Pose(pos1, ori1);
307 std::vector<PoseBasePtr> poses = std::vector<PoseBasePtr>();
308 for (
int i = 0; i < 11; i++)
310 poses.push_back(pose1);
312 std::vector<VirtualRobot::IKSolver::CartesianSelection> selections =
313 std::vector<VirtualRobot::IKSolver::CartesianSelection>();
314 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::All);
316 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::All);
317 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::X);
318 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Y);
321 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Y);
323 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Z);
324 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Z);
329 BOOST_CHECK_EQUAL(selections[0], VirtualRobot::IKSolver::CartesianSelection::All);
330 BOOST_CHECK_EQUAL(selections[1], VirtualRobot::IKSolver::CartesianSelection::All);
331 BOOST_CHECK_EQUAL(selections[2], VirtualRobot::IKSolver::CartesianSelection::All);
338 BOOST_CHECK_EQUAL(selections[9], VirtualRobot::IKSolver::CartesianSelection::Z);
339 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Z);
344 Vector3BasePtr pos1 =
new Vector3(2, 4, 6);
346 PoseBasePtr pose1 =
new Pose(pos1, ori1);
348 std::vector<PoseBasePtr> poses = std::vector<PoseBasePtr>();
349 for (
int i = 0; i < 20; i++)
351 poses.push_back(pose1);
353 std::vector<VirtualRobot::IKSolver::CartesianSelection> selections =
354 std::vector<VirtualRobot::IKSolver::CartesianSelection>();
355 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::X);
359 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::X);
361 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::X);
362 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Y);
364 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::X);
365 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Y);
366 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Z);
367 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Z);
370 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Y);
371 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Z);
372 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::Y);
373 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::X);
374 selections.push_back(VirtualRobot::IKSolver::CartesianSelection::X);
378 BOOST_CHECK_EQUAL(selections[0], VirtualRobot::IKSolver::CartesianSelection::All);
379 BOOST_CHECK_EQUAL(selections[1], VirtualRobot::IKSolver::CartesianSelection::All);
380 BOOST_CHECK_EQUAL(selections[2], VirtualRobot::IKSolver::CartesianSelection::All);
381 BOOST_CHECK_EQUAL(selections[3], VirtualRobot::IKSolver::CartesianSelection::All);
382 BOOST_CHECK_EQUAL(selections[4], VirtualRobot::IKSolver::CartesianSelection::All);
383 BOOST_CHECK_EQUAL(selections[5], VirtualRobot::IKSolver::CartesianSelection::All);
384 BOOST_CHECK_EQUAL(selections[6], VirtualRobot::IKSolver::CartesianSelection::All);
385 BOOST_CHECK_EQUAL(selections[7], VirtualRobot::IKSolver::CartesianSelection::All);
386 BOOST_CHECK_EQUAL(selections[8], VirtualRobot::IKSolver::CartesianSelection::All);
397 BOOST_CHECK_EQUAL(selections[19], VirtualRobot::IKSolver::CartesianSelection::X);