一、
如何解释P算法的作用?当前值与目标值存在误差,用系数kp乘误差值,在控制函数中加上这一项,用以减小误差,不同的系数KP对误差的调节作用不同,找到最合适的系数,来使误差较小,从而达到目标值。
Matlab:



二、让theta快速到0
1.P控制缺点

将目标值设为0,P控制,KP为5,其结果如下图第一个波形所示:

可以看到,这时候,theta的峰值一直减小,却很缓慢,增大P,只能让速度快一点,但不明显,说明此时P控制已经满足不了需求,解释:

P控制是每一个时刻计算与0的误差,然后乘以系数KP,这是每一时刻,控制器对被控对象所施加的影响,舵机的力u=KP*Error,E=theta_d-theta; 力u与角度theta成比例关系,说明控制器的影响,控制作用在位移层次,也就是说,对速度层次没有施加控制;此时我们分析速度,在由最高点到0的过程,先不看控制器,分析受力,重力的切线向下分量加速小球,加速度为mgsin(theta).theta一直减小,加速度减小;再分析搭载P算法的控制器,theta减小,error减小,舵机施加的力也就减小,即小球做加速度减小的加速运动,速度一直在累加,在最低点达到最大值,这也正好说明了P算法不对速度施加控制,它只对原函数产生控制作用,而不控制一阶导;同时再解释为什么theta的幅值会减小,theta从0增大到最大幅值的过程中,阻力与运动方向相反,且此时舵机的力也与运动方向相反,所以幅值会减小。

增大KP,可以减小稳定到0的时间(如图KP为100),但缺点会使单摆频率大大增加,周期减小,看上去单摆来回摆动速度过快,且舵机施加的力过大为50N,不一定能提供。所以增大KP过于理想。

2.解决方法:增加微分D控制
(1)建模



(2)现象
这样,力u就与速度theta的一阶导有了线性关系,便对速度有了控制作用,如图为加入D控制后的波形图,KP=1,KD=0.1:

发现theta可以很快到0,但是有超调。
下图为速度即一阶导的波形图:

增大KD为,加强D的控制作用:
KP=1,KD为0.2,波形如图:

KP=1,KD=0.4:

速度:

可以发现,theta可以一次到达0,没有超调。
KP=1,Kd=1:

速度:

到达0的时间增大
KP=2,Kd=1:

速度:

(3)那如何解释这种现象,解释D的控制是什么机理?
单纯D的控制机理其实和P的机理一样,通过系数乘以误差加到控制函数中来减小误差,不过P是对动力模型的数学函数的原函数层面来控制,而D则是在一阶函数层面;增加D后,在PD的共同作用下,theta可以很快的到0,但有超调。Theta由最大值到0的过程中,最开始,由于theta较大,速度较小,P的影响较大,对theta的控制较强,会使theta接近0,但同时由于P的影响大于D的影响,会使速度增大,;theta会减小,速度增大,则P对theta的影响慢慢减小,D对dot_theta速度的影响增大,总结为物体做加速度减小的加速运动;当达到某控制作用的平衡位置时,影响相同,控制作用为0;过了平衡位置,d的影响大于p,电机着重于让速度趋于0,由theta_d为0,dot_theta_d为0(目标值),可知最终状态必为单摆处于theta为0处静止。而系数kp和kd影响着哪个theta是平衡位置,若kp过大,p的作用过强,会使p大于d影响的那一段路程加长,使d大于p影响的那一段路程过小,导致在theta处于0处但dot_theta仍来不及减到0,因此有了超调现象;而kp合适但kd过大会使p大于d影响的那一段路程减短,使减速阶段时间增长;注:只要使kd过大的情形,最后的阶段一定是减速阶段,因为p和d的影响都在。那如何解释在不超调的情况下,kd增大会增大theta到达0的时间?在减速阶段,由于kd的增大,一方面会使pd相等的位置提前,减速阶段增大,时间加长; 另一方面使d减小的速度增大,即加速度减小的更快,则减速运动的速度减小的更慢,使到0的时间更长。
//theta由最大到0,物体做加速度减小的加速运动,对应p大于d,pd平衡,d大于p;加速度为0,受力平衡,速度最大,d最大同时也是在控制作用为0之后的控制作用pd之和最大处;加速度增大的减速运动;加速度减小的减速运动;同时说明了重力向下斜线的分量在减速阶段中加速度增大的阶段比控制作用减小的更快,加速度减小的阶段比控制作用减小的更慢。减速运动中,d和p的作用都减小,p小于d,且d减小的速度大于p;最后,pd同时减为0,物体也到达theta为0,速度为0处。
规律总结:kp过大,超调,此时合适增大kd,可减小超调;
Kd过大,到0时间过长,合适增大kp,减小到0时间;
都已调好的两队kp,kd,数值大的到0时间长。
3.此外,我还发现一个有趣的现象,如果不要p,只要D,能否达到预期的效果?可以,不妨设kp=0;
KD=0.1 :

