3#include <SimoxUtility/color/cmaps.h>
8#include <RobotAPI/libraries/GraspingUtility/aron/GraspCandidate.aron.generated.h>
30 defs->topic(debugObserver);
32 defs->optional(memoryName,
"mem.MemoryName",
"Name of the memory to use.");
40 return "GraspProviderExample";
82 while (!task->isStopped() && i++ < 100)
86 candidate.groupNr = i;
88 writer.commitGraspCandidate(candidate,
armem::Time::Now(),
"candidateProvider");
92 bimanualCandidate.groupNr =
95 writer.commitBimanualGraspCandidate(
100 grasping::GraspCandidateSeq candidatesToWrite;
101 candidatesToWrite.push_back(
new grasping::GraspCandidate(candidate));
102 candidate.side =
"Left";
103 candidatesToWrite.push_back(
new grasping::GraspCandidate(candidate));
106 writer.commitGraspCandidateSeq(
111 std::map<std::string, grasping::GraspCandidatePtr> candidates;
115 candidates = reader.queryLatestGraspCandidates();
123 for (
auto& [
id, ca] : candidates)
125 ARMARX_INFO <<
"candidate with ID " <<
id <<
" has group number " << ca->groupNr;
128 std::map<std::string, grasping::BimanualGraspCandidatePtr> bimanualCandidates;
132 bimanualCandidates = reader.queryLatestBimanualGraspCandidates();
139 for (
auto& [
id, ca] : bimanualCandidates)
141 ARMARX_INFO <<
"bimanual candidate with ID " <<
id <<
" has group number "
149 grasping::GraspCandidate
152 armarx::grasping::GraspCandidate candidate = armarx::grasping::GraspCandidate();
154 candidate.approachVector = Vector3BasePtr(
toIce(zeroVector));
155 candidate.graspPose = PoseBasePtr(
toIce(identityMatrix));
156 candidate.providerName =
"Example";
157 candidate.side =
"Right";
158 candidate.robotPose = PoseBasePtr(
toIce(identityMatrix));
160 candidate.tcpPoseInHandRoot = PoseBasePtr(
toIce(identityMatrix));
163 candidate.sourceInfo =
new grasping::GraspCandidateSourceInfo();
164 candidate.sourceInfo->referenceObjectName =
"Box";
165 candidate.sourceInfo->bbox =
new grasping::BoundingBox();
166 candidate.sourceInfo->bbox->center = Vector3BasePtr(
toIce(zeroVector));
167 candidate.sourceInfo->bbox->ha1 = Vector3BasePtr(
toIce(zeroVector));
168 candidate.sourceInfo->bbox->ha2 = Vector3BasePtr(
toIce(zeroVector));
169 candidate.sourceInfo->bbox->ha3 = Vector3BasePtr(
toIce(zeroVector));
170 candidate.sourceInfo->referenceObjectPose = PoseBasePtr(
toIce(identityMatrix));
175 grasping::BimanualGraspCandidate
178 armarx::grasping::BimanualGraspCandidate bimanualCandidate =
179 armarx::grasping::BimanualGraspCandidate();
181 bimanualCandidate.approachVectorLeft = Vector3BasePtr(
toIce(zeroVector));
182 bimanualCandidate.approachVectorRight = Vector3BasePtr(
toIce(zeroVector));
183 bimanualCandidate.graspPoseLeft = PoseBasePtr(
toIce(Eigen::Matrix4f()));
184 bimanualCandidate.graspPoseRight = PoseBasePtr(
toIce(Eigen::Matrix4f()));
185 bimanualCandidate.providerName =
"BimanualExample";
186 bimanualCandidate.robotPose = PoseBasePtr(
toIce(identityMatrix));
187 bimanualCandidate.tcpPoseInHandRootRight = PoseBasePtr(
toIce(identityMatrix));
188 bimanualCandidate.tcpPoseInHandRootLeft = PoseBasePtr(
toIce(identityMatrix));
189 bimanualCandidate.inwardsVectorLeft = Vector3BasePtr(
toIce(zeroVector));
190 bimanualCandidate.inwardsVectorRight = Vector3BasePtr(
toIce(zeroVector));
191 return bimanualCandidate;
ComponentPropertyDefinitions(std::string prefix, bool hasObjectNameParameter=true)
std::string getConfigIdentifier()
Retrieve config identifier for this component as set in constructor.
static Duration MilliSeconds(std::int64_t milliSeconds)
Constructs a duration in milliseconds.
GraspProviderExamplePropertyDefinitions(std::string prefix)
void onInitComponent() override
Pure virtual hook for the subclass.
void onDisconnectComponent() override
Hook for subclass.
grasping::BimanualGraspCandidate makeDummyBimanualGraspCandidate()
armarx::PropertyDefinitionsPtr createPropertyDefinitions() override
void onConnectComponent() override
Pure virtual hook for the subclass.
void onExitComponent() override
Hook for subclass.
std::string getDefaultName() const override
grasping::GraspCandidate makeDummyGraspCandidate()
std::string prefix
Prefix of the properties such as namespace, domain, component name, etc.
MemoryNameSystem & memoryNameSystem()
Indicates that a query resulted in an Error.
static std::string makeMsg(const std::string &memory, const std::string &message="")
Simple rate limiter for use in loops to maintain a certain frequency given a clock.
Duration waitForNextTick() const
Wait and block until the target period is met.
#define ARMARX_INFO
The normal logging level.
#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.
This file offers overloads of toIce() and fromIce() functions for STL container types.
IceUtil::Handle< class PropertyDefinitionContainer > PropertyDefinitionsPtr
PropertyDefinitions smart pointer type.
void toIce(std::map< IceKeyT, IceValueT > &iceMap, const boost::container::flat_map< CppKeyT, CppValueT > &cppMap)