STK开发包用法探讨
彭会 湘 , 陈 顺 昌
摘 要 STK软件的全称是SateliteT oolK it(卫星仿真工具包),由美国AGI公司开发,是航天领域优秀的分析显示软件。论述了STK软件在航天应用领域先进的分析显示功能,以及不同版本对二次开发的支持力度。介绍了独立开发航天应用项目的困难,论证了采用STK软件开发包进行开发的可行性。以VC6.0为开发平台,介绍利用STK开发包构造Window应用程序的方法,并给出了一个开发实例,具有工程实用参考价值。
关键词 STK;STK开发包;控件;COM;类库
0 引言
在 开 发 航天应用领域的软件项目时,开发团队往往缺乏航天领域的高级专业知识和天体运动的理论知识,致使开发出来的软件分析能力较弱、图形表达不够专业,不能很好地支持用户的业务需求。STK 软 件 的全称是SateliteT oolK it卫星仿真工具包),是由美国AGI公司开发,为航天应用领域提供了强大的分析和显示能力,但STK软件自成体系,不能与项目中其他软件交互数据,并且软件界面也不适合项目应用,因此不能在项目中直接使用STK软件。所以在自主开发的软件中嵌人STK的分析显示功能是最好的解决方法,本文以VC6.0为开发平台,介绍利用STK开发包构造Windows应用程序的方法。1 STK软件介绍
STK 提 供 强大分析能力:快速而准确地计算卫星位置和姿态,评估航天器与陆、海、空、天中的目标之间的相互关系,计算卫星传感器的覆盖区域;提供多种分析和数值方法模型(2体运动、J2,J 4 、导入星历数据),在多种坐标系类型和系统中计算卫星的位置数据;解决通信分析、雷达分析、覆盖分析、轨道机动、精确定轨和实时操作等问题;提供易于理解的图表和文本形式的分析结果,用于确定最佳解决方案。STK 还 提 供了强大的图形支持能力,图形化显示各种分析结果,基于二维地图背景和三维地球空间模型显示卫星和其他对象(如天体、运载火箭、飞机、地面接收站、地面目标)之间的地理位置和空间位置关系,以及随着时间推移的位置变化关系。尤其 是 STK强大的三维显示分析功能,提供了多视角的分析显示能力,即可以地球为视角中心,显
示分析宏观域的态势场景,包括各航天器的运行情况、空间位置分布关系和执行任务的过程;也可以各航天器为视角中心,显示从航天器上鸟瞰地球的效果、从局部角度生动形象地表达分析航天器执行任务时的各种姿态和动作。
目前 S TK 已经广泛地应用于以下场合:计划、设计和分析复杂的航天系统;实时空间操作任务;三维场景的态势分析和决策支持。
2 项目需求及可行性分析
2.1 项目的迫切需求
在 目前 的 航天应用项目中,用户提出了较高的要求,如图形化显示卫星在轨动态运行的效果、图形化分析、显示卫星执行任务时对地面目标的覆盖情况以及卫星向地面站传送数据的过程等。由于 开 发 团队往往缺乏航天领域的高级专业知识和天体运动的理论知识,致使开发出来的软件分析能力较弱、图形表达不够专业,例如在三维场景中只能表达卫星与地球、地面目标的空间位置关系,而不能表达地球、太阳、月亮以及其他恒星的空间位置关系。在项 目 中直接使用 STK软件有如下几个方面的不足:STK软件自成体系,不能与具体项目紧密结合,不能直接使用项目其他软件产生数据结果,不能直接访间项目的业务数据库,不利于自动、批量地处理信息,效率较低;STK的功能极其丰富,提供的菜单结构和界面比较复杂,但具体项目用到的功能不多,使用起来不够方便;STK软件界面为英文,也为软件操作造成了一定的不便。因此 将 自研软件与 STK相结合就会在一定程度上解决上述问题,基本思路就是自研软件访问业务数据库,提取业务数据转换为STK需要的格式,通过调用STK的接口将数据传递给STK,由其进行处理、分析和显示,并从接口获取处理结果,经过处理供项目内部使用。
2.2可行性分析
在 ST K 的 5.0版本,STK提供了一个叫做CONNECT的接口,自研软件可以通过此接口启动STK软件,向STK软件传送数据,通知STK软件执行有关命令等。这种方法虽然在一定程度上将二者结合了起来,能满足一定的需求,但自研软件与STK仍为2个独立的进程,二者结合不够紧密,特别是自研软件向STK软件发送了某个处理命令后,自研软
件不能自动捕获STK软件处理完毕的消息,不能及时获取处理结果,同时STK启动后,占用较多的系统资源,效率不高,并且如果通过STK本身的菜单或工具进行了某种操作后,自研软件不能捕获有关状态,会造成软件状态的不一致性。
6.0 以 后 的版本,STK提供了独立的开发包,由一系列控件、COM接口和类库组成,允许自研软件将STK某些功能嵌人到其内部,这样自研软件和STK的功能就实现了有机的结合,软件通过对控件、COM和类库的接口调用STK的功能,达到了界面统一、处理自动化的效果,业务操作人员只能通过自研软件的菜单或工具来操作软件,能够保证软件状态
的一致性,并且自研软件能够准确及时地捕获STK各种处理的状态和结果,提高了软件的执行效率,能在最大程度上满足用户的使用要求。
3 开发方法介绍
3.1 任务想定与开发基础
下面 通 过 具体的例子介绍如何使用 STK开发包开发软件,在该例中,建立一个三维场景,通过将外部的星历数据传送给STK控件,在场景中加人一个卫星,然后启动卫星沿轨道运行的动画,在动画中卫星沿轨道运行,并且地球和月亮等天体模型按各自的运行规律进行运动,反映了在某一时刻各天体的实际相对空间位置。本示 例 采 用VC6.0作为开发工具,用到了STK开发包中的三维显示控件CAgUiAxVOCntrl,该控件提供了一个三维显示界面,还用到了2个类:CAgSTKXApplication 和CagExecCmdResult,其中CAgSTKXApplication为执行STK所有功能的应用接口类,所有功能的执行都需要该类将命令传递给三维显示控件,CAgSTKXApplication将执行命令的结果返回给CagExecCmdResult类,根据CagExecCmdResult的值可以判断命令执行成功与否。
3.2 开发步骤
建 立 一 个基于 CDialog的 MFC应用工程StkApp,该工程主要包2个类:(1)CStkAppApp:该工程的应用程序类;
(2) CStkAppDlg:该类为软件的主窗口类,软件所有的操作都在此类中实现,本例所有功能都在该类中实现。
执行 VC 集成开发环境的菜单命令Project----->Add To Project---->Component and Contorls,弹出“组件和控件库”界面,在此界面中双击“Registered ActiveX Controls”文件夹,然后在“组件列表”中选择"AGI Globe Control",然后按[Insert]按钮,就会将三维显示控件和有关类添加到工程中。
从控 件 工 具栏中选择AGI Global控件,添加到主对话框中然后为主对话框添加以下3个成员变量:
m_StkView:变量类型为CAgUiAxVOCntrl,三维图形显示控件对应的变量;
m_App: 变量类型为CAgSTKXApplicationSTK,应用接口变量;
m_Result:变量类型为CagExecCmdResult,应用接口执行命令返回结果变量。
在对 话 框 的初始化消息响应函数OnInitDialog( )中,添加如下代码,将STK应用接口变量与三维图形显示控件变量建立联系。
m_App= m_StkView.GetApplication( );
然后 分 别 编码实现如下功能:
① 建 立 三维场景
m_Result=m_App.ExecuteCommand("New /Scenario Scenario1");
② 添 加 卫星符号
CStrings Command;
sCommand.Format("N ew /*/Satellite %s ","SA T");
m_Result =m_App.ExecuteCommand(sCommand);
③ 导入外部星历文件
sCommand.F ormat(”SetState */ Satellite/% ,File \ ’‘%s","S AT","e :\\temp\\xl.txt");
m_Result =m_App.ExecuteCommand(sCommand);
④ 设 置 运行的有效时段
CString t1="18 Aug 2005 3:10:0.00";
CString t2="19 Aug 2005 3:10.0.00";
sCommand.Format("SetTimePeriod * \ ”%s \ " \ ” %s\”,st1,st2 ) ;
m_Result =m_App.ExecuteCommand( sCommand);
⑤ 设 置 场景的历元时间
sCommand.Format(”SetEpoch Scenario/Scenairo1\" %s\””,st1);
m_Result =m_App.ExecuteCommand(sCommand) ;
⑥ 设 置 场景的当前时间
sCommand.Format(“Animate Scenairo/ Scenario1 SetTime\”%s\"",st1);
m_Result =m_App.ExecuteCommand(sCommand) ;
⑦ 开 始 运行
m_Result=m_App.ExecuteCommand("Animate * Start");
⑧ 停 止 运行
m_Resul t=m_App.ExecuteCommand(Animate,Pause);
3.3 运行程序
执行 编 译 连接命令后,运行程序,执行“建立三维场景”功能,可显示出三维地球图形和星空背景;执行“添加卫星符号”和“导人外部星历文件”功能,可将执行星历的卫星符号添加到三维场景中;执行“设置场景的当前时间”功能,天体和卫星即可运行到指定时间的位置;执行“开始运行”功能,三维场景动画开始运行,天体和卫星按各自的运行规律开始运行;执行“停止运行”功能即可停止三维场景的运行。在三 维 图 形控件中,按下鼠标右键向下拉动,就会将场景拉近显示,随着场景的拉近,将显示出卫星的细节,该功能是封装在三维图形控件中的,无需添加任何代码。
4 结束语
STK 开 发 包对开发定制软件的卫星应用提供了较大的便利,采用该技术进行的应用软件开发具有良好直观的可视化效果,STK当中许多特有的成熟的功能单元模块可直接通过控件的形式进行集成应用,因而极大地降低了开发难度、提高了开发效率、缩短了开发周期,开发出的软件不仅具有专业水平,而且质量稳定可靠。本方法具有极大的推广应用价值,已经应用于一系列工程实践,取得了良好的效果。