このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
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 オブジェクトがグローバル ベース ワークスペースに作成され、新しいシナリオの衛星シナリオ ビューアーウィンドウが開きます。このアクションのソース コードを表示するには、コールバック ボタンをダブルクリックします。「ミッション分析と視覚化」セクションは、新しい 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年。印刷。