单级倒立摆的智能控制及其GUI动画演示

更新时间:2024-05-13 07:27:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

存档日期: 存档编号:

论 文 题 目: 单级倒立摆的智能控制及GUI动画演示 姓 名: XX 系 别: 机电工程系 专 业: 电气工程及其自动化 班 级 、 学 号: 指 导 教 师: xxx

1

摘 要

倒立摆系统是一个典型的快速、多变量、非线性、动态系统,对于倒立摆的控制研究无论在理论上和方法上都有深远的意义。

本文主要研究内容是:首先概述自动控制的发展和倒立摆系统研究的现状;介绍倒立摆系统硬件组成,对单级倒立摆模型进行建模,并分析其稳定性如何构成;研究倒立摆系统的几种控制方式,并设计出对应的控制器,以MATLAB软件为平台为,经行大量的模拟仿真实验,对不同控制方法的效果及优缺点作出总结;利用MATLAB软件中的GUI组件设计出模拟的倒立摆系统演示系统,让大家能直观的了解控制方法的作用。

关键词:倒立摆, PID控制器, MATLAB,GUI

I

Abstract

Inverted Pendulum System is a typical multivariable, nonlinear, fast, dynamic system.On inverted pendulum control both in theory and methodology will have far-reaching significance.

The main research content of this article : Roughly describe the current situation of research of automatic control and Inverted Pendulum System, introduce the hardware components of Inverted Pendulum System, model the Single Inverted Pendulum System and analyze the formation of the stability. Research on several types of Inverted Pendulum System controlling, and design the dedicated controller for corresponding type. Based on mass test result on Malatb platform, summarize the advantages and disadvantages of different type of controlling. Using the GUI component of Malatb Software design the mimetic demo system of Inverted Pendulum System. In order to let everyone can intuitive understand the role of control method.

Keywords: Inverted Pendulum, PIDController , Malatb , GUI

II

目 录

摘 要 ................................................................................................. I Abstract .............................................................................................. II 1 绪论 ................................................................................................. 1

1.1 课题研究背景及意义............................................................................. 1 1.2 倒立摆系统介绍及其研究意义............................................................. 1 1.3 本论文的主要工作................................................................................. 2

2 单级倒立摆的数学模型 ................................................................ 3

2.1 模型的推导原理..................................................................................... 3 2.2单级倒立摆系统描述.............................................................................. 3 2.3 单级倒立摆系统数学建模..................................................................... 4 2.4 本章小结................................................................................................. 5

3 最优控制方法设计 ........................................................................ 6

3.1 最优控制概述......................................................................................... 6 3.2 最优控制器的设计................................................................................. 7 3.3 最优控制MATLAB仿真 .................................................................... 10 3.4 本章小结............................................................................................... 14

4 单级倒立摆的PID控制系统设计 .............................................. 16

4.1 PID控制概述 ........................................................................................ 16 4.2 PID控制系统设计的原理 .................................................................... 17 4.3 摆杆角度控制....................................................................................... 18 4.4 小车位置控制....................................................................................... 19 4.5 PID控制算法的MATLAB仿真 .......................................................... 20 4.6 本章小结............................................................................................... 24

5 基于GUI的倒立摆LQR控制动画演示 ................................... 25

5.1 GUI介绍 ............................................................................................... 25

III

5.2 演示程序的构成................................................................................... 25 5.3 主程序的实现....................................................................................... 25 5.4 演示界面的设计................................................................................... 26 5.5 演示过程............................................................................................... 27 5.6本章小结................................................................................................ 28

6 结论 ............................................................................................... 29 致 谢 ................................................................................................. 30 参考文献........................................................................................... 31 附录 ................................................................................................... 33

IV

单级倒立摆的智能控制及GUI动画演示

1 绪论

1.1 课题研究背景及意义

