5#include <RobotAPI/libraries/GraspingUtility/aron/GraspCandidate.aron.generated.h>
21 ARMARX_IMPORTANT <<
"GraspCandidateReader: Waiting for memory '" << properties.memoryName
25 memoryReader = use ? memoryNameSystem.
useReader(properties.memoryName)
28 << properties.memoryName;
37 armarx::grasping::GraspCandidate
40 armarx::grasping::GraspCandidate candidate;
42 grasping::arondto::GraspCandidate aronTransform;
44 aronTransform.fromAron(instance.
data());
51 armarx::grasping::BimanualGraspCandidate
54 armarx::grasping::BimanualGraspCandidate candidate;
56 grasping::arondto::BimanualGraspCandidate aronTransform;
57 aronTransform.fromAron(instance.
data());
64 grasping::GraspCandidatePtr
68 if (
auto it = dict.find(
id.str()); it != dict.end())
78 grasping::GraspCandidateDict
83 ARMARX_DEBUG <<
"Query for memory name: " << properties.memoryName;
95 armarx::grasping::GraspCandidateDict candidates;
100 candidates[
id.str()] =
new grasping::GraspCandidate(
asGraspCandidate(*instance));
107 grasping::BimanualGraspCandidatePtr
112 ARMARX_DEBUG <<
"Query for memory name: " << properties.memoryName;
125 armarx::grasping::BimanualGraspCandidatePtr candidate;
130 if (instance.id() ==
id)
143 grasping::GraspCandidateDict
145 const std::string& entity)
const
149 ARMARX_DEBUG <<
"Query for memory name: " << properties.memoryName;
152 .
withName(properties.graspCandidateMemoryName)
162 return getGraspCandidatesFromResultSet(qResult);
165 std::map<std::string, grasping::BimanualGraspCandidatePtr>
167 const std::string& entity)
const
171 ARMARX_DEBUG <<
"Query for memory name: " << properties.memoryName;
174 .
withName(properties.bimanualGraspCandidateMemoryName)
184 return getBimanualGraspCandidatesFromResultSet(qResult);
187 grasping::GraspCandidateDict
193 ARMARX_DEBUG <<
"Query for memory name: " << properties.memoryName;
196 if (!provider.empty())
199 .
withName(properties.graspCandidateMemoryName)
210 .
withName(properties.graspCandidateMemoryName)
221 return getGraspCandidatesFromResultSet(qResult);
224 std::map<std::string, grasping::BimanualGraspCandidatePtr>
229 ARMARX_DEBUG <<
"Query for memory name: " << properties.memoryName;
232 if (!provider.empty())
235 .
withName(properties.bimanualGraspCandidateMemoryName)
246 .
withName(properties.bimanualGraspCandidateMemoryName)
257 return getBimanualGraspCandidatesFromResultSet(qResult);
263 ARMARX_DEBUG <<
"GraspCandidateReader: registerPropertyDefinitions";
265 const std::string prefix = propertyPrefix;
267 def->optional(properties.graspCandidateMemoryName,
268 prefix +
"GraspCandidateMemoryName",
269 "Name of the grasping memory core segment to use.");
271 def->optional(properties.memoryName, prefix +
"MemoryName");
274 grasping::GraspCandidateDict
275 GraspCandidateReader::getGraspCandidatesFromResultSet(
284 std::map<std::string, armarx::grasping::GraspCandidatePtr> candidates;
289 candidates[instance.id().str()] =
300 std::map<std::string, grasping::BimanualGraspCandidatePtr>
301 GraspCandidateReader::getBimanualGraspCandidatesFromResultSet(
302 const armem::client::QueryResult& qResult)
const
306 throw armem::error::QueryFailed(properties.memoryName, qResult.
errorMessage);
310 std::map<std::string, armarx::grasping::BimanualGraspCandidatePtr> candidates;
312 armem::wm::FunctionalVisitor visitor;
313 visitor.
instanceConstFn = [&candidates](armem::wm::EntityInstance
const& instance)
315 candidates[instance.id().str()] =
326 grasping::GraspCandidateDict
332 ARMARX_DEBUG <<
"Query for memory name: " << properties.memoryName;
335 if (!provider.empty())
338 .
withName(properties.graspCandidateMemoryName)
349 .
withName(properties.graspCandidateMemoryName)
359 return getGraspCandidatesFromResultSet(qResult);
std::map< std::string, ::armarx::grasping::BimanualGraspCandidatePtr > queryLatestBimanualGraspCandidateEntity(std::string const &provider, std::string const &entity) const
std::map< std::string, ::armarx::grasping::BimanualGraspCandidatePtr > queryLatestBimanualGraspCandidates(std::string const &provider="") const
::armarx::grasping::GraspCandidatePtr queryGraspCandidateInstanceByID(armem::MemoryID const &id) const
::armarx::grasping::BimanualGraspCandidatePtr queryBimanualGraspCandidateInstanceByID(armem::MemoryID const &id) const
::armarx::grasping::GraspCandidateDict queryLatestGraspCandidateEntity(std::string const &provider, std::string const &entity) const
::armarx::grasping::GraspCandidateDict queryGraspCandidateInstancesByID(std::vector< armem::MemoryID > const &ids) const
void connect(armem::client::MemoryNameSystem &memoryNameSystem, bool use=true)
::armarx::grasping::GraspCandidateDict queryGraspCandidatesNewerThan(std::string const &provider="", const armarx::DateTime ×tamp=armarx::DateTime::Now()) const
::armarx::grasping::GraspCandidateDict queryLatestGraspCandidates(std::string const &provider="") const
void registerPropertyDefinitions(armarx::PropertyDefinitionsPtr &def)
const DataT & data() const
The memory name system (MNS) client.
Reader getReader(const MemoryID &memoryID)
Get a reader to the given memory name.
Reader useReader(const MemoryID &memoryID)
Use a memory server and get a reader for it.
The query::Builder class provides a fluent-style specification of hierarchical queries.
void multipleEntitySnapshots(const std::vector< MemoryID > &snapshotIDs)
void singleEntitySnapshot(const MemoryID &snapshotID)
QueryInput buildQueryInput() const
CoreSegmentSelector & coreSegments()
Start specifying core segments.
CoreSegmentSelector & withName(const std::string &name) override
ProviderSegmentSelector & providerSegments()
Start specifying provider segments.
EntitySelector & all() override
EntitySelector & withName(const std::string &name) override
SnapshotSelector & snapshots()
Start specifying entity snapshots.
ProviderSegmentSelector & withName(const std::string &name) override
EntitySelector & entities()
Start specifying entities.
ProviderSegmentSelector & all() override
SnapshotSelector & timeRange(Time min, Time max)
SnapshotSelector & latest()
Indicates that a query to the Memory Name System failed.
Indicates that a query resulted in an Error.
Client-side working entity instance.
A Visitor which can be parametrized by std::function instead of inheriting and overriding.
std::function< bool(const EntityInstance &instance)> instanceConstFn
bool applyTo(Memory &memory)
Represents a point in time.
#define ARMARX_IMPORTANT
The logging level for always important information, but expected behaviour (in contrast to ARMARX_WAR...
#define ARMARX_ERROR
The logging level for unexpected behaviour, that must be fixed.
#define ARMARX_DEBUG
The logging level for output that is only interesting while debugging.
void fromAron(const arondto::MemoryID &dto, MemoryID &bo)
armarx::grasping::GraspCandidate asGraspCandidate(const armem::wm::EntityInstance &instance)
armarx::grasping::BimanualGraspCandidate asBimanualGraspCandidate(const armem::wm::EntityInstance &instance)
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
auto * findInstance(const MemoryID &instanceID)
Find an entity instance.
wm::Memory memory
The slice of the memory that matched the query.