public void setLinearGains(double kp, double ki, double kd) { linearPidGains.setKp(kp); linearPidGains.setKi(ki); linearPidGains.setKd(kd); }
public void set(PIDGainsReadOnly pidGains) { super.set(pidGains); setKi(pidGains.getKi()); setMaximumIntegralError(pidGains.getMaxIntegralError()); setIntegralLeakRatio(pidGains.getIntegralLeakRatio()); } }
YoPIDGains gains = new YoPIDGains("Hand", registry); gains.setKp(7.0); gains.setKi(3.0); gains.setKd(0.0); gains.setMaximumFeedback(3.0);
@ContinuousIntegrationTest(estimatedDuration = 0.3) @Test(timeout=300000) public void testPIDControllerConstructorFromGains() { YoVariableRegistry registry = new YoVariableRegistry("robert"); double proportional = random.nextDouble(); double integral = random.nextDouble(); double derivative = random.nextDouble(); double maxError = random.nextDouble(); double deadband = random.nextDouble(); double leakRate = random.nextDouble(); double maxOutput = 100 * random.nextDouble(); YoPIDGains pidGains = new YoPIDGains("", registry); pidGains.setKp(proportional); pidGains.setKi(integral); pidGains.setKd(derivative); pidGains.setMaximumIntegralError(maxError); pidGains.setPositionDeadband(deadband); pidGains.setIntegralLeakRatio(leakRate); pidGains.setMaximumFeedback(maxOutput); PIDController pid = new PIDController(pidGains, "", registry); assertEquals(proportional, pid.getProportionalGain(), 0.001); assertEquals(integral, pid.getIntegralGain(), 0.001); assertEquals(derivative, pid.getDerivativeGain(), 0.001); assertEquals(maxError, pid.getMaxIntegralError(), 0.001); assertEquals(deadband, pid.getPositionDeadband(), 0.001); assertEquals(leakRate, pid.getIntegralLeakRatio(), 0.001); assertEquals(maxOutput, pid.getMaximumFeedback(), 1e-5); }
@ContinuousIntegrationTest(estimatedDuration = 0.2) @Test(timeout=300000) public void testPIDControllerConstructorFromGains2() { YoVariableRegistry registry = new YoVariableRegistry("robert"); double proportional = random.nextDouble(); double integral = random.nextDouble(); double derivative = random.nextDouble(); double maxError = random.nextDouble(); double deadband = random.nextDouble(); double maxOutput = random.nextDouble() * 100; YoPIDGains pidGains = new YoPIDGains("", registry); pidGains.setKp(proportional); pidGains.setKi(integral); pidGains.setKd(derivative); pidGains.setMaximumIntegralError(maxError); pidGains.setPositionDeadband(deadband); pidGains.setMaximumFeedback(maxOutput); PIDController pid = new PIDController(pidGains, "", registry); assertEquals(proportional, pid.getProportionalGain(), 0.001); assertEquals(integral, pid.getIntegralGain(), 0.001); assertEquals(derivative, pid.getDerivativeGain(), 0.001); assertEquals(maxError, pid.getMaxIntegralError(), 0.001); assertEquals(deadband, pid.getPositionDeadband(), 0.001); assertEquals(maxOutput, pid.getMaximumFeedback(), 0.001); assertEquals(1.0, pid.getIntegralLeakRatio(), 0.001); }
@ContinuousIntegrationTest(estimatedDuration = 0.2) @Test(timeout=300000) public void testPIDControllerConstructorFromGains3() { YoVariableRegistry registry = new YoVariableRegistry("robert"); double proportional = random.nextDouble(); double integral = random.nextDouble(); double derivative = random.nextDouble(); double maxIntegralError = random.nextDouble(); double maxOutput = random.nextDouble() * 100; YoPIDGains pidGains = new YoPIDGains("", registry); pidGains.setKp(proportional); pidGains.setKi(integral); pidGains.setKd(derivative); pidGains.setMaximumIntegralError(maxIntegralError); pidGains.setMaximumFeedback(maxOutput); PIDController pid = new PIDController(pidGains, "", registry); assertEquals(proportional, pid.getProportionalGain(), 0.001); assertEquals(integral, pid.getIntegralGain(), 0.001); assertEquals(derivative, pid.getDerivativeGain(), 0.001); assertEquals(maxIntegralError, pid.getMaxIntegralError(), 0.001); assertEquals(maxOutput, pid.getMaximumFeedback(), 1e-5); assertEquals(0.0, pid.getPositionDeadband(), 0.001); assertEquals(1.0, pid.getIntegralLeakRatio(), 0.001); }
@ContinuousIntegrationTest(estimatedDuration = 0.2) @Test(timeout=300000) public void testPIDControllerConstructorFromGains4() { YoVariableRegistry registry = new YoVariableRegistry("robert"); double proportional = random.nextDouble(); double integral = random.nextDouble(); double derivative = random.nextDouble(); double maxIntegralError = random.nextDouble(); YoPIDGains pidGains = new YoPIDGains("", registry); pidGains.setKp(proportional); pidGains.setKi(integral); pidGains.setKd(derivative); pidGains.setMaximumIntegralError(maxIntegralError); PIDController pid = new PIDController(pidGains, "", registry); assertEquals(proportional, pid.getProportionalGain(), 0.001); assertEquals(integral, pid.getIntegralGain(), 0.001); assertEquals(derivative, pid.getDerivativeGain(), 0.001); assertEquals(maxIntegralError, pid.getMaxIntegralError(), 0.001); assertEquals(Double.POSITIVE_INFINITY, pid.getMaximumFeedback(), 0.001); assertEquals(0.0, pid.getPositionDeadband(), 0.001); assertEquals(1.0, pid.getIntegralLeakRatio(), 0.001); }
pidGains.setKi(ki); pidGains.setMaximumFeedback(maxAcc); pidGains.setMaximumFeedbackRate(maxJerk);
@ContinuousIntegrationTest(estimatedDuration = 0.3) @Test(timeout=300000) public void testComputeFromYoPIDGains() { YoVariableRegistry registry = new YoVariableRegistry("robert"); double proportional = 3.0; double integral = 2.0; double derivative = 1.0; double maxError = 10.0; YoPIDGains pidGains = new YoPIDGains("", registry); pidGains.setKp(proportional); pidGains.setKi(integral); pidGains.setKd(derivative); pidGains.setMaximumIntegralError(maxError); PIDController pid = new PIDController(pidGains, "", registry); double currentPosition = 0.0; double desiredPosition = 5.0; double currentRate = 0.0; double desiredRate = 1.0; assertEquals(17.0, pid.compute(currentPosition, desiredPosition, currentRate, desiredRate, 0.1), 0.001); }
pidGains.setKi(ki); pidGains.setMaximumFeedback(maxAcc); pidGains.setMaximumFeedbackRate(maxJerk);
pidGains.setKi(integral); pidGains.setKd(derivative); pidGains.setMaximumIntegralError(maxIntegral);