Component.h
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3  *
4  * ArmarX is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  * ArmarX is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * @package Navigation::ArmarXObjects::NavigationMemory
17  * @author Fabian Reister ( fabian dot reister at kit dot edu )
18  * @date 2021
19  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20  * GNU General Public License
21  */
22 
23 #pragma once
24 
25 #include <cstdint>
26 #include <mutex>
27 #include <string>
28 
29 #include <Ice/Current.h>
30 
34 #include <ArmarXCore/interface/core/PackagePath.h>
35 
39 
45 
46 #include <armarx/navigation/components/navigation_memory/ComponentInterface.h>
47 
49 {
50 
51  /**
52  * @defgroup Component-NavigationMemory NavigationMemory
53  * @ingroup armarx_navigation-Components
54  * A description of the component NavigationMemory.
55  *
56  * @class NavigationMemory
57  * @ingroup Component-NavigationMemory
58  * @brief Brief description of class NavigationMemory.
59  *
60  * Detailed description of class NavigationMemory.
61  */
62  class Component :
63  virtual public armarx::Component,
64  // , virtual public armarx::DebugObserverComponentPluginUser
66  virtual public armarx::ArVizComponentPluginUser,
68  virtual public memory::NavigationMemoryInterface,
69  virtual public ObjectPoseClientPluginUser
70  {
71  public:
72  Component();
73 
74  /// @see armarx::ManagedIceObject::getDefaultName()
75  std::string getDefaultName() const override;
76 
77  static std::string GetDefaultName();
78  bool storeLocationGraph(const armarx::data::PackagePath& packagePath,
79  const Ice::Current& current) override;
80 
81 
82  protected:
83  /// @see PropertyUser::createPropertyDefinitions()
85 
86  /// @see armarx::ManagedIceObject::onInitComponent()
87  void onInitComponent() override;
88 
89  /// @see armarx::ManagedIceObject::onConnectComponent()
90  void onConnectComponent() override;
91 
92  /// @see armarx::ManagedIceObject::onDisconnectComponent()
93  void onDisconnectComponent() override;
94 
95  /// @see armarx::ManagedIceObject::onExitComponent()
96  void onExitComponent() override;
97 
98 
99  void createRemoteGuiTab();
100  void RemoteGui_update() override;
101 
102 
103  private:
104  void visuRun();
105  void loadSnapshot();
106 
107  void loadSpecialRooms();
108 
109 
110  private:
111  struct CoreSegmentProperties
112  {
113  std::int64_t maxHistorySize = 100;
114  };
115 
116  /// Properties shown in the Scenario GUI.
117  struct Properties
118  {
119  std::string packageToLoad = "PriorKnowledgeData";
120  std::string snapshotToLoad = "";
121 
123  {
124  bool visuLocations = true;
125  bool visuGraphEdges = true;
127  };
128 
129  float visuFrequency = 2;
130 
131  bool visuCostmaps = true;
132  float zOffsetCostmap = 5; // [mm]
133 
134  bool visuHumans = true;
135  bool visuTransparent = false;
136  int visuHumanMaxAgeMs = 1000;
137 
138  bool visuRooms = true;
139 
140  LocationGraph locationGraph;
141 
143  {
144  CoreSegmentProperties parameterization;
145  CoreSegmentProperties costmap{.maxHistorySize = 20};
146  CoreSegmentProperties resultsGlobalPlanner;
147  CoreSegmentProperties resultsLocalPlanner;
148  CoreSegmentProperties events;
149  CoreSegmentProperties exceptions;
150  CoreSegmentProperties location;
151  CoreSegmentProperties graph;
152  CoreSegmentProperties human;
153  CoreSegmentProperties laserScannerFeatures{.maxHistorySize = 20};
154  CoreSegmentProperties rooms;
155 
156  } coreSeg;
157  };
158 
159  Properties properties;
160  mutable std::mutex propertiesMutex;
161 
162  /// Tab shown in the Remote GUI.
163  struct RemoteGuiTab : armarx::RemoteGui::Client::Tab
164  {
166  {
168 
172 
173  void setup(Component& owner);
174  void update(Component& owner) const;
175  };
176 
177  LocationGraph locationGraph;
178  };
179 
180  RemoteGuiTab tab;
181 
182  struct Tasks
183  {
185  };
186 
187  Tasks tasks;
188 
189  objpose::ObjectPoseClient objClient;
190  };
191 
192 } // namespace armarx::navigation::components::navigation_memory
ArVizComponentPlugin.h
armarx::navigation::components::navigation_memory::Component::Properties::LocationGraph
Definition: Component.h:122
armarx::navigation::components::navigation_memory::Component::storeLocationGraph
bool storeLocationGraph(const armarx::data::PackagePath &packagePath, const Ice::Current &current) override
Definition: Component.cpp:915
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph
Definition: Component.h:165
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::exceptions
CoreSegmentProperties exceptions
Definition: Component.h:149
ObjectPoseClientPlugin.h
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments
Definition: Component.h:142
armarx::navigation::components::navigation_memory::Component::createPropertyDefinitions
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
Definition: Component.cpp:100
armarx::navigation::components::navigation_memory::Component::RemoteGui_update
void RemoteGui_update() override
Definition: Component.cpp:368
ReadWritePluginUser.h
plugins.h
armarx::navigation::components::navigation_memory::Component::onExitComponent
void onExitComponent() override
Definition: Component.cpp:337
armarx::RemoteGui::Client::Tab
Definition: Tab.h:15
armarx::navigation::components::navigation_memory::Component
Definition: Component.h:62
armarx::navigation::components::navigation_memory::Component::onDisconnectComponent
void onDisconnectComponent() override
Definition: Component.cpp:332
armarx::ObjectPoseClientPluginUser
Provides an objpose::ObjectPoseTopicPrx objectPoseTopic as member variable.
Definition: ObjectPoseClientPlugin.h:64
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph::visuLocations
armarx::RemoteGui::Client::CheckBox visuLocations
Definition: Component.h:170
armarx::objpose::ObjectPoseClient
Provides access to the armarx::objpose::ObjectPoseStorageInterface (aka the object memory).
Definition: ObjectPoseClient.h:17
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::resultsLocalPlanner
CoreSegmentProperties resultsLocalPlanner
Definition: Component.h:147
Tab.h
LightweightRemoteGuiComponentPlugin.h
armarx::navigation::components::navigation_memory::Component::onInitComponent
void onInitComponent() override
Definition: Component.cpp:241
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::human
CoreSegmentProperties human
Definition: Component.h:152
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph::reloadSnapshot
armarx::RemoteGui::Client::Button reloadSnapshot
Definition: Component.h:169
armarx::ArVizComponentPluginUser
Provides a ready-to-use ArViz client arviz as member variable.
Definition: ArVizComponentPlugin.h:35
armarx::navigation::components::navigation_memory::Component::Component
Component()
Definition: Component.cpp:235
armarx::navigation::components::navigation_memory::Component::Properties::LocationGraph::visuRelativeLocations
bool visuRelativeLocations
Definition: Component.h:126
armarx::armem::server::plugins::ReadWritePluginUser
Base class of memory server components.
Definition: ReadWritePluginUser.h:21
armarx::navigation::components::navigation_memory
Definition: Component.cpp:94
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::graph
CoreSegmentProperties graph
Definition: Component.h:151
armarx::RemoteGui::Client::GroupBox
Definition: Widgets.h:193
ObjectPoseClient.h
armarx::navigation::components::navigation_memory::Component::getDefaultName
std::string getDefaultName() const override
Definition: Component.cpp:342
TaskUtil.h
armarx::LightweightRemoteGuiComponentPluginUser
Definition: LightweightRemoteGuiComponentPlugin.h:72
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::laserScannerFeatures
CoreSegmentProperties laserScannerFeatures
Definition: Component.h:153
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::parameterization
CoreSegmentProperties parameterization
Definition: Component.h:144
Component.h
armarx::Component
Baseclass for all ArmarX ManagedIceObjects requiring properties.
Definition: Component.h:91
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::rooms
CoreSegmentProperties rooms
Definition: Component.h:154
armarx::navigation::components::navigation_memory::Component::onConnectComponent
void onConnectComponent() override
Definition: Component.cpp:312
PropertyDefinitionContainer.h
armarx::navigation::components::navigation_memory::Component::GetDefaultName
static std::string GetDefaultName()
Definition: Component.cpp:348
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::location
CoreSegmentProperties location
Definition: Component.h:150
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph::visuGraphEdges
armarx::RemoteGui::Client::CheckBox visuGraphEdges
Definition: Component.h:171
armarx::navigation::memory::NavigationMemoryInterface
Definition: ComponentInterface.ice:39
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::events
CoreSegmentProperties events
Definition: Component.h:148
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::resultsGlobalPlanner
CoreSegmentProperties resultsGlobalPlanner
Definition: Component.h:146
armarx::RemoteGui::Client::CheckBox
Definition: Widgets.h:129
Widgets.h
armarx::RemoteGui::Client::Button
Definition: Widgets.h:120
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::costmap
CoreSegmentProperties costmap
Definition: Component.h:145
armarx::navigation::components::navigation_memory::Component::createRemoteGuiTab
void createRemoteGuiTab()
Definition: Component.cpp:354
armarx::navigation::components::navigation_memory::Component::Properties::LocationGraph::visuGraphEdges
bool visuGraphEdges
Definition: Component.h:125
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph::update
void update(Component &owner) const
Definition: Component.cpp:408
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph::group
armarx::RemoteGui::Client::GroupBox group
Definition: Component.h:167
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph::setup
void setup(Component &owner)
Definition: Component.cpp:374
armarx::navigation::components::navigation_memory::Component::Properties::LocationGraph::visuLocations
bool visuLocations
Definition: Component.h:124