1 #ifndef TESSERACT_COLLISION_COLLISION_BOX_BOX_UNIT_HPP
2 #define TESSERACT_COLLISION_COLLISION_BOX_BOX_UNIT_HPP
21 Eigen::Isometry3d box_pose;
22 box_pose.setIdentity();
26 obj1_shapes.push_back(box);
27 obj1_poses.push_back(box_pose);
35 CollisionShapePtr thin_box = std::make_shared<tesseract_geometry::Box>(0.1, 1, 1);
36 Eigen::Isometry3d thin_box_pose;
37 thin_box_pose.setIdentity();
41 obj2_shapes.push_back(thin_box);
42 obj2_poses.push_back(thin_box_pose);
55 auto mesh_vertices = std::make_shared<tesseract_common::VectorVector3d>();
56 auto mesh_faces = std::make_shared<Eigen::VectorXi>();
65 auto mesh = std::make_shared<tesseract_geometry::Mesh>(mesh_vertices, mesh_faces);
70 second_box = std::make_shared<tesseract_geometry::Box>(2, 2, 2);
73 Eigen::Isometry3d second_box_pose;
74 second_box_pose.setIdentity();
78 obj3_shapes.push_back(second_box);
79 obj3_poses.push_back(second_box_pose);
86 Eigen::Isometry3d remove_box_pose;
87 remove_box_pose.setIdentity();
91 obj4_shapes.push_back(thin_box);
92 obj4_poses.push_back(remove_box_pose);
123 EXPECT_TRUE(cgt.isApprox(Eigen::Isometry3d::Identity(), 1e-5));
133 std::vector<std::string> active_links{
"box_link",
"second_box_link" };
136 EXPECT_TRUE(tesseract_common::isIdentical<std::string>(active_links, check_active_links,
false));
145 location[
"box_link"] = Eigen::Isometry3d::Identity();
146 location[
"box_link"].translation()(0) = 0.2;
147 location[
"box_link"].translation()(1) = 0.1;
148 location[
"second_box_link"] = Eigen::Isometry3d::Identity();
161 EXPECT_NEAR(result_vector[0].nearest_points[0][1], result_vector[0].nearest_points[1][1], 0.001);
162 EXPECT_NEAR(result_vector[0].nearest_points[0][2], result_vector[0].nearest_points[1][2], 0.001);
164 std::vector<int> idx = { 0, 1, 1 };
165 if (result_vector[0].link_names[0] !=
"box_link")
168 if (result_vector[0].single_contact_point)
170 EXPECT_NEAR(result_vector[0].nearest_points[0][0], result_vector[0].nearest_points[1][0], 0.001);
171 EXPECT_FALSE(std::abs(result_vector[0].nearest_points[0][0] - (-0.3)) > 0.001 &&
172 std::abs(result_vector[0].nearest_points[0][0] - (1.0)) > 0.001);
176 EXPECT_NEAR(result_vector[0].nearest_points[
static_cast<size_t>(idx[0])][0], -0.3, 0.001);
177 EXPECT_NEAR(result_vector[0].nearest_points[
static_cast<size_t>(idx[1])][0], 1.0, 0.001);
180 EXPECT_NEAR(result_vector[0].normal[0], idx[2] * -1.0, 0.001);
181 EXPECT_NEAR(result_vector[0].normal[1], idx[2] * 0.0, 0.001);
182 EXPECT_NEAR(result_vector[0].normal[2], idx[2] * 0.0, 0.001);
188 location[
"box_link"].translation() = Eigen::Vector3d(1.60, 0, 0);
190 result_vector.clear();
193 std::vector<std::string> names = {
"box_link" };
211 location[
"box_link"].translation() = Eigen::Vector3d(1.60, 0, 0);
213 result_vector.clear();
216 std::vector<std::string> names = {
"box_link" };
229 result_vector.clear();
242 EXPECT_NEAR(result_vector[0].nearest_points[0][1], result_vector[0].nearest_points[1][1], 0.001);
243 EXPECT_NEAR(result_vector[0].nearest_points[0][2], result_vector[0].nearest_points[1][2], 0.001);
246 if (result_vector[0].link_names[0] !=
"box_link")
249 if (result_vector[0].single_contact_point)
251 EXPECT_NEAR(result_vector[0].nearest_points[0][0], result_vector[0].nearest_points[1][0], 0.001);
252 EXPECT_FALSE(std::abs(result_vector[0].nearest_points[0][0] - (1.1)) > 0.001 &&
253 std::abs(result_vector[0].nearest_points[0][0] - (1.0)) > 0.001);
257 EXPECT_NEAR(result_vector[0].nearest_points[
static_cast<size_t>(idx[0])][0], 1.1, 0.001);
258 EXPECT_NEAR(result_vector[0].nearest_points[
static_cast<size_t>(idx[1])][0], 1.0, 0.001);
261 EXPECT_NEAR(result_vector[0].normal[0], idx[2] * -1.0, 0.001);
262 EXPECT_NEAR(result_vector[0].normal[1], idx[2] * 0.0, 0.001);
263 EXPECT_NEAR(result_vector[0].normal[2], idx[2] * 0.0, 0.001);
270 result_vector.clear();
279 EXPECT_NEAR(result_vector[0].nearest_points[0][1], result_vector[0].nearest_points[1][1], 0.001);
280 EXPECT_NEAR(result_vector[0].nearest_points[0][2], result_vector[0].nearest_points[1][2], 0.001);
283 if (result_vector[0].link_names[0] !=
"box_link")
286 if (result_vector[0].single_contact_point)
288 EXPECT_NEAR(result_vector[0].nearest_points[0][0], result_vector[0].nearest_points[1][0], 0.001);
289 EXPECT_FALSE(std::abs(result_vector[0].nearest_points[0][0] - (1.1)) > 0.001 &&
290 std::abs(result_vector[0].nearest_points[0][0] - (1.0)) > 0.001);
294 EXPECT_NEAR(result_vector[0].nearest_points[
static_cast<size_t>(idx[0])][0], 1.1, 0.001);
295 EXPECT_NEAR(result_vector[0].nearest_points[
static_cast<size_t>(idx[1])][0], 1.0, 0.001);
298 EXPECT_NEAR(result_vector[0].normal[0], idx[2] * -1.0, 0.001);
299 EXPECT_NEAR(result_vector[0].normal[1], idx[2] * 0.0, 0.001);
300 EXPECT_NEAR(result_vector[0].normal[2], idx[2] * 0.0, 0.001);
319 #endif // COLLISION_BOX_BOX_UNIT_HPP