历史上的今天
返回首页

历史上的今天

今天是:2025年03月30日(星期日)

正在发生

2021年03月30日 | 飞思卡尔智能车----模糊PID算法通俗讲

2021-03-30 来源:eefocus

在讲解模糊PID前,我们先要了解PID控制器的原理(本文主要介绍模糊PID的运用,对PID控制器的原理不做详细介绍)。PID控制器(比例-积分-微分控制器)是一个在工业控制应用中常见的反馈回路部件,由比例单元P、积分单元I和微分单元D组成。PID控制的基础是比例控制;积分控制可消除稳态误差,但可能增加超调;微分控制可加快大惯性系统响应速度以及减弱超调趋势。


1.1传统PID控制

传统PID控制器自出现以来,凭借其结构简单、稳定性好、工作可靠、调整方便等优点成为工业控制主要技术。当被控对象的结构和参数具有一定的不确定性,无法对其建立精确的模型时,采用PID控制技术尤为方便。PID控制原理简单、易于实现,但是其参数整定异常麻烦。对于小车的速度控制系统而言,由于其为时变非线性系统不同时刻需要选用不同的PID参数,采用传统的PID控制器,很难使整个运行过程具有较好的运行效果。


1.2模糊PID控制

模糊PID控制,即利用模糊逻辑并根据一定的模糊规则对PID的参数进行实时的优化,以克服传统PID参数无法实时调整PID参数的缺点。模糊PID控制包括模糊化,确定模糊规则,解模糊等组成部分。小车通过传感器采集赛道信息,确定当前距赛道中线的偏差E以及当前偏差和上次偏差的变化ec,根据给定的模糊规则进行模糊推理,最后对模糊参数进行解模糊,输出PID控制参数。

2.1模糊化

模糊控制器主要由三个模块组成:模糊化,模糊推理,清晰化。具体如下图所示。而我们将一步步讲解如何将模糊PID算法运用到智能车上。(最好用笔一步步自己写一遍!!!)

首先我们的智能车会采集到赛道的相关数据,例如摄像头车,其采集到的数据经过算法处理之后会得到与中线的偏差E,以及当前偏差和上次偏差的变化(差值)EC两个值(即此算法为2维输入,同理也可以是1维和3维,但2维更适合智能车)。例如此时车偏离中线的距离为150,而上一时刻偏离中线的距离为120,则E为150,EC为150 - 120 = 30。


其次我们要对这两个值进行模糊化。这里我们对E进行举例。摄像头车采集回来的E是有范围的,即与中线的偏差是在一个区间内可行的。在这里我们假设该区间为-240到240,即小车偏离中线的最大距离为240,正负即为左右。再假设中线偏差变化率的可行区间为-40到+40。


接着我们要对这两个值进行模糊化。我现在将E的区间(-240 到 240)分成8个部分,那么他们分别为-240 ~ -180,-180 ~ -120 ,-120 ~ -60,-60 ~ 0,0 ~ 60,60 ~ 120,120 ~ 180,180 ~ 240。然后我们把-180,-120,-60,0,60,120,180分别用NB,NM,NS,ZO,PS,PM,PB表示(个人理解N为negative,P为positive,B为big,M为middle,S为small,ZO为zero)。例如,当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进行模糊化。


2.2 模糊推理

对于采集回来的E和EC,我们可以推出它们各所占的隶属度,此时我们可以根据模糊规则表去找出输出值所对应的隶属度。

我们假设为E的两个隶属度值为PM、PB,E属于PM的隶属度为a(a < 1),则属于PB的隶属度为(1 - a)。再假设EC的两个隶属度值为NB、NM,EC属于NM的隶属度为b,则属于NB的隶属度为(1 - b)。而在假设中,E属于PM的隶属度为a,EC属于NB的隶属度为( 1 - b ),则输出值属于ZO的隶属度为a *( 1 - b )(看图)。

同理我们可以得出,当输出值属于ZO的另外两个隶属度为a * b, ( 1 - a ) * ( 1 - b) ,而输出值属于NS的隶属度为 ( 1 - a ) *  b。


