3 #include <gtest/gtest.h>
31 std::string path =
"package://tesseract_support/urdf/lbr_iiwa_14_r820.urdf";
37 std::string path =
"package://tesseract_support/urdf/lbr_iiwa_14_r820.srdf";
39 auto srdf = std::make_shared<SRDFModel>();
40 srdf->initFile(scene_graph, locator.
locateResource(path)->getFilePath(), locator);
55 auto env = std::make_unique<Environment>();
56 bool success = env->init(*scene_graph, srdf);
59 Link link_1(
"link_n1");
62 v->origin.translation() = Eigen::Vector3d(0, 0, 0);
63 v->material = std::make_shared<Material>(
"test_material");
64 v->material->color = Eigen::Vector4d(1, 0, 0, 1);
65 v->geometry = std::make_shared<tesseract_geometry::Box>(1, 1, 1);
66 v->name =
"link1_visual";
67 link_1.
visual.push_back(v);
70 c->origin.translation() = v->origin.translation();
71 c->geometry = v->geometry;
72 c->name =
"link1_collision";
76 Link link_2(
"link_n2");
79 v->origin.translation() = Eigen::Vector3d(1.5, 0, 0);
80 v->material = std::make_shared<Material>(
"test_material");
81 v->material->color = Eigen::Vector4d(1, 1, 1, 1);
82 v->geometry = std::make_shared<tesseract_geometry::Box>(1, 1, 1);
83 v->name =
"link2_visual";
84 link_2.
visual.push_back(v);
87 c->origin.translation() = v->origin.translation();
88 c->geometry = v->geometry;
89 c->name =
"link2_collision";
93 auto cmd1 = std::make_shared<AddLinkCommand>(link_1,
true);
94 env->applyCommand(cmd1);
96 auto cmd2 = std::make_shared<AddLinkCommand>(link_2,
true);
97 env->applyCommand(cmd2);
102 TEST(TesseractEnvironmentCollisionUnit, runEnvironmentDiscreteCollisionTest)
119 std::vector<std::string> active_links = {
"link_n1" };
120 manager->setActiveCollisionObjects(active_links);
121 manager->contactTest(collision, collision_check_config.
contact_request);
125 auto pose = Eigen::Isometry3d::Identity();
126 pose.translation() = Eigen::Vector3d(0, 0, 1.5);
127 manager->setCollisionObjectsTransform(
"link_n1", pose);
128 manager->applyContactManagerConfig(contact_manager_config);
132 manager->contactTest(collision, collision_check_config.
contact_request);
137 env->setActiveDiscreteContactManager(
"BulletDiscreteBVHManager");
143 std::vector<std::string> active_links = {
"link_n1" };
144 manager->setActiveCollisionObjects(active_links);
145 manager->contactTest(collision, collision_check_config.
contact_request);
149 auto pose = Eigen::Isometry3d::Identity();
150 pose.translation() = Eigen::Vector3d(0, 0, 1.5);
151 manager->setCollisionObjectsTransform(
"link_n1", pose);
152 manager->applyContactManagerConfig(contact_manager_config);
156 manager->contactTest(collision, collision_check_config.
contact_request);
162 TEST(TesseractEnvironmentCollisionUnit, runEnvironmentContinuousCollisionTest)
179 std::vector<std::string> active_links = {
"link_n1" };
180 manager->setActiveCollisionObjects(active_links);
181 manager->contactTest(collision, collision_check_config.
contact_request);
185 auto pose1 = Eigen::Isometry3d::Identity();
186 pose1.translation() = Eigen::Vector3d(0, -2, 1.5);
187 auto pose2 = Eigen::Isometry3d::Identity();
188 pose2.translation() = Eigen::Vector3d(0, 2, 1.5);
189 manager->setCollisionObjectsTransform(
"link_n1", pose1, pose2);
190 manager->applyContactManagerConfig(contact_manager_config);
194 manager->contactTest(collision, collision_check_config.
contact_request);
199 TEST(TesseractEnvironmentCollisionUnit, runEnvironmentClearDiscreteCollisionTest)
203 env->clearCachedDiscreteContactManager();
217 std::vector<std::string> active_links = {
"link_n1" };
218 manager->setActiveCollisionObjects(active_links);
219 manager->contactTest(collision, collision_check_config.
contact_request);
223 auto pose = Eigen::Isometry3d::Identity();
224 pose.translation() = Eigen::Vector3d(0, 0, 1.5);
225 manager->setCollisionObjectsTransform(
"link_n1", pose);
226 manager->applyContactManagerConfig(contact_manager_config);
230 manager->contactTest(collision, collision_check_config.
contact_request);
235 TEST(TesseractEnvironmentCollisionUnit, runEnvironmentClearContinuousCollisionTest)
239 env->clearCachedContinuousContactManager();
253 std::vector<std::string> active_links = {
"link_n1" };
254 manager->setActiveCollisionObjects(active_links);
255 manager->contactTest(collision, collision_check_config.
contact_request);
259 auto pose1 = Eigen::Isometry3d::Identity();
260 pose1.translation() = Eigen::Vector3d(0, -2, 1.5);
261 auto pose2 = Eigen::Isometry3d::Identity();
262 pose2.translation() = Eigen::Vector3d(0, 2, 1.5);
263 manager->setCollisionObjectsTransform(
"link_n1", pose1, pose2);
264 manager->applyContactManagerConfig(contact_manager_config);
268 manager->contactTest(collision, collision_check_config.
contact_request);
273 int main(
int argc,
char** argv)
275 testing::InitGoogleTest(&argc, argv);
277 return RUN_ALL_TESTS();