Files
Motor_v2/Robot_V2/Algorithm/pid.h
T

25 lines
675 B
C++
Raw Normal View History

2025-10-30 20:20:14 +08:00
#ifndef PID_H
#define PID_H
2026-01-24 01:50:39 +08:00
class PIDController {
public:
PIDController(float P, float I, float D, float ramp, float limit);
~PIDController() = default;
2025-10-30 20:20:14 +08:00
2026-01-24 01:50:39 +08:00
float operator()(float error);
2025-11-06 02:07:15 +08:00
void set_PID(float P, float I, float D);
void set_P_percent(float pp);
2025-10-30 20:20:14 +08:00
2026-01-24 01:50:39 +08:00
float P; //!< 比例增益(P环增益)
float I; //!< 积分增益(I环增益)
float D; //!< 微分增益(D环增益)
float output_ramp;
float limit;
2025-10-30 20:20:14 +08:00
2026-01-24 01:50:39 +08:00
protected:
float error_prev; //!< 最后的跟踪误差值
float output_prev; //!< 最后一个 pid 输出值
float integral_prev; //!< 最后一个积分分量值
unsigned long timestamp_prev; //!< 上次执行时间戳
};
2025-10-30 20:20:14 +08:00
#endif