1#include <SimoxUtility/algorithm/string/string_tools.h>
4#include <VirtualRobot/Grasping/GraspSet.h>
5#include <VirtualRobot/ManipulationObject.h>
6#include <VirtualRobot/RobotNodeSet.h>
15 grasp_object::arondto::PutdownObjectAcceptedType
16 GetDefaultParameterization()
18 grasp_object::arondto::PutdownObjectAcceptedType ret;
19 ret.platformOrientationalAccuracy = 0.1;
20 ret.platformPositionalAccuracy = 10;
21 ret.tcpOrientationalAccuracy = 0.1;
22 ret.tcpPositionalAccuracy = 20;
28 .skillId = {.skillName =
"PutdownObject"},
29 .description =
"Putdown an object already in hand of robot",
30 .rootProfileDefaults = GetDefaultParameterization().toAron(),
32 .parametersType = grasp_object::arondto::PutdownObjectAcceptedType::ToAronType(),
62 VirtualRobot::RobotIO::RobotDescription::eStructure);
75 ARMARX_CHECK(objInstance->attachment->agentName == in.parameters.robotName);
77 std::string kinematicChainName =
"LeftArm";
78 if (simox::alg::ends_with(objInstance->attachment->frameName,
" R"))
80 kinematicChainName =
"RightArm";
89 skills::grasp_object::arondto::MovePlatformForPutdownAcceptedType params;
90 params.robotName = in.parameters.robotName;
91 params.orientationalAccuracy = in.parameters.platformOrientationalAccuracy;
92 params.positionalAccuracy = in.parameters.platformPositionalAccuracy;
93 params.objectEntityId = in.parameters.objectEntityId;
94 params.tcpName = robot->getRobotNodeSet(kinematicChainName)->getTCP()->getName();
96 SkillProxy prx(
manager, SkillID{
97 .providerId = ProviderID{.providerName =
context.graspControlSkillProvider},
100 if (prx.executeSkill(in.executorName, params.toAron())
109 skills::grasp_object::arondto::ExecutePutdownAcceptedType params;
110 params.robotName = in.parameters.robotName;
111 params.orientationalAccuracy = in.parameters.platformOrientationalAccuracy;
112 params.positionalAccuracy = in.parameters.platformPositionalAccuracy;
113 params.objectEntityId = in.parameters.objectEntityId;
115 SkillProxy prx(
manager, SkillID{
116 .providerId = ProviderID{.providerName =
context.graspControlSkillProvider},
119 if (prx.executeSkill(in.executorName, params.toAron())
128 skills::grasp_object::arondto::OpenHandAndDetachAcceptedType params;
129 params.kinematicChainName = kinematicChainName;
130 params.objectEntityId = in.parameters.objectEntityId;
131 params.robotName = in.parameters.robotName;
133 SkillProxy prx(
manager, SkillID{
134 .providerId = ProviderID{.providerName =
context.graspControlSkillProvider},
137 if (prx.executeSkill(in.executorName, params.toAron())
148 Eigen::Matrix4f tcpOffset = Eigen::Matrix4f::Identity();
149 tcpOffset(0, 3) = 90;
150 tcpOffset(1, 3) = 10;
152 Eigen::Matrix4f tcpTargetPoseGlobal =
153 robot->getRobotNodeSet(kinematicChainName)->getTCP()->getGlobalPose() * tcpOffset;
155 skills::tcp_control::arondto::MoveTCPToTargetPoseAcceptedType params;
156 params.robotName = in.parameters.robotName;
157 params.kinematicChainName = kinematicChainName;
158 params.targetPoseGlobal = tcpTargetPoseGlobal;
159 params.orientationalAccuracy = in.parameters.tcpOrientationalAccuracy;
160 params.positionalAccuracy = in.parameters.tcpPositionalAccuracy;
162 SkillProxy prx(
manager, SkillID{
163 .providerId = ProviderID{.providerName =
context.tcpControlSkillProvider},
166 if (prx.executeSkill(in.executorName, params.toAron())
175 skills::joint_control::arondto::MoveJointsToPositionAcceptedType params;
176 params.robotName = in.parameters.robotName;
177 params.jointTargetTolerance = 0.03;
178 params.jointMaxSpeed = 0.75;
179 params.accelerationTime = 500;
180 params.setVelocitiesToZeroAtEnd =
true;
182 for (
const auto& j : robot->getRobotNodeSet(kinematicChainName)->getAllRobotNodes())
184 params.targetJointMap[j->getName()] = 0.0;
187 SkillProxy prx(
manager, SkillID{
188 .providerId = ProviderID{.providerName =
context.jointControlSkillProvider},
191 if (prx.executeSkill(in.executorName, params.toAron())
200 skills::grasp_object::arondto::MovePlatformAfterPutdownAcceptedType params;
201 params.robotName = in.parameters.robotName;
202 params.orientationalAccuracy = in.parameters.platformOrientationalAccuracy;
203 params.positionalAccuracy = in.parameters.platformPositionalAccuracy;
205 SkillProxy prx(
manager, SkillID{
206 .providerId = ProviderID{.providerName =
context.graspControlSkillProvider},
209 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.
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
static SkillDescription Description
static SkillDescription Description
static SkillDescription Description
PutdownObjectSkill(armem::client::MemoryNameSystem &mns, armarx::viz::Client &arviz, TwoArmGraspControlSkillContext &)
grasp_object::arondto::PutdownObjectAcceptedType ArgType
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
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
#define ARMARX_ERROR
The logging level for unexpected behaviour, that must be fixed.
This file is part of ArmarX.
A result struct for th main method of a skill.
armarx::viz::Client arviz
armem::client::MemoryNameSystem & mns