@Override public PIDSE3Gains getToeOffFootControlGains() { double kpXY = 100.0; double kpZ = 0.0; double zetaXYZ = runningOnRealRobot ? 0.4 : 0.4; double kpXYOrientation = runningOnRealRobot ? 200.0 : 200.0; double kpZOrientation = runningOnRealRobot ? 200.0 : 200.0; double zetaOrientation = runningOnRealRobot ? 0.4 : 0.4; double maxLinearAcceleration = runningOnRealRobot ? 10.0 : Double.POSITIVE_INFINITY; double maxLinearJerk = runningOnRealRobot ? 150.0 : Double.POSITIVE_INFINITY; double maxAngularAcceleration = runningOnRealRobot ? 100.0 : Double.POSITIVE_INFINITY; double maxAngularJerk = runningOnRealRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(GainCoupling.XY, false); gains.setPositionProportionalGains(kpXY, kpXY, kpZ); gains.setPositionDampingRatios(zetaXYZ); gains.setPositionMaxFeedbackAndFeedbackRate(maxLinearAcceleration, maxLinearJerk); gains.setOrientationProportionalGains(kpXYOrientation, kpXYOrientation, kpZOrientation); gains.setOrientationDampingRatios(zetaOrientation); gains.setOrientationMaxFeedbackAndFeedbackRate(maxAngularAcceleration, maxAngularJerk); return gains; }
@Override public PIDSE3Gains getHoldPositionFootControlGains() { double kpXY = 100.0; double kpZ = 0.0; double zetaXYZ = runningOnRealRobot ? 0.2 : 1.0; double kpXYOrientation = runningOnRealRobot ? 40.0 : 100.0; double kpZOrientation = runningOnRealRobot ? 40.0 : 100.0; double zetaOrientation = runningOnRealRobot ? 0.2 : 1.0; double maxLinearAcceleration = runningOnRealRobot ? 10.0 : Double.POSITIVE_INFINITY; double maxLinearJerk = runningOnRealRobot ? 150.0 : Double.POSITIVE_INFINITY; double maxAngularAcceleration = runningOnRealRobot ? 100.0 : Double.POSITIVE_INFINITY; double maxAngularJerk = runningOnRealRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(GainCoupling.XY, false); gains.setPositionProportionalGains(kpXY, kpXY, kpZ); gains.setPositionDampingRatios(zetaXYZ); gains.setPositionMaxFeedbackAndFeedbackRate(maxLinearAcceleration, maxLinearJerk); gains.setOrientationProportionalGains(kpXYOrientation, kpXYOrientation, kpZOrientation); gains.setOrientationDampingRatios(zetaOrientation); gains.setOrientationMaxFeedbackAndFeedbackRate(maxAngularAcceleration, maxAngularJerk); return gains; }
@Override public PIDSE3Gains getToeOffFootControlGains() { double kpXY = 100.0; double kpZ = 0.0; double zetaXYZ = runningOnRealRobot ? 0.4 : 0.4; double kpXYOrientation = runningOnRealRobot ? 200.0 : 200.0; double kpZOrientation = runningOnRealRobot ? 200.0 : 200.0; double zetaOrientation = runningOnRealRobot ? 0.4 : 0.4; double maxLinearAcceleration = runningOnRealRobot ? 10.0 : Double.POSITIVE_INFINITY; double maxLinearJerk = runningOnRealRobot ? 150.0 : Double.POSITIVE_INFINITY; double maxAngularAcceleration = runningOnRealRobot ? 100.0 : Double.POSITIVE_INFINITY; double maxAngularJerk = runningOnRealRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(GainCoupling.XY, false); gains.setPositionProportionalGains(kpXY, kpXY, kpZ); gains.setPositionDampingRatios(zetaXYZ); gains.setPositionMaxFeedbackAndFeedbackRate(maxLinearAcceleration, maxLinearJerk); gains.setOrientationProportionalGains(kpXYOrientation, kpXYOrientation, kpZOrientation); gains.setOrientationDampingRatios(zetaOrientation); gains.setOrientationMaxFeedbackAndFeedbackRate(maxAngularAcceleration, maxAngularJerk); return gains; }
@Override public PIDSE3Gains getHoldPositionFootControlGains() { double kpXY = 100.0; double kpZ = 0.0; double zetaXYZ = runningOnRealRobot ? 0.2 : 1.0; double kpXYOrientation = runningOnRealRobot ? 40.0 : 100.0; double kpZOrientation = runningOnRealRobot ? 40.0 : 100.0; double zetaOrientation = runningOnRealRobot ? 0.2 : 1.0; double maxLinearAcceleration = runningOnRealRobot ? 10.0 : Double.POSITIVE_INFINITY; double maxLinearJerk = runningOnRealRobot ? 150.0 : Double.POSITIVE_INFINITY; double maxAngularAcceleration = runningOnRealRobot ? 100.0 : Double.POSITIVE_INFINITY; double maxAngularJerk = runningOnRealRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(GainCoupling.XY, false); gains.setPositionProportionalGains(kpXY, kpXY, kpZ); gains.setPositionDampingRatios(zetaXYZ); gains.setPositionMaxFeedbackAndFeedbackRate(maxLinearAcceleration, maxLinearJerk); gains.setOrientationProportionalGains(kpXYOrientation, kpXYOrientation, kpZOrientation); gains.setOrientationDampingRatios(zetaOrientation); gains.setOrientationMaxFeedbackAndFeedbackRate(maxAngularAcceleration, maxAngularJerk); return gains; }
@Override public PIDSE3Gains getSwingFootControlGains() { double kpXY = 75.0; double kpZ = 100.0; // 200.0 Trying to smash the ground there double zetaXYZ = 0.3; double kpXYOrientation = 100.0; // 300 not working double kpZOrientation = 100.0; double zetaXYOrientation = 0.3; double zetaZOrientation = runningOnRealRobot ? 0.3 : 0.7; double maxPositionAcceleration = runningOnRealRobot ? 10.0 : Double.POSITIVE_INFINITY; double maxPositionJerk = runningOnRealRobot ? 150.0 : Double.POSITIVE_INFINITY; double maxOrientationAcceleration = runningOnRealRobot ? 100.0 : Double.POSITIVE_INFINITY; double maxOrientationJerk = runningOnRealRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(GainCoupling.XY, false); gains.setPositionProportionalGains(kpXY, kpXY, kpZ); gains.setPositionDampingRatios(zetaXYZ); gains.setPositionMaxFeedbackAndFeedbackRate(maxPositionAcceleration, maxPositionJerk); gains.setOrientationProportionalGains(kpXYOrientation, kpXYOrientation, kpZOrientation); gains.setOrientationDampingRatios(zetaXYOrientation, zetaXYOrientation, zetaZOrientation); gains.setOrientationMaxFeedbackAndFeedbackRate(maxOrientationAcceleration, maxOrientationJerk); return gains; }
@Override public PIDSE3Gains getSwingFootControlGains() { double kpXY = 150.0; double kpZ = 200.0; // 200.0 Trying to smash the ground there double zetaXYZ = 0.7; double kpXYOrientation = 150.0; // 300 not working double kpZOrientation = 100.0; double zetaXYOrientation = 0.7; double zetaZOrientation = 0.7; double maxPositionAcceleration = runningOnRealRobot ? 10.0 : Double.POSITIVE_INFINITY; double maxPositionJerk = runningOnRealRobot ? 150.0 : Double.POSITIVE_INFINITY; double maxOrientationAcceleration = runningOnRealRobot ? 100.0 : Double.POSITIVE_INFINITY; double maxOrientationJerk = runningOnRealRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(GainCoupling.XY, false); gains.setPositionProportionalGains(kpXY, kpXY, kpZ); gains.setPositionDampingRatios(zetaXYZ); gains.setPositionMaxFeedbackAndFeedbackRate(maxPositionAcceleration, maxPositionJerk); gains.setOrientationProportionalGains(kpXYOrientation, kpXYOrientation, kpZOrientation); gains.setOrientationDampingRatios(zetaXYOrientation, zetaXYOrientation, zetaZOrientation); gains.setOrientationMaxFeedbackAndFeedbackRate(maxOrientationAcceleration, maxOrientationJerk); return gains; }
@Override public PIDSE3Gains getHoldPositionFootControlGains() { boolean realRobot = target == RobotTarget.REAL_ROBOT; double kpXY = 100.0; double kpZ = 0.0; double zetaXYZ = realRobot ? 0.2 : 1.0; double kpXYOrientation = realRobot ? 100.0 : 175.0; double kpZOrientation = realRobot ? 100.0 : 200.0; double zetaOrientation = realRobot ? 0.2 : 1.0; // Reduce maxPositionAcceleration from 10 to 6 to prevent too high acceleration when hitting joint limits. double maxLinearAcceleration = realRobot ? 6.0 : Double.POSITIVE_INFINITY; // double maxLinearAcceleration = realRobot ? 10.0 : Double.POSITIVE_INFINITY; double maxLinearJerk = realRobot ? 150.0 : Double.POSITIVE_INFINITY; double maxAngularAcceleration = realRobot ? 100.0 : Double.POSITIVE_INFINITY; double maxAngularJerk = realRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(GainCoupling.XY, false); gains.setPositionProportionalGains(kpXY, kpXY, kpZ); gains.setPositionDampingRatios(zetaXYZ); gains.setPositionMaxFeedbackAndFeedbackRate(maxLinearAcceleration, maxLinearJerk); gains.setOrientationProportionalGains(kpXYOrientation, kpXYOrientation, kpZOrientation); gains.setOrientationDampingRatios(zetaOrientation); gains.setOrientationMaxFeedbackAndFeedbackRate(maxAngularAcceleration, maxAngularJerk); return gains; }
double maxOrientationJerk = realRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(GainCoupling.XY, false); gains.setPositionProportionalGains(kpXY, kpXY, kpZ); gains.setPositionDampingRatios(zetaXYZ);
@Override public PIDSE3Gains getToeOffFootControlGains() { boolean realRobot = target == RobotTarget.REAL_ROBOT; double kpXY = 100.0; double kpZ = 0.0; double zetaXYZ = realRobot ? 0.4 : 0.4; double kpXYOrientation = realRobot ? 200.0 : 200.0; double kpZOrientation = realRobot ? 200.0 : 200.0; double zetaOrientation = realRobot ? 0.4 : 0.4; // Reduce maxPositionAcceleration from 10 to 6 to prevent too high acceleration when hitting joint limits. double maxLinearAcceleration = realRobot ? 6.0 : Double.POSITIVE_INFINITY; // double maxLinearAcceleration = realRobot ? 10.0 : Double.POSITIVE_INFINITY; double maxLinearJerk = realRobot ? 150.0 : Double.POSITIVE_INFINITY; double maxAngularAcceleration = realRobot ? 100.0 : Double.POSITIVE_INFINITY; double maxAngularJerk = realRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(GainCoupling.XY, false); gains.setPositionProportionalGains(kpXY, kpXY, kpZ); gains.setPositionDampingRatios(zetaXYZ); gains.setPositionMaxFeedbackAndFeedbackRate(maxLinearAcceleration, maxLinearJerk); gains.setOrientationProportionalGains(kpXYOrientation, kpXYOrientation, kpZOrientation); gains.setOrientationDampingRatios(zetaOrientation); gains.setOrientationMaxFeedbackAndFeedbackRate(maxAngularAcceleration, maxAngularJerk); return gains; }
@Override public PIDSE3Configuration getToeOffFootControlGains() { boolean runningOnRealRobot = target == RobotTarget.REAL_ROBOT; double kpXY = 40.0; double kpZ = 0.0; double zetaXYZ = runningOnRealRobot ? 0.7 : 0.4; double kpXYOrientation = runningOnRealRobot ? 40.0 : 200.0; double kpZOrientation = runningOnRealRobot ? 40.0 : 200.0; double zetaOrientation = runningOnRealRobot ? 0.4 : 0.4; double maxLinearAcceleration = runningOnRealRobot ? 10.0 : Double.POSITIVE_INFINITY; double maxLinearJerk = runningOnRealRobot ? 150.0 : Double.POSITIVE_INFINITY; double maxAngularAcceleration = runningOnRealRobot ? 100.0 : Double.POSITIVE_INFINITY; double maxAngularJerk = runningOnRealRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(); gains.setPositionProportionalGains(kpXY, kpXY, kpZ); gains.setPositionDampingRatios(zetaXYZ); gains.setPositionMaxFeedbackAndFeedbackRate(maxLinearAcceleration, maxLinearJerk); gains.setOrientationProportionalGains(kpXYOrientation, kpXYOrientation, kpZOrientation); gains.setOrientationDampingRatios(zetaOrientation); gains.setOrientationMaxFeedbackAndFeedbackRate(maxAngularAcceleration, maxAngularJerk); return new PIDSE3Configuration(GainCoupling.XY, false, gains); }
@Override public PIDSE3Configuration getHoldPositionFootControlGains() { boolean runningOnRealRobot = target == RobotTarget.REAL_ROBOT; double kpXY = 0.0; //40.0; double kpZ = 0.0; double zetaXYZ = runningOnRealRobot ? 0.7 : 1.0; double kpXYOrientation = runningOnRealRobot ? 0.0 : 200.0; // 40.0 double kpZOrientation = runningOnRealRobot ? 100.0 : 200.0; // 120.0 double zetaOrientation = runningOnRealRobot ? 0.7 : 1.0; double maxLinearAcceleration = runningOnRealRobot ? 10.0 : Double.POSITIVE_INFINITY; double maxLinearJerk = runningOnRealRobot ? 150.0 : Double.POSITIVE_INFINITY; double maxAngularAcceleration = runningOnRealRobot ? 100.0 : Double.POSITIVE_INFINITY; double maxAngularJerk = runningOnRealRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(); gains.setPositionProportionalGains(kpXY, kpXY, kpZ); gains.setPositionDampingRatios(zetaXYZ); gains.setPositionMaxFeedbackAndFeedbackRate(maxLinearAcceleration, maxLinearJerk); gains.setOrientationProportionalGains(kpXYOrientation, kpXYOrientation, kpZOrientation); gains.setOrientationDampingRatios(zetaOrientation); gains.setOrientationMaxFeedbackAndFeedbackRate(maxAngularAcceleration, maxAngularJerk); return new PIDSE3Configuration(GainCoupling.XY, false, gains); }
@Override public PIDSE3Configuration getSwingFootControlGains() { boolean runningOnRealRobot = target == RobotTarget.REAL_ROBOT; double kpX = runningOnRealRobot? 100.0 : 150.0; // Was 150.0 before tuneup of sep 2018 double kpY = runningOnRealRobot? 100.0 : 150.0; // Was 100.0 before tuneup of sep 2018 double kpZ = runningOnRealRobot ? 250.0 : 200.0; // Was 200.0 before tuneup of sep 2018 // zeta was [0.8, 0.5, 0.8] before tuneup of sep 2018 double zetaXY = runningOnRealRobot ? 0.7 : 0.7; double zetaZ = runningOnRealRobot ? 0.8 : 0.7; double kpXYOrientation = runningOnRealRobot ? 200.0 : 300.0; double kpZOrientation = runningOnRealRobot ? 150.0 : 200.0; // 160 double zetaOrientationXY = runningOnRealRobot ? 0.8 : 0.7; // Was 0.7 before tuneup of sep 2018 double zetaOrientationZ = runningOnRealRobot ? 0.8 : 0.7; // Was 0.5 before tuneup of sep 2018 double maxLinearAcceleration = runningOnRealRobot ? 10.0 : Double.POSITIVE_INFINITY; double maxLinearJerk = runningOnRealRobot ? 250.0 : Double.POSITIVE_INFINITY; double maxAngularAcceleration = runningOnRealRobot ? 100.0 : Double.POSITIVE_INFINITY; double maxAngularJerk = runningOnRealRobot ? 1500.0 : Double.POSITIVE_INFINITY; DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(); gains.setPositionProportionalGains(kpX, kpY, kpZ); gains.setPositionDampingRatios(zetaXY, zetaXY, zetaZ); gains.setPositionMaxFeedbackAndFeedbackRate(maxLinearAcceleration, maxLinearJerk); gains.setOrientationProportionalGains(kpXYOrientation, kpXYOrientation, kpZOrientation); gains.setOrientationDampingRatios(zetaOrientationXY, zetaOrientationXY, zetaOrientationZ); gains.setOrientationMaxFeedbackAndFeedbackRate(maxAngularAcceleration, maxAngularJerk); return new PIDSE3Configuration(GainCoupling.NONE, false, gains); }
DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(); gains.getPositionGains().setProportialAndDerivativeGains(100.0, 50.0); gains.getOrientationGains().setProportialAndDerivativeGains(100.0, 50.0);
DefaultPIDSE3Gains gains = new DefaultPIDSE3Gains(); gains.getPositionGains().setProportialAndDerivativeGains(100.0, 50.0); gains.getOrientationGains().setProportialAndDerivativeGains(100.0, 50.0);