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 1b4b0dd2ea571562291ddffcdf70b1c438b15fef..d100459622099a65dded88c216950cae1ff1841f 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 37dc53c5c190e576af8fcc13d2d12772b719d921..184fae2481188bbcc6e6f73a72c1dc47fa42d647 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;