tesseract_urdf_safety_controller_unit.cpp
Go to the documentation of this file.
3 #include <gtest/gtest.h>
4 #include <Eigen/Geometry>
6 
10 
11 TEST(TesseractURDFUnit, parse_safety_controller) // NOLINT
12 {
13  {
14  std::string str =
15  R"(<safety_controller soft_lower_limit="1" soft_upper_limit="2" k_position="3" k_velocity="4" extra="0 0 0"/>)";
17  EXPECT_TRUE(runTest<tesseract_scene_graph::JointSafety::Ptr>(
19  EXPECT_NEAR(elem->soft_lower_limit, 1, 1e-8);
20  EXPECT_NEAR(elem->soft_upper_limit, 2, 1e-8);
21  EXPECT_NEAR(elem->k_position, 3, 1e-8);
22  EXPECT_NEAR(elem->k_velocity, 4, 1e-8);
23  }
24 
25  {
26  std::string str = R"(<safety_controller soft_upper_limit="2" k_position="3" k_velocity="4"/>)";
28  EXPECT_TRUE(runTest<tesseract_scene_graph::JointSafety::Ptr>(
30  EXPECT_NEAR(elem->soft_lower_limit, 0, 1e-8);
31  EXPECT_NEAR(elem->soft_upper_limit, 2, 1e-8);
32  EXPECT_NEAR(elem->k_position, 3, 1e-8);
33  EXPECT_NEAR(elem->k_velocity, 4, 1e-8);
34  }
35 
36  {
37  std::string str = R"(<safety_controller soft_lower_limit="1" k_position="3" k_velocity="4"/>)";
39  EXPECT_TRUE(runTest<tesseract_scene_graph::JointSafety::Ptr>(
41  EXPECT_NEAR(elem->soft_lower_limit, 1, 1e-8);
42  EXPECT_NEAR(elem->soft_upper_limit, 0, 1e-8);
43  EXPECT_NEAR(elem->k_position, 3, 1e-8);
44  EXPECT_NEAR(elem->k_velocity, 4, 1e-8);
45  }
46 
47  {
48  std::string str = R"(<safety_controller soft_lower_limit="1" soft_upper_limit="2" k_velocity="4"/>)";
50  EXPECT_TRUE(runTest<tesseract_scene_graph::JointSafety::Ptr>(
52  EXPECT_NEAR(elem->soft_lower_limit, 1, 1e-8);
53  EXPECT_NEAR(elem->soft_upper_limit, 2, 1e-8);
54  EXPECT_NEAR(elem->k_position, 0, 1e-8);
55  EXPECT_NEAR(elem->k_velocity, 4, 1e-8);
56  }
57 
58  {
59  std::string str = R"(<safety_controller k_velocity="4"/>)";
61  EXPECT_TRUE(runTest<tesseract_scene_graph::JointSafety::Ptr>(
63  EXPECT_NEAR(elem->soft_lower_limit, 0, 1e-8);
64  EXPECT_NEAR(elem->soft_upper_limit, 0, 1e-8);
65  EXPECT_NEAR(elem->k_position, 0, 1e-8);
66  EXPECT_NEAR(elem->k_velocity, 4, 1e-8);
67  }
68 
69  {
70  std::string str = R"(<safety_controller soft_lower_limit="1" soft_upper_limit="2" k_position="3"/>)";
72  EXPECT_FALSE(runTest<tesseract_scene_graph::JointSafety::Ptr>(
74  }
75 
76  {
77  std::string str = R"(<safety_controller />)";
79  EXPECT_FALSE(runTest<tesseract_scene_graph::JointSafety::Ptr>(
81  }
82 }
83 
84 TEST(TesseractURDFUnit, write_safety_controller) // NOLINT
85 {
86  {
87  tesseract_scene_graph::JointSafety::Ptr safety = std::make_shared<tesseract_scene_graph::JointSafety>();
88  std::string text;
89  EXPECT_EQ(0,
90  writeTest<tesseract_scene_graph::JointSafety::Ptr>(safety, &tesseract_urdf::writeSafetyController, text));
91  EXPECT_NE(text, "");
92  }
93 
94  {
96  std::string text;
97  EXPECT_EQ(1,
98  writeTest<tesseract_scene_graph::JointSafety::Ptr>(safety, &tesseract_urdf::writeSafetyController, text));
99  EXPECT_EQ(text, "");
100  }
101 }
tesseract_urdf::parseSafetyController
std::shared_ptr< tesseract_scene_graph::JointSafety > parseSafetyController(const tinyxml2::XMLElement *xml_element)
Parse xml element safety_controller.
Definition: safety_controller.cpp:41
safety_controller.h
Parse safety_controller from xml string.
joint.h
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
EXPECT_TRUE
#define EXPECT_TRUE(args)
TEST
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH TESSERACT_COMMON_IGNORE_WARNINGS_POP TEST(TesseractURDFUnit, parse_safety_controller)
Definition: tesseract_urdf_safety_controller_unit.cpp:11
tesseract_urdf::writeSafetyController
tinyxml2::XMLElement * writeSafetyController(const std::shared_ptr< const tesseract_scene_graph::JointSafety > &safety, tinyxml2::XMLDocument &doc)
Definition: safety_controller.cpp:76
tesseract_urdf_common_unit.h
EXPECT_NEAR
#define EXPECT_NEAR(a, b, prec)
tesseract_scene_graph::JointSafety::Ptr
std::shared_ptr< JointSafety > Ptr
TESSERACT_COMMON_IGNORE_WARNINGS_POP
tesseract_urdf::SAFETY_CONTROLLER_ELEMENT_NAME
static constexpr std::string_view SAFETY_CONTROLLER_ELEMENT_NAME
Definition: safety_controller.h:45
macros.h
EXPECT_EQ
#define EXPECT_EQ(a, b)
EXPECT_FALSE
#define EXPECT_FALSE(args)


tesseract_urdf
Author(s): Levi Armstrong
autogenerated on Thu Apr 24 2025 03:10:44