tesseract_scene_graph_link_unit.cpp
Go to the documentation of this file.
3 #include <gtest/gtest.h>
4 #include <iostream>
5 #include <fstream>
9 
12 
13 TEST(TesseractSceneGraphUnit, TesseractSceneGraphLinkMaterialUnit) // NOLINT
14 {
15  using namespace tesseract_scene_graph;
16  Material m("test_material");
17 
18  EXPECT_EQ(m.getName(), "test_material");
19  EXPECT_TRUE(m.texture_filename.empty());
20  EXPECT_TRUE(m.color.isApprox(Eigen::Vector4d(0.5, 0.5, 0.5, 1.0)));
21 
22  m.texture_filename = "test.png";
23  m.color = Eigen::Vector4d(1.0, 1.0, 1.0, 1.0);
24  m.clear();
25 
26  EXPECT_EQ(m.getName(), "test_material");
27  EXPECT_TRUE(m.texture_filename.empty());
28  EXPECT_TRUE(m.color.isApprox(Eigen::Vector4d(0.5, 0.5, 0.5, 1.0)));
29 }
30 
31 TEST(TesseractSceneGraphUnit, TesseractSceneGraphLinkInertiaUnit) // NOLINT
32 {
33  using namespace tesseract_scene_graph;
34  Inertial m;
35 
36  EXPECT_TRUE(m.origin.isApprox(Eigen::Isometry3d::Identity()));
37  EXPECT_NEAR(m.mass, 0, 1e-6);
38  EXPECT_NEAR(m.ixx, 0, 1e-6);
39  EXPECT_NEAR(m.ixy, 0, 1e-6);
40  EXPECT_NEAR(m.ixz, 0, 1e-6);
41  EXPECT_NEAR(m.iyy, 0, 1e-6);
42  EXPECT_NEAR(m.iyz, 0, 1e-6);
43  EXPECT_NEAR(m.izz, 0, 1e-6);
44 
45  m.origin.translation() = Eigen::Vector3d(1, 2, 3);
46  m.mass = 1;
47  m.ixx = 5;
48  m.ixy = 5;
49  m.ixz = 5;
50  m.iyy = 5;
51  m.iyz = 5;
52  m.izz = 5;
53  m.clear();
54 
55  EXPECT_TRUE(m.origin.isApprox(Eigen::Isometry3d::Identity()));
56  EXPECT_NEAR(m.mass, 0, 1e-6);
57  EXPECT_NEAR(m.ixx, 0, 1e-6);
58  EXPECT_NEAR(m.ixy, 0, 1e-6);
59  EXPECT_NEAR(m.ixz, 0, 1e-6);
60  EXPECT_NEAR(m.iyy, 0, 1e-6);
61  EXPECT_NEAR(m.iyz, 0, 1e-6);
62  EXPECT_NEAR(m.izz, 0, 1e-6);
63 }
64 
65 TEST(TesseractSceneGraphUnit, TesseractSceneGraphLinkVisualUnit) // NOLINT
66 {
67  using namespace tesseract_scene_graph;
68  Visual m;
69 
70  EXPECT_TRUE(m.origin.isApprox(Eigen::Isometry3d::Identity()));
71  EXPECT_TRUE(m.material == Material::getDefaultMaterial());
72  EXPECT_TRUE(m.geometry == nullptr);
73  EXPECT_TRUE(m.name.empty());
74 
75  m.origin.translation() = Eigen::Vector3d(1, 2, 3);
76  m.material = std::make_shared<Material>("test_material");
77  m.material->color = Eigen::Vector4d(1, 1, 1, 1);
78  m.geometry = std::make_shared<tesseract_geometry::Box>(1, 1, 1);
79  m.name = "test_visual";
80  m.clear();
81 
82  EXPECT_TRUE(m.origin.isApprox(Eigen::Isometry3d::Identity()));
83  EXPECT_TRUE(m.material == Material::getDefaultMaterial());
84  EXPECT_TRUE(m.geometry == nullptr);
85  EXPECT_TRUE(m.name.empty());
86 }
87 
88 TEST(TesseractSceneGraphUnit, TesseractSceneGraphLinkCollisionUnit) // NOLINT
89 {
90  using namespace tesseract_scene_graph;
91  Collision m;
92 
93  EXPECT_TRUE(m.origin.isApprox(Eigen::Isometry3d::Identity()));
94  EXPECT_TRUE(m.geometry == nullptr);
95  EXPECT_TRUE(m.name.empty());
96 
97  m.origin.translation() = Eigen::Vector3d(1, 2, 3);
98  m.geometry = std::make_shared<tesseract_geometry::Box>(1, 1, 1);
99  m.name = "test_collision";
100  m.clear();
101 
102  EXPECT_TRUE(m.origin.isApprox(Eigen::Isometry3d::Identity()));
103  EXPECT_TRUE(m.geometry == nullptr);
104  EXPECT_TRUE(m.name.empty());
105 }
106 
107 TEST(TesseractSceneGraphUnit, TesseractSceneGraphLinkUnit) // NOLINT
108 {
109  using namespace tesseract_scene_graph;
110  Link l("test_link");
111 
112  EXPECT_EQ(l.getName(), "test_link");
113 
114  l.inertial = std::make_shared<Inertial>();
115  l.inertial->origin.translation() = Eigen::Vector3d(1, 2, 3);
116  l.inertial->mass = 1;
117  l.inertial->ixx = 5;
118  l.inertial->ixy = 5;
119  l.inertial->ixz = 5;
120  l.inertial->iyy = 5;
121  l.inertial->iyz = 5;
122  l.inertial->izz = 5;
123 
124  Visual::Ptr v = std::make_shared<Visual>();
125  v->origin.translation() = Eigen::Vector3d(1, 2, 3);
126  v->material = std::make_shared<Material>("test_material");
127  v->material->color = Eigen::Vector4d(1, 1, 1, 1);
128  v->geometry = std::make_shared<tesseract_geometry::Box>(1, 1, 1);
129  v->name = "test_visual";
130  l.visual.push_back(v);
131 
132  Collision::Ptr c = std::make_shared<Collision>();
133  c->origin.translation() = Eigen::Vector3d(1, 2, 3);
134  c->geometry = std::make_shared<tesseract_geometry::Box>(1, 1, 1);
135  c->name = "test_collision";
136  l.collision.push_back(c);
137 
138  Link l_clone = l.clone();
139  EXPECT_EQ(l_clone.getName(), "test_link");
140  EXPECT_TRUE(l_clone.inertial != l.inertial);
141  EXPECT_TRUE(l_clone.inertial != nullptr);
142  EXPECT_TRUE(l_clone.inertial->origin.isApprox(l.inertial->origin));
143  EXPECT_NEAR(l_clone.inertial->mass, 1, 1e-6);
144  EXPECT_NEAR(l_clone.inertial->ixx, 5, 1e-6);
145  EXPECT_NEAR(l_clone.inertial->ixy, 5, 1e-6);
146  EXPECT_NEAR(l_clone.inertial->ixz, 5, 1e-6);
147  EXPECT_NEAR(l_clone.inertial->iyy, 5, 1e-6);
148  EXPECT_NEAR(l_clone.inertial->iyz, 5, 1e-6);
149  EXPECT_NEAR(l_clone.inertial->izz, 5, 1e-6);
150  EXPECT_EQ(l_clone.visual.size(), 1);
151  EXPECT_TRUE(l_clone.visual.front() != v);
152  EXPECT_TRUE(l_clone.visual.front() != nullptr);
153  EXPECT_TRUE(l_clone.visual.front()->origin.isApprox(l.visual.front()->origin));
154  // Pointers should be copied, no deep copy for materials and geometries
155  EXPECT_TRUE(l_clone.visual.front()->material == l.visual.front()->material);
156  EXPECT_TRUE(l_clone.visual.front()->geometry == l.visual.front()->geometry);
157  EXPECT_TRUE(l_clone.visual.front()->name == l.visual.front()->name);
158  EXPECT_EQ(l_clone.collision.size(), 1);
159  EXPECT_TRUE(l_clone.collision.front() != c);
160  EXPECT_TRUE(l_clone.collision.front() != nullptr);
161  EXPECT_TRUE(l_clone.collision.front()->origin.isApprox(l.collision.front()->origin));
162  // Pointers should be copied, no deep copy for materials and geometries
163  EXPECT_TRUE(l_clone.collision.front()->geometry == l.collision.front()->geometry);
164  EXPECT_TRUE(l_clone.collision.front()->name == l.collision.front()->name);
165 
166  l.clear();
167  EXPECT_EQ(l.getName(), "test_link");
168  EXPECT_TRUE(l.visual.empty());
169  EXPECT_TRUE(l.collision.empty());
170  EXPECT_TRUE(l.inertial == nullptr);
171 }
172 
173 int main(int argc, char** argv)
174 {
175  testing::InitGoogleTest(&argc, argv);
176 
177  return RUN_ALL_TESTS();
178 }
tesseract_scene_graph::Visual::geometry
std::shared_ptr< const tesseract_geometry::Geometry > geometry
Definition: link.h:150
tesseract_scene_graph::Visual
Definition: link.h:134
tesseract_scene_graph::Visual::origin
Eigen::Isometry3d origin
Definition: link.h:149
tesseract_scene_graph::Visual::material
Material::Ptr material
Definition: link.h:152
utils.h
tesseract_scene_graph::Inertial::ixz
double ixz
Definition: link.h:117
tesseract_scene_graph::Collision::geometry
std::shared_ptr< const tesseract_geometry::Geometry > geometry
Definition: link.h:183
tesseract_scene_graph::Inertial::iyy
double iyy
Definition: link.h:118
tesseract_scene_graph::Inertial::mass
double mass
Definition: link.h:114
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
geometries.h
tesseract_scene_graph::Visual::name
std::string name
Definition: link.h:153
tesseract_scene_graph::Inertial::ixy
double ixy
Definition: link.h:116
tesseract_scene_graph::Inertial::origin
Eigen::Isometry3d origin
Definition: link.h:113
tesseract_scene_graph::Collision::name
std::string name
Definition: link.h:184
tesseract_scene_graph::Material::clear
void clear()
Definition: link.cpp:54
tesseract_scene_graph::Collision::Ptr
std::shared_ptr< Collision > Ptr
Definition: link.h:172
tesseract_scene_graph::Collision
Definition: link.h:167
tesseract_scene_graph::Material::getDefaultMaterial
static std::shared_ptr< Material > getDefaultMaterial()
Definition: link.cpp:46
tesseract_scene_graph::Visual::clear
void clear()
Definition: link.cpp:125
tesseract_scene_graph::Collision::origin
Eigen::Isometry3d origin
Definition: link.h:182
tesseract_scene_graph::Inertial
Definition: link.h:97
tesseract_scene_graph::Material::getName
const std::string & getName() const
Definition: link.cpp:52
tesseract_scene_graph::Inertial::izz
double izz
Definition: link.h:120
tesseract_scene_graph::Inertial::clear
void clear()
Definition: link.cpp:83
tesseract_scene_graph::Material
Definition: link.h:59
graph.h
A basic scene graph using boost.
tesseract_scene_graph::Material::color
Eigen::Vector4d color
Definition: link.h:81
TESSERACT_COMMON_IGNORE_WARNINGS_POP
#define TESSERACT_COMMON_IGNORE_WARNINGS_POP
tesseract_scene_graph::Material::texture_filename
std::string texture_filename
Definition: link.h:80
tesseract_scene_graph::Visual::Ptr
std::shared_ptr< Visual > Ptr
Definition: link.h:139
macros.h
tesseract_scene_graph
Definition: fwd.h:32
tesseract_scene_graph::Collision::clear
void clear()
Definition: link.cpp:159
tesseract_scene_graph::Inertial::iyz
double iyz
Definition: link.h:119
tesseract_scene_graph::Inertial::ixx
double ixx
Definition: link.h:115


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