logo资料库

登月挺软着陆MATLAB仿真.doc

第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
资料共11页,剩余部分请下载后查看
登月艇软着陆过程 Matlab 仿真 学号: 姓名: 指导老师 日期:2014 年 5 月 19 日
摘要:本文描述了登月艇简化模型,并对其登月过程做了简单介绍。因为这是控制登月艇软 着陆和燃料最省问题,即是一个最优控制问题。所以对于该控制问题本文用极小值原理对登 月艇控制推力进行求解。进而,依据登月艇模型和控制推力建立仿真模型。 关键词:最优控制 登月艇 极小值原理 1. 引言 最优控制问题可分为两类:静态最优化控制和动态最优化控制。最优控制就是要确定一组决 策变量以使得某目标函数取极值。由于目标函数所依赖的决策变量不随时间变化,这类最优 控制问题称为静态最优化控制或参数最优化;如果目标函数所依赖的决策变量是时间的函 数,则称为动态最优化控制。所以,静态最优化控制是不考虑时间因素的最优控制,而动态 最优控制是考虑时间因素的最优控制。它们的解决方法也不同。解静态最优化控制的方法有 线性规划、非线性规划、爬山法和优选法等。解动态最优化控制的方法有变分法、极小值原 理和动态规划等方法。本文介绍动态最优控制问题求解法——极小值原理。 2. 极小值原理 极小值原理也叫极大值原理,没有区别是一个意思。当指标泛函中被积分函数取 ( ), tuXL , 时,指标 J 取极大值;当被积分函数取 ), tuXL ( , 时,指标 J 取极小值。二者 是等价的。极大值原理是由庞特里亚金等人提出的。它是从变分法引申而来的,功能更强, 应用范围更广,能解决变分法不能解决的问题。 当控制作用 )(tu 不受限制或限制在一个开区间时,可以用古典变分法来求解最优控制 问题。但是,当 )(tu 限制在闭区间上,或性能指标含绝对值形式时,变分法就不能胜任了。 下面举个例子说明。 假设一阶受控系统: dx  dt 2u 允许控制域为 1u ,初始状态 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 不是最优控制。因为 0x ,状态不会转移。从直观上很容易看出,在允 许控制范围内,当取 1u 时,系统运动速度最大,即 x  u 2  1 应用初始条件可得: t f  ( tx f 21)  这就是在上述控制约束下,使系统 x 1)0(  转移到 ( ftx ) 3 的最短时间。最优控制为 * u 1 。为什么用变分法求不出来呢?问题出在实际最优控制落在区间约束 1u 边界上。 在边界上,它不再满足 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 。 .2k 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所描述模块初始化
分享到:
收藏