From 378e61fb3944660e13fd7a1119a5c05303928463 Mon Sep 17 00:00:00 2001
From: Mirko Waechter <mirko.waechter@kit.edu>
Date: Fri, 16 Nov 2018 11:39:15 +0100
Subject: [PATCH] added limitless joint support for trajectory controller

---
 .../libraries/core/TrajectoryController.cpp        | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/source/RobotAPI/libraries/core/TrajectoryController.cpp b/source/RobotAPI/libraries/core/TrajectoryController.cpp
index ef74dd1fc..5328d534a 100644
--- a/source/RobotAPI/libraries/core/TrajectoryController.cpp
+++ b/source/RobotAPI/libraries/core/TrajectoryController.cpp
@@ -48,6 +48,7 @@ namespace armarx
         //}
         positions.resize(traj->dim(), 1);
         veloctities.resize(traj->dim(), 1);
+        currentError.resize(traj->dim(), 1);
     }
 
     const Eigen::VectorXf& TrajectoryController::update(double deltaT, const Eigen::VectorXf& currentPosition)
@@ -82,7 +83,18 @@ namespace armarx
                 veloctities(i) = 0;
             }
         }
-        currentError = positions - currentPosition;
+        for (size_t i = 0; i < dim; ++i)
+        {
+            if (pid->limitless.size() > i && pid->limitless.at(i))
+            {
+                currentError(i) = math::MathUtils::AngleDelta(currentPosition(i), positions(i));
+            }
+            else
+            {
+                currentError(i) = positions(i) - currentPosition(i);
+            }
+
+        }
 
         pid->update(std::abs(deltaT), currentPosition, positions);
         veloctities += pid->getControlValue();
-- 
GitLab