CTRE Phoenix 6 C++ 25.3.1
|
Phoenix-centric PID controller taken from WPI's frc#PIDController class. More...
#include <ctre/phoenix6/swerve/utility/PhoenixPIDController.hpp>
Public Member Functions | |
PhoenixPIDController (double Kp, double Ki, double Kd) | |
Allocates a PhoenixPIDController with the given constants for Kp, Ki, and Kd. | |
void | SetPID (double Kp, double Ki, double Kd) |
Sets the PID Controller gain parameters. | |
void | SetP (double Kp) |
Sets the proportional coefficient of the PID controller gain. | |
void | SetI (double Ki) |
Sets the integral coefficient of the PID controller gain. | |
void | SetD (double Kd) |
Sets the differential coefficient of the PID controller gain. | |
void | SetIZone (double iZone) |
Sets the IZone range. | |
double | GetP () const |
Gets the proportional coefficient. | |
double | GetI () const |
Gets the integral coefficient. | |
double | GetD () const |
Gets the differential coefficient. | |
double | GetIZone () const |
Get the IZone range. | |
double | GetPositionTolerance () const |
Gets the position tolerance of this controller. | |
double | GetVelocityTolerance () const |
Gets the velocity tolerance of this controller. | |
double | GetSetpoint () const |
Returns the current setpoint of the PIDController. | |
bool | AtSetpoint () const |
Returns true if the error is within the tolerance of the setpoint. | |
void | EnableContinuousInput (double minimumInput, double maximumInput) |
Enables continuous input. | |
void | DisableContinuousInput () |
Disables continuous input. | |
bool | IsContinuousInputEnabled () const |
Returns true if continuous input is enabled. | |
void | SetIntegratorRange (double minimumIntegral, double maximumIntegral) |
Sets the minimum and maximum values for the integrator. | |
void | SetTolerance (double positionTolerance, double velocityTolerance=std::numeric_limits< double >::infinity()) |
Sets the error which is considered tolerable for use with AtSetpoint(). | |
double | GetPositionError () const |
Returns the difference between the setpoint and the measurement. | |
double | GetVelocityError () const |
Returns the velocity error. | |
double | Calculate (double measurement, double setpoint, units::second_t currentTimestamp) |
Returns the next output of the PID controller. | |
double | GetLastAppliedOutput () const |
Returns the last applied output from this PID controller. | |
void | Reset () |
Reset the previous error, the integral term, and disable the controller. | |
Phoenix-centric PID controller taken from WPI's frc#PIDController class.
This class differs from the WPI implementation by using explicit timestamps for integral/derivative calculations. Ideally, these timestamps come from the StatusSignal.
ctre::phoenix6::swerve::PhoenixPIDController::PhoenixPIDController | ( | double | Kp, |
double | Ki, | ||
double | Kd ) |
Allocates a PhoenixPIDController with the given constants for Kp, Ki, and Kd.
Kp | The proportional coefficient. Must be >= 0. |
Ki | The integral coefficient. Must be >= 0. |
Kd | The derivative coefficient. Must be >= 0. |
bool ctre::phoenix6::swerve::PhoenixPIDController::AtSetpoint | ( | ) | const |
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.
double ctre::phoenix6::swerve::PhoenixPIDController::Calculate | ( | double | measurement, |
double | setpoint, | ||
units::second_t | currentTimestamp ) |
Returns the next output of the PID controller.
measurement | The current measurement of the process variable. |
setpoint | The new setpoint of the controller. |
currentTimestamp | The current timestamp to use for calculating integral/derivative error |
void ctre::phoenix6::swerve::PhoenixPIDController::DisableContinuousInput | ( | ) |
Disables continuous input.
void ctre::phoenix6::swerve::PhoenixPIDController::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.
minimumInput | The minimum value expected from the input. |
maximumInput | The maximum value expected from the input. |
double ctre::phoenix6::swerve::PhoenixPIDController::GetD | ( | ) | const |
Gets the differential coefficient.
double ctre::phoenix6::swerve::PhoenixPIDController::GetI | ( | ) | const |
Gets the integral coefficient.
double ctre::phoenix6::swerve::PhoenixPIDController::GetIZone | ( | ) | const |
Get the IZone range.
double ctre::phoenix6::swerve::PhoenixPIDController::GetLastAppliedOutput | ( | ) | const |
Returns the last applied output from this PID controller.
double ctre::phoenix6::swerve::PhoenixPIDController::GetP | ( | ) | const |
Gets the proportional coefficient.
double ctre::phoenix6::swerve::PhoenixPIDController::GetPositionError | ( | ) | const |
Returns the difference between the setpoint and the measurement.
double ctre::phoenix6::swerve::PhoenixPIDController::GetPositionTolerance | ( | ) | const |
Gets the position tolerance of this controller.
double ctre::phoenix6::swerve::PhoenixPIDController::GetSetpoint | ( | ) | const |
Returns the current setpoint of the PIDController.
double ctre::phoenix6::swerve::PhoenixPIDController::GetVelocityError | ( | ) | const |
Returns the velocity error.
double ctre::phoenix6::swerve::PhoenixPIDController::GetVelocityTolerance | ( | ) | const |
Gets the velocity tolerance of this controller.
bool ctre::phoenix6::swerve::PhoenixPIDController::IsContinuousInputEnabled | ( | ) | const |
Returns true if continuous input is enabled.
void ctre::phoenix6::swerve::PhoenixPIDController::Reset | ( | ) |
Reset the previous error, the integral term, and disable the controller.
void ctre::phoenix6::swerve::PhoenixPIDController::SetD | ( | double | Kd | ) |
Sets the differential coefficient of the PID controller gain.
Kd | The differential coefficient. Must be >= 0. |
void ctre::phoenix6::swerve::PhoenixPIDController::SetI | ( | double | Ki | ) |
Sets the integral coefficient of the PID controller gain.
Ki | The integral coefficient. Must be >= 0. |
void ctre::phoenix6::swerve::PhoenixPIDController::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.
minimumIntegral | The minimum value of the integrator. |
maximumIntegral | The maximum value of the integrator. |
void ctre::phoenix6::swerve::PhoenixPIDController::SetIZone | ( | double | iZone | ) |
Sets the IZone range.
When the absolute value of the position error is greater than IZone, the total accumulated error will reset to zero, disabling integral gain until the absolute value of the position error is less than IZone. This is used to prevent integral windup. Must be non-negative. Passing a value of zero will effectively disable integral gain. Passing a value of infinity disables IZone functionality.
iZone | Maximum magnitude of error to allow integral control. Must be >= 0. |
void ctre::phoenix6::swerve::PhoenixPIDController::SetP | ( | double | Kp | ) |
Sets the proportional coefficient of the PID controller gain.
Kp | The proportional coefficient. Must be >= 0. |
void ctre::phoenix6::swerve::PhoenixPIDController::SetPID | ( | double | Kp, |
double | Ki, | ||
double | Kd ) |
Sets the PID Controller gain parameters.
Sets the proportional, integral, and differential coefficients.
Kp | The proportional coefficient. Must be >= 0. |
Ki | The integral coefficient. Must be >= 0. |
Kd | The differential coefficient. Must be >= 0. |
void ctre::phoenix6::swerve::PhoenixPIDController::SetTolerance | ( | double | positionTolerance, |
double | velocityTolerance = std::numeric_limits< double >::infinity() ) |
Sets the error which is considered tolerable for use with AtSetpoint().
positionTolerance | Position error which is tolerable. |
velocityTolerance | Velocity error which is tolerable. |