控制理论的发展,起于“经典控制理论”。早期最有代表性的自动控制系统是18世纪的蒸汽机调速器。20世纪前,主要集中在温度、压力、液位、转速等控制。20世纪起,应用范围 扩大到电压、电流的反馈控制,频率调节,锅炉控制,电机转速控制等。二战期间,为设计和制造飞机及船用自动驾驶仪、火炮定位系统、雷达跟踪系统及其他基于反馈原理的军用装备,促进了自动控制理论的发展。至二战结束时,经典控制理论形成以传递函数为基础的理论体系,主要研究单输入-单输出、线性定常系统的分 析问题。经典控制理论的研究对象是线性单输入单输出系统,用常系数微分方程来描述。它包含利用各种曲线图的频率响应法和利用拉普拉斯变换求解微分方程的时域分析法。这些方法现在仍是人们学习控制理论的入门之道[1][5][6]。

1.2 倒立摆系统介绍及其研究意义

倒立摆控制系统[2]是一个非线性动态系统, 是作为理论教学及开展各种控制实验的理想平台。许多抽象的控制概念如控制系统的稳定性、可控性、系统收敛速度和系统抗干扰能力等,都可以利用倒立摆系统直接的展现出来。除了用于教学,在自动控制领域中,倒立摆系统的高阶次、不稳定、多变量、非线性和强耦合等特性使得许多现代控制理论的研究人员一直将它作为研究对象。他们通过对倒立摆系统的研究出新的控制方法,并将其应用于航天科技和机器人学等各种高新科技领域。倒立摆仿真或实物控制实验,已成为检验一个新的控制理论是否有效的试金石,同时也是产生一个新的控制方法必须依据的基础实验平台[3]。

常见的倒立摆系统一般由小车和摆杆两部分构成,其中摆杆可能是一级、两级甚至多级。在复杂的倒立摆系统中,摆杆长度和质量均可变化。据研究的目的和方法不同,又有悬挂式倒立摆、球平衡系统和平行式倒立摆等

倒立摆的研究具有重要的工程背景。机器人行走倒立摆系统。从日常生活中所见到的任何重心在上、也是支点在下的控制问题,到空间飞行器和各类伺服云台的 稳定,都和倒立摆系统的稳定控制有很大相似性,故对其稳定控制在实际中有很多用场,如海上钻井平台的稳定控制、卫星发射架的稳定控制、火箭姿态

1

单级倒立摆的智能控制及GUI动画演示

控制、飞机 安全着陆、化工过程控制等[4]。

1.3 本论文的主要工作

一、为了对被控对象有一个充分的认识,文中首先建立了倒立摆系统的数学模型,并线性化处理了在平衡点的系统,得到了倒立摆系统的线性化模型;在此模型的基础上,对系统的稳定性、能控性和能观性进行分析,阐述了倒立摆系统的运动规律和各个变量之间的相互关系。

二、目前有多种方法可以稳定控制倒立摆系统,本文主要简述了两种常见的控制器,包括PID控制和最优LQR控制,基于上述理论方法设计了控制器,并实现了对倒立摆的MATLAB仿真,分析了它们的特点。

三、通过MATLAB中的GUI工具设计出倒立摆最优LQR控制的模拟效果动画。

2

单级倒立摆的智能控制及GUI动画演示

2 单级倒立摆的数学模型

2.1 模型的推导原理

推导控制系统的数学模型有两种基本方法。方法一,对系统各部分的运动机理进行分析,根据它们所依据的物理规律建立对应的运动方程,整合后即成为描述整个系统的方程。方法二,通过给系统施加某种测试参数,记录其输出,并用适当的数学模型去逼近,这种方法适用于系统运动过程复杂因而难以分析或不可能分析的情况。

系统的建模原则:

(1)建模之前,要对系统的特征和运动机理进行一个全面细致的了解,确定研究的目标以及系统对于准确性要求,分析时选用正确的方法。

(2)按照确定的分析法,确定建立何种数学模型;

(3)系统规定的误差范围内,对分析方法的准确性进行考量,然后建立简洁正确的数学模型。因为倒立摆有比较规则的形状,并且是一个极不稳定的动态系统,且不能利用通过测量其频率特性来获取数学模型,因此非常适合利用数学工具对其进行进行理论推导。

2.2单级倒立摆系统描述

