96 const Ice::Current&
c)
98 GeneratedGraspList result;
102 ObjectInstancePtr::dynamicCast(objectInstances->getEntityById(objectInstanceEntityId));
106 objectClasses->getEntityByName(instance->getMostProbableClass()));
108 <<
"no object class with name '" << instance->getMostProbableClass() <<
"' found ";
112 VirtualRobot::ManipulationObjectPtr mo = simoxWrapper->getManipulationObject();
116 auto objectFramedPose = instance->getPose();
117 ARMARX_INFO <<
"object Pose: " << objectFramedPose->output();
118 if (instance->hasLocalizationTimestamp())
122 robot, rsc, instance->getLocalizationTimestamp().toMicroSeconds());
123 ARMARX_INFO <<
"object has timestamp " << instance->getLocalizationTimestamp().toDateTime()
124 <<
" and frame " << objectFramedPose->frame <<
" with robot at "
125 << robot->getGlobalPose();
126 objectFramedPose->changeToGlobal(robot);
131 objectFramedPose->changeToGlobal(rsc->getSynchronizedRobot());
133 ARMARX_INFO <<
"global object Pose: " << objectFramedPose->output();
136 Eigen::Matrix4f globalObjectPose = objectFramedPose->toEigen();
139 debugDrawerPrx->setPoseVisu(
"GeneratedGrasps",
"ObjectPose", objectFramedPose);
148 auto tcpGcpMapping = getTcpGcpMapping();
152 for (
const VirtualRobot::GraspSetPtr& gs : mo->getAllGraspSets())
154 if (gs->getRobotType() != robotType)
158 for (
const VirtualRobot::GraspPtr& g : gs->getGrasps())
160 ARMARX_INFO <<
"Found Grasp: " << g->getName() <<
" for eef: " << g->getEefName();
161 if (!
Contains(g->getName(), graspNameInfix,
true))
163 ARMARX_INFO <<
"grasp name does not contain infix " << graspNameInfix
167 if (!robot->hasEndEffector(g->getEefName()))
170 <<
" does not exist in this robot - skipping grasps";
173 auto globalTcpPose = g->getTcpPoseGlobal(globalObjectPose);
178 tcpGcpMapping.at(robot->getEndEffector(g->getEefName())->getTcp()->getName());
179 auto gcpNode = robot->getRobotNode(gcpName);
181 Eigen::Vector3f preposeOffsetGCPFrame = Eigen::Vector3f::Zero();
183 Eigen::Vector3f preposeOffsetTCPFrame =
184 robot->getEndEffector(g->getEefName())
186 ->transformTo(gcpNode, preposeOffsetGCPFrame);
187 Eigen::Matrix4f preposeOffsetGlobal = globalTcpPose;
188 preposeOffsetGlobal.block<3, 1>(0, 3) +=
189 globalTcpPose.block<3, 3>(0, 0) * preposeOffsetTCPFrame;
190 ARMARX_INFO <<
" before up offset: " << preposeOffsetGlobal;
193 <<
VAROUT(preposeOffsetTCPFrame) <<
"\n"
194 <<
VAROUT(preposeOffsetGlobal) <<
VAROUT(globalTcpPose);
198 result.push_back({1.f, g->getEefName(), g->getName(), framedTcpPose, framedTcpPrepose});
206 ARMARX_WARNING <<
"No grasps defined for object class '" << instance->getMostProbableClass()
209 ARMARX_INFO <<
"Found " << result.size() <<
" grasps";