From af2f811c784be575a9c2595d738caf7ca6b841da Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Thu, 10 Jun 2021 11:35:57 +0200 Subject: [PATCH] Update client reader/writers --- .../ArticulatedObjectLocalizerExample.cpp | 4 +- .../ExampleMemoryClient.cpp | 3 +- .../VirtualRobotReaderExampleClient.cpp | 2 +- .../RobotAPI/libraries/armem/CMakeLists.txt | 1 + source/RobotAPI/libraries/armem/client.h | 2 + .../RobotAPI/libraries/armem/client/query.h | 6 +++ .../client/articulated_object/Reader.cpp | 33 ++++++++-------- .../client/articulated_object/Reader.h | 15 +++++--- .../client/articulated_object/Writer.cpp | 34 +++++++++-------- .../client/articulated_object/Writer.h | 16 ++++---- .../client/attachment/Reader.cpp | 38 ++++++++++--------- .../armem_objects/client/attachment/Reader.h | 16 ++++---- .../client/attachment/Writer.cpp | 33 ++++++++-------- .../armem_objects/client/attachment/Writer.h | 19 +++++----- .../armem_robot_mapping/MappingDataReader.cpp | 25 ++++++------ .../armem_robot_mapping/MappingDataReader.h | 6 +-- .../armem_robot_mapping/MappingDataWriter.cpp | 23 +++++------ .../armem_robot_mapping/MappingDataWriter.h | 10 +++-- .../client/common/RobotReader.cpp | 36 +++++++++--------- .../client/common/RobotReader.h | 18 ++++----- .../client/common/VirtualRobotReader.cpp | 6 +-- .../client/common/VirtualRobotReader.h | 5 ++- .../client/localization/TransformReader.cpp | 18 +++++---- .../client/localization/TransformReader.h | 9 ++--- .../client/localization/TransformWriter.cpp | 20 +++++----- .../client/localization/TransformWriter.h | 11 +++--- 26 files changed, 224 insertions(+), 185 deletions(-) create mode 100644 source/RobotAPI/libraries/armem/client/query.h diff --git a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp index d1e48cdea..a4525305d 100644 --- a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp +++ b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp @@ -50,8 +50,8 @@ namespace armarx::articulated_object { ArticulatedObjectLocalizerExample::ArticulatedObjectLocalizerExample() : - articulatedObjectWriter(new ::armarx::armem::articulated_object::Writer(*this)), - articulatedObjectReader(new ::armarx::armem::articulated_object::Reader(*this)) {} + articulatedObjectWriter(new ::armarx::armem::articulated_object::Writer(memoryNameSystem)), + articulatedObjectReader(new ::armarx::armem::articulated_object::Reader(memoryNameSystem)) {} armarx::PropertyDefinitionsPtr ArticulatedObjectLocalizerExample::createPropertyDefinitions() { diff --git a/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp b/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp index 87a2b7030..76e8cff37 100644 --- a/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp +++ b/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp @@ -76,7 +76,8 @@ namespace armarx ARMARX_IMPORTANT << "Waiting for memory '" << p.usedMemoryName << "' ..."; try { - armem::client::ComponentPluginUser::setMemoryServer(memoryNameSystem.useServer(p.usedMemoryName)); + memoryReader = memoryNameSystem.useReader(p.usedMemoryName); + memoryWriter = memoryNameSystem.useWriter(p.usedMemoryName); } catch (const armem::error::CouldNotResolveMemoryServer& e) { diff --git a/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp b/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp index 85ca85f48..6650e5737 100644 --- a/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp +++ b/source/RobotAPI/components/armem/client/VirtualRobotReaderExampleClient/VirtualRobotReaderExampleClient.cpp @@ -31,7 +31,7 @@ namespace armarx::robot_state { VirtualRobotReaderExampleClient::VirtualRobotReaderExampleClient() : - virtualRobotReader(*this) {} + virtualRobotReader(this->memoryNameSystem) {} armarx::PropertyDefinitionsPtr VirtualRobotReaderExampleClient::createPropertyDefinitions() { diff --git a/source/RobotAPI/libraries/armem/CMakeLists.txt b/source/RobotAPI/libraries/armem/CMakeLists.txt index 22399191b..97695cb63 100644 --- a/source/RobotAPI/libraries/armem/CMakeLists.txt +++ b/source/RobotAPI/libraries/armem/CMakeLists.txt @@ -168,6 +168,7 @@ set(LIB_HEADERS client/Writer.h client/WriterComponentPlugin.h + client/query.h client/Query.h client/query/Builder.h client/query/query_fns.h diff --git a/source/RobotAPI/libraries/armem/client.h b/source/RobotAPI/libraries/armem/client.h index baf0ca232..834d62ab4 100644 --- a/source/RobotAPI/libraries/armem/client.h +++ b/source/RobotAPI/libraries/armem/client.h @@ -1,6 +1,8 @@ #pragma once #include "client/ComponentPlugin.h" +#include "client/MemoryNameSystem.h" +#include "client/MemoryNameSystemComponentPlugin.h" #include "client/Query.h" #include "client/query/Builder.h" #include "client/query/query_fns.h" diff --git a/source/RobotAPI/libraries/armem/client/query.h b/source/RobotAPI/libraries/armem/client/query.h new file mode 100644 index 000000000..99606089e --- /dev/null +++ b/source/RobotAPI/libraries/armem/client/query.h @@ -0,0 +1,6 @@ +#pragma once + +#include "Query.h" +#include "query/Builder.h" +#include "query/query_fns.h" +#include "query/selectors.h" 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 d11b74213..1457fc466 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.cpp @@ -3,14 +3,15 @@ #include <mutex> #include <optional> -#include "ArmarXCore/core/logging/Logging.h" +#include <ArmarXCore/core/logging/Logging.h> #include <ArmarXCore/core/PackagePath.h> -#include "RobotAPI/libraries/armem/client/query/Builder.h" -#include "RobotAPI/libraries/armem/core/Time.h" -#include "RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h" -#include "RobotAPI/libraries/armem_robot/aron_conversions.h" -#include "RobotAPI/libraries/armem_robot/robot_conversions.h" +#include <RobotAPI/libraries/armem/client/query/Builder.h> +#include <RobotAPI/libraries/armem/core/error.h> +#include <RobotAPI/libraries/armem/core/Time.h> +#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> +#include <RobotAPI/libraries/armem_robot/aron_conversions.h> +#include <RobotAPI/libraries/armem_robot/robot_conversions.h> #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h> namespace fs = ::std::filesystem; @@ -18,7 +19,9 @@ namespace fs = ::std::filesystem; namespace armarx::armem::articulated_object { - Reader::Reader(armem::ClientReaderComponentPluginUser& component) : component(component) {} + Reader::Reader(const armem::client::MemoryNameSystem& memoryNameSystem) : + memoryNameSystem(memoryNameSystem) + {} void Reader::registerPropertyDefinitions(armarx::PropertyDefinitionsPtr& def) { @@ -41,17 +44,17 @@ namespace armarx::armem::articulated_object { // Wait for the memory to become available and add it as dependency. ARMARX_IMPORTANT << "Reader: Waiting for memory '" << properties.memoryName << "' ..."; - auto result = component.useMemory(properties.memoryName); - if (not result.success) + try { - ARMARX_ERROR << result.errorMessage; + memoryReader = memoryNameSystem.useReader(properties.memoryName); + ARMARX_IMPORTANT << "Reader: Connected to memory '" << properties.memoryName << "'"; + } + catch (const armem::error::CouldNotResolveMemoryServer& e) + { + ARMARX_ERROR << e.what(); return; } - ARMARX_IMPORTANT << "Reader: Connected to memory '" << properties.memoryName; - - memoryReader.setReadingMemory(result.proxy); - armem::MemoryID id = armem::MemoryID(); id.memoryName = properties.memoryName; id.coreSegmentName = properties.coreClassSegmentName; @@ -321,4 +324,4 @@ namespace armarx::armem::articulated_object return descriptions; } -} // namespace armarx::armem::articulated_object \ No newline at end of file +} // namespace armarx::armem::articulated_object diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h index 21a4591cd..b4c908a36 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Reader.h @@ -24,18 +24,21 @@ #include <mutex> #include <optional> -#include "RobotAPI/libraries/armem/client.h" -#include "RobotAPI/libraries/armem/client/Reader.h" +#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h> + +#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h> +#include <RobotAPI/libraries/armem/client/Reader.h> #include "interfaces.h" + namespace armarx::armem::articulated_object { class Reader: virtual public ReaderInterface { public: - Reader(armem::ClientReaderComponentPluginUser& component); + Reader(const armem::client::MemoryNameSystem& memoryNameSystem); virtual ~Reader() = default; void registerPropertyDefinitions(armarx::PropertyDefinitionsPtr& def); @@ -72,11 +75,11 @@ namespace armarx::armem::articulated_object const std::string propertyPrefix = "mem.obj.articulated."; + armem::client::MemoryNameSystem memoryNameSystem; + armem::client::Reader memoryReader; std::mutex memoryWriterMutex; - - armem::ClientReaderComponentPluginUser& component; }; -} // namespace armarx::armem::articulated_object \ No newline at end of file +} // namespace armarx::armem::articulated_object diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp index 9062747de..d74c8d865 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp @@ -5,20 +5,24 @@ #include <mutex> #include <optional> -#include "ArmarXCore/core/logging/Logging.h" +#include <ArmarXCore/core/logging/Logging.h> -#include "RobotAPI/libraries/armem/core/MemoryID.h" -#include "RobotAPI/libraries/armem_objects/aron_conversions.h" -#include "RobotAPI/libraries/armem_robot/aron_conversions.h" +#include <RobotAPI/libraries/armem/core/MemoryID.h> +#include <RobotAPI/libraries/armem/core/error.h> +#include <RobotAPI/libraries/armem/client/query.h> +#include <RobotAPI/libraries/armem_objects/aron_conversions.h> +#include <RobotAPI/libraries/armem_robot/aron_conversions.h> #include <RobotAPI/libraries/armem_robot/aron/RobotDescription.aron.generated.h> #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h> #include <RobotAPI/libraries/armem/core/aron_conversions.h> -#include "RobotAPI/libraries/armem_robot/robot_conversions.h" +#include <RobotAPI/libraries/armem_robot/robot_conversions.h> namespace armarx::armem::articulated_object { - Writer::Writer(armem::ClientComponentPluginUser& component): component(component) {} + Writer::Writer(const armem::client::MemoryNameSystem& memoryNameSystem) : + memoryNameSystem(memoryNameSystem) + {} void Writer::registerPropertyDefinitions(armarx::PropertyDefinitionsPtr& def) { @@ -41,18 +45,18 @@ namespace armarx::armem::articulated_object { // Wait for the memory to become available and add it as dependency. ARMARX_IMPORTANT << "Writer: Waiting for memory '" << properties.memoryName << "' ..."; - auto result = component.useMemory(properties.memoryName); - if (not result.success) + try + { + memoryWriter = memoryNameSystem.useWriter(properties.memoryName); + memoryReader = memoryNameSystem.useReader(properties.memoryName); + ARMARX_IMPORTANT << "Writer: Connected to memory '" << properties.memoryName << "'"; + } + catch (const armem::error::CouldNotResolveMemoryServer& e) { - ARMARX_ERROR << result.errorMessage; + ARMARX_ERROR << e.what(); return; } - ARMARX_IMPORTANT << "Writer: Connected to memory '" << properties.memoryName; - - memoryWriter.setWritingMemory(result.proxy); - memoryReader.setReadingMemory(result.proxy); - const auto resultCoreClassSegment = memoryWriter.addSegment(properties.coreClassSegmentName, properties.providerName); const auto resultCoreInstanceSegmentName = @@ -323,4 +327,4 @@ namespace armarx::armem::articulated_object } -} // namespace armarx::armem::articulated_object \ No newline at end of file +} // namespace armarx::armem::articulated_object diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h index f2031dd40..d9ce15069 100644 --- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h +++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.h @@ -23,9 +23,11 @@ #include <mutex> -#include "RobotAPI/libraries/armem/client/Reader.h" -#include "RobotAPI/libraries/armem/client/Writer.h" -#include "RobotAPI/libraries/armem/client.h" +#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h> + +#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h> +#include <RobotAPI/libraries/armem/client/Reader.h> +#include <RobotAPI/libraries/armem/client/Writer.h> #include "interfaces.h" @@ -37,7 +39,7 @@ namespace armarx::armem::articulated_object virtual public WriterInterface { public: - Writer(armem::ClientComponentPluginUser& component); + Writer(const armem::client::MemoryNameSystem& memoryNameSystem); virtual ~Writer() = default; @@ -77,6 +79,8 @@ namespace armarx::armem::articulated_object const std::string propertyPrefix = "mem.obj.articulated."; + armem::client::MemoryNameSystem memoryNameSystem; + armem::client::Writer memoryWriter; std::mutex memoryWriterMutex; @@ -85,9 +89,7 @@ namespace armarx::armem::articulated_object // key: name of object: RobotDescription::name std::unordered_map<std::string, MemoryID> knownObjects; - - armem::ClientComponentPluginUser& component; }; -} // namespace armarx::armem::articulated_object \ No newline at end of file +} // namespace armarx::armem::articulated_object diff --git a/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.cpp b/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.cpp index e3ce169b9..64d8003fb 100644 --- a/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.cpp @@ -3,19 +3,21 @@ #include <mutex> #include <optional> -#include "ArmarXCore/core/logging/Logging.h" +#include <ArmarXCore/core/logging/Logging.h> #include <ArmarXCore/core/PackagePath.h> -#include "RobotAPI/libraries/armem/core/Time.h" -#include "RobotAPI/libraries/armem/client/query/Builder.h" -#include "RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h" -#include "RobotAPI/libraries/armem/util/util.h" -#include "RobotAPI/libraries/armem_robot/robot_conversions.h" -#include "RobotAPI/libraries/armem_robot/aron_conversions.h" +#include <RobotAPI/libraries/armem/core/Time.h> +#include <RobotAPI/libraries/armem/core/error.h> +#include <RobotAPI/libraries/armem/client/query/Builder.h> +#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> +#include <RobotAPI/libraries/armem/util/util.h> +#include <RobotAPI/libraries/armem_robot/robot_conversions.h> +#include <RobotAPI/libraries/armem_robot/aron_conversions.h> #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h> #include <RobotAPI/libraries/armem_objects/aron/Attachment.aron.generated.h> #include <RobotAPI/libraries/armem_objects/aron_conversions.h> -#include "RobotAPI/libraries/aron/common/aron_conversions.h" +#include <RobotAPI/libraries/aron/common/aron_conversions.h> + namespace armarx::armem::attachment { @@ -72,7 +74,9 @@ namespace armarx::armem::attachment } } // namespace - Reader::Reader(armem::ClientReaderComponentPluginUser& component) : component(component) {} + Reader::Reader(const armem::client::MemoryNameSystem& memoryNameSystem) : + memoryNameSystem(memoryNameSystem) + {} void Reader::registerPropertyDefinitions(armarx::PropertyDefinitionsPtr& def) { @@ -92,16 +96,16 @@ namespace armarx::armem::attachment { // Wait for the memory to become available and add it as dependency. ARMARX_IMPORTANT << "Reader: Waiting for memory '" << properties.memoryName << "' ..."; - auto result = component.useMemory(properties.memoryName); - if (not result.success) + try + { + memoryReader = memoryNameSystem.useReader(properties.memoryName); + ARMARX_IMPORTANT << "Reader: Connected to memory '" << properties.memoryName << "'"; + } + catch (const armem::error::CouldNotResolveMemoryServer& e) { - ARMARX_ERROR << result.errorMessage; + ARMARX_ERROR << e.what(); return; } - - ARMARX_IMPORTANT << "Reader: Connected to memory '" << properties.memoryName; - - memoryReader.setReadingMemory(result.proxy); } @@ -207,4 +211,4 @@ namespace armarx::armem::attachment -} // namespace armarx::armem::attachment \ No newline at end of file +} // namespace armarx::armem::attachment diff --git a/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.h b/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.h index bcfb3d1a1..9149cbd5a 100644 --- a/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.h +++ b/source/RobotAPI/libraries/armem_objects/client/attachment/Reader.h @@ -24,16 +24,19 @@ #include <mutex> #include <optional> -#include "RobotAPI/libraries/armem/client.h" -#include "RobotAPI/libraries/armem/client/Reader.h" -#include "RobotAPI/libraries/armem_objects/types.h" +#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h> + +#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h> +#include <RobotAPI/libraries/armem/client/Reader.h> +#include <RobotAPI/libraries/armem_objects/types.h> + namespace armarx::armem::attachment { class Reader { public: - Reader(armem::ClientReaderComponentPluginUser& component); + Reader(const armem::client::MemoryNameSystem& memoryNameSystem); virtual ~Reader() = default; void registerPropertyDefinitions(armarx::PropertyDefinitionsPtr& def); @@ -56,11 +59,10 @@ namespace armarx::armem::attachment const std::string propertyPrefix = "mem.obj.attachment."; + armem::client::MemoryNameSystem memoryNameSystem; armem::client::Reader memoryReader; std::mutex memoryWriterMutex; - - armem::ClientReaderComponentPluginUser& component; }; -} // namespace armarx::armem::attachment \ No newline at end of file +} // namespace armarx::armem::attachment diff --git a/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.cpp b/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.cpp index f4d16070b..dc520d226 100644 --- a/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.cpp +++ b/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.cpp @@ -5,20 +5,23 @@ #include <mutex> #include <optional> -#include "ArmarXCore/core/logging/Logging.h" +#include <ArmarXCore/core/logging/Logging.h> -#include "RobotAPI/libraries/armem/core/MemoryID.h" -#include "RobotAPI/libraries/armem_objects/aron_conversions.h" -#include "RobotAPI/libraries/armem_robot/aron_conversions.h" +#include <RobotAPI/libraries/armem/core/MemoryID.h> +#include <RobotAPI/libraries/armem/core/error.h> +#include <RobotAPI/libraries/armem_objects/aron_conversions.h> +#include <RobotAPI/libraries/armem_robot/aron_conversions.h> #include <RobotAPI/libraries/armem_robot/aron/RobotDescription.aron.generated.h> #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h> #include <RobotAPI/libraries/armem/core/aron_conversions.h> -#include "RobotAPI/libraries/armem_robot/robot_conversions.h" +#include <RobotAPI/libraries/armem_robot/robot_conversions.h> namespace armarx::armem::attachment { - Writer::Writer(armem::ClientComponentPluginUser& component): component(component) {} + Writer::Writer(const armem::client::MemoryNameSystem& memoryNameSystem) : + memoryNameSystem(memoryNameSystem) + {} void Writer::registerPropertyDefinitions(armarx::PropertyDefinitionsPtr& def) { @@ -38,17 +41,17 @@ namespace armarx::armem::attachment { // Wait for the memory to become available and add it as dependency. ARMARX_IMPORTANT << "Writer: Waiting for memory '" << properties.memoryName << "' ..."; - auto result = component.useMemory(properties.memoryName); - if (not result.success) + try + { + memoryWriter = memoryNameSystem.useWriter(properties.memoryName); + memoryReader = memoryNameSystem.useReader(properties.memoryName); + ARMARX_IMPORTANT << "Writer: Connected to memory '" << properties.memoryName << "'"; + } + catch (const armem::error::CouldNotResolveMemoryServer& e) { - ARMARX_ERROR << result.errorMessage; + ARMARX_ERROR << e.what(); return; } - - ARMARX_IMPORTANT << "Writer: Connected to memory '" << properties.memoryName; - - memoryWriter.setWritingMemory(result.proxy); - memoryReader.setReadingMemory(result.proxy); } @@ -141,4 +144,4 @@ namespace armarx::armem::attachment -} // namespace armarx::armem::attachment \ No newline at end of file +} // namespace armarx::armem::attachment diff --git a/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.h b/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.h index f20421d4b..df85beca8 100644 --- a/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.h +++ b/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.h @@ -23,13 +23,14 @@ #include <mutex> -#include "RobotAPI/libraries/armem/client/Reader.h" -#include "RobotAPI/libraries/armem/client/Writer.h" -#include "RobotAPI/libraries/armem/client.h" +#include <RobotAPI/libraries/armem/client/Reader.h> +#include <RobotAPI/libraries/armem/client/Writer.h> +#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h> -#include "RobotAPI/libraries/armem_robot_state/client/common/RobotReader.h" +#include <RobotAPI/libraries/armem_robot_state/client/common/RobotReader.h> + +#include <RobotAPI/libraries/armem_objects/types.h> -#include "RobotAPI/libraries/armem_objects/types.h" namespace armarx::armem::attachment { @@ -37,7 +38,7 @@ namespace armarx::armem::attachment class Writer { public: - Writer(armem::ClientComponentPluginUser& component); + Writer(const armem::client::MemoryNameSystem& memoryNameSystem); virtual ~Writer() = default; @@ -60,14 +61,14 @@ namespace armarx::armem::attachment const std::string propertyPrefix = "mem.obj.articulated."; + armem::client::MemoryNameSystem memoryNameSystem; + armem::client::Writer memoryWriter; std::mutex memoryWriterMutex; armem::client::Reader memoryReader; std::mutex memoryReaderMutex; - - armem::ClientComponentPluginUser& component; }; -} // namespace armarx::armem::attachment \ No newline at end of file +} // namespace armarx::armem::attachment diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp index fd8250c5b..a2394a26a 100644 --- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp +++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp @@ -37,6 +37,7 @@ #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/client/query/selectors.h> +#include <RobotAPI/libraries/armem/core/error.h> #include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> #include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> #include <RobotAPI/libraries/armem/core/workingmemory/ProviderSegment.h> @@ -52,9 +53,10 @@ namespace armarx::armem { - MappingDataReader::MappingDataReader(armem::ClientReaderComponentPluginUser& memoryClient) - : memoryClient(memoryClient) {} - + MappingDataReader::MappingDataReader(const armem::client::MemoryNameSystem& memoryNameSystem) : + memoryNameSystem(memoryNameSystem) + { + } MappingDataReader::~MappingDataReader() = default; void MappingDataReader::registerPropertyDefinitions( @@ -74,19 +76,18 @@ namespace armarx::armem void MappingDataReader::connect() { // Wait for the memory to become available and add it as dependency. - ARMARX_IMPORTANT << "TransformReader: Waiting for memory '" + ARMARX_IMPORTANT << "MappingDataReader: Waiting for memory '" << properties.memoryName << "' ..."; - auto result = memoryClient.useMemory(properties.memoryName); - if (not result.success) + try { - ARMARX_ERROR << result.errorMessage; + memoryReader = memoryNameSystem.useReader(MemoryID().withMemoryName(properties.memoryName)); + ARMARX_IMPORTANT << "MappingDataReader: Connected to memory '" << properties.memoryName << "'"; + } + catch (const armem::error::CouldNotResolveMemoryServer& e) + { + ARMARX_ERROR << e.what(); return; } - - ARMARX_IMPORTANT << "TransformReader: Connected to memory '" - << properties.memoryName; - - memoryReader.setReadingMemory(result.proxy); } armem::client::query::Builder diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h index aee783764..39332417b 100644 --- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h +++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.h @@ -30,6 +30,7 @@ #include <RobotAPI/libraries/armem/client.h> #include <RobotAPI/libraries/armem/client/Reader.h> #include <RobotAPI/libraries/armem/client/query/Builder.h> +#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h> #include <RobotAPI/libraries/armem_robot_mapping/types.h> @@ -62,8 +63,8 @@ namespace armarx::armem class MappingDataReader { public: - MappingDataReader(armem::ClientReaderComponentPluginUser& memoryClient); + MappingDataReader(const armem::client::MemoryNameSystem& memoryNameSystem); virtual ~MappingDataReader(); void connect(); @@ -107,6 +108,7 @@ namespace armarx::armem private: + armem::client::MemoryNameSystem memoryNameSystem; armem::client::Reader memoryReader; // Properties @@ -118,8 +120,6 @@ namespace armarx::armem const std::string propertyPrefix = "mem.mapping."; - - armem::ClientReaderComponentPluginUser& memoryClient; }; } // namespace armarx::armem diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp index 351d71398..82a365295 100644 --- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp +++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.cpp @@ -1,14 +1,15 @@ #include "MappingDataWriter.h" -#include "RobotAPI/libraries/armem_robot_mapping/aron_conversions.h" +#include <RobotAPI/libraries/armem_robot_mapping/aron_conversions.h> #include <RobotAPI/libraries/armem_robot_mapping/aron/LaserScan.aron.generated.h> +#include <RobotAPI/libraries/armem/core/error.h> namespace armarx::armem { - MappingDataWriter::MappingDataWriter(armem::ClientWriterComponentPluginUser& component) - : component(component) {} + MappingDataWriter::MappingDataWriter(const armem::client::MemoryNameSystem& memoryNameSystem) + : memoryNameSystem(memoryNameSystem) {} MappingDataWriter::~MappingDataWriter() = default; @@ -30,16 +31,16 @@ namespace armarx::armem // Wait for the memory to become available and add it as dependency. ARMARX_IMPORTANT << "MappingDataWriter: Waiting for memory '" << properties.memoryName << "' ..."; - auto result = component.useMemory(properties.memoryName); - if (not result.success) + try { - ARMARX_ERROR << result.errorMessage; + memoryWriter = memoryNameSystem.useWriter(MemoryID().withMemoryName(properties.memoryName)); + ARMARX_IMPORTANT << "MappingDataWriter: Connected to memory '" << properties.memoryName << "'"; + } + catch (const armem::error::CouldNotResolveMemoryServer& e) + { + ARMARX_ERROR << e.what(); return; } - - ARMARX_IMPORTANT << "TransformWriter: Connected to memory '" << properties.memoryName; - - memoryWriter.setWritingMemory(result.proxy); } @@ -93,4 +94,4 @@ namespace armarx::armem return updateResult.success; } -} // namespace armarx::armem \ No newline at end of file +} // namespace armarx::armem diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h index e5de99674..c7d8ba577 100644 --- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h +++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataWriter.h @@ -24,10 +24,12 @@ #include <mutex> +#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h> + #include <RobotAPI/interface/units/LaserScannerUnit.h> #include <RobotAPI/libraries/armem/client/Writer.h> -#include <RobotAPI/libraries/armem/client.h> +#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h> namespace armarx::armem @@ -47,7 +49,8 @@ namespace armarx::armem class MappingDataWriter { public: - MappingDataWriter(armem::ClientWriterComponentPluginUser& component); + + MappingDataWriter(const armem::client::MemoryNameSystem& memoryNameSystem); virtual ~MappingDataWriter(); void connect(); @@ -62,6 +65,7 @@ namespace armarx::armem bool storeSensorData(const LaserScan& laserScan, const std::string& frame, const std::string& agentName, const std::int64_t& timestamp); private: + armem::client::MemoryNameSystem memoryNameSystem; armem::client::Writer memoryWriter; // Properties @@ -75,8 +79,6 @@ namespace armarx::armem const std::string propertyPrefix = "mem.mapping."; - - armem::ClientWriterComponentPluginUser& component; }; 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 2d8319dc9..07fa4333c 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp @@ -3,25 +3,27 @@ #include <mutex> #include <optional> -#include "ArmarXCore/core/exceptions/LocalException.h" -#include "ArmarXCore/core/logging/Logging.h" +#include <ArmarXCore/core/exceptions/LocalException.h> +#include <ArmarXCore/core/logging/Logging.h> #include <ArmarXCore/core/PackagePath.h> -#include "RobotAPI/libraries/armem/client/query/Builder.h" -#include "RobotAPI/libraries/armem/core/Time.h" -#include "RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h" -#include "RobotAPI/libraries/armem_robot/aron_conversions.h" -#include "RobotAPI/libraries/armem_robot/robot_conversions.h" +#include <RobotAPI/libraries/armem/client/query/Builder.h> +#include <RobotAPI/libraries/armem/core/error.h> +#include <RobotAPI/libraries/armem/core/Time.h> +#include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h> +#include <RobotAPI/libraries/armem_robot/aron_conversions.h> +#include <RobotAPI/libraries/armem_robot/robot_conversions.h> #include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h> #include <RobotAPI/libraries/armem_robot_state/aron/JointState.aron.generated.h> + namespace fs = ::std::filesystem; namespace armarx::armem::robot_state { - RobotReader::RobotReader(armem::ClientReaderComponentPluginUser& component) : - memoryClient(component), transformReader(component) + RobotReader::RobotReader(const armem::client::MemoryNameSystem& memoryNameSystem) : + memoryNameSystem(memoryNameSystem), transformReader(memoryNameSystem) { } @@ -42,16 +44,16 @@ namespace armarx::armem::robot_state // Wait for the memory to become available and add it as dependency. ARMARX_IMPORTANT << "RobotReader: Waiting for memory '" << properties.memoryName << "' ..."; - auto result = memoryClient.useMemory(properties.memoryName); - if (not result.success) + try + { + memoryReader = memoryNameSystem.useReader(properties.memoryName); + ARMARX_IMPORTANT << "RobotReader: Connected to memory '" << properties.memoryName << "'"; + } + catch (const armem::error::CouldNotResolveMemoryServer& e) { - ARMARX_ERROR << result.errorMessage; + ARMARX_ERROR << e.what(); return; } - - ARMARX_IMPORTANT << "RobotReader: Connected to memory '" << properties.memoryName; - - memoryReader.setReadingMemory(result.proxy); } std::optional<robot::Robot> RobotReader::get(const std::string& name, @@ -327,4 +329,4 @@ namespace armarx::armem::robot_state return robot::convertRobotDescription(instance); } -} // namespace armarx::armem::robot_state \ No newline at end of file +} // namespace armarx::armem::robot_state diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.h b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.h index b5bd01e5d..9847996cd 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.h +++ b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.h @@ -24,13 +24,14 @@ #include <mutex> #include <optional> -#include "RobotAPI/libraries/armem/client.h" -#include "RobotAPI/libraries/armem/client/Reader.h" +#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h> +#include <RobotAPI/libraries/armem/client/Reader.h> -#include "RobotAPI/libraries/armem_robot/client/interfaces.h" -#include "RobotAPI/libraries/armem_robot/types.h" +#include <RobotAPI/libraries/armem_robot/client/interfaces.h> +#include <RobotAPI/libraries/armem_robot/types.h> + +#include <RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.h> -#include "RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.h" namespace armarx::armem::robot_state { @@ -43,7 +44,7 @@ namespace armarx::armem::robot_state class RobotReader : virtual public robot::ReaderInterface { public: - RobotReader(armem::ClientReaderComponentPluginUser& component); + RobotReader(const armem::client::MemoryNameSystem& memoryNameSystem); virtual ~RobotReader() = default; void connect(); @@ -89,12 +90,11 @@ namespace armarx::armem::robot_state const std::string propertyPrefix = "mem.robot_state."; + armem::client::MemoryNameSystem memoryNameSystem; armem::client::Reader memoryReader; std::mutex memoryWriterMutex; - armem::ClientReaderComponentPluginUser& memoryClient; - client::robot_state::localization::TransformReader transformReader; }; -} // namespace armarx::armem::robot_state \ No newline at end of file +} // namespace armarx::armem::robot_state diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp index a3655fee1..a59d7c656 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp @@ -14,8 +14,8 @@ namespace armarx::armem::robot_state { - VirtualRobotReader::VirtualRobotReader(armem::ClientReaderComponentPluginUser& component) : - RobotReader(component) + VirtualRobotReader::VirtualRobotReader(const armem::client::MemoryNameSystem& memoryNameSystem) : + RobotReader(memoryNameSystem) { } @@ -83,4 +83,4 @@ namespace armarx::armem::robot_state } -} // namespace armarx::armem::robot_state \ No newline at end of file +} // namespace armarx::armem::robot_state diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h index a280e71b6..373cacf7b 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h +++ b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h @@ -27,6 +27,7 @@ #include <VirtualRobot/VirtualRobot.h> #include <VirtualRobot/XML/RobotIO.h> + namespace armarx::armem::robot_state { /** @@ -40,7 +41,7 @@ namespace armarx::armem::robot_state class VirtualRobotReader : virtual public RobotReader { public: - VirtualRobotReader(armem::ClientReaderComponentPluginUser& component); + VirtualRobotReader(const armem::client::MemoryNameSystem& memoryNameSystem); virtual ~VirtualRobotReader() = default; void connect(); @@ -61,4 +62,4 @@ namespace armarx::armem::robot_state VirtualRobot::RobotIO::RobotDescription::eStructure); }; -} // namespace armarx::armem::robot_state \ No newline at end of file +} // namespace armarx::armem::robot_state diff --git a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.cpp b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.cpp index 8a37b2dec..cdbfc5a36 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.cpp @@ -47,6 +47,7 @@ // this package #include <RobotAPI/libraries/armem/client/query/Builder.h> #include <RobotAPI/libraries/armem/client/query/query_fns.h> +#include <RobotAPI/libraries/armem/core/error.h> #include <RobotAPI/libraries/armem/core/workingmemory/Memory.h> #include <RobotAPI/libraries/armem/core/workingmemory/ProviderSegment.h> #include <RobotAPI/libraries/armem/core/workingmemory/ice_conversions.h> @@ -61,7 +62,8 @@ namespace armarx::armem::client::robot_state::localization { - TransformReader::TransformReader(armem::ClientReaderComponentPluginUser& memoryClient) : memoryClient(memoryClient) {} + TransformReader::TransformReader(const armem::client::MemoryNameSystem& memoryNameSystem) : + memoryNameSystem(memoryNameSystem) {} TransformReader::~TransformReader() = default; @@ -83,16 +85,16 @@ namespace armarx::armem::client::robot_state::localization // Wait for the memory to become available and add it as dependency. ARMARX_IMPORTANT << "TransformReader: Waiting for memory '" << properties.memoryName << "' ..."; - auto result = memoryClient.useMemory(properties.memoryName); - if (not result.success) + try { - ARMARX_ERROR << result.errorMessage; + memoryReader = memoryNameSystem.useReader(properties.memoryName); + ARMARX_IMPORTANT << "TransformReader: Connected to memory '" << properties.memoryName; + } + catch (const armem::error::CouldNotResolveMemoryServer& e) + { + ARMARX_ERROR << e.what(); return; } - - ARMARX_IMPORTANT << "TransformReader: Connected to memory '" << properties.memoryName; - - memoryReader.setReadingMemory(result.proxy); } TransformResult TransformReader::getGlobalPose(const std::string& agentName, diff --git a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.h b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.h index 2d1d98ddf..14186e551 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.h +++ b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.h @@ -22,10 +22,9 @@ #pragma once +#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h> #include <RobotAPI/libraries/armem/client/Reader.h> -#include <RobotAPI/libraries/armem/client.h> - #include "interfaces.h" namespace armarx::armem::client::robot_state::localization @@ -45,7 +44,7 @@ namespace armarx::armem::client::robot_state::localization virtual public TransformReaderInterface { public: - TransformReader(armem::ClientReaderComponentPluginUser& memoryClient); + TransformReader(const armem::client::MemoryNameSystem& memoryNameSystem); ~TransformReader() override; @@ -61,6 +60,7 @@ namespace armarx::armem::client::robot_state::localization private: + armem::client::MemoryNameSystem memoryNameSystem; armem::client::Reader memoryReader; // Properties @@ -72,8 +72,5 @@ namespace armarx::armem::client::robot_state::localization const std::string propertyPrefix = "mem.robot_state."; - - armem::ClientReaderComponentPluginUser& memoryClient; - }; } // namespace armarx::armem::client::robot_state::localization diff --git a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp index 2327c1418..87f9ac31d 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp +++ b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp @@ -46,14 +46,16 @@ #include <RobotAPI/libraries/armem_robot_state/aron/Transform.aron.generated.h> #include <RobotAPI/libraries/armem_robot_state/aron_conversions.h> -#include "RobotAPI/libraries/armem/core/MemoryID.h" +#include <RobotAPI/libraries/armem/core/MemoryID.h> +#include <RobotAPI/libraries/armem/core/error.h> namespace armarx::armem::client::robot_state::localization { - TransformWriter::TransformWriter(armem::ClientWriterComponentPluginUser& memoryClient) : memoryClient(memoryClient) {} + TransformWriter::TransformWriter(const armem::client::MemoryNameSystem& memoryNameSystem) : + memoryNameSystem(memoryNameSystem) {} TransformWriter::~TransformWriter() = default; @@ -73,16 +75,16 @@ namespace armarx::armem::client::robot_state::localization // Wait for the memory to become available and add it as dependency. ARMARX_IMPORTANT << "TransformWriter: Waiting for memory '" << properties.memoryName << "' ..."; - auto result = memoryClient.useMemory(properties.memoryName); - if (not result.success) + try { - ARMARX_ERROR << result.errorMessage; + memoryWriter = memoryNameSystem.useWriter(properties.memoryName); + ARMARX_IMPORTANT << "TransformWriter: Connected to memory '" << properties.memoryName << "'"; + } + catch (const armem::error::CouldNotResolveMemoryServer& e) + { + ARMARX_ERROR << e.what(); return; } - - ARMARX_IMPORTANT << "TransformWriter: Connected to memory '" << properties.memoryName; - - memoryWriter.setWritingMemory(result.proxy); } bool TransformWriter::commitTransform(const ::armarx::armem::robot_state::Transform& transform) diff --git a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.h b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.h index 0402d8188..d0895f3b8 100644 --- a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.h +++ b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.h @@ -24,13 +24,12 @@ #include <mutex> +#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h> #include <RobotAPI/libraries/armem/client/Writer.h> -// #include <RobotAPI/libraries/armem/client/MemoryConnector.h> - -#include <RobotAPI/libraries/armem/client.h> #include "interfaces.h" + namespace armarx::armem::client::robot_state::localization { @@ -49,8 +48,8 @@ namespace armarx::armem::client::robot_state::localization virtual public TransformWriterInterface { public: - TransformWriter(armem::ClientWriterComponentPluginUser& memoryClient); + TransformWriter(const armem::client::MemoryNameSystem& memoryNameSystem); ~TransformWriter() override; // TransformWriterInterface @@ -63,6 +62,8 @@ namespace armarx::armem::client::robot_state::localization bool commitTransform(const ::armarx::armem::robot_state::Transform& transform) override; private: + + armem::client::MemoryNameSystem memoryNameSystem; armem::client::Writer memoryWriter; std::mutex memoryWriterMutex; @@ -74,8 +75,6 @@ namespace armarx::armem::client::robot_state::localization } properties; const std::string propertyPrefix = "mem.robot_state."; - - armem::ClientWriterComponentPluginUser& memoryClient; }; } // namespace armarx::armem::client::robot_state::localization -- GitLab