3 #include <gtest/gtest.h>
6 #include "tesseract_collision/bullet/bullet_contact_checker.h"
8 TEST(TesseractConvexConcaveUnit, ConvexConcaveUnit)
10 tesseract::BulletContactChecker checker;
14 Eigen::Isometry3d box_pose;
15 box_pose.setIdentity();
19 tesseract::CollisionObjectTypeVector obj1_types;
20 obj1_shapes.push_back(box);
21 obj1_poses.push_back(box_pose);
22 obj1_types.push_back(tesseract::CollisionObjectType::UseShapeType);
24 checker.addObject(
"box_link", 0, obj1_shapes, obj1_poses, obj1_types);
28 Eigen::Isometry3d thin_box_pose;
29 thin_box_pose.setIdentity();
33 tesseract::CollisionObjectTypeVector obj2_types;
34 obj2_shapes.push_back(thin_box);
35 obj2_poses.push_back(thin_box_pose);
36 obj2_types.push_back(tesseract::CollisionObjectType::UseShapeType);
38 checker.addObject(
"thin_box_link", 0, obj2_shapes, obj2_poses, obj2_types);
42 Eigen::Isometry3d sphere_pose;
43 sphere_pose.setIdentity();
47 tesseract::CollisionObjectTypeVector obj3_types;
48 obj3_shapes.push_back(sphere);
49 obj3_poses.push_back(sphere_pose);
51 obj3_types.push_back(tesseract::CollisionObjectType::UseShapeType);
53 checker.addObject(
"sphere_link", 0, obj3_shapes, obj3_poses, obj3_types);
56 tesseract::ContactRequest req;
57 req.link_names.push_back(
"box_link");
58 req.link_names.push_back(
"sphere_link");
59 req.contact_distance = 0.1;
60 req.type = tesseract::ContactRequestType::CLOSEST;
63 tesseract::TransformMap location;
64 location[
"box_link"] = Eigen::Isometry3d::Identity();
65 location[
"sphere_link"] = Eigen::Isometry3d::Identity();
67 tesseract::ContactResultMap result;
68 checker.calcCollisionsDiscrete(req, location, result);
71 tesseract::flattenMoveResults(result, result_vector);
74 EXPECT_LT(std::abs(result_vector[0].
distance + 0.75), 0.0001);
78 location[
"sphere_link"].translation() = Eigen::Vector3d(1, 0, 0);
80 result_vector.clear();
82 checker.calcCollisionsDiscrete(req, location, result);
83 tesseract::flattenMoveResults(result, result_vector);
89 result_vector.clear();
90 req.contact_distance = 0.251;
92 checker.calcCollisionsDiscrete(req, location, result);
93 tesseract::flattenMoveResults(result, result_vector);
95 EXPECT_LT(std::abs(0.25 - result_vector[0].
distance), 0.0001);
122 int main(
int argc,
char** argv)
124 testing::InitGoogleTest(&argc, argv);
126 return RUN_ALL_TESTS();