diff --git a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp index 3901a510fdcb5bec61a2b18cc2e64b2cab0ecf64..5128cd755f9f0be41689a446f1b1697db956af8c 100644 --- a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp +++ b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp @@ -63,6 +63,9 @@ namespace armarx::armem::server::robot_state const std::string robotUnitPrefix = robotUnit.sensorValuePrefix; + + defs->optional(robotUnit.waitForRobotUnit, "WaitForRobotUnit", "Add the robot unit as dependency to the component. This memory requires a running RobotUnit, therefore we should add it as explicit dependency."); + defs->optional(robotUnit.reader.properties.sensorPrefix, robotUnitPrefix + "SensorValuePrefix", "Prefix of all sensor values."); defs->optional(robotUnit.pollFrequency, robotUnitPrefix + "UpdateFrequency", @@ -115,6 +118,11 @@ namespace armarx::armem::server::robot_state std::vector<std::string> projectIncludePaths = simox::alg::split(pathsString, ";,"); includePaths.insert(includePaths.end(), projectIncludePaths.begin(), projectIncludePaths.end()); } + + if (robotUnit.waitForRobotUnit) + { + usingProxy(robotUnit.plugin->getRobotUnitName()); + } } diff --git a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h index 6459b2aac44dbea0a64c8b2fe35efed2e69f020c..863c9b5711a1effc010488eb9badf3195a88c8c5 100644 --- a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h +++ b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h @@ -124,6 +124,8 @@ namespace armarx::armem::server::robot_state // queue std::queue<proprioception::RobotUnitData> dataQueue; std::mutex dataMutex; + + bool waitForRobotUnit = false; }; RobotUnit robotUnit; };