From a32fb42d233af494ec6ce00d9b0159c0d021d704 Mon Sep 17 00:00:00 2001
From: armar-user <armar-user@kit.edu>
Date: Wed, 5 May 2021 16:33:54 +0200
Subject: [PATCH] RobotStateMemory: creating "Localization" core segment on
 startup

---
 .../RobotStateMemory/RobotStateMemory.cpp     | 23 ++++++++++++++-----
 .../RobotStateMemory/RobotStateMemory.h       | 10 +++++++-
 2 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp
index 3298e2672..1624f899c 100644
--- a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp
+++ b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.cpp
@@ -97,6 +97,8 @@ namespace armarx
     {
         setupRobotUnitSegment();
 
+        setupLocalizationCoreSegment();
+
         cfg.loggingNames.emplace_back(robotUnitSensorPrefix);
         handler = make_shared<RobotUnitDataStreamingReceiver>(this, getRobotUnit(), cfg);
         keys = handler->getDataDescription();
@@ -119,17 +121,26 @@ namespace armarx
         stopRobotUnitStream();
     }
 
+    /*************************************************************/
+    // RobotUnit Streaming functions
+    /*************************************************************/
+    void RobotStateMemory::setupLocalizationCoreSegment()
+    {
+        ARMARX_INFO << "Adding core segment " << localizationCoreSegmentName;
+        workingMemory.addCoreSegments({localizationCoreSegmentName});
+    }
+
     /*************************************************************/
     // RobotUnit Streaming functions
     /*************************************************************/
     void RobotStateMemory::setupRobotUnitSegment()
     {
-        ARMARX_INFO << "Adding core segment " << robotUnitCoreSegmentName;
-        workingMemory.addCoreSegments({robotUnitCoreSegmentName});
+        ARMARX_INFO << "Adding core segment " << proprioceptionCoreSegmentName;
+        workingMemory.addCoreSegments({proprioceptionCoreSegmentName});
 
-        ARMARX_INFO << "Adding provider segment " << robotUnitCoreSegmentName << "/" << robotUnitProviderSegmentName;
+        ARMARX_INFO << "Adding provider segment " << proprioceptionCoreSegmentName << "/" << robotUnitProviderSegmentName;
         armem::data::AddSegmentInput input;
-        input.coreSegmentName = robotUnitCoreSegmentName;
+        input.coreSegmentName = proprioceptionCoreSegmentName;
         input.providerSegmentName = robotUnitProviderSegmentName;
 
         auto encoderEntryType = std::make_shared<aron::typenavigator::ObjectNavigator>("RobotUnitEncoderEntry");
@@ -144,11 +155,11 @@ namespace armarx
 
         if (!result.success)
         {
-            ARMARX_ERROR << "Could not add segment " << robotUnitCoreSegmentName << "/" << robotUnitProviderSegmentName << ". The error message is: " << result.errorMessage;
+            ARMARX_ERROR << "Could not add segment " << proprioceptionCoreSegmentName << "/" << robotUnitProviderSegmentName << ". The error message is: " << result.errorMessage;
         }
 
         robotUnitProviderID.memoryName = workingMemoryName;
-        robotUnitProviderID.coreSegmentName = robotUnitCoreSegmentName;
+        robotUnitProviderID.coreSegmentName = proprioceptionCoreSegmentName;
         robotUnitProviderID.providerSegmentName = robotUnitProviderSegmentName;
     }
 
diff --git a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h
index 9787ac6f5..490b04109 100644
--- a/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h
+++ b/source/RobotAPI/components/armem/server/RobotStateMemory/RobotStateMemory.h
@@ -91,6 +91,9 @@ namespace armarx
         void startRobotUnitStream();
         void stopRobotUnitStream();
 
+        // localization segment
+        void setupLocalizationCoreSegment();
+
     private:
         std::string workingMemoryName = "RobotStateMemory";
         bool addCoreSegmentOnUsage = false;
@@ -98,10 +101,15 @@ namespace armarx
         mutable std::recursive_mutex startStopMutex;
 
         // Memory IDs
-        std::string robotUnitCoreSegmentName = "Proprioception";
+
+        // - proprioception
+        std::string proprioceptionCoreSegmentName = "Proprioception";
         std::string robotUnitProviderSegmentName = "RobotUnit"; // get robot name?
         armem::data::MemoryID robotUnitProviderID;
 
+        // - localization
+        std::string localizationCoreSegmentName = "Localization";
+
         // RobotUnit stuff
         RobotUnitDataStreaming::DataStreamingDescription keys;
         std::vector<RobotUnitDataStreaming::DataEntry> keysList;
-- 
GitLab