4 #include <VirtualRobot/VirtualRobot.h>
13 #include <armarx/control/deprecated_njoint_mp_controller/bimanual/ForceMPControllerInterface.h>
17 class SensorValue1DoFActuatorTorque;
18 class SensorValue1DoFActuatorVelocity;
19 class SensorValue1DoFActuatorPosition;
20 class SensorValue1DoFActuatorAcceleration;
21 class ControlTarget1DoFActuatorVelocity;
22 class SensorValueForceTorque;
32 using ViaPoint = std::pair<double, DMP::DVec>;
51 using ConfigPtrT = NJointBimanualForceMPControllerConfigPtr;
53 const NJointControllerConfigPtr& config,
57 std::string
getClassName(
const Ice::Current&)
const override;
66 const Ice::StringSeq& fileNames,
67 const Ice::Current&)
override;
75 void runDMP(
const Ice::DoubleSeq& leftGoals,
76 const Ice::DoubleSeq& rightGoals,
77 const Ice::Current&)
override;
87 const Ice::DoubleSeq& viaPoint,
88 const Ice::Current&)
override;
101 struct DebugBufferData
103 StringFloatDictionary dmpTargets;
104 StringFloatDictionary currentPose;
111 struct NJointBimanualForceMPControllerSensorData
119 Eigen::Vector3f leftForceInRootFrame;
120 Eigen::Vector3f rightForceInRootFrame;
126 struct NJointBimanualForceMPControllerInterfaceData
134 std::vector<ControlTarget1DoFActuatorVelocity*> leftTargets;
135 std::vector<const SensorValue1DoFActuatorVelocity*> leftVelocitySensors;
136 std::vector<const SensorValue1DoFActuatorPosition*> leftPositionSensors;
138 std::vector<ControlTarget1DoFActuatorVelocity*> rightTargets;
139 std::vector<const SensorValue1DoFActuatorVelocity*> rightVelocitySensors;
140 std::vector<const SensorValue1DoFActuatorPosition*> rightPositionSensors;
145 VirtualRobot::DifferentialIKPtr leftIK;
146 VirtualRobot::DifferentialIKPtr rightIK;
158 VirtualRobot::RobotNodePtr leftTCP;
159 VirtualRobot::RobotNodePtr rightTCP;
162 Eigen::VectorXf targetVels;
165 NJointBimanualForceMPControllerConfigPtr cfg;
187 Eigen::Vector3f leftFilteredValue;
188 Eigen::Vector3f rightFilteredValue;
190 Eigen::Vector3f leftForceOffset;
191 Eigen::Vector3f rightForceOffset;
192 float targetSupportForce;