MATLAB & STK构建卫星轨道姿态控制仿真演示系统
杜耀珂 郑科宇
摘要:通过在MATLAB中建立卫星的轨道运动和姿态动力学仿真模型就可以分析在不同的控制作用下,卫星的轨道和姿态的变化情况。这种方法可以得到具体的卫星轨道和姿态参数及其变化曲线,然而它却难以体现出卫星本体在空间中的实际变化情况,不能直观的显示控制作用对卫星的轨道和姿态的影响.本文结合STK对二维和三维图像的显示和处理特点,利用MATLAB得到的仿真数值,通过网络连接控制在STK中的显示效果。通过仿真分析实现了对卫星轨道和姿态的控制,并且直观的反映了控制作用的效果。
关键词:姿态控制;轨道控制;STK;MATLAB
引言
随着可视化技术在仿真中的广泛应用,对卫星的轨道和姿态控制仿真不仅要求仿真系统具有精确的模型和实验结果,还要求真实再现航天任务的全过程,因此有必要建立一个视景仿真系统,给设计人员和决策者以更直观更形象的理解。
MATLAB是一套功能非常强大的商业数学软件。它包含了数值计算、高级图形与可视化、高级语言编程等功能。从信号处理,语音处理,数据采集,数值运算,图像处理,到电子仿真,金融分析等等,几乎在各个工业领域,它都已经得到了广泛应用。由于MATLAB这些特点,在卫星的姿态和轨道控制领域的许多仿真分析都是在它的基础上建立起来的。但是如果仪仅利用MATLAB进行仿真,容易得到的是一些实验数据和物理量的变化曲线,不能在空fBJ环境中显示卫星的运行状况,分析起来不够直观。
STK(Satellite Tool Kit)是由美国Analytical Graphics公司开发的卫星仿真工具包,是航天工业领先的商业化分析软件,它可以快速方便地分析复杂的陆、海、空、天任务,并提供易于理解的图表和文本形式的分析结果,用于确定最佳解决方案。不但具有强大的数据仿真功能,还具有三维模型编辑和三维可视化模块(STK/VO),可以为STK和其它附加模块提供逼真的三维视景显示功能。在STK中通过建立一定的场景并加入卫星的模型,通过设定该场景的参数,就能实现对卫星运行的二维和三维仿真视景。虽然它有效的解决了三维视景显示问题,但是在卫星的运行过程中,如果需要对卫星实施变轨或者大角度姿态机动就需要将仿真停止,重新设定相关的参数,不能实现对整个视景系统的连续仿真运行。
本文结合MATLAB和STK两个软件各自的优点,利用STK提供的与MATLAB的接口模块,通过在MATLAB处理相关数据并给STK发送相关的命令控制STK的运行,从而让视景仿真系统按照MATLAB程序预先的设定运行,大大增强了卫星轨道姿态控制视景仿真的灵活性和可操作性。
1 MATLAB与STK通信的实现
MATLAB与STK的通信主要是通过两个模块,其中STK/Connect模块提供了一种使用客户机/服务器端方式连接STK的快捷工作方式。STK/Connect设计用于给第三方的应用程序提供一个向STK引擎发送指令和接收数据的通信路径。STK/Connect允许打开Microsoft COM或者TCP/lP到STK的连接,发送STK/Connect指令,接收STK的数据,完成后关闭连接。STK/Connect也提供一个消息功能以用户定义的方式来输出错误和诊断信息。使用STK/Connect时,只需提供连接名和端口以便进行数据通信。STK/Connect指令可以用单一函数发送并返回所期望的数据。另外,STK本身的STK/MATLAB接口在STK和MATLAB之问提供了一个双向的通信路径。利用超过150个MATLAB指令,如使用STK支持的分析功能一样,MATLAB的用户可以使用STK的功能对轨道、弹道、大弧度抛物线建模。整个系统的结构如图1所示。
另外,MexConnect提供了从MATLAB命令行直接使用STKConnect指令的能力。MexConnect工具使得可在MATLAB中创建、复制和报告各种不同的STK对象类。所有的STK数据,包括动态位置、速度和高度数据,可以传送到MATLAB的工作空间中做更深入的数学分析。另外Aerospace Toolbox(航天工具箱)可以使用MATLAB用户创建和输出的多重坐标系下的STK格式的星历和姿态文件用于在STK/VO中进行三维显示。
1.1有关MATLAB和STK的接口程序
1.stkDefaultHost
获得STK的地址。
2.stkOpen
打开STK的默认地址。
3.stkValidScen
需要检查STK中的当前场景。
4.stkClose
关闭当前场景。
5.stkClose
结束MATLAB与STK的连接关系,并关闭此次连接。
6.stkNewObj
创建新对象,如卫星、敏感器等。
用法:stkNewObj('parentPath’,’class’,’name’)
7.stkSetTimePeriod(StartTime,EndTime,’GREGUTC‘)
设置当前场景开始时间和结束时间。
8. [pos,vel]= atbOrbEquiToCart(equiElems,gravParam);
将卫星的第二类无奇点轨道6参数转换为位置和速度向量。
9. equiElems = atbOrbCartToEqui(pos, vel,gravParam)
将卫星的位置和速度向量转换为第二类无奇点轨道6参数。
10.[pos,vel]=ModiEelementToCart(a,i,capital_omega,c,d,lambda);
将第一类无奇点轨道6参数换为位置和速度向量。
11.[pos,vel]=ClassicalToCart(a,e,i,omega,capital_omega,m);
由瞬时轨道根数计算卫星的位置和速度
12.[classical]=CartToClassical(pos,vel);
由卫星的位置和速度计算瞬时轨道根数
13.[cbfPos,cbfVel]=atbCbiToCbf(’cbName’,times,cbiPos,cbiVel)
将惯性系的位置和速度向量转换到地球固定坐标系的位置和速度向量。
14. stkSetPropCart(’objPath’, ’propagator', ’coordSystem', tStart, tStop, dt, orbitEpoch, pos, vel)
输入卫星的位置和速度向量计算卫星轨道。
15.[time, pos, vel, cb]=stkEphemerisCBI(objPath, dt, start, stop)
从stkSetPropCar计算的轨道中取出卫星在惯性坐标系中的位置和速度。
16.longitude=atbOrbRaanToLan(’cbName‘, raan, curTime, tpan)
将升交点赤经转换为地理经度。
1.2 有关MATLAB和CONNECT的接口程序
STK的联接命令可以通过stkExec来实现,用法为
rtn=stkExec(conID,'conCmdStr')
其中rtn是联接命令执行后的返同值,conlD是由stkOpen语句打开的STK默认地址。conCmdStr是联接命令字符串,有关用于卫星轨道控制的联接命令字符串说明如下:
(1)Animate <ScenObjectPath> {AnimateOption} [<Parameters>]
设置场景的动画。如设置一颗卫星的动画开始时间的程序调用::
Animate Scenario/Satellite SetValues”1 May 2000 12:12:12.3000”10 0.1’
(2)Graphics<ObjectPath>Basic {AttributeOption} {Action}
在二维地图上设置显示卫星星下点轨迹及其颜色、显示卫星轨道、星下点和轨道显示的线性等。如在二维地图上设置显示卫星星下点轨迹及其颜色
‘Graphics Scenario/Satellite Basic Show ON Orbit ON GroundTrack ON Label ON LineWidth 5 MarkerStyle Circle Color 1;
(3)VO <ObjectPath> Pass {LeadTrailOption} [{Type} <Value>] [{State}]
在三维立体图上设置显示卫星轨道,如在三体图上显示卫星轨道的程序调用:
VO Scenario/Satellite Pass OrbitLead All OrbitTrail All
(4)MapProjection <ScenObjectPath> {ProjectionType} [<MapID>] [{ProjOption}{Params}]
在二维地图上设置地图投影类型和观察位置,如设置视点位置在北纬49度、东经120度、高度为17000000米的正交投影地图的程序调用:
MapProjection Scenario/Orbit_Control_Scenario Orthographic Center 40 120,17000000 Format ECI 90.0
(5)SetAttitude <ObjectPath> Profile {ProfileType} <Parameters>
使用SetAttitude Profile命令用来定义物体坐标系的空间指向,从而设定物体的姿态控制方式。
例如:SetAttitude */Satellite/aosSat Profile Fixed Euler 11 22 33 313 ”CentralBody/Earth B1950”
(6)VO <ScenObjectPath> 3DView {3DViewOption} [<Parameters>] [<VOWinNumber>]
使用VO 3DView命令用来给一个三维窗口设定一些视点观察参数。例如:
VO *3dView Eye FromTo Facility/Fac1
VO *3dView Zoom Out2
(7)VO <ObjectPath> ModelPointing ”<AttachPoint>“ {ModelPointOption} <Parameters>
使用VO ModelPointing命令用来设定载入模型的一部分始终指向另一个物体,例如太阳,地球。其中所设定模型的那一部分必须在其模型文件中申明。
例如:
VO */Satellite/attSat ModeIPointing ”SolarArrays-000000” Intervals Add 2 ”2400.0” ”600.0” Facility/aosFac ”2400.0” ”3600.0” Sun
(8)VO <ObjectPath> ReloadArticFile
使用VO ReloadArticFile命令来重新载入卫星模型的行为控制文件,使通过程序编写的卫星模型的行为控制文件能够驱动卫星模型依照设定的行为控制进行动作。例如:
VO Scenario/stkDemo/Satellite/Shuttle ReloadArticFile
2 三维卫星模型的建立
为了方便三维模型的编辑和查看,STK专门提供了一个模型查看程序:“MDE.exe”.模型文件(*.mdl)可以在记事本、写字板或是MATLAB的脚本(Script)程序中输入,编写完毕后,将文件保存为以mdl为扩展名的文件类型。若要对其进行修改时,同样可以使用记事本程序或其他编辑文本文件的程序。如果要查看更改后的效果,用MED.exe打开相应的模型文件即可。
现在以建立卫星模型(Satellite)为例,其中基本图元(Primitive)包括圆柱、多边形、球形⋯⋯它们是构成模型的基础。由基本图元构成模型的各个组成部分(Component)。例如太阳能电池板等,再由各个组成部分构成整个模型(Satellite)。整个结构是一个倒置的树型结构。见图2:
Root可以认为是表明模型的父物体的关键字,这很重要,因为一个模型文件必须有一个父物体。例如在卫星的模型文件中有以下典型的代码:
……
Root
Refer
Translate 0 3 0
Component Solarpanel
EndRefer
以上代码表明将电池板这个组件(Component)作为Satellite的一部分,Refer和EndRefer必须成对出现。
除了可以用文本编辑器编写模型文件,然后根据在MED.exe中的显示效果进行更改之外,STK本身并没有提供模型制作工具。STK提供的模型制作方法是首先通过三维制作软件LightWave中建立模型,然后利用STK网站提供的转换工具LwConvert.exe进行转换之后才能被STK使用。
三维模型中的活动关节在视景仿真中非常重要,通过定义仿真过程中活动关节的动作可以表征航天装备运行过程中状态的变化。例如,改变卫星天线的指向来表征卫星服务对象的改变,卫星太阳帆板的展开和驱动帆板的转动等等。对活动关节的编辑分为静态编辑和动态编辑。静态编辑指对关节的初始位置的编辑;动态编辑是指对仿真运行过程中关节的活动的定义,包括起止时间、起止位置、运动方式等。
实体模型的关节活动存储在关节活动文件(Articulation File)中,每个关节活动文件中包含一个或多个关节活动的定义,每个关节活动由开始时刻、持续时间、初始值、终止值等11个参数来定义。通过对这些参数的修改,可以定义线性、阶跃、非线性等类型的关节活动。
以线性型动作为例,定义下列参数:
STARTTIME 1000.0
DURATION 10.0
DEADBANDDURATION 0.0
ACCELDURATION 0.0
DECELDURATION 0.0
DUTYCYCLEDELTA 0.0
PERIOD 0.0
ARTICULATION tailRudder
TRANSFORMATION tailRudderZRotation
STARTVALUE 20.0
ENDVALUE 10.0
3 卫星在轨运行的视景仿真实现
视景仿真利用MATLAB制作仿真界面,控制轨道参数的载入并通过与STK的接口控制在STK窗口中的演示效果。当数据全部输入后,系统即可按预定程序运行,不需要再通过STK上的菜单操作控制仿真的运行。仿真软件数据输入结构流程图如图3所示:
图4是轨控仿真软件的初始界面。
(1)在“输入轨道参数对应的时刻”一栏,输入“年月日时分秒”,也可以点击“载入数据”按钮,将上一次输入的“年月日时分秒”载入。
(2)在“请选择输入轨道参数的类犁”一栏,可选择“输入瞬时轨道六要索”或“输入拟平均根数”两项之一,然后点击“输入参数”按钮,分别弹出如F界面:
(3)选择推力模型推力模型可选择“推力始终不变模型”或“推力实时变化模型”二者之一,选择后,按“输入参数”按钮,即弹出如下界面:可按照界面提示输入相应的发动机参数,也可点击“载入”按钮,装入上一次输入的发动机参数,然后点击“提交”按钮。
点击“开始运行”按钮后,系统会检查STK当前是否存在场景,若存在,则会弹出“载入轨道控制场景,必须关闭当前场景!”的画面,点击yes即可进行stk轨控仿真。
图5~图7分别显示了视景仿真过程中,在二维和三维情况下,卫星的轨道和姿态变化情况。
4 结束语
本文基于对MATLAB&STK的综台运用构建了卫星的轨道和姿态控制的视景仿真系统,该系统实现了直观、简洁的可视化仿真环境.为航天任务的顶层设计及方案的可行性分析等提供一个直观实用的工具。
更多STK学习资料免费下载:
http://download.csdn.net/user/appe1943