1.创建场景
%1.打开一个STK应用实例,如果版本是STKX,则改为uiapp = actxserver('STKX.application');
uiapp = actxserver('STK10.application');
%获取STK用户界面
root = uiapp.Personality2;
%显示界面
uiapp.visible = 1;
%2.创建一个新场景,名为aircraf_simulation
root.NewScenario('aircraf_simulation');
%设置时间日期格式为UTCG
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('UTCG');
%设置距离单位为km
root.UnitPreferences.Item('Distance').SetCurrentUnit('km');
%3.设定分析时间区间为今天到明天
%设定时间戳精度
format longG
%将时间戳转换成日期字符串
startTimeStr=datestr(now);
endTimeStr=datestr(now+3600*24/1e5);
%设定分析时间区间
root.CurrentScenario.SetTimePeriod(startTimeStr,endTimeStr);
%重置场景将动画时间区间和分析时间区间起点对齐
root.Rewind;
%4.设置动画时间步长
%设置动画时间更新方法为固定步长
root.CurrentScenario.Animation.set('AnimStepType','eScTimeStep');
%设置动画时间步长为1s
root.CurrentScenario.Animation.AnimStepValue=1;
%5.创建飞机
aircraft = root.CurrentScenario.Children.New('eAircraft', 'MyAircraft');
%选择飞机三维模型
aircraft.VO.Model.ModelData.set('Filename','STKData\VO\Models\Air\b-52_stratofortress.mdl');
%6.飞机路径设置
%设置飞机的路径预报模型为实时仿真预报模型
aircraft.SetRouteType('ePropagatorRealtime');
duration=aircraft.Route.Duration();
% 设置下一次和上一次更新纬度的时间间隔
duration.LookAhead = 1.0;
duration.LookBehind = 1.0;
%刷新路径设置
aircraft.Route.Propagate;
%获取飞机路径点构建对象
AircraftRoutePointBuilder = aircraft.Route.PointBuilder;
2.实时路径点参考坐标系
在STK Programming Interface Help中搜索IAgVeRealtimePointBuilder,打开文档可以看到实时路径点有以下几种类型:
2.1 AGL_LLA、LLA和MSL_LLA
AGL_LLA、LLA和MSL_LLA参考的是地心大地坐标系。地心大地坐标系定义为地球椭球的中心与地球质心(质量中心)重合,椭球的短轴与地球自转轴重合。地心大地经度L,是过地面点的椭球子午面与格林尼治天文台子午面的夹角;地心大地纬度B,是过点的椭球法线(与参考椭球面正交的直线)和椭球赤道面的夹角;大地高H,是地面点沿椭球法线到地球椭球面的距离。
打开AGL_LLA和LLA的Add方法文档可以看到:
Add方法的参数是时间、经纬高和经纬高变化率,所以AGL_LLA和LLA使用经纬高和经纬高变化率表示飞机某个时刻的位置和速度。AGL_LLA的高度是飞机到下方地面的高度,考虑了地形,LLA是从地球表面测量高度,MSL_LLA从平均海平面测量高度。
适用范围
只关注飞机的地理位置和高度变化,即飞机在地球表面航迹变化,不关心飞机在某个位置的姿态和实际速度。适用于在地球表面标注每个航空器的实时地理位置。
2.2 B1950和ECI
B1950轨迹点参考的是B1950坐标系,ECI参考坐标系是J2000坐标系,J2000是B1950的替代者,二者定义类似,只是参考的地球年历不同。J2000原点在地球质心,xy平面为J2000时刻的地球平赤道面,x轴指向J2000时刻的平春分点(J2000时刻平赤道面与平黄道面的一个交点)。此坐标系常被作为地球卫星的惯性坐标系,卫星运动积分等都在此坐标系计算。这两种方法主要用在航天上,这里不做深入介绍。
2.3 ECF
ECF轨迹点参考的是地心地固坐标系(ECEF,也称地心坐标系),其原点 O (0,0,0)为地球质心,z 轴与地轴平行指向北极点,x 轴指向本初子午线与赤道的交点,y 轴垂直于xOz平面(即东经90度与赤道的交点)构成右手坐标系。
图来自:地心地固坐标系图片_百度百科
打开ECF类型轨迹点的文档可以看到:
ECF类型使用飞机在地心地固坐标系中的xyz坐标表示其位置,用三个坐标系轴方向上的分速度表示飞机在这个位置速度。
2.4 LLAHPS
打开LLAHPS文档看到参数为时间、经纬高、速度方位角(Heading,从子午线正北切线计算)和高低角(Pitch)以及速度(距离/时间)。
2.5 UTM
UTM(Universal Transverse Mercator Grid System,通用横墨卡托格网系统)坐标是一种平面直角坐标,这种坐标格网系统及其所依据的投影已经广泛用于地形图,作为卫星影像和自然资源数据库的参考格网以及要求精确定位的其他应用。参见: UTM坐标系简述 - 知乎 。
图片来源:UTM坐标系简述 - 知乎
3.实时路径点参考坐标系
3.1 选定坐标系
考虑到飞机主要在地球表面1-20km的高度范围内活动,此外实时仿真时希望能观察到飞机在某个时刻的高低角和方位角,则可以选择的有LLAHPS和ECF两个坐标系。
LLAHPS采用经纬高表示位置,参考系是大地坐标系;ECF使用飞机在地心地固坐标系下的坐标表示位置。1纬度大约对应111km地球表面距离,北纬60°上1经度大约对应55km地球表面距离,实时仿真的时候,如果步长很小的话,每个步长间飞机飞行的距离很小,导致每个步长间的经纬度变化非常小,使用LLAHPS表示位置变化比较困难,因此应该采用ECF法。
3.2 坐标系转换
采用ECF时,飞机的方位角和高低角由合成速度矢量指定,调整三个轴上的分速度大小,可以同时调整飞机的高低角和方位角。
(1)地面系Axyz
高低角和方位角是相对于地面系来说,地面系Axyz是与地球表面固连的坐标系,其的定义是:坐标系原点选取为航空器的起飞点,Ax轴指向降落点,Ay轴铅锤向上,Az由右手定则确定。地面系相对于地球静止,随地球自转而旋转,因此地面系是个动系。地面系用于描述飞机相对于地面的运动方程。
(2)地面惯性坐标系
地面惯性坐标系在飞行器起飞时和地面系重合,不同的是地面惯性坐标系的原点和坐标轴在惯性空间中保持不动。利用地面惯性坐标系可以建立火箭在惯性空间的运动方程。
(3)地心大地坐标系
地心大地坐标系原点在地心。地心大地经度L,是过地面点的椭球子午面与格林尼治天文台子午面的夹角;地心大地纬度B,是过点的椭球法线(与参考椭球面正交的直线)和椭球赤道面的夹角;大地高H,是地面点沿椭球法线到地球椭球面的距离。
(4)地面系Axyz与地心地固坐标系
之间的方向余弦阵
若设地球为一圆球,飞机起始点O在地球表面的位置可用经度、地心纬度
表示,Ox轴指向飞行方向,该轴与过O点的经线正北切线的夹角称为地心方位角
。转换时,先绕地心地固坐标系Z轴反转90°-
,得到新坐标系;然后绕新坐标系X轴正转
,得到第二个新坐标系;再绕新坐标系的Y轴反转90°+
,就可以使地面系和地心地固坐标系各轴平行。三个欧拉角为90°-
,
, 90°+
,则方向余弦阵为
其中
如果考虑地球为椭球,则地面系Ox轴与 过O点的经线正北切线的夹角称为射击方位角, 此时O点纬度为地理纬度
,则只需将变换阵中的
,
分别用
,
代替即可。
经过方向余弦阵变换只是使坐标轴平行,实际上两个坐标系的原点不重合,因此还要做平移变换才能将一个坐标系下的坐标转换为另一坐标系下的坐标,在这里,因为STK使用地心地固坐标系作为飞行器位置参考系,所以要将地面系坐标转换为地心地固系坐标。设从地心地固系原点指向地面系原点的向量为
则地面系中的一个点
则在地心地固坐标系中的坐标为
(4)地心大地坐标系转地心地固坐标系
设地心大地坐标为,即经纬高,其在地心地固坐标系直角坐标系中的坐标
为
N是基准椭球卯酉圆曲率半径,e为椭球偏心率,它们与地球基准椭球长、短半径关系为:
地球基准椭球的极扁率定义为
根据这个表达式可以推导出地球短半径,一般取6356752.3142m。一般采用WGS-84的基准大地参数代入计算以上参数: