您的位置:首页>>第二届全国智能车大赛西南赛区获奖论文>>正文
第五章 理论分析与算法实现
推荐给好友
打印
加入收藏
更新于2008-07-31 00:49:03
PID算法 模糊控制
5.1 模型建立
5.1.1 基于后轮差速的运动模型 在车辆运动模型中,当车速不是很高的情况下,车辆转向中一般可以参考下面的一个模型
当小车转角为 时候可以根据车长来求出小车当前的转弯半径
式中 L是小车的轴长,a 为小车的转角, R 为后轮转弯半径。
然而这个模型只是适合在低速的情况下才能够得出较为精确的结果,鉴于本智能车的速度不高,在后轮差速很好的情况下,侧滑的因素将得到有效的抑制,可以考虑用这个模型来处理。
考虑图5.2所示的以小车驱动轴中点为参考的运动模型,为参考点运动的两个连续位置,
即小车的纵向,
上式的结果即为小车后轴中点在运动过程中的轨迹方程,在 足够小的情况下,随着 和 , 的不断变化可以画出其运动轨迹。当给出小车的初始方向角和初始坐标时,就可以推导出任何时刻小车的坐标值。在下面考虑小车整个模型的时候,用后轮差速的已 知量,或者前轮转角和后轮速度值来替换图中的变
量就可以得到,基于后轮差速和基于前轮转角和后轮速度的运动方程。 接下来我们考虑小车的整个模型,如图5.3所示。
其中 表示小车的轴间的距离, 表示轮距的一半, 表示小车的转角,
公式9所表示的模型就是基于后轮差速的运动模型,只要给出一开始小车的位置和方位角,就能够根据已知的几何关系递推的算出小车的后轴中点任何时刻的位置。
5.1.2 基于速度和前轮转角的运动模型 当小车在运动中,如果在后轮安装上测速反馈,再根据当前小车转角的控制量的大小,就能够及时的得到小车的速度v 和转角f 的反馈值,那么由
车前后轴中点在任何时候的位置,进而可以得出小车的运动轨迹。 在小车的运动过程中,小车根据当前采集到的图像,由控制算法可以得出小车在下一个运动区间内的该给出多大的速度和转角。那么如果在小车上建立一个动坐标 系,只根据当前的图像计算出小车的速度和转角的控制量,就能够满足小车运动需求。如下图,在已经知道小车速度和转角的情况下,以小车的后轴中点为坐标原 点,小车的后轴为 轴,以小车的纵向为 轴,由上面得出的结果可以很容易的得出下一个小车后轴中点和前轴中点位置的坐标。
从图中很容易得到后轮中点的坐标变化为:
由于存在着一定的侧滑现像,且小车在行进过程中存在着舵机延时的问题,所以上述公式在近似过程中, 要偏小一点, 会要大一点,这样在小车运动模型就能更好的接近现实情况。 5.2 运动模型仿真
根据上述的小车运动模型公式,并考虑到实际中舵机的延时问题。在假定小车速度为匀速 ,并且不发生侧滑的情况下,根据上面所得到的公式,用 VC++[14]得到小车在运动过程中前后轮中点的位置坐标,再用Matlb仿真出小车的运动轨迹。
小车的控制系统中图像采集和控制程序执行的时间约为 ,舵机的分析参数中可以得到舵机在这一段时间内能转过的角度约为15度,即约为0.25弧度。在以小车的后轴中点为原点,后轴为 轴,小车的纵向为 轴的坐标系中,本人用C++程序结合上述得出的公式,给出了小车在从0度转过45度角的过程中前后轮中点各个坐标值。
如图5.5即为小车的前后轴中点的坐标变化,对上面所得到的数据,用Matlab来仿真小车转过45度角的过程,可以得到图5.6的结果:
图5.6中两条曲线即为小车在转弯过程中前轮中点和后轮中点的变化曲线,将小车的前后轮中点连接起来,就可以得到小车在各个时刻的姿态变化,图5.7所示。
如上述,对小车在各种转角(5度、10度、15度、20度、25度、30度)的情况下都作如上分析,那么就可以近似得出在理想情况下小车下一个状态的参数。这为下面的算法设计提供了理论上的依据和数据基础。
5.3 控制算法
对智能车的控制就是对小车的速度与方向进行控制,我们比较了模糊控制和PID控制的优缺点,鉴于模糊控制在控制智能车运动方面的天然优势,我们选用了模糊 控制算法法来控制小车,达到了较理想的效果。在横向上,即对小车的方向控制,我们采用了由采集图像上的绝对位置、相对位置和模型车速度三个变量组成的模糊 控制器来控制;在纵向上,即对模型车的速度控制,我们采用了基于模型车当前速度和转角为输入的模糊控制。
首先从采集到的图像进行分析,本智能车采用的是CCD图像传感器,能够得到足够多的图像信息,对采集来的信息均匀的取出90行30列,由于摄像头本身备旋 转90度,所以得到的图像为30行90列,用边缘检测算法从信息中提取出黑线的中心位置,这样的由黑线的中点位置就可以按一定的算法得出小车下
一个状 态。
比赛的跑道路况不外乎3种,如下图:
图5.8 跑道的三种情况
5.3.1 控制算法的简单介绍 PID控制介绍
要使智能车在最短的时间内完成比赛,那么在直道上要以全速行驶,在“S”道转向不大的情况下要尽量按直道行驶,在进入弯道时要减速,以使得在弯道上能够及时的转向,在弯道中和出弯的时候要加速,以使得在小车在进入直道时候就能够很快的达到最高速度。
在本智能车控制算法中,我们用位置式PID控制小车的横向运动,即小车的转角。
PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。PID控制器参数整定 的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接 用,还必须通过工程实际进行调整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛 采用。PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制 器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。例如:采用临界比例法。利用该方法进行 PID控制器参数的整定步骤如下:
(1)首先预选择一个足够短的采样周期让系统工作;
(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,
记下这时的比例放大系数和临界振荡周期;
(3)在一定的控制度下通过公式计算得到PID控制器的参数。 在实际调试中,只能先大致设定一个经验值,然后根据调节效果修改。 对于温度系统:P(%)20--60,I(分)3--10,D(分)0.5—3 对于流量系统:P(%)40--100,I(分)0.1—1 对于压力系统:P(%)30--70,I(分)0.4—3 模糊控制介绍[15]
模糊控制实质上是用计算机去执行操作人员的控制策略,因而可以避开对像复杂的数学模型,力图对人们关于某个控制问题的成功与失败的经验进行加工,总结出知识,从中提炼出控制规则,实现复杂系统的控制。 模糊控制有以下的特点:
1) 模糊工程的计算方法虽然是运用模糊集理论进行的模糊算法,但最后得到的控制规律是确定性的、定量的条件语句。
2) 不需要根据机理与分析建立被控对像的数学模型,对于某些系统,要建立数学模型是很难的,甚至是不可能的。 c3) 与传统的控制方法相比,模糊控制系统依赖于行为规则库,由于是用自然语言表达的规则,更接近于人的思维方法和推理习惯,因此,便于现场操作人员的理解和使用,便于人机对话,以得到更有效的控制规律。
4) 模糊控制与计算机密切相关。从控制角度看,它实际上是一个由很多条件语句组成的软件控制器。目前,模糊控制还是应用二值逻辑的计算机来实现,模糊规律经过 运算,最后还是进行确定性的控制。模糊推理硬件的研制和模糊计算机的开发,使得计算机将像人脑那样随心所欲地处理模棱两可的信息,协助人们决策和进行信息 处理。
模糊控制器是模糊控制系统的核心,是模糊控制系统控制品质的主要保证,因此,在模糊控制系统中,设计和调整模糊控制器的工作是很重要的。模糊控制是以控制 人员的经验为基础实施的一种智能控制,它并不需要精确的数学模型去描述系统的动态过程,因此,它的设计方法与常规控制器的设汁方法有所不同。模糊控制器的 设计,一般是先在经验的基础上确定各个相关参数及其控制规则,然后在运行中反复进行调整,以达到最佳控制效果。模糊控制器的设计主要考虑以下几项主要内 容:
1) 确定模糊控制器的输人变量和输出变量(即控制量); 2) 设计模糊控制器的控制规则; 3) 确立模糊化和解模糊的方法;
4) 选择模糊控制器的输入变最及输出变量的论域,并确定模糊控制器的参数(如量化因子、比例因子等);
5) 编制模糊控制算法的应用程序。 5.3.2 方向控制
PID算法设计[16]
现在假设图像中每行的黑点中心位置依次存在数组CCDData里面,为了能够更好的反映曲线的变化方向性,我们取黑线的最远点偏离图像中心点位置的差值作为控制的偏差 ,即
,那么所得到的位置式PID控制量为: ,其
中4500位舵机控制量的中心位置,并用最远一点和最近一点的斜率来作为积分
控制,这样做的好处是使得位置式算法中的积分量只是根当前图像中的信息有关系,而不是跟过去整个状态都有关,这样不容易产生较大的误差。
在这里我们根据前面所得到的数学模型来推导出舵机PID控制的大概系数。首先我们只适用一个比例控制,由于舵机存在一定的延时,每处理一次图像只能转过 15度左右,所在设定系数时候要予以考虑。摄像头高40cm,能够采集的图像位于小车前方8cm到58cm,宽为20cm到60cm,取其后十点的来作为 控制参考点。下表给出了当后十点的平均偏差给定时候,由第三章数学模型可得到其对应的前轮应该给出的角度值,以及由应该给出的舵机的比例系数。
(表中偏移单位为所采集进来图像的行像素间的单位距离,前轮转角为虚轮的角
度,单位为度)
从上表中可以求出系数平均值为33,只有比例控制的时候,在直道上又可能存在抖动的情况(图5.9),且在“S”道上完全是跟踪黑线,没有优化效果,在大弯道的情况下有可能存在转向不够及时的情况。
为了克服上面的问题,使得小车的在直道上的抖动减弱,并且在在不是很大弧度“S”道上能够尽量按直线行驶的话,那么就需要加入积分量,这里指的是斜率分量,即 ;要使得小车的转向响应更快更及时,要适当的加入微分量,即 。
在对 三个系数进行调节的时候,要注意下面的规律: 曲线振荡很频繁,比例度盘要放大; 曲线漂浮绕大湾,比例度盘往小扳; 曲线偏离回复慢,积分时间往下降; 曲线波动周期长,积分时间再加长; 曲线振荡频率快,先把微分降下来; 动差大来波动慢,微分时间应加长。 模糊控制算法设计
我们考虑到影响模型车转向的因素,不仅仅是模型车采集到的当前的图像信息,还有模型车当前的速度,在模型车的速度较低的情况下,模型车输出的
转角应该较 小,在模型车速度较高的情况下,模型车输出的转角应该较大,为使得模型车能够很好的跟踪黑线,因此在方向控制算法中加入速度反馈的速度量是十分有必要 的。
我们用模型车采集到的当前图像的中的绝对位置信息和相对位置信息,加上当前反馈回来的速度量设计了下面的模糊控制器: 图中的绝对位置信息为黑线与图像中心线的距离值,相对位置信息为黑线的斜率值,速度量为速度传感器的反馈值。
根据日常生活中的经验可以得到:
1、当模型车在直线上行使时弱化舵机的转向,允许适当的偏离,只有当偏离达到一定的距离时,再进行校正。
2、当模型车在“S”道上行使时弱化舵机的转向,使得模型车在“S”道上能够近似的跟踪圆弧的弦,当“S”道上的圆弧的半径较大时候,模型车的轨迹近似为直线。
3、进入大弯道的时候要能够给出较大的转角,使得模型车过弯时候更为流畅。
下面将模型车得到的图像绝对位置、相对位置和速度信息模糊化,在这里我们使用梯形隶属度函数来表示,结果如图5.11所示。
图5.11中(b),(d) 表示由图像坐标求得黑线斜率的隶属度函数,(b)是图像中有效的最远点横坐标减去最近点横坐标的值,因为在差值中存在负数,为了去掉负数,对参数中同时加 上90,(d)是图像中有效的最远点的纵坐标减去最近点的纵坐标的值。 (a),(c),(e)表示由图像的绝对位置信息、相对位置信息和模型车反馈的速度值的隶属度函数,由此可以得出模型车当前应给出的舵机控制量,(a)是 图像中最远有效行的黑线中心点与图像中心点之间的距离,(c)与(b)相同,(e)为当前的速度量,这里用速度控制量的大小来代表实际反馈的速度值。而 (f)则为(b),(d)的输出函数,即图像斜率。(g)则为(a),(c),(e)的输出函数,即舵机控制量的输出函数。
规则表如表5.2所示:
图5.11中(e) 3D到3F为低,3E到41为较低,40到43为较高,42到44为高。那么结合上一个模糊控制表的输出和图(e)中的速度信息便可以得到控制规则表5.4(b):
5.3.3 速度控制 模糊控制器的设计: 由常理可以得到,当小车的转角给定时,那么小车的最高速度也是一定的,因此由方向控制算法得出的小车的转角值是速度控制的一个重要的输入量,另外通过测速 反馈得到的当前速度也应该是速度控制的输入量。那么速度控制器的输入量为角度量angle和速度量velocity,输出的为控制电机速度的PWM波占空 比。控制系统的结构设计如下:
因为角度控制量的PWM值是与小车的转角一一对应的,所以由角度量就可以知道小车的转角的大小,我们将小车转角的大小分为9种情况。而对小车的速度,我们 根据跑道的情况,在转弯的最小速度值到直道上的最大速度值之间分为8种情况。他们的模糊化采用的是常用的三角形隶属度函数,输出的隶属度函数采用单点值, 如图5.13。
根据车体的物理运动学规律和日常生活中的经验,为了使车行使的平均速度最大且保证不偏离车道,可以总结出模糊控制规律如下:
1、如果小车在直道上,小车以高速行驶,并且黑线在小车的正中,则以小车的最高速度行驶。
2、如果小车要进入弯道,则要减速,如果已经进入弯道,则要加速,以使得驶出弯道进入直道时加速更加迅速。
3、如果小车以高速驶入弯道,则要刹车,以免冲出跑道。
基于上述生活中的经验,我们得出下面的模糊控制规则表5.5。 由表5.5和图5.13中的输出隶属函数的值,就可以得到小车当前给出的速度控制量。
5.3.4控制算法的优化部分 在实际的调试中发现,模型车在直道上的速度相差不是很大,在弯道上的比拼才是整个比赛的重点,因此如何优化弯道的算法才是整个控制算法的关键。弯道主要分为90度转弯,“S”道和180度转弯,其中“S”弯的优化显得极为重要。
对于小“S”可以完全的取直,对于大的“S”弯可以近似的按弦行驶,这样模型车在运动过程中能够少走一段路程,更重要的是由于模型车的转角减小,也使得模型车可以在很高的速度下穿过“S”道。 这样如何识别“S”道则成为最重要的问题。因为小“S”弯一般都与直道相连接,因此进入“S”弯时车体是正的。我们通过对采集进来的图像,例如图5.14 所示,用采集到的黑点位置横坐标减去图像中点位置的横坐标,那么我们将得到正值,负值交错的信息。而对于大的弯道由上述的方法得到的则是全正,全负或者是 右正到负,由负到正的的信息。因此我们能够很好的识别出“S”道,我们给出很小的转向控制量,那么模型车就能够近似的直线通过小的“S”道,在大的“S” 道上,路线的优化也是非常的明显,这为减少模型车在整个赛道上运行的时间提供了保证。
5.3.5算法的程序实现
S12单片机提供了专门的模糊控制指令,不但使得程序设计大大的简化,也使得程序的执行速度大大加快,实现模糊控制的CPU负荷也大大降低。 为了能够更好的说明S12单片机的模糊控制指令的用法,下面是求图像斜率部分的隶属度函数的程序,即图5.11中(b)和(d)。 FCB $0001,$0032,$00ff,$0006 FCB $0019,$0055,$0006,$0006 FCB $003C,$0078,$0006,$0006 FCB $005F,$009B,$0006,$0006 FCB $0082,$00b4,$0006,$00ff FCB $0001,$0008,$00ff,$003f FCB $0004,$000e,$003f,$003f FCB $000a,$0014,$003f,$003f FCB $0010,$001a,$003f,$003f FCB $0016,$001F,$003f,$00ff
其中第一个数表示梯形的第一个点,第二个数表示梯形的第二个点,后两个数分别表示梯形的左斜率和右斜率。
下面则是以上两个隶属度函数为输入的输出规则库:
FDB FUZ_INS1+$0003,FUZ_INS1+$0005,$FFFE,FUZ_INS1+$0010,$FFFF FDB FUZ_INS1+$0003,FUZ_INS1+$0006,$FFFE,FUZ_INS1+$000F,$FFFF FDB FUZ_INS1+$0003,FUZ_INS1+$0007,$FFFE,FUZ_INS1+$000E,$FFFF FDB FUZ_INS1+$0003,FUZ_INS1+$0008,$FFFE,FUZ_INS1+$000E,$FFFF FDB FUZ_INS1+$0003,FUZ_INS1+$0009,$FFFE,FUZ_INS1+$000E,$FFFF FDB FUZ_INS1+$0004,FUZ_INS1+$0005,$FFFE,FUZ_INS1+$0010,$FFFF FDB FUZ_INS1+$0004,FUZ_INS1+$0006,$FFFE,FUZ_INS1+$0010,$FFFF FDB FUZ_INS1+$0004,FUZ_INS1+$0007,$FFFE,FUZ_INS1+$000F,$FFFF FDB FUZ_INS1+$0004,FUZ_INS1+$0008,$FFFE,FUZ_INS1+$000E,$FFFF FDB FUZ_INS1+$0004,FUZ_INS1+$0009,$FFFE,FUZ_INS1+$000E,$FFFF FDB FUZ_INS1+$0002,FUZ_INS1+$0005,$FFFE,FUZ_INS1+$000D,$FFFF FDB FUZ_INS1+$0002,FUZ_INS1+$0006,$FFFE,FUZ_INS1+$000D,$FFFF FDB FUZ_INS1+$0002,FUZ_INS1+$0007,$FFFE,FUZ_INS1+$000D,$FFFF FDB FUZ_INS1+$0002,FUZ_INS1+$0008,$FFFE,FUZ_INS1+$000D,$FFFF FDB FUZ_INS1+$0002,FUZ_INS1+$0009,$FFFE,FUZ_INS1+$000D,$FFFF FDB FUZ_INS1+$0001,FUZ_INS1+$0005,$FFFE,FUZ_INS1+$000A,$FFFF FDB FUZ_INS1+$0001,FUZ_INS1+$0006,$FFFE,FUZ_INS1+$000B,$FFFF FDB FUZ_INS1+$0001,FUZ_INS1+$0007,$FFFE,FUZ_INS1+$000C,$FFFF FDB FUZ_INS1+$0001,FUZ_INS1+$0008,$FFFE,FUZ_INS1+$000C,$FFFF FDB FUZ_INS1+$0001,FUZ_INS1+$0009,$FFFE,FUZ_INS1+$000C,$FFFF FDB FUZ_INS1+$0000,FUZ_INS1+$0005,$FFFE,FUZ_INS1+$000A,$FFFF FDB FUZ_INS1+$0000,FUZ_INS1+$0006,$FFFE,FUZ_INS1+$000A,$FFFF FDB FUZ_INS1+$0000,FUZ_INS1+$0007,$FFFE,FUZ_INS1+$000B,$FFFF FDB FUZ_INS1+$0000,FUZ_INS1+$0008,$FFFE,FUZ_INS1+$000C,$FFFF FDB FUZ_INS1+$0000,FUZ_INS1+$0009,$FFFE,FUZ_INS1+$000C,$FFFF 算法完整的程序分析见本文最后的附录部分,在此就不再作过多的叙述。
第四章 硬件系统设计与实现 第六章 软件系统设计与实现 相关链接
基于模糊PID算法的电阻炉温度控制系统设计 第二章 方案的论证与选择
基于单片机的PID和PWM液体流量控制系统研究 自顶向下基于DSP Builder的PID控制系统开发 第四章 软件算法部分
基于DSP与数字温度传感器的温度控制系统 基于DSP与数字温度传感器的温度控制系统
基于AVR单片机atmega32的PID和PWM液体流量控制系统研究
暂无评论, 点击此处发表评论
添 加评论
今日要闻
各家IC厂商财报大PK
诺西完成首个LTE切换测试 Cree:LED供不应求是长期问题 IBM给我们的启示在哪里? 中国首台千万亿次计算机诞生
热点专题
常用MCU产品选型
高交会热点抢“鲜”看 ADC设计全接触
NI LabVIEW 2009助您超越 wimax09:侃技术谈发展
论坛热贴
01. 【经典推荐】[安捷伦出品]ADS200... 02. 【ADS中文视频教程(台湾)】[时长... 03. 【天线工程手册(PDF)版】[应广大... 04. cygwin 中文教程
05. 【射频通信和高速通信仿真软件】... 06. 奉上《实用射频技术》
07. 【热门推荐】[微带天线] 三本经典... 08. 【ADS中文视频教程(台湾)】[第一... 09. 【Agilent公司射频设计—视频教程... 10. 【ADS2005A视频讲解】[安捷伦公司...
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服
务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.
因篇幅问题不能全部显示,请点此查看更多更全内容