在这里插入图片描述

1 控制框图

在这里插入图片描述

2 概述

  • 模糊控制PID又叫模糊自适应PID,因为三个PID参数能够实时调整。

  • 模糊PID控制,即利用模糊逻辑并根据一定的模糊规则对PID的参数进行实时的优化,以克服传统PID参数无法实时调整PID参数的缺点。

  • 模糊PID控制包括:

    • 模糊化
    • 确定模糊规则(模糊推力)
    • 解模糊(清晰化)
  • 例如,小车通过传感器采集赛道信息,确定当前距赛道中线的偏差E以及当前偏差和上次偏差的变化ec,根据给定的模糊规则进行模糊推理,最后对模糊参数进行解模糊,输出PID控制参数。

3 基本原理

模糊控制器主要由三个模块组成:模糊化,模糊推理,清晰化。
在这里插入图片描述

3.1 一些基本的概念、定义

  • 模糊量: 如 E、EC。
  • 论域(上下限):-240~240。
  • 划分区间:-240 ~ -180;-180 ~ -120 ;-120 ~ -60;-60 ~ 0;0 ~ 60;60 ~ 120;120 ~ 180;
    180 ~ 240。
  • 录属度:录属于某个模糊子集的录属度,程度。
  • 模糊子集:
    负大NB(Negative Big)
    负中NM(NegativeMedium)
    负小NS(NegativeSmall)
    零ZE或ZO(Zero)
    正小PS(PositiveSmall)
    正中PM(PositiveMedium)
    正大PB(Positive Big)
  • 录属度函数:用于求解录属度,有线性的、非线性的。

3.2 模糊化

实质:根据录属度函数求取录属度。可以拆分成以下3个部分来理解:

  1. 把-180,-120,-60,0,60,120,180分别用NB,NM,NS,ZO,PS,PM,PB表示。
  2. 例如,当E = 170时,此时的E属于PM和PB之间,而此时的E也会对应2(或1)个隶属度。E隶属于PM(120)的百分比为(180 - 170) / (180 - 120) = 1 / 6 ,而同理隶属于PB(180)的百分比为(170 - 120) / (180 - 120) = 5 / 6 。意思就是120到180进行线性分割了,E离PM和PB哪个更近,则隶属于哪个就更大(当输出值E大于180(PB)时,则隶属度为1,隶属度值为PB,即E完全隶属于PB,同理当E小于 - 180 (NB)时也一样)。同理也可以对EC进行模糊化。
  3. 那么E分别隶属于模糊子集NB,NM,NS,ZO,PS,PM,PB的各个录属度都可以求出。

3.3 模糊推理

实质:根据模糊规则表求取输出值U的隶属度。即根据模糊控制规则进行模糊推理,并决策出模糊输出量。
首先要确定模糊规则,即专家经验。对于我们这个二维控制结构以及相应的输入模糊集,我们可以制定49条模糊控制规则(一般来说,这些规则都是现成的,很多教科书上都有)。
我们假设为E的两个隶属度值为PM、PB;
假设E属于PM的隶属度为a,则属于PB的隶属度为(1 - a);
再假设EC的两个隶属度值为NB、NM;
假设EC属于NM的隶属度为b,则属于NB的隶属度为(1 - b);
根据模糊规则表,当E隶属于PM且EC隶属于NB时,可知输出值U隶属于ZO。
此时输出值U隶属于ZO的录属度为 a *( 1 - b ),其他同理。
在这里插入图片描述
根据上表的求解规则,可以求得输出值U隶属于各个模糊子集的录属度为:
录属于ZO的隶属度为: a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ;
录属于NS的隶属度为 : ( 1 - a ) * b 。
如下圈出部分:
在这里插入图片描述

3.4 清晰化(解模糊、反模糊化)

对于输出值,我们同样采用给予隶属度的办法。例如,我们把输出值假设为[1000,1400](即舵机的摆角值范围)的区间同样划分为八个部分,即7个模糊子集NB_U,NM_U,NS_U,ZO_U,PS_U,PM_U,PB_U。根据上一步所得出的结论,我们就可以用隶属度乘以相应的隶属值算出输出值的解,即 (a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ) * ZO_U + ( 1 - a ) * b * NS_U。到此为止,整个模糊过程就结束了。
对输出模糊量的解模糊:模糊控制器的输出量是一个模糊集合,通过反模糊化方法判决出一个确切的精确量,反模糊化方法很多,我们这里选取重心法。
在这里插入图片描述

3.5 模糊PID

我们已经知道了整个模糊的过程,但上述的输出值只有一个输出,并没有实现PID。因此我们可以先对E和EC进行模糊化,然后分别根据不同的逻辑模糊子集、录属度函数、模糊规则表求得输出值kp、ki和kd的录属度,然后反模糊化求得kp、ki和kd。再将kp、ki和kd套入PID公式。
即将u分别为Ki、Kd、Kp求取各自的录属度,然后清晰化。

3.6 使用.fis文件

simulink中使用fis文件,首先加入fuzzy模块,然后写入模糊文件,注意应用格式加单引号: ‘fuzzpid.fis’
或者,现在命令空间中运行:
fis = readfis(‘fuzzpid.fis’)
然后 block中田fis 。
在这里插入图片描述

4 利用matlab模糊控制工具箱设计模糊控制器

matlab版本:matlab2010b。
步骤:

  1. 在matlab命令窗口中输入 fuzzy ,打开模糊控制工具箱。
  2. 确定输入、输出量。
    Edit -> Add Variable -> Input
    在这里插入图片描述
    查看规则编辑器和曲面观测器(view/rules view/surface):
    在这里插入图片描述
    在这里插入图片描述
    待续…

参考资料

【1】https://blog.csdn.net/qingfengxd1/article/details/88023414
【2】https://blog.csdn.net/qq_43907537/article/details/105258484




在这里插入图片描述

点赞、收藏、关注哟!
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