WPILibC++
2020.3.2-60-g3011ebe
|
Implements a PID control loop. More...
#include <PIDController.h>
Public Member Functions | |
PIDController (double Kp, double Ki, double Kd, units::second_t period=20_ms) | |
Allocates a PIDController with the given constants for Kp, Ki, and Kd. More... | |
PIDController (const PIDController &)=default | |
PIDController & | operator= (const PIDController &)=default |
PIDController (PIDController &&)=default | |
PIDController & | operator= (PIDController &&)=default |
void | SetPID (double Kp, double Ki, double Kd) |
Sets the PID Controller gain parameters. More... | |
void | SetP (double Kp) |
Sets the proportional coefficient of the PID controller gain. More... | |
void | SetI (double Ki) |
Sets the integral coefficient of the PID controller gain. More... | |
void | SetD (double Kd) |
Sets the differential coefficient of the PID controller gain. More... | |
double | GetP () const |
Gets the proportional coefficient. More... | |
double | GetI () const |
Gets the integral coefficient. More... | |
double | GetD () const |
Gets the differential coefficient. More... | |
units::second_t | GetPeriod () const |
Gets the period of this controller. More... | |
void | SetSetpoint (double setpoint) |
Sets the setpoint for the PIDController. More... | |
double | GetSetpoint () const |
Returns the current setpoint of the PIDController. More... | |
bool | AtSetpoint () const |
Returns true if the error is within the tolerance of the setpoint. More... | |
void | EnableContinuousInput (double minimumInput, double maximumInput) |
Enables continuous input. More... | |
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. More... | |
void | SetTolerance (double positionTolerance, double velocityTolerance=std::numeric_limits< double >::infinity()) |
Sets the error which is considered tolerable for use with AtSetpoint(). More... | |
double | GetPositionError () const |
Returns the difference between the setpoint and the measurement. | |
double | GetVelocityError () const |
Returns the velocity error. | |
double | Calculate (double measurement) |
Returns the next output of the PID controller. More... | |
double | Calculate (double measurement, double setpoint) |
Returns the next output of the PID controller. More... | |
void | Reset () |
Reset the previous error, the integral term, and disable the controller. | |
void | InitSendable (frc::SendableBuilder &builder) override |
Initializes this Sendable object. More... | |
![]() | |
SendableHelper (const SendableHelper &rhs)=default | |
SendableHelper (SendableHelper &&rhs) | |
SendableHelper & | operator= (const SendableHelper &rhs)=default |
SendableHelper & | operator= (SendableHelper &&rhs) |
std::string | GetName () const |
Gets the name of this Sendable object. More... | |
void | SetName (const wpi::Twine &name) |
Sets the name of this Sendable object. More... | |
void | SetName (const wpi::Twine &subsystem, const wpi::Twine &name) |
Sets both the subsystem name and device name of this Sendable object. More... | |
std::string | GetSubsystem () const |
Gets the subsystem name of this Sendable object. More... | |
void | SetSubsystem (const wpi::Twine &subsystem) |
Sets the subsystem name of this Sendable object. More... | |
Additional Inherited Members | |
![]() | |
void | SetName (const wpi::Twine &moduleType, int channel) |
Sets the name of the sensor with a channel number. More... | |
void | SetName (const wpi::Twine &moduleType, int moduleNumber, int channel) |
Sets the name of the sensor with a module and channel number. More... | |
void | AddChild (std::shared_ptr< Sendable > child) |
Add a child component. More... | |
void | AddChild (void *child) |
Add a child component. More... | |
Implements a PID control loop.
frc2::PIDController::PIDController | ( | double | Kp, |
double | Ki, | ||
double | Kd, | ||
units::second_t | period = 20_ms |
||
) |
Allocates a PIDController with the given constants for Kp, Ki, and Kd.
Kp | The proportional coefficient. |
Ki | The integral coefficient. |
Kd | The derivative coefficient. |
period | The period between controller updates in seconds. The default is 20 milliseconds. |
bool frc2::PIDController::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 frc2::PIDController::Calculate | ( | double | measurement | ) |
Returns the next output of the PID controller.
measurement | The current measurement of the process variable. |
double frc2::PIDController::Calculate | ( | double | measurement, |
double | setpoint | ||
) |
Returns the next output of the PID controller.
measurement | The current measurement of the process variable. |
setpoint | The new setpoint of the controller. |
void frc2::PIDController::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 frc2::PIDController::GetD | ( | ) | const |
Gets the differential coefficient.
double frc2::PIDController::GetI | ( | ) | const |
Gets the integral coefficient.
double frc2::PIDController::GetP | ( | ) | const |
Gets the proportional coefficient.
units::second_t frc2::PIDController::GetPeriod | ( | ) | const |
Gets the period of this controller.
double frc2::PIDController::GetSetpoint | ( | ) | const |
Returns the current setpoint of the PIDController.
|
overridevirtual |
void frc2::PIDController::SetD | ( | double | Kd | ) |
Sets the differential coefficient of the PID controller gain.
Kd | differential coefficient |
void frc2::PIDController::SetI | ( | double | Ki | ) |
Sets the integral coefficient of the PID controller gain.
Ki | integral coefficient |
void frc2::PIDController::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 frc2::PIDController::SetP | ( | double | Kp | ) |
Sets the proportional coefficient of the PID controller gain.
Kp | proportional coefficient |
void frc2::PIDController::SetPID | ( | double | Kp, |
double | Ki, | ||
double | Kd | ||
) |
Sets the PID Controller gain parameters.
Sets the proportional, integral, and differential coefficients.
Kp | Proportional coefficient |
Ki | Integral coefficient |
Kd | Differential coefficient |
void frc2::PIDController::SetSetpoint | ( | double | setpoint | ) |
Sets the setpoint for the PIDController.
setpoint | The desired setpoint. |
void frc2::PIDController::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. |
velociytTolerance | Velocity error which is tolerable. |