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