PID Class Reference

Generic PID controller class. More...

#include <common/common.hh>

Public Member Functions

 PID (double _p=0.0, double _i=0.0, double _d=0.0, double _imax=0.0, double _imin=0.0, double _cmdMax=-1.0, double _cmdMin=0.0)
 Constructor, zeros out Pid values when created and initialize Pid-gains and integral term limits:[iMax:iMin]-[I1:I2]. More...
 
virtual ~PID ()
 Destructor. More...
 
double GetCmd ()
 Return current command for this PID controller. More...
 
double GetCmdMax () const
 Get the maximum value for the command. More...
 
double GetCmdMin () const
 Get the maximum value for the command. More...
 
double GetDGain () const
 Get the derivative Gain. More...
 
void GetErrors (double &_pe, double &_ie, double &_de)
 Return PID error terms for the controller. More...
 
double GetIGain () const
 Get the integral Gain. More...
 
double GetIMax () const
 Get the integral upper limit. More...
 
double GetIMin () const
 Get the integral lower limit. More...
 
double GetPGain () const
 Get the proportional Gain. More...
 
void Init (double _p=0.0, double _i=0.0, double _d=0.0, double _imax=0.0, double _imin=0.0, double _cmdMax=-1.0, double _cmdMin=0.0)
 Initialize PID-gains and integral term limits:[iMax:iMin]-[I1:I2]. More...
 
PIDoperator= (const PID &_p)
 Assignment operator. More...
 
void Reset ()
 Reset the errors and command. More...
 
void SetCmd (double _cmd)
 Set current target command for this PID controller. More...
 
void SetCmdMax (double _c)
 Set the maximum value for the command. More...
 
void SetCmdMin (double _c)
 Set the maximum value for the command. More...
 
void SetDGain (double _d)
 Set the derivtive Gain. More...
 
void SetIGain (double _i)
 Set the integral Gain. More...
 
void SetIMax (double _i)
 Set the integral upper limit. More...
 
void SetIMin (double _i)
 Set the integral lower limit. More...
 
void SetPGain (double _p)
 Set the proportional Gain. More...
 
double Update (double _error, common::Time _dt)
 Update the Pid loop with nonuniform time step size. More...
 

Detailed Description

Generic PID controller class.

Generic proportiolnal-integral-derivative controller class that keeps track of PID-error states and control inputs given the state of a system and a user specified target state.

Constructor & Destructor Documentation

PID ( double  _p = 0.0,
double  _i = 0.0,
double  _d = 0.0,
double  _imax = 0.0,
double  _imin = 0.0,
double  _cmdMax = -1.0,
double  _cmdMin = 0.0 
)

Constructor, zeros out Pid values when created and initialize Pid-gains and integral term limits:[iMax:iMin]-[I1:I2].

Disable command clamping by setting _cmdMin to a value larger than _cmdMax. Command clamping is disabled by default.

Parameters
[in]_pThe proportional gain.
[in]_iThe integral gain.
[in]_dThe derivative gain.
[in]_imaxThe integral upper limit.
[in]_iminThe integral lower limit.
[in]_cmdMaxOutput max value.
[in]_cmdMinOutput min value.
virtual ~PID ( )
virtual

Destructor.

Member Function Documentation

double GetCmd ( )

Return current command for this PID controller.

Returns
the command value
double GetCmdMax ( ) const

Get the maximum value for the command.

Returns
The maximum value
double GetCmdMin ( ) const

Get the maximum value for the command.

Returns
The maximum value
double GetDGain ( ) const

Get the derivative Gain.

Returns
The derivative gain value
void GetErrors ( double &  _pe,
double &  _ie,
double &  _de 
)

Return PID error terms for the controller.

Parameters
[in]_peThe proportional error.
[in]_ieThe integral error.
[in]_deThe derivative error.
double GetIGain ( ) const

Get the integral Gain.

Returns
The integral gain value
double GetIMax ( ) const

Get the integral upper limit.

Returns
The integral upper limit value
double GetIMin ( ) const

Get the integral lower limit.

Returns
The integral lower limit value
double GetPGain ( ) const

Get the proportional Gain.

Returns
The proportional gain value
void Init ( double  _p = 0.0,
double  _i = 0.0,
double  _d = 0.0,
double  _imax = 0.0,
double  _imin = 0.0,
double  _cmdMax = -1.0,
double  _cmdMin = 0.0 
)

Initialize PID-gains and integral term limits:[iMax:iMin]-[I1:I2].

Disable command clamping by setting _cmdMin to a value larger than _cmdMax. Command clamping is disabled by default.

Parameters
[in]_pThe proportional gain.
[in]_iThe integral gain.
[in]_dThe derivative gain.
[in]_imaxThe integral upper limit.
[in]_iminThe integral lower limit.
[in]_cmdMaxOutput max value.
[in]_cmdMinOutput min value.
PID& operator= ( const PID _p)
inline

Assignment operator.

Parameters
[in]_pa reference to a PID to assign values from
Returns
reference to this instance

References PID::Reset().

void Reset ( )

Reset the errors and command.

Referenced by PID::operator=().

void SetCmd ( double  _cmd)

Set current target command for this PID controller.

Parameters
[in]_cmdNew command
void SetCmdMax ( double  _c)

Set the maximum value for the command.

Parameters
[in]_cThe maximum value
void SetCmdMin ( double  _c)

Set the maximum value for the command.

Parameters
[in]_cThe maximum value
void SetDGain ( double  _d)

Set the derivtive Gain.

Parameters
[in]_pdertivative gain value
void SetIGain ( double  _i)

Set the integral Gain.

Parameters
[in]_pintegral gain value
void SetIMax ( double  _i)

Set the integral upper limit.

Parameters
[in]_pintegral upper limit value
void SetIMin ( double  _i)

Set the integral lower limit.

Parameters
[in]_pintegral lower limit value
void SetPGain ( double  _p)

Set the proportional Gain.

Parameters
[in]_pproportional gain value
double Update ( double  _error,
common::Time  _dt 
)

Update the Pid loop with nonuniform time step size.

Parameters
_in]_error Error since last call (p_state - p_target).
_in]_dt Change in time since last update call. Normally, this is called at every time step, The return value is an updated command to be passed to the object being controlled.
Returns
the command value

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