一、前言
想通过此文章够快速理解模糊PID的前提条件是:
已经了解PID控制算法,并且利用该算法控制过一些玩意。
这篇文章是我参考了四篇学位论文之后写下的,如果有错误,恳请各位大佬批评指正,后面我也会提到这几篇论文关于模糊PID的不足(不全面)的地方。
二、传统PID的缺点以及为什么我们要使用模糊PID
使用过PID的同学都知道,PID控制器是一个简单但是控制效果非常好的算法。
PID算法有很多种类,包括位置式,增量式,单级,串级等等。
如果参数整定的好,那么在一定的情况下,PID控制器是可以做到非常不错的控制效果(不然也不会应用如此广泛)。
但是在一些特殊场合,
例如:机械臂抓取不同重量的物体。
假设在机械臂抓取物体之前,我们已经根据经验或者仿真整定出了PID的三个参数,
在这三个参数下,如果机械臂没有抓取物体,那么它的响应速度,稳定性应该和我们设想的一样。
如图所示,这是一个调参调的比较好的一个PID的波形图
但是当机械臂抓取某一重物之后,利用同一PID参数,他的响应速度必然会变慢,可能稳定性也会出现问题
如图,当机械臂抓取重物后,响应速度变的非常非常慢
所以我们想要一种能够根据实际情况来改变参数的一种控制器来控制他,这种控制器也叫自适应控制器,我们可以用模糊PID来实现它。
三、模糊控制
废话不多说,我只从我的理解去讲(欢迎指错)
模糊控制就是通过
1. 模糊化
2. 模糊推理
3. 去模糊化
三个过程来实现的
下面以一个两输入单输出的值为例介绍模糊控制的过程
①、模糊化
模糊化其实有点像划范围
例如控制平衡车时,小车向前倾和向后倾的角度是有正负性的
小车总会在 (- 9 0 , + 9 0 ) 这个区间内摇摆
设定 0 °为目标值
所以我们的误差总会在 (- 9 0 , + 9 0 ) 之间波动(夸张,便于理解)
我们把这个区间分成六等份
并给这几个等份的界线(模糊论域)取个名字
NB | NM | NS | Z0 | PS | PM | PB |
---|---|---|---|---|---|---|
-90 | -60 | -30 | 0 | 30 | 60 | 90 |
其中
- N代表Negative
- P代表Positive
- B代表Big,大
- M代表Middle,中
- S代表Small,小
划好范围了
我们就可以引出另一个概念:
隶属度
在介绍隶属度之前,我们先用一个实际误差为例
假设此时的误差为 70°
那么它与 PB(90°) 的距离为 20°
与PM(60°) 的距离为10°
那么此时 这个误差
对于PB的隶属度就是 20/(90 - 60)=2/3
对于PM的隶属度就是 10/(90 - 60)=1/3
到这就可以理解隶属度就是用来计量某个数据隶属与哪一个边界的这一概念了
有了隶属度的概念 , 自然也就好理解隶属度函数的概念了
先上图
横坐标代表自变量 (以-1到1为例)
纵坐标代表隶属度
其中
蓝线代表NB的隶属度随自变量变化的关系
橙线代表NM的隶属度随自变量变化的关系
依次类推
图片中是利用了高斯曲线作为隶属度函数的
除了高斯曲线
还可以用三角形,梯形,S型和Z型作为隶属度函数
下面的文章中,我将以三角形为例,继续介绍模糊控制。