diff --git a/source/RobotAPI/components/RobotState/RobotStateComponent.cpp b/source/RobotAPI/components/RobotState/RobotStateComponent.cpp
index f9072fedc91dcb0b42e5e7f032371dcd4292e6fc..ba9b07789f37f1094a6eda84517d1a8fabf381a5 100644
--- a/source/RobotAPI/components/RobotState/RobotStateComponent.cpp
+++ b/source/RobotAPI/components/RobotState/RobotStateComponent.cpp
@@ -120,7 +120,14 @@ namespace armarx
         }
         usingTopic(robotNodeSetName + "State");
 
-        readRobotInfo(robotFile);
+        try
+        {
+            readRobotInfo(robotFile);
+        }
+        catch (...)
+        {
+            ARMARX_WARNING << "Failed to read robot info from file: " << robotFile;
+        }
 
 
         /*VirtualRobot::RobotNodeSetPtr pns = this->_synchronized->getRobotNodeSet("Platform");
@@ -151,7 +158,7 @@ namespace armarx
         std::string value = infoNode.attribute_value_or_default("value", "");
         //ARMARX_IMPORTANT << "name: " << name << "; profile: " << profile << "; value: " << value;
         std::vector<RobotInfoNodePtr> children;
-        for(const RapidXmlReaderNode& childNode : infoNode.nodes())
+        for (const RapidXmlReaderNode& childNode : infoNode.nodes())
         {
             children.push_back(readRobotInfo(childNode));
         }
diff --git a/source/RobotAPI/components/units/RobotUnit/SensorValues/SensorValue1DoFActuator.h b/source/RobotAPI/components/units/RobotUnit/SensorValues/SensorValue1DoFActuator.h
index fc8b362bcd2c705f163387fa4f41884d9d92ac92..c5ca4ead4deb70d4d507186a0a16d43dfb81ac51 100644
--- a/source/RobotAPI/components/units/RobotUnit/SensorValues/SensorValue1DoFActuator.h
+++ b/source/RobotAPI/components/units/RobotUnit/SensorValues/SensorValue1DoFActuator.h
@@ -119,6 +119,7 @@ namespace armarx
             svi.addBaseClass<SensorValue1DoFActuatorVelocity>();
             svi.addBaseClass<SensorValue1DoFActuatorAcceleration>();
             svi.addBaseClass<SensorValue1DoFActuatorTorque>();
+            svi.addBaseClass<SensorValue1DoFGravityTorque>();
             return svi;
         }
     };
diff --git a/source/RobotAPI/libraries/core/PIDController.cpp b/source/RobotAPI/libraries/core/PIDController.cpp
index e364f8d9bcdc0e688a986cec002390acf32deae0..a2ae65747f82216d6c57ea52738d7df32a340482 100644
--- a/source/RobotAPI/libraries/core/PIDController.cpp
+++ b/source/RobotAPI/libraries/core/PIDController.cpp
@@ -127,7 +127,7 @@ void PIDController::update(double deltaSec, double measuredValue, double targetV
     if (!firstRun)
     {
         integral += error * deltaSec;
-
+        integral = math::MathUtils::LimitTo(integral, maxIntegral);
         if (deltaSec > 0.0)
         {
             derivative = (error - previousError) / deltaSec;
diff --git a/source/RobotAPI/libraries/core/PIDController.h b/source/RobotAPI/libraries/core/PIDController.h
index 8fa7fba0a9b6a8096e03b343a2cf8cd90f6e2c0a..f0409a76531fac273ca193bc3b844ab3b2926985 100644
--- a/source/RobotAPI/libraries/core/PIDController.h
+++ b/source/RobotAPI/libraries/core/PIDController.h
@@ -52,6 +52,7 @@ namespace armarx
         //    protected:
         float Kp, Ki, Kd;
         double integral;
+        double maxIntegral = std::numeric_limits<double>::max();
         double derivative;
         double previousError;
         double processValue;