Gc=ss(Ac,B,C,0); t=0:0.1:10; x0=[30 10 0 0]; [y,t]=initial(Gc,x0,t); plot(t,y(:,1),t,y(:,2)),grid xlabel('时间/秒');
ylabel('旋臂和摆杆的角度/度')
得出图如下:
系统大约在6s后稳定
假设闭环极点为[-3.3+0.8i -3.3-0.8i -6 -12],得到仿真曲线下图所示,从图中可以看出,系统能够快速趋于不稳定的平衡状态。
由图可见,系统约在3s后进入稳定状态
所以闭环极点的选择对系统稳定性是有影响的,同时极点配置法是可行的。
4.2 LQR算法仿真实验
LQR算法中,Q、R这两个参数分别体现控制过程中对动态跟踪误差和消耗总能量的要求。在倒立摆系统的控制过程中,我们控制的‘目标先是要有良好的动态性能,对能量的消耗是次要要求。LQR问题中,确定加权阵Q、R是一项重要的工作,这两个参数在使性能指标函数最小的过程中使输入和系统的状态达到平衡。通常情况下,令R=1,则参数调节的重心集中在Q阵的参数调节。Q阵通常是一对角常数矩阵,对角线上的元素qi仍分别表示对应误差分量的重视程度:越重视的误差分量,希望它越小,与之相应的加权系数qi就应取得越大。最简单的情况是先假定:R=1,Q=CTC,其中,Q11表示旋臂角度θ1的敏感程度,Q22表示摆杆角度θ2的敏感程度。 先选取:Q=CTC ,R=1
MATLAB中,利用lqr函数可以方便的求出最优反馈增益矩阵K: >> Q=diag([10 1 0 0]); R=1;
sys=ss(A,B,C,0); [K,p,e]=lqr(sys,Q,R) K =
-3.1623 52.3849 -3.0019 6.0669 p =
7.2470 -21.7108 2.3737 -2.6919 -21.7108 176.5050 -12.7108 20.8768
2.3737 -12.7108 1.1111 -1.5374
-2.6919 20.8768 -1.5374 2.4761 e =
-9.7409
-7.8941 -2.7936 + 1.9578i -2.7936 - 1.9578i
取系统初始状态为(30,10,0,0),其中,P是黎卡提(Riccati)方程()的解,e是闭环系统的特征值。 求取系统的零输入响应:
程序: clear all; clc
A=[0,0,1,0;0,0,0,1;0,15.2476,-3.4727,-0.2325;0,74.9826,-3.8965,-1.1432];
B=[0;0;4.8895;5.4862];
C=[1,0,0,0;0,1,0,0;0,0,1,0;0,0,0,1]; Q=[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1]; R=1;
sys=ss(A,B,C,0); [K,P,e]=lqr(sys,Q,R) Ac=A-B*K; Gc=ss(Ac,B,C,0); t=0:0.1:10;%仿真时间 x0=[30 10 0 0];
[y,t]=initial(Gc,x0,t);%运行仿真 plot(t,y(:,1),t,y(:,2)),grid xlabel(' 时间/s');
ylabel(' 旋臂和摆杆角度/度'); 得出: K =
-1.0000 48.5335 -2.4003 5.6776 P =
1.6901 -6.4176 0.6760 -0.7847 -6.4176 155.1912 -9.9636 17.7264
0.6760 -9.9636 0.8298 -1.1771 -0.7847 17.7264 -1.1771 2.0840 e =
-12.7804 -0.8288 -4.5592 -5.8598
Q=CTC,R=1时的图
从图中可看出大约6s后,系统才进入稳定状态 所以,改变Q、R矩阵的值,经多次实验,这里取: Q=diag([10 1 0 0]); R=1;