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()

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.

◆ ~PID()

virtual ~PID ( )
virtual

Destructor.

Member Function Documentation

◆ GetCmd()

double GetCmd ( )

Return current command for this PID controller.

Returns
the command value

◆ GetCmdMax()

double GetCmdMax ( ) const

Get the maximum value for the command.

Returns
The maximum value

◆ GetCmdMin()

double GetCmdMin ( ) const

Get the maximum value for the command.

Returns
The maximum value

◆ GetDGain()

double GetDGain ( ) const

Get the derivative Gain.

Returns
The derivative gain value

◆ GetErrors()

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.

◆ GetIGain()

double GetIGain ( ) const

Get the integral Gain.

Returns
The integral gain value

◆ GetIMax()

double GetIMax ( ) const

Get the integral upper limit.

Returns
The integral upper limit value

◆ GetIMin()

double GetIMin ( ) const

Get the integral lower limit.

Returns
The integral lower limit value

◆ GetPGain()

double GetPGain ( ) const

Get the proportional Gain.

Returns
The proportional gain value

◆ Init()

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.

◆ operator=()

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().

◆ Reset()

void Reset ( )

Reset the errors and command.

Referenced by PID::operator=().

◆ SetCmd()

void SetCmd ( double  _cmd)

Set current target command for this PID controller.

Parameters
[in]_cmdNew command

◆ SetCmdMax()

void SetCmdMax ( double  _c)

Set the maximum value for the command.

Parameters
[in]_cThe maximum value

◆ SetCmdMin()

void SetCmdMin ( double  _c)

Set the maximum value for the command.

Parameters
[in]_cThe maximum value

◆ SetDGain()

void SetDGain ( double  _d)

Set the derivtive Gain.

Parameters
[in]_pdertivative gain value

◆ SetIGain()

void SetIGain ( double  _i)

Set the integral Gain.

Parameters
[in]_pintegral gain value

◆ SetIMax()

void SetIMax ( double  _i)

Set the integral upper limit.

Parameters
[in]_pintegral upper limit value

◆ SetIMin()

void SetIMin ( double  _i)

Set the integral lower limit.

Parameters
[in]_pintegral lower limit value

◆ SetPGain()

void SetPGain ( double  _p)

Set the proportional Gain.

Parameters
[in]_pproportional gain value

◆ Update()

double Update ( double  _error,
common::Time  _dt 
)

Update the Pid loop with nonuniform time step size.

Parameters

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