1 #ifndef TESSERACT_COLLISION_COLLISION_BOX_CAPSULE_UNIT_HPP
2 #define TESSERACT_COLLISION_COLLISION_BOX_CAPSULE_UNIT_HPP
17 Eigen::Isometry3d box_pose;
18 box_pose.setIdentity();
22 obj1_shapes.push_back(box);
23 obj1_poses.push_back(box_pose);
30 CollisionShapePtr thin_box = std::make_shared<tesseract_geometry::Box>(0.1, 1, 1);
31 Eigen::Isometry3d thin_box_pose;
32 thin_box_pose.setIdentity();
36 obj2_shapes.push_back(thin_box);
37 obj2_poses.push_back(thin_box_pose);
44 CollisionShapePtr capsule = std::make_shared<tesseract_geometry::Capsule>(0.25, 0.25);
45 Eigen::Isometry3d capsule_pose;
46 capsule_pose.setIdentity();
50 obj3_shapes.push_back(capsule);
51 obj3_poses.push_back(capsule_pose);
58 CollisionShapePtr remove_box = std::make_shared<tesseract_geometry::Box>(0.1, 1, 1);
59 Eigen::Isometry3d remove_box_pose;
60 remove_box_pose.setIdentity();
64 obj4_shapes.push_back(remove_box);
65 obj4_poses.push_back(remove_box_pose);
96 EXPECT_TRUE(cgt.isApprox(Eigen::Isometry3d::Identity(), 1e-5));
113 std::vector<std::string> active_links{
"box_link",
"capsule_link" };
116 EXPECT_TRUE(tesseract_common::isIdentical<std::string>(active_links, check_active_links,
false));
125 location[
"box_link"] = Eigen::Isometry3d::Identity();
126 location[
"capsule_link"] = Eigen::Isometry3d::Identity();
127 location[
"capsule_link"].translation()(0) = 0.2;
139 EXPECT_NEAR(result_vector[0].nearest_points[0][1], result_vector[0].nearest_points[1][1], 0.001);
140 EXPECT_NEAR(result_vector[0].nearest_points[0][2], result_vector[0].nearest_points[1][2], 0.001);
142 std::vector<int> idx = { 0, 1, 1 };
143 if (result_vector[0].link_names[0] !=
"box_link")
146 if (result_vector[0].single_contact_point)
148 EXPECT_NEAR(result_vector[0].nearest_points[0][0], result_vector[0].nearest_points[1][0], 0.001);
149 EXPECT_FALSE(std::abs(result_vector[0].nearest_points[0][0] - (0.5)) > 0.001 &&
150 std::abs(result_vector[0].nearest_points[0][0] - (-0.05)) > 0.001);
154 EXPECT_NEAR(result_vector[0].nearest_points[
static_cast<size_t>(idx[0])][0], 0.5, 0.001);
155 EXPECT_NEAR(result_vector[0].nearest_points[
static_cast<size_t>(idx[1])][0], -0.05, 0.001);
158 EXPECT_NEAR(result_vector[0].normal[0], idx[2] * 1.0, 0.001);
159 EXPECT_NEAR(result_vector[0].normal[1], idx[2] * 0.0, 0.001);
160 EXPECT_NEAR(result_vector[0].normal[2], idx[2] * 0.0, 0.001);
165 location[
"capsule_link"].translation() = Eigen::Vector3d(0, 0, 1);
167 result_vector.clear();
179 result_vector.clear();
188 EXPECT_NEAR(result_vector[0].nearest_points[0][0], result_vector[0].nearest_points[1][0], 0.001);
189 EXPECT_NEAR(result_vector[0].nearest_points[0][1], result_vector[0].nearest_points[1][1], 0.001);
192 if (result_vector[0].link_names[0] !=
"box_link")
195 if (result_vector[0].single_contact_point)
197 EXPECT_NEAR(result_vector[0].nearest_points[0][0], result_vector[0].nearest_points[1][0], 0.001);
198 EXPECT_FALSE(std::abs(result_vector[0].nearest_points[0][2] - (0.5)) > 0.001 &&
199 std::abs(result_vector[0].nearest_points[0][2] - (0.625)) > 0.001);
203 EXPECT_NEAR(result_vector[0].nearest_points[
static_cast<size_t>(idx[0])][2], 0.5, 0.001);
204 EXPECT_NEAR(result_vector[0].nearest_points[
static_cast<size_t>(idx[1])][2], 0.625, 0.001);
207 EXPECT_NEAR(result_vector[0].normal[0], idx[2] * 0.0, 0.0011);
208 EXPECT_NEAR(result_vector[0].normal[1], idx[2] * 0.0, 0.0011);
209 EXPECT_NEAR(result_vector[0].normal[2], idx[2] * 1.0, 0.0011);
214 #endif // TESSERACT_COLLISION_COLLISION_BOX_CAPSULE_UNIT_HPP