李春阳,张廷华,田磊源
(1.航天工程大学,北京 101416;2.96945 部队,河北 保定 072653)
随着航天技术的不断发展进步,各个国家的航天活动逐渐增加,对于空间优势的争夺日渐激烈,空间目标监视日益重要。空间目标监视是争夺空间优势的前提,随着航天活动的增多,轨道预报对于掌握空间目标的位置与运动特性十分重要。轨道预报是指利用轨道根数计算航天器未来预期时间的运行轨道,对于航天任务分析、空间目标碰撞预警等具有重要作用[1]。
STK(Satellite Tool Kit)是由美国分析图形公司(Analytical Graphics,Inc.,AGI)开发的用于航天领域仿真设计的商业化分析软件,其具有成熟的三维显示模块、链路分析模块、通信分析模块、接近分析模块、覆盖分析模块、高分辨率数字地图等功能,但其获取的数据类型非常繁杂,价格比较昂贵,且存在技术封锁,用户无法控制源代码。STK 能够实现对卫星、飞机、舰船、车辆以及地面观测站及其传感器等各系统的建模和仿真分析,有可视化窗口,提供多种三维数据模型,具有完备的、可在线更新的数据库,可实现实时的数字/半实物仿真,具有强大的交互式图文输出能力[2-6]。
Matlab GUI 是可视化的软件显示平台,通过STK与Matlab 的联合仿真,根据功能需求设计进行程序书写,设计布局合理、功能清晰,具有形象生动的卫星目标轨道预报用户界面,可实现仿真功能以及信息的高效利用。
STK 的Connect 模块为第三方应用程序提供了扩展接口,可以与Matlab 联合仿真,实现第三方应用程序向STK 发送指令并接收STK 数据,完成信息交互。STK 将通信过程封装成动态链接库,用户只需调用相应的函数即可实现与STK 的信息传递,同时,仿真连接着STK 和STK/VO,可以实时观察事件[7-9]。
STK 软件本身的数据处理能力较弱,Matlab 是由美国MathWorks 公司出品的科学计算常用的系统软件,通过两个软件联合仿真分析可以取长补短。利用STK 与Matlab 联合仿真需要对两个软件进行互联设置,在正确安装STK 与Matlab 后,在Matlab 中刷新路径,获取配置文件。
在进行STK 与Matlab 连接时,分别打开两个软件,在Matlab 中执行如下命令:
stkInit;%建立初始连接
若出现以下提示,则表示互联成功:“警告:ConnectHost:setting default connection to localhost:5001
警告:mexConnect:Connecting to localhost:5001”。
STK 与Matlab 最多可同时创建两个连接,因此每次实时数据传递且在通信完成后,通常需要及时关闭连接,以免下次运行重新建立时连接个数过多而出现错误连接。
在STK 软件中为每个行星都定义了相对应的坐标系,这些坐标系的原点都在中心天体的质心上,而每个天体的坐标系不同[10]。J2000 地心惯性坐标系是惯性坐标系,基于牛顿力学的卫星动力学和运动学方程在该坐标系描述,以地心为中心度量的其他天体运动参数也在该坐标系下描述[11]。
在卫星目标参数设置时同时确定空间坐标系统的选择,其函数为:
其中,objPath 代表对象名称,propagator 代表传播函数,coordSystem 代表坐标系名称,tStart 和tStop代表仿真的开始和结束时间,dt 代表时间步长,semimajorAxis、eccentricity、inclination、argOfPerigree、RAAN、meanAnomaly 为卫星轨道六根数。
设置观测站位置信息函数为:
其中,acPath 代表对象路径,llaPos 为观测站的位置信息,包括地理经度、纬度以及水平高度。在观测站添加传感器,根据实际观测系统设置传感器,因此设置传感器类型为矩形传感器。
在测控资源的调度过程中,测站对目标的跟踪预报为调度制定者提供基础数据,这些数据显示了测站对卫星的观测时间段内的时间窗口、方位角、仰角和距离等相关信息[12-13]。用户获取卫星的过境报告,需要利用STK 的Access 功能建立空间目标与地面站间的联接关系。访问分析工具Access 是STK 的核心分析工具,可以用于计算任何对象之间的可视状态,即一个对象是否可以看到另一个对象,计算对象之间满足要求的时间间隔。为满足卫星过境数据需求,基于Access 分析工具可实现测站对卫星的可视状态分析。
利用Matlab GUI 对用户界面进行设计,在界面添加相应的组件按钮,并利用ActiveX 实现仿真场景的可视化显示。主界面主要分为左右两侧,左侧主要进行观测时间、位置坐标等参数输入,右侧为可视化显示窗口,供用户实时查看事件响应。子界面与主界面沿用同样设计风格,界面功能主要包括获取目标TLE 文件、计算目标过境预报以及获取目标天文坐标,其中主界面用于多目标可见性分析,子界面用于单目标可见性分析。
两行轨道数据(Two-Line Element,TLE) 是由北美空防司令部发布的空间目标(包括人造卫星、航天器、飞行体和火箭碎片)的运行状态数据,以开普勒轨道参数之间的数学关系确定空间目标的时间、坐标、方位、速度等各项参数,具有极高的精度[16]。
TLE 两行星历文件参数较少但能够保证精度,因此利用Space-Track 网站、CelesTrak 网站以及Heavens-Above 网站查询选取在轨卫星、空间站等空间目标轨道的两行轨道根数,以此作为空间目标库的数据。目前空间目标库有历年来各国发射的各类卫星、空间站等包含星链卫星在内的空间目标800余个,且以TLE 星历文件的格式存储。
仿真通过Matlab 指令函数控制STK 执行命令,建立新场景及新的对象,包括卫星、观测站以及传感器。利用界面输入观测时间、观测地点、传感器参数以及卫星轨道预报器类型参数等信息。仿真实现流程如图1 所示。
图1 卫星过境预报仿真流程
用户界面功能函数指令通过Connect 模块的协议路径产生相关信息以及接收各种诊断信息的反馈,以消息的形式反馈给用户,主要利用函数AgUtMsg()和AgUtMsgSetMsgFunc()进行运作。其中,AgUtMsg()用于传递消息,而AgUtMsgSetMsgFunc()是用于更改消息处理函数。利用模块内部AgCon ProcessSTKCmd()函数向STK 发送指令,建立新场景及新的对象,包括卫星、观测站以及传感器等对象。根据界面用户输入信息,分别对相应的目标实现参数设置[15]。
在仿真过程中,首先设置预期观测时间和地点,设置传感器参数,若用户需要选择在预期时间、预期地点内可观测的已知空间合作目标时,可直接调用空间目标库中卫星轨道信息,通过计算获取在预设参数条件下空间目标的可见性结果。当空间目标库中所有目标在当前参数条件下不能被观测到时,重新返回设置相关参数,进行再次仿真计算;当空间目标库中目标在当前参数条件下可以被观测到时,在可见卫星中选择需要观测的目标,通过仿真计算进行可见性分析。若用户需要自行设置轨道信息,则可选择调用外部TLE 文件,或者直接输入轨道要素,即轨道半长轴、偏心率、轨道倾角、近地点幅角、升交点赤经以及真近点进行仿真计算。当有多颗卫星时,利用主界面功能对卫星进行可见性分析,从中筛选一颗可见过境卫星进行仿真跟踪,实现过境预报。
在卫星过境预报界面进行操作,运行程序可以观察到三维仿真显示图,利用Matlab 抓取STK 数据,其相对应函数为:
其中,objPath 代表对象的路径,objPath 代表分析目标的路径,rptStyle 代表所需获取报告的类型。
获取两行星历文件的方式有两种,一种为单点式,即选取仿真时间内的某一个时间点,获取两行星历文件;另一种为轨迹采样式,即是在全时段内获取两行星历文件。单点式获取星历误差较大,因此选择第二种方式,以获取精度较高的星历文件用于轨道预报分析。过境预报是指通过卫星轨道预报,计算出卫星在未来某一段时间内通过预定区域的弧获取过境数据,使用函数如下:
其中,accObjPath 代表分析目标的路径。该报告包括过境时间、方位角以及高度角,部分报告如图2 所示。以卫星00733 为仿真对象,与STK 仿真数据、国家天文台的轨道预报软件获取数据进行对比,如图3、4 所示。
图2 卫星过境预报部分数据截取
图3 过境预报功能与STK误差对比
从图3 与图4 可以看出,三种软件仿真数据的差值在角秒量级,精确度较高,且主要误差为角度与弧度之间转换无效位造成。利用STK/Matlab 联合仿真的过境数据可以用于引导观测设备实现精确观测,缩小目标搜索空域范围,减小目标捕获时间,实现快速寻找目标进行跟踪观测的目的。
图4 过境预报功能与国家天文台软件误差对比
文中利用基于STK/Matlab 联合平台实现观测站对卫星的跟踪预报,实现对仿真过程的可视化显示。通过仿真以及计算分析,快速准确地获取卫星目标过境预报数据以及可见时间窗口,为进行实际空间目标观测跟踪奠定数据基础。该设计充分利用联合平台的优势,利用Matlab GUI 将该功能软件化,避免了STK 源代码无法更改的问题,可以将该功能集成到其他软件系统中,充分实现有限信息的充分利用。