public void set(PIDGainsReadOnly pidGains) { super.set(pidGains); setKi(pidGains.getKi()); setMaximumIntegralError(pidGains.getMaxIntegralError()); setIntegralLeakRatio(pidGains.getIntegralLeakRatio()); } }
gains.setMaximumFeedback(3.0); gains.setIntegralLeakRatio(0.999); gains.setMaximumIntegralError(0.5);
@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.setMaximumFeedback(maxAcc); pidGains.setMaximumFeedbackRate(maxJerk); pidGains.setMaximumIntegralError(maxIntegralError); pidGains.setIntegralLeakRatio(integratorLeakRatio);
@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.setMaximumFeedback(maxAcc); pidGains.setMaximumFeedbackRate(maxJerk); pidGains.setMaximumIntegralError(maxIntegralError); pidGains.setIntegralLeakRatio(integratorLeakRatio); pidGains.setZeta(zeta);
linearPidGains.setKi(linearKi); linearPidGains.setKd(linearKd); linearPidGains.setMaximumIntegralError(linearMaxIntegral); linearPidGains.setPositionDeadband(linearDeadband); angularPidGains.setKi(angularKi); angularPidGains.setKd(angularKd); angularPidGains.setMaximumIntegralError(angularMaxIntegral); angularPidGains.setPositionDeadband(angularDeadband);
pidGains.setKi(integral); pidGains.setKd(derivative); pidGains.setMaximumIntegralError(maxIntegral);