diff --git a/source/RobotAPI/components/units/RobotUnit/Devices/GlobalRobotPoseSensorDevice.cpp b/source/RobotAPI/components/units/RobotUnit/Devices/GlobalRobotPoseSensorDevice.cpp
index f248ce502ba483dbac4603f86e6a26a7aecaff12..57f7cf102806a02d1bf502eaf5920e6b43dfff3f 100644
--- a/source/RobotAPI/components/units/RobotUnit/Devices/GlobalRobotPoseSensorDevice.cpp
+++ b/source/RobotAPI/components/units/RobotUnit/Devices/GlobalRobotPoseSensorDevice.cpp
@@ -1,4 +1,5 @@
 #include "GlobalRobotPoseSensorDevice.h"
+#include "ArmarXCore/core/logging/Logging.h"
 
 #include <SimoxUtility/math/convert/pos_rpy_to_mat4f.h>
 
@@ -138,6 +139,7 @@ namespace armarx
 
         if (sensorGlobalPositionCorrection == nullptr or sensorRelativePosition == nullptr)
         {
+            ARMARX_ERROR << "one of the sensors is not available";
             return;
         }
 
@@ -150,5 +152,7 @@ namespace armarx
                                           0,
                                           sensorRelativePosition->relativePositionRotation);
         const auto global_T_robot = global_T_relative * relative_T_robot;
+
+        sensor.global_T_root = global_T_robot;
     }
 } // namespace armarx
diff --git a/source/RobotAPI/components/units/RobotUnit/Devices/GlobalRobotPoseSensorDevice.h b/source/RobotAPI/components/units/RobotUnit/Devices/GlobalRobotPoseSensorDevice.h
index d60e8c887fc6be28d85b019b1455b623fa1013b8..c3cd19f4a3777a6903ceca8b4a1e8660f25b617b 100644
--- a/source/RobotAPI/components/units/RobotUnit/Devices/GlobalRobotPoseSensorDevice.h
+++ b/source/RobotAPI/components/units/RobotUnit/Devices/GlobalRobotPoseSensorDevice.h
@@ -29,6 +29,8 @@ namespace armarx
         using Transformation = Eigen::Matrix4f;
         Transformation global_T_odom = Transformation::Identity();
 
+        // TODO add timestamp
+
         static SensorValueInfo<SensorValueGlobalPoseCorrection> GetClassMemberInfo();
 
         bool isAvailable() const;
@@ -93,8 +95,7 @@ namespace armarx
         void rtReadSensorValues(const IceUtil::Time& sensorValuesTimestamp,
                                 const IceUtil::Time& timeSinceLastIteration) override;
 
-
-    private:
+    protected:
         SensorValueType sensor;
     };
 
@@ -110,11 +111,9 @@ namespace armarx
         void rtReadSensorValues(const IceUtil::Time& sensorValuesTimestamp,
                                 const IceUtil::Time& timeSinceLastIteration) override;
 
-        SensorValueGlobalPoseCorrection* sensorGlobalPositionCorrection;
-        SensorValueHolonomicPlatformRelativePosition* sensorRelativePosition;
+        const SensorValueGlobalPoseCorrection* sensorGlobalPositionCorrection;
+        const SensorValueHolonomicPlatformRelativePosition* sensorRelativePosition;
 
-    private:
-        SensorValueType sensor;
     };
 
 
diff --git a/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointHolonomicPlatformGlobalPositionController.cpp b/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointHolonomicPlatformGlobalPositionController.cpp
index 013af71634177b541922df2733ad495098b435eb..d847d403fda09fcb58070bfc957b99fe776f79b6 100755
--- a/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointHolonomicPlatformGlobalPositionController.cpp
+++ b/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointHolonomicPlatformGlobalPositionController.cpp
@@ -22,9 +22,13 @@
  *             GNU General Public License
  */
 #include "NJointHolonomicPlatformGlobalPositionController.h"
