#ifndef PID_H #define PID_H class PIDController { public: PIDController(float P, float I, float D, float ramp, float limit); ~PIDController() = default; float operator()(float error); void set_PID(float P, float I, float D); void set_P(float pp); void set_limit(float limit); void reset(); // 重置PID控制器状态 float P; //!< 比例增益(P环增益) float I; //!< 积分增益(I环增益) float D; //!< 微分增益(D环增益) float output_ramp; float limit; protected: float error_prev; //!< 最后的跟踪误差值 float output_prev; //!< 最后一个 pid 输出值 float integral_prev; //!< 最后一个积分分量值 unsigned long timestamp_prev; //!< 上次执行时间戳 float integral_separation_threshold; //!< 积分分离阈值,用于抗积分饱和 }; #endif