diff --git a/source/RobotAPI/libraries/ArmarXObjects/ObjectInfo.cpp b/source/RobotAPI/libraries/ArmarXObjects/ObjectInfo.cpp
index 3b97c8040f4687bf58e48b409aaa4c2669f9fe35..4b813223c4b667cb3dd2e4ffb3e57d862d18c521 100644
--- a/source/RobotAPI/libraries/ArmarXObjects/ObjectInfo.cpp
+++ b/source/RobotAPI/libraries/ArmarXObjects/ObjectInfo.cpp
@@ -381,7 +381,7 @@ namespace armarx
 
         if (!fs::is_regular_file(simoxXML().absolutePath))
         {
-            if (_logError)
+            if (false and _logError )
             {
                 ARMARX_WARNING << "Expected simox object file for object " << *this << ": "
                                << simoxXML().absolutePath;
diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp
index 529aeba908795871d1690ef937dbecf0736b1a8f..c1a483450af1a4e803ffe6f330e6917817dcbfdc 100644
--- a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.cpp
@@ -24,8 +24,7 @@ namespace armarx::armem::robot_state
         if (not robotState)
         {
             ARMARX_VERBOSE << deactivateSpam(5) << "Querying robot state failed for robot `"
-                           << robot.getName() << "` "
-                           << "(type `" << robot.getType() << "`)!";
+                           << robot.getName() << "` " << "(type `" << robot.getType() << "`)!";
             return false;
         }
 
@@ -43,8 +42,7 @@ namespace armarx::armem::robot_state
         if (not robotState)
         {
             ARMARX_VERBOSE << deactivateSpam(5) << "Querying robot state failed for robot `"
-                           << robot.getName() << "` "
-                           << "(type `" << robot.getType() << "`)!";
+                           << robot.getName() << "` " << "(type `" << robot.getType() << "`)!";
             return false;
         }
 
@@ -84,6 +82,32 @@ namespace armarx::armem::robot_state
         return robot;
     }
 
+    VirtualRobot::RobotPtr
+    VirtualRobotReader::getRobotWaiting(const std::string& name,
+                                        const armem::Time& timestamp,
+                                        const VirtualRobot::RobotIO::RobotDescription& loadMode)
+    {
+        ARMARX_INFO << "Trying to get robot `" << name << "` ...";
+
+        VirtualRobot::RobotPtr robot = nullptr;
+        while (robot == nullptr)
+        {
+            // might be nullptr if query fails
+            robot = getRobot(name, timestamp, loadMode);
+
+            if (robot == nullptr)
+            {
+                ARMARX_INFO << deactivateSpam(1) << "Failed to query robot `" << name
+                               << "`. Will try again ...";
+            }
+            Clock::WaitFor(Duration::MilliSeconds(200));
+        }
+
+        ARMARX_INFO << "Got robot `" << name << "`.";
+
+        return robot;
+    }
+
     VirtualRobot::RobotPtr
     VirtualRobotReader::getSynchronizedRobot(const std::string& name,
                                              const VirtualRobot::BaseIO::RobotDescription& loadMode,
@@ -128,4 +152,4 @@ namespace armarx::armem::robot_state
     }
 
 
-} // namespace armarx::armem::robot_state::client::common
+} // namespace armarx::armem::robot_state
diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h
index 0c0eb05aa6cd8f96bec6acdeb90c0261aca43c80..571838aa3104abbbc89f1834d50f7f8c2a73ca41 100644
--- a/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h
+++ b/source/RobotAPI/libraries/armem_robot_state/client/common/VirtualRobotReader.h
@@ -69,6 +69,15 @@ namespace armarx::armem::robot_state
                                  VirtualRobot::RobotIO::RobotDescription::eStructure,
                              bool blocking = true);
 
+        /**
+        @brief In contrast to getRobot(), this function will retry to query the robot until it exists.
+        */
+        [[nodiscard]] VirtualRobot::RobotPtr
+        getRobotWaiting(const std::string& name,
+                 const armem::Time& timestamp = armem::Time::Invalid(),
+                 const VirtualRobot::RobotIO::RobotDescription& loadMode =
+                     VirtualRobot::RobotIO::RobotDescription::eStructure);
+
     private:
         [[nodiscard]] VirtualRobot::RobotPtr
         _getSynchronizedRobot(const std::string& name,