主要内容

星座建模与轨道传播块

这个例子展示了如何传播一个卫星星座的轨道,并计算和可视化单个卫星和几个地面站之间的访问间隔。它使用:

  • 航空航天Blockset轨道传播算子

  • 航空航天工具箱satelliteScenario对象

航空航天工具箱satelliteScenario对象允许您从时间序列或时间表对象将以前生成的、带有时间戳的蜉蝣数据加载到场景中。数据被插入到场景对象中,以与场景时间步骤保持一致,允许您将在Simulink模型中生成的数据合并到新的或现有的模型中satelliteScenario对象。这个例子展示了如何在Simulink中使用Aerospace Blockset传播卫星星座轨道传播算子块,并将已记录的蜉蝣数据加载到satelliteScenario对象,用于访问分析。

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

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

的使命。年代tartDate = datetime(2020, 11, 30, 22, 23, 24); mission.Duration = hours(24);

这个例子中的星座是一个Walker-Delta星座,模型类似于Galileo,欧洲GNSS(全球导航卫星系统)星座。该星座由24颗中地球轨道卫星(MEO)组成。

沃克-德尔塔星座使用的符号是:

T / P / F

在哪里

倾向

T 卫星总数

P 等空间几何平面的数目

F 相邻平面上卫星之间的间隔

沃克-三角洲星座是一种常见的解决方案,可以最大限度地增加地球的几何覆盖率,同时减少执行任务所需的卫星数量。伽利略导航系统是沃克-德尔塔 56 24 / 3. / 1 星座(24颗卫星分3个平面,倾斜56度),轨道29599.8公里。

指定星座的开普勒轨道元素的使命。年代tartDate

mission. satellite . semimajoraxis = 29599.8e3 * ones(24,1);%米卫星。偏心= 0.0005 * ones(24,1);卫星倾角= 56 * 1 (24,1);%度mission. satellite . argofperiapsis = 350 * ones(24,1);%度

Walker-Delta星座轨道平面的上升节点均匀分布于 360 P 在赤道周围。每架飞机的卫星数S表示为 年代 T P .总共有24颗卫星,这就产生了3个8颗卫星的平面,每隔120度绕赤道运行。每个轨道平面上的卫星以的间隔分布 360 年代 也就是45度。

task . satellite . raan = sort(repmat([0 120 240], 1,8))';%度task . satellite . trueanomaly = repmat(0:45:315,1,3)';%度

最后,考虑相邻轨道平面之间的相对角度偏移。相位差为 Δ ϕ F 360 T 在这里是15度。

task . satellite . trueanomaly (9:16) = task . satellite . trueanomaly (9:16) + 15;task . satellite . trueanomaly (17:24) = task . satellite . trueanomaly (17:24) + 30;

在表中显示星座节点。

ConstellationDefinition =表(mission.Satellites.SemiMajorAxis,...mission.Satellites.Eccentricity,...mission.Satellites.Inclination,...mission.Satellites.RAAN,...mission.Satellites.ArgOfPeriapsis,...mission.Satellites.TrueAnomaly,...“VariableNames”, (“(m)”“e”“我(度)”“Ω(度)”“ω”(度)“ν(度)”])
ConstellationDefinition =24×6表(m) e i(度)Ω(度)ων(度(度) ) ________ ______ _______ _______ _______ _______ 2.96 e + 07年0.0005 56 350 0 0 2.96 0.0005 e + 07年56 350 45 2.96 e + 07年0.0005 56 0 350 0.0005 90 2.96 e + 07年56 350 0.0005 135 2.96 e + 07年56 0 350 0.0005 180 2.96 e + 07年56 350 0.0005 225 2.96 e + 07年56 0 350 0.0005 270 2.96 e + 07年56 0 350 0.0005 315 2.96 e + 07年56 120 350 15 2.96 e + 07年0.0005 56 120 0.0005 350 2.96 e + 60 07年56 120 350 105 2.96 0.0005 e + 07年56 120 350 150 2.96 e + 07 56 120 350 195 0.0005 2.96 0.0005 e + 07年56 120 350 2402.96e+07 0.0005 56 120 350 285 2.96e+07 0.0005 56 120 350 330

