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 
108  private:
109  struct CoreSegmentProperties
110  {
111  std::int64_t maxHistorySize = 100;
112  };
113 
114  /// Properties shown in the Scenario GUI.
115  struct Properties
116  {
117  std::string packageToLoad = "PriorKnowledgeData";
118  std::string snapshotToLoad = "";
119 
121  {
122  bool visuLocations = true;
123  bool visuGraphEdges = true;
125  };
126 
127  float visuFrequency = 2;
128 
129  bool visuCostmaps = true;
130  float zOffsetCostmap = 5; // [mm]
131 
132  bool visuHumans = true;
133  bool visuTransparent = false;
134  int visuHumanMaxAgeMs = 1000;
135 
136  bool visuRooms = true;
137 
138  LocationGraph locationGraph;
139 
141  {
142  CoreSegmentProperties parameterization;
143  CoreSegmentProperties costmap{.maxHistorySize = 20};
144  CoreSegmentProperties resultsGlobalPlanner;
145  CoreSegmentProperties resultsLocalPlanner;
146  CoreSegmentProperties events;
147  CoreSegmentProperties exceptions;
148  CoreSegmentProperties location;
149  CoreSegmentProperties graph;
150  CoreSegmentProperties human;
151  CoreSegmentProperties laserScannerFeatures{.maxHistorySize = 20};
152  CoreSegmentProperties rooms;
153 
154  } coreSeg;
155  };
156 
157  Properties properties;
158  mutable std::mutex propertiesMutex;
159 
160  /// Tab shown in the Remote GUI.
161  struct RemoteGuiTab : armarx::RemoteGui::Client::Tab
162  {
164  {
166 
170 
171  void setup(Component& owner);
172  void update(Component& owner) const;
173  };
174 
175  LocationGraph locationGraph;
176  };
177 
178  RemoteGuiTab tab;
179 
180  struct Tasks
181  {
183  };
184 
185  Tasks tasks;
186 
187  objpose::ObjectPoseClient objClient;
188  };
189 
190 } // namespace armarx::navigation::components::navigation_memory
ArVizComponentPlugin.h
armarx::navigation::components::navigation_memory::Component::Properties::LocationGraph
Definition: Component.h:120
armarx::navigation::components::navigation_memory::Component::storeLocationGraph
bool storeLocationGraph(const armarx::data::PackagePath &packagePath, const Ice::Current &current) override
Definition: Component.cpp:907
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph
Definition: Component.h:163
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::exceptions
CoreSegmentProperties exceptions
Definition: Component.h:147
ObjectPoseClientPlugin.h
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments
Definition: Component.h:140
armarx::navigation::components::navigation_memory::Component::createPropertyDefinitions
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
Definition: Component.cpp:93
armarx::navigation::components::navigation_memory::Component::RemoteGui_update
void RemoteGui_update() override
Definition: Component.cpp:360
ReadWritePluginUser.h
plugins.h
armarx::navigation::components::navigation_memory::Component::onExitComponent
void onExitComponent() override
Definition: Component.cpp:329
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:324
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:168
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:145
Tab.h
LightweightRemoteGuiComponentPlugin.h
armarx::navigation::components::navigation_memory::Component::onInitComponent
void onInitComponent() override
Definition: Component.cpp:234
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::human
CoreSegmentProperties human
Definition: Component.h:150
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph::reloadSnapshot
armarx::RemoteGui::Client::Button reloadSnapshot
Definition: Component.h:167
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:228
armarx::navigation::components::navigation_memory::Component::Properties::LocationGraph::visuRelativeLocations
bool visuRelativeLocations
Definition: Component.h:124
armarx::armem::server::plugins::ReadWritePluginUser
Base class of memory server components.
Definition: ReadWritePluginUser.h:20
armarx::navigation::components::navigation_memory
Definition: Component.cpp:87
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::graph
CoreSegmentProperties graph
Definition: Component.h:149
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:334
TaskUtil.h
armarx::LightweightRemoteGuiComponentPluginUser
Definition: LightweightRemoteGuiComponentPlugin.h:72
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::laserScannerFeatures
CoreSegmentProperties laserScannerFeatures
Definition: Component.h:151
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::parameterization
CoreSegmentProperties parameterization
Definition: Component.h:142
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:152
armarx::navigation::components::navigation_memory::Component::onConnectComponent
void onConnectComponent() override
Definition: Component.cpp:305
PropertyDefinitionContainer.h
armarx::navigation::components::navigation_memory::Component::GetDefaultName
static std::string GetDefaultName()
Definition: Component.cpp:340
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::location
CoreSegmentProperties location
Definition: Component.h:148
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph::visuGraphEdges
armarx::RemoteGui::Client::CheckBox visuGraphEdges
Definition: Component.h:169
armarx::navigation::memory::NavigationMemoryInterface
Definition: ComponentInterface.ice:39
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::events
CoreSegmentProperties events
Definition: Component.h:146
armarx::navigation::components::navigation_memory::Component::Properties::CoreSegments::resultsGlobalPlanner
CoreSegmentProperties resultsGlobalPlanner
Definition: Component.h:144
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:143
armarx::navigation::components::navigation_memory::Component::createRemoteGuiTab
void createRemoteGuiTab()
Definition: Component.cpp:346
armarx::navigation::components::navigation_memory::Component::Properties::LocationGraph::visuGraphEdges
bool visuGraphEdges
Definition: Component.h:123
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph::update
void update(Component &owner) const
Definition: Component.cpp:400
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph::group
armarx::RemoteGui::Client::GroupBox group
Definition: Component.h:165
armarx::navigation::components::navigation_memory::Component::RemoteGuiTab::LocationGraph::setup
void setup(Component &owner)
Definition: Component.cpp:366
armarx::navigation::components::navigation_memory::Component::Properties::LocationGraph::visuLocations
bool visuLocations
Definition: Component.h:122