在控制理论研究中经常把小车倒立摆系统作为研究对象,研究过程中只要认定是小车倒立摆系统,即认为数学模型已经定型。并且小车倒立摆的数学模型与驱动系统有关, 因此此模型只适用于执行机构是直流电机的情况下,并不适用于交流电机驱动的倒立摆系统。本文分析的倒立摆系统即为直流电机作为动力核心。小车倒立摆系统是检验控制方式好坏的一个典型对象,其特点是高阶次、不稳定、非线性、强耦合,只有采取有效的控制方式才能稳定控制。

?L1ux小车M

3

2.1单级倒立摆系统的原理图

单级倒立摆的智能控制及GUI动画演示

图中u是施加于小车的水平方向的作用力,x是小车的位移,θ是摆的倾斜角。若不给小车施加控制力,倒摆会向左或向右倾斜,控制的目的是当倒摆出现偏角时,在 水平方向上给小车以作用力,通过小车的水平运动,使倒摆保持在垂直的位置。即控制系统的状态参数,以保持摆的倒立稳定。

2.3 单级倒立摆系统数学建模

为了建立倒立摆系统的数学模型,先作如下假设: (1)倒立摆与摆杆均为匀质刚体。 (2)忽略倒立摆运动过程中的摩擦。 2.3.1结构参数

倒立摆是不稳定的,如果没有适当的控制力作用在它的上面,它将随时可能向任何方向倾倒。这里只考虑二维问题,即认为倒立摆只在平面内运动。控制力u 作用于小车上。摆杆长度为L,质量为m,小车的质量为M,小车瞬时位移为x,摆杆瞬时位置为(x+l×sin?),在外力的作用下,系统产生运动。假 设摆杆的重心位于其几何中心。设输入为作用力u,输出为摆角θ。

2.3.2系统的运动方程

图2-2是系统中小车和摆杆的受力分析图。其中,N和P为小车与摆杆相互作用力的水平和垂直方向的分量。

注意:在实际倒立摆系统中监测和执行机构的正负方向已经事先确定,因此得到如下矢量方向定义图,图中箭头所指方向即为倒立摆系统的矢量正方向。

应用Newton方法来建立系统的动力学方程过程如下:

??F?bx??N x分析小车水平方向所受的合力,可以得到方程:M?PNF小车M?bxP?L1mg

x

?x

N (a)小车隔离受力图 (b)摆杆隔离受力图

图2-2小车和摆杆的受力分析图

4

单级倒立摆的智能控制及GUI动画演示

通过对摆杆水平方向的受力进行分析可以得到下面等式:

d2 N?m2(x?lsin?) (2-1)

dt??cos??ml??2sin? ???ml?即:N?mx把这个等式代入上式中,就得到系统的第一个运动方程:

??cos??ml??2sin??F (2-2) ??bx??ml? (M?m)?x接下来推出系统的第二运动方程,我们对摆杆垂直方向上的合力进行了分析,得到下面方程:

d2 P?mg??m2(lcos?) (2-3)

dt??sin??ml??2cos? (2-4)即:P?mg?ml? 力矩平衡方程如下:

?? (2-5) ?Plsin??Nlcos??I?

注:上式中力矩的方向,由于?????,cos???cos?,sin???sin?,故等式前面有负号。

合并这两个方程,经过处理,得到第二个运动方程:

???mglsin?co? (I?ml2)? ???ml?xs (2-6)

2.4 本章小结

因为倒立摆系统具有非常典型的非线性、变量多以及不稳定性,以倒立摆系统作为被控对象的控制系统可以直观的表现许多抽象的控制概念。因此这一章的目的是建立单级倒立摆的数学模型,通过对倒立摆数学模型的推导,加深对系统建模和模型线性化问题的了解,同时对系统建立数学模型也是一个系统分析、设计的前提,一个准确又简练的数学模型可以极大的减少后期的工作量,降低解决问题的难度。

5

单级倒立摆的智能控制及GUI动画演示

的超调量很小,而且摆杆的稳定和上升所消耗的时间偏长,小车向相反的方向移动是像预计的跟随摆杆移动。

0.1Cart PositionPendulum Angle 0.050-0.05-0.1-0.15-0.2-0.25 00.511.522.533.544.55

图3-2系统响应曲线

