46 DeprecatedNJointPeriodicTSDMPCompliantControllerControlData>,
50 using ConfigPtrT = DeprecatedNJointPeriodicTSDMPCompliantControllerConfigPtr;
52 const NJointControllerConfigPtr& config,
60 void rtRun(
const IceUtil::Time& sensorValuesTimestamp,
61 const IceUtil::Time& timeSinceLastIteration);
64 void learnDMPFromFiles(
const Ice::StringSeq& fileNames,
const Ice::Current&)
override;
66 const Ice::Current&)
override;
69 void setSpeed(Ice::Double times,
const Ice::Current&)
override;
70 void setGoals(
const Ice::DoubleSeq& goals,
const Ice::Current&)
override;
71 void setAmplitude(Ice::Double amp,
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;
140 Eigen::Matrix4f targetPose;
141 Eigen::Vector3f filteredForce;
142 Eigen::Vector3f reactForce;
143 Eigen::VectorXf targetVel;
144 Eigen::Matrix4f currentPose;
145 Eigen::Vector3f targetVelInTool;
156 Eigen::Matrix4f currentPose;
157 Eigen::VectorXf currentTwist;
164 struct RT2InterfaceData
166 Eigen::Matrix4f currentTcpPose;
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;
209 Eigen::Matrix4f previousTargetPose;
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;
223 Eigen::Matrix4f forceFrameInTCP = Eigen::Matrix4f::Identity();
224 Eigen::Vector3f tcpCoMInTCPFrame;
227 Eigen::Matrix4f toolFrameInRoot;
228 Eigen::Matrix3f toolOriInHand;
231 Eigen::Vector2f lastPosition;