From d82aa7877c3d7256546022b659f999de0d178cba Mon Sep 17 00:00:00 2001
From: zhou <you.zhou@kit.edu>
Date: Tue, 10 Sep 2019 09:32:22 +0200
Subject: [PATCH] modified the NJointAnomalyDetectionAdaptiveWipingController

---
 .../NJointTaskSpaceDMPController.ice          |  1 +
 ...omalyDetectionAdaptiveWipingController.cpp | 21 +++++++++++++------
 ...AnomalyDetectionAdaptiveWipingController.h |  3 +++
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/source/RobotAPI/interface/units/RobotUnit/NJointTaskSpaceDMPController.ice b/source/RobotAPI/interface/units/RobotUnit/NJointTaskSpaceDMPController.ice
index e80c3cf92..4b4211d8a 100644
--- a/source/RobotAPI/interface/units/RobotUnit/NJointTaskSpaceDMPController.ice
+++ b/source/RobotAPI/interface/units/RobotUnit/NJointTaskSpaceDMPController.ice
@@ -565,6 +565,7 @@ module armarx
         double getCanVal();
 
         Ice::FloatSeq getAnomalyInput();
+        Ice::FloatSeq getAnomalyOutput();
     };
 };
 
diff --git a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointAnomalyDetectionAdaptiveWipingController.cpp b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointAnomalyDetectionAdaptiveWipingController.cpp
index efb6befa7..c7fe811d8 100644
--- a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointAnomalyDetectionAdaptiveWipingController.cpp
+++ b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointAnomalyDetectionAdaptiveWipingController.cpp
@@ -286,12 +286,6 @@ namespace armarx
             velocityHorizonList.pop_front();
         }
 
-        rt2UserData.getWriteBuffer().currentTcpPose = currentPose;
-        rt2UserData.getWriteBuffer().tcpTranslVel = currentTwist.head(3);
-        rt2UserData.getWriteBuffer().waitTimeForCalibration += deltaT;
-
-        rt2UserData.commitWrite();
-
         Eigen::VectorXf targetVel(6);
         Eigen::Vector3f axis;
         Eigen::Vector3f forceInToolFrame;
@@ -573,6 +567,14 @@ namespace armarx
             //            targetFTInRootFrame.tail(3) = currentToolOri * targetFTInToolFrame.tail(3);
         }
 
+
+        rt2UserData.getWriteBuffer().currentTcpPose = currentPose;
+        rt2UserData.getWriteBuffer().tcpTranslVel = currentTwist.head(3);
+        rt2UserData.getWriteBuffer().forceOutput = forceInToolFrame;
+        rt2UserData.getWriteBuffer().waitTimeForCalibration += deltaT;
+        rt2UserData.commitWrite();
+
+
         /* -------------------------- VMP Phase Stop --------------------------------- */
 
         bool isPhaseStop = false;
@@ -795,6 +797,13 @@ namespace armarx
         return tvelvec;
     }
 
+    std::vector<float> NJointAnomalyDetectionAdaptiveWipingController::getAnomalyOutput(const Ice::Current&)
+    {
+        Eigen::Vector3f force = rt2UserData.getUpToDateReadBuffer().forceOutput;
+        std::vector<float> forceVec = {force(0), force(1), force(2)};
+        return forceVec;
+    }
+
 
     void NJointAnomalyDetectionAdaptiveWipingController::onPublish(const SensorAndControl&, const DebugDrawerInterfacePrx& debugDrawer, const DebugObserverInterfacePrx& debugObs)
     {
diff --git a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointAnomalyDetectionAdaptiveWipingController.h b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointAnomalyDetectionAdaptiveWipingController.h
index 8940f3b04..154b2c8ce 100644
--- a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointAnomalyDetectionAdaptiveWipingController.h
+++ b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointAnomalyDetectionAdaptiveWipingController.h
@@ -82,6 +82,8 @@ namespace armarx
         }
 
         std::vector<float> getAnomalyInput(const Ice::Current&);
+        std::vector<float> getAnomalyOutput(const Ice::Current&);
+
     protected:
         virtual void onPublish(const SensorAndControl&, const DebugDrawerInterfacePrx&, const DebugObserverInterfacePrx&);
 
@@ -151,6 +153,7 @@ namespace armarx
         {
             Eigen::Matrix4f currentTcpPose;
             Eigen::Vector3f tcpTranslVel;
+            Eigen::Vector3f forceOutput;
             float waitTimeForCalibration;
         };
         TripleBuffer<RTToUserData> rt2UserData;
-- 
GitLab