diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp index 90ebecdecbee6d9e84aa86fd1dd60fbd38d76082..c554afd52d27cd534b4015eb2c5114ddd8955181 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp @@ -137,8 +137,8 @@ namespace armarx::armem::articulated_object const std::string& instanceName) { ArticulatedObject obj{.description = description, - .instance = "", // TODO(fabian.reister): - .config = {}, // will be populated by synchronize + .instance = instanceName, + .config = {}, // will be populated by `synchronize()` .timestamp = timestamp}; synchronize(obj, timestamp); @@ -149,7 +149,9 @@ namespace armarx::armem::articulated_object void Reader::synchronize(ArticulatedObject& obj, const armem::Time& timestamp) { - auto state = queryState(obj.instance, timestamp); + ARMARX_CHECK_NOT_EMPTY(obj.instance) << "An instance name must be provided!"; + + auto state = queryState(obj.name(), timestamp); if (not state) /* c++20 [[unlikely]] */ { @@ -201,6 +203,8 @@ namespace armarx::armem::articulated_object std::optional<robot::RobotDescription> Reader::queryDescription(const std::string& name, const armem::Time& timestamp) { + // FIXME: why is `name` unused? + // Query all entities from provider. armem::client::query::Builder qb; diff --git a/source/RobotAPI/libraries/armem_robot/types.h b/source/RobotAPI/libraries/armem_robot/types.h index df39df99e945e4a1ef38c38db6f9428404a35bed..92f16199a760a2a11475b21fcd63a570dbedbedf 100644 --- a/source/RobotAPI/libraries/armem_robot/types.h +++ b/source/RobotAPI/libraries/armem_robot/types.h @@ -8,6 +8,7 @@ #include <IceUtil/Time.h> +#include "ArmarXCore/core/exceptions/local/ExpressionException.h" #include "RobotAPI/libraries/ArmarXObjects/ObjectID.h" #include <ArmarXCore/core/PackagePath.h> @@ -41,6 +42,14 @@ namespace armarx::armem::robot RobotState config; IceUtil::Time timestamp; + + std::string name() const + { + ARMARX_CHECK_NOT_EMPTY(description.name) << "The robot name must be set!"; + ARMARX_CHECK_NOT_EMPTY(instance) << "The robot instance name must be provided!"; + + return description.name + "/" + instance; + } }; using Robots = std::vector<Robot>; diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp index a364df3f70d1231c3f0ed8c1b2a1510e4d099679..5ea6d2cd90c0412c2b9243262ffb3166f5ce9f13 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp @@ -113,7 +113,7 @@ namespace armarx::armem::robot_state .snapshots().latest(); // TODO(fabian.reister): atTime(timestamp); // clang-format on - ARMARX_INFO << "Lookup query in reader"; + ARMARX_DEBUG << "Lookup query in reader"; if (not memoryReader) { @@ -125,7 +125,7 @@ namespace armarx::armem::robot_state { const armem::client::QueryResult qResult = memoryReader.query(qb.buildQueryInput()); - ARMARX_INFO << "Lookup result in reader: " << qResult; + ARMARX_DEBUG << "Lookup result in reader: " << qResult; if (not qResult.success) /* c++20 [[unlikely]] */ {