diff --git a/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/SegmentAdapter.cpp b/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/SegmentAdapter.cpp
index dab922c5a7d4726ec5655e6450fe7ff864438461..a0e9444a3c80d78e1e8cb32bf3c925ac9c359a73 100644
--- a/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/SegmentAdapter.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/familiar_object_instance/SegmentAdapter.cpp
@@ -114,12 +114,12 @@ namespace armarx::armem::server::obj::familiar_object_instance
         const Ice::Current&)
     {
 
-        if(data.empty())
+        if (data.empty())
         {
             return;
         }
 
-        // Note, that in general, timestamps in `data` can differ. Therefore, we maintain the sync timestamp 
+        // Note, that in general, timestamps in `data` can differ. Therefore, we maintain the sync timestamp
         // and check whether we have to update the robot. Otherwise, we can avoid these Ice calls.
         std::optional<armarx::DateTime> syncTimestamp;
 
@@ -142,25 +142,34 @@ namespace armarx::armem::server::obj::familiar_object_instance
                 segment.robots.get(famObjInstance.poseSensFrame.header.agent, providerName);
             ARMARX_CHECK_NOT_NULL(robot) << famObjInstance.poseSensFrame.header.agent;
 
-            
-            if(not syncTimestamp.has_value() or syncTimestamp.value() != famObjInstance.timestamp)
+
+            if (not syncTimestamp.has_value() or syncTimestamp.value() != famObjInstance.timestamp)
             {
-                ARMARX_CHECK(segment.robots.reader->synchronizeRobot(*robot, famObjInstance.timestamp));
+                ARMARX_CHECK(
+                    segment.robots.reader->synchronizeRobot(*robot, famObjInstance.timestamp));
                 syncTimestamp = famObjInstance.timestamp;
             }
 
 
-            // fill global pose info
-            famObjInstance.poseGlobal.emplace();
-            famObjInstance.poseGlobal->pose = framedPose.toGlobalEigen(robot);
-            famObjInstance.poseGlobal->header.agent = famObjInstance.poseSensFrame.header.agent;
-            famObjInstance.poseGlobal->header.frame = armarx::GlobalFrame;
+            // fill global pose info if not set yet
+            if (not famObjInstance.poseGlobal.has_value())
+            {
+                famObjInstance.poseGlobal.emplace();
+                famObjInstance.poseGlobal->pose = framedPose.toGlobalEigen(robot);
+                famObjInstance.poseGlobal->header.agent = famObjInstance.poseSensFrame.header.agent;
+                famObjInstance.poseGlobal->header.frame = armarx::GlobalFrame;
+            }
+            else
+            {
+                ARMARX_CHECK_EQUAL(famObjInstance.poseGlobal->header.frame, armarx::GlobalFrame);
+            }
 
 
             return famObjInstance;
         };
 
         std::vector<armarx::armem::arondto::FamiliarObjectInstance> familiarObjectInstances;
+        familiarObjectInstances.reserve(data.size());
 
         std::transform(std::begin(data),
                        std::end(data),
@@ -170,8 +179,6 @@ namespace armarx::armem::server::obj::familiar_object_instance
         segment.commit(familiarObjectInstances, providerName);
     }
 
-
-
     void
     SegmentAdapter::handleProviderUpdate(const std::string& providerName)
     {
@@ -182,8 +189,6 @@ namespace armarx::armem::server::obj::familiar_object_instance
         }
     }
 
- 
-
     void
     SegmentAdapter::visualizeRun()
     {
@@ -206,7 +211,8 @@ namespace armarx::armem::server::obj::familiar_object_instance
                         [this]()
                         { return segment.getFamiliarObjectsByProvider(armarx::Clock::Now()); });
 
-                ARMARX_VERBOSE << "Visualizing " << familiarObjectsByProvider.size() << " providers.";
+                ARMARX_VERBOSE << "Visualizing " << familiarObjectsByProvider.size()
+                               << " providers.";
                 visu.visualizeFamiliarObjectsByProvider(familiarObjectsByProvider);
             }
 
@@ -214,7 +220,5 @@ namespace armarx::armem::server::obj::familiar_object_instance
         }
     }
 
-  
-
 
 } // namespace armarx::armem::server::obj::familiar_object_instance