29 #include <RobotAPI/interface/observers/ObserverFilters.h>
34 using namespace PlaceObjectGroup;
49 PlaceObjectGroupStatechartContextBase* context =
50 getContext<PlaceObjectGroupStatechartContextBase>();
51 local.setStartTimeRef(ChannelRefPtr::dynamicCast(
52 context->getSystemObserver()->startTimer(
"MoveToPlacePoseStartTime")));
55 local.setForceDatafield(
56 DatafieldRefPtr::dynamicCast(getForceTorqueObserver()->createNulledDatafield(
57 getForceTorqueObserver()->getForceDatafield(in.getForceSensorDatafieldName()))));
60 Literal forceCheck(local.getForceDatafield()->getDataFieldIdentifier(),
61 checks::magnitudelarger,
62 {(float)in.getForceThreshold()});
64 installConditionForHighForceDetected(forceCheck);
65 context->getTCPControlUnit()->request();
71 while (!isRunningTaskStopped())
75 <<
" Threshold: " << in.getForceThreshold();
96 getForceTorqueObserver()->removeFilteredDatafield(local.getForceDatafield());
97 PlaceObjectGroupStatechartContextBase* context =
98 getContext<PlaceObjectGroupStatechartContextBase>();
99 context->getTCPControlUnit()->release();
100 context->getSystemObserver()->removeTimer(local.getStartTimeRef());
102 auto retreatPose = in.getRetreatPose();
103 retreatPose->changeToGlobal(getRobot());
104 retreatPose->position->z += 100;
105 out.setRetreatPose(retreatPose);
108 context->getWorkingMemory()->getObjectInstancesSegment()->getObjectInstancesByClass(
109 in.getObjectClassName());
111 if (instances.size() > 0)
113 memoryx::ObjectInstanceBasePtr obj = instances.front();
118 getWorkingMemory()->getObjectInstancesSegment()->setNewMotionModel(obj->getId(),
120 auto pose = in.getObjectTargetPose();
121 pose->changeFrame(context->getRobot(), context->getRobot()->getRootNode()->getName());
122 getWorkingMemory()->getObjectInstancesSegment()->setObjectPose(
126 context->getRobotStateComponent()->getRobotSnapshot(
127 context->getRobot()->getName())));
128 ARMARX_INFO <<
"Setting object in WM to pose: " << *in.getObjectTargetPose();
133 <<
"No object instance with name '" << in.getObjectClassName()
134 <<
"' found! Could not change working memory position and motion model of object.";