5 #include <VirtualRobot/IK/IKSolver.h>
6 #include <VirtualRobot/VirtualRobot.h>
11 #include <dmp/representation/dmp/umitsmp.h>
18 #include <armarx/control/deprecated_njoint_mp_controller/task_space/ControllerInterface.h>
22 class SensorValue1DoFActuatorTorque;
23 class SensorValue1DoFActuatorVelocity;
24 class SensorValue1DoFActuatorPosition;
25 class SensorValue1DoFGravityTorque;
26 class ControlTarget1DoFActuatorTorque;
27 class ControlTarget1DoFActuatorVelocity;
28 class SensorValueForceTorque;
37 using ViaPoint = std::pair<double, DMP::DVec>;
69 float derivative = (error - lastError) /
dt;
70 float retVal = Kp * error + Kd * derivative;
79 const NJointControllerConfigPtr& config,
83 std::string
getClassName(
const Ice::Current&)
const override;
92 learnDMPFromFiles(
int dmpId,
const Ice::StringSeq& fileNames,
const Ice::Current&)
override;
100 void runDMP(
const Ice::Current&)
override;
104 const Ice::DoubleSeq& viapoint,
105 const Ice::Current&)
override;
106 void setGoals(
int dmpId,
const Ice::DoubleSeq& goals,
const Ice::Current&)
override;
110 const Ice::Current&)
override;
111 void setTorqueKp(
const StringFloatDictionary& torqueKp,
const Ice::Current&)
override;
113 const Ice::Current&)
override;
129 struct DebugBufferData
131 StringFloatDictionary latestTargetVelocities;
132 StringFloatDictionary dmpTargets;
133 StringFloatDictionary realTCP;
146 struct NJointCCDMPControllerSensorData
155 std::vector<const SensorValue1DoFActuatorTorque*> torqueSensors;
156 std::vector<const SensorValue1DoFGravityTorque*> gravityTorqueSensors;
157 std::vector<ControlTarget1DoFActuatorVelocity*> targets;
160 std::vector<pidController> torquePIDs;
162 std::string nodeSetName;
165 std::vector<DMP::UMITSMPPtr> dmpPtrList;
166 std::vector<double> canVals;
167 std::vector<double> timeDurations;
168 std::vector<std::string> dmpTypes;
169 std::vector<double> amplitudes;
171 std::vector<DMP::Vec<DMP::DMPState>> currentStates;
172 std::vector<DMP::DVec> targetSubStates;
188 double posToOriRatio;
190 Eigen::VectorXf targetVels;
192 std::vector<int> learnedDMP;
195 NJointCCDMPControllerConfigPtr cfg;
196 VirtualRobot::RobotNodePtr tcp;
197 Eigen::Vector3f tcpPosition;
201 VirtualRobot::DifferentialIKPtr ik;