diff --git a/source/RobotAPI/libraries/ArmarXObjects/ObjectPoseClient.cpp b/source/RobotAPI/libraries/ArmarXObjects/ObjectPoseClient.cpp index 8710af33c07522713bd833e53c7f1e982754e3ec..a707e9c3cdbce5c62199346a740e85c64005a693 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 33f9a6dd7b40fd933a451d50d093afc937a08635..9bae3131ec96f91e3ad4e7df89d0ed9a8e11db12 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;