QuadroCopter  0.1.4
PIDImpl Class Reference

Public Member Functions

 PIDImpl (double dt, double max, double min, double Kp, double Kd, double Ki)
 
 ~PIDImpl ()
 
double calculate (double setpoint, double pv)
 

Constructor & Destructor Documentation

PIDImpl::PIDImpl ( double  dt,
double  max,
double  min,
double  Kp,
double  Kd,
double  Ki 
)

Implementation

49  :
50  _dt( dt ),
51  _max( max ),
52  _min( min ),
53  _Kp( Kp ),
54  _Kd( Kd ),
55  _Ki( Ki ),
56  _pre_error( 0 ),
57  _integral( 0 )
58 {
59 }
PIDImpl::~PIDImpl ( )
94 {
95 }

Member Function Documentation

double PIDImpl::calculate ( double  setpoint,
double  pv 
)
62 {
63 
64  // Calculate error
65  double error = setpoint - pv;
66 
67  // Proportional term
68  double Pout = _Kp * error;
69 
70  // Integral term
71  _integral += error * _dt;
72  double Iout = _Ki * _integral;
73 
74  // Derivative term
75  double derivative = ( error - _pre_error ) / _dt;
76  double Dout = _Kd * derivative;
77 
78  // Calculate total output
79  double output = Pout + Iout + Dout;
80 
81  // Restrict to max/min
82  if ( output > _max )
83  output = _max;
84  else if ( output < _min )
85  output = _min;
86 
87  // Save error to previous error
88  _pre_error = error;
89 
90  return output;
91 }

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