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