diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp
index 7c120b3cc4db3aabbf6b184e5d747d3014ae0a61..b669bf0db9f9b3ca426e25062259373122ce25ef 100644
--- a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp
+++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.cpp
@@ -1,4 +1,6 @@
 #include "RobotUnitComponentPlugin.h"
+#include "ArmarXCore/util/CPPUtility/Pointer.h"
+#include <thread>
 
 namespace armarx::plugins
 {
@@ -112,7 +114,11 @@ namespace armarx::plugins
     {
         _deactivated = true;
     }
-}
+
+
+
+
+}  // namespace armarx::plugins
 
 namespace armarx
 {
@@ -130,6 +136,18 @@ namespace armarx
     {
         return *plugin;
     }
+
+    void RobotUnitComponentPluginUser::waitUntilRobotUnitIsRunning() const
+    {
+        ARMARX_INFO << "Waiting until robot unit is running ...";
+
+        while ((isNullptr(getRobotUnit()) or (not getRobotUnit()->isRunning())))
+        {
+            std::this_thread::sleep_for(std::chrono::milliseconds(100));
+        }
+
+        ARMARX_INFO << "Robot unit is up and running.";
+    }
 }
 
 
diff --git a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h
index 18616020e0683a70e6fcb0f95c7e7a09939db357..5b8369776c1f67d7f0ef24db704d3a37625e16e5 100644
--- a/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h
+++ b/source/RobotAPI/libraries/RobotAPIComponentPlugins/RobotUnitComponentPlugin.h
@@ -78,7 +78,10 @@ namespace armarx
     {
     public:
         RobotUnitComponentPluginUser();
+
         RobotUnitInterfacePrx getRobotUnit() const;
+        void waitUntilRobotUnitIsRunning() const;
+
         plugins::RobotUnitComponentPlugin& getRobotUnitComponentPlugin();
     private:
         armarx::plugins::RobotUnitComponentPlugin* plugin = nullptr;