主要内容

利用轨道传播模块进行任务分析

这个例子展示了如何计算和可视化卫星和地面站之间的视线访问间隔。它使用:

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

  • 航空航天工具箱satelliteScenario对象

  • 映射的工具箱worldmapgeoshow功能

航空航天工具箱satelliteScenario对象允许用户以两种方式向场景添加卫星和星座。首先,卫星初始条件可以从一个双线元素文件(.tle)或开普勒轨道元素定义,然后利用开普勒问题、简化的一般摄动算法SDP-4或简化的深空摄动算法SDP-4传播卫星。此外,可以将以前生成的带有时间戳的蜉蝣数据从时间序列或时间表对象添加到场景中。数据被插入到场景对象中,以与场景时间步长保持一致。第二个选项可用于将在Simulink模型中生成的数据合并到新的或现有的卫星场景中。金宝app这个例子展示了如何使用航空航天模块集的数值积分传播卫星轨迹轨道传播算子块,并将记录的蜉蝣数据加载到satelliteScenario用于访问分析的对象。

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

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

的使命。StartDate = datetime(2019, 1, 4, 12, 0, 0);的使命。时间=小时(6);

为卫星指定开普勒轨道元素的使命。StartDate可以

mission.Satellite.SemiMajorAxis = 6786233.13;%米mission.Satellite.Eccentricity = 0.0010537;mission.Satellite.Inclination = 51.7519;%度mission.Satellite.RAAN = 95.2562;%度mission.Satellite.ArgOfPeriapsis = 93.4872;%度mission.Satellite.TrueAnomaly = 202.9234;%度

指定下面要在访问分析中使用的地面站的纬度和经度。

mission.GroundStation.Latitude =42%度mission.GroundStation.Longitude =-71年%度

建立和配置轨道传播模型

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

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

的路径轨道传播算子块在模型中。

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

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

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

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

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

配置宣传者。这个例子使用一个数字传播器来获得更高的位置精度。利用万有引力方程(“Pt-mass”),一个二阶带状谐波模型(“扁椭球(J2)”)或球谐模型(“球函数”).球面谐波是最精确的,但以精度换取速度。为了提高精度,还可以指定是否在惯性(ICRF)和固定(ITRF)坐标系之间的内部转换中使用地球方向参数(EOP’s)。

set_param (mission.Satellite.blk...“传播算子”“数值(高精度)”...“gravityModel”“球函数”...“earthSH”“EGM2008”...%地球球谐势模型“shDegree”“120”...球谐模型度和阶数“useEOPs”“上”...%在ECI中使用EOP的ECEF转换“eopFile”“aeroiersdata.mat”);% EOP数据文件

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

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

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

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

运行模型并收集卫星星历

模拟模型。在这个例子中轨道传播算子块被设置为输出ECEF (ITRF)坐标系中的位置和速度状态。

的使命。SimOutput = sim (mission.mdl);

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

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

在timeseries对象中设置任务的起始数据。

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

将卫星星历加载到satelliteScenario对象

创建一个附属场景对象,以便在本示例的分析部分中使用。

场景= satelliteScenario;

将卫星作为ECEF位置和速度时间序列添加到卫星场景中卫星方法。

