From fc020f5716249525b922a680b95858fb9f1459e6 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Thu, 10 Mar 2022 09:06:45 +0100
Subject: [PATCH] ObjectPoseClient: fetchObjectPose

---
 .../ArmarXObjects/ObjectPoseClient.cpp          | 17 ++++++++++++++++-
 .../libraries/ArmarXObjects/ObjectPoseClient.h  |  5 ++++-
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/source/RobotAPI/libraries/ArmarXObjects/ObjectPoseClient.cpp b/source/RobotAPI/libraries/ArmarXObjects/ObjectPoseClient.cpp
index 8710af33c..a707e9c3c 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/ObjectPoseClient.cpp
+++ b/source/RobotAPI/libraries/ArmarXObjects/ObjectPoseClient.cpp
@@ -1,4 +1,6 @@
 #include "ObjectPoseClient.h"
+#include <optional>
+#include "RobotAPI/libraries/ArmarXObjects/ObjectPose.h"
 
 
 namespace armarx::objpose
@@ -54,7 +56,21 @@ namespace armarx::objpose
         }
         return map;
     }
+
+    
+    std::optional<ObjectPose> ObjectPoseClient::fetchObjectPose(const ObjectID& objectID) 
+    {
+        const auto *object = findObjectPoseByID(fetchObjectPoses(), objectID);
+
+        if(object != nullptr)
+        {
+            return *object;
+        }
+
+        return std::nullopt;
+    }
     
+
     ObjectPoseSeq ObjectPoseClient::fetchObjectPosesFromProvider(const std::string& providerName) 
     {
         if (!objectPoseStorage)
@@ -66,7 +82,6 @@ namespace armarx::objpose
     }
 
 
-
     const ObjectPoseStorageInterfacePrx&
     ObjectPoseClient::getObjectPoseStorage() const
     {
diff --git a/source/RobotAPI/libraries/ArmarXObjects/ObjectPoseClient.h b/source/RobotAPI/libraries/ArmarXObjects/ObjectPoseClient.h
index 33f9a6dd7..9bae3131e 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/ObjectPoseClient.h
+++ b/source/RobotAPI/libraries/ArmarXObjects/ObjectPoseClient.h
@@ -1,5 +1,6 @@
 #pragma once
 
+#include "RobotAPI/libraries/ArmarXObjects/ObjectID.h"
 #include <RobotAPI/interface/objectpose/ObjectPoseStorageInterface.h>
 #include <RobotAPI/libraries/ArmarXObjects/ObjectFinder.h>
 #include <RobotAPI/libraries/ArmarXObjects/ObjectPose.h>
@@ -31,10 +32,12 @@ namespace armarx::objpose
         ObjectPoseMap
         fetchObjectPosesAsMap();
 
+        std::optional<ObjectPose>
+        fetchObjectPose(const ObjectID& objectID);
+
         ObjectPoseSeq
         fetchObjectPosesFromProvider(const std::string& providerName);
 
-
         const ObjectPoseStorageInterfacePrx&
         getObjectPoseStorage() const;
 
-- 
GitLab