From a1acb99bbbd6ebb340b61f46b287e4a387673d07 Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Tue, 23 Jun 2020 17:19:03 +0200 Subject: [PATCH] Find and store dataset if none is given. --- .../ObjectPoseObserver/ObjectPoseObserver.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp b/source/RobotAPI/components/ObjectPoseObserver/ObjectPoseObserver.cpp index f7d2eee97..9343a88d5 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); -- GitLab