主要内容

利用星历数据建模卫星星座

此示例演示如何将包含24颗卫星的星座(类似于ESA Galileo GNSS星座)的带有时间戳的星历数据添加到一个用于访问分析的卫星场景中。示例使用Aerospace Blockset生成的数据轨道传播算子块。有关更多信息,请参见Aerospace Blockset示例用轨道传播块进行星座建模

satelliteScenario对象支持将以前金宝app生成的、带有时间戳的卫星星历数据从时间序列时间表对象。星历表是一个表,包含了卫星在给定时间内的位置(也可以是速度)状态信息。用于将卫星添加到场景对象的星历数据通过makima插值方法与场景时间步长对齐。这允许您将由Simulink模型生成的数据合并到新的或现有的卫星场景中。金宝app

定义任务参数和星座初始条件

指定任务的开始日期和持续时间。本例使用MATLAB结构组织任务数据。这些结构使得在后面的示例中访问数据更加直观。它们还有助于整理全局基本工作区。

的使命。StartDate = datetime(2020, 11, 30, 22, 23, 24);的使命。时间=小时(24);

本例中的星座是Walker-Delta星座,模型类似于欧洲GNSS(全球导航卫星系统)星座伽利略。该星座由24颗中地球轨道(MEO)卫星组成。卫星在任务开始日期的开普勒轨道元素为:

的使命。ConstellationDefinition =表(......1) 29599.8的e3 *(24日,......半长轴(m)1) 0.0005 * 1(24日,......%偏心1) 56 *的(24日,......%的倾向(度)350吨*酮(24,1),......%升节点右赤度(deg)排序(repmat([0 120 240], 1,8))',......圆角参数(deg)[0:45:315, 15:45:330 30:45:345)”,......%真实异常(deg)'VariableNames', (“(m)”“e”“我(度)”“Ω(度)”“ω”(度)“ν(度)”]);的使命。ConstellationDefinition
ans =24×6表(m) e i(度)Ω(度)ων(度(度) ) ________ ______ _______ _______ _______ _______ 2.96 e + 07年0.0005 56 350 0 0 2.96 0.0005 e + 07年56 350 0 45 2.96 e + 07年0.0005 56 350 0 90 2.96 e + 07年0.0005 56 350 0 135 2.96 e + 07年0.0005 56 350 0 180 2.96 e + 07年0.0005 56 350 0 225 2.96 e + 07年0.0005 56 350 0 270 2.96 e + 07年0.0005 56 350 0 315 2.96 e + 07年0.0005 56 350 120 152.96e+07 0.0005 56 350 120 150 2.96e+07 0.0005 56 350 120 195 2.96e+07 0.0005 56 350 120 240 2.96e+07 0.0005 56 350 120 330⋮

加载Ephemeris Timeseries数据

时间序列对象包含星座中所有24颗卫星的位置和速度数据。这些数据在国际地面参考坐标系(ITRF)中引用,该坐标系是一个以地球为中心的地球固定坐标系(ECEF)。数据是使用Aerospace Blockset生成的轨道传播算子块。有关更多信息,请参见Aerospace Blockset示例用轨道传播块进行星座建模

的使命。星历表=负载(“SatelliteScenarioEphemerisData.mat”“TimeseriesPosITRF”“TimeseriesVelITRF”);mission.Ephemeris.TimeseriesPosITRF
常见属性:Name: " Time: [57x1 double] TimeInfo: [1x1 tsdata. Properties] "timeetdata] Data: [24x3x57 double] DataInfo: [1x1 tsdata. time]更多属性,方法
mission.Ephemeris.TimeseriesVelITRF
常见属性:Name: " Time: [57x1 double] TimeInfo: [1x1 tsdata. Properties] "timeetdata] Data: [24x3x57 double] DataInfo: [1x1 tsdata. time]更多属性,方法

加载卫星星历成satelliteScenario Object

为分析创建一个附属场景对象。

