Advertisement
Golden_Dragoon

PID Thing

Feb 20th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.11 KB | None | 0 0
  1. PIDController turnController = new PIDController(pidCoefficients[0][0], pidCoefficients[0][1], pidCoefficients[0][2], -1, 1);
  2.  
  3. while (Math.abs(imu.getHeading() - targetHeading) > tolerance
  4.       && op.opModeIsActive()) {
  5.     double currentHeading = imu.getHeading();
  6.     double out = turnController.output(currentHeading, targetHeading, op.time);
  7.     setPower(leftMotors, -out);
  8.     setPower(rightMotors, out);
  9. }
  10.  
  11.  
  12. public double output(double current, double target, double time) {
  13.         this.input = current;
  14.         this.setpoint = target;
  15.  
  16.         error = setpoint - input;
  17.  
  18.         double di = input - lastInput;
  19.         double dt = time - lastTime;
  20.  
  21.         if ((Math.abs(intError + (error * dt)) * ki < maxOut)
  22.                 && (Math.abs(intError + (error * dt)) * ki > minOut))
  23.             intError += (error * dt);
  24.  
  25.         double p = kp * error;
  26.         double i = ki * intError;
  27.         double d = kd * di;
  28.  
  29.         double u = p + i + d;
  30.  
  31.         if(u > maxOut) u = maxOut;
  32.         else if(u < minOut) u = minOut;
  33.  
  34.         lastInput = input;
  35.         lastTime = time;
  36.         return u;
  37.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement