tesseract_environment_cache_unit.cpp
Go to the documentation of this file.
3 #include <gtest/gtest.h>
4 #include <algorithm>
5 #include <vector>
11 
15 
18 
20 
21 using namespace tesseract_scene_graph;
22 using namespace tesseract_srdf;
23 using namespace tesseract_environment;
24 
26 {
27  std::string path = "package://tesseract_support/urdf/boxbot.urdf";
28  return tesseract_urdf::parseURDFFile(locator.locateResource(path)->getFilePath(), locator);
29 }
30 
32 {
33  std::string path = "package://tesseract_support/urdf/boxbot.srdf";
34 
35  auto srdf = std::make_shared<SRDFModel>();
36  srdf->initFile(scene_graph, locator.locateResource(path)->getFilePath(), locator);
37 
38  return srdf;
39 }
40 
41 void addLink(Environment& env)
42 {
43  auto visual = std::make_shared<Visual>();
44  visual->geometry = std::make_shared<tesseract_geometry::Box>(1, 1, 1);
45  auto collision = std::make_shared<Collision>();
46  collision->geometry = std::make_shared<tesseract_geometry::Box>(1, 1, 1);
47 
48  Link link_1("link_n1");
49  link_1.visual.push_back(visual);
50  link_1.collision.push_back(collision);
51 
52  auto cmd = std::make_shared<AddLinkCommand>(link_1);
53  EXPECT_TRUE(cmd != nullptr);
54  EXPECT_EQ(cmd->getType(), CommandType::ADD_LINK);
55  EXPECT_TRUE(cmd->getLink() != nullptr);
56  EXPECT_TRUE(cmd->getJoint() == nullptr);
57  EXPECT_TRUE(env.applyCommand(cmd));
58 }
59 
60 TEST(TesseractEnvironmentCache, defaultEnvironmentCacheTest) // NOLINT
61 {
63  auto scene_graph = getSceneGraph(locator);
64  EXPECT_TRUE(scene_graph != nullptr);
65 
66  auto srdf = getSRDFModel(*scene_graph, locator);
67  EXPECT_TRUE(srdf != nullptr);
68 
69  auto env = std::make_shared<Environment>();
70  bool success = env->init(*scene_graph, srdf);
71  EXPECT_TRUE(success);
72 
73  DefaultEnvironmentCache cache(env, 10);
74  EXPECT_EQ(cache.getCacheSize(), 10);
75 
76  cache.setCacheSize(5);
77  EXPECT_EQ(cache.getCacheSize(), 5);
78 
79  for (int i = 0; i < 20; ++i)
80  {
81  Environment::UPtr cached_env = cache.getCachedEnvironment();
82  EXPECT_TRUE(cached_env != nullptr);
83  EXPECT_EQ(cached_env->getRevision(), 3);
84  }
85 
86  addLink(*env);
87 
88  EXPECT_EQ(cache.getCacheSize(), 5);
89 
90  for (int i = 0; i < 10; ++i)
91  {
92  Environment::UPtr cached_env = cache.getCachedEnvironment();
93  EXPECT_TRUE(cached_env != nullptr);
94  EXPECT_EQ(cached_env->getRevision(), 4);
95  }
96 
97  cache.refreshCache();
98 }
99 
100 int main(int argc, char** argv)
101 {
102  testing::InitGoogleTest(&argc, argv);
103 
104  return RUN_ALL_TESTS();
105 }
graph.h
tesseract_srdf::SRDFModel::Ptr
std::shared_ptr< SRDFModel > Ptr
tesseract_srdf
tesseract_environment
Definition: command.h:45
addLink
void addLink(Environment &env)
Definition: tesseract_environment_cache_unit.cpp:41
utils.h
tesseract_environment::DefaultEnvironmentCache::getCacheSize
long getCacheSize() const override final
Get the cache size used to hold tesseract objects for motion planning.
Definition: environment_cache.cpp:47
tesseract_environment::Environment::applyCommand
bool applyCommand(std::shared_ptr< const Command > command)
Apply command to the environment.
Definition: environment.cpp:2364
resource_locator.h
environment_cache.h
A environment cache.
tesseract_common::ResourceLocator::locateResource
virtual std::shared_ptr< Resource > locateResource(const std::string &url) const=0
TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
#define TESSERACT_COMMON_IGNORE_WARNINGS_PUSH
tesseract_scene_graph::SceneGraph
EXPECT_TRUE
#define EXPECT_TRUE(args)
urdf_parser.h
tesseract_environment::DefaultEnvironmentCache::refreshCache
void refreshCache() const override final
If the environment has changed it will rebuild the cache of tesseract objects.
Definition: environment_cache.cpp:49
tesseract_urdf::parseURDFFile
std::unique_ptr< tesseract_scene_graph::SceneGraph > parseURDFFile(const std::string &path, const tesseract_common::ResourceLocator &locator)
getSceneGraph
SceneGraph::Ptr getSceneGraph(const tesseract_common::ResourceLocator &locator)
Definition: tesseract_environment_cache_unit.cpp:25
tesseract_environment::DefaultEnvironmentCache
Definition: environment_cache.h:76
tesseract_environment::Environment::UPtr
std::unique_ptr< Environment > UPtr
Definition: environment.h:80
tesseract_common::ResourceLocator
tesseract_environment::Environment
Definition: environment.h:71
TESSERACT_COMMON_IGNORE_WARNINGS_POP
getSRDFModel
SRDFModel::Ptr getSRDFModel(const SceneGraph &scene_graph, const tesseract_common::ResourceLocator &locator)
Definition: tesseract_environment_cache_unit.cpp:31
srdf_model.h
environment.h
tesseract_environment::DefaultEnvironmentCache::getCachedEnvironment
std::unique_ptr< Environment > getCachedEnvironment() const override final
This will pop an Environment object from the queue.
Definition: environment_cache.cpp:55
tesseract_common::GeneralResourceLocator
main
int main(int argc, char **argv)
Definition: tesseract_environment_cache_unit.cpp:100
TEST
TEST(TesseractEnvironmentCache, defaultEnvironmentCacheTest)
Definition: tesseract_environment_cache_unit.cpp:60
macros.h
tesseract_scene_graph::SceneGraph::Ptr
std::shared_ptr< SceneGraph > Ptr
tesseract_environment::DefaultEnvironmentCache::setCacheSize
void setCacheSize(long size) override final
Set the cache size used to hold tesseract objects for motion planning.
Definition: environment_cache.cpp:41
box.h
tesseract_scene_graph
EXPECT_EQ
#define EXPECT_EQ(a, b)


tesseract_environment
Author(s): Levi Armstrong
autogenerated on Sun May 18 2025 03:02:21