主要内容

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

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

satelliteScenario对象支持将以前金宝app生成的、带有时间戳的卫星星历数据从timeseries时间表对象。星历表是一个表,包含了卫星在给定时间内的位置(也可以是速度)状态信息。用于将卫星添加到场景对象的星历数据通过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日,...%的倾向(度)1) 350 *(24日,...%升节点右赤度(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”“惯性”,“地理”.如果timeseries对象包含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颗卫星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 e + e + 07年07年-2.2909-4.1563e+06 2.3662e+07 -1.0735e+07 1.4156e+07 1.5214e+07 7.7334e+06 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+06 2.4378e+07 30-Nov-2020 22:48:39 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.4539e+07 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+07 30-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:59 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-Dec-2020 00:14:27 1.6244e+07 -1.9712e+07 1.4937e+07 1.6838e+07 8.7771e+05 2.4329e+07 7.5789e+06 2.0966e+07 1.9489e+07 01-Dec-2020 00: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-Dec-2020 01: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+07 1.2718e+07 01-Dec-2020 01: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-Dec-2020 01: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-Dec-2020 02: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 02: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+06 01-Dec-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 ⋮

在卫星上设置图形属性

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

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

集(坐,“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;次要情节(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 #的卫星视图

像伽利略这样的沃克-德尔塔星座均匀分布在经度上。Natick和München位于相似的纬度,因此对星座有非常相似的访问特性。班加罗尔的纬度更接近赤道。尽管有较低的个别访问间隔,它有最高的平均卫星数量,最高的总体间隔时间,最长的平均间隔时间(大约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