public void initializeDesiredFootstep(RobotSide supportLegSide) { RobotSide swingLegSide = supportLegSide.getOppositeSide(); ReferenceFrame supportAnkleZUpFrame = ankleZUpFrames.get(supportLegSide); ReferenceFrame supportAnkleFrame = ankleFrames.get(supportLegSide); computeDistanceAndAngleToDestination( supportAnkleZUpFrame, swingLegSide, desiredDestination.getFramePoint2dCopy()); if (distanceToDestination.getDoubleValue() < DISTANCE_TO_DESTINATION_FOR_STEP_IN_PLACE) { numberBlindStepsInPlace.increment(); } Matrix3d footToWorldRotation = computeDesiredFootRotation( angleToDestination.getDoubleValue(), swingLegSide, supportAnkleFrame); FramePoint footstepPosition = getDesiredFootstepPositionCopy( supportAnkleZUpFrame, supportAnkleFrame, swingLegSide, desiredDestination.getFramePoint2dCopy(), footToWorldRotation); setYoVariables(swingLegSide, footToWorldRotation, footstepPosition); }
@Override public Footstep predictFootstepAfterDesiredFootstep( RobotSide supportLegSide, Footstep desiredFootstep) { RobotSide futureSwingLegSide = supportLegSide; ReferenceFrame futureSupportAnkleFrame = desiredFootstep.getPoseReferenceFrame(); ReferenceFrame futureSupportAnkleZUpFrame = new ZUpFrame(ReferenceFrame.getWorldFrame(), futureSupportAnkleFrame, "ankleZUp"); futureSupportAnkleZUpFrame.update(); computeDistanceAndAngleToDestination( futureSupportAnkleZUpFrame, futureSwingLegSide, desiredDestination.getFramePoint2dCopy()); Matrix3d footToWorldRotation = computeDesiredFootRotation( angleToDestination.getDoubleValue(), futureSwingLegSide, futureSupportAnkleFrame); FramePoint footstepPosition = getDesiredFootstepPositionCopy( futureSupportAnkleZUpFrame, futureSupportAnkleFrame, futureSwingLegSide, desiredDestination.getFramePoint2dCopy(), footToWorldRotation); FrameOrientation footstepOrientation = new FrameOrientation(ReferenceFrame.getWorldFrame()); double[] yawPitchRoll = new double[3]; RotationTools.convertMatrixToYawPitchRoll(footToWorldRotation, yawPitchRoll); footstepOrientation.setYawPitchRoll(yawPitchRoll); FramePose footstepPose = new FramePose(footstepPosition, footstepOrientation); footstepPose.changeFrame(ReferenceFrame.getWorldFrame()); PoseReferenceFrame poseReferenceFrame = new PoseReferenceFrame("poseReferenceFrame", footstepPose); ContactablePlaneBody foot = contactableBodies.get(futureSwingLegSide); boolean trustHeight = true; return new Footstep( foot.getRigidBody(), futureSwingLegSide, foot.getSoleFrame(), poseReferenceFrame, trustHeight); }
@Override public void updateCoP() { yoResolvedCoP.setToZero(); }