主要内容

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

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

satelliteScenario对象支持将先前生成的、带有时间戳的卫星星历数据从timeseries时间表对象。星历表是一个包含卫星在给定时间段内的位置(和可选的速度)状态信息的表。用于向场景对象添加卫星的Ephemeris数据通过makima插值方法要与场景时间步长保持一致。这允许您将由Simulink模型生成的数据合并到新的或现有的卫星场景中。

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

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

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

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

的使命。ConstellationDefinition =表(...1) 29599.8的e3 *(24日,...半长轴(m)1) 0.0005 * 1(24日,...%偏心1) 56 *的(24日,...%的倾向(度)1) 350 *(24日,...升节的右经度(度)Sort (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 0 0.0005 270 2.96 e + 07年56 350 0.0005 315 2.96 e + 07年56 350 0.0005 120 15 2.96 e + 07年56 350 0.0005 120 2.96 e + 60 07年56 350 120 105 2.96 0.0005 e + 07年56 350 120 150 2.96 e + 07 56 350 120 195 0.0005 2.96 0.0005 e + 07年56 350 120 2402.96e+07 0.0005 56 350 120 285 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
Time: [57x1 double] TimeInfo: [1x1 tsdata. Name: " Time: [57x1 double] TimeInfo: [1x1 tsdata. Name: Time: [57x1 double]timemetadata] Data: [24x3x57 double] DataInfo: [1x1 tsdata.]更多的属性,方法
mission.Ephemeris.TimeseriesVelITRF
Time: [57x1 double] TimeInfo: [1x1 tsdata. Name: " Time: [57x1 double] TimeInfo: [1x1 tsdata. Name: Time: [57x1 double]timemetadata] Data: [24x3x57 double] DataInfo: [1x1 tsdata.]更多的属性,方法

加载卫星蜉蝣到satelliteScenario Object

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

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

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

卫星(场景,任务。时间seriesPosITRF, mission.Ephemeris.TimeseriesVelITRF,...CoordinateFrame =“ecef”、名称=“伽利略”+(桥)
卫星阵列,具有以下属性:名称ID ConicalSensors Gimbals发射器接收机访问地面轨道轨道轨道传播器MarkerColor MarkerSize ShowLabel LabelFontColor LabelFontSize
disp(场景)
StartTime: 30- 11 -2020 22:23:24 StopTime: 01- 12 -2020 22:23:24 SampleTime: 60 AutoSimulate: 1 satellite: [1×24 matlabshare . satitescenario .]卫星]地面站:[1×0 matlabshared. Satellite escenario.]观众:[0×0 matlabshare .satellite itescenario.]查看器]汽车展:1

另外,卫星也可以作为蜉蝣添加到卫星场景中,如MATLAB时间表表格,或tscollection.例如,一个时间表包含该位置的前3颗卫星timeseries对象,该对象已格式化以便与一起使用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  ____________________ ________________________________________ ________________________________________ ________________________________________ 30 - 11月- 07年2020 22:23:24 1.8249 e + e + -2.2904 07年-4.2009 2.3678 e + e + 06 07年-1.075 1.4119 e + e + 07年07年1.5239 7.7076 e + e + 07年06 2.4177 e + 30 - 11月- 2020年07 22:23:38 1.8252 -2.2909 e + e + 07年07年-4.1563 2.3662 e + e + 06 07年-1.0735 1.4156 e + e + 07年07年1.5214 7.7334 e + e + 07年06 2.4184 e + 30 - 11月- 2020年07 22:24:53 1.8268 -2.2937 e + e + 07年07年-3.933 e + e + 07年06 2.3584-1.0663 e + 07年1.434 e + 07年1.5088 7.8627 e + e + 07年06 2.4222 e + 30 - 11月- 2020年07 22:31:05 1.8326 -2.3055 e + e + 07年07年-2.8121 2.3185 e + e + 06 07年-1.028 1.5243 e + e + 07年07年1.4466 8.5229 e + e + 07年06 2.4378 e + 30 - 11月- 2020年07 22:48:39 1.8326 -2.3223 e + e + 07年07年3.9182 2.2005 e + e + 05年07年-8.9966 1.7621 e + e + 06 07年1.2798 1.0506 e + e + 07年07年2.4539 e + 30 - 11月- 2020年07 23:08:30 1.8076 e + 07年-2.3078 3.9992 e + e + 07年06年2.0643 -7.2057 e + e + 07年06 1.9943 e + 07年1.1124 1.2894 e + e + 07年07年2.4217 e + 30 - 11月- 2020年07 23:28:27 1.7624 e + 07年-2.2538 7.5358 e + e + 07年06年1.9321 -5.0678 e + e + 07年062.1838 9.7076 e + e + 07年06年1.5379 2.3362 e + e + 07年07 - 2020 23:50:59 1.6968 e + 11月30 - 07年-2.1428 1.1328 e + e + 07年07年1.7977 -2.3021 e + e + 07年06年2.34 8.4636 e + e + 07年06年1.8183 2.1782 e + e + 07年07年01 - 12月- 2020 00:14:27 1.6244 -1.9712 e + e + 07年07年1.4937 1.6838 e + e + 07年07年8.7771 2.4329 e + e + 05年07年7.5789 2.0966 e + e + 06 07年1.9489 e + 07年01 - 12月- 2020 00:38:42 1.5585 e + 07年-1.7375 1.8189 e + e + 07年07年1.6017 4.355 e + e + 07年06年2.4512 7.0779 e + e + 07年06 2.3551 1.6498 e + e + 07年07年01 - 12月- 2020 01:04:35 1.5124 -1.4345 e + e + 07年07年2.1006 1.5585 e + e + 07年07年8.1065 e + e + 07年06 2.3836.9314 e + 06年2.5831 1.2718 e + e + 07年07年01 - 12月- 2020 01:31:17 1.5035 e + 07年-1.079 2.3096 e + e + 07年07年1.562 1.1816 e + e + 07年07年2.2205 7.0715 e + e + 07年06 2.7527 e + 07年8.3282 e + 01 - 12月- 2020年06 01:58:58 1.5443 e + 07年-6.8501 2.4303 e + e + 06 07年1.6102 1.5274 e + e + 07年07年1.9601 7.348 e + e + 07年06 2.8484 e + 07年3.4363 e + 01 - 12月- 2020年06 02:27:08 1.6406 e + 07年-2.8152 2.4478 e + e + 06 07年1.6925 1.8197 e + e + 07年07年1.6103 7.5521 e + e + 07年06 2.8587 e + 07年-1.6897 e + 01 - 12月- 2020年06 02:55:18 1.7869 e + 07年1.001 2.3582 e + e + 06 07年1.7894 2.0376 e + e + 07年07年1.1901 7.4614 e + e + 07年062.7856e+07 -6.7427e+06 01- 12 -2020 03: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

在卫星上设置图形属性

设置卫星在同一轨道平面上具有相同的轨道颜色。

(坐(1:8),MarkerColor =“# FF6929”);(坐九16再者(),MarkerColor =“# 139 fff”);(坐(十七24),MarkerColor =“# 64 d413”);轨道=[坐(:).Orbit];集(轨道(1:8)LineColor =“# FF6929”);九16再者集(轨道(),LineColor =“# 139 fff”);集(轨道(十七24),LineColor =“# 64 d413”);

在场景中添加地面站

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

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

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

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

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

图中包含一个axes对象。axes对象包含一个scatter类型的对象。

计算地面站到卫星访问(视距能见度)

计算地面站与每颗卫星之间的视距访问访问方法。

access = access(gsUS, sat);accessDE = access(gsDE, sat);accessIN = access(gsIN, sat);

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

设置(accessUS,线宽=“1”);集(accessUS (1:8) LineColor =“# FF6929”);集(accessUS九16再者(),LineColor =“# 139 fff”);集(accessUS(十七24),LineColor =“# 64 d413”);设置(accessDE,线宽=“1”);集(accessDE (1:8) LineColor =“# FF6929”);集(accessDE九16再者(),LineColor =“# 139 fff”);集(accessDE(十七24),LineColor =“# 64 d413”);设置(accessIN,线宽=“1”);集(accessIN (1:8) LineColor =“# FF6929”);集(accessIN九16再者(),LineColor =“# 139 fff”);集(accessIN(十七24),LineColor =“# 64 d413”);

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

intervalsUS = accessIntervals (accessUS);intervalsUS = sortrows (intervalsUS,“开始时间”“提升”
intervalsUS =40×8表源目标IntervalNumber StartTime EndTime Duration StartOrbit EndOrbit ____________________ ______________ ____________________ ____________________ __________________ ________ "Natick" "GALILEO 1" 1 30- 11 -2020 22:23:24 01- 12 -2020 04:04:24 20460 NaN NaN "Natick" "GALILEO 2" 1 30- 11 -2020 22:23:24 01- 12 -2020 01:24:24 10860 NaN NaN "Natick" "GALILEO 3" 1 30- 11 -2020 22:23:24 30- 11 -2020 22:57:24 2040 NaN NaN "Natick" "GALILEO 12" 1 30- 11 -2020 22:23:24 01- 12 -2020 00:00:24 5820 NaN NaN“Natick”“GALILEO 17”1 30- 11 -2020 22:23:24 30- 11 -2020 23:05:24 2520南南“Natick”“GALILEO 18”1 30- 11 -2020 22:23:24 01- 12 -2020 01:42:24 11940南南“Natick”“GALILEO 20”1 30- 11 -2020 22:23:24 30- 11 -2020 22:25:24 30- 11 -2020 22:25:24 6780南南“Natick”“GALILEO 17”1 30- 11 -2020 22:25:24 01- 12 -2020 05:50:24 25200南南“Natick”“GALILEO 8”130840南“纳迪克”“伽利略24”1 01- 12 -2020 01:40:24 01- 12 -2020 07:12:24 19920南“纳迪克”“伽利略14”1 01- 12 -2020 03:56:24 01- 12 -2020 07:15:24 11940南“纳迪克”“伽利略6”1 01- 12 -2020 04:05:24 01- 12 -2020 12:14:24 29340南“纳迪克”“伽利略23”1 01- 12 -2020 04:10:24 01- 12 -2020 08:03:24 13980南”
intervalsDE = accessIntervals (accessDE);intervalsDE = sortrows (intervalsDE,“开始时间”“提升”
intervalsDE =40×8表源目标IntervalNumber StartTime EndTime Duration StartOrbit EndOrbit _________ ____________ ______________ ____________________ ____________________ __________________ ________ "Munchen" "GALILEO 2" 1 30- 11 -2020 22:23:24 01- 12 -2020 04:34:24 22260 NaN NaN "Munchen" "GALILEO 3" 1 30- 11 -2020 22:23:24 01- 12 -2020 01:58:24 12900 NaN NaN "Munchen" "GALILEO 4" 1 30- 11 -2020 22:23:24 30- 11 -2020 23:05:24 2520 NaN NaN "Munchen" "GALILEO 10" 1 30- 11 -2020 22:23:24 30- 11 -2020 23:58:24 5700 NaN1 30- 11 -2020 22:23:24 01- 12 -2020 01:36:24 11580南南“Munchen”“GALILEO 20”1 30- 11 -2020 22:23:24 01- 12 -2020 22:28:24 6720南南“Munchen”“GALILEO 21”1 30- 11 -2020 22:23:24 30- 11 -2020 02:22:24 13680南南“Munchen”“GALILEO 18”1 30- 11 -2020 22:41:24 01- 12 -2020 02:31:24 13800南南“Munchen”“GALILEO 1”1 30- 11 -2020 23:05:24 01- 12 -2020 06:42:24 27420南南“Munchen”1 01- 12 -2020 01:05:24 01- 12 -2020 03:00:24 6900南南“慕尼黑”“伽利略8”1 01- 12 -2020 01:57:24 01- 12 -2020 08:25:24 23280南南“慕尼黑”“伽利略14”1 01- 12 -2020 02:36:24 01- 12 -2020 10:19:24 27780南南“慕尼黑”“伽利略7”1 01- 12 -2020 04:35:24 01- 12 -2020 09:43:24 18480南南“伽利略15”1 01- 12 -2020 23:29:24 01- 12 -2020 09:43:24 18480南南“伽利略17”1 01- 12 -2020 01:57:24 01- 12 -2020 08:25:24
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 - 2020 22:23:24 01 - 11月30 - 16560年12月- 2020年02:59:24南南”班加罗尔”“伽利略5“1 - 2020 22:23:24 01 - 11月30 - 7140年12月- 2020年00:22:24南南”班加罗尔”“伽利略9“1 30 - 01 - 12月- 2020年11月- 2020年22:23:24 03:37:2418840南南“班加罗尔”“伽利略2”1 30- 12 -2020 22:23:24 01- 12 -2020 08:44:24 37260南南“班加罗尔”“伽利略21”1 30- 11 -2020 22:23:24 30- 11 -2020 23:25:24 3720南南“班加罗尔”“伽利略22”1 30- 11 -2020 22:23:24 30- 11 -2020 22:58:24 2100南南“班加罗尔”“伽利略15”1 01- 12 -2020 00:17:24 01- 12 -2020 11:16:24 39540南“班加罗尔”“伽利略2”1 01- 12 -2020 00:25:24 01- 12 -2020 07:10:24 2430001- 12 -2020 05:50:24 18120南“班加罗尔”“伽利略21”2 01- 12 -2020 01:32:24 01- 12 -2020 08:29:24 25020南“班加罗尔”“伽利略1”1 01- 12 -2020 03:06:24 01- 12 -2020 07:17:24 15060南“班加罗尔”“伽利略20”1 01- 12 -2020 03:36:24 01- 12 -2020 12:38:24 32520南“班加罗尔”“伽利略14”1 01- 12 -2020 05:48:24 01- 12 -2020 13:29:24 27660南“班加罗尔”“伽利略19”1 01- 12 -2020 05:53:24 01- 12 -2020 17:06:24 40380南NaN ⋮

查看卫星场景

打开场景的3d查看器窗口。查看器窗口包含本例中前面定义的所有24颗卫星和三个地面站。在每个地面站和卫星对应的访问间隔期间,在它们之间画一条线。隐藏卫星和地面站的详细信息ShowDetails名称-值对.显示卫星轨道和地面站位置的标签。

viewer3D = satellite itescenarioviewer (scenario, ShowDetails=false);显示(sat.Orbit);gsUS。ShowLabel = true;gsUS。LabelFontSize = 11;gsDE。ShowLabel = true;gsDE。LabelFontSize = 11; gsIN.ShowLabel = true; gsIN.LabelFontSize = 11;

比较地面站之间的访问

使用accessStatus方法计算每个卫星和地面站之间的访问状态。输出数组的每一行都对应于星座中的一颗卫星。每一列都对应于场景中的时间步骤。的值真正的表示卫星可以在该特定时间样本访问该飞机。的第二个输出accessStatus包含场景的时间步骤。绘制每个地面站在一天分析窗口内的累计访问。

[statusUS, timeSteps] = accessStatus(accesssus);statusDE = accessStatus (accessDE);statusIN = accessStatus (accessIN);%每个时间步的累计访问的总和status = sum(status, 1);statusDE = sum(status, 1);statusIN = sum(status, 1);次要情节(1,1);楼梯(步伐,statusUS);标题(“伽利略纳蒂克”) ylabel (卫星“#”)次要情节(3、1、2);楼梯(步伐,statusDE);标题(“伽利略慕尼黑”) ylabel (卫星“#”)次要情节(3、1,3);楼梯(步伐,statusIN);标题(“伽利略班加罗尔”) ylabel (卫星“#”

图中包含3个轴对象。标题为Natick的axis对象1对GALILEO包含一个类型为stair的对象。标题为München的Axes对象2对GALILEO包含一个楼梯类型的对象。标题为Bangalore到GALILEO的axis对象3包含一个类型为stair的对象。

在表格中收集每个地面站的访问间隔指标,以便进行比较。

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));...table(mean(statusUS, 2), mean(statusDE, 2), mean(statusIN, 2));...表(min (statusUS)、min (statusDE)、min (statusIN));...表(max (statusUS)、马克斯(statusDE)、马克斯(statusIN)));statusTable.Properties.VariableNames = [“纳蒂克”“慕尼黑”“班加罗尔”];statusTable.Properties.RowNames = [“总间隔数”“总间隔时间(小时)”...平均间隔长度(min)“观测卫星的平均数量”...“可观测卫星的最小数量”“视野内卫星的最大数量”];statusTable
statusTable =6×3表Natick München Bangalore ______ _______ _________总间隔数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

像伽利略这样的沃克-德尔塔星座在经度上均匀分布。Natick和München位于相似的纬度,因此在星座方面具有非常相似的访问特征。班加罗尔的纬度更接近赤道。尽管单个访问间隔的数量较低,但它拥有最高的观测卫星平均数量、最高的总体间隔时间和最长的平均间隔持续时间(约95分钟)。所有地点总是至少有4颗卫星在视野内,这是GNSS三边化所需要的。

参考文献

[1]维尔兹,詹姆斯R,大卫F.埃弗雷特,杰弗瑞J.普切尔。太空任务工程:新的Smad.加州霍桑:微观世界出版社,2011年。打印。

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

另请参阅

对象

功能

相关的例子

更多关于

Baidu
map