智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 21453|回复: 27

[电磁] 【控制心得】模糊pid使用后心得分享

    [复制链接]

13

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2331
威望
1223
贡献
598
兑换币
602
注册时间
2016-12-19
在线时间
255 小时
毕业学校
发表于 2018-8-15 10:50:48 | 显示全部楼层 |阅读模式
       即将国赛,我吧自己控制的最后一点东西:模糊pid简单谈谈分享给大家,建议大家在对pid有一定的理解之后再时候动态pid控制,否则会给自己埋下N个bug。进入正题:
      首先讨论一下,为什么会选择动态pid控制,从理论上来说,我对小车的输入,到小车的实际响应(比如我想让小车速度为1m/s,然后输入1m/s,但是小车可能要1s才能响应到1m/s,或者甚至都不会达这个速度),这之间是有一个传递函数的(自动控制原理的知识),把它称为系统传递函数(忘了叫啥名了,我暂时这么称呼吧),而我在它们之间嵌入了pid控制,pid控制自成一个传递函数,我称这为控制传递函数吧。因此,在我对小车输入到小车实际响应时,新的传递函数为   系统传递函数   与  控制传递函数 共同做用的结果,这个传递函数的指标直接对应输出对输入的响应。假设在某个时间点的某个环境下我调试出了一个极好的pid,但是这个pid对应的控制传递函数是与在这个环境下的系统传递函数相匹配的,后面环境再变化,系统传递函数变化,此时之前的pid就不再是极好的,新的传递函数就会变的不再很理想。是的,即使我用静态pid,依旧能跑一个很快的速度且感觉没啥区别,但是若要再提速,那从哪里下手呢?至少从原理分析上来说,动态pid调得合理后,是会使控制效果更好的。
       模糊pid本质上就是一个动态pid,既然要动,要变化,那就应该有依据。就像差速要给多大,需要电感算出的偏差作为反馈。在这里,我是用的  偏差,  偏差的微分  作为反馈,根据这2个参数,调整pid 的值。当读到这里,可能有些人会觉得很简单啊,拟合函数关系就行了啊,我最开始思考到这里的时候,也是这么想的: 自己拟合一个函数关系式   f(x,y) ,当我输入偏差,偏差的微分时,自动输出一个pid参数。其实这样是没问题的,说简单点这叫直白,说粗俗点粗暴。其实这么直接的拟合不太符合我们的感性思维,因为我们直接拟合的话,无非就是  偏差,  偏差的微分越大,然后pid就越大吧 然后就会出现一个函数模板 out = k*x + j*y,这时我只需要调出合适的k   ,j   就行了。单看这个式子,就毫无感觉,没有一丝的感性理解美感。。。。模糊pid本质上也是找一个函数关系式,只是形式上与前面的直接暴力拟合有着较大的差别,模糊pid的模糊化后的部分表达式更直观,更符合我们的直观认知。
       模糊pid的实现。先说一下实现的流程。
                   1、模糊化:输入,偏差、  偏差的微分这2个量,根据它们的大小,得出一个合理的模糊语句表示。假如我的偏差范围是1-100。根据你分的细致程度(我这里分为3层),我把它拆分成3类:1-33(小),34-66(中),67-100(大),这一步称为“确定各输入量的模糊语言”。 好,这时候我计入输入进来的偏差为33.从上面的分类上来看,它是属于   小,这个时候不能这么理解,。假如33这个偏差有60%的人认为是小,40%的人认为是中。0%的人认为是大。我就把60%称为   偏差对于小的隶属度,40%称为   偏差对于中的隶属度。至于这个隶属度如何得来,便是通过根据经验得出的隶属度函数算出来的。隶属度函数有多种,网上一查一大堆。
                   2、规则库的建立:规则库理论上就是关系式,只不过不像粗暴拟合那般让我们无法“大展拳脚”地拟合。说一个最简单的吧,通过上的模糊化后,我得知输入进来的偏差是小,偏差的微分是大,那么,我就让我的p  增大,d不变。这个时候,让p增大是一个p单独对应的规则库中得出的结果。同理,d也是。而这个规则库,就是通过上面自己的理解建立的,建立成功后,我向这个库中输入    偏差的大小,偏差的微分的大小。然后出来 对应的pid。

             3、模糊推理:根据规则库推理出对应结果。由于1那里是会解出多个不同隶属度的模糊化结果,所以每个模糊化结果都送入规则库得出推理结果。例子:此时偏差小:60%,偏差中:40%。偏差微分小:10%,偏差中:90%.那么 就能根据模糊推理得到四种结果(有些结果可能是相同的),在根据隶属度算出对应结果的比例。
             4、解模糊:这个步骤和1步骤相反,首先根据3得到的不同模糊推理结果和对应的比例,一般采用常用的三种方法之一(重心法,高度法,面积法),和输出的规则库,来得到最终的输出。假如我算出p为输出大的比例是20%,中%50,小%30,这时范模糊p的规则库的    大:p=2,中:p=1.5,小p=1。然后对应比例相乘就得到p的结果。整个模糊pid控制结束。


