26 using namespace ObjectLocalization;
41 ChannelRefBasePtr objectInstanceChannel;
43 if (in.isObjectInstanceChannelSet() && in.getObjectInstanceChannel())
46 objectInstanceChannel = in.getObjectInstanceChannel();
48 else if (in.isObjectNameSet())
50 std::string objectName = in.getObjectName();
51 if (objectName.find(
"/") != std::string::npos)
65 ARMARX_INFO <<
"Object pose from ObjectPoseStorage is " << pose->output();
67 out.setObjectPose(pose);
68 out.setObjectPosition(
70 out.setObjectOrientation(
82 <<
"' looks like an armarx::ObjectID, "
83 <<
"but no such object was found in ObjectPoseStorage (offering "
84 << objectPoses.size() <<
" objects).";
85 emitNoPoseAvailable();
90 memoryx::ObjectMemoryObserverInterfacePrx objectMemoryObserver =
91 getObjectMemoryObserver();
92 std::vector<ChannelRefBasePtr> objectInstanceList =
93 objectMemoryObserver->getObjectInstancesByClass(objectName);
95 ARMARX_INFO <<
"found " << objectInstanceList.size() <<
" instances for object "
96 << in.getObjectName();
97 if (objectInstanceList.size())
99 objectInstanceChannel = objectInstanceList.front();
104 if (!objectInstanceChannel)
106 emitNoPoseAvailable();
110 ChannelRefPtr channelRef = ChannelRefPtr::dynamicCast(objectInstanceChannel);
111 if (!channelRef || !channelRef->hasDatafield(
"pose"))
113 ARMARX_WARNING <<
"unable to cast channel reference or datafield pose does not exists.";
114 emitNoPoseAvailable();
119 ARMARX_INFO <<
"object pose is " << pose->output();
121 out.setObjectPose(pose);
122 out.setObjectPosition(
new FramedPosition(pose->toEigen(), pose->frame, pose->agent));
123 out.setObjectOrientation(
new FramedOrientation(pose->toEigen(), pose->frame, pose->agent));
124 out.setObjectInstanceChannel(channelRef);