38 lines
894 B
C++
38 lines
894 B
C++
#ifndef __GEBOT_PID_H__
|
|
#define __GEBOT_PID_H__
|
|
|
|
//pid接口
|
|
class PID
|
|
{
|
|
public:
|
|
/* pid构造函数
|
|
* @param input pid输入的地址
|
|
* @param output pid输出的地址
|
|
* @param kp,ki,kd pid参数
|
|
* @param max_output 输出结构的限制值
|
|
*/
|
|
PID(float* input, float* feedback, float kp, float ki, float kd, unsigned short max_output);
|
|
|
|
// pid计算
|
|
short Compute(float interval);
|
|
|
|
// 重置pid的值
|
|
void Clear();
|
|
|
|
// 更新pid参数
|
|
void Update(float kp, float ki, float kd, unsigned short _maxOutput);
|
|
private:
|
|
float kp;
|
|
float ki;
|
|
float kd;
|
|
float max_output;
|
|
float* input;
|
|
float* feedback;
|
|
float err; // 比例值
|
|
float integra; // 积分值
|
|
float derivative; // 微分值
|
|
float preErr; // 上一次的输入反馈差值
|
|
};
|
|
|
|
#endif
|