s12指令的模糊控制算法设计1概要.docx
《s12指令的模糊控制算法设计1概要.docx》由会员分享,可在线阅读,更多相关《s12指令的模糊控制算法设计1概要.docx(17页珍藏版)》请在冰点文库上搜索。
s12指令的模糊控制算法设计1概要
基于S12指令的模糊控制算法设计
作者吴中仪
(上海交通大学自动化系上海200240
文摘:
本文通过模糊控制的思想来对智能车的控制算法进行了优化。
实际解决了智能车在拐弯时超调过大的问题。
文中介绍了模糊控制的理论和S12特有的模糊控制指令。
在实际经验的基础上设计出了模糊控制算法,并给出了控制规则。
实践结果表明,设计的算法在实际减小智能车在转弯时的超调具有较好的效果。
关键词:
智能车;S12模糊指令;超调;模糊控制器
DesignofthefuzzycontrolalgorithmbasedonS12code
WuZhongyi
(Automation,ShanghaiJiaoTongUniversity,Shanghai200240,ChinaAbstract:
Inthisarticle,controlalgorithmoftheintelligentvehicleisoptimizedbythefuzzytheory.Throughfuzzytheory,excessiveovershootisminimizedwhenthevehicleturns.ThetheoryoffuzzyandtheS12’sownfuzzylogiccodearealsointroduced.Fuzzycontrolalgorithmisdesignedonthebasisofexperiments,withcontrolrulesachievedtoo.Itisfindthatfuzzycontrolalgorithmiswithinourexpectationinminimizingovershootwhenvehicleturns.
Keywords:
intelligentvehicle;S12fuzzycontrolcode;overshoot;fuzzycontroller.
模糊控制(FuzzyControl是指模糊理论在控制技术上的应用。
它用语言变量代替数学变量或两者结合应用;用模糊条件语句来刻画变量间的函数关系;用模糊算法来刻画复杂关系,是具有模拟人类学习和自适应能力的控制系统。
模糊控制技术适用于被控过程没有数学模型或很难建立数学模型的工业过程,这些过程参数变动、时变、呈现极强的非线性特征、并伴有时变及滞后,这类系统的数学模型非常复杂或根本就不存在,不能用常规控制方法控制系统。
但是因为模糊控制不需要精确的数学模型,所以在解决这类问题时更有优势。
而我们的智能小车之所以采用模糊控制的方法也正是基于这样的考虑。
1.赛道预先是未知的,无法采用清晰的算法来对小车进行合适的控制。
2.小车本身由于重量,机械结构的偏差导致我们在建立车体的数学模型时有很大的困难。
3.为保证以最快的速度跑完全程,在不同类型的赛道上(如直道,大小弯,S弯小车的运动策略是不一样的,用其他的常规算法可以保证跑完赛道,但是无法保证时间,使用模糊控制算法可以使我们采用更为灵活的控制策略。
4.在算法实现上,由于S12自带了模糊控制指令,我们只需对相应的寄存器进行简单的配置就可以了。
5.从CPU给出舵机控制指令到小车舵机的执行存在着较明显的滞后现象,运用模糊逻辑可以消除滞后带来的影响。
文末列出的文献[1]介绍了控制理论的基本概念,文献[2]对利用S12实现模糊控制给出了基本的方法,文献[3]对模糊控制指令的实现给出了启示。
1.模糊控制理论简介
介绍了模糊控制系统和模糊控制器的构架,并介绍了设计模糊控制算法的经典方法和流程。
1.1模糊控制系统的组成
模糊控制属于计算机数字控制的一种形式,因此,模糊控制系统的组成类似于一般的数字控制系统,其结构如图1。
图1模糊控制系统的结构
模糊控制系统一般可分为五个组成部分:
1.模糊控制器,是模糊控制系统中的核心部分。
2.输入/输出接口。
模糊控制器通过输入/输出接口,从被控对象
获取数字量信号,并将模糊控制器决策的输出数字信号经过数模
转换,将其变换为模拟信号,然后送给被控对象。
3.执行机构:
包括各种交、直流电动机、伺服电动机、步进电动机、
气动调节阀和液压电动机、液压缸等。
4.被控对象。
被控对象可以是确定的或模糊的、单变量的、有滞后
或无滞后的,也可以是线性的或非线性的、定常的或时变的,以
及具有强藕合和干扰等多种情况。
对于那些难以建立精确数学模
型的复杂对象,更适宜采用模糊控制。
5.传感器。
传感器是将被控对象或各种过程的非电量转换为电信号
的一类装置。
1.2模糊控制器的基本结构
模糊控制器的基本结构由4个重要部件组成(见图:
知识库、模糊推理单元、模糊化输入接口与去模糊化输出接口.知识库又包含模糊
if-then规则库和数据库,规则库中的模糊规则定义体现了与邻域问题有关的专家经验或知识,而数据库则定义隶属函数、尺度变化因子以及模糊分级数等.推理单元按照这些规则和所给的事实执行推理过程,求得合理的输出.模糊输入接口将明确的输入转换模糊量,并用模糊集合表示,根据模糊输入得到控制量,控制量也是模糊量,因此,要求清晰化过程,把模糊控制量转换为清晰值作为模糊控制器的输出,去模糊输出接口就是将模糊的计算结果转换为明确的输出。
图2模糊控制器的结构
1.3设计模糊控制器的流程
1.3.1确定模糊化接口
针对模糊控制器每个输入空间定义一个语言变量。
在模糊控制系统中,通常取系统的误差值e和误差变化率ec为模糊控制器的两个输入。
(1在e上定义语言变量“误差E",在ec上定义语言变量“误差变化EC”;
(2定义各语言变量的论域。
通常E和EC的论域均设置为:
X=Y={-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6};
在输入量进行模糊化之前,需将e和ec的论域变换到E和EC的论域。
(3定义各语言变量的语言值。
通常e和ec的取值为:
{“正大”,“正中”,“正小”,“零”,“负小”,“负中”,“负大”}
={PB,PM,PS,20,NS,NM,NB}。
(4各语言变量的论域上定义其语言值的隶属函数。
通常隶属函数的形状取正态分布函数,例如高斯基函数。
隶属函数的形状和分布如下图所示。
图3隶属度函数示例
1.3.2确定模糊控制器的控制规则
在模糊逻辑控制中主要使用Mamdani模糊模型和Takagi-sugeno模糊dani模糊模型
种语言模型,利用Mamdani模型构成的模
糊逻
如果x是An,andy是Bn,则z是Cn
在现有的模糊控制系统中,大多数均采用这种形式。
规则,规则的前件含有模糊语言值,Bi则z=fs(x,…,y。
模型。
1MamMamdani模糊模型是一辑系统实质上是一组IF——THEN规则,
在这组规则中,前件变量和后件变量均为模糊语言集合,其一般形式如下:
R:
如果x是Al,andy是B1,则z是C1RZ:
如果x是A2,andy是B2,则z是C2
......
Rn:
2Takagi——Sugeno模糊模型
这种模型也是基于IF——THEN后件是前件变量的函数,
即:
如果X是A;andy是
模糊控制器的控制规则是由一组彼此通过“或”的关系连结起来的模糊条件语句来描述的。
集中每一条模糊条件语句,当输入、输出语言变量在各自论域上反映各语言值的模糊子集为己知时,都可以表达为论域的积集上的模糊关系,即Rl,RZ…,Rn;计算出每一条模糊条件语句决定的模糊关系Ri(i=1,2,…,n之后,考虑到每条模糊条件语句间的“或”关系,可得描述整个系统的控制规则的总模糊关系R为:
1231
.....n
niiRRRRRR==UUUU(公式1
模糊控制规则可通过总结模1.3.3输出量的去模糊化
有了模糊关系Ri(i=l,2,…,n,则输出语言变量论域上的模糊子集xECR⋅(公式2
但此时模糊控制器的输出是一个模糊集,它包含控制量的各种信息。
的模糊判决方法常用的有三种:
属度最大的论域元素为去模糊的结果。
如对应的模糊=糊关系R的设计来实现。
U记为
=(EUin
i=1U但被控对象仅能接受一个精确的控制量,应从中选择哪一个控制量施加到被控对象中去,必须进行模糊判决(模糊决策,把模糊量转化精确量。
把模糊量转化为精确量的过程称为清晰化,又称为去模糊化,或称为模糊判决。
模糊自动控制中1最大隶属度法
这个方法是选取隶判决的模糊子集U,则取该模糊子集中隶属度最大的那个元素maxμ作为执行量,即μμ(maxμ(μμμ≥
这种方法的优点是简单易行,缺点是它概括的信息量很少,因为这
种方以下两种形式
量法排除了其它隶属度较小的元素的影响和作用。
2加权平均法
这种判决方法有由下式决定
z普通加权平均法,其执行maxμ(x(
ii
imaμμμμμ∑=∑(公式-3μ
z权系数加权平均法,其执行量maxμ由下式决定
maxii
i
kkμμ
其中,权系数的决定直接糊子集所有的信息量,可以求出把隶属度曲线与横坐标1.3.4模糊控制查询表
经过模糊化、模糊推理和逆模糊化,对于一组输入(e,ec,可以得到确查询表。
例如下表:
345
∑
=∑(公式-4系数ki的选择应根据实际情况来决定。
加权影响着系统的响应特性,对模糊自动控制系统来说,要改变系统的响应特性,选取和调整有关系数是关键。
3取中位数法
为了充分利用模围成的面积平分为两部分的数作为去模糊的结果。
最后,加到被控过程的控制量U应是去模糊的结果u与比例因子uk的乘积:
U=uk*u。
控制器的输出u
即:
得到模糊控制的准e
U-5一4一3一2
一1
012ec一666666554400一56666655440O一466665444400一3666654440O0一244444420000一144444220000044322O0O一224一一l220000一33444一一一一2
220000一23一一4一4一4
300O0一34
一一4一5一5一6一64O00O一44一一4一4一6一6一650000一4一4一4一5一6一6一660000一4一4一5一6一6一6一6
表1模糊控制查询表示例
该表被存储于计算的实测值,查表就可以计的步骤可以概括为:
模糊化的方法
2.S12模糊控制指令的介绍
模糊指令是s12的特色指令,他们类似高级语言指令,多数执行时间较(分工作在得到模糊输出,也放分通过隶属度函数及相关规则将模糊输出变成控制输机中,在线运行时根据。
ec得到控制输出u。
综上所述,模糊控制器设(1确定模糊控制器的输入变量和输出变量(2确定输入、输出的论域(3总结模糊控制规则(4选择推理算法
(5确立模糊化和逆长,而且执行过程中允许中断响应,中段返回后可以继续运行,采用他们可以简化模糊运算程序,缩短运行时间,而且不易出错。
S12指令的模糊指令在处理模糊运算时分为三个阶段:
1首先根据隶属度函数将过程变量变成模糊输入,这部模糊化接口中完成,然后将结果放入存储器;
(2推理运算部分根据规则库和模糊运算输入入存储器;
(3解模糊部出,送往执行机构。
图4S12模糊控制指令的执行流程
S12的模糊控制指令在实现时相应的用了mem、rev、revw和wav,并为他们制定了必要的表达方式。
下面将具体介绍这几条指令的用法。
2.1MEM指令
MEM指令是单个隶属度函数计算的核心指令,由他将过程变量变成模糊输入,该函数正常运行的前提是:
(1建立一个隶属度函数;
(2在内存建立描述该隶属度函数的数据结构;
(3制定保存运算结果及模糊输入值的内存空间。
特别是在建立隶属度函数的数据结构时要遵照一定的语法规则。
图5S12的隶属度函数建立规则示例
每个隶属度函数的数据结构必须用四个字节无符号数的数据结构
来描述:
即{起点的X坐标,终点的X坐标,前沿斜率,后沿斜率},这里起点和终点的X坐标均采用类似归一化的数值,即必须将输入的范围映射到$00-$FF中去,而前后沿斜率的符号固定不变,只需要给出具体数值,分别为($FF/(饱和点X坐标-起点X坐标和($FF/(终点X坐标-饱和点X坐标。
当斜率为无穷大的时候,用$00表示。
设定数据结构时采用如下的语法:
IINPUT_MPFS:
FCB$40;起点X坐标
FCB$D0;终点X坐标
FCB$08;前沿斜率
FCB$40;后沿斜率
2.2REV指令
REV指令时规则推理的核心指令,由他根据模糊输入确定模糊输出,但必须事先按照约定为其设定必要的条件:
(1按照需要提供若干个魔术模糊输入,输出关系的规则;
(2在内存建立描述该规则的数据结构;
(3制定运算结果及模糊输出值的内存空间,并事先清0;
(4设置有关寄存器;
所谓模糊逻辑的规则就是一个模糊逻辑表达式:
IF前方是弯道AND小车当前的车速很高THEN车辆减速AND车辆预先偏转用模糊指令的语言表示:
RULE_STARTFCBI0,I1,I2……,$FE,O00,O01……$FE:
FCBI0,I1,I2……,$FE,O10,O11……$FE:
FCBI0,I1,I2……,$FE,O20,O21……$FE:
……………………….
FCBI0,I1,I2……,$FE,O00,O01……$FE:
FUZ_INSRMBMI0+MI1+…Min+MO0+MO1…Mon;
2.3REVW指令
REVW为加权推理指令,与REV指令功能类似,但也存在着不同点,REVW指令处理每个规则时,将迁建表达式的运算结果乘以一个权值后,作为模糊后件,而REV指令直接将结果送给后件。
在使用REVW指令时需要额外加一个权值表:
RULE_STARTFCBI0,I1,I2……,$FE,O00,O01……$FE:
FCBI0,I1,I2……,$FE,O10,O11……$FE:
FCBI0,I1,I2……,$FE,O20,O21……$FE:
……………………….FCBI0,I1,I2……,$FE,O00,O01……$FE:
FUZ_INSRMBMI0+MI1+…Min+MO0+MO1…Mon;
FUZ_WTFCBW0,W1,…….Wn//权值数据表
其中表内的权值均为0-1之间的小数,小数点位于最高位左边。
2.4WAV指令
WAV指令是解模糊阶段的核心指令,它与EDIV指令配合完成模糊输出到控制输出的变换。
常用的算法之前已有介绍,WAV指令使用的是其中的重心法,该方法将模糊输出作为权值,对输出模糊子集对应的模糊单点集的值(Singleton求加权平均,即采用下式确定控制输出:
1
1nii
ini
iSFFOutput==∑=∑(公式-5式中-各个输出模糊自己对应的模糊单点集的值;
iS
-输出对该子集的隶属度
F
i
n–输出模糊子集数。
3.模糊控制算法的实现
在小车的实际运行中,我们先采取的是PD控制。
在该控制算法下小车跑直线时,表现非常好,但是在进曲率半径较小的弯道时,往往会冲出去,这样的话就相当于出局了。
我们发现这是和比例系数不够大有关的,因此我们采用了模糊控制算法,对不同的弯道曲率用不同的比例参数。
3.1算法设计和实现
下面具体介绍模糊算法和S12模糊控制指令的实现:
在计算曲率时我们取了三个有效点,如下图
图6曲率计算示意图
这三个有效点的参数都是在视界坐标下取得的,纵坐标是摄像头采集到的视像的的行数,行与行之间的距离在实际作表中表示的距离是不变的,横坐标用来表示点在横轴方向上的位置,也是在视界坐标下确定的。
实际计算曲率时,我们不用把所得坐标都转换到实际坐标上去算,因为在视界坐标下算出的曲率同样可以反映出赛道的弯曲程度。
定义曲率
CURVEXXXX
=−−−
(12(23
=(公式-6
X1+X3-2*X2
式中的X1,X2,X3定义见上图
之所以不用标准的曲率计算公式一方面是他的计算量太大,另一方面我们不需要那么精确的曲率,上面定义的曲率公式已足以反映出赛道的弯曲程度。
计算出来的曲率值恒为正,因为我们有专门的程序判别是左弯还是右弯,所以我们只需知道赛道的弯曲程度就可以了。
将CURVE模糊化,模糊子集定义为:
CURVE={零,极小,小,大,非常大}
注:
如果为零,表示曲率半径无穷大,该赛道为直道。
将CURVE的语言变量定义为:
Z=零
VS=极小
S=小
B=大
VB=极大
将CURVE量化为7个等级,分别为0,1,2,3,4,5,6。
那么CURVE的论域为:
CURVE={0,1,2,3,4,5,6}
根据调试小车在弯道上的表现给出CURVE量的隶属度表
0123456
量化等级
语言变量
零10.500000
极小010.50000
小0010.5000
大0000.510.50
极大000000.51
表2CURVE量的隶属度函数表
由上表我们得到CURVE的隶属度函数,见下图:
图7CURVE的隶属度函数
对于KP值我们同样进行模糊化,模糊子集定义为:
Kp={零,极小,小,大}
将Kp的语言变量定义为:
Z=零
VS=极小
S=小
B=大
将Kp量化为7个等级,分别为0,1,2,3,4,5,6那么Kp的论域为:
Kp={0,1,2,3,4,5,6}
同样根据调试的经验给出Kp量的隶属度表
0123456
量化等级
语言变量
零10.500000
极小00.510.5000
小000.510.50
大000000.51
表3Kp量的隶属度表
从而得到隶属度函数如下图所示:
图8Kp的隶属度函数
这部分的S12程序如下:
RAM:
section
absentryfuzvar
fuzvar:
ds.b8;inputs//CURVE语言变量进行量化
Z:
equ0;零
VS:
equ1;极小
S:
equ2;小
B:
equ3;大
VB:
equ4;极大
outputmembershipvariables//输出语言变量进行量化
absentryfuzout
fuzout:
ds.b4;outputs
Z:
equ0;零
VS:
equ1;极小
S:
equ2;小
B:
equ3;大
EEPROM:
section
fuzzification建立CURVE的隶属度函数
s_tab:
dc.b0,80,0,3;零
dc.b0,120,12,3;极小
dc.b20,160,12,3;小
dc.b80,240,3,3;大
dc.b160,255,3,0;极大
注:
把0-6的等级放大40倍,该定义规则见S12指令部分
然后建立模糊控制规则表
CURVEZVSSBVB
KpZVSSBB
表4模糊控制规则表(CURVE-Kp上述模糊规则可以用模糊关系R来表示:
=∪∪∪∪(公式-7
RZZVSVSSSBBVBB
(*(*(*(*(*
S12程序表示为:
rules:
dc.bZ,$FE,Z,$FE
dc.bVS,$FE,VS,$FE
dc.bS,$FE,S,$FE
dc.bB,$FE,B,$FE
dc.bVB,$FE,B,$FE
最后需要用重心法来得到输出:
我们定义Kp各个量化因子对应的权重为:
{Z,VS,S,B,VB}{0,1,2,3,4}其S12指令为:
addsingleton:
dc.b0,1,2,3,4;然后对模糊控制指令的返回值Y进行处理新的Kp=30+5*Y3.2实测结果和现象分析以下是使用模糊控制算法前后小车的实际轨迹。
赛道轨迹图9使用模糊控制算法前后小车在赛道上的实际轨迹其中的红线是赛车行驶轨迹。
注:
这张图的绘制方法是这样的,先通过串口把误差值和速度通过无线串口发到上位机,然后通过在计算机上描点画出小车实际的轨迹,有偏差但是与实际情况非常近似。
小车跑完全程的时间Kp固定使用模糊控制算法17s16s误差的样本总体的方差275.2002223.8256速度的平均值1.84m/s1.97m/s表5智能车各项参数比较
4.小结可以非常明显的看到使用模糊控制算法之后,小车虽然也有偏出赛道的情况存在,但是比用Kp参数恒定的算法情况就好多了。
这主要是因为在弯道上Kp参数变大的缘故。
Kp变大时,一旦检测到偏差,系统就能更快的恢复到平衡位置。
从表中可以看到小车偏差的方差实际减小了,因而小车走的实际距离也减小了,自然跑完赛道的时间也减小了。
参考文献[1]汤兵勇,路林吉,王文杰.模糊控制理论与应用技术[M].清华大学出版社,2002.[2]杨国田,白焰.摩托罗拉(Motorola)68HC12系列为控制器原理、应用于开发技术[M].中国电力出版社,2003.[3]温素芳,朱齐丹,张小仿.基于模糊控制器的移动机器人路径规划仿真[J].应用科技,2005,32(4:
31-33.