速度:

KD=0.2 :

速度:

KD=0.4

速度:

如何理解:其实重力向下的分量在某种程度上相当于p控制,仅限这一题,都是随theta的减小而减小,因此,KD为0.1时相当于P过大,超调;KD为0.4时相当于D过大,theta到0时间增长。
但值得注意的是,这种现象并不一定具有普遍性,这道题恰好是重力可以替代P算法。
三、系统有外力做功
1.只有PD算法下的缺陷
(1)动力学方程增加外力(dis项)

(2)pd的缺陷:有残差无法消除

可见,即使控制器一直作用,残差仍无法消除。
(3)解释:原本静止的平衡系统,由于残差力的存在,平衡打破,物体再次动起来,PD发挥作用,想使物体回到原来的平衡,但注定无法回到原来的平衡,因为原来的平衡处PD皆无作用力。因此,新的平衡处必为PD控制有力的存在与残差力相平衡,且这个力一定是P的作用力,因为平衡时速度为0,而theta不为0,因此最后在某个偏离theta为0的位置处平衡。这是必然的,增大KP,只会使超调现象出现,而增大KD,只会使到达残差点的时间加长,最后都会出现残差。
KP=3,KD=0.4:

KP=1,KD=0.8:

2.解决方法:增加积分I(integral)
(1)建模:



将theta_d和theta的误差积分,送给int_e;
(2)现象

KI=0.1

速度:

KI=0.15

速度:

KI=0.4

速度:

(3)解释:积分I为什么能消除残差?
I算法是将每一时刻的误差累积起来,加到控制函数上,这样在有残差的情况下,I会再给控制函数加上误差,使残差减小。那I过大为什么会有超调呢?因为某时刻的I控制作用是将前面所有误差积累起来,加到控制函数上,因此I过大会导致超调,又因为PD的作用,theta会回调。最终的平衡位置一定是P和I发挥作用,作用方向相同,但平衡处一定不为theta=0处,0处PID都无作用,平衡处P加I(KI*E定值)和残差力平衡,也因此KI的大小影响着减小残差的多少。I可以减小残差,却绝对不会消除残差。
总结:I过大,超调。I过小,减小残差不明显。
超调:减小KI,减小KP,增大KD;
到稳定的时间过长:减小KD,再根据波形调节KP,KI.
当需要减小残差时增大KI,需要调节超调时减小KP(前提是KP导致的超调,若KP本身合适,再减小会导致超调更大。此时需要减小KI或增大KD),需要减小到0时长时减小KD.

四、要求由theta到0改为,theta为变化的轨迹
1.线性PID的缺点


发现可以跟随,但是误差较大,则增大KP,减小误差
KP=10:

KP=20:

可以发现,即使KP调的非常大,仍有一个非线性的三角函数级误差,且控制器的作用力也是个三角函数形。

解释:
一方面,动力学模型里有sin(theta)这个非线性因素影响。另一方面,应该考虑参考轨迹里面的高阶项,即用到加速度前馈。而我们减小误差的方法只是线性的用误差来消除误差,这并不是一个对症下药的好法子。

2.非线性PID


将KP调回为1:

可以看到,吻合程度极好,误差小,且控制力也不需要很大。
实际上,控制函数将动力学模型里的非线性项约掉了。

