rm_vision/tools/pid.hpp
2025-12-15 02:33:20 +08:00

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