36 #include <gtest/gtest.h>
56 std::vector<Vec> results;
57 for (
const auto& original_primitives : original_primitives_vector)
59 for (
const auto& original_primitive : original_primitives)
65 primitive = original_primitive;
68 primitive =
Vec(original_primitive[1], -original_primitive[0], original_primitive[2]);
72 primitive =
Vec(-original_primitive[0], -original_primitive[1], original_primitive[2]);
76 primitive =
Vec(-original_primitive[1], original_primitive[0], original_primitive[2]);
82 results.push_back(primitive);
83 const Vec opposite =
Vec(-primitive[0], -primitive[1], primitive[2]);
84 results.push_back(opposite);
88 for (
int i = 1; i < 16; ++i)
90 results.push_back(
Vec(0, 0, i));
92 std::sort(results.begin(), results.end(), &
compareVecs);
98 const std::vector<Vec> expected_0deg_straight_primitives =
105 const std::vector<Vec> expected_0deg_rotation_1_primitives =
112 const std::vector<Vec> expected_0deg_rotation_2_primitives =
119 const std::vector<Vec> expected_0deg_rotation_3_primitives =
126 const std::vector<std::vector<Vec>> expected_0deg_primitives =
128 expected_0deg_straight_primitives,
129 expected_0deg_rotation_1_primitives,
130 expected_0deg_rotation_2_primitives,
131 expected_0deg_rotation_3_primitives,
134 const std::vector<Vec> expected_23deg_straight_primitives =
140 const std::vector<Vec> expected_23deg_rotation_1_primitives =
147 const std::vector<Vec> expected_23deg_rotation_2_primitives =
155 const std::vector<Vec> expected_23deg_rotation_3_primitives =
163 const std::vector<std::vector<Vec>> expected_23deg_primitives =
165 expected_23deg_straight_primitives,
166 expected_23deg_rotation_1_primitives,
167 expected_23deg_rotation_2_primitives,
168 expected_23deg_rotation_3_primitives,
171 const std::vector<Vec> expected_45deg_straight_primitives =
178 const std::vector<Vec> expected_45deg_rotation_1_primitives =
185 const std::vector<Vec> expected_45deg_rotation_2_primitives =
194 const std::vector<Vec> expected_45deg_rotation_3_primitives =
203 const std::vector<std::vector<Vec>> expected_45deg_primitives =
205 expected_45deg_straight_primitives,
206 expected_45deg_rotation_1_primitives,
207 expected_45deg_rotation_2_primitives,
208 expected_45deg_rotation_3_primitives,
211 const std::vector<Vec> expected_67deg_straight_primitives =
217 const std::vector<Vec> expected_67deg_rotation_1_primitives =
224 const std::vector<Vec> expected_67deg_rotation_2_primitives =
232 const std::vector<Vec> expected_67deg_rotation_3_primitives =
240 const std::vector<std::vector<Vec>> expected_67deg_primitives =
242 expected_67deg_straight_primitives,
243 expected_67deg_rotation_1_primitives,
244 expected_67deg_rotation_2_primitives,
245 expected_67deg_rotation_3_primitives,
248 const std::vector<std::vector<std::vector<Vec>>> expected_original_primitives =
250 expected_0deg_primitives,
251 expected_23deg_primitives,
252 expected_45deg_primitives,
253 expected_67deg_primitives,
256 costmap_cspace_msgs::MapMetaData3D map_info;
257 map_info.linear_resolution = 0.1f;
258 map_info.angular_resolution =
static_cast<float>(M_PI / 8);
266 const std::vector<std::vector<MotionPrimitiveBuilder::Vec>> motion_primitives =
269 EXPECT_EQ(map_info.angle,
static_cast<unsigned int>(motion_primitives.size()));
270 for (
size_t i = 0; i < motion_primitives.size(); ++i)
272 std::vector<Vec> current_primitives = motion_primitives[i];
273 std::sort(current_primitives.begin(), current_primitives.end(), &
compareVecs);
275 ASSERT_EQ(expected_primitives.size(), current_primitives.size());
276 for (
size_t j = 0; j < current_primitives.size(); ++j)
278 const Vec& expected_prim = expected_primitives[j];
279 const Vec& actual_prim = current_primitives[j];
281 EXPECT_EQ(expected_prim, actual_prim)
282 <<
"Error at " << i <<
"," << j <<
"\n"
283 <<
" Expected: (" << expected_prim[0] <<
"," << expected_prim[1] <<
"," << expected_prim[2] <<
")\n"
284 <<
" Actual: (" << actual_prim[0] <<
"," << actual_prim[1] <<
"," << actual_prim[2] <<
")\n";
292 int main(
int argc,
char** argv)
294 testing::InitGoogleTest(&argc, argv);
296 return RUN_ALL_TESTS();