44 const NJointControllerConfigPtr& config,
52 void rtRun(
const IceUtil::Time& sensorValuesTimestamp,
53 const IceUtil::Time& timeSinceLastIteration);
67 Eigen::Matrix3f mat = Eigen::MatrixXf::Zero(3, 3);
78 void runDMP(
const Ice::DoubleSeq& goals, Ice::Double timeDuration,
const Ice::Current&);
80 const Ice::DoubleSeq& goals,
81 Ice::Double timeDuration,
84 void setGoals(
const Ice::DoubleSeq& goals,
const Ice::Current&);
85 void setViaPoints(Ice::Double u,
const Ice::DoubleSeq& viapoint,
const Ice::Current&);
94 void setKpImpedance(
const Ice::FloatSeq& value,
const Ice::Current&);
95 void setKdImpedance(
const Ice::FloatSeq& value,
const Ice::Current&);
103 void setMPWeights(
const DoubleSeqSeq& weights,
const Ice::Current&);
106 void setMPRotWeights(
const DoubleSeqSeq& weights,
const Ice::Current&);
119 Eigen::VectorXf targetWrench;
121 struct DebugBufferData
123 StringFloatDictionary desired_torques;
154 float modifiedPoseRight_x;
155 float modifiedPoseRight_y;
156 float modifiedPoseRight_z;
157 float currentPoseLeft_x;
158 float currentPoseLeft_y;
159 float currentPoseLeft_z;
169 float modifiedPoseLeft_x;
170 float modifiedPoseLeft_y;
171 float modifiedPoseLeft_z;
172 float currentPoseRight_x;
173 float currentPoseRight_y;
174 float currentPoseRight_z;
184 float modifiedTwist_lx;
185 float modifiedTwist_ly;
186 float modifiedTwist_lz;
187 float modifiedTwist_rx;
188 float modifiedTwist_ry;
189 float modifiedTwist_rz;
195 Eigen::VectorXf wrenchDMP;
196 Eigen::VectorXf computedBoxWrench;
198 Eigen::VectorXf forceImpedance;
199 Eigen::VectorXf forcePID;
200 Eigen::VectorXf forcePIDControlValue;
201 Eigen::VectorXf poseError;
202 Eigen::VectorXf wrenchesConstrained;
203 Eigen::VectorXf wrenchesMeasuredInRoot;
208 struct rt2ControlData
212 Eigen::Matrix4f currentPose;
213 Eigen::VectorXf currentTwist;
218 struct ControlInterfaceData
220 Eigen::Matrix4f currentLeftPose;
221 Eigen::Matrix4f currentRightPose;
222 Eigen::Matrix4f currentObjPose;
223 Eigen::Vector3f currentObjVel;
224 Eigen::Vector3f currentObjForce;
229 struct Inferface2rtData
231 Eigen::VectorXf KpImpedance;
232 Eigen::VectorXf KdImpedance;
233 Eigen::VectorXf KmAdmittance;
234 Eigen::VectorXf KpAdmittance;
235 Eigen::VectorXf KdAdmittance;
238 TripleBuffer<Inferface2rtData> interface2rtBuffer;
241 std::vector<ControlTarget1DoFActuatorTorque*> leftTargets;
242 std::vector<const SensorValue1DoFActuatorAcceleration*> leftAccelerationSensors;
243 std::vector<const SensorValue1DoFActuatorVelocity*> leftVelocitySensors;
244 std::vector<const SensorValue1DoFActuatorPosition*> leftPositionSensors;
246 std::vector<ControlTarget1DoFActuatorTorque*> rightTargets;
247 std::vector<const SensorValue1DoFActuatorAcceleration*> rightAccelerationSensors;
248 std::vector<const SensorValue1DoFActuatorVelocity*> rightVelocitySensors;
249 std::vector<const SensorValue1DoFActuatorPosition*> rightPositionSensors;
251 const SensorValueForceTorque* rightForceTorque;
252 const SensorValueForceTorque* leftForceTorque;
254 NJointBimanualObjLevelControllerConfigPtr cfg;
255 VirtualRobot::DifferentialIKPtr leftIK;
256 VirtualRobot::DifferentialIKPtr rightIK;
264 Eigen::VectorXf leftDesiredJointValues;
265 Eigen::VectorXf rightDesiredJointValues;
267 Eigen::Matrix4f leftInitialPose;
268 Eigen::Matrix4f rightInitialPose;
269 Eigen::Matrix4f boxInitialPose;
271 Eigen::VectorXf KpImpedance;
272 Eigen::VectorXf KdImpedance;
273 Eigen::VectorXf KpAdmittance;
274 Eigen::VectorXf KdAdmittance;
275 Eigen::VectorXf KmAdmittance;
276 Eigen::VectorXf KmPID;
278 Eigen::VectorXf virtualAcc;
279 Eigen::VectorXf virtualVel;
280 Eigen::Matrix4f virtualPose;
282 Eigen::Matrix4f sensorFrame2TcpFrameLeft;
283 Eigen::Matrix4f sensorFrame2TcpFrameRight;
287 Eigen::Vector3f CoMVecLeft;
288 Eigen::Vector3f forceOffsetLeft;
289 Eigen::Vector3f torqueOffsetLeft;
292 Eigen::Vector3f CoMVecRight;
293 Eigen::Vector3f forceOffsetRight;
294 Eigen::Vector3f torqueOffsetRight;
299 std::vector<std::string> leftJointNames;
300 std::vector<std::string> rightJointNames;
303 VirtualRobot::RobotNodeSetPtr leftRNS;
304 VirtualRobot::RobotNodeSetPtr rightRNS;
305 VirtualRobot::RobotNodePtr tcpLeft;
306 VirtualRobot::RobotNodePtr tcpRight;
308 std::vector<PIDControllerPtr> forcePIDControllers;
312 Eigen::VectorXf filteredOldValue;
315 double ftcalibrationTimer;
316 Eigen::VectorXf ftOffset;
318 Eigen::Matrix3f fixedLeftRightRotOffset;
319 Eigen::Vector3f objCom2TCPLeftInObjFrame, objCom2TCPRightInObjFrame;