RIT VEXU Core API
Loading...
Searching...
No Matches
core::PID Class Reference

#include <pid.h>

Public Member Functions

void set_pid (double kP, double kI, double kD)
 
void set_p (double kP)
 
void set_i (double kI)
 
void set_d (double kD)
 
void set_tolerance (double tolerance)
 
void set_i_zone (double i_zone)
 
double p () const
 
double i () const
 
double d () const
 
double tolerance () const
 
double i_zone () const
 
void set_i_limits (double i_min, double i_max)
 
void set_output_limits (double minimum_output, double maximum_output)
 
double dt () const
 
void set_dt (double dt)
 
void set_setpoint (double setpoint)
 
double setpoint () const
 
bool is_continuous () const
 
void enable_continuous (double minimum_input=-1, double maximum_input=1)
 
void disable_continuous ()
 
bool at_setpoint () const
 
double calculate (double measurement)
 
double calculate (double setpoint, double measurement)
 
void reset ()
 
void reset_i ()
 

Detailed Description

Implements a PID controller with some additional features.

This class allows for setting PID gains, tolerance, integral zone, integral limits, output limits, and continuous mode for angle wrapping.

The PID formula is: output = kP * error + kI * integral(error) + kD * derivative(error)

Author
Ryan McGee, Jack Cammarata
Date
4/3/2020, 6/27/2025

Member Function Documentation

◆ at_setpoint()

bool core::PID::at_setpoint ( ) const
inline

Checks if the measured value is at the setpoint within the tolerance.

Returns
True if the error is within the tolerance.

◆ calculate() [1/2]

double core::PID::calculate ( double measurement)
inline

Calculates the PID output based on the current measurement.

Parameters
measurementThe current measurement value.
Returns
The calculated PID output.

◆ calculate() [2/2]

double core::PID::calculate ( double setpoint,
double measurement )
inline

Calculates the PID output based on a setpoint and current measurement.

Parameters
setpointThe desired setpoint value.
measurementThe current measurement value.
Returns
The calculated PID output.

◆ d()

double core::PID::d ( ) const
inline

Returns the derivative gain.

Returns
The derivative gain.

◆ disable_continuous()

void core::PID::disable_continuous ( )
inline

Disables continuous mode.

◆ dt()

double core::PID::dt ( ) const
inline

Returns the time period in seconds.

Returns
The time period in seconds.

◆ enable_continuous()

void core::PID::enable_continuous ( double minimum_input = -1,
double maximum_input = 1 )
inline

Enables continuous mode and sets the input range. This wraps the inputs, mostly useful for angles.

Parameters
minimum_inputThe minimum input value (default -1).
maximum_inputThe maximum input value (default 1).

◆ i()

double core::PID::i ( ) const
inline

Returns the integral gain.

Returns
The integral gain.

◆ i_zone()

double core::PID::i_zone ( ) const
inline

Returns the integral zone.

Returns
The integral zone value.

◆ is_continuous()

bool core::PID::is_continuous ( ) const
inline

Checks if the PID controller is in continuous mode.

Returns
True if in continuous mode.

◆ p()

double core::PID::p ( ) const
inline

Returns the proportional gain.

Returns
The proportional gain.

◆ reset()

void core::PID::reset ( )
inline

Resets the PID controller.

◆ reset_i()

void core::PID::reset_i ( )
inline

Resets the integral term only.

◆ set_d()

void core::PID::set_d ( double kD)
inline

Sets the Derivative gain.

Parameters
kDThe derivative gain.

◆ set_dt()

void core::PID::set_dt ( double dt)
inline

Sets the update time period in seconds.

Parameters
dtThe time period in seconds.

◆ set_i()

void core::PID::set_i ( double kI)
inline

Sets the Integral gain.

Parameters
kIThe integral gain.

◆ set_i_limits()

void core::PID::set_i_limits ( double i_min,
double i_max )
inline

Sets limits on the effect of the integral term.

Parameters
i_minThe minimum value for the integral term.
i_maxThe maximum value for the integral term.

◆ set_i_zone()

void core::PID::set_i_zone ( double i_zone)
inline

Sets the integral zone. If the absolute error is less than this value, the integral term will accumulate. If the absolute error is greater than this value, the accumulated error will be reset to zero.

Parameters
i_zoneThe integral zone value.

◆ set_output_limits()

void core::PID::set_output_limits ( double minimum_output,
double maximum_output )
inline

Sets the output limits, usually -12V to 12V for a motor.

Parameters
minimum_outputThe minimum output value.
maximum_outputThe maximum output value.

◆ set_p()

void core::PID::set_p ( double kP)
inline

Sets the Proportional gain.

Parameters
kPThe proportional gain.

◆ set_pid()

void core::PID::set_pid ( double kP,
double kI,
double kD )
inline

Sets the PID gains.

Parameters
kPThe proportional gain.
kIThe integral gain.
kDThe derivative gain.

◆ set_setpoint()

void core::PID::set_setpoint ( double setpoint)
inline

Sets the setpoint.

Parameters
setpointThe setpoint value.

◆ set_tolerance()

void core::PID::set_tolerance ( double tolerance)
inline

Sets the tolerance for whether the setpoint is reached.

Parameters
toleranceThe tolerance value. If absolute error < tol then it's at the setpoint.

◆ setpoint()

double core::PID::setpoint ( ) const
inline

Returns the current setpoint.

Returns
The setpoint value.

◆ tolerance()

double core::PID::tolerance ( ) const
inline

Returns the tolerance.

Returns
The tolerance value.

The documentation for this class was generated from the following file: