基于STK的卫星视景仿真软件的设计与实现
张欣光,刘芸,唐硕,许志
摘要:基于STK和sTK/Connect模块构建了卫星实时仿真系统框架。以VC++6.O为平台开发了卫星实时视景仿真软件,并详细给出了VC和STK集成、仿真数据的发送解析、仿真时间同步等关键技术的实现步骤。该软件利用UDP/IP协议接收数值仿真机广播的卫星仿真数据并进行解析,通过STK/Connect模块发送指令,实时驱动sTK进行二维和三维视景渲染,实现了卫星在轨运行状态的实时视景显示。
关键词:视景仿真;卫星;软件
0 引言
视景仿真是一种基于可计算信息的沉浸式交互环境,即采用以计算机技术为核心的现代高科技,生成逼真的特定范围虚拟环境[1]。对于卫星而言,视景仿真可以根据设计或测量获得轨道参数、当前位置等数据直观地表现卫星飞行过程,可视地表达卫星飞行状态,有利于研究人员了解和监控卫星的运行状态,是卫星仿真的重要组成部分。卫星仿真工具包(STK)是美国AGI公司推出的一款用于航天产业设计和分析的专业卫星分析工具,为航天应用领域提供了强大的分析和显示能力。可以快速方便地分析复杂的陆地、海洋、航空及航天任务,提供逼真的二维和三维可视化动态场景以及精确的图表、报告等多种分析结果,辅助确定最佳解决方案[2]。用户可在STK中建立一定的场景并加
入卫星模型,通过设定场景参数,实现卫星运行的二维和三维仿真。但这种直接使用STK的方法需要事先设定相关的轨道参数,不能根据仿真或遥测所得的数据实时显示卫星的轨道机动和姿态调整等运行状态,且STK软件界面也不适合项目应用,因此不能在项目中直接应用STK软件。
本文以VC6.0为开发平台,在MFC多文档应用程序框架的基础上嵌入STK的视景显示功能,开发了既具有STK的二维和三维渲染能力,又具有友好界面和高效数据交互能力的卫星视景仿真软件。该软件利用UDP/IP协议从网络上读取卫星的位置、姿态等参数并解析成STK指令,然后通过对STK/Connect模块的合理调用将指令发送给STK,驱动STK运行,实现卫星在轨运动状态的实时视景仿真。
1 STK/Connect模块简介
STK/Connect模块利用客户机/服务器方式连接STK,为其他应用程序提供一条向STK引擎发送指令和接收返回数据的通信路径[3]。它允许打开TCP/IP到STK的接口,发送STK/Connect指令,接收STK返回数据,并在完成后关闭连接。STK/Connect还提供了自定义消息功能,允许用户以自定义的方式输出错误和诊断信息。用户在使用STK/Connect模块时,只需提供连接名和端口号就可以和STK进行通信。STK/Connect模块与用户程序连接如图1所示。
利用STK/Connect模块的上述特性,用户程序与STK连接后,只需向STK发送相关的Connect命令,就可以控制sTK进行仿真,并且得到STK回传的命令执行情况。Connect命令起着取代用户操作STK软件的作用,命令内容与用户操作相对应。因此,利用Connect模块,用户可以把对STK的操作集成到自己的程序中,借助这些命令对STK软件进行全方位控制,并获取仿真需要的返回信息。
2 仿真系统结构
视景仿真作为卫星航天任务仿真平台的一个组成部分,需要能够实时接收仿真平台的仿真结果以给出相应的显示,这就要求视景仿真软件有一个可以和整个仿真平台通讯的网络接口。本系统采用UDP/IP协议进行数据交互,运行模式如图2所示。
通过STK/Connect模块驱动STK进行二维和三维实时视景显示。
3 视景仿真程序开发
3.1 仿真程序结构框架及流程
为实现软件开发的可扩展性和可重用性,采用面向对象的开发方式,将系统分为3个部分:数据处理、数据表现和仿真控制。软件结构如图3所示。仿真程序流程如图4所示。
3.2 仿真程序开发要点
卫星实时视景仿真软件的功能主要包括3个方面:①从网络上接收由下位机广播的卫星轨道机动和姿态调整等状态参数;②将卫星的状态参数解析成指令传递给STK,驱动STK运行并保证STK运行的实时性;③对数据接收和视景仿真过程进行控制。下面介绍程序开发过程中所用到的关键点。3.2.1 STK场景的设置
为了加快视景仿真程序的启动速度,先建立一个STK场景,加入卫星模型,并保存到指定路径下。当运行仿真程序时,直接载入该场景,从而实现程序启动加速。为了实现实时仿真,需要将卫星Orbit属性中的Propagator选项和Attitude属性的值均设为Real Time。3.2.2 VC和STK的集成
利用STK/Connect模块提供的API函数可向STK发送指令控制其仿真运行。在启动Connect模块之前要进行初始化的工作,初始化是调用AgConInit()完成的,初始化完成后再利用AgConopenSTK()与STK建立连接[¨]。然后就可以用AgConProcessSTKCmd函数向STK发送命令了,格式如下AgConProcessSTKCmd(connectionl, CommandName,&returnInfo);
其中CommandName为命令的内容,返回值存储在returnInfo中。在完成初始化和建立连接之后,可根据需要将不同的命令赋给该函数的第2个参数,然后调用该函数来驱动STK运行。能在STK界面进行的操作,也可以通过命令传送给STK执行。本文设计的卫星视景仿真软件根据得到的解析数据向STK发送命令(Connect命令可参考STK的帮助文档),实现卫星在轨运行的实时视景仿真。为了便于仿真程序调用,本文根据项目需求对部分命令进行了封装,如表1所示。
3.2.3 仿真数据的发送、接收与解析
为了便于网络传输,下位机先对仿真数据进行处理,然后再广播。仿真驱动程序通过winsock 2接口实现广播数据的接收,并对接收到的数据进行解析,然后再用解析后的数据驱动STK运行。例如,下位机将卫星每个姿态调整推力器的工作状态用“1”和“O”表示,“1”为点火,“o”为熄火。为了便于数据传输,先将多个推力器的状态组成一个Double型的数值,再进行发送。当数据解析部分读取到此Double型的值时,需要取出其每一个二进制位并转换成BOOL型的值,以此判断各个推力器的工作状态。推力器工作状态传输流程如图5所示。
3.2.4 仿真时间同步的实现
视景仿真中的卫星状态参数必须与数值仿真输出的数据同步,才能实时显示卫星的飞行状态。STK提供了2种实时控制方式[6]:一种是“SetTime”方式,另一种是“X Real Time”方式。“SetTime”利用不断发送时间的方式来实时推进STK场景时间。在这种驱动方式下,STK的内部时钟不做任何推进,场景也不做任何刷新,除非外部的Connect命令更新它的时间。这意味着在相邻2次外部实时命令的时间间隔之内,STK场景是静止不动的,这样导致的结果是屏幕显示的动作不够平滑,场景中的对象从一个位置运动到另一个位置会出现闪烁;“X Real Time”方式是STK在每次连接更新之后不挂断场景的时间推进,而是根据设定的动画步长继续推进每个时间点的卫星位置、姿态等数据。“X Real Time”方式减少了外部控制指令的发送,可以最大限度保证画面的流畅。
本文将“SetTime”和“X Real Time”两种控制方式结合起来,较好地实现了仿真时间的同步。在仿真开始时,程序读取数值仿真机发送的时间,并用SetTime控制方式设置STK场景当前时刻等于数值仿真当前时刻,从而实现起始时间的“校准”。随后发送指令使STK以“X Real Time”方式对场景时间进行推进,并使其动画步长等于数值仿真机的仿真步长,由此实现二者的时间同步。在实际仿真过程中,数值仿真机受计算量大小和计算机性能等各种因素影响,可能不会严格按照设定的步长仿真,造成时间不同步,因此需要加入时间同步校准程序,其运行流程如图6所示。视景仿真所实现的是人眼对卫星运行状态的直观感受,它对实时性要求比较低,本文认为STK仿真时间和数值仿真时间相差不超过1s即可。4 结束语
实时视景仿真是卫星航天任务仿真的一个重要方面,通过三维视景,可以在计算机上构建卫星围绕地球运行的三维宏观场景,准确描述卫星每时每刻的运行状况和姿态,以及卫星辐照地面的区域、范围等,这对于了解和监控卫星的运行状态有重要作用。本文在介绍卫星实时仿真平台的基础上,根据项目需求开发了卫星视景仿真软件,克服了STK界面不适合工程应用和数据交互能力差的缺点,并详细给出了程序开发过程中所需的STK设置、VC和STK的集成、仿真时间的同步问题等关键技术的具体实现方法。通过仿真验证可看出该软件能根据数值仿真机广播的数据发送指令控制STK运行,实时显示卫星在轨运行状态,画面流畅,运行稳定。参考文献
[1]闫晓东。唐硬.飞行视景仿真软件开发[c]//中国航空学会第22届飞行力学与飞行试验学术交流会.成都,2006:541—54[2]杨颖,王琦.sTK在计算机仿真中的应用[M].北京:国防工业出版社.2005:1—2
[3] 张云彬,张永生.sTK/C0nnect模块分析与应用[J].测绘学院学报,2001,18(9):29—32
[4]李锼,陈立云,连云峰,等.基于STK的connect模块设计与应用[J].科学技术与工程,2008,8(22):6110一6112
[5]杜耀珂.基于STK的卫星实时视景仿真系统设计[J].空间控制技术与应用。2009,35(2):61—64
[6]余贤圣.STK在作战仿真中的应用研究[D].北京:北京邮电大学,2007:57—58
更多STK学习资料免费下载:
http://download.csdn.net/user/appe1943