27 #include <gtest/gtest.h>
30 #include <Eigen/Dense>
31 #include <Eigen/src/Geometry/Quaternion.h>
32 #include <cartesian_control_msgs/CartesianTrajectoryPoint.h>
36 TEST(TestCartesianState, EmptyStateIsZeroInitialized)
39 for (
size_t i = 0; i < 3; ++i)
41 EXPECT_EQ(state.
p[i], 0);
42 EXPECT_EQ(state.
v[i], 0);
43 EXPECT_EQ(state.
v_dot[i], 0);
44 EXPECT_EQ(state.
w[i], 0);
45 EXPECT_EQ(state.
w_dot[i], 0);
49 TEST(TestCartesianState, EmptyStateHasNormalizedQuaternion)
55 EXPECT_DOUBLE_EQ(q.norm(), state.
q.norm());
58 TEST(TestCartesianState, EmptyStateYieldsZeroRotationVector)
61 EXPECT_EQ(Eigen::Vector3d::Zero(), state.
rot());
64 TEST(TestCartesianState, EmptyStateYieldsNormalizedTrajectoryPoint)
67 cartesian_control_msgs::CartesianTrajectoryPoint point;
68 point.pose.orientation.
w = 1;
71 std::stringstream state_str;
72 std::stringstream point_str;
73 state_str << state.
toMsg();
76 EXPECT_EQ(point_str.str(), state_str.str());
79 TEST(TestCartesianState, RosMessageInitializationYieldsNormalizedQuaternions)
81 cartesian_control_msgs::CartesianTrajectoryPoint
init;
83 EXPECT_DOUBLE_EQ(1.0, c.q.norm());
86 TEST(TestCartesianState, ConversionReturnsInitializingArgument)
93 cartesian_control_msgs::CartesianTrajectoryPoint
init;
94 init.acceleration.angular.x = 1.2345;
95 init.acceleration.linear.y = -173.47;
96 init.pose.orientation.w = 1;
97 init.pose.position.z = 0.003;
98 init.twist.linear.x = 67.594;
101 std::stringstream init_str;
102 std::stringstream state_str;
104 state_str << state.
toMsg();
106 EXPECT_EQ(init_str.str(), state_str.str());
121 EXPECT_DOUBLE_EQ(-b.p[0], diff.p[0]);
122 EXPECT_DOUBLE_EQ(-b.v[0], diff.v[0]);
123 EXPECT_DOUBLE_EQ(-b.w[0], diff.w[0]);
124 EXPECT_DOUBLE_EQ(-b.v_dot[0], diff.v_dot[0]);
125 EXPECT_DOUBLE_EQ(-b.w_dot[0], diff.w_dot[0]);
130 EXPECT_DOUBLE_EQ(0.0, diff.rot().norm());
132 EXPECT_DOUBLE_EQ(0.0, diff.rot().norm());
135 int main(
int argc,
char** argv)
137 testing::InitGoogleTest(&argc, argv);
138 return RUN_ALL_TESTS();