17 #ifndef IGNITION_MATH_PID_HH_ 18 #define IGNITION_MATH_PID_HH_ 22 #include <ignition/math/config.hh> 28 inline namespace IGNITION_MATH_VERSION_NAMESPACE
36 class IGNITION_MATH_VISIBLE
PID 55 public:
PID(
const double _p = 0.0,
56 const double _i = 0.0,
57 const double _d = 0.0,
58 const double _imax = -1.0,
59 const double _imin = 0.0,
60 const double _cmdMax = -1.0,
61 const double _cmdMin = 0.0,
62 const double _cmdOffset = 0.0);
65 public: ~
PID() =
default;
84 public:
void Init(
const double _p = 0.0,
85 const double _i = 0.0,
86 const double _d = 0.0,
87 const double _imax = -1.0,
88 const double _imin = 0.0,
89 const double _cmdMax = -1.0,
90 const double _cmdMin = 0.0,
91 const double _cmdOffset = 0.0);
95 public:
void SetPGain(
const double _p);
99 public:
void SetIGain(
const double _i);
103 public:
void SetDGain(
const double _d);
107 public:
void SetIMax(
const double _i);
111 public:
void SetIMin(
const double _i);
115 public:
void SetCmdMax(
const double _c);
119 public:
void SetCmdMin(
const double _c);
124 public:
void SetCmdOffset(
const double _c);
128 public:
double PGain()
const;
132 public:
double IGain()
const;
136 public:
double DGain()
const;
140 public:
double IMax()
const;
144 public:
double IMin()
const;
148 public:
double CmdMax()
const;
152 public:
double CmdMin()
const;
156 public:
double CmdOffset()
const;
165 public:
double Update(
const double _error,
166 const std::chrono::duration<double> &_dt);
170 public:
void SetCmd(
const double _cmd);
174 public:
double Cmd()
const;
180 public:
void Errors(
double &_pe,
double &_ie,
double &_de)
const;
185 public:
PID &operator=(
const PID &_p);
188 public:
void Reset();
191 private:
double pErrLast = 0.0;
194 private:
double pErr = 0.0;
197 private:
double iErr = 0.0;
200 private:
double dErr = 0.0;
203 private:
double pGain;
206 private:
double iGain = 0.0;
209 private:
double dGain = 0.0;
212 private:
double iMax = -1.0;
215 private:
double iMin = 0.0;
218 private:
double cmd = 0.0;
221 private:
double cmdMax = -1.0;
224 private:
double cmdMin = 0.0;
227 private:
double cmdOffset = 0.0;
Generic PID controller class.
Definition: PID.hh:36