30 #include <RobotAPI/interface/observers/GraspCandidateObserverInterface.h>
46 defineOptionalProperty<std::string>(
"GraspCandidatesTopicName",
47 "GraspCandidatesTopic",
48 "Name of the Grasp Candidate Topic");
49 defineOptionalProperty<std::string>(
51 "GraspCandidateProviderConfigTopic",
52 "Name of the Grasp Candidate Provider Config Topic");
63 virtual public grasping::GraspCandidateObserverInterface
72 return "GraspCandidateObserver";
84 static bool FilterMatches(
const grasping::CandidateFilterConditionPtr& filter,
85 const std::string& providerName,
86 const grasping::GraspCandidatePtr& candidate);
92 const grasping::ProviderInfoPtr& info,
93 const ::Ice::Current& = Ice::emptyCurrent)
override;
95 const grasping::GraspCandidateSeq& candidates,
96 const ::Ice::Current& = Ice::emptyCurrent)
override;
98 const grasping::BimanualGraspCandidateSeq& candidates,
99 const ::Ice::Current& = Ice::emptyCurrent)
override;
105 grasping::StringSeq getAvailableProviderNames(const ::Ice::Current&)
override;
106 grasping::ProviderInfoPtr
108 const ::Ice::Current& = Ice::emptyCurrent)
override;
109 bool hasProvider(
const std::string& providerName,
const Ice::Current&
c)
override;
110 grasping::GraspCandidateSeq
112 grasping::GraspCandidateSeq
114 const Ice::Current&
c = Ice::emptyCurrent)
override;
115 grasping::GraspCandidateSeq
117 const Ice::Current&
c = Ice::emptyCurrent)
override;
118 grasping::GraspCandidateSeq
120 const ::Ice::Current& = Ice::emptyCurrent)
override;
122 const ::Ice::Current& = Ice::emptyCurrent)
override;
126 const ::Ice::Current& = Ice::emptyCurrent)
override;
129 const ::Ice::Current& = Ice::emptyCurrent)
override;
130 grasping::GraspCandidateSeq
134 grasping::BimanualGraspCandidateSeq
140 const ::Ice::Current& = Ice::emptyCurrent)
override;
141 grasping::BimanualGraspCandidateSeq
146 const Ice::Current&
c)
override;
150 void checkHasProvider(
const std::string& providerName);
151 grasping::StringSeq getAvailableProviderNames();
152 std::mutex dataMutex;
153 std::map<std::string, grasping::GraspCandidateSeq> candidates;
154 std::map<std::string, grasping::BimanualGraspCandidateSeq> bimanualCandidates;
155 grasping::InfoMap providers;
156 std::map<std::string, int> updateCounters;
158 grasping::GraspCandidateProviderInterfacePrx configTopic;
160 std::mutex selectedCandidatesMutex;
161 grasping::GraspCandidateSeq selectedCandidates;
163 grasping::BimanualGraspCandidateSeq selectedBimanualCandidates;
166 void handleProviderUpdate(
const std::string& providerName,
int candidateCount);