4 #include <VirtualRobot/VirtualRobot.h>
12 #include <armarx/control/deprecated_njoint_mp_controller/task_space/ControllerInterface.h>
14 #include <dmp/representation/dmp/umidmp.h>
18 class SensorValue1DoFActuatorTorque;
19 class SensorValue1DoFActuatorVelocity;
20 class SensorValue1DoFActuatorPosition;
21 class ControlTarget1DoFActuatorTorque;
22 class SensorValueForceTorque;
48 DeprecatedNJointTaskSpaceImpedanceDMPControllerControlData>,
52 using ConfigPtrT = DeprecatedNJointTaskSpaceImpedanceDMPControllerConfigPtr;
54 const NJointControllerConfigPtr& config,
58 std::string
getClassName(
const Ice::Current&)
const override;
66 void learnDMPFromFiles(
const Ice::StringSeq& fileNames,
const Ice::Current&)
override;
82 void setGoals(
const Ice::DoubleSeq& goals,
const Ice::Current&)
override;
85 const Ice::FloatSeq& currentJVS,
86 const Ice::Current&)
override;
87 void runDMP(
const Ice::DoubleSeq& goals,
88 const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
91 const Ice::Current&)
override;
96 return dmpCtrl->canVal;
99 void stopDMP(
const Ice::Current&)
override;
100 void resumeDMP(
const Ice::Current&)
override;
101 void resetDMP(
const Ice::Current&)
override;
103 void setMPWeights(
const DoubleSeqSeq& weights,
const Ice::Current&)
override;
104 DoubleSeqSeq
getMPWeights(
const Ice::Current&)
override;
116 const Ice::Current&)
override;
127 useForceStop =
false;
151 struct DebugBufferData
153 double currentCanVal;
166 float currentPose_qw;
167 float currentPose_qx;
168 float currentPose_qy;
169 float currentPose_qz;
177 float currentKnull_x;
178 float currentKnull_y;
179 float currentKnull_z;
187 float currentDnull_x;
188 float currentDnull_y;
189 float currentDnull_z;
191 StringFloatDictionary desired_torques;
192 StringFloatDictionary desired_nullspaceJoint;
193 float forceDesired_x;
194 float forceDesired_y;
195 float forceDesired_z;
196 float forceDesired_rx;
197 float forceDesired_ry;
198 float forceDesired_rz;
200 Eigen::Vector3f filteredForceInRoot;
207 struct DeprecatedNJointTaskSpaceImpedanceDMPControllerSensorData
212 Eigen::VectorXf currentTwist;
216 controllerSensorData;
218 struct DeprecatedNJointTaskSpaceImpedanceDMPControllerInterfaceData
228 Eigen::Vector3f kpos;
229 Eigen::Vector3f dpos;
230 Eigen::Vector3f kori;
231 Eigen::Vector3f dori;
232 Eigen::VectorXf knull;
233 Eigen::VectorXf dnull;
236 WriteBufferedTripleBuffer<CtrlParams> ctrlParams;
239 DMP::Vec<DMP::DMPState> currentJointState;
244 std::vector<const SensorValue1DoFActuatorTorque*> torqueSensors;
245 std::vector<const SensorValue1DoFActuatorVelocity*> velocitySensors;
246 std::vector<const SensorValue1DoFActuatorPosition*> positionSensors;
247 std::vector<ControlTarget1DoFActuatorTorque*> targets;
253 VirtualRobot::RobotNodeSetPtr rns;
260 double posToOriRatio;
263 DeprecatedNJointTaskSpaceImpedanceDMPControllerConfigPtr cfg;
264 VirtualRobot::DifferentialIKPtr ik;
265 VirtualRobot::RobotNodePtr tcp;
277 std::atomic_bool useNullSpaceJointDMP;
278 bool isNullSpaceJointDMPLearned;
281 WriteBufferedTripleBuffer<Eigen::VectorXf> defaultNullSpaceJointValues;
282 std::vector<std::string> jointNames;
286 bool started =
false;
287 bool stopped =
false;
291 Eigen::Vector3f filteredForce;
292 Eigen::Vector3f forceOffset;
293 Eigen::Vector3f filteredForceInRoot;
294 WriteBufferedTripleBuffer<Eigen::Vector3f> forceThreshold;
295 std::atomic<bool> useForceStop;
296 std::atomic<float> timeForCalibration;
297 const SensorValueForceTorque* forceSensor;