From e3740b4ca914c50be2f373a8e4278d7ed26ebd50 Mon Sep 17 00:00:00 2001 From: robdekon_h2t <robdekon@kit.edu> Date: Wed, 28 Jul 2021 16:41:54 +0200 Subject: [PATCH] Fixed unused setForceThreshold interface funktion in TaskSpaceImpedanceDMPController --- .../units/RobotUnit/NJointTaskSpaceDMPController.ice | 2 +- .../NJointTaskSpaceImpedanceDMPController.cpp | 5 +++-- .../DMPController/NJointTaskSpaceImpedanceDMPController.h | 8 +++++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/source/RobotAPI/interface/units/RobotUnit/NJointTaskSpaceDMPController.ice b/source/RobotAPI/interface/units/RobotUnit/NJointTaskSpaceDMPController.ice index a1ba8214c..56a17ef19 100644 --- a/source/RobotAPI/interface/units/RobotUnit/NJointTaskSpaceDMPController.ice +++ b/source/RobotAPI/interface/units/RobotUnit/NJointTaskSpaceDMPController.ice @@ -362,7 +362,7 @@ module armarx void enableForceStop(); void disableForceStop(); - void setForceThreshold(float forceThreshold); + void setForceThreshold(Eigen::Vector3f forceThreshold); }; class NJointTaskSpaceAdaptiveDMPControllerConfig extends NJointControllerConfig diff --git a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTaskSpaceImpedanceDMPController.cpp b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTaskSpaceImpedanceDMPController.cpp index 5fc97fcf5..712029cc7 100644 --- a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTaskSpaceImpedanceDMPController.cpp +++ b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTaskSpaceImpedanceDMPController.cpp @@ -46,7 +46,8 @@ namespace armarx forceOffset.setZero(); filteredForce.setZero(); filteredForceInRoot.setZero(); - + forceThreshold.getWriteBuffer() = cfg->forceThreshold; + forceThreshold.commitWrite(); tcp = rns->getTCP(); ik.reset(new VirtualRobot::DifferentialIK(rns, rtGetRobot()->getRootNode(), VirtualRobot::JacobiProvider::eSVDDamped)); ik->setDampedSvdLambda(0.0001); @@ -292,7 +293,7 @@ namespace armarx for (size_t i = 0; i < 3; ++i) { - if (fabs(filteredForceInRoot[i]) > cfg->forceThreshold[i]) + if (fabs(filteredForceInRoot[i]) > forceThreshold.getUpToDateReadBuffer()[i]) { stopPose = currentPose; targetVel.setZero(6); diff --git a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTaskSpaceImpedanceDMPController.h b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTaskSpaceImpedanceDMPController.h index c0f8fea95..3a6f685e4 100644 --- a/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTaskSpaceImpedanceDMPController.h +++ b/source/RobotAPI/libraries/RobotAPINJointControllers/DMPController/NJointTaskSpaceImpedanceDMPController.h @@ -94,9 +94,11 @@ namespace armarx { useForceStop = false; } - void setForceThreshold(float forceThreshold, const Ice::Current&) override + + void setForceThreshold(const Eigen::Vector3f& f, const Ice::Current& current) override { - this->forceThreshold = forceThreshold; + forceThreshold.getWriteBuffer() = f; + forceThreshold.commitWrite(); } protected: virtual void onPublish(const SensorAndControl&, const DebugDrawerInterfacePrx&, const DebugObserverInterfacePrx&) override; @@ -248,7 +250,7 @@ namespace armarx Eigen::Vector3f filteredForce; Eigen::Vector3f forceOffset; Eigen::Vector3f filteredForceInRoot; - std::atomic<float> forceThreshold; + WriteBufferedTripleBuffer<Eigen::Vector3f> forceThreshold; std::atomic<bool> useForceStop; std::atomic<float> timeForCalibration; const SensorValueForceTorque* forceSensor; -- GitLab