pid 以单摆系统为例相关推荐

  1. java字节对齐 32 64_【C语言】字节对齐问题(以32位系统为例)

    1. 什么是对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型 ...

  2. 【C语言】字节对齐问题(以32位系统为例)

    1. 什么是对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型 ...

  3. 使用 UML 进行业务建模:理解业务用例与系统用例的相似和不同之处

    來源:http://www.uml.org.cn/requirementproject/200707024.asp 作者:Arthur V. English 出处:IBM   本文来自于 Ration ...

  4. Android系统为例解读智能手机如何防盗

    家明(化名)是我市一名媒体从业者,前段时间,他不小心把手机丢了,"手机型号是诺基亚C7,年初3000元买的." 发现手机丢后,家明原路返回找了两趟,无果.因为工作需要,当天下午他就 ...

  5. 必过SafetyNet!以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法

    必过SafetyNet!以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法 作者 梓沐啊_(KylinDemons) 版权声明 Copyright © 2021 KylinD ...

  6. 采购单上单价的逻辑关系(以易飞系统为例)

    采购单上单价的逻辑关系(以易飞系统为例) 录入供应商信息→ ↓ 录入供应商料件价格 (单据信息中要录入:品号.单价.生效日期) ↓ 采购作业开始时,物料A是已采购过物料,有固定供应商.如果市场价格发生 ...

  7. 在Docker中安装Home Assistant系统(以群晖系统为例)【Home Assistant入门安装篇1-2】

    Home Assistant入门1-2:在Docker中安装Home Assistant系统(以群晖系统为例) 写在前面 我在家装有一个PVE虚拟机,里面装有一个黑群晖,最近在学习Home Assis ...

  8. php正方系统抓取课表,以正方教务系统为例,用php模拟登陆抓取课表、空教室,抓取课表...

    以正方教务系统为例,用php模拟登陆抓取课表.空教室,抓取课表 课程格子和超级课程表这两个应用,想必大学生都很熟悉,使用自己的学号和教务系统的密码,就可以将自己的课表导入,随时随地都可以在手机上查看. ...

  9. C++通过ODBC方式连接数据库SQLServer及增删查改操作【图书借阅系统为例】

    C++通过ODBC方式连接数据库SQLServer及增删查改操作[图书借阅系统为例] 文章目录 前言 一.ODBC如何配置 二.SQL Server如何设置账号密码 三.C++连接数据库以及增删查改操 ...

最新文章

  1. 监控Oracle性能的SQL
  2. 如何编辑PDF文件,怎么修改PDF中的文字
  3. 便携式不锈钢管道焊接机器人_不锈钢管道焊接工艺
  4. 2013-10-31 《October 31st, 2013》
  5. MySQL: load data infile 需要注意的点
  6. ISO base media file format---iso 基础媒体文件格式(专业名称)
  7. 【渝粤题库】陕西师范大学202041 国际经济学 作业(专升本)
  8. SQL Server中行列转换 Pivot UnPivot
  9. 2.2基本算法之递归和自调用函数_7592 求最大公约数问题
  10. python 输入列表 返回每个元素出现的次数
  11. AI 删库,程序员背锅?
  12. 代码学习-Linux内核网卡收包过程(NAPI)
  13. ERROR: Invalid requirement: ‘_libgcc_mutex=0.1=main‘ XXX Hint: = is not a valid operator. Did you me
  14. LeetCode: Minimum Time Difference
  15. Unity学习笔记——博客中有游戏练习案例
  16. 使用py2app打包项目 通用与各个平台
  17. 盘点vivo手机的HiFi之路 极致的信仰
  18. 【I.MX6ULL】6ull 加载 linux 驱动模块失败
  19. Blender2.8以及2.9版本 摄像机设置方式笔记
  20. linux安装浏览器 linux本地浏览器进行访问

热门文章

  1. 揭开ZigBee 2006协议栈Z-Stack的”开源“面纱
  2. Windows10升级Windows11之后Edge浏览器被强制修改成360的解决办法
  3. 阿里巴巴 iDST 首席科学家兼副院长任小枫:最看好计算机视觉在这四大新零售细分方向的应用...
  4. statemachine简介及简单应用
  5. 连分数与佩尔方程特解(最小整数解)
  6. 太丢脸!应届毕业面试程序员,你被PASS的原因不可以是这4点!
  7. Ubuntu 18.04安装FSL软件
  8. 石头扫地机器人离线了怎么办_石头扫地机离线怎么设_石头扫地机客服_石头扫地机官网...
  9. Android setLineSpacing(float add, float mult);
  10. 图像处理的时域和频域傅里叶变换——精解