简述pid

pid个人简述


前言

有用过智能小车或者机械臂或者机器人都知道,真正的理论控制中pid绝对有重要的地位,而pid pid是啥,表面意思上就
P(proportion比例) I(Integral积分) D(differential calculus微分)
我们暂时只需要记住这三样的英文,因为小编,,,,咳咳

一、三样基础

此基础全部基于我们目标值跟我们所处值作阐述:“所谓 PID 控制,就是对系统偏差进行比例、积分以及微分的控制。PID 是闭环控制,因此需要有传感器测量我们需要控制的参数,并且反馈到我们的控制计算当中,并且参与控制。PID 由 3 个单元组成,分别是比例(Proportion)单元、积分(Integral)单元、微分(Differential)单元。通过对这三个单元的处理计算输出给执行器,达到减小偏差最终实现收敛的过程"这段话是借鉴,但是实际过程中,我都是实际靠感觉调参,

1、P(proportion比例) 是什么?

比例比较简单,在我们高中都有学过,就是斜率,就比如说我们的目标值现在是在(1,1),而我们的所处值是(0,0),那很明显,我们的斜率就是1即为我们的比例就是P

2、I(Integral积分) 是什么?

我们高数有学过,在我们周围规则图像大致面积等于x * y,但是像一些不规则就只能通过积分来求,但是在某种意义上,就是将不规则“切割”成可通用计算的规则图形,这就是积分,就好比速度跟时间,y轴为速度,x轴为时间,但是速度忽慢忽快,为了求位移,就是一个积分的过程,在某单位时间跨度切割,就可以大概得出一个常规四边形,不断加起来就是此部分面积

3、D(differential calculus微分)是什么?

微分在数学中的定义:由函数B=f(A),得到A、B两个数集,在A中当dx靠近自己时,函数在dx处的极限叫作函数在dx处的微分,微分的中心思想是无穷分割。微分是函数改变量的线性主要部分。微积分的基本概念之一。大概可以理解单位变化时间内两 y` 的差值

二、术语与代码

最大超调量:是响应曲线的最大峰值与稳态值的差,是评估系统稳定性的一个重要指标;
----打个比方,我们用舵机进行位置定位,从a点出发,预计到达b点,假如因为某些因素到达了c点,那超调量就是c-b
上升时间:  是指响应曲线从原始工作状态出发,第一次到达输出稳态值所需的时间,是评估系统快速性的一个重要指标;
静差:      是被控量的稳定值与给定值之差,一般用于衡量系统的准确性;

1.pid实例

假如我们单片机的分频值为0,重装载值7199
入口参数:编码器测量位置信息,目标位置

/**************************************************************************
函数功能:位置式PID控制器
入口参数:编码器测量位置信息,目标位置
返回  值:电机PWM
根据位置式离散PID公式 
pwm=Kp*e(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]
e(k)代表本次偏差 
e(k-1)代表上一次的偏差  
∑e(k)代表e(k)以及之前的偏差的累积和;其中k为1,2,,k;
pwm代表输出
**************************************************************************/
int Position_PID (int position,int target)
{ 	
	 static float Bias,Pwm,Integral_bias,Last_Bias;
	 Bias=target-position;                                  //计算偏差
	 Integral_bias+=Bias;	                                 //求出偏差的积分
	 if(Integral_bias>3000)Integral_bias=3000;
	 if(Integral_bias<-3000)Integral_bias=-3000;
	 Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias);       //位置式PID控制器
	 Last_Bias=Bias;                                       //保存上一次偏差 
	 return Pwm;                                           //增量输出
}

Bias----------------------------此次偏差
Integral_bias-----------------累计偏差
Last_Bias --------------------上次偏差
我们可以根据

Pwm=Position_KP * Bias+Position_KI * Integral_bias+Position_KD * (Bias-Last_Bias);

1.P比例

我们先看 Position_KP * Bias,Position_KP 部分。这部分我们可以理解成一元线性函数y=a * bias,也是我们pid绝大多数场景最重要,反应最快的部分,也是造成超调的原因,比如我们烧水,我们单位时间加热系数P为1.2,时间为单位time,但是我们希望温度为10,那么他time1就会先到达1.2 * (10-0)=12, 这时候超调3,time2的时候是0.9*(10-12)=-1.8,

2.I积分

Position_KI*Integral_bias:

3.D微分

我们之前说过D可以看出变化率的大小变化,那我们这次减去上次的偏差在某种程度上体现了单位时间内
Position_KD * (Bias-Last_Bias):
我们上面说到了超调1即为8,但是我们假设让他自行冷却,当他冷却到6.9时候,他又加热,6.9+2,又变成了8.9,这样永远处于动荡的过程中,假如我们加入微分,其震荡会变小,我们之前说过,微分就是两单位时间内,y的差值的的差值,打个比方,我们假设实在p点到达了6值,那我们距离7值的的偏差为1,当我们加热到q点8.9时,我们的偏差为1.9,

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值