4 #include <VirtualRobot/VirtualRobot.h>
13 #include <armarx/control/deprecated_njoint_mp_controller/task_space/ControllerInterface.h>
15 #include <dmp/representation/dmp/umidmp.h>
19 class SensorValue1DoFActuatorTorque;
20 class SensorValue1DoFActuatorVelocity;
21 class SensorValue1DoFActuatorPosition;
22 class ControlTarget1DoFActuatorTorque;
23 class SensorValueForceTorque;
49 DeprecatedNJointTaskSpaceAdmittanceDMPControllerControlData>,
53 using ConfigPtrT = DeprecatedNJointTaskSpaceAdmittanceDMPControllerConfigPtr;
55 const NJointControllerConfigPtr& config,
59 std::string
getClassName(
const Ice::Current&)
const override;
66 void learnDMPFromFiles(
const Ice::StringSeq& fileNames,
const Ice::Current&)
override;
71 void setGoals(
const Ice::DoubleSeq& goals,
const Ice::Current&)
override;
74 const Ice::FloatSeq& currentJVS,
75 const Ice::Current&)
override;
76 void runDMP(
const Ice::DoubleSeq& goals,
77 const Ice::Current& iceCurrent = Ice::emptyCurrent)
override;
80 const Ice::Current&)
override;
84 void stopDMP(
const Ice::Current&)
override;
85 void resumeDMP(
const Ice::Current&)
override;
86 void pauseDMP(
const Ice::Current&)
override;
87 void resetDMP(
const Ice::Current&)
override;
89 void setMPWeights(
const DoubleSeqSeq& weights,
const Ice::Current&)
override;
108 const Ice::Current&)
override;
110 const Eigen::Vector3f&,
111 const Ice::Current&)
override;
117 const Ice::DoubleSeq& goals,
118 const Ice::Current& ice)
override;
121 Eigen::Vector3f& torqueBaseline,
138 std::string kinematic_chain;
143 double currentCanVal;
156 float virtualPose_qw;
157 float virtualPose_qx;
158 float virtualPose_qy;
159 float virtualPose_qz;
164 float currentPose_qw;
165 float currentPose_qx;
166 float currentPose_qy;
167 float currentPose_qz;
175 float currentKnull_x;
176 float currentKnull_y;
177 float currentKnull_z;
185 float currentDnull_x;
186 float currentDnull_y;
187 float currentDnull_z;
189 StringFloatDictionary desired_torques;
190 StringFloatDictionary desired_nullspaceJoint;
191 float forceDesired_x;
192 float forceDesired_y;
193 float forceDesired_z;
194 float forceDesired_rx;
195 float forceDesired_ry;
196 float forceDesired_rz;
205 float ft_FilteredInRoot_x;
206 float ft_FilteredInRoot_y;
207 float ft_FilteredInRoot_z;
208 float ft_FilteredInRoot_rx;
209 float ft_FilteredInRoot_ry;
210 float ft_FilteredInRoot_rz;
216 Eigen::Vector3f forceBaseline;
217 Eigen::Vector3f torqueBaseline;
218 Eigen::Vector3f forceOffset;
219 Eigen::Vector3f torqueOffset;
230 Eigen::VectorXf currentTwist;
236 struct RT2InterfaceData
253 Eigen::VectorXf knull;
254 Eigen::VectorXf dnull;
256 Eigen::Vector3f forceBaseline;
257 Eigen::Vector3f torqueBaseline;
260 Eigen::Vector3f tcpCoMInForceSensorFrame;
274 std::vector<const SensorValue1DoFActuatorTorque*> torqueSensors;
275 std::vector<const SensorValue1DoFActuatorVelocity*> velocitySensors;
276 std::vector<const SensorValue1DoFActuatorPosition*> positionSensors;
277 std::vector<ControlTarget1DoFActuatorTorque*> targets;
279 VirtualRobot::DifferentialIKPtr ik;
280 VirtualRobot::RobotNodePtr tcp;
283 DMP::Vec<DMP::DMPState> currentJointState;
288 DeprecatedNJointTaskSpaceAdmittanceDMPControllerConfigPtr cfg;
296 double posToOriRatio;
300 std::vector<std::string> jointNames;
302 std::atomic_bool useNullSpaceJointDMP;
303 bool isNullSpaceJointDMPLearned;
305 std::atomic_bool rtFirstRun =
true;
306 std::atomic_bool rtReady =
false;
307 std::atomic_bool mpRunning =
false;
308 std::atomic_bool mpFinished =
false;
311 Eigen::VectorXf qvel_filtered;
315 Eigen::Vector3f forceOffset;
316 Eigen::Vector3f torqueOffset;
317 Eigen::Vector3f filteredForce;
318 Eigen::Vector3f filteredTorque;
319 Eigen::Vector3f filteredForceInRoot;
320 Eigen::Vector3f filteredTorqueInRoot;
321 std::atomic<float> timeForCalibration;
323 std::atomic_bool enableTCPGravityCompensation;
325 Eigen::Vector3f tcpCoMInTCPFrame;