主要内容

基于轨道传播块的月球任务分析

这个例子展示了如何计算和可视化阿波罗指挥和服务模块(CSM)和月球表面上的月球车之间的视线访问间隔。该模块的轨道是使用NASA报告中的参考轨道#2建模的阿波罗csm -模块月球轨道参数的变化[2]。这是美国宇航局为阿波罗计划所研究的月球轨道。该示例使用:

  • 航空航天工具箱™

  • 航空航天Blockset™

  • 映射工具箱™

定义任务参数和模块初始条件

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

的使命。StartDate = datetime(1969, 9,20,5,10,12.176);的使命。持续时间=小时(2);

指定CSM的开普勒轨道元素的使命。StartDate可以基于参考轨迹#2[2]。参考文献2中参考轨迹的标准为:

  • 轨迹平面必须包含月球地球一侧的着陆点矢量,经度在315度到45度之间,纬度在硒坐标的+5度到-5度之间。[2]

  • 轨道平面必须是定向的,以便在月球插入后的3 - 39小时内,月球登陆侧不偏离轨道平面超过0.5度。[2]

csm。SemiMajorAxis = 1894578.3;% [m]csm。偏心率= 0.0004197061;csm。倾角= 155.804726;%(度)csm。Raan = 182.414087;%(度)csm。ArgOfPeriapsis = 262.877900;%(度)csm。trueexception = 0.000824;%(度)

注意,倾角是相对于ICRF X-Y平面。ICRF X-Y轴与地球北极垂直。地球相对于黄道的轴倾角约为23.44度,而月球的轴倾角约为5.145度。因此,相对于ICRF X-Y平面,月球的轴向倾斜在大约之间变化 23 44 ± 5 145 度。这就解释了为什么~155.8度以上的轨道倾角满足保持纬度的要求 ± 5 硒坐标的度数。

指定月球车在月球表面的经纬度,以用于视距访问分析。

罗孚。纬度=0%(度)罗孚。经度=23.5%(度)

打开并配置模型

打开包含的Simulink®模型。万博1manbetx此模型包含轨道传播算子连接到输出端口的块。的轨道传播算子块支持向量化万博1manbetx。的初始条件数组,从而允许您在单个块中建模多个卫星块的参数窗口或使用set_param

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

使用一个SimulationInput对象为我们的任务配置模型。SimulationInput对象提供了配置多个任务并使用这些设置运行模拟的能力,而无需修改模型。

task .sim.in = Si万博1manbetxmulink.SimulationInput(task .mdl);

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

csm。BLK =任务mdl +“/轨道传播算子”

将Moon属性加载到基本工作区中。

月球。F = 0.0012;%月球椭圆度(变平)(参考1)月球。R_eq = 1737400;% [m]月球半径,单位为米(参考1)月球。ReferenceEllipsoid = ReferenceEllipsoid (“月”“米”);月球参考椭球体月球。Data = matfile(“lunarGeographicalData.mat”);加载月球地理数据

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

mission.sim.in = mission.sim.in. setblockparameter (...csm.blk,“startDate可以”字符串(juliandate (mission.StartDate)),...csm.blk,“stateFormatNum”“轨道要素”...csm.blk,“orbitType”“开普勒”...csm.blk,“semiMajorAxis”字符串(csm.SemiMajorAxis),...csm.blk,“偏心”字符串(csm.Eccentricity),...csm.blk,“倾向”字符串(csm.Inclination),...csm.blk,“raan”字符串(csm.RAAN),...csm.blk,“argPeriapsis”字符串(csm.ArgOfPeriapsis),...csm.blk,“trueAnomaly”字符串(csm.TrueAnomaly));

设置块的位置和速度输出端口,使用月球固定框架。月球的固定框架是平均地球/极轴(ME)参考系统。

mission.sim.in = mission.sim.in. setblockparameter (...csm.blk,“centralBody”“月”...csm.blk,“outportFrame”“固定框架”);

配置传播器。

mission.sim.in = mission.sim.in. setblockparameter (...csm.blk,“传播算子”“数值(高精度)”...csm.blk,“gravityModel”“球函数”...csm.blk,“moonSH”“lp - 100 k的”...月球谐势模型csm.blk,“shDegree”“100”...%球面谐波模型的度和阶csm.blk,“useMoonLib”“关闭”);

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

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

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

= mission.sim.in. setmodelparameter (...SaveOutput =“上”...OutputSaveName =“你”...SaveFormat =“数据集”...DatasetSignalFormat =“时间表”);

运行模型并收集CSM蜉蝣

方法模拟模型SimulationInput对象。在本例中,轨道传播算子块设置为输出在月心固定坐标系中的位置和速度状态。

task .sim.out = sim(task .sim.in);

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

csm。timeablepos = mission.sim.out.yout{1}.Values;csm。timeablevel = mission.sim.out.yout{2}.Values;

设置任务的开始日期时间表对象。

csm. timeablepos . properties . starttime =任务. startdate;

