diff --git a/source/RobotAPI/components/units/RobotUnit/Units/TCPControllerSubUnit.cpp b/source/RobotAPI/components/units/RobotUnit/Units/TCPControllerSubUnit.cpp
index 873814d8ec87a5de661f9bdd394b48255daebb5e..ef3cb1009b0c1caf2ceab65a7bb4b5143d992e94 100644
--- a/source/RobotAPI/components/units/RobotUnit/Units/TCPControllerSubUnit.cpp
+++ b/source/RobotAPI/components/units/RobotUnit/Units/TCPControllerSubUnit.cpp
@@ -120,11 +120,21 @@ void TCPControllerSubUnit::setTCPVelocity(const std::string& nodeSetName, const
     }
     ARMARX_DEBUG << "CartesianSelection-Mode: " << (int)mode;
     auto controllerName = this->getName() + "_" + tcp + "_" + nodeSetName + "_mode_" + std::to_string((int)mode);
-    auto activeNJointControllers = robotUnit->getNJointControllersNotNull(robotUnit->getNJointControllerNames());
+    auto NJointControllers = robotUnit->getNJointControllerNames();
     NJointCartesianVelocityControllerWithRampPtr tcpController;
     bool nodeSetAlreadyControlled = false;
-    for (NJointControllerPtr controller : activeNJointControllers)
+    for (auto& name : NJointControllers)
     {
+        NJointControllerPtr controller;
+        try
+        {
+            controller = robotUnit->getNJointControllerNotNull(name);
+        }
+        catch (...)
+        {
+            continue;
+        }
+
         tcpController = NJointCartesianVelocityControllerWithRampPtr::dynamicCast(controller);
         if (!tcpController)
         {