From fa0749eec4962d5fef630455dd1b022cca81f36e Mon Sep 17 00:00:00 2001
From: ArmarX User <armarx@kit.edu>
Date: Mon, 18 Feb 2019 14:15:06 +0100
Subject: [PATCH] changes for recording the films

---
 .../DMPController/NJointTSDMPController.cpp   | 22 +++++++++++++++++++
 .../DMPController/NJointTSDMPController.h     |  3 +++
 .../NJointGripperZeroTorqueController.cpp     | 10 ++++++---
 .../NJointGripperZeroTorqueController.h       |  1 +
 4 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTSDMPController.cpp b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTSDMPController.cpp
index a8fc99878..37dcd2291 100644
--- a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTSDMPController.cpp
+++ b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTSDMPController.cpp
@@ -98,7 +98,19 @@ namespace armarx
         filtered_position.setZero();
         pos_filter_factor = cfg->pos_filter;
 
+        //        jlhigh = rns->getNode("..")->getJointLimitHi();
+        //        jllow = rns->getNode("")->getJointLimitLo();
         firstRun = true;
+
+        jointLowLimits.setZero(targets.size());
+        jointHighLimits.setZero(targets.size());
+        for (size_t i = 0; i < rns->getSize(); i++)
+        {
+            VirtualRobot::RobotNodePtr rn = rns->getAllRobotNodes().at(i);
+
+            jointLowLimits(i) = rn->getJointLimitLo();
+            jointHighLimits(i) = rn->getJointLimitHi();
+        }
     }
 
     std::string NJointTSDMPController::getClassName(const Ice::Current&) const
@@ -184,9 +196,12 @@ namespace armarx
 
         Eigen::VectorXf qvel;
         qvel.resize(velocitySensors.size());
+        Eigen::VectorXf qpos;
+        qpos.resize(positionSensors.size());
         for (size_t i = 0; i < velocitySensors.size(); ++i)
         {
             qvel(i) = velocitySensors[i]->velocity;
+            qpos(i) = positionSensors[i]->position;
         }
 
         filtered_qvel = (1 - vel_filter_factor) * filtered_qvel + vel_filter_factor * qvel;
@@ -283,6 +298,7 @@ namespace armarx
         for (size_t i = 0; i < tcpController->rns->getSize(); i++)
         {
             jnv(i) += rtGetControlStruct().nullspaceJointVelocities.at(i);
+
             //            if (torqueSensors.at(i) && gravityTorqueSensors.at(i) && rtGetControlStruct().torqueKp.at(i) != 0)
             //            {
             //                torquePIDs.at(i).Kp = rtGetControlStruct().torqueKp.at(i);
@@ -308,6 +324,12 @@ namespace armarx
                                  << "Velocity controller target is invalid - setting to zero! set value: " << targets.at(i)->velocity;
                 targets.at(i)->velocity = 0.0f;
             }
+
+            //            if (qpos(i) > jointHighLimits(i) || qpos(i) < jointLowLimits(i))
+            //            {
+            //                targets.at(i)->velocity = 0;
+            //            }
+
         }
 
 
diff --git a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTSDMPController.h b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTSDMPController.h
index 91fd0b4b6..498ec423e 100644
--- a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTSDMPController.h
+++ b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTSDMPController.h
@@ -173,6 +173,9 @@ namespace armarx
         float DpF;
         float KoF;
         float DoF;
+
+        Eigen::VectorXf jointHighLimits;
+        Eigen::VectorXf jointLowLimits;
     };
 
 } // namespace armarx
diff --git a/source/RobotAPI/libraries/RobotAPINJointControllers/GripperController/NJointGripperZeroTorqueController.cpp b/source/RobotAPI/libraries/RobotAPINJointControllers/GripperController/NJointGripperZeroTorqueController.cpp
index 4173f0942..0ce94824e 100644
--- a/source/RobotAPI/libraries/RobotAPINJointControllers/GripperController/NJointGripperZeroTorqueController.cpp
+++ b/source/RobotAPI/libraries/RobotAPINJointControllers/GripperController/NJointGripperZeroTorqueController.cpp
@@ -17,6 +17,8 @@ namespace armarx
             ControlTargetBase* ct = useControlTarget(jointName, ControlModes::ZeroTorque1DoF);
             targets.push_back(ct->asA<ControlTarget1DoFActuatorZeroTorque>());
         };
+        //        ControlTargetBase* ctPump = useControlTarget("KIT_Gripper_Pump", ControlModes::Velocity1DoF);
+        //        pumpTarget.push_back(ctPump->asA<ControlTarget1DoFActuatorVelocity>());
     }
 
     std::string NJointGripperZeroTorqueController::getClassName(const Ice::Current&) const
@@ -25,14 +27,16 @@ namespace armarx
     }
 
     void NJointGripperZeroTorqueController::rtRun(const IceUtil::Time& sensorValuesTimestamp, const IceUtil::Time& timeSinceLastIteration)
-    { 
+    {
         for (size_t i = 0; i < targets.size(); ++i)
         {
             targets.at(i)->torque = 0;
         }
+
+        //        pumpTarget.at(0)->velocity = 70.0;
     }
 
-    WidgetDescription::WidgetPtr NJointGripperZeroTorqueController::GenerateConfigDescription(const VirtualRobot::RobotPtr & robot, const std::map<std::string, ConstControlDevicePtr> & controlDevices, const std::map<std::string, ConstSensorDevicePtr> &)
+    WidgetDescription::WidgetPtr NJointGripperZeroTorqueController::GenerateConfigDescription(const VirtualRobot::RobotPtr& robot, const std::map<std::string, ConstControlDevicePtr>& controlDevices, const std::map<std::string, ConstSensorDevicePtr>&)
     {
         using namespace armarx::WidgetDescription;
         HBoxLayoutPtr layout = new HBoxLayout;
@@ -50,7 +54,7 @@ namespace armarx
         return layout;
     }
 
-    NJointGripperZeroTorqueControllerConfigPtr NJointGripperZeroTorqueController::GenerateConfigFromVariants(const StringVariantBaseMap &values)
+    NJointGripperZeroTorqueControllerConfigPtr NJointGripperZeroTorqueController::GenerateConfigFromVariants(const StringVariantBaseMap& values)
     {
         return new NJointGripperZeroTorqueControllerConfig(values.at("nodeSetName")->getString());
     }
diff --git a/source/RobotAPI/libraries/RobotAPINJointControllers/GripperController/NJointGripperZeroTorqueController.h b/source/RobotAPI/libraries/RobotAPINJointControllers/GripperController/NJointGripperZeroTorqueController.h
index f5c6accfc..2480895a5 100644
--- a/source/RobotAPI/libraries/RobotAPINJointControllers/GripperController/NJointGripperZeroTorqueController.h
+++ b/source/RobotAPI/libraries/RobotAPINJointControllers/GripperController/NJointGripperZeroTorqueController.h
@@ -47,6 +47,7 @@ namespace armarx
 
     private:
         std::vector<ControlTarget1DoFActuatorZeroTorque*> targets;
+        //        std::vector<ControlTarget1DoFActuatorVelocity*> pumpTarget;
     };
 
 } // namespace armarx
-- 
GitLab