1、理解并掌握线性状态反馈控制的原理和方法;
2、理解并掌握LQR控制器设计方法;
3、练习控制性能比较与评估的方法。
实验设备
实验软件
倒立摆系统的各量含义与关系如下表和下图。
根据牛顿定律建立系统垂直和水平方向的动力学方程,计及 u = F
,可得到
如下所示
该状态方程输入是加速度,输出是小车位置和摆杆角度。而小车的位置和摆杆角度以及它们的导数均可以通过传感器测量,所以在系统可控制的情况下,可以利用状态反馈综合控制器改善性能。
倒立摆系统的控制结构框图如下
“Pendulum”模块内部包含三种模块,每种模块的具体功能是通过S-Function实现的,这里不做介绍。其中“Set Car’s Vcc and Vel”模块的作用是设置小车运动的速度和加速度,“Get Car’s Position”模块的作用是读取小车当前的实际位置,“Get Pend’s Angle”的作用是角度编码器读取摆杆当前摆起的实际角度,该角度顺时针为“+”,逆时针为“-” (以竖直向下的状态为起始状态,见图1)。这里需要注意的是,由于编码器所读脉冲的正负号与实际需要的数符号相瓣,所以编码器输出经过一个负的比例增益后转化为输出角度
另外,在Simulink中搭建系统模型时,需要将Inverted_Pendulum_RealTime_lib中的GT400-SV Initialization模块放到编辑的模型中。
动手实验与分析:
基于式(6)所示的倒立摆模型(控制摆角和位置),根据原系统的特点设计LQR最优控制器,并分析参数 和 阵的选取对系统的影响。实物实验前先进行理论分析计算(包括能控性分析和稳定性分析,指标转化计算,可以编制相应的程序计算,也可以手算),并在MATLAB/Simulink中进行离线数值计算分析,调整相关参数,合适后在倒立摆平台上做在线实验,比较仿真结果与实验结果。
系统的MATLAB/Simulink仿真图如下
clear;
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 ]';
Gs = ss(A, B, C, D);
Qc = ctrb(A, B); % 可控矩阵
Qo = obsv(A, C); % 可观测矩阵
rankQc = rank(Qc); % 求可控矩阵的秩
rankQo = rank(Qo); % 求可控矩阵的秩
if rankQc == 4
disp('系统可控');
else
disp('系统不可控');
end
if rankQo == 4
disp('系统可观');
else
disp('系统不可观');
end
判断系统的能控与能观性运行如下
>> shiYan3
系统可控
系统可观
求系统的极点的代码如下
P = poly(A); % 特征多项式
rootP = roots(P); % 极点
disp(rootP);
求系统的极点运行结果如下
>> shiYan3
系统可控
系统可观
0
0
5.4222
-5.4222
ζ=0.8、ζ=0.707、ζ=0.316
设计状态反馈阵时,要使系统的极点设计成具有两个主导极点,两个非主导极点,这样就可以用二阶系统的分析方法进行参数的确定。我们设置系统的最大超调量小于等于8%,调节时间为小于等于5 S。运用超调量的计算公式可以计算出ε= 0.63;ts=5s,可以求得Wn≥0.95。用极点公式为P1,2=-εw + iw√1-εz,得到两个配置的共轭极点为: -0.6士0.74i。选取非主导极点距虚轴的距离为主导极点距虚轴的距离的5倍以上:所以可以两个非主导极点为:-10。
进行极点配置MATLAB程序代码如下:
p = [-0.6 + 0.74j -0.6 - 0.74j -10 -10]; % 极点配置
K = acker(A, B, p);
disp(K);
进行极点配置运行如下
-3.0871 -4.6990 52.4649 8.6330
MATLAB仿真如下
线性二次型最优控制LQR求出配置极点代码如下所示
% 线性二次型最优控制LQR求出配置极点
Q = [1000 0 0 0; 0 0 0 0; 0 0 1000 0; 0 0 0 0];
R = 1;
LQR_K = lqr(A, B, Q, R);
disp(LQR_K);
线性二次型最优控制LQR求出配置极点运行如下
-31.6228 -21.7963 83.4140 14.2355
线性二次型最优控制LQR求出配置极点MATLAB仿真如下
在实验室进行实物倒立摆的控制,设计的控制模型与系统的运行结果如下
控制系统模型
系统正常运行的效果图
系统在扰动下的运行结果
一阶倒立摆的LQR控制器设计的实验总结如下几点所示