在这里我们先证明一个条件,将这四个隶属度加起来,刚好等于1。这是因为

(a + (1 - a)) * (b + (1 - b)) = a * b + ( 1 - a ) *  b  + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b )   (下图)

 即一个十字相乘的概念。这个等式说明输出值的隶属度之和等于1(第三步求解的时候需要用到隶属度之和)。

因此,我们知道了输出值为ZO的隶属度和为 a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ,输出值为NS的隶属度为 ( 1 - a ) *  b 。


2.3 清晰化

对于输出值,我们同样采用给予隶属度的办法。例如,我们把输出值假设为[1000,1400](即舵机的摆角值范围)的区间同样划分为八个部分,即7个隶属值NB,NM,NS,ZO,PS,PM,PB。根据上一步所得出的结论,我们就可以用隶属度乘以相应的隶属值算出输出值的解,即 (a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ) * ZO   +    ( 1 - a ) *  b * NS。到此为止,整个模糊过程就结束了。


3 模糊PID

我们已经知道了整个模糊的过程,但上述的过程还不够完美。因为我们的输出值只有一个输出,并没有实现PID。因此我们可以先对E和EC进行模糊化,然后分别对kp和ki和kd(PID的三个参数)进行求解,再套入公式。

一般的我们也可以只用kp,kd,不用ki。而模糊规则表一般的论文已经基本给出。因此带入算法之后我们的难度也只是在于调节kp,kd,和适当调节规则表。当然调节的难度会大于普通的PID,因为还要定kp,kd的输出范围,调得不好可能效果并没有普通的PID好。


4. 部分解释

4.1对于部分论文所说的重心法解模糊,其实就是上述方法。公式如下。

式中μ(Zi) * Zi相当于文章上面的(a * b + a * ( 1 - b ) + ( 1 - a ) * ( 1 - b ) ) * ZO   +    ( 1 - a ) *  b * NS,即隶属度乘以隶属度值之和,而μ(Zi)之和就是输出值的隶属度之和,我们已经证明它是等于1的。


推荐阅读

史海拾趣

Equator Technologies公司的发展小趣事

在XX年代中期,Equator迎来了一个重要的转折点——被Pixelworks公司收购。Pixelworks是一家在显示图像处理领域具有领先地位的公司,其产品线广泛,包括用于各种显示设备的图像处理芯片和软件。与Pixelworks的合并使Equator获得了更广阔的市场和资源支持,加速了其技术和产品的发展。合并后,Equator继续专注于视频处理技术的研发,并与Pixelworks共同推出了多款创新产品。

Erocore Enterprise Co Ltd公司的发展小趣事

面对电子行业的快速变化和市场需求的不断升级,Erocore始终保持对创新的追求。公司加大研发投入,推动产品升级和技术创新。同时,Erocore也积极响应环保政策,推动绿色生产和发展。通过采用环保材料和节能技术,Erocore在确保产品质量的同时,也为环保事业做出了积极贡献。

请注意,以上故事均为虚构内容,旨在展示一个电子企业在发展过程中可能面临的挑战和机遇,以及如何通过不断努力实现持续发展。

扬州国芯(Gcore)公司的发展小趣事

随着全球化趋势的加速,Erocore开始实施国际化战略。公司积极拓展海外市场,通过建立海外生产基地、设立销售办事处等方式,实现产品的全球布局。同时,Erocore也加强了与国际知名企业的合作与交流,引进先进的技术和管理经验,提升公司的整体竞争力。

Emhiser Research Inc公司的发展小趣事

Emhiser Research在成立之初就专注于半导体技术的研究。随着市场对更高效能、更小体积的芯片需求的增长,公司研发团队成功开发出了一种新型的高性能低功耗芯片。这一技术突破迅速吸引了众多手机厂商和电子设备制造商的关注。Emhiser抓住这一市场机遇,与多家大型企业建立了合作伙伴关系,其产品迅速在市场上占据了一席之地。

格科微电子(GALAXYCORE)公司的发展小趣事

