0 前言
存在的问题:
- PID控制参数整定非常麻烦
- 对于小车的速度控制系统(时变非线性系统)而言,在不同时刻需要选用不同的PID参数,采用传统的PID控制器,很难使整个运行过程有较好的运行效果。
1 模糊PID控制原理
模糊PID控制流程如下所示,把e = Xtarget - Xout 和 de/dt 作为模糊控制器的输入。
- 模糊控制器先对输入进行模糊化处理
- 接着进行模糊推理
- 最后把模糊推理的结果进行去模糊处理输出PID控制器的三个参数 kp, ki, kd,从而达到对PID控制器参数自适应整定的效果。
模糊控制器主要由去模糊化,模糊推理以及去模糊三部分组成。
1.1 模糊化
首先将采集到的两个数据e和de/dt作为模糊控制器的输入。
然后初始化,初始化包括论域的确定以及隶属度函数的确定。
1.1.1 论域的确定
论域:人为确定的范围
用处:把输入映射到论域上更好统一处理。
1、假设论域范围是-180到180,对论域进行模糊分类,平均分成6等份,即[-180, -120]、[-120, -60]、[-60, 0]、[0, 60]、[60, 120]、[120, 180]。
2、把-180、-120、-60、0、60、120、180用NB、NM、NS、ZO、PS、PM、PB表示。
N:negative | P:positive | S:small | M:middle | B:big | ZO:zero
3、假设输入e的范围是[-1800, 1800],此刻e的值是1600,映射之后值为160,160在[120, 180]区间里,该点在PM与PB之间。
1.1.2 隶属度函数的确定
常见的隶属度函数有三角形隶属度函数,梯形隶属度函数,抛物线型隶属度函数。
三角形隶属度函数为例,如图所示
隶属度函数的值域为 [0, 1]。输入e经过映射之后为160。对应下图绿线和蓝线的值分别为0.33,0.67,这两个就是隶属度,表示该输入属于PM的概率是0.33,而属于PB的概率是0.67。
1.2 模糊推理
根据 e 与 de/dt 的隶属度进行查表得到输出的大小程度即模糊推理。
模糊推理的核心:建立推理表
模糊PID的推理表如下所示:
假设此刻e的值是1600,de/dt为-3200,e的范围[-1800, 1800],de/dt的范围为[-3600, 3600]。模糊化得e的隶属度为0.67(PB)和0.33(PM),de/dt的隶属度为0.67(NB)和0.33(NM),然后对 e 与 de/dt 的隶属度进行两两组合,并进行查表。
e隶属度 | de/dt隶属度 | △Kp | △Ki | △Kd |
---|---|---|---|---|
PB(0.67) | NB(0.67) | ZO | ZO | PB |
PB(0.67) | NM(0.33) | ZO | ZO | PM |
PM(0.33) | NB(0.67) | PS | ZO | PB |
PM(0.33) | NM(0.33) | ZO | ZO | NS |
计算各输出 Kp, Ki, Kd 的隶属度
△Kp:
0.67 x 0.67 = 0.4489(ZO)
0.67 x 0.33 = 0.2211(ZO)
0.33 x 0.67 = 0.2211(PS)
0.33 x 0.33 = 0.1089(ZO)
△Ki:
0.67 x 0.67 = 0.4489(ZO)
0.67 x 0.33 = 0.2211(ZO)
0.33 x 0.67 = 0.2211(ZO)
0.33 x 0.33 = 0.1089(ZO)
△Kd:
0.67 x 0.67 = 0.4489(PB)
0.67 x 0.33 = 0.2211(PM)
0.33 x 0.67 = 0.2211(PB)
0.33 x 0.33 = 0.1089(NS)
最后将输出的隶属度进行整合。
(1) Kp的隶属度为0.7789(ZO),0.2211(PS)
(2) Ki的隶属度为1(ZO)
(3) Kd的隶属度为0.67(PB),0.2211(PM),0.1089(NS)
1.3 去模糊
去模糊是根据模糊推理得到的各输出的隶属度算出输出在论域中的哪个值,然后根据区间映射关系,得到输出。
1.3.1 计算输出在论域中的值
把-180、-120、-60、0、60、120、180用NB、NM、NS、ZO、PS、PM、PB表示
(1) Kp的隶属度为0.7789(ZO),0.2211(PS)
E(Kp) = 0.7789 x 0 + 0.2211 x 60 = 13.266
把期望作为 Kp 在论域的值,在确定 Kp 的范围后,根据区间映射公式,可得出 Kp 的输出值。
(2) Ki的隶属度为1(ZO)
E(Ki) = 0
把期望作为 Ki 在论域的值,在确定 Ki 的范围后,根据区间映射公式,可得出 Ki 的输出值。
(3) Kd的隶属度为0.67(PB),0.2211(PM),0.1089(NS)
E(Kd) = 0.67 x 180 + 0.2211 x 120 + 0.1089 x (-60) = 140.598
把期望作为 Kd 在论域的值,在确定 Kd的范围后,根据区间映射公式,可得出 Kd 的输出值。
值得注意的是,输出的 △Kp, △Ki, △Kd 为增量。在初始化时要确定输入与输出的范围(区间),用于进行区间映射。