このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
Orbit Propagator ブロックによるミッション分析
この例では、衛星と地上局間の見通しアクセス間隔を計算して視覚化する方法を示します。それは使用しています:
Aerospace Blockset ™
Orbit Propagator
ブロックAerospace Toolbox
satelliteScenario
オブジェクトMapping Toolbox ™
worldmap
およびgeoshow
関数
Aerospace Toolbox satelliteScenario
オブジェクトを使用すると、ユーザーは 2 つの方法でシナリオに衛星とコンスタレーションを追加できます。まず、衛星の初期条件は、2 行要素ファイル (.tle) またはケプラーの軌道要素から定義でき、その後、ケプラーの問題、簡略化された一般摂動アルゴリズム SGP-4、または簡略化された深宇宙摂動アルゴリズム SDP-4 を使用して衛星を伝播できます。さらに、以前に生成されたタイムスタンプ付きのエフェメリス データを、時系列または時刻表オブジェクトからシナリオに追加できます。データはシナリオ オブジェクト内で補間され、シナリオの時間ステップに合わせて調整されます。この 2 番目のオプションは、Simulink ® モデルで生成されたデータを新しい衛星シナリオまたは既存の衛星シナリオに組み込むために使用できます。この例では、Aerospace Blockset Orbit Propagator
ブロックを使用した数値積分を使用して衛星の軌道を伝播し、そのログに記録されたエフェメリス データをアクセス分析のために satelliteScenario
オブジェクトにロードする方法を示します。
ミッションパラメータと衛星の初期条件を定義する
ミッションの開始日と期間を指定します。この例では、MATLAB ® 構造を使用してミッション データを整理します。これらの構造により、例の後半でのデータへのアクセスがより直感的になります。また、グローバル ベース ワークスペースの整理にも役立ちます。
mission.StartDate = datetime(2019, 1, 4, 12, 0, 0); mission.Duration = hours(6);
mission.StartDate
の衛星のケプラー軌道要素を指定します。
mission.Satellite.SemiMajorAxis = 6786233.13; % meters mission.Satellite.Eccentricity = 0.0010537; mission.Satellite.Inclination = 51.7519; % deg mission.Satellite.RAAN = 95.2562; % deg mission.Satellite.ArgOfPeriapsis = 93.4872; % deg mission.Satellite.TrueAnomaly = 202.9234; % deg
以下にアクセス解析で使用する地上局の緯度と経度を指定します。
mission.GroundStation.Latitude =42; % deg mission.GroundStation.Longitude =-71; % deg
軌道伝播モデルを開いて設定する
付属のSimulinkモデルを開きます。このモデルには、出力ポートに接続された Orbit Propagator
ブロックが含まれています。Orbit Propagator
ブロックはベクトル化をサポートします。これにより、Block Parameters
ウィンドウで初期条件の配列を指定するか、set_param
を使用することで、1 つのブロックで複数の衛星をモデル化できます。モデルには、ダッシュボード Callback button
を含む「ミッション分析と視覚化」セクションも含まれています。このボタンをクリックすると、モデルが実行され、Orbit Propagator
ブロックで定義された衛星またはコンスタレーションを含む新しい satelliteScenario オブジェクトがグローバル ベース ワークスペースに作成され、新しいシナリオの Satellite Scenario Viewer ウィンドウが開きます。このアクションのソース コードを表示するには、コールバック ボタンをダブルクリックします。「ミッション分析と視覚化」セクションは、新しい satelliteScenario オブジェクトを作成するためのスタンドアロン ワークフローであり、この例では使用されません。
mission.mdl = "OrbitPropagatorBlockExampleModel";
open_system(mission.mdl);
snapshotModel(mission.mdl);
モデル内の Orbit Propagator
ブロックへのパスを定義します。
mission.Satellite.blk = mission.mdl + "/Orbit Propagator";
衛星の初期条件を設定します。前のセクションで定義したケプラーの軌道要素セットを割り当てるには、set_param
を使用します。
set_param(mission.Satellite.blk, ... "startDate", num2str(juliandate(mission.StartDate)), ... "stateFormatNum", "Orbital elements", ... "orbitType", "Keplerian", ... "semiMajorAxis", "mission.Satellite.SemiMajorAxis", ... "eccentricity", "mission.Satellite.Eccentricity", ... "inclination", "mission.Satellite.Inclination", ... "raan", "mission.Satellite.RAAN", ... "argPeriapsis", "mission.Satellite.ArgOfPeriapsis", ... "trueAnomaly", "mission.Satellite.TrueAnomaly");
ブロックの位置と速度の出力ポートを、国際地球基準フレーム (ITRF) である地球中心の地球固定フレームを使用するように設定します。
set_param(mission.Satellite.blk, ... "centralBody", "Earth", ... "outportFrame", "Fixed-frame");
プロパゲーターを構成します。この例では、より高い位置精度を得るために数値プロパゲーターを使用します。数値プロパゲーターを使用して、万有引力の方程式 ("Pt-mass"
)、2 次ゾーン調和モデル ("Oblate Ellipsoid (J2)"
)、または球面調和モデル ("Spherical Harmonics"
) に基づいて地球の重力ポテンシャルをモデル化します。球面調和関数は最も正確ですが、速度と引き換えに正確さを犠牲にしています。精度を高めるために、慣性 (ICRF) 座標系と固定 (ITRF) 座標系間の内部変換で地球方向パラメータ (EOP) を使用するかどうかも指定できます。
set_param(mission.Satellite.blk, ... "propagator", "Numerical (high precision)", ... "gravityModel", "Spherical Harmonics", ... "earthSH", "EGM2008", ... % Earth spherical harmonic potential model "shDegree", "120", ... % Spherical harmonic model degree and order "useEOPs", "on", ... % Use EOP's in ECI to ECEF transformations "eopFile", "aeroiersdata.mat"); % EOP data file
set_param
を使用してモデルレベルのソルバー設定を適用します。数値プロパゲーターを使用する場合、最高のパフォーマンスと精度を得るには、可変ステップ ソルバーを使用します。
set_param(mission.mdl, ... "SolverType", "Variable-step", ... "SolverName", "VariableStepAuto", ... "RelTol", "1e-6", ... "AbsTol", "1e-7", ... "StopTime", string(seconds(mission.Duration)));
モデル出力ポート データを時系列オブジェクトのデータセットとして保存します。
set_param(mission.mdl, ... "SaveOutput", "on", ... "OutputSaveName", "yout", ... "SaveFormat", "Dataset");
モデルを実行して衛星暦を収集する
モデルをシミュレートします。この例では、Orbit Propagator
ブロックは、ECEF (ITRF) 座標フレームで位置と速度の状態を出力するように設定されています。
mission.SimOutput = sim(mission.mdl);
モデル出力データ構造から位置と速度データを抽出します。
mission.Satellite.TimeseriesPosECEF = mission.SimOutput.yout{1}.Values; mission.Satellite.TimeseriesVelECEF = mission.SimOutput.yout{2}.Values;
時系列オブジェクトにミッションの開始データを設定します。
mission.Satellite.TimeseriesPosECEF.TimeInfo.StartDate = mission.StartDate; mission.Satellite.TimeseriesVelECEF.TimeInfo.StartDate = mission.StartDate;
衛星エフェメリスをsatelliteScenario
オブジェクトにロードする
この例の分析部分で使用する衛星シナリオ オブジェクトを作成します。
scenario = satelliteScenario;
satellite
メソッドを使用して、衛星を ECEF 位置と速度の時系列として衛星シナリオに追加します。
sat = satellite(scenario, mission.Satellite.TimeseriesPosECEF, mission.Satellite.TimeseriesVelECEF, ... "CoordinateFrame", "ecef")
sat = Satellite with properties: Name: Satellite ID: 1 ConicalSensors: [1x0 matlabshared.satellitescenario.ConicalSensor] Gimbals: [1x0 matlabshared.satellitescenario.Gimbal] Transmitters: [1x0 satcom.satellitescenario.Transmitter] Receivers: [1x0 satcom.satellitescenario.Receiver] Accesses: [1x0 matlabshared.satellitescenario.Access] Eclipse: [1x0 Aero.satellitescenario.Eclipse] GroundTrack: [1x1 matlabshared.satellitescenario.GroundTrack] Orbit: [1x1 matlabshared.satellitescenario.Orbit] CoordinateAxes: [1x1 matlabshared.satellitescenario.CoordinateAxes] OrbitPropagator: ephemeris MarkerColor: [0.059 1 1] MarkerSize: 6 ShowLabel: true LabelFontColor: [1 1 1] LabelFontSize: 15 Visual3DModel: Visual3DModelScale: 1
disp(scenario)
satelliteScenario with properties: StartTime: 04-Jan-2019 12:00:00 StopTime: 04-Jan-2019 18:00:00 SampleTime: 60 AutoSimulate: 1 Satellites: [1×1 matlabshared.satellitescenario.Satellite] GroundStations: [1×0 matlabshared.satellitescenario.GroundStation] Platforms: [1×0 matlabshared.satellitescenario.Platform] Viewers: [0×0 matlabshared.satellitescenario.Viewer] AutoShow: 1
各衛星の緯度 (度)、経度 (度)、高度 (m) をプレビューします。states
メソッドを使用して、各シナリオのタイム ステップで衛星の状態を照会します。
for idx = numel(sat):-1:1 % Retrieve states in geographic coordinates [llaData, ~, llaTimeStamps] = states(sat(idx), "CoordinateFrame","geographic"); % Organize state data for each satellite in a separate timetable mission.Satellite.LLATable{idx} = timetable(llaTimeStamps', llaData(1,:)', llaData(2,:)', llaData(3,:)',... 'VariableNames', {'Lat_deg','Lon_deg', 'Alt_m'}); mission.Satellite.LLATable{idx} end
ans=361×3 timetable
Time Lat_deg Lon_deg Alt_m
____________________ _______ _______ __________
04-Jan-2019 12:00:00 -44.804 120.35 4.2526e+05
04-Jan-2019 12:01:00 -42.809 124.7 4.2232e+05
04-Jan-2019 12:02:00 -40.638 128.75 4.2393e+05
04-Jan-2019 12:03:00 -38.337 132.5 4.2008e+05
04-Jan-2019 12:04:00 -35.867 136.05 4.2003e+05
04-Jan-2019 12:05:00 -33.311 139.33 4.2031e+05
04-Jan-2019 12:06:00 -30.682 142.38 4.1871e+05
04-Jan-2019 12:07:00 -27.917 145.31 4.1982e+05
04-Jan-2019 12:08:00 -25.104 148.06 4.1836e+05
04-Jan-2019 12:09:00 -22.267 150.65 4.1404e+05
04-Jan-2019 12:10:00 -19.321 153.17 4.1823e+05
04-Jan-2019 12:11:00 -16.358 155.57 4.1717e+05
04-Jan-2019 12:12:00 -13.397 157.88 4.07e+05
04-Jan-2019 12:13:00 -10.36 160.15 4.1036e+05
04-Jan-2019 12:14:00 -7.3121 162.37 4.1291e+05
04-Jan-2019 12:15:00 -4.2727 164.54 4.0493e+05
⋮
clear llaData llaTimeStamps;
3D地球儀上に衛星の軌道を表示
地球(WGS84 楕円体)上の衛星軌道を表示するには、ヘルパー関数 plot3DTrajectory
を使用します。
mission.ColorMap = lines(256); % Define colormap for satellite trajectories
mission.ColorMap(1:3,:) = [];
plot3DTrajectories(mission.Satellite, mission.ColorMap);
地球全体および地域の2D地上トレースを表示
ヘルパー関数 plot2DTrajectories
を使用して、地球全体の地上トレースを 2D 投影として表示します。
plot2DTrajectories(mission.Satellite, mission.GroundStation, mission.ColorMap);
地域の地上トレースを表示します。ドロップダウン メニューから関心領域を選択します。
plot2DTrajectories(mission.Satellite, mission.GroundStation, mission.ColorMap, "usa");
衛星から地上局へのアクセスを計算する(見通し線可視性)
groundStation
メソッドを使用して、地上局を satelliteScenario オブジェクトに追加します。
gs = groundStation(scenario, mission.GroundStation.Latitude, mission.GroundStation.Longitude, ... "MinElevationAngle", 10, "Name", "Ground Station")
gs = GroundStation with properties: Name: Ground Station ID: 2 Latitude: 42 degrees Longitude: -71 degrees Altitude: 0 meters MinElevationAngle: 10 degrees ConicalSensors: [1x0 matlabshared.satellitescenario.ConicalSensor] Gimbals: [1x0 matlabshared.satellitescenario.Gimbal] Transmitters: [1x0 satcom.satellitescenario.Transmitter] Receivers: [1x0 satcom.satellitescenario.Receiver] Accesses: [1x0 matlabshared.satellitescenario.Access] Eclipse: [1x0 Aero.satellitescenario.Eclipse] CoordinateAxes: [1x1 matlabshared.satellitescenario.CoordinateAxes] MarkerColor: [1 0.4118 0.1608] MarkerSize: 6 ShowLabel: true LabelFontColor: [1 1 1] LabelFontSize: 15
access
メソッドを使用して、すべての個々の衛星と地上局間の視線アクセス解析を添付します。
ac = access(sat, gs);
ac.LineColor = "green";
アクセス間隔の表示
各衛星のアクセス間隔を timetable
として表示します。アクセス分析の結果を操作するために、accessStatus
および accessIntervals
サテライト メソッドを使用します。
for idx = numel(ac):-1:1 mission.Satellite.AccessStatus{idx} = accessStatus(ac(idx)); mission.Satellite.AccessTable{idx} = accessIntervals(ac(idx)); % Use local function addLLAToTimetable to add geographic positions and % closest approach range to the Access Intervals timetable mission.Satellite.AccessTable{idx} = addLLAToTimetable(... mission.Satellite.AccessTable{idx}, mission.Satellite.LLATable{idx}, mission.GroundStation); end clear idx;
ヘルパー関数 plotAccessIntervals
を使用して、衛星軌道の 2D 地上トレースに重ねてアクセス間隔を表示します。
plotAccessIntervals(mission.Satellite, mission.GroundStation, mission.ColorMap);
mission.Satellite.AccessTable{:}
ans=2×8 table
Source Target IntervalNumber StartTime EndTime Duration LLA (deg, deg, m) ClosestApproach (m)
___________ ________________ ______________ ____________________ ____________________ ________ _________________ ___________________
"Satellite" "Ground Station" 1 04-Jan-2019 12:44:00 04-Jan-2019 12:50:00 360 {6×3 double} 4.9996e+05
"Satellite" "Ground Station" 2 04-Jan-2019 14:21:00 04-Jan-2019 14:25:00 240 {4×3 double} 1.1021e+06
さらなる分析
satelliteScenario
オブジェクトを再生して、satelliteScenarioViewer
ウィンドウでシナリオを開いてアニメーション化します。
play(scenario); disp(scenario.Viewers(1))
Viewer with properties: Name: 'Satellite Scenario Viewer' Position: [560 240 800 600] Basemap: 'satellite' PlaybackSpeedMultiplier: 50 CameraReferenceFrame: 'ECEF' CurrentTime: 04-Jan-2019 12:02:26 ShowDetails: 1 Dimension: '3D'
ビューアーに衛星の地上軌跡を表示します。
groundTrack(sat);
参考文献
[1] ワーツ、ジェームズ・R、デイビッド・F・エヴェレット、ジェフリー・J・プシェル。宇宙ミッションエンジニアリング:新しいSmad 。カリフォルニア州ホーソーン:マイクロコズムプレス、2011年。印刷します。