FancySafeBot 0.0.1
A safe robotics library
Loading...
Searching...
No Matches
fsb_pid.h
1#ifndef FSB_PID_H
2#define FSB_PID_H
3
4#include <cstdint>
5#include "fsb_types.h"
6
7namespace fsb
8{
9
19enum class PidType : uint8_t
20{
24 TRAPEZOIDAL = 0,
29 BACKWARDS = 1
30};
31
36{
37public:
38 PidController() = default;
39
50 void initialize(
51 real_t step_size, real_t gain_kp, real_t gain_ki, real_t gain_kd, real_t filter_tf,
53
62 void reset(real_t command, real_t measured);
63
71 real_t evaluate(real_t command, real_t measured);
72
73private:
75 real_t m_kp = 0.0;
77 real_t m_ki = 0.0;
79 real_t m_kd = 0.0;
81 real_t m_tf = 0.0;
83 real_t m_step_size = 0.0;
86
88 real_t m_e1 = 0.0;
89 real_t m_e2 = 0.0;
90 real_t m_u1 = 0.0;
91 real_t m_u2 = 0.0;
92};
93
98} // namespace fsb
99
100#endif
PID Controller.
Definition fsb_pid.h:36
void reset(real_t command, real_t measured)
Reset PID to given command and measure.
Definition fsb_pid.cpp:55
real_t evaluate(real_t command, real_t measured)
Evalaute PID.
Definition fsb_pid.cpp:66
void initialize(real_t step_size, real_t gain_kp, real_t gain_ki, real_t gain_kd, real_t filter_tf, PidType type=PidType::TRAPEZOIDAL)
Initialize PID.
Definition fsb_pid.cpp:38
PidType
Type of discretization.
Definition fsb_pid.h:20
@ BACKWARDS
Backwards difference discretization.
@ TRAPEZOIDAL
Trapezoidal discretization.