倒立摆课程设计报告
由上式可以看出,Qii是对xi的平方的加权,Qii的相对增加就意味着对xi的要求相对其它状态变量严格,在性能指标中的比重大,xi的偏差状态相对减小。r是对控制量u的平方加权,当r相对较大时,意味着控制费用增加,使得控制能量较小,反馈减弱,而r取值较小时,系统控制费用减小,反馈增加,系统动态响应迅速。
考虑到一阶倒立摆系统在运行过程中,主要的被控量为系统的输出量x和?,因此在选取加权对角阵Q的各元素值时,由于Q11代表小车位置的权重,而Q33是摆杆角度的权重,所以只选取Q11、Q33,而Q22?Q44?0。 选取Q和R时需要注意的几个方面:
(1)由于我们采用的系统模型是线性化的结果,为使系统个状态量能够在线性范围工作,要求各状态量不应过大。
(2)闭环系统最好能有一对共轭复数极点,这样有利于克服系统的非线性摩擦,但系统主导极点的模不应太大以免系统频带过宽,使得系统对噪声太敏感,以致系统不能正常工作。
(3)加权矩阵R的减小,会导致大的控制能量,应注意控制U的大小,不要超过系统执行机构的能力,使得放大器处于饱和状态。
?、控制系统如下图所示,图中R是施加在小车上的阶跃输入,四个状态量x、x??和??分别代表小车位移、小车速度、摆杆位置和摆杆角速度,输出y??x,??包
括小车位置和摆杆角度。我们要设计一个控制器,使得当给系统施加一个阶跃输入时,摆杆会摆动,然后仍然回到垂直位置,小车到达新的命令位置。
26
倒立摆课程设计报告
2)系统仿真 M = 0.5; m = 0.2; b = 0.1; I = 0.006; g = 9.8; l = 0.3; p = 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
文件中用到求取输入输出匹配系数函数rscale,它不是Matlab 工具,因此必须把它拷贝到rscale.m文件中, 并把该文件和源文件一起拷贝到MATLAB工作区。rscale.m文件如下: % 求取输入输出匹配系数
27
倒立摆课程设计报告
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); Nu = N(1+s);
Nbar = Nu + K*Nx;
用函数rscale来计算Nbar,运行程序,得到: K =
-70.7107 -40.6531 125.7702 24.3770
0.250.20.150.10.050-0.05-0.1-0.15 0Cart PositionPendulum Angle 0.511.522.533.544.55
图4-1,系统仿真图
即Nbar?rscale(A,B,Cn,0,K)??70.7107,可以看出,实际上Nbar和K向量中与小车位置x对应的那一项相等。
此时系统的响应曲线如下,小车位置跟踪输入信号;并且,摆杆超调足够小,稳态误差满足要求,上升时间和稳定时间也符合设计指标。
28
倒立摆课程设计报告
五、参考文献
倒立摆课程设计指导书 曲延滨 2011年3月 哈尔滨工业大学出版社
29