TransitionTests.cpp
Go to the documentation of this file.
1#define BOOST_TEST_MODULE ArmarX::RobotTrajectoryDesigner::Transition
2#define ARMARX_BOOST_TEST
3
4#include "../../../../../build/testing/RobotTrajectoryDesigner/Test.h"
5#include "../Transition.h"
6#include "../Util/OrientationConversion.h"
7
8using namespace armarx;
9
11{
12 //Init
13 Vector3BasePtr pos1 = Vector3BasePtr(new Vector3(1, 2, 3));
14 QuaternionBasePtr ori1 = OrientationConversion::toQuaternion(1, 2, 3);
15 PoseBasePtr pose1 = PoseBasePtr(new Pose(pos1, ori1));
16
17 Vector3BasePtr pos2 = Vector3BasePtr(new Vector3(4, 5, 6));
18 QuaternionBasePtr ori2 = OrientationConversion::toQuaternion(4, 5, 6);
19 PoseBasePtr pose2 = PoseBasePtr(new Pose(pos2, ori2));
20
23
24
25 //Consturctor test
26 Transition t1 = Transition(w1, w2);
27 BOOST_CHECK_EQUAL(t1.getStart(), w1);
28 BOOST_CHECK_EQUAL(t1.getEnd(), w2);
29 BOOST_CHECK_EQUAL(t1.getInterpolationType(), eLinearInterpolation);
30 BOOST_CHECK_EQUAL(t1.getTimeOptimalDuration(), 0);
31 BOOST_CHECK_EQUAL(t1.getUserDuration(), 0);
32
33 //check user/timeOptimal duration
34 t1.setUserDuration(5);
35 BOOST_CHECK_EQUAL(t1.getUserDuration(), 5);
37 BOOST_CHECK_EQUAL(t1.getTimeOptimalDuration(), 10);
38 BOOST_CHECK_EQUAL(t1.getUserDuration(), 10);
39 //UserDuration lower Than timeOptimal
40 BOOST_CHECK_THROW(t1.setUserDuration(5), InvalidArgumentException);
41
42 //wrong usage
43 BOOST_CHECK_THROW(t1.setUserDuration(-1), InvalidArgumentException);
44 BOOST_CHECK_THROW(t1.setTimeOptimalDuration(-1), InvalidArgumentException);
45}
46
48{
49 //Init
50 Vector3BasePtr pos1 = Vector3BasePtr(new Vector3(1, 2, 3));
51 QuaternionBasePtr ori1 = OrientationConversion::toQuaternion(1, 2, 3);
52 PoseBasePtr pose1 = PoseBasePtr(new Pose(pos1, ori1));
53
54 Vector3BasePtr pos2 = Vector3BasePtr(new Vector3(4, 5, 6));
55 QuaternionBasePtr ori2 = OrientationConversion::toQuaternion(4, 5, 6);
56 PoseBasePtr pose2 = PoseBasePtr(new Pose(pos2, ori2));
57
60
61 Vector3BasePtr pos3 = Vector3BasePtr(new Vector3(7, 8, 9));
62 QuaternionBasePtr ori3 = OrientationConversion::toQuaternion(7, 8, 9);
63 PoseBasePtr pose3 = PoseBasePtr(new Pose(pos3, ori3));
64
65 Vector3BasePtr pos4 = Vector3BasePtr(new Vector3(10, 11, 12));
66 QuaternionBasePtr ori4 = OrientationConversion::toQuaternion(10, 11, 12);
67 PoseBasePtr pose4 = PoseBasePtr(new Pose(pos4, ori4));
68
71
72
73 Transition t1 = Transition(w1, w2);
75 t1.setUserDuration(20);
76
77 t1.getStart()->setTimeOptimalTimestamp(1);
78 t1.getStart()->setUserTimestamp(2);
79 t1.getEnd()->setTimeOptimalTimestamp(10);
80 t1.getEnd()->setUserTimestamp(20);
81 Transition t2 = Transition(t1);
82
83
84 BOOST_CHECK_EQUAL(t2.getTimeOptimalDuration(), 10);
85 BOOST_CHECK_EQUAL(t2.getUserDuration(), 20);
86 BOOST_CHECK_EQUAL(t2.getStart()->getUserTimestamp(), 2);
87 BOOST_CHECK_EQUAL(t2.getStart()->getTimeOptimalTimestamp(), 1);
88 BOOST_CHECK_EQUAL(t2.getEnd()->getUserTimestamp(), 20);
89 BOOST_CHECK_EQUAL(t2.getEnd()->getTimeOptimalTimestamp(), 10);
90
91
93 t1.setUserDuration(40);
94 t1.getStart()->setTimeOptimalTimestamp(3);
95 t1.getStart()->setUserTimestamp(4);
96 t1.getEnd()->setTimeOptimalTimestamp(30);
97 t1.getEnd()->setUserTimestamp(40);
98
99 BOOST_CHECK_EQUAL(t2.getTimeOptimalDuration(), 10);
100 BOOST_CHECK_EQUAL(t2.getUserDuration(), 20);
101 BOOST_CHECK_EQUAL(t2.getStart()->getUserTimestamp(), 2);
102 BOOST_CHECK_EQUAL(t2.getStart()->getTimeOptimalTimestamp(), 1);
103 BOOST_CHECK_EQUAL(t2.getEnd()->getUserTimestamp(), 20);
104 BOOST_CHECK_EQUAL(t2.getEnd()->getTimeOptimalTimestamp(), 10);
105
106
107 BOOST_CHECK_EQUAL(t1.getTimeOptimalDuration(), 30);
108 BOOST_CHECK_EQUAL(t1.getUserDuration(), 40);
109 BOOST_CHECK_EQUAL(t1.getStart()->getUserTimestamp(), 4);
110 BOOST_CHECK_EQUAL(t1.getStart()->getTimeOptimalTimestamp(), 3);
111 BOOST_CHECK_EQUAL(t1.getEnd()->getUserTimestamp(), 40);
112 BOOST_CHECK_EQUAL(t1.getEnd()->getTimeOptimalTimestamp(), 30);
113}
BOOST_AUTO_TEST_CASE(basicTest)
static QuaternionBasePtr toQuaternion(const double roll, const double pitch, const double yaw)
The Pose class.
Definition Pose.h:243
UserWaypointPtr getStart()
Returns the start UserWaypoint of the transition.
double getTimeOptimalDuration() const
Returns the time optimal duration calculated by TrajectoryCalculation.
void setUserDuration(double value)
Set the user duration of the transition and tests if it is greater than the time optimal duration.
double getUserDuration() const
Returns the user duration of the transition.
Definition Transition.cpp:6
InterpolationType getInterpolationType() const
Returns the interpolation type of the transition.
UserWaypointPtr getEnd()
Returns the end UserWaypoint of the transition.
void setTimeOptimalDuration(double value)
set the time optimal duration and set the userDuration if its less than time optimal duration
The UserWaypoint class represents a waypoint of the trajectory.
The Vector3 class.
Definition Pose.h:113
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::shared_ptr< UserWaypoint > UserWaypointPtr