场景= satelliteScenario(任务。StartDate可以,任务。StartDate可以+ hours(24), 60);

使用卫星方法将所有24颗卫星添加到来自ECEF位置和速度时间序列对象的卫星场景中。这个例子使用位置和速度信息;然而,卫星也可以只从位置数据和速度状态估计。名称-值对的可用坐标框架CoordinateFrame“ECEF”“惯性”,“地理”.如果时间序列对象包含TS中的值.TimeInfo.StartDate,该方法使用该值作为timeseries对象的epoch。如果没有StartDate可以定义时,该方法默认使用场景开始日期。

卫星(场景,任务。星历。时间seriesPosITRF, mission.Ephemeris.TimeseriesVelITRF,......“CoordinateFrame”“ecef”“名称”“伽利略”+(桥)
卫星阵列具有属性:名称ID圆锥传感器Gimbals发射器接收器访问地面轨道轨道传播器markcolor marksize ShowLabel LabelFontColor LabelFontSize
disp(场景)
卫星场景与属性:StartTime: 30-Nov-2020 22:23:24 StopTime: 01-Dec-2020 22:23:24 SampleTime: 60观众:[0×0 matlabshared.卫星场景。卫星:[1×24 matlabshared.卫星场景。地面站:[1×0 matlabshared.satellitescenario.]GroundStation]汽车展:1

另外,卫星也可以作为星历添加到卫星场景中,作为MATLAB时间表表格, 或者tscollection.例如,一个时间表包含该位置的前3颗卫星时间序列对象,格式化为使用satelliteScenario对象如下所示。

  • 附属变量由变量(列标题)表示。

  • 每一行包含一个与该行相关联的位置向量时间财产。

时间表(......datetime (getabstime (mission.Ephemeris.TimeseriesPosITRF),“场所”'EN_US'),......挤压(mission.Ephemeris.TimeseriesPosITRF.Data(1::))”,......挤压(mission.Ephemeris.TimeseriesPosITRF.Data(2::))”,......挤压(mission.Ephemeris.TimeseriesPosITRF.Data(3::))”,......'VariableNames', (“Satellite_1”“Satellite_2”“Satellite_3”])
ans =57×3时间表时间Satellite_1 Satellite_2 Satellite_3 ____________________ ________________________________________ ________________________________________ ________________________________________ 11月30日-2020二十二时23分24秒1.8249e + 07 -2.2904e + 07 -4.2009e + 06 2.3678e + 07 -1.075e + 07 1.4119e + 07 1.5239e + 07 7.7076E + 06 2.4177e + 07 30-NOV-2020 22时23分38秒1.8252e + 07 -2.2909e + 07 -4.1563e + 06 2.3662e + 07 -1.0735e + 07 1.4156e + 07 1.5214e + 07 7.7334e06 2.4184e + 07 30-NOV-2020 22时24分53秒1.8268e + 07 -2.2937e + 07 -3.933e + 06 2.3584e + 07 -1.0663e + 07 1.434e + 07 1.5088e + 07 7.8627e +06 2.4222e + 07 30-NOV-2020 22时31分05秒1.8326e + 07 -2.3055e + 07 -2.8121e + 06 2.3185e + 07 -1.028e + 07 1.5243e + 07 1.4466e + 07 8.5229e + 062.4378e + 07 30-NOV-2020 22点48分三十九秒1.8326e + 07 -2.3223e + 07 3.9182e + 05 2.2005e + 07 -8.9966e + 06 1.7621e + 07 1.2798e + 07 1.0506e + 07 2.4539e07 30-NOV-2020 23点08分30秒1.8076e + 07 -2.3078e + 07 3.9992e + 06 2.0643e + 07 -7.2057e + 06 1.9943e + 07 1.1124e + 07 1.2894e + 07 2.4217e + 0730-NOV-2020 23时28分27秒1.7624e + 07 -2.2538e + 07 7.5358e + 06 1.9321e + 07 -5.0678e + 06 2.1838E + 07 9.7076e + 06 1.5379e + 07 2.3362e + 07 30-NOV-2020 23时50分五十九秒1.6968e + 07 -2.1428e + 07 1.1328e + 07 1.7977e + 07 -2.3021e + 06 2.34E +07 8.4636e + 06 1.8183e + 07 2.1782e + 07 01日 -  12月2020 0时14分27秒1.6244e + 07 -1.9712e + 07 1.4937e + 07 1.6838e + 07 8.7771e + 05 2.4329e + 07 7.5789e06 2.0966e + 07 1.9489e + 07 01日 -  12月2020 0时38分42秒1.5585e + 07 -1.7375e + 07 1.8189e + 07 1.6017e + 07 4.355e + 06 2.4512e + 07 7.0779e + 06 2.3551E + 07 1.6498e + 07 01日 -  12月2020 1点04分35秒1.5124e + 07 -1.4345e + 07 2.1006e + 07 1.5585e + 07 8.1065e + 06 2.383e + 07 6.9314e + 06 2.5831e + 071.2718e + 07 01日 -  12月2020 1时31分17秒1.5035e + 07 -1.079e + 07 2.3096e + 07 1.562e + 07 1.1816e + 07 2.2205e + 07 7.0715e + 06 2.7527e + 07 8.3282e +06 01日 -  12月2020 1点58分58秒1.5443e + 07 -6.8501e + 06 2.4303e + 07 1.6102e + 07 1.5274e + 07 1.9601e + 07 7.348e + 06 2.8484e + 07 3.4363e + 06 01-癸-2020 2点27分08秒1.6406e + 07 -2.8152e + 06 2.4478e + 07 1.6925e + 07 1.8197e + 07 1.6103e + 07 7.5521e + 06 2.8587e + 07 -1.6897e + 06 01-DEC-2020 2时55分18秒1.7869e + 07 1.001e + 06 2.3582e + 07 1.7894e + 07 2.0376e + 07 1.1901e + 07 7.4614e + 06 2.7856e + 07 -6.7427e + 0601-DEC-2020 3点23分29秒1.9711e + 07 4.381e + 06 2.1653e + 07 1.8787e + 07 2.1739e + 07 7.1754e + 06 6.8858e + 06 2.6405e + 07 -1.1504e + 07⋮

在卫星上设置图形属性

有许多卫星查看器窗口可以变得拥挤而难以阅读。为了保持窗口可读的,手动控制场景元素的图形属性。

隐藏卫星标签和地面轨道。

集(坐,“ShowLabel”、假);隐藏([坐(:).GroundTrack]);

将同一轨道平面上的卫星设置为相同轨道颜色。

集(坐(1:8)“MarkerColor”“红色”);集(坐九16再者(),“MarkerColor”“蓝色”);集(坐(十七24),“MarkerColor”“绿色”);轨道=[坐(:).Orbit];集(轨道(1:8)“LineColor”“红色”);九16再者集(轨道(),“LineColor”“蓝色”);集(轨道(十七24),“LineColor”“绿色”);

在场景中添加地面站

为了提供准确的定位数据,地球上的一个位置必须在任何给定的时间内访问星座中至少4颗卫星。在本例中,使用三个位置来比较1天分析窗口内地球不同区域的星座访问总量:

  • 美国马萨诸塞州纳蒂克(42.30048)°, -71.34908°

  • 慕尼黑,德国(48.23206°, 11.68445°

  • 印度班加罗尔(12.94448°, 77.69256°

gsUS =地面站(场景,42.30048,-71.34908,......“MinElevationAngle”10“名称”“纳蒂克”);gsDE =地面站(场景,48.23206,11.68445,......“MinElevationAngle”10“名称”“慕尼黑”);gsIN =地面站(场景,12.94448,77.69256,......“MinElevationAngle”10“名称”“班加罗尔”);图geoscatter ([gsUS。纬度gsDE。纬度gsIN。纬度),......[gsUS。经度gsDE。经度gsIN。经度)“红色”“填充”) gelimits ([-75 75], [-180 180]) title(“地面站”

计算地面站到卫星的接入(视线)

计算地面站和每个独立卫星之间的视线访问使用使用权方法。

idx = 1:numel(sat) access(gsUS, sat(idx));访问(gsDE坐(idx));访问(gsIN坐(idx));结束accessUS = [gsUS (:) .Accesses];accessDE = [gsDE (:) .Accesses];accessIN = [gsIN (:) .Accesses];

设置访问颜色以匹配在前面示例中分配的轨道平面颜色。

集(accessUS (1:8)“LineColor”“红色”);集(accessUS九16再者(),“LineColor”“蓝色”);集(accessUS(十七24),“LineColor”“绿色”);集(accessDE(1:8),“LineColor”“红色”);集(accessDE九16再者(),“LineColor”“蓝色”);集(accessDE(十七24),“LineColor”“绿色”);集(accessIN (1:8)“LineColor”“红色”);集(accessIN九16再者(),“LineColor”“蓝色”);集(accessIN(十七24),“LineColor”“绿色”);

以表的形式查看星座中每个地面站和所有卫星之间的完整访问表。按间隔开始时间对访问间隔进行排序。从星历数据中添加的卫星不显示的值StartOrbit和结束轨道

intervalsUS = accessIntervals (accessUS);intervalsUS = sortrows (intervalsUS,“开始时间”“提升”
intervalsUS =40×8表源目标IntervalNumber开始时间EndTime时间StartOrbit EndOrbit  ________ ____________ ______________ ____________________ ____________________ ________ __________ ________ " 纳蒂克”“伽利略”1 - 2020 22:23:24 01 - 11月30 - 20460年12月- 2020年04:04:24南南”纳蒂克”“伽利略2“1 - 2020 22:23:24 01 - 11月30 - 10860年12月- 2020年01:24:24南南”纳蒂克”"GALILEO 3" 1 30-Nov-2020 22:23:24 30-Nov-2020 22:57:24 2040 NaN NaN "Natick" "GALILEO 12" 1 30-Nov-2020 22:23:24 01-Dec-2020 00:00:24 5820 NaN NaN "Natick" "GALILEO 13" 1 30-Nov-2020 22:23:24 30-Nov-2020 23:05:24 2520 NaN NaN "Natick" "GALILEO 18" 1 30-Nov-2020 22:23:24 01-Dec-2020 04:00:24 20220 NaN NaN "Natick" "GALILEO 19" 1 30-Nov-2020 22:23:24 01-Dec-2020 01:42:24 11940 NaN NaN "Natick" "GALILEO 20" 1 30-Nov-2020 22:23:24 30-Nov-2020 22:46:24 1380 NaN NaN "Natick" "GALILEO 11" 1 30-Nov-2020 22:25:24 01-Dec-2020 00:18:24 6780 NaN NaN "Natick" "GALILEO 17" 1 30-Nov-2020 22:50:24 01-Dec-2020 05:50:24 25200 NaN NaN "Natick" "GALILEO 8" 1 30-Nov-2020 23:20:24 01-Dec-2020 07:09:24 28140 NaN NaN "Natick" "GALILEO 7" 1 01-Dec-2020 01:26:24 01-Dec-2020 10:00:24 30840 NaN NaN "Natick" "GALILEO 24" 1 01-Dec-2020 01:40:24 01-Dec-2020 07:12:24 19920 NaN NaN "Natick" "GALILEO 14" 1 01-Dec-2020 03:56:24 01-Dec-2020 07:15:24 11940 NaN NaN "Natick" "GALILEO 6" 1 01-Dec-2020 04:05:24 01-Dec-2020 12:14:24 29340 NaN NaN "Natick" "GALILEO 23" 1 01-Dec-2020 04:10:24 01-Dec-2020 08:03:24 13980 NaN NaN ⋮
intervalsDE = accessIntervals (accessDE);intervalsDE = sortrows (intervalsDE,“开始时间”“提升”
intervalsDE =40×8表源目标IntervalNumber开始时间EndTime时间StartOrbit EndOrbit  _________ ____________ ______________ ____________________ ____________________ ________ __________ ________ " 慕尼黑”“伽利略2“1 - 2020 22:23:24 01 - 11月30 - 22260年12月- 2020年04:34:24南南“慕尼黑”“伽利略3“1 - 2020 22:23:24 01 - 11月30 - 12900年12月- 2020年01:58:24南南"伽利略4" 1 30- 11 -2020 22:23:24 30- 11 -2020 23:05:24 2520南南"伽利略" 10" 1 30- 11 -2020 22:23:24 30- 11 -2020 23:23:24 23:23:24 5700南南"伽利略" 19" 1 30- 11 -2020 22:23:24 01-Dec-2020 01:36:24 11580南南"伽利略" 20" 1 30- 11 -2020 22:23:24 01-Dec-2020 00:15:24 6720南南"伽利略" 2130-Nov-2020 22:23:24 30-Nov-2020 06:42:24 27420南南"慕尼黑" "伽利略16" 1 30-Nov-2020 22:34:24 01-Dec-2020 02:22:24 1368001-Dec-2020 04:47:24 1980 NaN NaN "Munchen" "GALILEO 14" 1 01-Dec-2020 04:57:24 01-Dec-2020 07:27:24 23820NaN NaN "Munchen" "GALILEO 7" 1 01-Dec-2020 04:35:24 01-Dec-2020 09:43:24 18480 NaN NaN⋮
intervalsIN = accessIntervals (accessIN);intervalsIN = sortrows (intervalsIN,“开始时间”“提升”
intervalsIN =31日×8表源目标IntervalNumber开始时间EndTime时间StartOrbit EndOrbit  ___________ ____________ ______________ ____________________ ____________________ ________ __________ ________ " 班加罗尔”“伽利略3“1 - 2020 22:23:24 01 - 11月30 - 24540年12月- 2020年05:12:24南南”班加罗尔“伽利略4 1 30 - 01 - 12月- 2020年11月- 2020年22:23:24 02:59:24 16560南南“班加罗尔”"GALILEO 5" 1 30-Nov-2020 22:23:24 01-Dec-2020 00:22:24 7140 NaN NaN "Bangalore" "GALILEO 9" 1 30-Nov-2020 22:23:24 01-Dec-2020 03:37:24 18840 NaN NaN "Bangalore" "GALILEO 10" 1 30-Nov-2020 22:23:24 01-Dec-2020 00:09:24 6360 NaN NaN "Bangalore" "GALILEO 16" 1 30-Nov-2020 22:23:24 01-Dec-2020 08:44:24 37260 NaN NaN "Bangalore" "GALILEO 21" 1 30-Nov-2020 22:23:24 30-Nov-2020 23:25:24 3720 NaN NaN "Bangalore" "GALILEO 22" 1 30-Nov-2020 22:23:24 30-Nov-2020 22:58:24 2100 NaN NaN "Bangalore" "GALILEO 15" 1 01-Dec-2020 00:17:24 01-Dec-2020 11:16:24 39540 NaN NaN "Bangalore" "GALILEO 2" 1 01-Dec-2020 00:25:24 01-Dec-2020 07:10:24 24300 NaN NaN "Bangalore" "GALILEO 22" 2 01-Dec-2020 00:48:24 01-Dec-2020 05:50:24 18120 NaN NaN "Bangalore" "GALILEO 21" 2 01-Dec-2020 01:32:24 01-Dec-2020 08:29:24 25020 NaN NaN "Bangalore" "GALILEO 1" 1 01-Dec-2020 03:06:24 01-Dec-2020 07:17:24 15060 NaN NaN "Bangalore" "GALILEO 20" 1 01-Dec-2020 03:36:24 01-Dec-2020 12:38:24 32520 NaN NaN "Bangalore" "GALILEO 14" 1 01-Dec-2020 05:48:24 01-Dec-2020 13:29:24 27660 NaN NaN "Bangalore" "GALILEO 19" 1 01-Dec-2020 05:53:24 01-Dec-2020 17:06:24 40380 NaN NaN ⋮

查看卫星场景

打开场景的3d查看窗口。查看器窗口包含本例中前面定义的所有24颗卫星和3个地面站。在每个地面站和卫星之间的相应的访问间隔期间画一条线。

viewer3D = satelliteScenarioViewer(场景);

比较地面站之间的访问

使用accessStatus方法计算每个卫星和地面站之间的访问状态。在一天的分析窗口内绘制每个地面站的累计访问。

%在场景中初始化大小等于时间步数的数组步伐= mission.StartDate:秒(60):mission.StartDate +天(1);statusUS = zeros(1, numel(timeSteps)); / /时间statusDE = statusUS;statusIN = statusUS;在每个时间步%总和累计访问idx = 1:24 statusUS = statusUS + accessStatus(accessUS(idx));statusDE = statusDE + accessStatus(accessDE(idx));statusIN = statusIN + accessStatus(accessIN(idx));结束清晰的idx;副区(3,1,1);图(时间步长,statusUS);标题(“伽利略纳蒂克”) ylabel (卫星“#”)次要情节(3、1、2);情节(步伐,statusDE);标题(“伽利略慕尼黑”) ylabel (卫星“#”)次要情节(3、1,3);情节(步伐,statusIN);标题(“伽利略班加罗尔”) ylabel (卫星“#”

收集接入间隔指标表中的每个地面站进行比较。

statusTable = [table(height(intervalsUS), height(intervalsDE), height(intervalsIN));......表(和(intervalsUS.Duration) / 3600,和(intervalsDE.Duration) / 3600 (intervalsIN.Duration) / 3600)之和;......表(意味着(intervalsUS.Duration / 60),意味着(intervalsDE.Duration / 60),意味着(intervalsIN.Duration / 60));......表(均值(statusUS, 2),均值(statusDE, 2),均值(statusIN, 2));......表(min (statusUS)、min (statusDE)、min (statusIN));......表(max (statusUS)、马克斯(statusDE)、马克斯(statusIN)));statusTable.Properties.VariableNames = [“纳蒂克”“慕尼黑”“班加罗尔”];statusTable.Properties.RowNames = [“总间隔#”“总间隔时间(小时)”......“平均间隔长度(分钟)”“可观测卫星的平均值”......“视野中的最小卫星数”“视野中的最大卫星数量”];statusTable
statusTable =6×3表纳蒂克慕尼黑班加罗尔  ______ _______ _________ 总间隔40 # 40 31日总间隔时间(小时)167.88 169.95 180.42平均间隔时间长度(分钟)251.82 254.93 349.19平均#卫星的卫星视图的视图7.018 7.1041 7.5337分钟# 5 5 5马克斯9 10 9 #的卫星视图

沃克 - 三角星座像伽利略跨经度均匀分布。纳提克和慕尼黑位于纬度相近,因此具有相对于星座很相似访问特性。班加罗尔是一个纬度接近赤道。尽管有个别接入间隔的较低数目,它具有视野中的卫星的最高平均数目,最高整体间隔时间,最长平均间隔持续时间(由约95分钟)。所有地点始终有鉴于至少4颗卫星,根据需要为GNSS三边测量。

参考文献

[1] Wertz, James R, David F. Everett和Jeffery J. Puschell。太空任务工程:新的Smad.加州霍桑:微观世界出版社,2011。打印。

[2]欧洲航天局:伽利略事实和数据。https://www.esa.int/Applications/Navigation/Galileo/Facts_and_figures

另请参阅

对象

功能

相关的例子

更多关于