过程模拟数据

计算纬度,经度和高度使用月球赤道半径和扁平化。数值以度数和米为单位显示。

csm。MEPos = [csm. timeablepos . data (:,1)]...csm.TimetablePos.Data (:, 2) csm.TimetablePos.Data (:, 3)];Lla = ecef2lla(csm。MEPos、月亮。F, moon.R_eq);csm。LLA =时间表(csm.TimetablePos.Time,...拉拉(:,1),拉拉(:,2),拉拉(:,3),...VariableNames = [“纬度”“朗”“Alt”]);清晰的lla;disp (csm.LLA);
时间Lat Lon Alt ____________________ ________________ __________ 20-Sep-1969 05:10:12 -2.3072 175.32 1.5639e+05 20-Sep-1969 05:11:12 -2.2846 172.39 1.5639e+05 20-Sep-1969 05:13:36 -2.2061 165.35 1.5639e+05 20-Sep-1969 05:16:00 -2.0947 158.31 1.564e+05 20-Sep-1969 05:20:24 -1.952 151.27 1.5641e+05 20-Sep-1969 05:20:12 -1.7804 144.24 1.5641e+05 20-Sep-1969 05:23:12 -1.5824 137.21 1.5641e+05 20-Sep-1969 05:25:36 -1.3608 130.17 1.5641e+05 20-Sep-196905:28:00 -1.119 123.14 1.5641e+05 20-Sep-1969 05:30:24 -0.86057 1.64e +05 20-Sep-1969 05:35:12 -0.30942 102.06 1.55639 e+05 20-Sep-1969 05:40:00 -0.025001 95.032 1.5639e+05 20-Sep-1969 05:40:00 0.25967 88.006 1.564e+05 20-Sep-1969 05:42:24 0.54034 80.978 1.564e+05 20-Sep-1969 05:44:48 0.81284 73.951 1.5641e+05 20-Sep-1969 05:47:12 1.0732 66.923 1.5642e+05 20-Sep-1969 05:49:36 1.3175 59.893 1.5643e+05 20-Sep-1969 05:52:00 1.5422 52.8631.5646e+05 20-Sep-1969 05:54:24 1.1639 45.831 1.5649e+05 20-Sep-1969 05:59:12 2.0662 31.763 1.5656e+05 20-Sep-1969 06:01:36 2.1821 24.728 1.566e+05 20-Sep-1969 06:06:24 2.3145 10.655 1.5664e+05 20-Sep-1969 06:08:48 2.3145 3.655 1.5668e+05 20-Sep-1969 06:11:12 2.309 -3.418 1.5676e+05 20-Sep-1969 06:13:36 2.1663 - 17.454 1.5682e+05 20-Sep-1969 06:18:24 2.046-24.522 1.5683e+05 20-Sep-1969 06:20:48 1.7163 - 38.554 1.5686e+05 20-Sep-1969 06:25:36 1.2844 -52.642 1.5686e+05 20-Sep-1969 06:30:24 1.0381 -59.668 1.5686e+05 20-Sep-1969 06:32:48 0.77625 -66.693 1.5685e+05 20-Sep-1969 06:35:12 0.50273 -73.718 1.5684e+05 20-Sep-1969 06:37:36 0.22159 -80.741 1.5683e+05 20-Sep-1969 06:40:00 -0.062926 -87.765 1.5682e+05 20-Sep-1969 06:42:24 -0.34651 -94.789 1.568e+0520-Sep-1969 06:44:48 -0.62489 -101.81 1.5677e+05 20-Sep-1969 06:49:36 -1.1497 -115.87 1.5669e+05 20-Sep-1969 06:54:24 -1.6064 -122.89 1.5664e+05 20-Sep-1969 06:56:48 -1.8006 -136.96 1.5656e+05 20-Sep-1969 07:01:36 -2.1058 -151.03 1.5647e+05 20-Sep-1969 07:06:00 -2.212 -158.06 1.5641e+05 20-Sep-1969 07:08:48-2.3235 -172.14 1.563e+05 20-Sep-1969 07:10:12 -2.3299 -176.25 1.5626e+05

结果

在3-D月球上显示CSM轨迹

图;轴;colormap灰色的;视图(23);axesm (“全球”“大地水准面”, moon.ReferenceEllipsoid);geoshow (moon.Data。moonalb20c moon.Data。moonalb20cR DisplayType =“texturemap”);plot3 (csm.MEPos (: 1) csm.MEPos (:, 2), csm.MEPos (:, 3),“r”);

图中包含一个axes对象。axis对象包含两个类型为surface、line的对象。

显示CSM地面轨迹和探测器位置的二维投影

图;colormap灰色的;axesm (MapProjection =“罗宾逊”);geoshow (moon.Data。moonalb20c moon.Data。moonalb20cR DisplayType =“texturemap”);plotm (csm.LLA。Lat, csm.LLA。朗,颜色=“r”);plotm(罗孚。纬度,罗孚。经度,“xy”、线宽= 3);

