37 lines
822 B
C++
37 lines
822 B
C++
#ifndef TOOLS__PID_HPP
|
|
#define TOOLS__PID_HPP
|
|
|
|
namespace tools
|
|
{
|
|
class PID
|
|
{
|
|
public:
|
|
// dt: 控制周期, 单位: s
|
|
// kp: P项系数
|
|
// ki: I项系数
|
|
// kd: D项系数
|
|
// max_out: PID最大输出值
|
|
// max_iout I项最大输出值
|
|
PID(float dt, float kp, float ki, float kd, float max_out, float max_iout, bool angular = false);
|
|
|
|
float pout = 0.0f; // P项输出, 用于调试
|
|
float iout = 0.0f; // I项输出, 用于调试
|
|
float dout = 0.0f; // D项输出, 用于调试
|
|
|
|
// 计算PID输出值
|
|
// set: 目标值
|
|
// fdb: 反馈值(feedback)
|
|
float calc(float set, float fdb);
|
|
|
|
private:
|
|
const float dt_;
|
|
const float kp_, ki_, kd_;
|
|
const float max_out_, max_iout_;
|
|
const bool angular_;
|
|
|
|
float last_fdb_ = 0.0f; // 上次反馈值
|
|
};
|
|
|
|
} // namespace tools
|
|
|
|
#endif // TOOLS__PID_HPP
|