|
39 | 39 | #include <tf2_kdl/tf2_kdl.h> |
40 | 40 | #include <tf2_bullet/tf2_bullet.h> |
41 | 41 | #include <tf2_geometry_msgs/tf2_geometry_msgs.h> |
| 42 | +#include <tf2_eigen/tf2_eigen.h> |
42 | 43 | #include <ros/time.h> |
43 | 44 |
|
44 | 45 | TEST(tf2Convert, kdlToBullet) |
@@ -95,7 +96,88 @@ TEST(tf2Convert, kdlBulletROSConversions) |
95 | 96 | EXPECT_NEAR(b1.x(), b4.x(), epsilon); |
96 | 97 | EXPECT_NEAR(b1.y(), b4.y(), epsilon); |
97 | 98 | EXPECT_NEAR(b1.z(), b4.z(), epsilon); |
98 | | -} |
| 99 | +} |
| 100 | + |
| 101 | +TEST(tf2Convert, PoseStampedConversions) { |
| 102 | + double epsilon = 1e-9; |
| 103 | + |
| 104 | + const tf2::Stamped<tf2::Transform> p_tf2_1(tf2::Transform(tf2::Quaternion(1.0,0.0,0.0,2.0), tf2::Vector3(1,2,3)), ros::Time(), "my_frame"); |
| 105 | + tf2::Stamped<tf2::Transform> p_tf2_2; |
| 106 | + geometry_msgs::PoseStamped msg; |
| 107 | + tf2::toMsg(p_tf2_1, msg); |
| 108 | + |
| 109 | + tf2::Stamped<Eigen::Isometry3d> p_e_iso; |
| 110 | + tf2::Stamped<Eigen::Affine3d> p_e_aff; |
| 111 | + tf2::Stamped<KDL::Frame> p_f; |
| 112 | + |
| 113 | + tf2::convert(p_tf2_1, p_e_iso); |
| 114 | + tf2::convert(p_e_iso, p_f); |
| 115 | + tf2::convert(p_f, p_e_aff); |
| 116 | + tf2::convert(p_e_aff, p_tf2_2); |
| 117 | + |
| 118 | + tf2::toMsg(p_e_aff, msg); |
| 119 | + |
| 120 | + EXPECT_EQ(p_tf2_1.frame_id_, p_tf2_2.frame_id_); |
| 121 | + EXPECT_NEAR(p_tf2_1.stamp_.toSec(), p_tf2_2.stamp_.toSec(), epsilon); |
| 122 | + |
| 123 | + const auto& q1(p_tf2_1.getRotation()), q2(p_tf2_2.getRotation()); |
| 124 | + EXPECT_NEAR(q1.x(), q2.x(), epsilon); |
| 125 | + EXPECT_NEAR(q1.y(), q2.y(), epsilon); |
| 126 | + EXPECT_NEAR(q1.z(), q2.z(), epsilon); |
| 127 | + EXPECT_NEAR(q1.w(), q2.w(), epsilon); |
| 128 | + |
| 129 | + const auto& o1(p_tf2_1.getOrigin()), o2(p_tf2_2.getOrigin()); |
| 130 | + EXPECT_NEAR(o1.x(), o2.x(), epsilon); |
| 131 | + EXPECT_NEAR(o1.y(), o2.y(), epsilon); |
| 132 | + EXPECT_NEAR(o1.z(), o2.z(), epsilon); |
| 133 | +} |
| 134 | + |
| 135 | +TEST(tf2Convert, QuaternionStampedConversations) |
| 136 | +{ |
| 137 | + const double epsilon = 1e-9; |
| 138 | + const tf2::Stamped<Eigen::Quaterniond> q_e_1(Eigen::Quaterniond(2.0, 4.0, 0.25, -1), |
| 139 | + ros::Time(), "my_frame"); |
| 140 | + tf2::Stamped<tf2::Quaternion> q_tf_1; |
| 141 | + tf2::convert(q_e_1, q_tf_1); |
| 142 | + |
| 143 | + EXPECT_EQ(q_e_1.frame_id_, q_tf_1.frame_id_); |
| 144 | + EXPECT_NEAR(q_e_1.stamp_.toSec(), q_tf_1.stamp_.toSec(), epsilon); |
| 145 | + EXPECT_NEAR(q_e_1.x(), q_tf_1.x(), epsilon); |
| 146 | + EXPECT_NEAR(q_e_1.y(), q_tf_1.y(), epsilon); |
| 147 | + EXPECT_NEAR(q_e_1.z(), q_tf_1.z(), epsilon); |
| 148 | + EXPECT_NEAR(q_e_1.w(), q_tf_1.w(), epsilon); |
| 149 | + |
| 150 | + tf2::Stamped<Eigen::Quaterniond> q_e_2; |
| 151 | + tf2::convert(q_tf_1, q_e_2); |
| 152 | + |
| 153 | + EXPECT_EQ(q_e_2.frame_id_, q_tf_1.frame_id_); |
| 154 | + EXPECT_NEAR(q_e_2.stamp_.toSec(), q_tf_1.stamp_.toSec(), epsilon); |
| 155 | + EXPECT_NEAR(q_e_2.x(), q_tf_1.x(), epsilon); |
| 156 | + EXPECT_NEAR(q_e_2.y(), q_tf_1.y(), epsilon); |
| 157 | + EXPECT_NEAR(q_e_2.z(), q_tf_1.z(), epsilon); |
| 158 | + EXPECT_NEAR(q_e_2.w(), q_tf_1.w(), epsilon); |
| 159 | +} |
| 160 | + |
| 161 | +TEST(tf2Convert, QuaternionConversations) |
| 162 | +{ |
| 163 | + const double epsilon = 1e-9; |
| 164 | + const Eigen::Quaterniond q_e_1(2.0, 4.0, 0.25, -1); |
| 165 | + tf2::Quaternion q_tf_1; |
| 166 | + tf2::convert(q_e_1, q_tf_1); |
| 167 | + |
| 168 | + EXPECT_NEAR(q_e_1.x(), q_tf_1.x(), epsilon); |
| 169 | + EXPECT_NEAR(q_e_1.y(), q_tf_1.y(), epsilon); |
| 170 | + EXPECT_NEAR(q_e_1.z(), q_tf_1.z(), epsilon); |
| 171 | + EXPECT_NEAR(q_e_1.w(), q_tf_1.w(), epsilon); |
| 172 | + |
| 173 | + Eigen::Quaterniond q_e_2; |
| 174 | + tf2::convert(q_tf_1, q_e_2); |
| 175 | + |
| 176 | + EXPECT_NEAR(q_e_2.x(), q_tf_1.x(), epsilon); |
| 177 | + EXPECT_NEAR(q_e_2.y(), q_tf_1.y(), epsilon); |
| 178 | + EXPECT_NEAR(q_e_2.z(), q_tf_1.z(), epsilon); |
| 179 | + EXPECT_NEAR(q_e_2.w(), q_tf_1.w(), epsilon); |
| 180 | +} |
99 | 181 |
|
100 | 182 | int main(int argc, char** argv) |
101 | 183 | { |
|
0 commit comments