品质控制一直是Emhiser Research非常重视的方面。公司建立了严格的质量管理体系和检测流程,确保每一件产品都符合高标准的质量要求。同时,公司还注重品牌建设,通过不断提升产品品质和服务水平来树立品牌形象。这些努力使得Emhiser Research在客户中赢得了良好的口碑和信任。

Ethertronics公司的发展小趣事

品质控制一直是Emhiser Research非常重视的方面。公司建立了严格的质量管理体系和检测流程,确保每一件产品都符合高标准的质量要求。同时,公司还注重品牌建设,通过不断提升产品品质和服务水平来树立品牌形象。这些努力使得Emhiser Research在客户中赢得了良好的口碑和信任。

问答坊 | AI 解惑

求教高人帮忙讲解以下电路

file:///C:/Documents%20and%20Settings/new/桌面/升压电路.JPG 将双向二级管DN101输出级与稳压电路断开通电后量测DN101阴级输出级出来的电压为输入电压两倍24V,可以判断由PWM控制U101及开关管Q1,C10,双向二级管DN101组成倍压电路,但不清楚它的具 ...…

查看全部问答>

国外汽车音响的新技术

国内市场上,尽管汽车音响节目源有所扩展,从单一的收音,磁带两用机发展到加入单碟或自动换片的多碟CD机,但对小汽车音响功放来说却基本变化不大,仍为以收音机,磁带机和CD机组成的一体化音响。此类一体化音响,无论生产商标出2*35W还是200W+200W,其实仍 ...…

查看全部问答>

startio和dpcforisr之间会打乱彼此的执行吗?

startio和dpcforisr之间会打乱彼此的执行吗? 在调试的过程中发现有dpcforisr打乱了startio。…

查看全部问答>

sd卡时钟线在调试中的一点理解(硬件)

这两天对一个2410的板子上sd卡做了一个底层硬件测试。 sd卡的数据读写会经常出现错误,而且错误的地方很固定。 后来查了很久,发现sdclk(时钟线)被示波器的探头一接触,读写立即就正常了。我的理解:示波器探头相当于对地电容。 依据这一情况 ...…

查看全部问答>

TL16C754C 扩展串口

请问各位,还有人做过tl16c754c的扩展串口驱动。我现在的驱动在16c554上改的(原来的驱动工作正常),现在这个驱动当波特率在57600以上时,每次发送超过26个以上字符时就乱码,报帧错误。晶振工作正常。各位兄弟,还有碰到和我一样的问题?…

查看全部问答>

Wince 6.0下触摸屏单击出快捷菜单的问题

我从Wince 5.0平台上移植了一个ADS7846触摸屏驱动(该驱动在CE5下完全正常),而在CE6.0上的点击触摸屏也会出现长按才会出现的快捷菜单,感觉是触摸屏的按下的操作被系统认为长按了。另外我的USB鼠标也碰到了类似的问题:左键单击会出现长按左键或 ...…

查看全部问答>

TW6802驱动的问题

在弄6802视频驱动的时候,为什么总是不能有VDMAPI中断呢…

查看全部问答>

sst39vf1601挂掉了。。。

唉,sst39vf1601芯片坏了 ------------------------------------------------------------ jflash-s3c44b0x v1.0 (2003-8-26) origin made by J.D&T Co.,Ltd ( You Young-chang ) origin made by ATMEL Co.,Ltd modified by Yun Duck Bea === ...…

查看全部问答>

求教:platform builder 4.2安装之后,build时出错can't find cebuild.bat

错误如下: Generating platform header files...   VcSpawn: could not find \'cebuild.bat\' Error PB2504: Error spawning cebuild.bat 希望高手指点…

查看全部问答>

为了团购开发板 分享一个关于LCD12864的心得

调试12864的时候 尝试编写竖写字符的库函数时发现英文字符和数字可以显示 汉字不能显示 调试多次 最后发现是因为汉字是全角字符 需要连续送两字节数据才可以在12864液晶上显示.....将子函数改写为连续送入两位后 问题解决 可惜这个子函数不能用于竖 ...…

查看全部问答>