ObjectPoseClient.cpp
Go to the documentation of this file.
1#include "ObjectPoseClient.h"
2
3#include <optional>
4
6
7namespace armarx::objpose
8{
9
13
15 const ObjectFinder& finder) :
16 objectFinder(finder)
17 {
18 this->connect(objectPoseStorage);
19 }
20
21 void
26
27 bool
29 {
30 return bool(objectPoseStorage);
31 }
32
35 {
36 if (not objectPoseStorage)
37 {
38 ARMARX_WARNING << "No object pose storage.";
39 return {};
40 }
41 return fromIce(objectPoseStorage->getObjectPoses());
42 }
43
46 {
47 ObjectPoseMap map;
48 for (auto& pose : fetchObjectPoses())
49 {
50 map.emplace(pose.objectID, std::move(pose));
51 }
52 return map;
53 }
54
55 std::optional<ObjectPose>
57 {
58 const auto objectPoses = fetchObjectPoses();
59 const auto* object = findObjectPoseByID(objectPoses, objectID);
60
61 if (object != nullptr)
62 {
63 return *object;
64 }
65
66 return std::nullopt;
67 }
68
69 std::optional<ObjectPose>
71 const std::string& providerName) const
72 {
73 const auto objectPoses = fetchObjectPosesFromProvider(providerName);
74 const auto* object = findObjectPoseByID(objectPoses, objectID);
75
76 if (object != nullptr)
77 {
78 return *object;
79 }
80
81 return std::nullopt;
82 }
83
85 ObjectPoseClient::fetchObjectPosesFromProvider(const std::string& providerName) const
86 {
88 {
89 ARMARX_WARNING << "No object pose storage.";
90 return {};
91 }
92 return fromIce(objectPoseStorage->getObjectPosesByProvider(providerName));
93 }
94
100
101 const ObjectFinder&
103 {
104 return objectFinder;
105 }
106
107} // namespace armarx::objpose
Used to find objects in the ArmarX objects repository [1] (formerly [2]).
A known object ID of the form "Dataset/ClassName" or "Dataset/ClassName/InstanceName".
Definition ObjectID.h:11
const ObjectFinder & getObjectFinder() const
Get the internal object finder.
void connect(const ObjectPoseStorageInterfacePrx &objectPoseStorage)
Connect to the given object pose storage.
ObjectPoseSeq fetchObjectPoses() const
Fetch all known object poses.
std::optional< ObjectPose > fetchObjectPose(const ObjectID &objectID) const
Fetch the pose of a single object.
bool isConnected() const
Indicate whether this client is connected to an object pose storage.
ObjectPoseClient()
Construct a disconnected client.
ObjectPoseSeq fetchObjectPosesFromProvider(const std::string &providerName) const
Fetch object poses from a specific provider.
ObjectPoseMap fetchObjectPosesAsMap() const
Fetch all known object poses.
std::optional< ObjectPose > fetchObjectPoseFromProvider(const ObjectID &objectID, const std::string &providerName) const
Fetch the pose of a single object and a single provider.
ObjectPoseStorageInterfacePrx objectPoseStorage
const ObjectPoseStorageInterfacePrx & getObjectPoseStorage() const
Get the object pose storage's proxy.
#define ARMARX_WARNING
The logging level for unexpected behaviour, but not a serious problem.
Definition Logging.h:193
std::map< ObjectID, ObjectPose > ObjectPoseMap
ObjectPose * findObjectPoseByID(ObjectPoseSeq &objectPoses, const ObjectID &id)
Find an object pose by the object ID.
std::vector< ObjectPose > ObjectPoseSeq
void fromIce(const Box &box, simox::OrientedBox< float > &oobb)
::IceInternal::ProxyHandle<::IceProxy::armarx::objpose::ObjectPoseStorageInterface > ObjectPoseStorageInterfacePrx