tesseract_scene_graph_serialization_unit.cpp
Go to the documentation of this file.
1 
28 #include <gtest/gtest.h>
29 #include <boost/serialization/shared_ptr.hpp>
31 
34 #include <tesseract_common/utils.h>
40 
41 using namespace tesseract_scene_graph;
42 
43 /*********************************************************/
44 /****** Joint *****/
45 /*********************************************************/
46 
47 TEST(TesseractSceneGraphSerializationUnit, JointDynamics) // NOLINT
48 {
49  auto object = std::make_shared<JointDynamics>(1.1, 2.2);
50  tesseract_common::testSerialization<JointDynamics>(*object, "JointDynamics");
51 }
52 
53 TEST(TesseractSceneGraphSerializationUnit, JointLimits) // NOLINT
54 {
55  auto object = std::make_shared<JointLimits>(1.1, 2.2, 3.3, 4.4, 5.5, 6.5);
56  tesseract_common::testSerialization<JointLimits>(*object, "JointLimits");
57 }
58 
59 TEST(TesseractSceneGraphSerializationUnit, JointSafety) // NOLINT
60 {
61  auto object = std::make_shared<JointSafety>(1.1, 2.2, 3.3, 4.4);
62  tesseract_common::testSerialization<JointSafety>(*object, "JointSafety");
63 }
64 
65 TEST(TesseractSceneGraphSerializationUnit, JointCalibration) // NOLINT
66 {
67  auto object = std::make_shared<JointCalibration>(1.1, 2.2, 3.3);
68  tesseract_common::testSerialization<JointCalibration>(*object, "JointCalibration");
69 }
70 
71 TEST(TesseractSceneGraphSerializationUnit, JointMimic) // NOLINT
72 {
73  auto object = std::make_shared<JointMimic>(1.1, 2.2, "mimic_name");
74  tesseract_common::testSerialization<JointMimic>(*object, "JointMimic");
75 }
76 
77 TEST(TesseractSceneGraphSerializationUnit, Joint) // NOLINT
78 {
79  auto object = std::make_shared<Joint>("serialized_joint");
80  object->type = JointType::PLANAR;
81  object->axis = Eigen::Vector3d(1.1, 2.2, 3.3);
82  object->child_link_name = "child_name";
83  object->parent_link_name = "parent_name";
84  object->parent_to_joint_origin_transform.translate(Eigen::Vector3d(5.5, 6.6, 7.7));
85  object->dynamics = std::make_shared<JointDynamics>(1.1, 2.2);
86  object->limits = std::make_shared<JointLimits>(1.1, 2.2, 3.3, 4.4, 5.5, 6.5);
87  object->safety = std::make_shared<JointSafety>(1.1, 2.2, 3.3, 4.4);
88  object->calibration = std::make_shared<JointCalibration>(1.1, 2.2, 3.3);
89  object->mimic = std::make_shared<JointMimic>(1.1, 2.2, "mimic_name");
90  tesseract_common::testSerialization<Joint>(*object, "Joint");
91 }
92 
93 /*********************************************************/
94 /****** Link *****/
95 /*********************************************************/
96 
97 TEST(TesseractSceneGraphSerializationUnit, Material) // NOLINT
98 {
99  auto object = std::make_shared<Material>("test_name");
100  object->color = Eigen::Vector4d(0.1, 0.2, 0.3, 1.0);
101  object->texture_filename = "test_filename";
102  tesseract_common::testSerialization<Material>(*object, "Material");
103 }
104 
105 TEST(TesseractSceneGraphSerializationUnit, Inertial) // NOLINT
106 {
107  auto object = std::make_shared<Inertial>();
108  object->origin.translate(Eigen::Vector3d(5.5, 6.6, 7.7));
109  object->mass = 1.2;
110  object->ixx = 2.3;
111  object->ixy = 3.4;
112  object->ixz = 4.5;
113  object->iyy = 5.6;
114  object->iyz = 6.7;
115  object->izz = 7.8;
116  tesseract_common::testSerialization<Inertial>(*object, "Inertial");
117 }
118 
119 TEST(TesseractSceneGraphSerializationUnit, Visual) // NOLINT
120 {
121  auto object = std::make_shared<Visual>();
122  object->origin.translate(Eigen::Vector3d(5.5, 6.6, 7.7));
123  object->geometry = std::make_shared<tesseract_geometry::Cone>(1.1, 2.2);
124  object->material = std::make_shared<Material>("test_name");
125  object->name = "visual_name";
126  tesseract_common::testSerialization<Visual>(*object, "Visual");
127 }
128 
129 TEST(TesseractSceneGraphSerializationUnit, Collision) // NOLINT
130 {
131  auto object = std::make_shared<Collision>();
132  object->origin.translate(Eigen::Vector3d(5.6, 7.8, -1.7));
133  object->geometry = std::make_shared<tesseract_geometry::Sphere>(1.1);
134  object->name = "collision_name";
135  tesseract_common::testSerialization<Collision>(*object, "Collision");
136 }
137 
138 TEST(TesseractSceneGraphSerializationUnit, Link) // NOLINT
139 {
140  auto object = std::make_shared<Link>("test_link");
141  object->inertial = std::make_shared<Inertial>();
142 
143  auto vis = std::make_shared<Visual>();
144  vis->origin.translate(Eigen::Vector3d(5.5, 6.6, 7.7));
145  vis->geometry = std::make_shared<tesseract_geometry::Cone>(1.1, 2.2);
146  vis->material = std::make_shared<Material>("test_name");
147  vis->name = "visual_name";
148  object->visual.push_back(std::make_shared<Visual>());
149  object->visual.push_back(vis);
150 
151  auto col = std::make_shared<Collision>();
152  col->origin.translate(Eigen::Vector3d(5.6, 7.8, -1.7));
153  col->geometry = std::make_shared<tesseract_geometry::Sphere>(1.1);
154  col->name = "collision_name";
155  object->collision.push_back(std::make_shared<Collision>());
156  object->collision.push_back(col);
157  tesseract_common::testSerialization<Link>(*object, "Link");
158 }
159 
161 {
162  using namespace tesseract_scene_graph;
163  SceneGraph g;
164 
165  Link link_1("link_1");
166  Link link_2("link_2");
167  Link link_3("link_3");
168  Link link_4("link_4");
169  Link link_5("link_5");
170 
171  EXPECT_TRUE(g.addLink(link_1));
172  EXPECT_TRUE(g.addLink(link_2));
173  EXPECT_TRUE(g.addLink(link_3));
174  EXPECT_TRUE(g.addLink(link_4));
175  EXPECT_TRUE(g.addLink(link_5));
176 
177  Joint joint_1("joint_1");
178  joint_1.parent_to_joint_origin_transform.translation()(0) = 1.25;
179  joint_1.parent_link_name = "link_1";
180  joint_1.child_link_name = "link_2";
181  joint_1.type = JointType::FIXED;
182  EXPECT_TRUE(g.addJoint(joint_1));
183 
184  Joint joint_2("joint_2");
185  joint_2.parent_to_joint_origin_transform.translation()(0) = 1.25;
186  joint_2.parent_link_name = "link_2";
187  joint_2.child_link_name = "link_3";
188  joint_2.type = JointType::PLANAR;
189  joint_2.limits = std::make_shared<JointLimits>(-1, 1, 0, 2, 3, 4);
190  EXPECT_TRUE(g.addJoint(joint_2));
191 
192  Joint joint_3("joint_3");
193  joint_3.parent_to_joint_origin_transform.translation()(0) = 1.25;
194  joint_3.parent_link_name = "link_3";
195  joint_3.child_link_name = "link_4";
196  joint_3.type = JointType::FLOATING;
197  EXPECT_TRUE(g.addJoint(joint_3));
198 
199  Joint joint_4("joint_4");
200  joint_4.parent_to_joint_origin_transform.translation()(1) = 1.25;
201  joint_4.parent_link_name = "link_2";
202  joint_4.child_link_name = "link_5";
203  joint_4.type = JointType::REVOLUTE;
204  joint_4.limits = std::make_shared<JointLimits>(-1, 1, 0, 2, 3, 4);
205  EXPECT_TRUE(g.addJoint(joint_4));
206 
207  g.addAllowedCollision("link_1", "link_2", "Adjacent");
208  g.addAllowedCollision("link_2", "link_3", "Adjacent");
209  g.addAllowedCollision("link_3", "link_5", "Adjacent");
210  g.addAllowedCollision("link_2", "link_5", "Adjacent");
211 
212  return g;
213 }
214 
215 TEST(TesseractSceneGraphSerializationUnit, SceneGraph) // NOLINT
216 {
217  auto object = createTestSceneGraph();
218  tesseract_common::testSerialization<SceneGraph>(object, "SceneGraph");
219 }
220 
221 TEST(TesseractSceneGraphSerializationUnit, SceneState) // NOLINT
222 {
223  auto object = std::make_shared<SceneState>();
224  object->joints["j_1"] = 12.3;
225  object->joints["j_2"] = -12.3;
226  object->joints["j_3"] = 1.23;
227  object->link_transforms["link_transforms_key"].setIdentity();
228  object->link_transforms["link_transforms_key"].translate(Eigen::Vector3d(1, 2, 3));
229  object->joint_transforms["joint_transforms_key"].setIdentity();
230  object->joint_transforms["joint_transforms_key"].translate(Eigen::Vector3d(5, 6, 7));
231  tesseract_common::testSerialization<SceneState>(*object, "SceneState");
232 }
233 
234 int main(int argc, char** argv)
235 {
236  testing::InitGoogleTest(&argc, argv);
237 
238  return RUN_ALL_TESTS();
239 }
tesseract_scene_graph::Visual
Definition: link.h:134
tesseract_scene_graph::JointType::REVOLUTE
@ REVOLUTE
tesseract_scene_graph::JointType::FLOATING
@ FLOATING
main
int main(int argc, char **argv)
Definition: tesseract_scene_graph_serialization_unit.cpp:234
utils.h
tesseract_scene_graph::SceneGraph::addAllowedCollision
void addAllowedCollision(const std::string &link_name1, const std::string &link_name2, const std::string &reason)
Disable collision between two collision objects.
Definition: graph.cpp:777
tesseract_scene_graph::JointCalibration
Definition: joint.h:195
tesseract_scene_graph::Joint::parent_to_joint_origin_transform
Eigen::Isometry3d parent_to_joint_origin_transform
transform from Parent Link frame to Joint frame
Definition: joint.h:314
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
tesseract_scene_graph::SceneGraph
Definition: graph.h:125
tesseract_scene_graph::SceneGraph::addLink
bool addLink(const Link &link, bool replace_allowed=false)
Adds a link to the graph.
Definition: graph.cpp:273
joint.h
geometries.h
tesseract_scene_graph::JointType::PLANAR
@ PLANAR
tesseract_scene_graph::SceneState
This holds a state of the scene.
Definition: scene_state.h:59
tesseract_scene_graph::Joint::child_link_name
std::string child_link_name
Definition: joint.h:307
tesseract_scene_graph::Joint::limits
JointLimits::Ptr limits
Joint Limits.
Definition: joint.h:320
createTestSceneGraph
tesseract_scene_graph::SceneGraph createTestSceneGraph()
Definition: tesseract_scene_graph_serialization_unit.cpp:160
tesseract_scene_graph::SceneGraph::addJoint
bool addJoint(const Joint &joint)
Adds joint to the graph.
Definition: graph.cpp:460
serialization.h
tesseract_scene_graph::JointMimic
Definition: joint.h:228
tesseract_scene_graph::Collision
Definition: link.h:167
tesseract_scene_graph::JointLimits
Definition: joint.h:92
tesseract_scene_graph::Inertial
Definition: link.h:97
tesseract_scene_graph::Joint
Definition: joint.h:272
tesseract_scene_graph::Material
Definition: link.h:59
graph.h
A basic scene graph using boost.
tesseract_scene_graph::JointSafety
Parameters for Joint Safety Controllers.
Definition: joint.h:129
TESSERACT_COMMON_IGNORE_WARNINGS_POP
#define TESSERACT_COMMON_IGNORE_WARNINGS_POP
tesseract_scene_graph::JointDynamics
Definition: joint.h:60
tesseract_scene_graph::Joint::type
JointType type
The type of joint.
Definition: joint.h:293
TEST
TEST(TesseractSceneGraphSerializationUnit, JointDynamics)
Definition: tesseract_scene_graph_serialization_unit.cpp:47
unit_test_utils.h
scene_state.h
This holds a state of the scene.
macros.h
tesseract_scene_graph
Definition: fwd.h:32
tesseract_scene_graph::Joint::parent_link_name
std::string parent_link_name
Definition: joint.h:311
tesseract_scene_graph::JointType::FIXED
@ FIXED


tesseract_scene_graph
Author(s): Levi Armstrong
autogenerated on Sun May 18 2025 03:01:49