PID算法精简的C++代码实现
对于PID控制的简洁明了的解释
网上对于pid的介绍有很多了、这一篇帖子阅读量较大、讲解的也很简洁明了;
附上帖子的链接:一文读懂PID控制算法(抛弃公式,从原理上真正理解PID控制).
对于pid算法的c++代码实现
代码很简短、如下所示
#include <iostream>
using namespace std;
double G_targetLocation=0.0; //目标追踪位置
double G_presentLocation = 0.0; //目标当前位置
float Kp(0), Ki(0), Kd(0);
int main()
{
double error_p=0; //kp误差
double error_i = 0; //ki误差
double error_d = 0; //kd误差
double error_dp = 0; //上一次的kp误差、用于计算kd误差
cout << "请输入目标追踪值" << endl;
cin >> G_targetLocation;
cout << "请输入kp" << endl;
cin >> Kp;
cout << "请输入ki" << endl;
cin >> Ki;
cout << "请输入kd" << endl;
cin >> Kd;
error_dp= G_targetLocation - G_presentLocation; //整个系统第一次计算kd时、 e(k)-e(k-1)、
//error_dp表示e(k-1)
while (1) {
error_p = G_targetLocation - G_presentLocation;
error_i += error_p;
error_d = error_p - error_dp;
error_dp = error_p;
G_presentLocation += Kp * error_p + Ki * error_i + Kd * error_d;
cout << "当前位置为:" << G_presentLocation << "当前的误差为" << G_targetLocation - G_presentLocation<<endl;
system("pause");
}
system("pause");
}
最后所运行的结果
最后运行结果可以看出、能够追踪上所需要跟踪的目标位置;
运行环境为vs2017、结果可能需要通过加入断点才好观察;