37#define TCP_POSE_CHANNEL "TCPPose"
38#define TCP_TRANS_VELOCITIES_CHANNEL "TCPVelocities"
70 const std::string& providerName,
71 const GraspCandidatePtr& candidate)
73 if (filter->providerName !=
"*" && filter->providerName != providerName)
77 if (filter->minimumSuccessProbability > candidate->graspSuccessProbability)
81 if (filter->approach != AnyApproach &&
82 (candidate->executionHints == 0 || filter->approach != candidate->executionHints->approach))
86 if (filter->preshape != AnyAperture &&
87 (candidate->executionHints == 0 || filter->preshape != candidate->executionHints->preshape))
91 if (filter->objectType != objpose::AnyObject && filter->objectType != candidate->objectType)
103 case objpose::AnyObject:
105 case objpose::KnownObject:
106 return "KnownObject";
107 case objpose::UnknownObject:
108 return "UnknownObject";
115GraspCandidateObserver::handleProviderUpdate(
const std::string& providerName,
int candidateCount)
117 if (updateCounters.count(providerName) == 0)
119 updateCounters[providerName] = 0;
121 updateCounters[providerName]++;
122 if (providers.count(providerName) == 0)
124 providers[providerName] =
new ProviderInfo();
129 offerChannel(providerName,
"Channel of " + providerName);
133 Variant(updateCounters[providerName]),
134 "Counter that increases for each update");
136 providerName,
"candidateCount", Variant(candidateCount),
"Number of provided candiates");
141 const GraspCandidateSeq& candidates,
144 std::unique_lock lock(dataMutex);
145 this->candidates[providerName] = candidates;
146 graspCandidateWriter.commitGraspCandidateSeq(
148 handleProviderUpdate(providerName, candidates.size());
153 const BimanualGraspCandidateSeq& candidates,
156 std::unique_lock lock(dataMutex);
157 this->bimanualCandidates[providerName] = candidates;
158 handleProviderUpdate(providerName, candidates.size());
163 const ProviderInfoPtr& info,
166 std::unique_lock lock(dataMutex);
167 providers[providerName] = info;
168 if (updateCounters.count(providerName) == 0)
170 updateCounters[providerName] = 0;
176 offerChannel(providerName,
"Channel of " + providerName);
184 std::unique_lock lock(dataMutex);
191 std::unique_lock lock(dataMutex);
192 return getAvailableProviderNames();
198 std::unique_lock lock(dataMutex);
199 checkHasProvider(providerName);
200 return providers[providerName];
206 std::unique_lock lock(dataMutex);
213 std::unique_lock lock(dataMutex);
214 GraspCandidateSeq all;
215 for (
const auto& pair : candidates)
217 all.insert(all.end(), pair.second.begin(), pair.second.end());
224 const Ice::Current&
c)
231 const Ice::Current&
c)
233 std::unique_lock lock(dataMutex);
234 GraspCandidateSeq all;
235 for (
const auto& pr : providerNames)
237 const auto it = candidates.find(pr);
238 if (it != candidates.end())
240 all.insert(all.end(), it->second.begin(), it->second.end());
250 std::unique_lock lock(dataMutex);
251 GraspCandidateSeq matching;
252 for (
const auto& pair : candidates)
254 for (
const grasping::GraspCandidatePtr& candidate : pair.second)
258 matching.push_back(candidate);
269 std::unique_lock lock(dataMutex);
270 checkHasProvider(providerName);
271 return updateCounters[providerName];
277 std::unique_lock lock(dataMutex);
278 return updateCounters;
286 std::unique_lock lock(dataMutex);
287 if (providers.count(providerName) == 0)
291 configTopic->setServiceConfig(providerName, config);
299 std::unique_lock lock(selectedCandidatesMutex);
300 selectedCandidates = candidates;
306 std::unique_lock lock(selectedCandidatesMutex);
307 return selectedCandidates;
310BimanualGraspCandidateSeq
313 std::unique_lock lock(dataMutex);
314 BimanualGraspCandidateSeq all;
315 for (
const auto& pair : bimanualCandidates)
317 all.insert(all.end(), pair.second.begin(), pair.second.end());
324 const grasping::BimanualGraspCandidateSeq& candidates,
327 std::unique_lock lock(selectedCandidatesMutex);
328 selectedBimanualCandidates = candidates;
331BimanualGraspCandidateSeq
334 std::unique_lock lock(selectedCandidatesMutex);
335 return selectedBimanualCandidates;
342 std::unique_lock lock(dataMutex);
344 if (candidates.count(providerName))
346 candidates[providerName].clear();
353 return providers.count(providerName) > 0;
357GraspCandidateObserver::checkHasProvider(
const std::string& providerName)
361 throw LocalException(
"Unknown provider name '")
362 << providerName <<
"'. Available providers: " << getAvailableProviderNames();
370 for (
const auto& pair : providers)
372 names.push_back(pair.first);
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
Property< PropertyType > getProperty(const std::string &name)
void reportBimanualGraspCandidates(const std::string &providerName, const grasping::BimanualGraspCandidateSeq &candidates, const ::Ice::Current &=Ice::emptyCurrent) override
void onConnectObserver() override
Framework hook.
grasping::GraspCandidateSeq getCandidatesByProvider(const std::string &providerName, const Ice::Current &c=Ice::emptyCurrent) override
grasping::ProviderInfoPtr getProviderInfo(const std::string &providerName, const ::Ice::Current &=Ice::emptyCurrent) override
grasping::BimanualGraspCandidateSeq getSelectedBimanualCandidates(const ::Ice::Current &=Ice::emptyCurrent) override
bool setProviderConfig(const std::string &providerName, const StringVariantBaseMap &config, const ::Ice::Current &=Ice::emptyCurrent) override
grasping::GraspCandidateSeq getAllCandidates(const ::Ice::Current &=Ice::emptyCurrent) override
void setSelectedCandidates(const grasping::GraspCandidateSeq &candidates, const ::Ice::Current &=Ice::emptyCurrent) override
grasping::BimanualGraspCandidateSeq getAllBimanualCandidates(const ::Ice::Current &=Ice::emptyCurrent) override
void reportGraspCandidates(const std::string &providerName, const grasping::GraspCandidateSeq &candidates, const ::Ice::Current &=Ice::emptyCurrent) override
grasping::IntMap getAllUpdateCounters(const Ice::Current &providerName) override
static std::string ObjectTypeToString(objpose::ObjectType type)
void setSelectedBimanualCandidates(const grasping::BimanualGraspCandidateSeq &candidates, const ::Ice::Current &=Ice::emptyCurrent) override
PropertyDefinitionsPtr createPropertyDefinitions() override
void clearCandidatesByProvider(const std::string &providerName, const Ice::Current &c) override
grasping::GraspCandidateSeq getSelectedCandidates(const ::Ice::Current &=Ice::emptyCurrent) override
void onInitObserver() override
Framework hook.
void reportProviderInfo(const std::string &providerName, const grasping::ProviderInfoPtr &info, const ::Ice::Current &=Ice::emptyCurrent) override
static bool FilterMatches(const grasping::CandidateFilterConditionPtr &filter, const std::string &providerName, const grasping::GraspCandidatePtr &candidate)
grasping::GraspCandidateSeq getCandidatesByFilter(const grasping::CandidateFilterConditionPtr &filter, const ::Ice::Current &=Ice::emptyCurrent) override
grasping::StringSeq getAvailableProviderNames(const ::Ice::Current &) override
bool hasProvider(const std::string &providerName, const Ice::Current &c) override
grasping::GraspCandidateSeq getCandidatesByProviders(const Ice::StringSeq &providerNames, const Ice::Current &c=Ice::emptyCurrent) override
grasping::InfoMap getAvailableProvidersWithInfo(const ::Ice::Current &=Ice::emptyCurrent) override
Ice::Int getUpdateCounterByProvider(const std::string &providerName, const ::Ice::Current &=Ice::emptyCurrent) override
void offeringTopic(const std::string &name)
Registers a topic for retrival after initialization.
TopicProxyType getTopic(const std::string &name)
Returns a proxy of the specified topic.
void usingTopic(const std::string &name, bool orderedPublishing=false)
Registers a proxy for subscription after initialization.
bool existsChannel(const std::string &channelName) const
void offerChannel(std::string channelName, std::string description)
Offer a channel.
bool offerOrUpdateDataField(std::string channelName, std::string datafieldName, const Variant &value, const std::string &description)
MemoryNameSystem & memoryNameSystem()
const simox::meta::IntEnumNames names
This file offers overloads of toIce() and fromIce() functions for STL container types.
std::map< std::string, VariantBasePtr > StringVariantBaseMap
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.