打开并配置轨道传播模型

打开包含的Simulink模型。此模型包含轨道传播算子连接到输出端口的块。的轨道传播算子块支持向量化。的初始条件数组,从而允许您在单个块中建模多个卫星块的参数窗口或使用set_param.该模型还包括“任务分析和可视化”部分,其中包含一个仪表板回调按钮.控件中定义的卫星或星座时,此按钮将运行模型,在全局基本工作区中创建一个新的satellite escenario对象轨道传播算子块,并为新场景打开卫星场景查看器窗口。要查看此操作的源代码,请双击回调按钮。“任务分析和可视化”部分是一个独立的工作流,用于创建一个新的satellite escenario对象,并没有作为本示例的一部分使用。

的使命。mdl =“OrbitPropagatorBlockExampleModel”;open_system (mission.mdl);

定义的路径轨道传播算子块。

mission.Satellites.blk =任务。mdl +“/轨道传播算子”

设置卫星初始条件。要指定上一节中定义的开普勒轨道元素集,请使用set_param

set_param (mission.Satellites.blk...startDate可以= num2str (juliandate (mission.StartDate)),...stateFormatNum =“轨道要素”...orbitType =“开普勒”...semiMajorAxis =“mission.Satellites.SemiMajorAxis”...离心率=“mission.Satellites.Eccentricity”...倾向=“mission.Satellites.Inclination”...raan =“mission.Satellites.RAAN”...argPeriapsis =“mission.Satellites.ArgOfPeriapsis”...trueAnomaly =“mission.Satellites.TrueAnomaly”);

设置块的位置和速度输出端口使用以地为中心的固定地坐标系,即国际地面参考坐标系ITRF。

set_param (mission.Satellites.blk...centralBody =“地球”...outportFrame =“固定框架”);

配置宣传者。此示例使用扁椭球(J2)在卫星轨道计算中包含了二阶纬向谐波摄动的传播子,考虑了地球的扁率。

set_param (mission.Satellites.blk...宣传者=“数值(高精度)”...gravityModel =“扁椭球(J2)”...useEOPs =“关闭”);

应用模型级求解器设置set_param.当使用数值传播器时,为了获得最佳性能和精度,请使用变步长求解器。

set_param (mission.mdl...SolverType =“变步”...SolverName =“VariableStepAuto”...RelTol =“1 e-6”...AbsTol =“1 e -”...StopTime = string(秒(mission.Duration)));

将模型输出端口数据保存为时间序列对象的数据集。

set_param (mission.mdl...SaveOutput =“上”...OutputSaveName =“你”...SaveFormat =“数据集”);

运行模型并收集卫星星历表

模拟模型。

的使命。年代我mOutput = sim(mission.mdl);

从模型输出数据结构中提取位置和速度数据。

mission.Satellites.TimeseriesPosECEF = mission.SimOutput.yout {1} . values;mission.Satellites.TimeseriesVelECEF = mission.SimOutput.yout {2} . values;

在时间序列对象中从任务设置开始数据。

mission.Satellites.TimeseriesPosECEF.TimeInfo.StartDate = mission.StartDate;mission.Satellites.TimeseriesVelECEF.TimeInfo.StartDate = mission.StartDate;

时间序列对象包含所有24颗卫星的位置和速度数据。

mission.Satellites.TimeseriesPosECEF
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);

方法将ECEF位置和速度时间序列对象中的所有24颗卫星添加到卫星场景中卫星方法。

卫星(场景,任务。T我meseriesPosECEF, mission.Satellites.TimeseriesVelECEF,...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

在卫星上设置图形属性

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

(坐(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颗卫星相连。在本例中,使用三个MathWorks位置来比较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和Stop轨道的值。

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。年代howLabel = 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] Beech, Theresa W., Sefania Cornana, Miguel B. Mora。三种卫星星座设计算法的研究。第十四届空间飞行动力学国际研讨会,巴西,Foz do Iguaçu。

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

另请参阅

|

Baidu
map