智能车制作

标题: 【控制心得】模糊pid使用后心得分享 [打印本页]

作者: 小学生做车来了    时间: 2018-8-15 10:50
标题: 【控制心得】模糊pid使用后心得分享
       即将国赛,我吧自己控制的最后一点东西:模糊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。[attach]93410[/attach]

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


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

作者: ggchasing    时间: 2018-8-15 11:01
我觉得论坛里面东西挺多了,我遇到的问题大部分都可以查得到的(伸手党无视)......
作者: 李白不白    时间: 2018-8-15 11:17
顶顶顶顶顶顶  本人对模糊控制又有了进一步的了解  模糊pid 效果和加减速差不多 弯道速度会降下来 个人见解
作者: 信号心    时间: 2018-8-15 11:36
关于速度模糊我觉得可以用编码器采集的值作为偏差和偏差变化率
作者: 小学生做车来了    时间: 2018-8-15 11:51
信号心 发表于 2018-8-15 11:36
关于速度模糊我觉得可以用编码器采集的值作为偏差和偏差变化率

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

作者: eagle丶    时间: 2018-8-15 12:05
李白不白 发表于 2018-8-15 11:17
顶顶顶顶顶顶  本人对模糊控制又有了进一步的了解  模糊pid 效果和加减速差不多 弯道速度会降下来 个人见解

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

作者: 李白不白    时间: 2018-8-15 14:06
eagle丶 发表于 2018-8-15 12:05
恰恰相反,四轮使用模糊控制是为了提高弯道速度

又长见识了 学习了 学习了。

作者: 菜鸟自蒙    时间: 2018-8-15 15:25
学习了:lol:lol
作者: 小学生做车来了    时间: 2018-8-15 15:54
李白不白 发表于 2018-8-15 11:17
顶顶顶顶顶顶  本人对模糊控制又有了进一步的了解  模糊pid 效果和加减速差不多 弯道速度会降下来 个人见解

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

作者: chenyongmin1    时间: 2018-8-15 15:57
学习学习
作者: 李白不白    时间: 2018-8-15 16:35
小学生做车来了 发表于 2018-8-15 15:54
不知你是差速还是舵机,如果是舵机的话,对方向偏差环用模糊pid其实和速度关系不大吧,只涉及转向。如果 ...

差速  不过我尝试的是电机pid。。。

作者: KIKACCC    时间: 2018-8-15 17:06
感觉建立隶属度函数,和规则表好难。。。如何将赛道元素贴合地映射到规则表是很艰辛了。。。。。。
作者: 观观观    时间: 2018-8-15 18:50
学习学习了

作者: yanxi00    时间: 2018-8-15 18:54
学习学习
作者: yanxi00    时间: 2018-8-15 18:59
直立转向用了模糊,在s弯欧姆弯这些地方老是拐不好求指导
作者: 767124048    时间: 2018-8-15 20:14
顶大佬又来了
作者: 小学生做车来了    时间: 2018-8-15 20:15
KIKACCC 发表于 2018-8-15 17:06
感觉建立隶属度函数,和规则表好难。。。如何将赛道元素贴合地映射到规则表是很艰辛了。。。。。。

模糊算法出现这么多年了,早就有经验规则和经验隶属函数了,你只需在网上找到并稍稍微改一下适应自己的就好了

作者: 小学生做车来了    时间: 2018-8-15 20:18
yanxi00 发表于 2018-8-15 18:59
直立转向用了模糊,在s弯欧姆弯这些地方老是拐不好求指导

建议在你静态参数转向环调好了后,再上模糊。
不管是理论上还是实际上,静参pid转向的控制,在2.6,2.7速度下,你说的那些元素上都不会出现啥问题
我怀疑是你电感算偏差那里的算法存在问题

作者: yanxi00    时间: 2018-8-15 20:52
小学生做车来了 发表于 2018-8-15 20:18
建议在你静态参数转向环调好了后,再上模糊。
不管是理论上还是实际上,静参pid转向的控制,在2.6,2.7 ...

我就是一个根号偏差比和,求问大佬得偏差算法

作者: Ydeli_    时间: 2018-8-16 10:47
先收藏了
作者: 小学生做车来了    时间: 2018-8-16 12:38
yanxi00 发表于 2018-8-15 20:52
我就是一个根号偏差比和,求问大佬得偏差算法

同样是差比和   ,在你传感器的高低,左右之间的间隔,传感器的方向不同的情况下,效果都不一样。虽然表面上你只用了一个差比和,其实内含着其他的考量:即传感器的位置对我控制优化的影响。  这一块是非常值得分析考究的,它带来的控制影响可以说的巨大的

作者: 玉溪麒麟    时间: 2018-8-19 00:25
顶帖,学习了
作者: smile磷清    时间: 2018-8-19 17:03
谢谢大佬

作者: 18772806353    时间: 2018-8-29 11:50
干货,顶!!!

作者: 暗修罗    时间: 2019-3-27 08:25
:victory::victory:
作者: gbr_007    时间: 2019-12-24 10:36
方法方法方法
作者: 树懒233333    时间: 2020-5-8 20:01
长见识了

作者: sunshine011    时间: 2021-5-16 09:36
唉,现在智能车论坛讨论的人越来越少了





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2