diff options
Diffstat (limited to 'zumo/pid.h')
-rw-r--r-- | zumo/pid.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/zumo/pid.h b/zumo/pid.h new file mode 100644 index 0000000..beb73ac --- /dev/null +++ b/zumo/pid.h @@ -0,0 +1,21 @@ +#pragma once + +#include "protocol.h" + +class PID { +private: + float A0, A1, A0d, A1d, A2d, tau, alpha, d0, d1, fd0, fd1; + float error[3]; + float output; + const float dt = 1.0; + const float N = 10.0; + +public: + PID(float P = -0.02, float I = 0.13, float D = -300.0); + float iter(float target); + void reset(float value); +}; + +/** @brief edit `current` to be closer to `target` using PID controllers */ +void apply_pid(dui_state_t* target, dui_state_t* current); + |