32 using namespace CoupledInteractionGroup;
35 CalculateLandmarkPose::SubClassRegistry
52 getContext<CoupledInteractionGroupStatechartContext>();
56 std::string sceneName = in.getSceneName();
59 if (!graphSegment->hasScene(sceneName))
62 out.setLandmarkPose(landmarkVector);
63 emitEvLandmarkPoseCalculationFailed();
68 std::string landmark = in.getLandmarkName();
69 auto landmarkNode = graphSegment->getNodeFromSceneByName(sceneName, landmark);
71 if (!graphSegment->hasNodeWithName(sceneName, landmark))
73 ARMARX_WARNING <<
"Target landmark '" << landmark <<
"' doesn't exist in graph "
74 << sceneName <<
flush;
75 auto nodes = graphSegment->getNodesByScene(sceneName);
77 for (
auto& node : nodes)
82 out.setLandmarkPose(landmarkVector);
83 emitEvLandmarkPoseCalculationFailed();
87 if (landmark != landmarkNode->getName())
89 ARMARX_IMPORTANT <<
"Resolved " << landmark <<
" to " << landmarkNode->getName();
92 FramedPosePtr landmarkPose = FramedPosePtr::dynamicCast(landmarkNode->getPose());
96 Eigen::Vector3f pose = landmarkPose->getPosition()->toEigen();
98 out.setLandmarkPose(landmarkVector);
99 emitEvLandmarkPoseCalculated();
114 return "CalculateLandmarkPose";