56 const NJointControllerConfigPtr& config,
64 void rtRun(
const IceUtil::Time& sensorValuesTimestamp,
65 const IceUtil::Time& timeSinceLastIteration);
77 void runDMP(
const Ice::DoubleSeq& goals,
const Ice::Current&);
78 void setGoals(
const Ice::DoubleSeq& goals,
const Ice::Current&);
79 void setViaPoints(Ice::Double u,
const Ice::DoubleSeq& viapoint,
const Ice::Current&);
97 Eigen::VectorXf targetWrench;
99 struct DebugBufferData
101 StringFloatDictionary desired_torques;
103 float modifiedPoseRight_x;
104 float modifiedPoseRight_y;
105 float modifiedPoseRight_z;
106 float currentPoseLeft_x;
107 float currentPoseLeft_y;
108 float currentPoseLeft_z;
110 float modifiedPoseLeft_x;
111 float modifiedPoseLeft_y;
112 float modifiedPoseLeft_z;
113 float currentPoseRight_x;
114 float currentPoseRight_y;
115 float currentPoseRight_z;
125 float modifiedTwist_lx;
126 float modifiedTwist_ly;
127 float modifiedTwist_lz;
128 float modifiedTwist_rx;
129 float modifiedTwist_ry;
130 float modifiedTwist_rz;
136 Eigen::VectorXf wrenchDMP;
137 Eigen::VectorXf computedBoxWrench;
139 Eigen::VectorXf forceImpedance;
140 Eigen::VectorXf forcePID;
141 Eigen::VectorXf forcePIDControlValue;
142 Eigen::VectorXf poseError;
143 Eigen::VectorXf wrenchesConstrained;
144 Eigen::VectorXf wrenchesMeasuredInRoot;
149 struct NJointBimanualForceControllerSensorData
153 Eigen::Matrix4f currentPose;
154 Eigen::VectorXf currentTwist;
159 struct NJointBimanualForceControllerInterfaceData
161 Eigen::Matrix4f currentLeftPose;
162 Eigen::Matrix4f currentRightPose;
167 std::vector<ControlTarget1DoFActuatorTorque*> leftTargets;
168 std::vector<const SensorValue1DoFActuatorAcceleration*> leftAccelerationSensors;
169 std::vector<const SensorValue1DoFActuatorVelocity*> leftVelocitySensors;
170 std::vector<const SensorValue1DoFActuatorPosition*> leftPositionSensors;
172 std::vector<ControlTarget1DoFActuatorTorque*> rightTargets;
173 std::vector<const SensorValue1DoFActuatorAcceleration*> rightAccelerationSensors;
174 std::vector<const SensorValue1DoFActuatorVelocity*> rightVelocitySensors;
175 std::vector<const SensorValue1DoFActuatorPosition*> rightPositionSensors;
180 NJointBimanualForceControllerConfigPtr cfg;
181 VirtualRobot::DifferentialIKPtr leftIK;
182 VirtualRobot::DifferentialIKPtr rightIK;
190 Eigen::VectorXf leftDesiredJointValues;
191 Eigen::VectorXf rightDesiredJointValues;
193 Eigen::Matrix4f leftInitialPose;
194 Eigen::Matrix4f rightInitialPose;
195 Eigen::Matrix4f boxInitialPose;
197 Eigen::VectorXf KpImpedance;
198 Eigen::VectorXf KdImpedance;
199 Eigen::VectorXf KpAdmittance;
200 Eigen::VectorXf KdAdmittance;
201 Eigen::VectorXf KmAdmittance;
202 Eigen::VectorXf KmPID;
204 Eigen::VectorXf modifiedAcc;
205 Eigen::VectorXf modifiedTwist;
206 Eigen::Matrix4f modifiedLeftPose;
207 Eigen::Matrix4f modifiedRightPose;
209 Eigen::Matrix4f sensorFrame2TcpFrameLeft;
210 Eigen::Matrix4f sensorFrame2TcpFrameRight;
214 Eigen::Vector3f CoMVecLeft;
215 Eigen::Vector3f forceOffsetLeft;
216 Eigen::Vector3f torqueOffsetLeft;
219 Eigen::Vector3f CoMVecRight;
220 Eigen::Vector3f forceOffsetRight;
221 Eigen::Vector3f torqueOffsetRight;
227 std::vector<std::string> leftJointNames;
228 std::vector<std::string> rightJointNames;
231 VirtualRobot::RobotNodeSetPtr leftRNS;
232 VirtualRobot::RobotNodeSetPtr rightRNS;
233 VirtualRobot::RobotNodePtr tcpLeft;
234 VirtualRobot::RobotNodePtr tcpRight;
236 std::vector<PIDControllerPtr> forcePIDControllers;
240 Eigen::VectorXf filteredOldValue;