30 using namespace HapticsGroup;
59 for (
size_t i = 0; i < jointNames->getSize(); i++)
62 rsContext->
getDatafieldRef(tempChannelRef, jointNames->getVariant(i)->getString()));
67 NameControlModeMap controlModes;
71 if (jointNames->getSize() ==
jointAngles->getSize())
73 for (
int j = 0; j < jointNames->getSize(); j++)
75 jointNamesAndAngles[jointNames->getVariant(j)->getString()] =
77 jointNamesAndTorques[jointNames->getVariant(j)->getString()] =
79 controlModes[jointNames->getVariant(j)->getString()] = eTorqueControl;
81 currentJointNames.
addVariant(jointNames->getVariant(j)->getString());
86 throw LocalException(
"stateCheckObjectInHand: List lengths do not match!");
93 ARMARX_LOG << eINFO <<
"Installing timeoutGrasp condition";
94 float timeOutCheckObjectInHand = getInput<float>(
"timeoOutCheckObjectInHand");
96 setTimeoutEvent(timeOutCheckObjectInHand, createEvent<EvCheckObjectInHandTimeout>());
97 setLocal(
"TempJointAngles", currentJointAngles);
98 setLocal(
"TempJointNames", currentJointNames);
108 getLocal<SingleTypeVariantList>(
"jointNamesAndAngles");
114 float threshhold = 0.0;
116 for (
size_t i = 0; i < jointNames->getSize(); i++)
119 rsContext->
getDatafieldRef(tempChannelRef, jointNames->getVariant(i)->getString()));
122 float meanSquaredJointAnglesDiff = 0.0;
124 for (
int j = 0; j < jointNames->getSize(); j++)
128 meanSquaredJointAnglesDiff += jointAngleDiff * jointAngleDiff;
131 meanSquaredJointAnglesDiff =
sqrt(meanSquaredJointAnglesDiff);
133 if (meanSquaredJointAnglesDiff < threshhold)
158 return "CheckObjectInHand";