4 #include <VirtualRobot/VirtualRobot.h>
13 #include <armarx/control/deprecated_njoint_mp_controller/task_space/ControllerInterface.h>
17 class SensorValue1DoFActuatorTorque;
18 class SensorValue1DoFActuatorVelocity;
19 class SensorValue1DoFActuatorPosition;
20 class ControlTarget1DoFActuatorTorque;
21 class SensorValueForceTorque;
46 DeprecatedNJointPeriodicTSDMPCompliantControllerControlData>,
50 using ConfigPtrT = DeprecatedNJointPeriodicTSDMPCompliantControllerConfigPtr;
52 const NJointControllerConfigPtr& config,
64 void learnDMPFromFiles(
const Ice::StringSeq& fileNames,
const Ice::Current&)
override;
66 const Ice::Current&)
override;
70 void setGoals(
const Ice::DoubleSeq& goals,
const Ice::Current&)
override;
72 void runDMP(
const Ice::DoubleSeq& goals,
Ice::Double tau,
const Ice::Current&)
override;
74 void stopDMP(
const Ice::Current&)
override;
75 void resumeDMP(
const Ice::Current&)
override;
76 void pauseDMP(
const Ice::Current&)
override;
77 void resetDMP(
const Ice::Current&)
override;
80 double getCanVal(
const Ice::Current&)
override;
86 Eigen::Vector3f& torqueBaseline,
102 std::string kinematic_chain;
110 Eigen::VectorXf knull;
111 Eigen::VectorXf dnull;
113 Eigen::Vector4f pidForce;
116 Eigen::Vector3f tcpCoMInForceSensorFrame;
124 StringFloatDictionary latestTargetVelocities;
125 StringFloatDictionary currentPose;
126 double currentCanVal;
141 Eigen::Vector3f filteredForce;
142 Eigen::Vector3f reactForce;
143 Eigen::VectorXf targetVel;
145 Eigen::Vector3f targetVelInTool;
157 Eigen::VectorXf currentTwist;
164 struct RT2InterfaceData
167 float waitTimeForCalibration;
170 TripleBuffer<RT2InterfaceData> rt2InterfaceBuffer;
175 std::vector<const SensorValue1DoFActuatorVelocity*> velocitySensors;
176 std::vector<const SensorValue1DoFActuatorPosition*> positionSensors;
177 std::vector<ControlTarget1DoFActuatorTorque*> targets;
181 VirtualRobot::DifferentialIKPtr ik;
182 VirtualRobot::RobotNodePtr tcp;
186 DeprecatedNJointPeriodicTSDMPCompliantControllerConfigPtr cfg;
199 std::vector<std::string> jointNames;
201 Eigen::VectorXf nullSpaceJointsVec;
205 std::atomic_bool rtFirstRun =
true;
206 std::atomic_bool rtReady =
false;
207 std::atomic_bool mpRunning =
false;
210 Eigen::VectorXf qvel_filtered;
213 const SensorValueForceTorque* forceSensor;
214 Eigen::Vector3f forceOffset;
215 Eigen::Vector3f torqueOffset;
216 Eigen::Vector3f filteredForce;
217 Eigen::Vector3f filteredTorque;
218 Eigen::Vector3f filteredForceInRoot;
219 Eigen::Vector3f filteredTorqueInRoot;
220 std::atomic<float> timeForCalibration;
222 std::atomic_bool enableTCPGravityCompensation;
224 Eigen::Vector3f tcpCoMInTCPFrame;
231 Eigen::Vector2f lastPosition;