3 #include <gtest/gtest.h>
28 std::string path =
"package://tesseract_support/urdf/boxbot.urdf";
34 std::string path =
"package://tesseract_support/urdf/boxbot.srdf";
36 auto srdf = std::make_shared<SRDFModel>();
37 srdf->initFile(scene_graph, locator.
locateResource(path)->getFilePath(), locator);
42 template <
typename ManagerType>
51 manager->applyContactManagerConfig(config);
52 auto fn = manager->getContactAllowedValidator();
53 EXPECT_TRUE((*fn)(
"allowed_link_1a",
"allowed_link_2a"));
61 EXPECT_ANY_THROW(manager->applyContactManagerConfig(config));
69 manager->applyContactManagerConfig(config);
70 auto fn = manager->getContactAllowedValidator();
71 EXPECT_TRUE((*fn)(
"allowed_link_1a",
"allowed_link_2a"));
72 EXPECT_TRUE((*fn)(
"allowed_link_1c",
"allowed_link_2c"));
80 manager->applyContactManagerConfig(config);
81 auto fn = manager->getContactAllowedValidator();
82 EXPECT_FALSE((*fn)(
"allowed_link_1a",
"allowed_link_2a"));
83 EXPECT_TRUE((*fn)(
"allowed_link_1c",
"allowed_link_2c"));
87 TEST(TesseractEnvironmentUtils, applyContactManagerConfigIsAllowed)
96 auto env = std::make_shared<Environment>();
97 bool success = env->init(*scene_graph, srdf);
100 checkIsAllowedFnOverride<DiscreteContactManager>(env->getDiscreteContactManager());
101 checkIsAllowedFnOverride<ContinuousContactManager>(env->getContinuousContactManager());
104 TEST(TesseractEnvironmentUtils, applyContactManagerConfigObjectEnable)
114 auto env = std::make_shared<Environment>();
115 bool success = env->init(*scene_graph, srdf);
130 auto contact_manager_config = default_contact_manager_config;
132 std::vector<std::string> active_links = {
"boxbot_link",
"test_box_link" };
133 manager->setActiveCollisionObjects(active_links);
137 tmap[
"boxbot_link"] = Eigen::Isometry3d::Identity();
138 tmap[
"test_box_link"] = Eigen::Isometry3d::Identity();
139 tmap[
"test_box_link"].translate(Eigen::Vector3d(0.9, 0, 0));
143 manager->applyContactManagerConfig(contact_manager_config);
151 contact_manager_config.modify_object_enabled[
"boxbot_link"] =
false;
152 manager->applyContactManagerConfig(contact_manager_config);
160 contact_manager_config.modify_object_enabled[
"boxbot_link"] =
true;
161 manager->applyContactManagerConfig(contact_manager_config);
169 contact_manager_config.modify_object_enabled[
"nonexistant_link"] =
false;
170 manager->applyContactManagerConfig(contact_manager_config);
179 auto contact_manager_config = default_contact_manager_config;
181 std::vector<std::string> active_links = {
"boxbot_link",
"test_box_link" };
182 manager->setActiveCollisionObjects(active_links);
186 tmap1[
"boxbot_link"] = Eigen::Isometry3d::Identity();
187 tmap1[
"test_box_link"] = Eigen::Isometry3d::Identity();
188 tmap1[
"test_box_link"].translate(Eigen::Vector3d(0.9, 2, 0));
191 tmap2[
"boxbot_link"] = Eigen::Isometry3d::Identity();
192 tmap2[
"test_box_link"] = Eigen::Isometry3d::Identity();
193 tmap2[
"test_box_link"].translate(Eigen::Vector3d(0.9, -2, 0));
204 contact_manager_config.modify_object_enabled[
"boxbot_link"] =
false;
205 manager->applyContactManagerConfig(contact_manager_config);
213 contact_manager_config.modify_object_enabled[
"boxbot_link"] =
true;
214 manager->applyContactManagerConfig(contact_manager_config);
222 contact_manager_config.modify_object_enabled[
"nonexistant_link"] =
false;
223 manager->applyContactManagerConfig(contact_manager_config);
241 auto env = std::make_shared<Environment>();
242 bool success = env->init(*scene_graph, srdf);
257 auto contact_manager_config = default_contact_manager_config;
259 std::vector<std::string> active_links = {
"boxbot_link",
"test_box_link" };
260 manager->setActiveCollisionObjects(active_links);
264 tmap[
"boxbot_link"] = Eigen::Isometry3d::Identity();
265 tmap[
"test_box_link"] = Eigen::Isometry3d::Identity();
266 tmap[
"test_box_link"].translate(Eigen::Vector3d(1.05, 0, 0));
270 manager->applyContactManagerConfig(contact_manager_config);
277 contact_manager_config.default_margin = 0.1;
278 manager->applyContactManagerConfig(contact_manager_config);
285 contact_manager_config.default_margin = 0.0;
286 manager->applyContactManagerConfig(contact_manager_config);
293 contact_manager_config.default_margin = 0.1;
294 manager->applyContactManagerConfig(contact_manager_config);
303 auto contact_manager_config = default_contact_manager_config;
305 std::vector<std::string> active_links = {
"boxbot_link",
"test_box_link" };
306 manager->setActiveCollisionObjects(active_links);
310 tmap1[
"boxbot_link"] = Eigen::Isometry3d::Identity();
311 tmap1[
"test_box_link"] = Eigen::Isometry3d::Identity();
312 tmap1[
"test_box_link"].translate(Eigen::Vector3d(1.05, 2, 0));
315 tmap2[
"boxbot_link"] = Eigen::Isometry3d::Identity();
316 tmap2[
"test_box_link"] = Eigen::Isometry3d::Identity();
317 tmap2[
"test_box_link"].translate(Eigen::Vector3d(1.05, -2, 0));
321 manager->applyContactManagerConfig(contact_manager_config);
328 contact_manager_config.default_margin = 0.1;
329 manager->applyContactManagerConfig(contact_manager_config);
336 contact_manager_config.default_margin = 0.0;
337 manager->applyContactManagerConfig(contact_manager_config);
344 contact_manager_config.default_margin = 0.1;
345 manager->applyContactManagerConfig(contact_manager_config);
353 int main(
int argc,
char** argv)
355 testing::InitGoogleTest(&argc, argv);
357 return RUN_ALL_TESTS();