登月艇软着陆过程 Matlab 仿真
学号:
姓名:
指导老师
日期:2014 年 5 月 19 日
摘要:本文描述了登月艇简化模型,并对其登月过程做了简单介绍。因为这是控制登月艇软
着陆和燃料最省问题,即是一个最优控制问题。所以对于该控制问题本文用极小值原理对登
月艇控制推力进行求解。进而,依据登月艇模型和控制推力建立仿真模型。
关键词:最优控制 登月艇 极小值原理
1. 引言
最优控制问题可分为两类:静态最优化控制和动态最优化控制。最优控制就是要确定一组决
策变量以使得某目标函数取极值。由于目标函数所依赖的决策变量不随时间变化,这类最优
控制问题称为静态最优化控制或参数最优化;如果目标函数所依赖的决策变量是时间的函
数,则称为动态最优化控制。所以,静态最优化控制是不考虑时间因素的最优控制,而动态
最优控制是考虑时间因素的最优控制。它们的解决方法也不同。解静态最优化控制的方法有
线性规划、非线性规划、爬山法和优选法等。解动态最优化控制的方法有变分法、极小值原
理和动态规划等方法。本文介绍动态最优控制问题求解法——极小值原理。
2. 极小值原理
极小值原理也叫极大值原理,没有区别是一个意思。当指标泛函中被积分函数取
(
),
tuXL
,
时,指标 J 取极大值;当被积分函数取
),
tuXL
(
,
时,指标 J 取极小值。二者
是等价的。极大值原理是由庞特里亚金等人提出的。它是从变分法引申而来的,功能更强,
应用范围更广,能解决变分法不能解决的问题。
当控制作用 )(tu 不受限制或限制在一个开区间时,可以用古典变分法来求解最优控制
问题。但是,当 )(tu 限制在闭区间上,或性能指标含绝对值形式时,变分法就不能胜任了。
下面举个例子说明。
假设一阶受控系统:
dx
dt
2u
允许控制域为
1u ,初始状态
x
1)0(
,终端状态
(
ftx
)
3
,求解控制系统从初始状态到
终端状态并使指标
J
ft
0
dt
ft
最小的最优控制。
如用变分法求解时,构造 Hamilton 函数:
2u
H
正则方程:
x
2uH
H
x
0
边界条件:
x
,1)0(
(
tx
)
,3
(
tH
)
f
f
t
f
1
控制方程:
H
2
u
u
0
由伴随方程可求得伴随变量
c , c 为常数。代入控制方程,则得
2
cu
,0
u
*
0
显然,这样求得 *u 不是最优控制。因为 0x ,状态不会转移。从直观上很容易看出,在允
许控制范围内,当取 1u 时,系统运动速度最大,即
x
u
2
1
应用初始条件可得:
t
f
(
tx
f
21)
这就是在上述控制约束下,使系统
x
1)0(
转移到
(
ftx
)
3
的最短时间。最优控制为
* u
1
。为什么用变分法求不出来呢?问题出在实际最优控制落在区间约束
1u 边界上。
在边界上,它不再满足
H
u
0
这个极值条件方程。在由些问题中,允许控制的集合甚至只
是控制空间中一些离散的点,对这样的问题,古典变分法对函数
(
),
tuXf
,
,
(
),
tuXL
,
的
可微性要求也很严格,特别是要求
L
u
存在,在实际工程中往往不满足这个条件。例如在要
求燃料最省的最优控制系统。性能指标泛函中的 L 函数要取控制u 的绝对值,此时
存在,变分法就不能求解。
L
u
就不
极小值原理放宽了对函数
(
),
tuXf
,
和
(
),
tuXL
,
的要求。具体的假设前提条件是:
1) 诸如函数
),
(
tuXf
,
、
),
(
tuXL
,
、
f
X
、
f
t
、
L
X
、
L
t
、
(
tX
(
),
t
f
)
f
、
( ftX
)
、
ft
存在并且连续。
2) 控制u 为有界逐段连续函数。
3) 当终端受限时,其约束
(
tXg
i
[
f
),
t
f
]
及
gi
x
、
i
是其定义上的连续函数,假定矩阵
g
t
f
是满秩的,避免出现奇异情况。
g
X
对于初始状态给定,终端状态自由的系统利用极小值原理,可叙述成如下定理:
对于给定系统
X
(
),
tuXf
,
在初始状态为
(
tX
0)
X
0
终端时间 ft 和终端状态
( ftX
)
自由的情况下,容许控制 )(tu 是分段连续的函数,其约束为
Utu )(
其中U 为闭区间。性能指标函数为
J
[
(
tX
),
t
f
]
f
ft
t
0
(
[
tutXL
),
(
),
t
]
dt
那么,
)(* tu 成为使性能指标函数 J 取极小值的最优控制的必要条件是存在一个向量伴随函数
)(* t ,使得
1)
)(* tX
和 )(* t 满足正则方程
X
其中 H 为
,
uXH
(
,
),
t
),
(
tuXL
,
)(
t
H
T
,
H
X
(
),
,
tuXf
2)
)(* tX
和 )(* t 满足端点条件
*
(
tX
)
0
,
X
0
(*
t
f
)
(
tX
f
)
3)Hamilton 函数对最优控制有极小值
,
uXH
(
*
*
,
*
),
t
min
Uu
,
uXH
(
*
,
*
),
t
4)对最优控制,Hamilton 函数的终值为
(*
tH
f
)
t
f
3. 登月艇模型描述
假设登月艇的高度为 )(th ,垂直速度为 )(tv ,月球重力加速度为 g ,发动机推力为 )(tu ,
登月艇质量为 )(tm ,不带燃料的登月艇的质量为 M ,初始燃料总质量为 0F ,初始高度为 0h ,
初始速度为 0v ,则登月艇登陆模型如图 1 所示,并且其运动方程如下:
h
v
m
v
g
ku
mu
/
(1)
其中 k 为推力比,是一个常数。若令状态变量为
x
1
,
xh
2
,
xv
3
m
,则运动方程可以改
写为:
x
1
x
x
3
2
x
2
g
ku
xu
/
3
初始条件为:
x
1
x
x
2
3
)0(
)0(
)0(
)0(
h
)0(
v
)0(
m
h
0
v
0
FM
0
Xg
1
(
)
(
tx
1
)
(
th
终端状态为:
f
发动机最大推力为u ,因此控制域为
f
)
(
,0
Xg
2
u 0
u
(2)
(3)
)
(
tx
2
f
)
(
tv
f
)
0
(4)
燃料最省的指标函数为
J
[
(
tX
),
t
f
]
(
tx
3
f
f
)
(
tm
)
f
可知这系统为定常非线性的,初始状态给定,终端受约束。其是一个终端受约束的最优
控制问题。又知发动机推力取值是一个闭区间,因此不能用经典变分法求解。显然要用到极
小值原理来求解系统最优控制方案。
图 1 登月艇登陆模型
4. 极小值原理求解最优控制推力
发动机推力应如何控制才能使登月艇在月球上实现软着陆,并且消耗的燃料最省。通过
上节分析利用极小值原理求解最优控制推力。
根据上面介绍的极小值原理,首先建立 Hamilton 函数:
,(
uxH
,
2
x
21
)
g
2
x
3
3
ku
伴随方程:
1
2
3
H
h
H
v
H
m
0
1
u
2
2
x
3
伴随变量满足的边界条件:
(
t
1
2
3
(
t
(
t
)
f
)
)
f
f
f
k
(
tx
1
k
(
tx
2
k
(
tx
3
2
j
1
)
j
2
j
1
j
2
j
1
j
)
f
)
f
f
g
j
(
tx
1
g
j
(
tx
2
g
j
(
tx
3
1
2
)
)
f
1
)
f
(5)
(6)
(7)
Hamilton 函数改写为:
,(
uxH
,
)
(
x
21
2
g
)
(
2
x
3
3
)
uk
(8)
由极小值原理知,最优控制
)(* tu 使 H 函数取极小值,因此有
*
)(
tu
,
u
,0
2
x
3
2
x
3
k
3
0
k
3
0
这就是说发动机推力要么最大,要么为零,才有可能实现软着陆,同时使消耗燃料最省。
这种控制为乒乓控制或开关控制。可以假设有三种情况:第一先
)( tu
0
,然后
)(
tu
u
;
第二先
)(
tu
u
,然后
)( tu
0
;第三是经过多次转换。很显然,可以排除第二和第三中控
制策略不能达到燃料最省。 因此,确定用第一种控制策略。该策略最优控制随时间变化曲
线如图 2 所示,其中为发动机点火时间。
图 2 最优控制随时间变化曲线
根据图 2 所示可以把登月艇登月过程在时间上分成两段,即时间之前和时间之后两段。
在
],0[ 时间段,
)( tu
0
,登月艇自由落体,所以状态方程的解为:
1
2
2
gt
v
0
gt
h
0
)(
th
)(
v
tv
0
)(
mtm
0
而在
)(
th
)(
tv
(
tukmtm
)(
)
,[
ft 时间段,
]
,则状态方程的解为:
u
)(
tu
1)
(
tg
2
ln(1)
k
t
2
)
(
tukm
m
h
(
tv
v
(
tg
(
tukm
2
uk
)
ln(
(
tukm
m
))
k
))
(9)
(10)
通过式(9)消去时间可以得到 BC 段的速度和高度的相轨迹方程:
)(
th
(
vg
)
2
2
v
0
h
0
1
2
通过式(10)和泰勒近似展开式:
(11)
))
(
tukm
ln(
可得 AO 段速度和高度的相轨迹方程:
m
(
tuk
m
)
2
)
2
2
(
tuk
2
2
m
)(
th
)(
tv
h
0
v
0
v
0
g
t
2
g
1
2
mmg
(
0
uk
(
k
3(1)
k
v
0
mmg
)(
0
uk
4
mm
0
0
2
mm
2
2
m
0
1)
2
mmg
(
0
uk
2
)
mm
0
2
uk
m
2
uk
0
2
3(
mm
2
2
m
0
4
mm
0
)
)
(12)
由(11)和(12)可以作出整个登陆过程的相轨迹图 ,如图 3 所示。
图 3 登月艇运动相轨迹曲线
如图 3 开关线与抛物线相交点 C 即为发动机点火时间点,所以最优控制规律为:
)(*
tu
,
u
0,0
t
t
t
f
这是开环最优控制,总是在自由落体的抛物线与曲线 AO 相交时刻启动发动机,实行控
制变量由边界到边界的转换,所以曲线 AO 常称为开关曲线或转换曲线。转换时刻由式
(12)以及终端状态用 Matlab 可求得,再把它们代入式(10)中可求得终端时间 ft 。
5. Simulink 仿真
根据登月艇系统运动方程、点火时间和终端时间 ft 可以搭建如下图 4 登月艇软着陆
仿真模型。
图 4 登月艇软着陆仿真模型
1)step 模块为阶跃信号:为跳变时间即发动机点火时间,则u 由 0 跳变到
2)S-Function 模块为登月艇运动模型。
5.1 求解时间和终端时间 ft
首先给所有相关参数赋值:推力比
,发动机最大推力
量
m 1650
0
kg
,不含燃料的质量
,燃料初始质量
u
max
u
u
。
.2k
M 1320
7886
kg
u
F
0
330
7500
kg
N
,初始质
,初始高度
h
0
15000
m
, 初 始 速 度
v
0
1675
/
sm
, 引 力 常 数
G
67.6
10
11
, 月 球 质 量
Moon
.5
9742
10
24
最大推力持续时间
s
max
81/
kg
F
uk
,月球半径
R 1738140
m
,月球重力加速度
g
63.1
/
sm
2
,
.0
0158
s
。把这些参数代入(12)和终端状态用 Matlab 求得
8.8653s
,进而终端时间
t f
s
max
.8
8811
s
。
5.2 编写登月艇运动系统的 S-Function
S-Function 即系统函数(System Function),是 Simulink 模块的一种计算机语言描述。它
是 The Math Works 公司为了扩展 Simulink 的仿真能力而为用户提供的一种功能强大的编程
机制,是用户借以创建 Simlink 模块所必需的、具有特殊调用格式的函数文件。它采用一种
特殊的调用规则来实现用户与 Simulink 解算器的交互,从而允许用户将自己的模块嵌入到
系统中,大大增强了 Simulink 仿真功能。若能成功使用 S-Function,则可以在 Simulink 环境
下 对 任 意 复 杂 的 控 制 系 统 进 行 建 模 与 仿 真 分 析 。 其 实 S-Function 由 子 函 数
mdlinitializesizes( 初 始 化 参 数) 、mdlderivatives( 连 续 状 态 导 数) 、mdlupdate( 离 散 状 态) 、
mdloutputs(模块输出)、mdlgettimeofnextvarhit(下一个采样点)、mdlterminate(终止仿真过程)。
本文登月艇为时不变非线性系统,不能用现有的仿真模块搭建,因本文用 S-Function
来自定义仿真模块即如图 4 所示。其代码如下:
function [sys,x0,str,ts] = dengmoon_sfun(t,x,u,flag,h0,v0,m0,g,k)
%%h0,v0,m0,g,k分别为初始高度、初始速度、初始质量、月球重力加速度、推力比
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes(h0,v0,m0);%驱动S-Function所描述模块初始化