1、倒立摆控制系统的设计与仿真分析研究班级 姓名 学号 (完成后删除所有蓝色提示文字,电子版在 12 月 26 日前提交邮箱)1. 问题的提出倒立摆控制系统是一个复杂的、不稳定的、非线性系统,是进行控制理论教学及开展各种控制实验的理想实验平台。对倒立摆系统的研究能有效的反映控制中的许多典型问题:如非线性问题、鲁棒性问题、镇定问题、随动问题以及跟踪问题等。通过对倒立摆的控制,用来检验新的控制方法是否有较强的处理非线性和不稳定性问题的能力。同时,其控制方法在军工、航天、机器人和一般工业过程领域中都有着广泛的用途,如机器人行走过程中的平衡控制、火箭发射中的垂直度控制和卫星飞行中的姿态控制等。考虑倒立摆系
2、统,原理图如图 1 所示。u mg x coslM 图 1 倒立摆原理假设 M = 2 千克,m = 0.5 千克,l = 1 米,控制信号为牵引力 u, 忽略地面摩擦力,摆轴旋转的摩擦力,本文对该系统进行建模、控制系统设计以及控制性能进行仿真研究,对熟悉使用现代控制工程的设计方法以及 MATLAB 的应用具有重要的意义。2. 系统建模对该倒立摆系统,若定义状态变量为 xxx4321,输出变量为 321,yy先利用力学知识把倒立摆的模型建立起来。()MmxlFlgs, , TxxxABuyCD状 态 量 输 出 量 为 Y=所 以 系 统 的 状 态 方 程 为010()10,010gMml
3、MlABCD把 M = 2kg,m = 0.5kg,l = 1m,代入 A、B、C,得1 12 23 34 412340.5.50. .10xxuxy3. 控制系统的设计与仿真3.1调节器问题的倒立摆设计与性能研究对该倒立摆系统,若要求闭环极点为 12344,4,15,jj采用状态反馈方案 ,试确定状态反馈增益矩阵 K。uKX利用已被求出的状态反馈增益矩阵 K,用计算机仿真检验该系统的性能。试写出一个 MATLAB 程序,以求出该系统对任意初始条件的响应。对一组初始条件米/秒1)0(,)(,0)(,)0( 4321 xx试求 x1(t),x 2(t),x 3(t)和 x4(t)对 t 的响应曲
4、线。验证该倒立摆系统的可控性已知系统的可控矩阵为 ,计算 Rank(M) ,若 Rank(M)=4,则21,)nMbAb可以进行极点配置。,在 Matlab 中得到23(,)BA命令行输入 M=B,A*B,A2*B,A3*B得到 0.506.125.M 容易得到,rank(M)=4,故该系统可控,下面进行极点配置。状态反馈后的系统可表示为 ()()XABuKXABu下面在 Matlab 中运算进行配置K= k1, k2, k3 k4;eigfun=det(lamda*eye(4)-(A-B*K);collect(eigfun)得到Eigfun=lamda4 + (k4/2 - k2/2)*la
5、mda3 + (k3/2 - k1/2 - 49/4)*lamda2 - (49*k4*lamda)/10 - (49*k3)/10根据 p= -4+ 4i ,-4 4i,-15, -15,得到目标特征多项式x4 + 38*x3 + 497*x2 + 2760*x + 7200=0在 matlab 中应用solve(k4/2 - k2/2=38,k3/2 - k1/2 - 49/4=497,-4.9*k4=2760, - 4.9*k3=7200)得到K=-2487 -639 -1469 -563下面验证该系统的稳定性。经过状态反馈后,系统的极点被配置为 p= -4+ 4i ,-4 4i,-15
6、, -15,该系统是稳定的。010237352814Asys_ss=ss(A,B,C,D)step(sys_ss),得到-8-6-4-2024x 10-4To:Out(1)0 0.5 1 1.5 2 2.5-1-0.500.51x 10-3To:Out(2)Step ResponseTime (sec)Amplitude图 3.1.1:step 响应从阶跃响应中可以看出,该系统是很稳定的。如果对小车施加一个 1N 的阶跃力,虽然系统有较大震荡,但是响应时间小于 1s,即可恢复稳定(平衡)状态。之后小车偏离原来的位置,稳定在-0.7 左右的位置,但摆仍然是竖着的( ) ,这是符合0常理的。bod
7、e(sys_ss),得到 bode 图-150-100-50To:Out(1)0180360To:Out(1)-150-100-50To:Out(2)10-1 100 101 102 103-1800180To:Out(2)Bode DiagramFrequency (rad/sec)Magnitude (dB) ; Phase (deg)图 3.1.2 bode 图从 bode 图中可以看出,该系统的带宽很窄,对输入有很大的衰减。从上图可以推断出,系统在 8rad/s 左右的性能比较好。下面详细分析系统对不同初始条件下的响应为了编程的简便性,不考虑系统对任意输入信号的响应,只考虑系统对 st
8、ep 信号的响应。那么 1,0tu其 它设初始状态为 234()1_0()x下面开始编程,编程中用到了简单的离散的数值分析的编程Matlab 源程序如下%compute the solutions of the X vector using numerical anslysis theory.%Use the formula below .%X(t+deltaT)=X(t)+A.X(t)+B.u*deltaT .%in this program dt is fixed to 0.005.syms x1_0 x2_0 x3_0 x4_0A=0 1 0 0;-1231 -320 -735 -282
9、;.0 0 0 1;1241 320 735 282% the upper is A matrix of the corrected systemB=0;-0.5;0;0.5;C=1 0 0 0;0 0 1 0;D=0;u=1;Xinitial=x1_0 ;x2_0 ;x3_0 ;x4_0;Xinitial=0 0 0 1;% set the initial states of X to 0 0 0 1 according to the problem givened dt=0.005;Result=zeros(4,1010);% set memory space to store the X
10、 vector value for display the states curve against the time t for i=1:1000m1=A*Xinitial;m2=B*u;m3=(m1+m2)*dt;X_next=Xinitial+m3;Result(:,i)=X_next;% store the X states in every circle.Xinitial=X_next; %renew the X states vectorend值得说明的是 ,结果被存贮在 的1_023_0401xx410ReXsult矩阵当中。1Re(,:)23,:4()xslutlts如果想画出
11、 的波形,可以通过以下的 matlab 源程序(),txt t=0:0.005:5; plot(t,Result(1,1:1001);xlabel(time(s);ylabel(Theta(rad); plot(t,Result(2,1:1001); xlabel(time(s);ylabel(d(Theta)/dt); plot(t,Result(3,1:1001); xlabel(time(s);ylabel(x) ; plot(t,Result(4,1:1001); xlabel(time(s);ylabel(dx/dt);0 1 2 3 4 5-0.6-0.5-0.4-0.3-0.2-
12、0.100.10.2time(s)Theta(rad)图 3.1.3:Theta(t)的波形0 1 2 3 4 5-6-5-4-3-2-10123time(s)d(Theta)/dt图 3.1.4: 的波形()t0 1 2 3 4 5-0.100.10.20.30.40.50.60.70.8time(s)x图 3.1.5:x(t)的波形0 1 2 3 4 5-3-2-101234567time(s)dx/dt图 3.1.6: 的波形()xt结论:经过校正后的倒立摆性能是稳定的。在 ,1_023_0401xx的初始状态下,系统的 4 个参数 都处于稳定,且都是 0,不存在稳态误差。但(),(),
13、tt是存在过冲(超调) ,但可以接受。若调整其闭环极点为:情况 1: 20,3.1,3. 432 jj ;情况 2: 101试确定在这两种情况下的状态反馈增益矩阵 K。再求设计出的系统对初始条件)(,)(,0)(,.0)( x弧 度仿真该闭环系统,并比较以上几种系统响应的动态性能。由于“情况 1”和“情况 2”和上面的过程重复,这里就不详细描述运算步骤了。情况 1Kg =-1258 -320 -220 -234值得一提的是,上面 Kg 的计算涉及到了近似,不过,这不会显著改变原设定的参数。下面对情况 1 进行仿真,在 的情况下0.1,0,x编程过程在此省略,详细源程序见附录图 3.1.7:情况
14、 1,Theta(t)的波形图 3.1.8:情况 1,的波形plot(t,Result(3,1:1001); xlabel(time(s);ylabel(x)图 3.1.9:情况 1,图 3.1.10:情况 1情况 2Ans2= solve(k4/2 - k2/2=24,k3/2 - k1/2 - 49/4=184,-4.9*k4=480, - 4.9*k3=400)Kg=-474 146 81.6 98值得一提的是,上面 Kg 的计算涉及到了近似,不过,这不会显著改变原设定的参数。下面对情况 2 进行仿真,在 的情况下0.1,0,x同样,编程过程在此省略,详细源程序见附录plot(t,Res
15、ult(1,1:1001),linewidth,2);xlabel(time(s);ylabel(Theta(rad)图 3.1.11:情况 2,plot(t,Result(2,1:1001),linewidth,2);xlabel(time(s);ylabel(d(Theta)/dt)图 3.1.12:情况 2plot(t,Result(3,1:1001),linewidth,2); xlabel(time(s);ylabel(x(m),得到图 3.1.13:情况 2plot(t,Result(4,1:1001),linewidth,2); xlabel(time(s);ylabel(dx/
16、dt(m/s2)0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5-0.500.511.522.53time(s)dx/dt(m/s2)图 3.1.14(使用了“EditCopy figure 命令” ):情况 2,分析:总体看来,情况 2 的表现没有情况 1 好。比如只看 情况 2 的最大过冲量是情况 1 的最大过冲量的 10 倍。但整体看来,情况 1 和情况 2 的表现都不错。达到稳定的时间都小于 0.5s,系统 1 比系统 2稍微快一些。系统 1 比系统 2 总体的性能要好。这从系统的极点也可以看出来。情况 1 20,3.,3. 432 jj ;情况 2: 1013.2伺服问
17、题的倒立摆设计与性能研究考虑前述的倒立摆系统。该倒立摆系统希望维持稳定的同时小车要按一定的规律行走。设计一个状态反馈增益矩阵 K,其中已知 4321,k和积分增益常数 Ik。假设该系统的期望闭环极点为 。试利用 MATLAB 确定增益矩阵 K 和积分增益常数12345,0。再求当单位阶跃输入作用于小车位置时的阶跃响应曲线,并讨论其动态特性。Ik(设计控制系统,仿真系统性能,讨论阶跃响应的性能指标)4. 倒立摆控制系统的优化设计与性能研究考虑设计以控制系统, 当角 和或角速度 存在干扰时,能保证摆位置垂直,并要求该控制系统在每一个控制过程结束时,电动车返回到参考位置(小车没有参考输入信号) 。该
18、系统的状态空间方程为 式中XABu采用状态反馈方案 uK试用 MATLAB 确定状态反馈增益矩阵 K=k1, k2, k3, k4, 时的性能指标*0()JQRdt达到极小。式中, 1801然后求系统在下列初始条件下的响应: 1234()0.()x画出 的响应曲线。;txt原系统的状态方程为1 12 23 34 4123400.5.5. .10xxuxy由于采用状态反馈, ,得到uKX()()XABK下面求 K使用 matlab 中的 lqr 函数可以直接求出 K% using lqr methodQ=diag(180 1 1 1)R=1;K,P,r=lqr(A,B,Q,R)求出K=-67.5
19、131 -19.4993 -1.0000 -3.1270下面开始进行系统仿真完整的源程序见附录,下面直接给出仿真结果。0 5 10 15-0.04-0.0200.020.040.060.080.1time(s)Theta(rad(图 4.1.1 使用 LQR0 5 10 15-0.25-0.2-0.15-0.1-0.0500.050.1time(s)d(Theta)/dt(rad/s)图 4.1.2: 使用 LQR0 5 10 15-0.100.10.20.30.40.50.6time(s)x(m)图 4.1.3 使用 LQR0 5 10 15-0.2-0.100.10.20.30.40.5t
20、ime(s)dx/dt (m/s)图 4.1.4 使用 LQR结论可见使用 LQR,可以实现最优控制,4 个状态变量都变成了 0。不过可以明显看出,系统的响应时间太慢,与极点配置的方法相比,采用 LQR 的调整时间(稳定时间)是之前的大约 5 倍。这也是采用 LQR 的缺点。5. 研究结论与体会学了了现代控制工程这一课程,我深深的感觉到了,Modern control 是基于数学微分方程的,而经典的控制理论是基于 laplace 变换的,最终的目的就是确定合适的控制器的参数、执行系统的参数。其实都可以看成是数学问题。现代控制工程是基于 的,这样可以比较方便的处理 MIMO 系统,这样就是经XA
21、BUYCD典控制理论相形见绌。其实现代控制论中的极点配置和状态反馈还是基于经典控制理论基础的,是经典控制论的拓展。通过老师的教导和我的学习,我学会了 full-state feedback control、full-order state observer、optimal control 、roots placement method 等方法。同时我也学会了利用 Matlab 进行数学运算已经“control system toolbox” 、 “simulink”的使用。这样对研究生期间的学习是非常有利的。通过对倒立摆学习,我意识到我对建模方面的不足,接下来,我想加强建模方面的学习,这样才不
22、会对实际问题无从下手。同时我想通过实际做实验的方式来验证理论的正确性和从实践中找到不足和发现问题。希望老师能过安排一次实验,我个人建议采用“倒立摆”的实际模型,让同学们尝试不同的方法去实现倒立摆的不倒等控制。这样就让这门课更加完美了。6. 参考文献(按以下格式,检索查阅相关文献,不少于 10 篇)1. Katsuhiko Ogata, Modern Control EngineeringM. 3rd Edition. Englewood Cliffs, N. Prentice-Hall, 1998.2. 干开峰 王俊 王庆龙, 基于倒立摆系统的实验设计J. 合肥学院学报:自然科学版, 2010, 2: 85-893.