27 #include "GraspObjectGroupStatechartContext.generated.h"
30 using namespace GraspObjectGroup;
45 GraspObjectGroupStatechartContext* context = getContext<GraspObjectGroupStatechartContext>();
46 float maxForceMagnitude = 10.0;
48 context->getRobot()->getRobotNode(in.getLeftHandName())->getPoseInRootFrame();
50 context->getRobot()->getRobotNode(in.getRightHandName())->getPoseInRootFrame();
52 if (!in.getLeftHandForceChecked() && !in.getLeftHandClosed())
56 context->getForceTorqueObserver()->getForceDatafield(in.getLeftHandName()));
60 Eigen::Vector3f leftHandForces = curForceLeft->toEigen();
63 if (leftHandForces.norm() > maxForceMagnitude && in.getRightHandClosed())
65 out.setLeftTcpTargetPoseUpdated(
FramedPose(leftTcpPoseBase,
"Armar3_Base",
"Armar3"));
66 out.setRightTcpTargetPoseUpdated(
FramedPose(rightTcpPoseBase,
"Armar3_Base",
"Armar3"));
67 emitBothHandForceDetected();
69 else if (leftHandForces.norm() > maxForceMagnitude)
71 out.setLeftTcpTargetPoseUpdated(
FramedPose(leftTcpPoseBase,
"Armar3_Base",
"Armar3"));
72 out.setRightTcpTargetPoseUpdated(in.getRightTcpTargetPose());
73 emitLeftHandForceDetected();
77 out.setLeftTcpTargetPoseUpdated(in.getLeftTcpTargetPose());
78 out.setRightTcpTargetPoseUpdated(in.getRightTcpTargetPose());
79 emitNoHandForcesDetected();
82 out.setLeftHandForceChecked(
true);
83 out.setRightHandForceChecked(
false);
86 else if (!in.getRightHandForceChecked() && !in.getRightHandClosed())
90 context->getForceTorqueObserver()->getForceDatafield(in.getRightHandName()));
95 Eigen::Vector3f rightHandForces = curForceRight->toEigen();
98 if (rightHandForces.norm() > maxForceMagnitude && in.getLeftHandClosed())
100 out.setRightTcpTargetPoseUpdated(
FramedPose(rightTcpPoseBase,
"Armar3_Base",
"Armar3"));
101 out.setLeftTcpTargetPoseUpdated(
FramedPose(leftTcpPoseBase,
"Armar3_Base",
"Armar3"));
102 emitBothHandForceDetected();
104 else if (rightHandForces.norm() > maxForceMagnitude)
106 out.setRightTcpTargetPoseUpdated(
FramedPose(rightTcpPoseBase,
"Armar3_Base",
"Armar3"));
107 out.setLeftTcpTargetPoseUpdated(in.getLeftTcpTargetPose());
108 emitRightHandForceDetected();
112 out.setRightTcpTargetPoseUpdated(in.getRightTcpTargetPose());
113 out.setLeftTcpTargetPoseUpdated(in.getLeftTcpTargetPose());
114 emitNoHandForcesDetected();
117 out.setLeftHandForceChecked(
false);
118 out.setRightHandForceChecked(
true);
123 out.setLeftHandForceChecked(
false);
124 out.setRightHandForceChecked(
false);