Package edu.wpi.first.wpilibj.controller
Class ProfiledPIDController
- java.lang.Object
-
- edu.wpi.first.wpilibj.controller.ProfiledPIDController
-
-
Constructor Summary
Constructors Constructor Description ProfiledPIDController(double Kp, double Ki, double Kd, TrapezoidProfile.Constraints constraints)Allocates a ProfiledPIDController with the given constants for Kp, Ki, and Kd.ProfiledPIDController(double Kp, double Ki, double Kd, TrapezoidProfile.Constraints constraints, double period)Allocates a ProfiledPIDController with the given constants for Kp, Ki, and Kd.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanatGoal()Returns true if the error is within the tolerance of the error.booleanatSetpoint()Returns true if the error is within the tolerance of the error.doublecalculate(double measurement)Returns the next output of the PID controller.doublecalculate(double measurement, double goal)Returns the next output of the PIDController.doublecalculate(double measurement, TrapezoidProfile.State goal)Returns the next output of the PID controller.doublecalculate(double measurement, TrapezoidProfile.State goal, TrapezoidProfile.Constraints constraints)Returns the next output of the PID controller.voiddisableContinuousInput()Disables continuous input.voidenableContinuousInput(double minimumInput, double maximumInput)Enables continuous input.doublegetD()Gets the differential coefficient.TrapezoidProfile.StategetGoal()Gets the goal for the ProfiledPIDController.doublegetI()Gets the integral coefficient.doublegetP()Gets the proportional coefficient.doublegetPeriod()Gets the period of this controller.doublegetPositionError()Returns the difference between the setpoint and the measurement.TrapezoidProfile.StategetSetpoint()Returns the current setpoint of the ProfiledPIDController.doublegetVelocityError()Returns the change in error per second.voidinitSendable(SendableBuilder builder)Initializes thisSendableobject.voidreset(double measuredPosition)Reset the previous error and the integral term.voidreset(double measuredPosition, double measuredVelocity)Reset the previous error and the integral term.voidreset(TrapezoidProfile.State measurement)Reset the previous error and the integral term.voidsetConstraints(TrapezoidProfile.Constraints constraints)Set velocity and acceleration constraints for goal.voidsetD(double Kd)Sets the differential coefficient of the PID controller gain.voidsetGoal(double goal)Sets the goal for the ProfiledPIDController.voidsetGoal(TrapezoidProfile.State goal)Sets the goal for the ProfiledPIDController.voidsetI(double Ki)Sets the integral coefficient of the PID controller gain.voidsetIntegratorRange(double minimumIntegral, double maximumIntegral)Sets the minimum and maximum values for the integrator.voidsetP(double Kp)Sets the proportional coefficient of the PID controller gain.voidsetPID(double Kp, double Ki, double Kd)Sets the PID Controller gain parameters.voidsetTolerance(double positionTolerance)Sets the error which is considered tolerable for use with atSetpoint().voidsetTolerance(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
-
Methods inherited from interface edu.wpi.first.wpilibj.Sendable
addChild, getName, getSubsystem, setName, setName, setName, setName, setSubsystem
-
-
-
-
Constructor Detail
-
ProfiledPIDController
public ProfiledPIDController(double Kp, double Ki, double Kd, TrapezoidProfile.Constraints constraints)Allocates a ProfiledPIDController with the given constants for Kp, Ki, and Kd.- Parameters:
Kp- The proportional coefficient.Ki- The integral coefficient.Kd- The derivative coefficient.constraints- Velocity and acceleration constraints for goal.
-
ProfiledPIDController
public ProfiledPIDController(double Kp, double Ki, double Kd, TrapezoidProfile.Constraints constraints, double period)Allocates a ProfiledPIDController with the given constants for Kp, Ki, and Kd.- Parameters:
Kp- The proportional coefficient.Ki- The integral coefficient.Kd- The derivative coefficient.constraints- Velocity and acceleration constraints for goal.period- The period between controller updates in seconds. The default is 0.02 seconds.
-
-
Method Detail
-
setPID
public void setPID(double Kp, double Ki, double Kd)Sets the PID Controller gain parameters.Sets the proportional, integral, and differential coefficients.
- Parameters:
Kp- Proportional coefficientKi- Integral coefficientKd- Differential 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()
Gets the proportional coefficient.- Returns:
- proportional coefficient
-
getI
public double getI()
Gets the integral coefficient.- Returns:
- integral coefficient
-
getD
public double getD()
Gets the differential coefficient.- Returns:
- differential coefficient
-
getPeriod
public double getPeriod()
Gets the period of this controller.- Returns:
- The period of the controller.
-
setGoal
public void setGoal(TrapezoidProfile.State goal)
Sets the goal for the ProfiledPIDController.- Parameters:
goal- The desired goal state.
-
setGoal
public void setGoal(double goal)
Sets the goal for the ProfiledPIDController.- Parameters:
goal- The desired goal position.
-
getGoal
public TrapezoidProfile.State getGoal()
Gets the goal for the ProfiledPIDController.
-
atGoal
public boolean atGoal()
Returns true if the error is within the tolerance of the error.This will return false until at least one input value has been computed.
-
setConstraints
public void setConstraints(TrapezoidProfile.Constraints constraints)
Set velocity and acceleration constraints for goal.- Parameters:
constraints- Velocity and acceleration constraints for goal.
-
getSetpoint
public TrapezoidProfile.State getSetpoint()
Returns the current setpoint of the ProfiledPIDController.- Returns:
- The current setpoint.
-
atSetpoint
public boolean atSetpoint()
Returns true if the error is within the tolerance of the error.This will return false until at least one input value has been computed.
-
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.
-
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 change in error per second.
-
calculate
public double calculate(double measurement)
Returns the next output of the PID controller.- Parameters:
measurement- The current measurement of the process variable.
-
calculate
public double calculate(double measurement, TrapezoidProfile.State goal)Returns the next output of the PID controller.- Parameters:
measurement- The current measurement of the process variable.goal- The new goal of the controller.
-
calculate
public double calculate(double measurement, double goal)Returns the next output of the PIDController.- Parameters:
measurement- The current measurement of the process variable.goal- The new goal of the controller.
-
calculate
public double calculate(double measurement, TrapezoidProfile.State goal, TrapezoidProfile.Constraints constraints)Returns the next output of the PID controller.- Parameters:
measurement- The current measurement of the process variable.goal- The new goal of the controller.constraints- Velocity and acceleration constraints for goal.
-
reset
public void reset(TrapezoidProfile.State measurement)
Reset the previous error and the integral term.- Parameters:
measurement- The current measured State of the system.
-
reset
public void reset(double measuredPosition, double measuredVelocity)Reset the previous error and the integral term.- Parameters:
measuredPosition- The current measured position of the system.measuredVelocity- The current measured velocity of the system.
-
reset
public void reset(double measuredPosition)
Reset the previous error and the integral term.- Parameters:
measuredPosition- The current measured position of the system. The velocity is assumed to be zero.
-
initSendable
public void initSendable(SendableBuilder builder)
Description copied from interface:SendableInitializes thisSendableobject.- Specified by:
initSendablein interfaceSendable- Parameters:
builder- sendable builder
-
-