+#include "ArmarXCore/core/logging/Logging.h"
+#include "RobotAPI/components/units/RobotUnit/util/ControlThreadOutputBuffer.h"
 
 #include <RobotAPI/components/units/RobotUnit/NJointControllers/NJointControllerRegistry.h>
 
+#include <SimoxUtility/math/convert/mat3f_to_rpy.h>
+#include <SimoxUtility/math/convert/mat4f_to_rpy.h>
 #include <SimoxUtility/math/periodic/periodic_clamp.h>
 #include <cmath>
 
@@ -42,8 +46,8 @@ namespace armarx
         opid(cfg->p_rot, cfg->i_rot, cfg->d_rot, cfg->maxRotationVelocity, cfg->maxRotationAcceleration, true)
 
     {
-        const SensorValueBase* sv = useSensorValue(cfg->platformName);
-        this->sv = sv->asA<SensorValueHolonomicPlatform>();
+        const SensorValueBase* sv = useSensorValue(GlobalRobotLocalizationSensorDevice::DeviceName());
+        this->sv = sv->asA<GlobalRobotLocalizationSensorDevice::SensorValueType>();
         target = useControlTarget(cfg->platformName, ControlModes::HolonomicPlatformVelocity)->asA<ControlTargetHolonomicPlatformVelocity>();
 
 
diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp
index 226274e21919ac7d36616a086e7530830669f77b..80efce08aeaefed56bf599ceb928c7e1615e36a0 100644
--- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp
+++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp
@@ -156,6 +156,11 @@ namespace armarx::RobotUnitModule
             ARMARX_INFO << "initializing default units";
             initializeKinematicUnit();
             ARMARX_DEBUG << "KinematicUnit initialized";
+
+            ARMARX_DEBUG << "initializing LocalizationUnit";
+            initializeLocalizationUnit();
+            ARMARX_DEBUG << "LocalizationUnit initialized";
+
             initializePlatformUnit();
             ARMARX_DEBUG << "PlatformUnit initialized";
             initializeForceTorqueUnit();
@@ -166,9 +171,7 @@ namespace armarx::RobotUnitModule
             ARMARX_DEBUG << "TrajectoryControllerUnit initialized";
             initializeTcpControllerUnit();
             ARMARX_DEBUG << "TcpControllerUnit initialized";
-            ARMARX_DEBUG << "initializing LocalizationUnit";
-            initializeLocalizationUnit();
-            ARMARX_DEBUG << "LocalizationUnit initialized";
+            
         }
         ARMARX_INFO << "initializing default units...done! " << (TimeUtil::GetTime(true) - beg).toMicroSeconds() << " us";
     }
@@ -460,6 +463,13 @@ namespace armarx::RobotUnitModule
         unit->globalPositionCorrectionSensorDevice = dynamic_cast<decltype(unit->globalPositionCorrectionSensorDevice)>(
             _module<Devices>().getSensorDevices().at(GlobalRobotPoseCorrectionSensorDevice::DeviceName()).get());
 
+
+        const SensorDevicePtr& sensorDeviceGlobalRobotLocalization = _module<Devices>().getSensorDevices().at(GlobalRobotLocalizationSensorDevice::DeviceName());
+        ARMARX_CHECK_EXPRESSION(sensorDeviceGlobalRobotLocalization->getSensorValue()->asA<GlobalRobotLocalizationSensorDevice::SensorValueType>());
+
+        dynamic_cast<GlobalRobotLocalizationSensorDevice&>(*sensorDeviceGlobalRobotLocalization).sensorRelativePosition = sensorDeviceRelativePosition->getSensorValue()->asA<SensorValueHolonomicPlatformRelativePosition>();
+        dynamic_cast<GlobalRobotLocalizationSensorDevice&>(*sensorDeviceGlobalRobotLocalization).sensorGlobalPositionCorrection = unit->globalPositionCorrectionSensorDevice->getSensorValue()->asA<SensorValueGlobalPoseCorrection>();
+
         //add
         addUnit(unit);
     }