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();
Eigen::Vector3d p
position
Eigen::Vector3d w
angular velocity,
void init(const M_string &remappings)
cartesian_control_msgs::CartesianTrajectoryPoint toMsg(int time_from_start=0) const
Convenience method for conversion.
Eigen::Vector3d v
linear velocity,
Eigen::Vector3d v_dot
linear acceleration,
Cartesian state with pose, velocity and acceleration.
Eigen::Quaterniond q
rotation
TEST(TestCartesianState, EmptyStateIsZeroInitialized)
Eigen::Vector3d rot() const
Get Euler-Rodrigues vector from orientation.
Eigen::Vector3d w_dot
angular acceleration,
int main(int argc, char **argv)