3#include <SimoxUtility/color/cmaps.h>
8#include <RobotAPI/libraries/GraspingUtility/aron/GraspCandidate.aron.generated.h>
34 defs->topic(debugObserver);
36 defs->optional(memoryName,
"mem.MemoryName",
"Name of the memory to use.");
44 return "GraspProviderExample";
86 while (!task->isStopped() && i++ < 100)
90 candidate.groupNr = i;
92 writer.commitGraspCandidate(candidate,
armem::Time::Now(),
"candidateProvider");
96 bimanualCandidate.groupNr =
99 writer.commitBimanualGraspCandidate(
104 grasping::GraspCandidateSeq candidatesToWrite;
105 candidatesToWrite.push_back(
new grasping::GraspCandidate(candidate));
106 candidate.side =
"Left";
107 candidatesToWrite.push_back(
new grasping::GraspCandidate(candidate));
110 writer.commitGraspCandidateSeq(
115 std::map<std::string, grasping::GraspCandidatePtr> candidates;
119 candidates = reader.queryLatestGraspCandidates();
127 for (
auto& [
id, ca] : candidates)
129 ARMARX_INFO <<
"candidate with ID " <<
id <<
" has group number " << ca->groupNr;
132 std::map<std::string, grasping::BimanualGraspCandidatePtr> bimanualCandidates;
136 bimanualCandidates = reader.queryLatestBimanualGraspCandidates();
143 for (
auto& [
id, ca] : bimanualCandidates)
145 ARMARX_INFO <<
"bimanual candidate with ID " <<
id <<
" has group number "
153 grasping::GraspCandidate
156 armarx::grasping::GraspCandidate candidate = armarx::grasping::GraspCandidate();
158 candidate.approachVector = Vector3BasePtr(
toIce(zeroVector));
159 candidate.graspPose = PoseBasePtr(
toIce(identityMatrix));
160 candidate.providerName =
"Example";
161 candidate.side =
"Right";
162 candidate.robotPose = PoseBasePtr(
toIce(identityMatrix));
164 candidate.tcpPoseInHandRoot = PoseBasePtr(
toIce(identityMatrix));
167 candidate.sourceInfo =
new grasping::GraspCandidateSourceInfo();
168 candidate.sourceInfo->referenceObjectName =
"Box";
169 candidate.sourceInfo->bbox =
new grasping::BoundingBox();
170 candidate.sourceInfo->bbox->center = Vector3BasePtr(
toIce(zeroVector));
171 candidate.sourceInfo->bbox->ha1 = Vector3BasePtr(
toIce(zeroVector));
172 candidate.sourceInfo->bbox->ha2 = Vector3BasePtr(
toIce(zeroVector));
173 candidate.sourceInfo->bbox->ha3 = Vector3BasePtr(
toIce(zeroVector));
174 candidate.sourceInfo->referenceObjectPose = PoseBasePtr(
toIce(identityMatrix));
179 grasping::BimanualGraspCandidate
182 armarx::grasping::BimanualGraspCandidate bimanualCandidate =
183 armarx::grasping::BimanualGraspCandidate();
185 bimanualCandidate.approachVectorLeft = Vector3BasePtr(
toIce(zeroVector));
186 bimanualCandidate.approachVectorRight = Vector3BasePtr(
toIce(zeroVector));
187 bimanualCandidate.graspPoseLeft = PoseBasePtr(
toIce(Eigen::Matrix4f()));
188 bimanualCandidate.graspPoseRight = PoseBasePtr(
toIce(Eigen::Matrix4f()));
189 bimanualCandidate.providerName =
"BimanualExample";
190 bimanualCandidate.robotPose = PoseBasePtr(
toIce(identityMatrix));
191 bimanualCandidate.tcpPoseInHandRootRight = PoseBasePtr(
toIce(identityMatrix));
192 bimanualCandidate.tcpPoseInHandRootLeft = PoseBasePtr(
toIce(identityMatrix));
193 bimanualCandidate.inwardsVectorLeft = Vector3BasePtr(
toIce(zeroVector));
194 bimanualCandidate.inwardsVectorRight = Vector3BasePtr(
toIce(zeroVector));
195 return bimanualCandidate;
#define ARMARX_REGISTER_COMPONENT_EXECUTABLE(ComponentT, applicationName)
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)