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、结果可能需要通过加入断点才好观察;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ah_yl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值