From 16631cc12aa4a1bb246235f8d65de3523bf33f38 Mon Sep 17 00:00:00 2001
From: Fabian Reister <fabian.reister@kit.edu>
Date: Sat, 26 Oct 2024 16:30:35 -0700
Subject: [PATCH] robot reader: reusing memory reader

---
 .../armem_robot_state/client/common/RobotReader.cpp         | 6 +++++-
 .../armem_robot_state/client/localization/TransformReader.h | 2 ++
 2 files changed, 7 insertions(+), 1 deletion(-)

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 1b4b0dd2e..d10045962 100644
--- a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotReader.cpp
@@ -10,6 +10,7 @@
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/core/time/Clock.h>
+#include <ArmarXCore/core/time/Duration.h>
 
 #include "RobotAPI/libraries/armem_robot_state/client/common/constants.h"
 #include "RobotAPI/libraries/armem_robot_state/common/localization/types.h"
@@ -49,11 +50,14 @@ namespace armarx::armem::robot_state
     {
         transformReader.connect(memoryNameSystem);
 
+        armarx::Clock::WaitFor(armarx::Duration::MilliSeconds(200));
+
         // Wait for the memory to become available and add it as dependency.
         ARMARX_INFO << "RobotReader: Waiting for memory '" << constants::memoryName << "' ...";
         try
         {
-            memoryReader = memoryNameSystem.useReader(constants::memoryName);
+            // memoryReader = memoryNameSystem.useReader(constants::memoryName);
+            memoryReader = transformReader.getMemoryReader();
             ARMARX_INFO << "RobotReader: Connected to memory '" << constants::memoryName << "'";
         }
         catch (const armem::error::CouldNotResolveMemoryServer& e)
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 37dc53c5c..184fae248 100644
--- a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.h
+++ b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformReader.h
@@ -58,6 +58,8 @@ namespace armarx::armem::robot_state::client::localization
 
         void registerPropertyDefinitions(::armarx::PropertyDefinitionsPtr& def) override;
 
+        armem::client::Reader getMemoryReader(){return memoryReader;}
+
     private:
         armem::client::Reader memoryReader;
         mutable std::mutex memoryReaderMutex;
-- 
GitLab