模糊控制在倒立摆中的MATLAB仿真应用
- 格式:doc
- 大小:314.50 KB
- 文档页数:13
倒立摆系统的简介倒立摆系统发展倒立摆系统的研究意义倒立摆系统的简介倒立摆系统是日常生活中所见到的任何重心在上,支点在下的控制问题的抽象。
例如杂技顶杆表演,人们常为演员的精湛技艺叹服,然而其机理更引发了人们的深思。
它深刻的揭示了自然界的一种基本规律.即一个自然不稳定的被控对象,通过控制手段可使之具有良好的稳定性。
不难看出杂技演员顶杆的物理机制可简化为一个倒置的倒立摆,也就是人们常称之为倒立摆或一级倒立摆系统。
一级倒立摆系统是一个复杂的非线性系统,小车可以自由地在限定的轨道上左右移动,小车上的倒立摆一端被铰链链接在小车顶部,另一端可以在小车轨道所在的垂直平面上自由转动。
系统的控制目的是通过电机带动小车运动,使倒立摆平衡并保持小车不与轨道两端相撞。
倒立摆已经由原来的直线倒立摆扩大很多种类,典型的有直线倒立摆,环形倒立摆,平面倒立摆等,倒立摆系统是运动模块上装有倒立摆装置,由于在相同的运动模块上可以装载不同的倒立摆装置,倒立摆的种类由此而丰富很多倒立摆的控制方法倒立摆作为一个典型的被控对象,适合用多种理论和方法进行控制。
当前,倒立摆的控制规律有: (1)PID 控制,通过对倒立摆物理模型的分析,建立倒立摆的动力学模型,然后使用状态空间理论推导出其非线性模型,再在平衡点处进行线性化得到倒立摆系统的状态方程和输出方程,于是就可设计出PID 控制器实现其控制;(2) 状态反馈H ∞控制,通过对倒立摆物理模型的分析,建立倒立摆的动力学模型,然后使用状态空间理论推导出状态方程和输出方程,于是就可应用H ∞状态反馈和Kalman 滤波相结合的方法,实现对倒立摆的控制; (3) 利用云模型实现对倒立摆的控制,用云模型构成语言值,用语言值构成规则,形成一种定性的推理机制。
这种拟人控制不要求给出被控对象精确的数学模型,仅仅依据人的经验、感受和逻辑判断,将人用自然语言表达的控制经验,通过语言原子和云模型转换到语言控制规则器中,就能解决非线性问题和不确定性问题; (4) 神经网络控制,业已证明,神经网络(Neural Network ,NN) 能够任意充分地逼近复杂的非线性关系,NN 能够学习与适应严重不确定性系统的动态特性,所有定量或定性的信息都等势分布贮存于网络内的各种神经元,故有很强的鲁棒性和容错性;也可将Q 学习算法和BP 神经网络有效结合,实现状态未离散化的倒立摆的无模型学习控制; (5) 遗传算法( Genetic Algorithms , GA) ,高晓智在Michine 的倒立摆控制Boxes 方案的基础上,利用GA 对每个BOX 中的控制作用进行了寻优,结果表明GA 可以有效地解决倒立摆的平衡问题; (6) 自适应控制,主要是为倒立摆设计出自适应控制器; (7) 模糊控制,主要是确定模糊规则,设计出模糊控制器实现对倒立摆的控制; (8) 使用几种智能控制算法相结合实现倒立摆的控制,比如模糊自适应控制,分散鲁棒自适应控制等等; (9) 采用GA 与NN 相结合的算法,这也是我们采用的方法,首先建立倒立摆系统的数学模型,然后为其设计出神经网络控制器,再利用改进的贵传算法训练神经网络的权值,从而实现对倒立摆的控制,采用GA 学习的NN 控制器兼有NN 的广泛映射能力和GA 快速收敛以及增强式学习等性能。
一阶倒立摆与模糊控制作者:朱玖斌来源:《数字化用户》2013年第23期【摘要】倒立摆系统是一个复杂的、不稳定的非线性系统,为了使其具有更好的适应性和稳定性,我们采用模糊控制器方法来对其进行控制。
通过MATLAB环境下的仿真并对仿真结果进行分析,验证了此方法按照预定的要求精确、稳定、快速地控制倒立摆系统,实现既定目标的性能。
【关键词】单级倒立摆模糊控制 MATLAB仿真一、引言倒立摆控制系统是进行控制理论研究的理想实验平台,在工业复杂对象的控制有着不可估量的工程应用价值,对倒立摆的研究在双足机器人行走、火箭发射过程的姿态调整和直升机飞行控制等领域中有着广阔的应用空间。
而倒立摆的控制方法同样广阔,典型的有线性PID控制、常规PID控制、LQR 控制、智能控制等。
这里我们要研究的是智能控制中的一种—模糊控制。
二、建立倒立摆模型M :小车质量 m:摆杆质量 b:小车摩擦系数 l:摆杆转动轴心到杆质心的长度 I:摆杆惯量 F:加在小车上的力 x:小车位置图1-1 一级直线倒立摆模φ摆杆与垂直向上方向的夹角θ摆杆与垂直向下方向的夹角(考虑到摆杆初始位置为竖直向下)通过牛顿力学方法分析,拉普拉斯变换,我们可以得出以下方程:由于输出为角度,求解(1-1),可以得出新方程:整理后,得出有式子(1-3)可以得出式子(1-2)式子代入式子(1-1),得出整理后得出传递函数:其中由于篇幅有限,这不介绍手算系统状态空间方程求解方法,而利用MATLAB中tf2ss命令对(1-4)式进行转化来得到状态方程,如下:系统物理参数把上述参数代入,可以得到系统的实际模型。
摆杆角度和小车位移的传递:(1-7)摆杆角度和小车加速度之间的传递函数为:(1-8)摆杆角度和小车所受外界作用力的传递函数:(1-9)以小车加速度作为输入的系统状态方程:三、模糊控制系统与一阶倒立摆的建立(一)模糊控制系统的组成(见图A)(二)Matlab搭建模糊控制器(见图B)(三)Matlab搭建程序框图(见图C)把模糊控制器导入到程序框图中Fuzzy Logic Controller观察仿真运行结果四、结论从仿真图中看出,一级倒立摆与模糊控制能够很好的结合,且没有超调现象,能够稳定控制。
模糊控制课程设计报告题目:基于matlab的倒立摆模糊控制专业、班级:09级电气四班学生姓名:学号:指导教师:分数:2012年 6 月15 日绪论倒立摆控制系统是一个复杂的、不稳定的、非线性系统,是进行控制理论设计及测试的理想实验平台。
倒立摆系统控制涉及到机器人技术、控制理论、计算机控制等多个领域。
其被控系统本身是一个绝对不稳定、高阶次、多变量、强耦合的非线性系统,可以作为一个典型的控制对象对其进行研究[1]。
同时,由于实际机械系统中存在的各种摩擦力,实际倒立摆系统亦具有一定的不确定性。
倒立摆系统的控制涉及到许多典型的控制问题:非线性问题、随动及跟踪问题、鲁棒性问题、非最小相位系统的镇定问题等等。
正是由于倒立摆系统的特殊性,许多不同领域的专家学者在检验新提出理论的正确性和实际可行性时,都将倒立摆系统作为实验测试平台。
再将经过测试后的控制理论和控制方法应用到更为广泛的领域中去[1]。
如:把一级倒立摆的研究成果应用到对航空航天领域中的火箭发射推进器和卫星飞行状态控制的研究;把二级倒立摆的研究成果应道到双足机器人行走控制中[2]。
所以说,对倒立摆系统控制理论的研究不仅具有理论研究价值,也具有相当的实际工程应用价值。
倒立摆系统的传统控制方法主要是使用经典控制理论和现代控制理论。
它们都以精确的系统数学模型为控制对象。
经典控制理论在线性定常、输入输出量较少的系统中能很好的完成控制设计指标,经典控制理论的数学基础是拉普拉斯变换,占主导地位的分析和综合方法是频率域方法。
而现代控制理论是建立在状态空间分析法上的,基本分析方法是时域分析法。
这种方法能够克服经典控制理论的缺陷:能够解决系统的输入输出变量过多、系统的非线性等问题。
一阶倒立摆模糊控制仿真实验分析报告%mainclearclose all%load table.matglobal Table;global RULE;global UCenter;global Width;global num;global RuleMatch; %前件匹配方式0 取小;1乘积global Defuzzy; %反模糊化方法0: COG ; 1:COA; 2:MAXglobal g0;global g1;global h;x=[0.4,0,0];RuleMatch = 1; %前件匹配方式0 取小;1乘积Defuzzy = 0;%反模糊化方法0: COG ; 1:COA; 2:MAXg0=1.5;g1=0.1;h=1;% u=0;% Table = u;% [m,n]=size(u);% num = (m-1)/2;%u=[];RULE =[2, 2, 2, 1, 0; ...2, 2, 1, 0,-1;...2, 1, 0,-1,-2;...1, 0,-1,-2,-2;...0,-1,-2,-2,-2];%% RULE =[2,2,1,1,0; ...% 2,1,1,0,-1;...% 1,1,0,-1,-1;...% 1,0,-1,-1,-2;...% 0,-1,-1,-2,-2];RULE=RULE + 3*ones(size(RULE));%原始的%UCenter=[-20,-10,0,10,20];%改进的%UCenter=[-25,-15,0,15,25];UCenter=[-20,-15,0,15,20];Width(1)=(UCenter(5)-UCenter(4))/2;Width(2)=(UCenter(5)-UCenter(3));Width(3)=(UCenter(4)-UCenter(3))*2;Width(4)=Width(2);Width(5)=Width(1);x=x';[t,y]= ode45('P_Pendulum',[0,5],x);% [t,y]= ode45('P_Pendulum_tab',[0,10],x);% y2=y.*y;% inty = intnum(t,y2)%% int_e2 = inty(1)+inty(2);% int_u2 = inty(3);%int_y2 = sum(y.^2);%int_e2 = int_y2(1)+int_y2(2);%int_u2 = int_y2(3);figuresubplot(2,1,1)plot(t,y(:,1 ),'r',t,y(:,2),'k')%xlabel('t(sec)')% str1 = sprintf('x(0)=[%2.2f,%2.2f]',x(1),x(2)); % Title(str1,'Interpreter','latex','fontsize',14)%% str1=sprintf('t(sec)---index:$\\int{e^{T}(t)e(t)dt}=$ %f', int_e2);%str1 = '$\int{e^2}dt$'% text(6,0,str1,'Interpreter','latex','fontsize',14)%% xlabel(str1,'Interpreter','latex','fontsize',14)legend('x1(rad)', 'x2(rad/s)')title('输出隶属函数中心值:[-20,-15,0,15,20]')subplot(2,1,2)plot(t,y(:,3),'r')xlabel('t(sec)')ylabel('u(N)')% str1=sprintf('t(sec)--index:$\\int{u^{2}(t)dt}$= %f', int_u2);% %H = Title(str1,'Interpreter','latex','fontsize',14)% xlabel(str1,'Interpreter','latex','fontsize',14)% inverted pendulum stabilized% program on 2006,10,26function xdot = P_Pendulum(t,x)global RULE;global UCenter;global step;global k;global Kc;global QQ;global Width;global RuleMatch; %前件匹配方式0 取小;1乘积global Defuzzy; %反模糊化方法0: COG ; 1:COA; 2:MAXglobal g0;global g1;global h;M = 1;m =0.5;g = 9.8;l = 0.5;a = 1/(m+M);%计算隶属度mu_e= emembershipdegree(-x(1)*g0);mu_de = demembershipdegree(-x(2)*g1);%pausemu_e_id = find(mu_e>0);mu_de_id = find(mu_de>0);eLen= length(mu_e_id);deLen = length(mu_de_id);mu_pre= zeros(1,4);fuzzy_out = zeros(1,4);weight = zeros(1,4);in =1;%规则匹配for (i=1:eLen)for(j=1:deLen)switch RuleMatchcase 0%前件采用取小推理mu_pre(in)= min(mu_e(mu_e_id(i)),mu_de(mu_de_id(j)));case 1%前件采用乘积推理mu_pre(in)= mu_e(mu_e_id(i))*mu_de(mu_de_id(j));end%计算规则匹配度fuzzy_out(in) = RULE(mu_e_id(i),mu_de_id(j));in=in+1;endendnRule = eLen *deLen;u = 0;summu =0;%反模糊化for(i=1:nRule)switch Defuzzycase 0%按照重心法计算(COG)weight(i)= Width(fuzzy_out(i))*(mu_pre(i)-mu_pre(i)*mu_pre(i)/2);case 1% 按照中心平均法weight(i)=mu_pre(i);case 2% 取大法(大中求中)[max_v,max_id] = max(mu_pre);weight(max_id)=1;endu = weight(i)*UCenter(fuzzy_out(i))+u;summu =summu + weight(i);end%u=0;u=h*u/summu;if (u>20)u=20;endif (u<-20)u=-20;endt% if(t>2.5 && t<2.6 )% u=u+20;% end% if (u>20)% u=20;% end%% if (u<-20)% u=-20;% end% xdot(1)=x(2);% xdot(2)=(g*sin(x(1))-a*m*l*x(2)*x(2)*sin(2*x(1))/2-a*cos(x(1))*x(3))/(4*l/3-a*m*l*cos(x(1))*cos(x(1))); % xdot(3)=-100*x(3)+100*u;% x(3) = u;xdot(1)=x(2);xdot(2)=(g*sin(x(1))-a*m*l*x(2)*x(2)*sin(2*x(1))/2-a*cos(x(1))*x(3))/(4*l/3-a*m*l*cos(x(1))*cos(x(1))); xdot(3)=-100*x(3)+100*u;xdot = xdot';y=zeros(1,5);if (x<= -pi/2)y(1) =1 ;elseif (x<=-pi/4)y(1) = abs(x+pi/4)/(pi/4);y(2) = 1-abs(x+pi/4)/(pi/4); elseif (x<= 0)y(2) = 1-abs(x+pi/4)/(pi/4);y(3) = 1- abs(x)/(pi/4);elseif (x<=pi/4)y(3) = 1- abs(x)/(pi/4);y(4) = 1-abs(x-pi/4)/(pi/4); elseif (x<=pi/2)y(4) = 1-abs(x-pi/4)/(pi/4);y(5) = abs(x-pi/4)/(pi/4);elseif (x>pi/2)y(5) =1;endfunction y = demembershipdegree(x) y=zeros(1,5);if (x<= -pi/4)y(1) =1 ;elseif (x<=-pi/8)y(1) = abs(x+pi/8)/(pi/8);y(2) = 1-abs(x+pi/8)/(pi/8); elseif (x<= 0)y(2) = 1-abs(x+pi/8)/(pi/8);y(3) = 1- abs(x)/(pi/8);elseif (x<=pi/8)y(3) = 1- abs(x)/(pi/8);y(4) = 1-abs(x-pi/8)/(pi/8); elseif (x<=pi/4)y(4) = 1-abs(x-pi/8)/(pi/8);y(5) = abs(x-pi/8)/(pi/8);elseif (x>pi/4)y(5) =1;endy=zeros(1,5); if (x<= -30) y(1) =0 ; elseif (x<=-20)y(1) = 1-abs(x+20)/(10); elseif (x<=-10)y(1) = 1-abs(x+20)/(10); y(2) = 1-abs(x+10)/(10); elseif (x<= 0)y(2) = 1-abs(x+10)/(10); y(3) = 1- abs(x)/(10); elseif (x<=10)y(3) = 1- abs(x)/(10); y(4) = 1-abs(x-10)/(10); elseif (x<=20)y(4) = 1-abs(x-10)/(10); y (5) = 1-abs(x-20)/(10); elseif (x>30) elseif (x<=30)y(5) = 1-abs(x-20)/(10); elseif (x>30) y(5) =0; end不同的推理方式,反模糊化方法初始值:x0=[0.1 0]’t(sec)u (N )t(sec)u (N )t(sec)u (N )t(sec)u (N )t(sec)u (N )t(sec)u (N )不同的初始条件前件隶属度函数计算方法:乘积模糊蕴含关系计算方法:取小 反模糊化方法:COGt(sec)u (N )t(sec)u (N )t(sec)u (N )t(sec)u (N )结论:当初始角达到一定程度时,控制力趋向饱和,系统不稳定。
第1章引言1.1 模糊控制理的发展历史、研究现状及展望1.1.1 模糊控制理论的发展历史模糊逻辑控制(Fuzzy Logic Control)简称模糊控制(Fuzzy Control),是以模糊集合论、模糊语言变量和模糊逻辑推理为基础的一种计算机数字控制技术。
在人类自然科学的发展历史上,人们总是以追求事物的精确性描述为目的来进行研究,并取得了大量的成果。
随着科学技术的进步,在社会生产和生活中存在的大量的不确定性开始引起人们的注意。
1965年,美国的L.A.Zadeh教授创立了模糊集合论;1973年他给出了模糊逻辑控制的定义和相关的定理。
1974年,英国的E.H.Mamdani首先用模糊控制语句组成模糊控制器,并把它应用于锅炉和蒸汽机的控制,在实验室获得成功。
这一开拓性的工作标志着模糊控制论的诞生。
模糊控制实质上是一种非线性控制,从属于智能控制的范畴。
模糊控制的一大特点是既具有系统化的理论,又有着大量实际应用背景。
模糊控制的发展最初在西方遇到了较大的阻力;然而在东方尤其是在日本,却得到了迅速而广泛的推广应用。
近20多年来,模糊控制不论从理论上还是技术上都有了长足的进步,成为自动控制领域中一个非常活跃而又硕果累累的分支。
其典型应用的例子涉及生产和生活的许多方面,例如在家用电器设备中有模糊洗衣机、空调、微波炉、吸尘器、照相机和摄录机等;在工业控制领域中有水净化处理、发酵过程、化学反应釜、水泥窑炉等的模糊控制;在专用系统和其它方面有地铁靠站停车、汽车驾驶、电梯、自动扶梯、蒸汽引擎以及机器人的模糊控制等。
目前,模糊控制技术日趋成熟和完善。
各种模糊产品充满了日本、西欧和美国市场,如模糊洗衣机、模糊吸尘器和模糊摄像机等等,模糊技术几乎变得无所不能,各国都争先开发模糊新技术和新产品。
多年来一直未解决的稳定性分析问题正在逐步解决。
模糊芯片也已研制成功且功能不断加强,成本不断下降。
直接采用模糊芯片开发产品己成为趋势。
智能控制理论及应用课程设计报告题目:基于matlab的倒立摆模糊控制院系:西北民族大学电气工程学院专业班级:10级自动化(3)班学生姓名:蔡余敏学号:P101813455指导教师:刁晨2013.10基于MATLAB的倒立摆模糊控制作者:蔡余敏指导老师:刁晨摘要:倒立摆的控制问题就是使摆杆尽快地达到一个平衡位置,并且使之没有大的振荡和过大的角度和速度。
当摆杆到达期望的位置后,系统能克服随机扰动而保持稳定的位置。
本文主要针对较为简单的单级倒立摆控制系统而进行的设计分析。
通过建立微分方程模型,求出相关参数,设计出对应的模糊控制器,并运用MATLAB软件进行系统模型的软件仿真,从而达到预定控制效果。
目前,一级倒立摆的研究成果应用于火箭发射推进器和控制卫星的飞行状态等航空航天领域。
关键词:单级倒立摆;微分方程;模糊控制;MATLAB仿真1背景分析倒立摆控制系统是一个复杂的、不稳定的、非线性系统,是进行控制理论教学及开展各种控制实验的理想实验平台。
对倒立摆系统的研究能有效的反映控制中的许多典型问题:如非线性问题、鲁棒性问题、镇定问题、随动问题以及跟踪问题等。
通过对倒立摆的控制,用来检验新的控制方法是否有较强的处理非线性和不稳定性问题的能力。
同时,其控制方法在军工、航天、机器人和一般工业过程领域中都有着广泛的用途,如机器人行走过程中的平衡控制、火箭发射中的垂直度控制和卫星飞行中的姿态控制等。
正是由于倒立摆系统的特殊性,许多不同领域的专家学者在检验新提出理论的正确性和实际可行性时,都将倒立摆系统作为实验测试平台。
再将经过测试后的控制理论和控制方法应用到更为广泛的领域中去。
现代控制理论已经在工业生产过程、军事科学、航空航天等许多方面都取得了成功的应用。
例如极小值原理可以用来解决某些最优控制问题;利用卡尔曼滤波器可以对具有有色噪声的系统进行状态估计;预测控制理论可以对大滞后过程进行有效的控制。
但是它们都有一个基本的要求:需要建立被控对象的精确数学模型。
倒立摆模糊控制系统仿真Champagne【摘要】在模糊系统控制模型中,倒立摆模型是一个较为典型的实例,针对多变量输入、非线性结构的倒立摆系统,可以通过matlab 仿真平台对具体的模型对象进行认识和研究。
首先是对这样一个具有实际物理意义的模型进行建模,通过对模型的数学分析来选择适当的模糊控制途径,最后通过仿真来获得更多的有关模型的信息。
本文站在一个初学者的角度,通过相关资料的检索以及matlab 的具体实践,用图形的方法来描述这种模型的处理过程。
这种方案实现了摆干角度与小车位置的双重控制的功能,而且实现的良好的动态性能以及稳态性能的输出。
验证了使用模糊控制方案对倒立摆模型进行描述和控制的有效性。
关键词:模糊控制 倒立摆 系统仿真 matlab倒立摆系统的控制是控制理论应用的一个典型范例,其结构简单、成本较低,便于用模拟或数字的方法进行控制。
其结构形式虽然多种多样,但无论何种结构就其本身而言,都是一个非最小相位、多变量、绝对不稳定的非线性系统。
由于倒立摆系统的绝对不稳定性,必须采用有效的措施控制其达到相对稳定的状态。
同时由于摩擦等因素的存在,使系统具有一定的不确定性。
因而需要寻找一种非传统的控制方式。
目前已经相对发展成熟的是模糊控制系统,而这种控制方式的典型应用之一就是倒立摆系统。
倒立摆系统的简化物理模型如下图所示:该系统的微分方程是:)()sin(lg)(/222t u m dt d ml ==+-τθθ其中m 是摆杆的质量,l 是摆长,θ是从垂直方向上的顺时针偏转角,τ=u(t)为作用于杆的逆时针扭矩,t 是时间,g 是重力加速度常数。
假设x1=θ,x2=d θ/dt 为状态变量,则由微分方程式给出的非线性系统的状态表达式为 21/x dt dx =)()/1()sin()/(/212t u ml x l g dt dx -=由于偏转角很小时,sin θ=θ,可以将状态空间线性化表示: 21/x dt dx =)()/1()/(/212t u ml x l g dt dx -=线性离散时间状态空间表达式可以用矩阵差分方程来表示: )()()1(211k x k x k x +=+ )()()()1(212k u k x k x k x -+=+两个输入变量的论域为[-2,2]和[-5,5]所以分别在两个输入变量的空间建立相应的隶属度函数。
基于ADAMS与MATLAB的倒立摆联合仿真实验5篇第一篇:基于ADAMS与MATLAB的倒立摆联合仿真实验基于ADAMS与MATLAB的倒立摆联合仿真实验一、实验目的在传统的机电一体化研究设计过程中,机械工程师和控制工程师虽然在共同设计开发一个系统,但是他们各自都需要建立自己的模型,然后分别采用不同的分析软件,对机械系统和控制系统进行独立的设计、调试和试验,最后进行机械系统和控制系统各自的物理样机联合调试,如果发现问题又要回到各自的模型中分别修改,然后再联合调试,显然这种方式费时费力。
基于多领域的建模与联合仿真技术很好的解决了这个问题,为机械和控制系统进行联合分析提供了一种全新的设计方法。
机械工程师和控制工程师就可以享有同一个样机模型,进行设计、调试和试验,可以利用虚拟样机对机械系统和控制系统进行反复联合调试,直到获得满意的设计效果,然后进行物理样机的建造和调试。
ADAMS与MATLAB是机械系统仿真和控制系统仿真领域应用较为广泛的软件,其中ADAMS为用户提供了强大的建模、仿真环境,使用户能够对各种机械系统进行建模、仿真和分析,具有十分强大的运动学和动力学分析功能;而MATLAB具有强大的计算功能、极高的编程效率及模块化的建模方式,因此,把ADAMS与MATLAB联合起来仿真,可以充分将两者的优势相结合,将机械系统仿真分析同控制系统设计有机结合起来,实现机电一体化的联合分析。
本实验以倒立摆为例,进行ADAMS与MATLAB的联合仿真,对倒立摆的运动性能和运动规律进行分析。
二、实验方法软件环境:MD ADAMS R3,MATLAB R2009b 2.1 建立倒立摆的动力学模型启动ADAMS/View模块弹出如图1所示对话框,建立小车及摆杆模型。
首先选择“Create a new model”选项,创建一个新的模型,将该文件保存在相应的文件夹下,本实验将结果保存在E:daolibai_adams文件夹下,将文件名取为“daolibai_adams”,其余选项保持默认。
TAIYUAN UNIVERSITY OF SCIENCE & TECHNOLOGY题目:院(系):专业:学生姓名:学号:模糊控制在倒立摆中的仿真应用1、倒立摆系统简介倒立摆有许多类型,例如图1-1的a和b所示的分别是轮轨式一级倒立摆系统和二级倒立摆系统的模型。
倒立摆是一个典型的快速、多变量、非线性、本质不稳定系统,它对倒置系统的研究在理论上和方法论上具有深远的意义。
对倒立摆的研究可归结为对非线性多变量本质不稳定系统的研究,其控制方法和思路在处理一般工业过程中也有广泛的用途。
近些年来国内外不少专家学者对一级、二级、三级、甚至四级等倒立摆进行了大量的研究,人们试图寻找不同的控制方法实现对倒立摆的控制,以便检查或说明该方法的严重非线性和本质不稳定系统的控制能力。
2002年8月11日,我国的李洪兴教授在国际上首次成功实现了四级倒立摆实物控制,也标志着我国学者采用自己提出的控制理论完成的一项具有原创性的世界领先水平的重大科研成果。
图1-1 倒立摆模型(a)一级倒立摆模型(b)二级倒立摆模型倒立摆系统可以简单地描述为小车自由地在限定的轨道上左右移动。
小车上的倒立摆一端用铰链安装在小车顶部,另一端可以在小车轨道所在的垂直平面内自由转动,通过电机和皮带传动使小车运动,让倒立摆保持平衡并保持小车不和轨道两端相撞。
在此基础上在摆杆的另一端铰链其它摆杆,可以组成二级、三级倒立摆系统。
该系统是一个多用途的综合性试验装置,它和火箭的飞行及步行机器人的关节运动有许多相似之处,其原理可以用于控制火箭稳定发射、机器人控制等诸多领域。
倒立摆系统控制原理单级倒立摆系统的硬件包括下面几个部分:计算机、运动控制卡、伺服系统、倒立摆和测量元件,由它们组成的一个闭环系统,如图1-2所示,就是单级倒立摆系统的硬件结构图。
图1-2 单级倒立摆硬件结构图通过角度传感器可以测量摆杆的角度,通过位移传感器可以得到小车的位置,然后反馈给运动控制卡,运动控制卡与计算机双向通信。
计算机获得实时数据,确定控制策略,发送到运动控制卡,运动控制卡执行计算机确定的控制策略,产生相应的控制量,由伺服电机转动来带动小车在水平轨道往复的运动,使摆杆保持倒立。
倒立摆系统状态方程θf图1-3 单级倒立摆模型图θ为杆与垂线的夹角,f为作用力,杆的质量m=,杆和小车的总重量m=,半杆长l=,重力加速度g=s2,采样周期T=.倒立摆的数学模型为:πθθπθθθθ180cos )3/4(]sin )180/([cos sin 22⨯-+-=•≈l m ml l m f mg p p (式 我们可以实时量测角度θ,并计算出角速度,控制的任务是产生合适的作用力f ,以使倒立摆保持直立状态。
采用C-FC 的控制系统如图1-4图1-4 倒立摆模糊控制系统 2、 模糊控制 简介众所周知,人类的思维是极其粗略的,语言表达是模糊的,它的逻辑是定性的,因此“模糊概念”更适合于人们地观察、思维、理解与决策,这也更适合于客观现象和事物的模糊性(fuzzienss)。
于是由此便产生了模糊数学和模糊控制的概念。
模糊数学和模糊控制的概念由美国加利福尼亚大学著名教授查得在他的《Fuzzy Sets 》、《Fuzzy Algorithm))和《A Retionnale for Fuzzy Control 》心著名论著中首先提出。
1972年2月,日本以东京工业大学为中心,发起成立“模糊系统研究会”,1973年公开使用了“模糊工程”这一名词。
从那以后,模糊控制理论在全世界范围内迅速蔓延。
尽管模糊集理论的提出至今只有30年,但是其发展迅速。
历年来在模糊理论与算法、模糊推理、工业控制应用、模糊硬件与系统集成,以及稳定性理论研究等方面,发表了很多对模糊控制理论和模糊系统的研究和发展有重大促进意义的论文。
80年代以来,自动控制系统被控对象的复杂化,它不仅表现在控制系统具有多输入一多输出的强耦合性、参数时变性和严重的非线性特性,更突出的是从系统对象所能获得的知识信息量相对地减少,以及与此相反地对控制性能的要求却日益高度化。
然而“当一个系统复杂性增大时,人们能使它精确化地能力将降低,当达到一定的阐值时,复杂性和精确性将相互排斥”(即“不相容原理”)。
也就是说,在多变量、非线性、时变的大系统中,系统的复杂性与人类要求的精确性之间形成了尖锐矛盾。
因此,要想精确地描述复杂对象与系统的任何物理现象和运动状态,实际上己经是不可能的。
关键的是如何使准确和简明之间取得平衡,而使问题的描述具有实际意义。
这种描述的模糊性对问题的求解并非有害,却能高效率地对复杂事物作出正确无误的判断和处理。
因此模糊控制理论的研究和应用在现代控制领域中有着重要的地位和意义。
经典控制理论首先被使用线性小规模系统的自动化领域,然而随着计算机技术的发展,现代控制理论在大规模线性多变量系统也得到应用。
但是对于非线性复杂系统,这些控制策略却难以适用,它不仅算法极其复杂,而且无望获得满意的结果。
今年来,采用专家知识的人工智能和智能信息处理技术,虽然引起了人们的重视,但它不能作为模拟控制,且其知识库庞大,设计也十分困难。
模糊控制不仅适用于小规模线性单变量系统,而且逐渐向大规模、非线性复杂系统扩展,从己经实现的控制系统来看,它具有易于熟悉、输入量连续、可靠性高、能发挥熟练专家操作的良好自动化效果等优点。
至今,世界上研究“模糊”的学者己经越来越多,研究的范围从单纯的模糊数学到模糊理论应用、模糊系统及其硬件集成。
与知识工程和控制方面有关的研究有模糊建模理论、模糊序列、模糊识别、模糊知识库、模糊语言规则、模糊近似推理等。
近年来,已经将神经网络和模糊技术互相结合,取长补短,形成一种模糊神经网络技术,由此可以组成一种更接近人脑的智能信息处理系统其发展前景十分广阔。
我国模糊控制理论及其应用方面的研究工作是从1979年开始的,至今己有20多年的时间,大多数是在著名的高等院校和研究所中进行理论研究,如对模糊控制系统的结构、模糊推理算法、自学习或自组织模糊控制器,以及模糊控制稳定性等问题的研究,而其成果应用主要集中于工业炉窑方面,如退火炉、电弧冶炼炉、水泥窑以及造纸机的控制等。
模糊控制理论的基本概念模糊控制是基于模糊数学的理论知识,模仿人类大脑的思维方式,识别和判断模糊现象的。
通过模糊推理得到精确的控制量,实现对被控对象的控制。
关于模糊控制的基本概念:1) 论域论域是指所研究的事物的范围或全部的研究对象。
论域中的事物称为个体,具有某种特定属性的全部事物可以称为集合,一部分个体组成的集合称为子集。
2) 隶属函数由某种特定的属性形成的集合A,它的论域为U,在康托创立的经典集合理论中,把属于集合A的元素 u的特征函数值定义为1,把不属于集合A的元素u的特征函数值定义为0.3) 模糊推理模糊推理是以模糊逻辑为基础的,它是一种不确定性推理方法。
当推理判断具有模糊性时,称之为模糊推理。
在这个过程中,推理判断的依据称为模糊控制律。
假设集合A是论域U上的模糊子集,集合B和集合C是论域Y上的模糊子集,则模糊推理可以用下面的条件语句表示:If x = A Then y = B else y = c该条件语句可以表示为从论域U到论域Y的一个模糊关系R,可表示为:此时,隶属函数为:模糊控制原理如图2-1所示表示模糊控制的基本原理,模糊控制器是模糊控制的核心部分。
通过传感器采样,计算机可以获得被控量的精确值,然后把精确值与给定值作出比较,得到误差信号,误差信号通常可以作为模糊控制器的输入量。
首先把精确的误差信号值模糊化,得到误差信号的模糊子集,然后通过模糊控制规律进行模糊推理,得到一个模糊的控制量,接着把模糊的控制量进行解模糊处理,得到精确的数字控制量,经D/A 转换输入到执行机构,实现对被控对象的控制。
图2-1 模糊控制原理框图如图2-2所示是模糊控制器的组成部分,它包括输入量模糊化接口、知识库、模糊推理机和解模糊化接口四个部分图2-2模糊控制器结构图1) 模糊化接口系统的输入量通常是一个精确值,必须由模糊化接口处理之后,才能适用于模糊控制器的求解。
因此模糊化接口实际上是模糊控制器的输入接口,它的作用是把精确的输入量转化为一个模糊量。
对于模糊变量 e,通常可以将它的模糊子集划分为a) e={负,零,正}={N,Z,P}b) e={负大,负小,零,正小,正大}={NB,NS,Z,PS,PB}c) e={负大,负中,负小,零,正小,正中,正大}={NB,NM,NS,Z,PS,PM,PB}2) 知识库知识库是由数据库和规则库构成。
输入变量和输出变量的模糊子集的隶属度值都存放在数据库中;规则库用来存储所有的模糊控制规则,为模糊推理机推理时提供控制律。
,3) 模糊推理机模糊控制量是由模糊推理机得到的,它是根据输入模糊量,由模糊控制规则推理得到的。
目前模糊推理方法很多,常用的有 Mamdani 推理法、Larsen 推理法、Zadel推理法等4) 解模糊接口模糊推理得到的结果通常是一个模糊量,不能直接作为控制量作用到被控系统上。
因此,需要把它转换为一个可以被执行机构识别的精确值,该过程就叫做解模糊。
通常采用的解模糊方法也有很多种,例如重心法、最大隶属度法、加权平均法、中位数法等.3、倒立摆在仿真中的应用连续的模糊控制S函数function [sys,x0,str,ts] = whatisit(~,x,u,flag )switch flagcase 0[sys,x0,str,ts]=mdlInitializeSizes;case 1sys=mdlDerivatives(x,u);case 3sys=mdlOutputs(x);case {2,4,9}sys=[];otherwiseerror(['Unhandled flag=',num2str(flag)]);endfunction [sys,x0,str,ts]=mdlInitializeSizes()sizes=simsizes;=2;=0;=1;=1;=0;=1;sys=simsizes(sizes);x0=[10;10];str=[];ts=[0 0];function sys=mdlDerivatives(x,u)sys(1,1)=x(2);sys(2,1)=*sin((x(1)*pi)/180)-cos(x(1)*pi/180)*(u+*(x(2)*pi/180)^2*sin(x(1)*pi/180)))/((4/3)* sys=mdlOutputs(x)sys=x(1);simulink模块图图仿真模块图将设置好的模糊规则放进模块fuzzy logic controller,编写好的s函数放进模块s-function中。