呼,本人贡献散完,因为最开始接触智能车的时间来论坛很少看到有用的帖子,那个时候什么也不懂,也没啥人在论坛交流,自己学的痛苦,又为论坛感觉很痛心,2年过去了还是如此,这算是尽我个人小力,希望大家能活跃交流吧。
以上心血来潮纯手打,如有说的不对的地方欢迎指正。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

9

主题

115

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3741
威望
1755
贡献
1086
兑换币
1166
注册时间
2017-3-6
在线时间
450 小时
发表于 2018-8-15 11:01:47 | 显示全部楼层
我觉得论坛里面东西挺多了,我遇到的问题大部分都可以查得到的(伸手党无视)......
回复 支持 1 反对 0

使用道具 举报

5

主题

140

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2691

优秀会员奖章活跃会员奖章

QQ
威望
1338
贡献
813
兑换币
898
注册时间
2017-10-13
在线时间
270 小时
毕业学校
太原工业学院
发表于 2018-8-15 11:17:24 | 显示全部楼层
顶顶顶顶顶顶  本人对模糊控制又有了进一步的了解  模糊pid 效果和加减速差不多 弯道速度会降下来 个人见解
回复 支持 反对

使用道具 举报

9

主题

133

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3210

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
1600
贡献
934
兑换币
864
注册时间
2017-7-16
在线时间
338 小时
发表于 2018-8-15 11:36:27 | 显示全部楼层
关于速度模糊我觉得可以用编码器采集的值作为偏差和偏差变化率
回复 支持 反对

使用道具 举报

13

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2331
威望
1223
贡献
598
兑换币
602
注册时间
2016-12-19
在线时间
255 小时
毕业学校
 楼主| 发表于 2018-8-15 11:51:17 | 显示全部楼层
信号心 发表于 2018-8-15 11:36
关于速度模糊我觉得可以用编码器采集的值作为偏差和偏差变化率

这里主要是说明模糊如何实现的,在能实现的基础上当然就能任意扩展
回复 支持 反对

使用道具 举报

18

主题

538

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3571

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

QQ
威望
2352
贡献
593
兑换币
1447
注册时间
2016-8-9
在线时间
313 小时
发表于 2018-8-15 12:05:45 | 显示全部楼层
李白不白 发表于 2018-8-15 11:17
顶顶顶顶顶顶  本人对模糊控制又有了进一步的了解  模糊pid 效果和加减速差不多 弯道速度会降下来 个人见解

恰恰相反,四轮使用模糊控制是为了提高弯道速度
回复 支持 反对

使用道具 举报

5

主题

140

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2691

优秀会员奖章活跃会员奖章

QQ
威望
1338
贡献
813
兑换币
898
注册时间
2017-10-13
在线时间
270 小时
毕业学校
太原工业学院
发表于 2018-8-15 14:06:37 | 显示全部楼层
eagle丶 发表于 2018-8-15 12:05
恰恰相反,四轮使用模糊控制是为了提高弯道速度

又长见识了 学习了 学习了。
回复 支持 反对

使用道具 举报

9

主题

82

帖子

0

精华

高级会员

Rank: 4

积分
887
威望
471
贡献
258
兑换币
310
注册时间
2017-9-10
在线时间
79 小时
发表于 2018-8-15 15:25:13 | 显示全部楼层
学习了:lol:lol
回复 支持 反对

使用道具 举报

13

主题

137

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2331
威望
1223
贡献
598
兑换币
602
注册时间
2016-12-19
在线时间
255 小时
毕业学校
 楼主| 发表于 2018-8-15 15:54:59 | 显示全部楼层
李白不白 发表于 2018-8-15 11:17
顶顶顶顶顶顶  本人对模糊控制又有了进一步的了解  模糊pid 效果和加减速差不多 弯道速度会降下来 个人见解

不知你是差速还是舵机,如果是舵机的话,对方向偏差环用模糊pid其实和速度关系不大吧,只涉及转向。如果是差速的你,你在控制的时候能把差速转向的控制和前进速度的控制很好的分开,其实也不会太影响你转向的速度。模糊pid的话可以说是pid在适应环境变化时的微调,以降低环境变化带来的控制系统变差的影响吧
回复 支持 反对

使用道具 举报

3

主题

45

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1752
威望
896
贡献
506
兑换币
534
注册时间
2017-11-8
在线时间
175 小时
发表于 2018-8-15 15:57:45 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-5 14:46 , Processed in 0.084829 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表