ObjectPoseProviderExample.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 RobotAPI::ArmarXObjects::ObjectPoseProviderExample
17  * @author Rainer Kartmann ( rainer dot kartmann at kit dot edu )
18  * @date 2020
19  * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20  * GNU General Public License
21  */
22 
23 #pragma once
24 
25 #include <mutex>
26 
29 #include <ArmarXCore/interface/observers/ObserverInterface.h>
30 // #include <RobotAPI/libraries/RobotAPIComponentPlugins/ArVizComponentPlugin.h>
31 
32 // Include the ProviderPlugin
36 
37 namespace armarx
38 {
39 
40  /**
41  * @defgroup Component-ObjectPoseProviderExample ObjectPoseProviderExample
42  * @ingroup RobotAPI-Components
43  * A description of the component ObjectPoseProviderExample.
44  *
45  * @class ObjectPoseProviderExample
46  * @ingroup Component-ObjectPoseProviderExample
47  * @brief Brief description of class ObjectPoseProviderExample.
48  *
49  * Detailed description of class ObjectPoseProviderExample.
50  */
52  virtual public armarx::Component
53  // Derive from the provider plugin.
54  ,
56  {
57  public:
58  /// @see armarx::ManagedIceObject::getDefaultName()
59  std::string getDefaultName() const override;
60 
61 
62  // Implement the ObjectPoseProvider interface
63  public:
64  objpose::ProviderInfo getProviderInfo(const Ice::Current& = Ice::emptyCurrent) override;
65  objpose::provider::RequestObjectsOutput
66  requestObjects(const objpose::provider::RequestObjectsInput& input,
67  const Ice::Current&) override;
68 
69 
70  protected:
71  /// @see PropertyUser::createPropertyDefinitions()
73 
74  /// @see armarx::ManagedIceObject::onInitComponent()
75  void onInitComponent() override;
76 
77  /// @see armarx::ManagedIceObject::onConnectComponent()
78  void onConnectComponent() override;
79 
80  /// @see armarx::ManagedIceObject::onDisconnectComponent()
81  void onDisconnectComponent() override;
82 
83  /// @see armarx::ManagedIceObject::onExitComponent()
84  void onExitComponent() override;
85 
86 
87  private:
88  void poseEstimationTaskRun();
89 
90 
91  private:
92  // To be moved to plugin
93  std::mutex requestedObjectsMutex;
94  objpose::RequestedObjects requestedObjects;
95 
96 
97  objpose::ProviderInfo providerInfo;
98 
99  armarx::ObjectFinder objectFinder;
100  std::vector<std::string> initialObjectIDs = {"KIT/Amicelli", "KIT/YellowSaltCylinder"};
101  bool singleShot = false;
102 
103 
105 
106  /// Debug observer. Used to visualize e.g. time series.
107  armarx::DebugObserverInterfacePrx debugObserver;
108  };
109 } // namespace armarx
armarx::ObjectPoseProviderExample::createPropertyDefinitions
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
Definition: ObjectPoseProviderExample.cpp:39
ObjectPoseProviderPlugin.h
armarx::ObjectPoseProviderExample::requestObjects
objpose::provider::RequestObjectsOutput requestObjects(const objpose::provider::RequestObjectsInput &input, const Ice::Current &) override
Definition: ObjectPoseProviderExample.cpp:103
armarx::ObjectPoseProviderExample::onExitComponent
void onExitComponent() override
Definition: ObjectPoseProviderExample.cpp:92
armarx::ObjectPoseProviderExample
Brief description of class ObjectPoseProviderExample.
Definition: ObjectPoseProviderExample.h:51
armarx::ObjectPoseProviderPluginUser
Provides an objpose::ObjectPoseTopicPrx objectPoseTopic as member variable.
Definition: ObjectPoseProviderPlugin.h:36
armarx::ObjectFinder
Used to find objects in the ArmarX objects repository [1] (formerly [2]).
Definition: ObjectFinder.h:22
armarx::aron::input
ReaderT::InputType & input
Definition: rw.h:12
armarx::ObjectPoseProviderExample::onConnectComponent
void onConnectComponent() override
Definition: ObjectPoseProviderExample.cpp:80
TaskUtil.h
Component.h
armarx::Component
Baseclass for all ArmarX ManagedIceObjects requiring properties.
Definition: Component.h:91
IceUtil::Handle< class PropertyDefinitionContainer >
armarx::ObjectPoseProviderExample::getDefaultName
std::string getDefaultName() const override
Definition: ObjectPoseProviderExample.cpp:55
IceInternal::ProxyHandle<::IceProxy::armarx::DebugObserverInterface >
RequestedObjects.h
armarx::ObjectPoseProviderExample::onDisconnectComponent
void onDisconnectComponent() override
Definition: ObjectPoseProviderExample.cpp:87
armarx::objpose::RequestedObjects
Handles requests for object pose estimation from the ObjectPoseProviderInterface.
Definition: RequestedObjects.h:15
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:27
armarx::ObjectPoseProviderExample::getProviderInfo
objpose::ProviderInfo getProviderInfo(const Ice::Current &=Ice::emptyCurrent) override
Definition: ObjectPoseProviderExample.cpp:97
armarx::ObjectPoseProviderExample::onInitComponent
void onInitComponent() override
Definition: ObjectPoseProviderExample.cpp:61
ObjectFinder.h