LRT13  1.0
 All Classes Namespaces Functions Variables Enumerations Enumerator
PID.h
1 #ifndef PID_CONTROLLER_H_
2 #define PID_CONTROLLER_H_
3 
4 #include "RunningSum.h"
11 class PID
12 {
13 public:
23  PID(double p_gain, double i_gain, double d_gain, double ff_gain = 1.0,
24  double i_decay = 0.5, bool feedforward = true, double filterFreq = 7.0);
25 
29  PID();
30 
41  void setParameters(double p_gain, double i_gain, double d_gain,
42  double ff_gain = 1.0, double i_decay = 0.87,
43  bool feedforward = true, double filterFreq = 7.0);
44 
50  virtual double update(double dt);
51 
56  void setInput(double input);
57 
62  virtual void setSetpoint(double setpoint);
63 
68  double getOutput();
69 
74  double getProportionalGain();
75 
80  double getIntegralGain();
81 
86  double getDerivativeGain();
87 
92  double getFeedForwardGain();
93 
98  double getIntegralDecay();
99 
104  double getInput();
105 
110  double getSetpoint();
111 
116  double getError();
117 
122  double getAccumulatedError();
123 
128  double getPreviousError();
129 
134  bool isFeedForward();
135 
139  void reset();
140 
144  void disablePID();
145 
149  void enablePID();
150 
154  void setIIREnabled(bool enabled);
155 
159  void setIIRDecay(double decay);
160 
161 private:
162  double m_proportional_gain;
163  double m_integral_gain;
164  double m_derivative_gain;
165  double m_feedforward_gain;
166  double m_integral_decay;
167  double m_input;
168  double m_output;
169  double m_setpoint;
170  double m_error;
171  double m_prev_error;
172  double m_acc_error;
173  bool m_is_feed_forward;
174  bool m_enabled;
175 
176  bool m_IIREnabled;
177  RunningSum m_runningSum;
178 };
179 #endif