26 set_param(dt_, Kp_, Ki_, Kd_, I_max_, u_max_, d_filter_, fc_);
41 lpf.set_param(fc, dt);
52 I = I + Ki * e_k * dt;
62 D = Kd * (e_k - e_k_1) / dt;
98 lpf.set_param(fc, dt);
134 d_filter = d_filter_;
141 lpf.set_param(fc, dt);
void set_d_filter(bool d_filter_)
Enables or disables derivative filtering.
T get_u_max()
Gets the maximum controller output.
T get_Kp()
Gets the proportional gain.
T get_P()
Gets the proportional contribution.
void set_dt(T dt_)
Sets the controller sampling time.
void set_Kd(T Kd_)
Sets the derivative gain.
void set_Ki(T Ki_)
Sets the integral gain.
void set_Kp(T Kp_)
Sets the proportional gain.
void set_u_max(T u_max_)
Sets the maximum controller output.
T get_Ki()
Gets the integral gain.
void set_ff(T u_ff_)
Sets the feed-forward control input.
T update(T x_0, T x, T u_ff_=0.0)
Computes the PID control output.
T get_u()
Gets the controller output.
void set_param(T dt_, T Kp_, T Ki_, T Kd_, T I_max_, T u_max_, bool d_filter_=false, T fc_=10.0)
Sets the PID controller parameters.
T get_ff()
Gets the feed-forward control input.
void init(T dt_, T Kp_, T Ki_, T Kd_, T I_max_, T u_max_, bool d_filter_=false, T fc_=10.0)
Initializes the PID controller.
T get_I_max()
Gets the maximum integral contribution.
void merge(T u_k_1_)
Merges an external controller output into the PID state.
T get_D()
Gets the derivative contribution.
T get_Kd()
Gets the derivative gain.
T get_e_k_1()
Gets the previous control error.
T get_I()
Gets the integral contribution.
void set_fc(T fc_)
Sets the derivative filter cutoff frequency.
bool get_d_filter()
Gets the derivative filter enable state.
T get_fc()
Gets the derivative filter cutoff frequency.
void reset()
Resets the PID controller state.
T get_dt()
Gets the controller sampling time.
void set_I_max(T I_max_)
Sets the maximum integral contribution.
PID_P()
Constructs a PID controller.
PID controller with configurable derivative filtering and feed-forward.
constexpr T saturate(T x, T x_min, T x_max)
Saturates a value within a specified range.