模糊PID控制器(一)

0 前言

存在的问题:

  1. PID控制参数整定非常麻烦
  2. 对于小车的速度控制系统(时变非线性系统)而言,在不同时刻需要选用不同的PID参数,采用传统的PID控制器,很难使整个运行过程有较好的运行效果。

1 模糊PID控制原理

模糊PID控制流程如下所示,把e = Xtarget - Xout 和 de/dt 作为模糊控制器的输入。

  1. 模糊控制器先对输入进行模糊化处理
  2. 接着进行模糊推理
  3. 最后把模糊推理的结果进行去模糊处理输出PID控制器的三个参数 kp, ki, kd,从而达到对PID控制器参数自适应整定的效果。
    模糊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 的隶属度进行两两组合,并进行查表。

隶属度与△Kp,△Ki,△Kd的关系表
e隶属度de/dt隶属度△Kp△Ki△Kd
PB(0.67)NB(0.67)ZOZOPB
PB(0.67)NM(0.33)ZOZOPM
PM(0.33)NB(0.67)PSZOPB
PM(0.33)NM(0.33)ZOZONS

计算各输出 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 为增量。在初始化时要确定输入与输出的范围(区间),用于进行区间映射。

2 参考文章:

1、模糊PID算法
2、智能车 模糊PID控制原理详解与代码实现
3、模糊PID控制

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值