第 4 章 直线一级顺摆建模和实验
©Googol 2005 107
第4章 直线一级顺摆建模和实验
直线一级倒立摆的摆杆在没有外力作用下,会保持静止下垂的状态,当受到
外力作用后,摆杆的运动状态和钟摆类似,如果不存在摩擦力的作用,摆杆将持
续摆动,很多情况下,我们并不希望出现这种持续振荡的情况,例如吊车在吊动
物体的时候,我们希望物体能过很快地停止到指定的位置。下面我们对直线一级
顺摆进行建模分析,并对其进行仿真和控制。
4.1 直线一级顺摆的建模与分析
4.1.1 直线一级顺摆的建模
同直线一级倒立摆的物理模型相似,可以采用牛顿力学和拉格朗日方法进行
建模和分析,对于牛顿力学方法,这里不再进行分析和计算,读者可以参考直线
一级倒立摆的物理模型对其进行建模,下面采用拉格朗日方法对直线一级顺摆进
行建模。
图 4-1 直线一级顺摆物理模型图
拉格朗日方程为:
),(),(),(
...
qqVqqTqqL −= (4-1)
其中 L 为拉格朗日算子,q 为系统的广义坐标,T 为系统的动能,V 为系统的
势能。
摆杆
x
φ
F
小 车 导轨
第 4 章 直线一级顺摆建模和实验
©Googol 2005 108
i
i
i
f
q
L
q
L
dt
d =∂
∂−
∂
∂
. (4-2)
其中 i=1,2,3……n, if 为系统在第 i 个广义坐标上的外力,在一级顺摆系统中,
系统的广义坐标有三个广义坐标,分别为 φ,x 。
首先计算系统的动能:
mM TTT +=
其中 mM TT , 分别为小车的动能,摆杆 1 的动能。
小车的动能:
2.
2
1 xMTM =
下面计算摆杆的动能:
'''
mmm TTT += ,其中 '' , mm TT 分别为摆杆的平动动能和转动动能。
设以下变量:
xpend ——摆杆质心横坐标;
ypend ——摆杆质心纵坐标
有:
φ
φ
lCosypend
lSinxxpend
−=
+=
摆杆的动能为:
⎟⎠
⎞⎜⎝
⎛ += 22' ))(())((
2
1
dt
ypendd
dt
xpenddmTm
2.
2
2.
''
6
1
2
1 φφ mlJT pm ==
于是有系统的总动能:
2.
222'''
6
1))(())((
2
1 φml
dt
ypendd
dt
xpenddmTTT mmm +⎟⎠
⎞⎜⎝
⎛ +=+=
系统的势能为:
φmglCosypendgmVV m −=××==
由于系统在φ广义坐标下只有摩擦力作用,所以有:
第 4 章 直线一级顺摆建模和实验
©Googol 2005 109
.
. xb
LL
dt
d =∂
∂−
∂
∂
φφ
对于直线一级倒立摆系统,系统状态变量为:
⎭⎬
⎫
⎩⎨
⎧ .. ,,, φφ xx
为求解状态方程:
⎪⎩
⎪⎨
⎧
=
+=
CXY
BuAXX '
.
需要求解
..φ,
因此设
),,,,(
......
xxxf φφφ =
将在平衡位置附近进行泰勒级数展开,并线性化,可以得到:
..
15
.
14
.
131211
..
xkkxkkxk ++++= φφφ
其中
0,0,0,0,0
11 ....| =====∂
∂=
xxxx
fk
φφ
0,0,0,0,0
12 ....| =====∂
∂=
xxx
fk
φφφ
0,0,0,0,0.
13 ....| =====∂
∂=
xxxx
fk
φφ
0,0,0,0,0.
14 ....| =====∂
∂=
xxx
fk
φφφ
0,0,0,0,0..
15 ....| =====∂
∂=
xxxx
fk
φφ
在 Mathematica 中计算以上各式。
(计算文件请参见“\GLIP2001\建模文件\MathematicaFile”中的“L1DP.nb”文
件。)
第 4 章 直线一级顺摆建模和实验
©Googol 2005 110
PRO 4-1 直线一级顺摆建模程序
xpend= x@tD+l∗Sin@φ@tDD;
ypend= −l∗Cos@φ@tDD;
tpend= 1ê2∗m∗HH∂t xpendL^2+ H∂t ypendL^2L +1ê6∗m∗l^2∗ Hφ'@tDL^2;
Simplify@tpendD;
v= m∗g∗ypend;
lang= tpend−v;
Simplify@langD;
ldad= ∂φ'@tD lang;
Simplify@ldadD;
fa= ∂t ldad− ∂φ@tD lang;
Simplify@faD;
Solve@8fam 0< , 8φ''@tD
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
实验结果,完成实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
。
z 在进行 MATLAB 实时控制实验时,请用户不要过大的改变控制
器参数,过大的参数会使系统有失控的危险,请在保障实验安全
的情况下进行实验。
第 4 章 直线一级顺摆建模和实验
©Googol 2005 122
4.6 直线一级顺摆的 LQR 控制仿真与实验
前面所述的 PID 控制只能控制摆杆的角度,并不能控制小车的位置,为了
在控制摆杆角度的同时,同时也控制小车的位置,这需要一个单输入(小车加速
度),多输出(小车位置和摆杆角度)的控制器,因为我们已经得到系统的状态
方程,可以采用状态空间极点配置和线性二次最优控制等控制方法对其进行控
制。下面我们以 LQR 控制方法对其进行控制,用户可以对其进行其它算法的设
计和实验。
LQR 控制算法的原理请参照 3.1.7.1 线性二次最优控制 LQR 基本原理及分析
相关内容或相关现代控制理论教材。
4.6.1 直线一级顺摆的 LQR 控制分析与仿真
前面我们已经得到以小车加速度作为输入的系统状态方程:
'
3
0
1
0
04.2900
1000
0000
0010
u
x
x
x
x
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
−
+
⎥⎥
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢⎢
⎢
⎣
⎡
⎥⎥
⎥⎥
⎦
⎤
⎢⎢
⎢⎢
⎣
⎡
−
=
⎥⎥
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢⎢
⎢
⎣
⎡
φ
φ
φ
φ
&
&
&&
&
&&
&
'
0
0
0100
0001
u
x
x
x
y ⎥⎦
⎤⎢⎣
⎡+
⎥⎥
⎥⎥
⎥
⎦
⎤
⎢⎢
⎢⎢
⎢
⎣
⎡
⎥⎦
⎤⎢⎣
⎡=⎥⎦
⎤⎢⎣
⎡=
φ
φφ
&
&
四个状态量
⋅φφ,,, xx & 分别代
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
小车位移、小车速度、摆杆角度和摆杆角速度,
输出 ],[ ′= φxy 包括小车位置和摆杆角度。
下面我们应用 LQR 控制算法对其进行计算:
设最佳最佳控制向量的矩阵 K:
u(t)=-K*x(t)
K=lqr(A,B,Q,R)
在 MATLAB 中建立如下的 m 文件:
其中选取小车位置权重为 1000,摆杆角度权重为 500,一般选取 R=1,仿
真时间为 5 秒,仿真步长为 0.005 秒。
直线一级顺摆的 LQR 计算仿真文件如下:
(进入 MATLAB Simulink 实时控制工具箱“Googol Education Products”打
开 “ Inverted Pendulum\Linear Inverted Pendulum\Linear 1-Stage Pendulum
Experiment\ LQR Control Experiments”中的“LQR Control M Files”)
第 4 章 直线一级顺摆建模和实验
©Googol 2005 123
PRO 4-2 直线一级顺摆 LQR 控制 MATLAB 计算程序
运行程序,得到如下所示的结果:
得到反馈控制矩阵:
K =
31.6228 14.4046 -22.3514 0.1188
可以看出,在给定小车位置干扰后,系统在 3 秒内可以达到新的平衡,小车
平衡到指定的位置,摆杆保持静止下垂的状态。
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 ]';
Q11=1000; Q33=500;
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,Bcn,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('CartPos','CartSpd','PendAng','PendSpd')
第 4 章 直线一级顺摆建模和实验
©Googol 2005 124
图 4-13 直线一级顺摆仿真结果图(给小车施加干扰)
同直线一级倒立摆相似,在 MATLAB Simulink 中建立直线一级顺摆的模型:
(进入 MATLAB Simulink 实时控制工具箱“Googol Education Products”打
开 “ Inverted Pendulum\Linear Inverted Pendulum\Linear 1-Stage Pendulum
Experiment\ LQR Control Experiments”中的“LQR Control Simulink”)
图 4-14 直线一级顺摆 Simulink 模型
双击“LP1D”模块打开直线一级顺摆的模型设置窗口如下:
第 4 章 直线一级顺摆建模和实验
©Googol 2005 125
把矩阵 A,B,C,D 的值设置为实际系统模型的值。
双击“LQR Controller”打开 LQR 控制参数的设置窗口:
把上面计算得到的反馈控制参数 K 依次输入到窗口中。
双击“Disturbance”模块设置干扰信号,设干扰信号为给摆杆一个幅值为 0.1
弧度的干扰信号,其原理如下图所示,给 f(s)施加一个干扰信号,控制系统在存
在干扰的情况下保持新的平衡。
第 4 章 直线一级顺摆建模和实验
©Googol 2005 126
设置好各项参数后,点击“ ”运行仿真,得到如下的仿真结果:
图 4-15 直线一级顺摆 LQR 控制仿真结果
用户可以修改权重矩阵 Q 的值,得到不同的反馈控制参数 K,再输入到仿
真模型中进行仿真,观察仿真结果的变化。
4.6.2 直线一级顺摆的 LQR 控制控制实验
实时控制实验在 MATALB Simulink 环境下进行,用户在实验前请仔细阅读
使用手册。
z 在进行 MATLAB 实时控制实验时,请用户检查倒立摆系统机械
结构和电气接线有无危险因素存在,在保障实验安全的情况下进
行实验。
操作步骤:
第 4 章 直线一级顺摆建模和实验
©Googol 2005 127
1) 打开直线一级顺摆 LQR 实时控制模块:
(进入 MATLAB Simulink 实时控制工具箱“Googol Education Products”打开
“ Inverted Pendulum\Linear Inverted Pendulum\Linear 1-Stage Pendulum
Experiment\ LQR Control Experiments”中的“LQR Control Demo”)
图 4-16 直线一级顺摆 LQR 实时控制程序
其中“LQR Controller”为 LQR 控制器模块,“Real Control”为实时控制模
块,双击“LQR Controller”模块打开 LQR 控制器参数设置窗口如下:
在“LQR Controller”模块上点击鼠标右键,选择“Look under mask”,打开
模型如下:
双击“Real Control”模块,打开实时控制模块如下图:
第 4 章 直线一级顺摆建模和实验
©Googol 2005 128
其中“Pendulum”模块为倒立摆系统输入输出模块,输入为小车的速度“Vel”
和“Acc”,输出为小车的位置“Pos”和摆杆的角度“Angle”。
双击“Pendulum”模块打开其内部结构:
其中“Set Cart’s Acc and Vel”模块的作用是设置小车运动的速度和加速度,
“Get Cart’s Position”模块的作用是读取小车当前的实际位置,“Get Pend’s Angle”
的作用是读取摆杆当前的实际角度。更为详细的说明请参见直线倒立摆使用手
册。
2) 点击 编译程序,编译成功后点击“ ”连接,再点击“ ”运行程序,程
序运行后,小车应该停在中间位置,摆杆保持静止下垂。
3) 实验运行结果如下图所示:
第 4 章 直线一级顺摆建模和实验
©Googol 2005 129
图 4-17 直线一级顺摆 LQR 控制结果
其中图片上半部分为小车的位置曲线,下半部分为摆杆角度的变化曲线,从
图中可以看出,在给定外界干扰后,小车可以在 2 秒内回到平衡位置。达到了较
好的控制效果。
4) 改变 Q 矩阵的值 3311 Q和Q ,再把仿真得到的 LQR 控制参数输入实时控制程
序,运行实时控制程序,观察控制效果的变化。
5) 记录实验结果,分析实验数据,完成实验报告。
z 在进行 MATLAB 实时控制实验时,请用户不要过大的改变控制
器参数,过大的参数会使系统有失控的危险,请在保障实验安全
的情况下进行实验。