Class LegacyPhoenixPIDController

java.lang.Object
com.ctre.phoenix6.mechanisms.swerve.utility.LegacyPhoenixPIDController
All Implemented Interfaces:
Sendable, AutoCloseable

public class LegacyPhoenixPIDController extends Object implements Sendable, AutoCloseable
Phoenix-centric PID controller taken from WPI's PIDController class.

This class differs from the WPI implementation by using explicit timestamps for integral/derivative calculations. Ideally, these timestamps come from the StatusSignal.

  • Constructor Summary

    Constructors
    Constructor
    Description
    LegacyPhoenixPIDController(double kp, double ki, double kd)
    Allocates a PIDController with the given constants for kp, ki, and kd.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Returns true if the error is within the tolerance of the setpoint.
    double
    calculate(double measurement, double setpoint, double currentTimestamp)
    Returns the next output of the PID controller.
    void
     
    void
    Disables continuous input.
    void
    enableContinuousInput(double minimumInput, double maximumInput)
    Enables continuous input.
    double
    Get the Differential coefficient.
    double
    Get the Integral coefficient.
    double
     
    double
    Get the Proportional coefficient.
    double
    Returns the difference between the setpoint and the measurement.
    double
    Returns the position tolerance of this controller.
    double
    Returns the current setpoint of the PIDController.
    double
    Returns the velocity error.
    double
    Returns the velocity tolerance of this controller.
    void
     
    boolean
    Returns true if continuous input is enabled.
    void
    Resets the previous error and the integral term.
    void
    setD(double kd)
    Sets the Differential coefficient of the PID controller gain.
    void
    setI(double ki)
    Sets the Integral coefficient of the PID controller gain.
    void
    setIntegratorRange(double minimumIntegral, double maximumIntegral)
    Sets the minimum and maximum values for the integrator.
    void
    setP(double kp)
    Sets the Proportional coefficient of the PID controller gain.
    void
    setPID(double kp, double ki, double kd)
    Sets the PID Controller gain parameters.
    void
    setTolerance(double positionTolerance)
    Sets the error which is considered tolerable for use with atSetpoint().
    void
    setTolerance(double positionTolerance, double velocityTolerance)
    Sets the error which is considered tolerable for use with atSetpoint().

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • LegacyPhoenixPIDController

      public LegacyPhoenixPIDController(double kp, double ki, double kd)
      Allocates a PIDController with the given constants for kp, ki, and kd.
      Parameters:
      kp - The proportional coefficient.
      ki - The integral coefficient.
      kd - The derivative coefficient.
  • Method Details

    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
    • setPID

      public void setPID(double kp, double ki, double kd)
      Sets the PID Controller gain parameters.

      Set the proportional, integral, and differential coefficients.

      Parameters:
      kp - The proportional coefficient.
      ki - The integral coefficient.
      kd - The derivative coefficient.
    • setP

      public void setP(double kp)
      Sets the Proportional coefficient of the PID controller gain.
      Parameters:
      kp - proportional coefficient
    • setI

      public void setI(double ki)
      Sets the Integral coefficient of the PID controller gain.
      Parameters:
      ki - integral coefficient
    • setD

      public void setD(double kd)
      Sets the Differential coefficient of the PID controller gain.
      Parameters:
      kd - differential coefficient
    • getP

      public double getP()
      Get the Proportional coefficient.
      Returns:
      proportional coefficient
    • getI

      public double getI()
      Get the Integral coefficient.
      Returns:
      integral coefficient
    • getD

      public double getD()
      Get the Differential coefficient.
      Returns:
      differential coefficient
    • getPositionTolerance

      public double getPositionTolerance()
      Returns the position tolerance of this controller.
      Returns:
      the position tolerance of the controller.
    • getVelocityTolerance

      public double getVelocityTolerance()
      Returns the velocity tolerance of this controller.
      Returns:
      the velocity tolerance of the controller.
    • getSetpoint

      public double getSetpoint()
      Returns the current setpoint of the PIDController.
      Returns:
      The current setpoint.
    • atSetpoint

      public boolean atSetpoint()
      Returns true if the error is within the tolerance of the setpoint.

      This will return false until at least one input value has been computed.

      Returns:
      Whether the error is within the acceptable bounds.
    • enableContinuousInput

      public void enableContinuousInput(double minimumInput, double maximumInput)
      Enables continuous input.

      Rather then using the max and min input range as constraints, it considers them to be the same point and automatically calculates the shortest route to the setpoint.

      Parameters:
      minimumInput - The minimum value expected from the input.
      maximumInput - The maximum value expected from the input.
    • disableContinuousInput

      public void disableContinuousInput()
      Disables continuous input.
    • isContinuousInputEnabled

      public boolean isContinuousInputEnabled()
      Returns true if continuous input is enabled.
      Returns:
      True if continuous input is enabled.
    • setIntegratorRange

      public void setIntegratorRange(double minimumIntegral, double maximumIntegral)
      Sets the minimum and maximum values for the integrator.

      When the cap is reached, the integrator value is added to the controller output rather than the integrator value times the integral gain.

      Parameters:
      minimumIntegral - The minimum value of the integrator.
      maximumIntegral - The maximum value of the integrator.
    • setTolerance

      public void setTolerance(double positionTolerance)
      Sets the error which is considered tolerable for use with atSetpoint().
      Parameters:
      positionTolerance - Position error which is tolerable.
    • setTolerance

      public void setTolerance(double positionTolerance, double velocityTolerance)
      Sets the error which is considered tolerable for use with atSetpoint().
      Parameters:
      positionTolerance - Position error which is tolerable.
      velocityTolerance - Velocity error which is tolerable.
    • getPositionError

      public double getPositionError()
      Returns the difference between the setpoint and the measurement.
      Returns:
      The error.
    • getVelocityError

      public double getVelocityError()
      Returns the velocity error.
      Returns:
      The velocity error.
    • calculate

      public double calculate(double measurement, double setpoint, double currentTimestamp)
      Returns the next output of the PID controller.
      Parameters:
      measurement - The current measurement of the process variable.
      setpoint - The setpoint to target
      currentTimestamp - The current timestamp to use for calculating integral/derivative error
      Returns:
      The next controller output.
    • getLastAppliedOutput

      public double getLastAppliedOutput()
    • reset

      public void reset()
      Resets the previous error and the integral term.
    • initSendable

      public void initSendable(SendableBuilder builder)
      Specified by:
      initSendable in interface Sendable