卫星(场景,任务。卫星。TimeseriesPosECEF mission.Satellite.TimeseriesVelECEF,...“CoordinateFrame”“ecef”
卫星属性:名称:“卫星”ID: 1圆锥传感器:[]Gimbals: [] transmitter: [] receiver: [] access: [] GroundTrack: [1×1 matlabshared.卫星场景。轨道:[1×1 matlabshared.satellitescenario.]轨道传播器:“ephemeris”markcolor: [1 0 0] marksize: 10 ShowLabel: 1 LabelFontSize: 15 LabelFontColor: [1 0 0]
disp(场景)
卫星场景与属性:StartTime: 04-Jan-2019 12:00:00 StopTime: 04-Jan-2019 18:00:00 SampleTime: 60观众:[0×0 matlabshared.卫星场景。卫星:[1×1 matlabshared.卫星场景。卫星]地面站:[

预览每颗卫星的纬度(度)、经度(度)和高度(米)。使用方法查询每个场景时间步上的卫星状态。

idx =元素个数(坐):1:1在地理坐标中检索状态[llaData, ~, latimestamps] = states(sat(idx),“CoordinateFrame”“地理”);%在一个单独的时间表中组织每个卫星的状态数据mission.Satellite.LLATable {idx}= timetable(llaTimeStamps', llaData(1,:)', llaData(2,:)', llaData(3,:)',...“VariableNames”, {“Lat_deg”“Lon_deg”“Alt_m”});mission.Satellite.LLATable {idx}结束
ans =361×3的时间表时间Lat_deg Lon_deg Alt_m ____________________ ______________ __________ 04-Jan-2019 12:00:00 -44.804 120.35 4.2526e+05 04-Jan-2019 12:02:00 -42.797 124.73 4.2229e+05 04-Jan-2019 12:02:00 -40.626 128.77 4.2393e+05 04-Jan-2019 12:03:00 -38.322 132.53 4.2005e+05 04-Jan-2019 12:04:00 -35.848 136.07 4.2004e+05 04-Jan-2019 12:05:00 -33.289 139.354.203e+05 04-Jan-2019 12:06:00 -30.655 142.41 4.187e+05 04-Jan-2019 12:09:00 -25.069 148.09 4.1831e+05 04-Jan-2019 12:09:00 -22.234 150.68 4.144e +05 04-Jan-2019 12:10:00 -19.297 153.19 4.1829e+05 04-Jan-2019 12:11:00 -16.343 155.58 4.1713e+05 04-Jan-2019 12:12:00 -13.388 157.89 4.07e+05 04-Jan-2019 12:12:00 -13.388 157.89 4.07e+05 04-Jan-201912:13:00 -10.354 160.15 4.104e+05 04-Jan-2019 12:14:00 -7.3077 162.37 4.1291e+05 04-Jan-2019 12:15:00 -4.2622 164.55 4.0487e+05⋮
清晰的llaDatallaTimeStamps

显示卫星在三维地球上的轨迹

若要显示卫星在地球(WGS84椭球体)上方的轨迹,请使用辅助功能plot3DTrajectory

的使命。ColorMap =线(256);为卫星轨道定义彩色地图: mission.ColorMap (1:3) = [];plot3DTrajectories(任务。卫星的使命。ColorMap);

显示全球和区域2D地面轨迹

使用辅助函数查看全局地面轨迹作为2D投影plot2DTrajectories

plot2DTrajectories(任务。卫星的使命。GroundStation mission.ColorMap);

查看区域地面轨迹。从下拉菜单中选择感兴趣的区域:

plot2DTrajectories(任务。卫星的使命。GroundStation,使命。ColorMap,“美国”);

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

添加地面站到卫星场景对象使用groundStation方法。

地面站(场景,任务。地面站。)mission.GroundStation.Longitude纬度,...“MinElevationAngle”10“名称”“地面站”
gs =地站属性:名称:"地站" ID: 2纬度:42经度:-71海拔:0 MinElevationAngle: 10 ConicalSensors: [] Gimbals: [] transmitter: [] receiver: [] access: [] markcolor: [0 1 1] marksize: 10 ShowLabel: 1 LabelFontSize: 15 LabelFontColor: [0 1 1]

在所有单独的卫星和地面站之间附加视线访问分析访问方法。

Idx = 1:numel(sat) access(sat(Idx), gs);结束ac =[坐(:).Accesses];(ac(:)。LineColor] =交易(“绿色”);

显示访问时间间隔

将每个卫星的访问间隔显示为时间表.使用accessStatusaccessIntervals卫星方法与存取分析结果交互。

idx = numel(ac):-1:1任务。AccessStatus {idx} = AccessStatus (ac (idx));mission.Satellite。AccessTable {idx} = accessIntervals (ac (idx));%使用本地函数addllato时间表添加地理位置和%接近访问间隔时间表的最接近范围mission.Satellite。AccessTable {idx} = addLLAToTimetable (...mission.Satellite。mission.Satellite AccessTable {idx}。LLATable {idx}, mission.GroundStation);结束清晰的idx

使用辅助函数显示覆盖卫星轨道的2D地面轨迹的访问间隔plotAccessIntervals

plotAccessIntervals(任务。卫星的使命。GroundStation mission.ColorMap);

mission.Satellite.AccessTable {:}
ans =2×8表Source Target IntervalNumber StartTime EndTime Duration LLA (deg, deg,ClosestApproach (m m) ) ___________ ________________ ______________ ____________________ ____________________ ________ _________________ ___________________ " "卫星地面站“1 04 - 1月- 2019年12:44:00 04 - 360年1月- 2019年12:50:00{6×3双}5.0087 e + 05”卫星地面站”2 04 - 1月- 2019年14:21:00 04 - 240年1月- 2019年14:25:00{4×3双}1.102 e + 06

进一步分析

satelliteScenario对象打开并使场景动画satelliteScenarioViewer窗口。

玩(场景)disp (scenario.Viewers (1))
查看器的属性:名称:“卫星场景查看器”位置:[560 240 800 600]Basemap:“卫星”PlaybackSpeedMultiplier: 50 CameraReferenceFrame:“ECEF”CurrentTime: 2019年1月04日12:00:25维数:“3D”

参考文献

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

另请参阅

|