图中包含一个axes对象。axis对象包含3个类型为surface、line的对象。

在感兴趣的时间显示CSM视野

定义一个兴趣时间(TOI)进行分析。对于本例,我们选择数据集中的第30个样本。

csm.TOI.LLA = csm.LLA(30,:);

计算从月球中心测量的轨道飞行器视线(LOS)视野(FOV)的角半径。

csm.TOI.FOV。Lambda0 = acosd(月亮。R_eq / (moon.)R_eq + csm.TOI.LLA.Alt);%(度)[csm.TOI.FOV。背阔肌,csm.TOI.FOV。朗]=...scircle1 (csm.TOI.LLA。Lat, csm.TOI.LLA。朗,csm.TOI.FOV.Lambda0);

钢铁洪流。CSM的位置用绿色十字表示,LOS视场用虚线圈表示。

图;colormap灰色的;axesm (MapProjection =“罗宾逊”);geoshow (moon.Data。moonalb20c moon.Data。moonalb20cR DisplayType =“texturemap”);plotm (csm.TOI.FOV。csm.TOI.FOV.Lons背阔肌,“g——”线宽= 1);投射到地图上的CSM可见度plotm (csm.LLA。Lat, csm.LLA。朗,颜色=“r”);CSM地面痕迹plotm (csm.TOI.LLA。Lat, csm.TOI.LLA。Lon,“g +”, MarkerSize = 8);%子csm点plotm(罗孚。纬度,罗孚。经度,“xy”、线宽= 3);

图中包含一个axes对象。axis对象包含5个类型为surface、line的对象。

显示来自漫游者的CSM视线能见度

通过假设月球是球形来估计访问间隔。

Lambda_all = acosd(月亮。R_eq ./(月亮。R_eq + csm.LLA.Alt));% [deg]从月球中心测量的CSM视场角半径d =距离(csm.LLA。Lat, csm.LLA.Lon...罗孚。纬度,rover.Longitude);% [deg]子csm点与漫游者之间的角距离rover.Access.InView = csm。LLA(lambda_all - d > 0,:);包含视图内数据样本的%时间表rover.Access.InView.Time.Format =“HH: mm: ss”;清晰的lambda_alld

绘制轨道模块和漫游者之间的访问间隔。

如果height(rover.Access.InView) ~= 0查找时间戳中的中断以确定通过的开始。rover.Access.StartIdx = [1, find(diff(rover.Access.InView.Time) > minutes(5))];rover.Access.StartTime = rover.Access.InView.Time(rover.Access.StartIdx);rover.Access.StopIdx = [rover.Access.StartIdx(2:end)-1, height(rover.Access.InView)];rover.Access.StopTime = rover.Access.InView.Time(rover.Access.StopIdx);rover.Access.Duration = rover.Access.StopTime - rover.Access.StartTime;在表中显示通过间隔rover.Access. intervaltable = table(rover.Access. intervaltable)开始时间,rover.Access。StopTime rover.Access.Duration,...VariableNames = [“通过启动”“通过结束”“持续时间”]);disp (rover.Access.IntervalTable);disp (' ');%设置图形窗口/图形图;colormap灰色的;axesm (MapProjection =“罗宾逊”) geoshow (moon.Data。moonalb20c moon.Data。moonalb20cR DisplayType =“texturemap”)标题(加入([“之间的传递”字符串(csm.LLA.Time (1)),...”和“字符串(csm.LLA.Time(结束)))));绘制inView、漫游者和CSM轨道plotm (rover.Access.InView。Lat, rover.Access.InView.Lon“+ g”);plotm(罗孚。纬度,罗孚。经度,“xy”、线宽= 3);plotm (csm.LLA。Lat, csm.LLA。朗,颜色=“r”);Plot pass间隔rover.Access. edgeindices = rover.Access. inview (sort([rover.Access.]])StartIdx漫游者. access . stopidx]),:);j = 1: height(rover. access . edgeindexes) textm(rover. access . edgeindexes . lat (j) + 10,...rover.Access.EdgeIndices.Lon (j),...字符串(rover.Access.EdgeIndices.Time (j)),颜色=“y”、旋转= 30);结束其他的disp (“在确定的任务时间内,从漫游者上看不到CSM。”结束
开始传球结束时间  __________ ________ ________ 05:54:24 06:08:48 00:14:24

               

图中包含一个axes对象。标题为Passes Between 20- september -1969 05:10:12和20- september -1969 07:10:12的axes对象包含6个类型为surface、line和text的对象。

参考文献

大卫·r·威廉姆斯,《月球概况》,行星情况说明美国宇航局戈达德太空飞行中心,2020年1月13日,https://nssdc.gsfc.nasa.gov/planetary/factsheet/moonfact.html。

计时器,T.P.(美国宇航局任务分析办公室)“阿波罗csm -模块月球轨道参数的变化”,NASA TM X-55460。马里兰州格林贝尔特:戈达德太空飞行中心,1966年2月。

另请参阅