可以发现,在Q矩阵中,增加Q11降低摆杆稳定所消耗的时间和上升时间,并且使摆杆的摆动幅度减小。在这里取Q11?4500,在Q33?150,则

] K=[-67.082-36.2547102.340520.226响应曲线如图3-3所示。

11

单级倒立摆的智能控制及GUI动画演示

3x 10-3 Cart PositionPendulum Angle210-1-2-3 00.511.522.533.544.55

图3-3 系统响应曲线

此时,如果再增加Q11和Q33值,系统的响应还会改善。但在保证Q11和Q33足够小的情况下,系统响应已经满足要求了。

上述的设计中,是在输出信号得到反馈之后与系数矩阵K相乘,然后再减去输入量,即可得到控制信号。但是,这样会导致输入和反馈的量纲相异,因此为了不发生这样的矛盾,我们可以给输入乘以一个增益NBar,如图3-4所示

RyNBar??Axx??Byy?Cxxy+?K 图3-4 控制系统框图

此时具有量纲匹配的最优控制LQR仿真文件LQR2.m如下:

% 最优控制(量纲匹配)

% 确定开环极点的程序如下 M = 0.5;m = 0.2; b = 0.1;I = 0.006; g = 9.8;

12

单级倒立摆的智能控制及GUI动画演示

l = 0.3; I*(M+m)+M*m*l^2;

A = [0 1 0 0; 0 -(I+m*l^2)*b/p (m^2*g*l^2)/p 0; 0 0 0 1; 0 -(m*l*b)/p m*g*l*(M+m)/p 0]; B = [ 0; (I+m*l^2)/p; 0;m*l/p ]; C = [1 0 0 0;0 0 1 0]; D = [0;0]; p = eig(A); % 求向量K x = 5000; y = 100;

Q = [x 0 0 0; 0 0 0 0; 0 0 y 0 0 0 0 0]; R = 1;

K = lqr(A,B,Q,R)

% 计算LQR控制矩阵 Ac = [(A-B*K)];

Bc = [B];Cc = [C];Dc = [D]; % 计算增益Nbar Cn = [1 0 0 0];

Nbar = rscale(A,B,Cn,0,K); Bcn = [Nbar*B];

% 求阶跃响应并显示,小车位置为虚线,摆杆角度为实线 T = 0:0.005:5;

U = 0.2*ones(size(T));

[Y,X] = Lsim(Ac,Bcn,Cc,Dc,U,T); plot(T,Y(:,1),':',T,Y(:,2),'-')

legend('Cart Position','Pendulum Angle') grid

% ------ end ------

在仿真的过程中需要用到输入/输出匹配系数函数rscale,由于它不是Matlab工具,因此需要将其拷贝到rscale.m文件中,并将其与源文件LQR2.m一起复制到Matlab工作区内,方可正常仿真,rscale.m如下:

% ---- rscale.m ----

% 求取输入输出匹配系数

function[Nbar] = rscale(A,B,C,D,K) s = size(A,1);

Z = [zeros([1,s]) 1]; N = inv([A,B;C,D])*Z'; Nx = N(1:s);

13

单级倒立摆的智能控制及GUI动画演示

Nu = N(1+s);

Nbar = Nu + K*Nx; % ------ end ------

利用函数recale来计算N,运行程序,计算出:

K = -70.7107 -37.8345 105.5298 20.9238

即Nbar=rscaleNbar=rscale(ABCn事实上0K)=-70.7107 ,可以看出,

Nbar和K向量中与小车位置x对应的那一项相等。此时系统的响应曲线如图3-5所示:

0.250.20.150.10.050-0.05-0.1-0.15-0.2 0Cart PositionPendulum Angle 0.511.522.533.544.55

图3-5 系统响应曲线

从系统曲线上反映出,小车位置跟踪输入信号,并且摆杆超调足够小,稳态误差满足要求,上升时间和稳定时间也符合了设计指标。

3.4 本章小结

最优控制理论是现代控制理论中的重要内容,过去因为许多复杂的计算难以实现,但随着计算机技术的不断进步,复杂的计算可以通过计算机进行处理,因此最优控制在工程技术应用的越来越广泛。

而最用控制算法(LQR)的目的是在一定性能指标下,使系统获得最佳的控制效果,达到最小的状态误差。

在仿真的过程中我首先对倒立摆系统如何缩短稳定时间和上升时间进行了仿真,通过不断的调试,使得系统的响应时间满足了设计要求。然后为了使系统

14

单级倒立摆的智能控制及GUI动画演示

输入和反馈的量纲相互匹配,给输入乘以了增益Nbar,然后进行仿真之后使得小车位置跟踪输入信号,而且摆杆超调最够小,稳态误差满足了要求,上升时间和稳定时间也满足设计指标。

15

单级倒立摆的智能控制及GUI动画演示

% 多项式相加

den = polyadd(conv(denPID,den1),conv(numPID,num1 )); % 求整个系统传递函数的极点 [r,p,k] = residue(num,den); % 显示极点 s = p

% 求取多项式传递函数的脉冲响应 t=0:0.005:5;

impulse(num,den,t)

% 显示范围:横坐标0-5,纵坐标0-10,此条语句参数可根据仿真输出曲线调整 axis([0 5 0 10]) grid

% ------ end ------

文件中用到求两个多项式之和的函数polyadd,因为它不是Malatb工具,因此需要将它复制到polyadd.m文件中,并将该文件和源文件一起复制到MATLAB工作区。Polyadd.m文件如下:

% ------ polyadd.m ------ % 求两个多项式之和

function[poly] = polyadd(poly1,poly2) if length(poly1) < length(poly2) short = poly1; long = poly2; else

short = poly2; long = poly1; end

mz = length(long)-length(short); if mz > 0

poly = [zeros(1,mz),short] + long; else

poly = long + short; end

% ------ end ------

仿真中倒立摆的参数为:M 小车质量 1Kg 、m 摆杆质量 0.15 Kg 、b 小车的摩擦系数 0 .1N/m/sec 、l 摆杆转动轴心到杆质心的长度 0.3m 、I 摆杆惯量 0.0034 kg*m*m 、T 采样频率 0.005秒。

PID控制器系数取KP?2,KI?2,KD?2,闭环系统极点为:

s=[-11.26951.76350.233300]

21

单级倒立摆的智能控制及GUI动画演示

脉冲响应曲线如图4-6所示

Impulse Response109876Amplitude54321000.511.522.5Time (sec)33.544.55

图4-6 脉冲响应曲线

有两个闭环极点位于S平面右半部,所以系统不稳定。从系统响应曲线也可以看出,系统响应是不稳定的不能满足要求,需要不断调整系数Kp,KI,KD,直到获得满意的控制结果。我们先增加了比例系数Kp,观察它对响应的影响,取Kp?150,KD?2,KI?2,闭环极点为:

s=(-4.6328 +25.0820i-4.6328 -25.0820i-0.007100)

系统脉冲响应曲线如图4-7所示

22

单级倒立摆的智能控制及GUI动画演示

Impulse Response0.150.10.05Amplitude0-0.05-0.1-0.150.20.40.60.8Time (sec)11.21.4

图4-7 系统脉冲响应曲线

系统闭环极点均位于S平面左半部,系统稳定。系统稳定时间约2s,满足要求由于此时稳态误差为0,所以不需要改变积分环节;系统响应的超调量较大,为了减小超调,增加微分系数KD,取KD?10,响应曲线如图4-8所示:

Impulse Response0.080.060.040.02Amplitude0-0.02-0.04-0.06-0.0800.050.10.150.20.250.30.350.40.45Time (sec)

图4-8 增加KD后系统响应曲线

23

单级倒立摆的智能控制及GUI动画演示

系统响应满足指标要求。

4.6 本章小结

在这一章节中,我采用了控制器最常用的控制方式PID控制方法对倒立摆进行控制,因为PID控制是将比例偏差(P)、积分(I)、和微分(D)通过线性组合构成了控制量,以此来对被控对象进行控制,所以在设计的过程中,必须要非常了解控制参数Kp、KI、KD对系统性能的影响,然后按照所要求的控制指标综合实际响应结果适当的调节参数。

在利用MATLAB进行仿真的过程中可以进行多次调试,可以选取多组数据,取得最好的输出仿真效果。

24

单级倒立摆的智能控制及GUI动画演示

5 基于GUI的倒立摆LQR控制动画演示

5.1 GUI介绍

GUI即图形用户界面(Graphical User Interface)的简称,又称图形用户接口,是指采用图形方式显示的计算机操作用户界面。GUI是借鉴并结合了计算机科学、美学、心理学、行为动作学及商业领域分析学的人机系统工程,将人—机—环境三者作为一个整体系统总体设计。与以往的计算机命令界面相比,GUI更容易让用户在视觉上得到接受,并获得很好的用户体验。

此次演示采用了GUI技术,采用了论文第三章中的倒立摆模型的介绍和最优LQR控制算法,实现了倒立摆控制的动画演示。

5.2 演示程序的构成

演示程序主要包括以下几个部分。 一、主程序:DLB.M。

二、演示界面程序:DLB.fig,利用GUI来实现,在matlab命令框内输入“open DLB.fig”即可打开演示界面。

三、倒立摆示意图:MODEL.jpg,采用画图软件设计。

5.3 主程序的实现

(1)采用最优LQR控制算法来实现倒立摆和小车的控制,主程序DLB.m包括以下几个部分。

(2)模型参数的设定:采用mc_CreateFcn()、mc_Ca33back()实现小车质量的设定,采用同样的方式可以实现对摆杆长度和质量的设定。

,2,3,4。(3)LQR参数设定:采用qi_CreateFcn()和qi_Callback()实现qi,i?1采用r_CreateFcn()和r_Callback()实现R。

(4)利用LQR计算K:由lqrok_Callback()完成。

(5)K的设定:采用ki_CreateFcn()和ki_Callbak()实现Ki,i?1,2,3,4。 (6)摆杆角度和小车位置初始值设定:实现小车水平位置设定与回调 、小车水平拖动条设定与回调,摆杆角度设定与回调、摆杆角度拖动条的创建与回调。

(7)干扰的输入:干扰主要包括有冲击、阶跃和正弦等三种。

25

单级倒立摆的智能控制及GUI动画演示

参考文献

[1] 张静.MATLAB在控制系统中的应用[M].北京:电子工业出版社,2007 [2] 于子松,那文鹏.单级倒立摆建模及其控制方法设计[J].电脑知识与技术2008 [3] 李显宏.MATLAB7.x界面设计与编译技巧[M].北京:电子工业出版社,

2006.12

[4] 董成辉,彭雪峰等.MATLAB2008全程指南[M].北京:电子工业出版社,2009.3 [5] 刘金琨.先进PID控制MATLAB仿真[M].北京:电子工业出版社,2011.3 [6] 易杰.基于状态反馈控制的倒立摆系统分析和控制[J].国外电子元器2008, 8:9~10

[7] 邹伯敏.自动控制理论[M].北京:机械工业出版社,1999.1

[8] 高建树等.最优控制理论在电机控制中的应用[D].2006中国控制与决策学 术年会,2006年

[9] 刘海龙.倒立摆实验系统的设计与研究[D].大连理工大学,2006

[10] 郑丽丹.类人足球机器人动作规划与自适应轨迹跟踪算法研究[D].中国海

洋大学,2009

[11] 杨平等.直线型一级倒立摆状态反馈控制设计及实现[J].《上海电力学院

学报》.2007

[12]卫海滨.C3植物光合作用代谢网络动态的系统生物学分析[D].复旦大学,

2009

[13] 沈鹏.倒立摆系统的控制与研究沈阳科技大学[D].辽宁科技大学,2007 [14] G.J.Silva,A.Datta,S.P.Bhattacharyya. PID controllers for time-delay systems.

2005,Boston, Birkhauser

[15] Astrom K J. Hagglund T. Automatic Tuning of PID Controllers. Research

Triangle Park, North Carolina: Instrument society of America, 1988.

on the

[16] T.H.Kim, I.Maruta, T.Sugie. Robust PID controller tuning based

constrained particle swarm optomization. Automatica, 2008,44(4):1104-1110.

[17] K.S.Tang, K.F.Man,G.Chen, S,Kwong. An Optimal Fuzzy PID Controller. IEEE

Transactions on Industrial Electronics, 2001, 48(4): 757-765

31

单级倒立摆的智能控制及GUI动画演示

[18] 孟巧荣,廉自生.倒立摆控制系统的建模与仿真[J].机械工程与自动化.2004,2 [19] A.O.Dwyer,

Handbook of PI and PID controller truning rules. 2006, 2nd

Edition, Imperial College Press.

32

单级倒立摆的智能控制及GUI动画演示

附录

function varargout = dlb(varargin) % GUI主程序 gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @dlb_OpeningFcn, ... 'gui_OutputFcn', @dlb_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin & isstr(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

%-----------------------打开界面------------------------%

function dlb_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; guidata(hObject, handles); global h1 h2 h3; axes(handles.sys1); axis equal;

axis([0 5 -20 20 0 20]); grid on; view(80,30); reall=15; ll=4+reall;

33

单级倒立摆的智能控制及GUI动画演示

v=[0 0 0;0 5 0;3 5 0;3 0 0;0 0 3;0 5 3;3 5 3;3 0 3]; f=[1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8]; g_v=[1 2 3;1 3 3;2 3 3;2 2 3;1 2 ll;1 3 ll;2 3 ll;2 2 ll]; g_f=[1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8]; h1=patch('Faces',f,'Vertices',v,'FaceColor','b'); h2=patch('Faces',g_f,'Vertices',g_v,'FaceColor','r'); hold on;

[ballx,bally,ballz]=sphere(8); ballo=[1.5 2.5 ll];

h3=surf(ballx*1.1+ballo(1),bally*1.1+ballo(2),ballz*1.1+ballo(3)); colormap(autumn); axes(handles.sys3);

sys3data=imread('model.jpg'); %打开倒立摆示意图 image(sys3data);

set(gca,'Xtick',[],'Ytick',[],'box','on');

function varargout = dlb_OutputFcn(hObject, eventdata, handles) %输出函数 varargout{1} = handles.output;

function normal(hObject, eventdata, handles) %公共调用函数 if ispc

set(hObject,'BackgroundColor','white'); else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')); end

%----------------------------倒立摆模型参数创建---------------------------% function mc_CreateFcn(hObject, eventdata, handles) %M,小车质量 normal(hObject, eventdata, handles);

function mc_Callback(hObject, eventdata, handles)

function l_CreateFcn(hObject, eventdata, handles) %L,摆杆长度 normal(hObject, eventdata, handles);

34

单级倒立摆的智能控制及GUI动画演示

function l_Callback(hObject, eventdata, handles)

function mq_CreateFcn(hObject, eventdata, handles) %m,摆杆质量 normal(hObject, eventdata, handles);

function mq_Callback(hObject, eventdata, handles) %-------------------------LQR参数创建-------------------------% function q1_CreateFcn(hObject, eventdata, handles) %q1 normal(hObject, eventdata, handles);

function q1_Callback(hObject, eventdata, handles) function q2_CreateFcn(hObject, eventdata, handles) %q2 normal(hObject, eventdata, handles);

function q2_Callback(hObject, eventdata, handles) function q3_CreateFcn(hObject, eventdata, handles) %q3 normal(hObject, eventdata, handles);

function q3_Callback(hObject, eventdata, handles) function q4_CreateFcn(hObject, eventdata, handles) %q4 normal(hObject, eventdata, handles);

function q4_Callback(hObject, eventdata, handles) function r_CreateFcn(hObject, eventdata, handles) %R normal(hObject, eventdata, handles);

function r_Callback(hObject, eventdata, handles) %-----------------采用LQR,计算增益K------------------% function lqrok_Callback(hObject, eventdata, handles) global A B C D K;

M_str=get(handles.mc,'string');

M=str2double(M_str); %获取小车质量M m_str=get(handles.mq,'string');

m=str2double(m_str); %获取摆杆质量m L_str=get(handles.l,'string');

L=str2double(L_str); %获取摆杆长度L

35

本文来源:https://www.bwwdw.com/article/7sy7.html

Top