27 #include <VirtualRobot/Grasping/Grasp.h>
30 using namespace FindAndGraspObjectGroup;
33 VisualServoWrapper::SubClassRegistry
46 setOutput(
"objectInstanceChannel", getInput<ChannelRef>(
"objectInstanceChannel"));
47 setOutput(
"markerInstanceChannel", getInput<ChannelRef>(
"markerInstanceChannel"));
53 ChannelRefPtr objectInstanceChannel = getInput<ChannelRef>(
"objectInstanceChannel");
55 float minRecognitionLikelihood = getInput<float>(
"minObjectCertainty");
57 Literal objectUpdated(*objectInstanceChannel->getDataFieldIdentifier(
"existenceCertainty"),
64 Literal objectLost(*objectInstanceChannel->getDataFieldIdentifier(
"existenceCertainty"),
93 std::string objectFrame = objectPosition->frame;
94 objectGlobalPose.block(0, 3, 3, 1) = objectPosition->toEigen();
95 objectGlobalPose.block(0, 0, 3, 3) =
98 if (!objectFrame.empty())
103 std::string targetFrame = getInput<std::string>(
"referenceFrame");
104 VirtualRobot::RobotNodePtr targetNode = localRobot->getRobotNode(targetFrame);
108 ARMARX_ERROR <<
"Target frame not part of robot" << std::endl;
111 ARMARX_DEBUG <<
"robot global pose: " << localRobot->getGlobalPose() << std::endl;
112 ARMARX_DEBUG <<
"target frame global pose: " << targetNode->getGlobalPose() << std::endl;
115 Eigen::Matrix4f objectFramedPose = targetNode->getGlobalPose().inverse() * objectGlobalPose;
117 ARMARX_DEBUG <<
"object global pose: " << objectGlobalPose << std::endl;
118 ARMARX_DEBUG <<
"object framed pose: " << objectFramedPose << std::endl;
121 objectFramedPose * context->
graspDefinition->getTransformation().inverse();
123 ARMARX_DEBUG <<
"grasp framed pose: " << graspFramedPose << std::endl;
135 Eigen::Vector3f viewTarget;
136 viewTarget << targetFramedPose->position->x, targetFramedPose->position->y,
137 targetFramedPose->position->z;
142 viewTargetPositionPtr);
165 return "VisualServoWrapper";