3#include <VirtualRobot/Grasping/GraspSet.h>
4#include <VirtualRobot/ManipulationObject.h>
5#include <VirtualRobot/RobotNodeSet.h>
16 grasp_object::arondto::GraspObjectAcceptedType
17 GetDefaultParameterization()
19 grasp_object::arondto::GraspObjectAcceptedType ret;
20 ret.platformOrientationalAccuracy = 0.1;
21 ret.platformPositionalAccuracy = 10;
22 ret.tcpOrientationalAccuracy = 0.1;
23 ret.tcpPositionalAccuracy = 20;
29 .skillId = {.skillName =
"GraspObject"},
30 .description =
"Grasp an object",
31 .rootProfileDefaults = GetDefaultParameterization().toAron(),
33 .parametersType = grasp_object::arondto::GraspObjectAcceptedType::ToAronType(),
63 VirtualRobot::RobotIO::RobotDescription::eStructure);
72 skills::visual_search::arondto::WhatCanYouSeeNowAcceptedType params;
73 params.robotName = in.parameters.robotName;
74 params.objectEntityId = in.parameters.objectEntityId;
76 SkillProxy prx(
manager, SkillID{
80 if (prx.executeSkill(in.executorName, params.toAron()).status !=
111 auto kinematicChainSelection =
113 {*objInstance, *robot});
114 if (kinematicChainSelection.kinematicChainName.empty())
121 ARMARX_INFO <<
"Using kinematic chain: " << kinematicChainSelection.kinematicChainName;
129 robot->getRobotNodeSet(kinematicChainSelection.kinematicChainName)
133 if (graspSetSelection.graspSetName.empty())
135 ARMARX_ERROR <<
"No grasp info for object " << in.parameters.objectEntityId
141 ARMARX_INFO <<
"Using grasp: " << graspSetSelection.graspSetName;
149 skills::hand_control::arondto::OpenHandAcceptedType params;
150 params.kinematicChainName = kinematicChainSelection.kinematicChainName;
152 SkillProxy prx(
manager, SkillID{
153 .providerId = ProviderID{.providerName =
context.handControlSkillProvider},
160 prx.executeSkillAsync(in.executorName, params.toAron());
165 skills::grasp_object::arondto::MovePlatformForGraspAcceptedType params;
166 params.robotName = in.parameters.robotName;
167 params.orientationalAccuracy = in.parameters.platformOrientationalAccuracy;
168 params.positionalAccuracy = in.parameters.platformPositionalAccuracy;
169 params.objectEntityId = in.parameters.objectEntityId;
170 params.tcpName = kinematicChainSelection.tcpName;
172 SkillProxy prx(
manager, SkillID{
173 .providerId = ProviderID{.providerName =
context.graspControlSkillProvider},
176 if (prx.executeSkill(in.executorName, params.toAron())
185 skills::grasp_object::arondto::ExecuteGraspAcceptedType params;
186 params.robotName = in.parameters.robotName;
187 params.graspSetName = graspSetSelection.graspSetName;
188 params.objectEntityId = in.parameters.objectEntityId;
189 params.kinematicChainName = kinematicChainSelection.kinematicChainName;
190 params.orientationalAccuracy = in.parameters.tcpOrientationalAccuracy;
191 params.positionalAccuracy = in.parameters.tcpPositionalAccuracy;
193 SkillProxy prx(
manager, SkillID{
194 .providerId = ProviderID{.providerName =
context.graspControlSkillProvider},
197 if (prx.executeSkill(in.executorName, params.toAron())
206 skills::grasp_object::arondto::CloseHandAndAttachAcceptedType params;
207 params.kinematicChainName = kinematicChainSelection.kinematicChainName;
208 params.objectEntityId = in.parameters.objectEntityId;
209 params.robotName = in.parameters.robotName;
211 SkillProxy prx(
manager, SkillID{
212 .providerId = ProviderID{.providerName =
context.graspControlSkillProvider},
215 if (prx.executeSkill(in.executorName, params.toAron())
226 robot->getRobotNode(kinematicChainSelection.tcpName)->getGlobalPose();
228 auto targetTCPPoseGlobal = tcpPoseGlobal;
229 targetTCPPoseGlobal(2, 3) += 100;
231 skills::tcp_control::arondto::MoveTCPToTargetPoseAcceptedType params;
232 params.robotName = in.parameters.robotName;
233 params.kinematicChainName = kinematicChainSelection.kinematicChainName;
234 params.targetPoseGlobal = targetTCPPoseGlobal;
235 params.orientationalAccuracy = in.parameters.tcpOrientationalAccuracy;
236 params.positionalAccuracy = in.parameters.tcpPositionalAccuracy;
238 SkillProxy prx(
manager, SkillID{
239 .providerId = ProviderID{.providerName =
context.tcpControlSkillProvider},
242 if (prx.executeSkill(in.executorName, params.toAron())
251 skills::joint_control::arondto::MoveJointsToPositionAcceptedType params;
252 params.robotName = in.parameters.robotName;
253 params.jointTargetTolerance = 0.03;
254 params.jointMaxSpeed = 0.75;
255 params.accelerationTime = 500;
256 params.setVelocitiesToZeroAtEnd =
true;
258 for (
const auto& j : robot->getRobotNodeSet(kinematicChainSelection.kinematicChainName)
259 ->getAllRobotNodes())
261 params.targetJointMap[j->getName()] = 0.0;
264 SkillProxy prx(
manager, SkillID{
265 .providerId = ProviderID{.providerName =
context.jointControlSkillProvider},
268 if (prx.executeSkill(in.executorName, params.toAron())
277 skills::grasp_object::arondto::MovePlatformAfterGraspAcceptedType params;
278 params.robotName = in.parameters.robotName;
279 params.orientationalAccuracy = in.parameters.platformOrientationalAccuracy;
280 params.positionalAccuracy = in.parameters.platformPositionalAccuracy;
282 SkillProxy prx(
manager, SkillID{
283 .providerId = ProviderID{.providerName =
context.graspControlSkillProvider},
286 if (prx.executeSkill(in.executorName, params.toAron())
static Duration MilliSeconds(std::int64_t milliSeconds)
Constructs a duration in milliseconds.
The memory name system (MNS) client.
std::optional< armem::grasping::arondto::KnownGraspInfo > queryKnownGraspInfoByEntityName(const std::string &, const armem::Time &)
void connect(armem::client::MemoryNameSystem &memoryNameSystem)
std::optional< objpose::ObjectPose > queryLatestObjectInstance(const ObjectID &instanceId)
void connect(armem::client::MemoryNameSystem &memoryNameSystem)
void connect(armem::client::MemoryNameSystem &memoryNameSystem)
virtual void connect(armem::client::MemoryNameSystem &memoryNameSystem)
The VirtualRobotReader class.
VirtualRobot::RobotPtr getSynchronizedRobot(const std::string &name, const VirtualRobot::RobotIO::RobotDescription &loadMode=VirtualRobot::RobotIO::RobotDescription::eStructure, bool blocking=true)
bool synchronizeRobot(VirtualRobot::Robot &robot, const armem::Time ×tamp) const
Synchronize both the platform pose and the joint values of a virtual robot, according to the robot st...
static SkillDescription Description
static SkillDescription Description
grasp_object::arondto::GraspObjectAcceptedType ArgType
static SkillDescription Description
GraspObjectSkill(armem::client::MemoryNameSystem &mns, armarx::viz::Client &arviz, TwoArmGraspControlSkillContext &)
static SkillDescription Description
static SkillDescription Description
static SkillDescription Description
manager::dti::SkillManagerInterfacePrx manager
virtual MainResult main()
Override this method with the actual implementation.
TwoArmGraspControlSkill(armem::client::MemoryNameSystem &mns, armarx::viz::Client &arviz, const std::string &layerName, TwoArmGraspControlSkillContext &c)
TwoArmGraspControlSkillContext & context
static SkillDescription Description
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
#define ARMARX_INFO
The normal logging level.
#define ARMARX_ERROR
The logging level for unexpected behaviour, that must be fixed.
SelectBestKinematicChainForObjectGraspOutput SelectBestKinematicChainForObjectGrasp(const SelectBestKinematicChainForObjectGraspInput &in)
SelectBestGraspSetForObjectOutput SelectBestGraspSetForObject(const SelectBestGraspSetForObjectInput &in)
This file is part of ArmarX.
A result struct for th main method of a skill.
std::string visualSearchSkillProvider
armarx::viz::Client arviz
armem::client::MemoryNameSystem & mns