2 #include <gtest/gtest.h>
8 TEST(AlbHelper, trackedClassIds)
24 TEST(AlbHelper, poseOrientation)
27 geometry_msgs::Pose poseI;
28 Helper::define_pose(poseI, { 0.0f, 0.0f, 0.0f }, { 1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f });
30 EXPECT_EQ(poseI.orientation.x, 0);
31 EXPECT_EQ(poseI.orientation.y, 0);
32 EXPECT_EQ(poseI.orientation.z, 0);
33 EXPECT_EQ(poseI.orientation.w, 1);
36 geometry_msgs::Pose poseX;
37 Helper::define_pose(poseX, { 0.0f, 0.0f, 0.0f }, { 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, -1.0f, 0.0f });
39 EXPECT_NEAR(poseX.orientation.x, sqrt(2) / 2, 10e-5);
40 EXPECT_EQ(poseX.orientation.y, 0.0f);
41 EXPECT_EQ(poseX.orientation.z, 0.0f);
42 EXPECT_NEAR(poseX.orientation.w, sqrt(2) / 2, 10e-5);
45 geometry_msgs::Pose poseY;
46 Helper::define_pose(poseY, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, -1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f });
48 EXPECT_EQ(poseY.orientation.x, 0.0f);
49 EXPECT_NEAR(poseY.orientation.y, sqrt(2) / 2, 10e-5);
50 EXPECT_EQ(poseY.orientation.z, 0.0f);
51 EXPECT_NEAR(poseY.orientation.w, sqrt(2) / 2, 10e-5);
54 geometry_msgs::Pose poseZ;
55 Helper::define_pose(poseZ, { 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f });
57 EXPECT_EQ(poseZ.orientation.x, 0.0f);
58 EXPECT_EQ(poseZ.orientation.y, 0.0f);
59 EXPECT_NEAR(poseZ.orientation.z, sqrt(2) / 2, 10e-5);
60 EXPECT_NEAR(poseZ.orientation.w, sqrt(2) / 2, 10e-5);
64 TEST(AlbHelper, unorganizedPointCloudMessage)
66 float points[6] = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 };
69 sensor_msgs::PointCloud2 pointCloudUnorganized;
72 EXPECT_EQ(pointCloudUnorganized.width, 2);
73 EXPECT_EQ(pointCloudUnorganized.height, 1);
74 EXPECT_EQ(pointCloudUnorganized.data.size(), 2 * 3 *
sizeof(
float));
76 float *recast_points =
reinterpret_cast<float *
>(pointCloudUnorganized.data.data());
77 EXPECT_EQ(recast_points[0], 0.0);
78 EXPECT_EQ(recast_points[1], 1.0);
79 EXPECT_EQ(recast_points[2], 2.0);
80 EXPECT_EQ(recast_points[3], 3.0);
81 EXPECT_EQ(recast_points[4], 4.0);
82 EXPECT_EQ(recast_points[5], 5.0);
85 TEST(AlbHelper, organizedPointCloudMessage)
87 float points[6] = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 };
90 sensor_msgs::PointCloud2 pointCloudOrganized;
93 EXPECT_EQ(pointCloudOrganized.width, 1);
94 EXPECT_EQ(pointCloudOrganized.height, 2);
95 EXPECT_EQ(pointCloudOrganized.data.size(), 2 * 3 *
sizeof(
float));
98 TEST(AlbHelper, organizedPointCloudMessageRowwiseOrdering)
100 constexpr uint32_t layers = 2;
101 constexpr uint32_t points = 6;
102 float data[points * 3];
103 for (
int i = 0; i < points; ++i) {
104 data[3 * i] = float(i);
105 data[3 * i + 1] = float(i);
106 data[3 * i + 2] = float(i);
110 sensor_msgs::PointCloud2 pointCloudOrganized;
114 EXPECT_EQ(pointCloudOrganized.width, 3);
115 EXPECT_EQ(pointCloudOrganized.height, 2);
116 EXPECT_EQ(pointCloudOrganized.data.size(), points * 3 *
sizeof(
float));
123 float expect[points] = { 0.f, 2.f, 4.f, 1.f, 3.f, 5.f };
124 float *recast_points =
reinterpret_cast<float *
>(pointCloudOrganized.data.data());
125 for (
int i = 0; i < points; ++i) {
126 EXPECT_EQ(recast_points[3 * i], expect[i]);
127 EXPECT_EQ(recast_points[3 * i + 1], expect[i]);
128 EXPECT_EQ(recast_points[3 * i + 2], expect[i]);
135 sensor_msgs::PointCloud2 pointCloud;
138 EXPECT_EQ(pointCloud.fields.size(), 3);