GraspMemory.h
Go to the documentation of this file.
1 #pragma once
2 
3 
4 #include <memory>
5 
6 #include <VirtualRobot/VirtualRobot.h>
7 
10 #include <ArmarXCore/interface/observers/ObserverInterface.h>
11 
13 
20 
22 {
23  /**
24  * @defgroup Component-GraspMemory GraspMemory
25  * @ingroup RobotAPI-Components
26  * A description of the component GraspMemory.
27  *
28  * @class GraspMemory
29  * @ingroup Component-GraspMemory
30  * @brief Brief description of class GraspMemory.
31  *
32  * Detailed description of class GraspMemory.
33  */
34  class GraspMemory :
35  virtual public armarx::Component,
38  virtual public armarx::ArVizComponentPluginUser,
40  {
41  public:
42  GraspMemory();
43 
44  /// @see armarx::ManagedIceObject::getDefaultName()
45  std::string getDefaultName() const override;
46 
47 
48  public:
49  armem::data::CommitResult commit(const armem::data::Commit& commit,
50  const Ice::Current&) override;
51 
52 
53  public:
54  armem::actions::GetActionsOutputSeq
55  getActions(const armem::actions::GetActionsInputSeq& inputs) override;
56  armem::actions::ExecuteActionOutputSeq
57  executeActions(const armem::actions::ExecuteActionInputSeq& inputs) override;
58 
59  void createRemoteGuiTab();
60  void RemoteGui_update() override;
61 
62 
63  protected:
65 
66  void onInitComponent() override;
67  void onConnectComponent() override;
68  void onDisconnectComponent() override;
69  void onExitComponent() override;
70 
71 
72  private:
73  DebugObserverInterfacePrx debugObserver;
74 
75  // segments
77 
78  struct RemoteGuiTab : RemoteGui::Client::Tab
79  {
80  std::atomic_bool rebuild = false;
81 
82  // RemoteGui::Client::ComboBox selectCoreSegment;
83  RemoteGui::Client::ComboBox selectProvider;
84  RemoteGui::Client::ComboBox selectEntity;
85  RemoteGui::Client::ComboBox selectSnapshot;
86  RemoteGui::Client::CheckBox showUnlimitedInstances;
87  RemoteGui::Client::IntSpinBox maxInstances;
88  RemoteGui::Client::Button selectAll;
89  RemoteGui::Client::Button deselectAll;
90  std::map<std::string, RemoteGui::Client::CheckBox> checkInstances;
91  };
92 
93  struct GuiInfo
94  {
95  // int coreSegIndex = 0;
96  int providerIndex = 0;
97  int entityIndex = 0;
98  int snapshotIndex = 0;
99 
100  int maxInstances = 10;
101  bool unlimitedInstances = false;
102 
103  RemoteGuiTab tab;
104 
105  std::string coreSegment = "GraspCandidate";
106  std::string provider = "";
107  std::string entity = "";
108  std::string snapshot = "";
109 
110  std::map<std::string, Time> timeMap;
111 
112  std::mutex visualizationMutex;
113  std::vector<armem::MemoryID> visibleInstanceIds;
114  std::vector<std::string> activeLayers;
115  std::vector<armem::MemoryID> trackedEntityIds;
116  bool trackNewEntities{true};
117  };
118 
119  GuiInfo gui;
120 
121  bool enableRemoteGui{true};
122 
123  bool enableVisualizeKnownGraspCandidates = false;
124  bool enableVisualizeKnownGraspCandidatesPreposes = false;
125  bool enableVisualizeKnownGraspCandidatesApproach = false;
126 
127 
128  std::size_t frequencyHzVisualizeKnownGraspCandidates = 5;
129 
130  void visualizeGraspCandidates();
131  void visualizeKnownGraspCandidates();
132 
133  void addInstanceToVisu(const armem::MemoryID& instance);
134  void removeInstanceFromVisu(const armem::MemoryID& instance);
135  void addToHighlightLayer(const armem::MemoryID& memoryID, const std::string color);
136 
137 
139  virtualRobotReaderPlugin = nullptr;
140 
141 
142  std::map<std::string, VirtualRobot::RobotPtr> robots;
143 
144  RunningTask<GraspMemory>::pointer_type taskVisuKnownGrasps;
145 
146  std::map<std::string, viz::Layer> graspVisuPerObject;
147  };
148 } // namespace armarx::armem::server::grasp
armarx::armem::server::grasp::GraspMemory::commit
armem::data::CommitResult commit(const armem::data::Commit &commit, const Ice::Current &) override
Definition: GraspMemory.cpp:135
ArVizComponentPlugin.h
ObjectPoseClientPlugin.h
armarx::armem::server::grasp::GraspMemory::getActions
armem::actions::GetActionsOutputSeq getActions(const armem::actions::GetActionsInputSeq &inputs) override
Definition: GraspMemory.cpp:200
armarx::armem::server::grasp
Definition: GraspMemory.cpp:33
armarx::armem::client::plugins::ReaderWriterPlugin
A component plugin offering client-side access to a reader or writer and manages the lifecycle,...
Definition: ReaderWriterPlugin.h:44
ReadWritePluginUser.h
armarx::armem::server::grasp::GraspMemory::createRemoteGuiTab
void createRemoteGuiTab()
Definition: GraspMemory.cpp:448
armarx::RemoteGui::Client::Tab
Definition: Tab.h:15
KnownGraspProviderSegment.h
ReaderWriterPlugin.h
armarx::armem::server::grasp::GraspMemory::onConnectComponent
void onConnectComponent() override
Pure virtual hook for the subclass.
Definition: GraspMemory.cpp:90
armarx::ObjectPoseClientPluginUser
Provides an objpose::ObjectPoseTopicPrx objectPoseTopic as member variable.
Definition: ObjectPoseClientPlugin.h:64
RunningTask.h
armarx::armem::server::grasp::GraspMemory::onExitComponent
void onExitComponent() override
Hook for subclass.
Definition: GraspMemory.cpp:128
LightweightRemoteGuiComponentPlugin.h
armarx::armem::server::grasp::GraspMemory::executeActions
armem::actions::ExecuteActionOutputSeq executeActions(const armem::actions::ExecuteActionInputSeq &inputs) override
Definition: GraspMemory.cpp:264
armarx::ArVizComponentPluginUser
Provides a ready-to-use ArViz client arviz as member variable.
Definition: ArVizComponentPlugin.h:35
armarx::armem::MemoryID
A memory ID.
Definition: MemoryID.h:47
armarx::armem::server::grasp::GraspMemory::RemoteGui_update
void RemoteGui_update() override
Definition: GraspMemory.cpp:1259
armarx::armem::server::grasp::GraspMemory::GraspMemory
GraspMemory()
Definition: GraspMemory.cpp:70
armarx::armem::server::plugins::ReadWritePluginUser
Base class of memory server components.
Definition: ReadWritePluginUser.h:20
armarx::armem::server::grasp::GraspMemory
Brief description of class GraspMemory.
Definition: GraspMemory.h:34
VirtualRobotReader.h
armarx::RemoteGui::Client::ComboBox
Definition: Widgets.h:50
armarx::LightweightRemoteGuiComponentPluginUser
Definition: LightweightRemoteGuiComponentPlugin.h:72
Component.h
armarx::Component
Baseclass for all ArmarX ManagedIceObjects requiring properties.
Definition: Component.h:91
armarx::armem::server::grasp::GraspMemory::onInitComponent
void onInitComponent() override
Pure virtual hook for the subclass.
Definition: GraspMemory.cpp:76
armarx::armem::server::grasp::GraspMemory::createPropertyDefinitions
PropertyDefinitionsPtr createPropertyDefinitions() override
Definition: GraspMemory.cpp:36
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::armem::index::memoryID
const MemoryID memoryID
Definition: memory_ids.cpp:28
IceInternal::ProxyHandle<::IceProxy::armarx::DebugObserverInterface >
armarx::RemoteGui::Client::IntSpinBox
Definition: Widgets.h:69
armarx::RemoteGui::Client::CheckBox
Definition: Widgets.h:129
armarx::RemoteGui::Client::Button
Definition: Widgets.h:120
armarx::armem::server::grasp::GraspMemory::onDisconnectComponent
void onDisconnectComponent() override
Hook for subclass.
Definition: GraspMemory.cpp:106
armarx::armem::server::grasp::GraspMemory::getDefaultName
std::string getDefaultName() const override
Definition: GraspMemory.cpp:65
armarx::armem::grasping::segment::KnownGraspProviderSegment
Definition: KnownGraspProviderSegment.h:16