当前位置:首页 > 倒立摆实验报告
2. LQR 控制参数调节及仿真
前面我们已经得到了直线一级倒立摆系统的比较精确的动力学模型,下面我们针对直线型一级倒立摆系统应用 LQR 法设计与调节控制器,控制摆杆保持竖直向上平衡的同时,跟踪小车的位置。 前面我们已经得到了直线一级倒立摆系统的系统状态方程:
应用线性反馈控制器,控制系统结构如下图。图中 R 是施加在小车上的阶跃输入,四个状态量x,x,φ,φ分别代表小车位移、小车速度、摆杆角度和摆杆角速度,输出y = [x,φ]’ 包括小车位置和摆杆角度。设计控制器使得当给系统施加一个阶跃输入时,摆杆会摆动,然后仍然回到垂直位置,小车可以到达新的指定位置。 假设全状态反馈可以实现(四个状态量都可测),找出确定反馈控制规律的向量K 。在 Matlab 中得到最优控制器对应的K 。Lqr 函数允许你选择两个参数——R 和Q,这两个参数用来平衡输入量和状态量的权重。最简单的情况是假设
R = 1,Q =C’ *C 。当然,也可以通过改变Q 矩阵中的非零元素来
调节控制器以得到期望的响应。
其中, Q1,1 代表小车位置的权重,而Q3,3 是摆杆角度的权重,输入的权重R 是 1。
下面来求矩阵K,Matlab 语句为K = lqr(A,B,Q,R) 。下面在MATLAB 中编程计算:
A=[0 1 0 0 ; 0 0 0 0;0 0 0 1; 0 0 29.4 0]; B=[0 1 0 3]'; C=[1 0 0 0; 0 0 1 0]; D=[0 0]';
Q11=1500;Q33=300; Q=[Q11 0 0 0; 0 0 0 0; 0 0 Q33 0; 0 0 0 0]; R=1;
K=lqr(A,B,Q,R);
Ac=[(A-B*K)];Bc=[B];Cc=[C];Dc=[D];
T=0:0.005:5; U=0.2*ones(size(T)); Cn=[1 0 0 0];
Nbar=rscale(A,B,Cn,0,K);Bcn=[Nbar*B]; [Y,X]=lsim(Ac,Bc,Cc,Dc,U,T); plot(T,X(:,1),'-');hold on; plot(T,X(:,2),'-');hold on; plot(T,X(:,3),'.');hold on; plot(T,X(:,4),'-');
legend('cartpls','cartspd','pendang','pendspd')
令Q1,1= 1,Q3,3 =1求得
K [-1 -1.7855 25.422 4.6849]
在 Simulink 中建立直线一级倒立摆的模型如下图所示:
“LQR Controller”为一封装好的模块,在其上单击鼠标右键,选择“Look under
mask”打开LQR Controller 结构如下:
共分享92篇相关文档