diff --git a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp index f7d2eee97b3ec601420ce9cf010af23817814dd7..9343a88d5589a19d832eadfdca2c4125494e226d 100644 --- a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp +++ b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp @@ -152,10 +152,18 @@ namespace armarx robotNode->setJointValue(value + calibration.offset); } - for (const auto& provided : providedPoses) + for (const objpose::data::ProvidedObjectPose& provided : providedPoses) { objpose::ObjectPose& pose = objectPoses.emplace_back(); pose.fromProvidedPose(provided, robot); + if (pose.objectID.dataset().empty()) + { + // Try to find the data set. (It might be good to cache this.) + if (std::optional<ObjectInfo> objectInfo = objectFinder.findObject(pose.objectID)) + { + pose.objectID = { objectInfo->dataset(), pose.objectID.className(), pose.objectID.instanceName() }; + } + } if (!(provided.localOOBB.position && provided.localOOBB.orientation && provided.localOOBB.extents)) { pose.localOOBB = getObjectOOBB(pose.objectID);