Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

Orbit Propagator ブロックによるコンスタレーション モデリング

この例では、衛星のコンスタレーションの軌道を伝播し、個々の衛星と複数の地上局間のアクセス間隔を計算して視覚化する方法を示します。それは使用しています:

  • Aerospace Blockset ™ Orbit Propagator ブロック

  • Aerospace Toolbox satelliteScenario オブジェクト

Aerospace Toolbox satelliteScenario オブジェクトを使用すると、以前に生成されたタイムスタンプ付きのエフェメリス データを、timeseries オブジェクトまたは timetable オブジェクトからシナリオに読み込むことができます。データはシナリオ オブジェクト内で補間され、シナリオの時間ステップに合わせて調整されるため、Simulink ® モデルで生成されたデータを新しい satelliteScenario オブジェクトまたは既存の satelliteScenario オブジェクトに組み込むことができます。この例では、Aerospace Blockset Orbit Propagator ブロックを使用して Simulink の衛星のコンスタレーションを伝播し、ログに記録されたエフェメリス データをアクセス分析のために satelliteScenario オブジェクトにロードする方法を示します。

ミッションパラメータとコンスタレーションの初期条件を定義する

ミッションの開始日と期間を指定します。この例では、MATLAB ® 構造を使用してミッション データを整理します。これらの構造により、例の後半でのデータへのアクセスがより直感的になります。また、グローバル ベース ワークスペースの整理にも役立ちます。

mission.StartDate = datetime(2020, 11, 30, 22, 23, 24);
mission.Duration  = hours(24);

この例のコンスタレーションは、ヨーロッパの GNSS (全地球航法衛星システム) コンスタレーションである Galileo に似たモデル化された Walker-Delta コンスタレーションです。このコンスタレーションは中軌道(MEO)にある 24 個の衛星で構成されています。

Walker-Delta コンスタレーションでは次の表記法を使用します。

i:T/P/F

ここで、

i= 傾向

T= 衛星の総数

P= 等間隔の幾何学的平面の数

F= 隣接面の衛星間の間隔

Walker-Delta コンスタレーションは、ミッションの遂行に必要な衛星の数を最小限に抑えながら、地球上の幾何学的カバレッジを最大化するための一般的なソリューションです。ガリレオ航法システムは、29599.8 km の軌道上にあるWalker-Delta 56:24/3/1 コンスタレーション (56 度傾斜した 3 つの平面に 24 個の衛星) です。

mission.StartDate のコンスタレーションのケプラー軌道要素を指定します。

mission.Satellites.SemiMajorAxis  = 29599.8e3 * ones(24,1); % meters
mission.Satellites.Eccentricity   = 0.0005    * ones(24,1);
mission.Satellites.Inclination    = 56        * ones(24,1); % deg
mission.Satellites.ArgOfPeriapsis = 350       * ones(24,1); % deg

Walker-Delta コンスタレーションの軌道面の昇交点は、赤道の周りに 360P 間隔で均一に分布しています。1 平面あたりの衛星数 S は S=TP で与えられます。合計 24 個の衛星があるため、赤道の周りに 120 度間隔で 8 個の衛星が 3 つの平面に配置されることになります。各軌道面上の衛星は、360S、つまり 45 度の間隔で分布しています。

mission.Satellites.RAAN               = sort(repmat([0 120 240], 1,8))'; % deg
mission.Satellites.TrueAnomaly        = repmat(0:45:315, 1,3)'; % deg

最後に、隣接する軌道面間の相対的な角度シフトを考慮します。位相差は Δϕ=F*360T、つまりこの場合は 15 度として表されます。

mission.Satellites.TrueAnomaly(9:16)  = mission.Satellites.TrueAnomaly(9:16)  + 15;
mission.Satellites.TrueAnomaly(17:24) = mission.Satellites.TrueAnomaly(17:24) + 30;

コンスタレーション ノードをテーブルに表示します。

ConstellationDefinition = table(mission.Satellites.SemiMajorAxis, ...
    mission.Satellites.Eccentricity, ...
    mission.Satellites.Inclination, ...
    mission.Satellites.RAAN, ...
    mission.Satellites.ArgOfPeriapsis, ...
    mission.Satellites.TrueAnomaly, ...
    'VariableNames', ["a (m)", "e", "i (deg)", "Ω (deg)", "ω (deg)", "ν (deg)"])
ConstellationDefinition=24×6 table
     a (m)        e       i (deg)    Ω (deg)    ω (deg)    ν (deg)
    ________    ______    _______    _______    _______    _______

    2.96e+07    0.0005      56           0        350          0  
    2.96e+07    0.0005      56           0        350         45  
    2.96e+07    0.0005      56           0        350         90  
    2.96e+07    0.0005      56           0        350        135  
    2.96e+07    0.0005      56           0        350        180  
    2.96e+07    0.0005      56           0        350        225  
    2.96e+07    0.0005      56           0        350        270  
    2.96e+07    0.0005      56           0        350        315  
    2.96e+07    0.0005      56         120        350         15  
    2.96e+07    0.0005      56         120        350         60  
    2.96e+07    0.0005      56         120        350        105  
    2.96e+07    0.0005      56         120        350        150  
    2.96e+07    0.0005      56         120        350        195  
    2.96e+07    0.0005      56         120        350        240  
    2.96e+07    0.0005      56         120        350        285  
    2.96e+07    0.0005      56         120        350        330  
      ⋮

軌道伝播モデルを開いて設定する

付属の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);

モデル内の Orbit Propagator ブロックへのパスを定義します。

mission.Satellites.blk = mission.mdl + "/Orbit Propagator";

衛星の初期条件を設定します。前のセクションで定義したケプラーの軌道要素セットを割り当てるには、set_param を使用します。

set_param(mission.Satellites.blk, ...
    startDate = num2str(juliandate(mission.StartDate)), ...
    stateFormatNum = "Orbital elements", ...
    orbitType      = "Keplerian", ...
    semiMajorAxis  = "mission.Satellites.SemiMajorAxis", ...
    eccentricity   = "mission.Satellites.Eccentricity", ...
    inclination    = "mission.Satellites.Inclination", ...
    raan           = "mission.Satellites.RAAN", ...
    argPeriapsis   = "mission.Satellites.ArgOfPeriapsis", ...
    trueAnomaly    = "mission.Satellites.TrueAnomaly");

ブロックの位置と速度の出力ポートを、国際地球基準フレーム (ITRF) である地球中心の地球固定フレームを使用するように設定します。

set_param(mission.Satellites.blk, ...
    centralBody  = "Earth", ...
    outportFrame = "Fixed-frame");

プロパゲーターを構成します。この例では、地球の扁平性を考慮して、衛星軌道計算に 2 次帯状調和摂動を含む Oblate ellipsoid (J2) プロパゲーターを使用します。

set_param(mission.Satellites.blk, ...
    propagator   = "Numerical (high precision)", ...
    gravityModel = "Oblate ellipsoid (J2)", ...
    useEOPs      = "off");

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");

モデルを実行して衛星暦を収集する

モデルをシミュレートします。

mission.SimOutput = sim(mission.mdl);

モデル出力データ構造から位置と速度データを抽出します。

mission.Satellites.TimeseriesPosECEF = mission.SimOutput.yout{1}.Values;
mission.Satellites.TimeseriesVelECEF = mission.SimOutput.yout{2}.Values;

時系列オブジェクトにミッションの開始データを設定します。

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

時系列オブジェクトには、24 基すべての衛星の位置と速度のデータが含まれています。

mission.Satellites.TimeseriesPosECEF
  timeseries

  Common Properties:
            Name: ''
            Time: [57x1 double]
        TimeInfo: [1x1 tsdata.timemetadata]
            Data: [24x3x57 double]
        DataInfo: [1x1 tsdata.datametadata]

  More properties, Methods

衛星エフェメリスをsatelliteScenario Oオブジェクトにロードする

分析用の衛星シナリオ オブジェクトを作成します。

scenario = satelliteScenario(mission.StartDate, mission.StartDate + hours(24), 60);

satellite メソッドを使用して、ECEF の位置と速度の時系列オブジェクトから 24 個の衛星すべてを衛星シナリオに追加します。

sat = satellite(scenario, mission.Satellites.TimeseriesPosECEF, mission.Satellites.TimeseriesVelECEF, ...
    CoordinateFrame="ecef", Name="GALILEO " + (1:24))
sat = 
  1x24 Satellite array with properties:

    Name
    ID
    ConicalSensors
    Gimbals
    Transmitters
    Receivers
    Accesses
    Eclipse
    GroundTrack
    Orbit
    CoordinateAxes
    OrbitPropagator
    MarkerColor
    MarkerSize
    ShowLabel
    LabelFontColor
    LabelFontSize
    Visual3DModel
    Visual3DModelScale

disp(scenario)
  satelliteScenario with properties:

         StartTime: 30-Nov-2020 22:23:24
          StopTime: 01-Dec-2020 22:23:24
        SampleTime: 60
      AutoSimulate: 1
        Satellites: [1×24 matlabshared.satellitescenario.Satellite]
    GroundStations: [1×0 matlabshared.satellitescenario.GroundStation]
           Viewers: [0×0 matlabshared.satellitescenario.Viewer]
          AutoShow: 1

衛星のグラフィックプロパティを設定する

各軌道面の衛星が同じ軌道色になるように設定します。

set(sat(1:8), MarkerColor="#FF6929");
set(sat(9:16), MarkerColor="#139FFF");
set(sat(17:24), MarkerColor="#64D413");
orbit = [sat(:).Orbit];
set(orbit(1:8), LineColor="#FF6929");
set(orbit(9:16), LineColor="#139FFF");
set(orbit(17:24), LineColor="#64D413");

シナリオに地上局を追加する

正確な測位データを提供するには、地球上の場所が常にコンスタレーション内の少なくとも 4 つの衛星にアクセスできる必要があります。この例では、3 つの MathWorks ® ロケーションを使用して、1 日間の分析ウィンドウにおける地球のさまざまな地域へのコンスタレーションアクセスの合計を比較します。

  • アメリカ合衆国マサチューセッツ州ネイティック (42.30048°, -71.34908°)

  • ミュンヘン、ドイツ (48.23206°, 11.68445°)

  • インド、バンガロール (12.94448°, 77.69256°)

gsUS = groundStation(scenario, 42.30048, -71.34908, ...
    MinElevationAngle=10, Name="Natick");
gsUS.MarkerColor = "red";
gsDE = groundStation(scenario, 48.23206, 11.68445, ...
    MinElevationAngle=10, Name="Munchen");
gsDE.MarkerColor = "red";
gsIN = groundStation(scenario, 12.94448, 77.69256, ...
    MinElevationAngle=10, Name="Bangalore");
gsIN.MarkerColor = "red";


figure
geoscatter([gsUS.Latitude gsDE.Latitude gsIN.Latitude], ...
    [gsUS.Longitude gsDE.Longitude gsIN.Longitude], "red", "filled")
geolimits([-75 75], [-180 180])
title("Ground Stations")

Figure contains an axes object with type geoaxes. The geoaxes object contains an object of type scatter.

地上局から衛星へのアクセス(見通し線可視性)を計算する

access メソッドを使用して、地上局と各衛星間の見通しアクセスを計算します。

accessUS = access(gsUS, sat);
accessDE = access(gsDE, sat);
accessIN = access(gsIN, sat);

例の前のほうで割り当てた軌道面の色と一致するようにアクセス カラーを設定します。

set(accessUS, LineWidth="1");
set(accessUS(1:8), LineColor="#FF6929");
set(accessUS(9:16), LineColor="#139FFF");
set(accessUS(17:24), LineColor="#64D413");

set(accessDE, LineWidth="1");
set(accessDE(1:8), LineColor="#FF6929");
set(accessDE(9:16), LineColor="#139FFF");
set(accessDE(17:24), LineColor="#64D413");

set(accessIN, LineWidth="1");
set(accessIN(1:8), LineColor="#FF6929");
set(accessIN(9:16), LineColor="#139FFF");
set(accessIN(17:24), LineColor="#64D413");

各地上局とコンスタレーション内のすべての衛星間の完全なアクセス テーブルをテーブルとして表示します。アクセス間隔を間隔開始時刻で並べ替えます。エフェメリス データから追加された衛星では、StartOrbit と Stop orbit の値が表示されません。

intervalsUS = accessIntervals(accessUS);
intervalsUS = sortrows(intervalsUS, "StartTime", "ascend")
intervalsUS=40×8 table
     Source        Target       IntervalNumber         StartTime                EndTime           Duration    StartOrbit    EndOrbit
    ________    ____________    ______________    ____________________    ____________________    ________    __________    ________

    "Natick"    "GALILEO 1"           1           30-Nov-2020 22:23:24    01-Dec-2020 04:04:24     20460         NaN          NaN   
    "Natick"    "GALILEO 2"           1           30-Nov-2020 22:23:24    01-Dec-2020 01:24:24     10860         NaN          NaN   
    "Natick"    "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, "StartTime", "ascend")
intervalsDE=40×8 table
     Source         Target       IntervalNumber         StartTime                EndTime           Duration    StartOrbit    EndOrbit
    _________    ____________    ______________    ____________________    ____________________    ________    __________    ________

    "Munchen"    "GALILEO 2"           1           30-Nov-2020 22:23:24    01-Dec-2020 04:34:24     22260         NaN          NaN   
    "Munchen"    "GALILEO 3"           1           30-Nov-2020 22:23:24    01-Dec-2020 01:58:24     12900         NaN          NaN   
    "Munchen"    "GALILEO 4"           1           30-Nov-2020 22:23:24    30-Nov-2020 23:05:24      2520         NaN          NaN   
    "Munchen"    "GALILEO 10"          1           30-Nov-2020 22:23:24    30-Nov-2020 23:58:24      5700         NaN          NaN   
    "Munchen"    "GALILEO 19"          1           30-Nov-2020 22:23:24    01-Dec-2020 01:36:24     11580         NaN          NaN   
    "Munchen"    "GALILEO 20"          1           30-Nov-2020 22:23:24    01-Dec-2020 00:15:24      6720         NaN          NaN   
    "Munchen"    "GALILEO 21"          1           30-Nov-2020 22:23:24    30-Nov-2020 22:28:24       300         NaN          NaN   
    "Munchen"    "GALILEO 9"           1           30-Nov-2020 22:34:24    01-Dec-2020 02:22:24     13680         NaN          NaN   
    "Munchen"    "GALILEO 18"          1           30-Nov-2020 22:41:24    01-Dec-2020 02:31:24     13800         NaN          NaN   
    "Munchen"    "GALILEO 1"           1           30-Nov-2020 23:05:24    01-Dec-2020 06:42:24     27420         NaN          NaN   
    "Munchen"    "GALILEO 16"          1           30-Nov-2020 23:29:24    01-Dec-2020 04:47:24     19080         NaN          NaN   
    "Munchen"    "GALILEO 15"          1           01-Dec-2020 00:50:24    01-Dec-2020 07:27:24     23820         NaN          NaN   
    "Munchen"    "GALILEO 17"          1           01-Dec-2020 01:05:24    01-Dec-2020 03:00:24      6900         NaN          NaN   
    "Munchen"    "GALILEO 8"           1           01-Dec-2020 01:57:24    01-Dec-2020 08:25:24     23280         NaN          NaN   
    "Munchen"    "GALILEO 14"          1           01-Dec-2020 02:36:24    01-Dec-2020 10:19:24     27780         NaN          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, "StartTime", "ascend")
intervalsIN=31×8 table
      Source          Target       IntervalNumber         StartTime                EndTime           Duration    StartOrbit    EndOrbit
    ___________    ____________    ______________    ____________________    ____________________    ________    __________    ________

    "Bangalore"    "GALILEO 3"           1           30-Nov-2020 22:23:24    01-Dec-2020 05:12:24     24540         NaN          NaN   
    "Bangalore"    "GALILEO 4"           1           30-Nov-2020 22:23:24    01-Dec-2020 02:59:24     16560         NaN          NaN   
    "Bangalore"    "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 つの地上局がすべて表示されます。各地上局と衛星の間には、対応するアクセス間隔中に線が引かれます。ShowDetails の名前と値のペアを false に設定して、衛星と地上局の詳細を非表示にします。衛星の軌道と地上局の位置のラベルを表示します。

viewer3D = satelliteScenarioViewer(scenario, ShowDetails=false);
show(sat.Orbit);
gsUS.ShowLabel = true;
gsUS.LabelFontSize = 11;
gsDE.ShowLabel = true;
gsDE.LabelFontSize = 11;
gsIN.ShowLabel = true;
gsIN.LabelFontSize = 11;

地上局間のアクセスを比較する

accessStatus メソッドを使用して、各衛星と地上局間のアクセス ステータスを計算します。出力配列の各行は、コンスタレーション内の衛星に対応します。各列はシナリオ内の時間ステップに対応します。True の値は、衛星がその特定の時間サンプルで航空機にアクセスできることを示します。accessStatus の 2 番目の出力には、シナリオの時間ステップが含まれます。1 日間の分析期間にわたって各地上局の累積アクセスをプロットします。

[statusUS, timeSteps] = accessStatus(accessUS);
statusDE = accessStatus(accessDE);
statusIN = accessStatus(accessIN);

% Sum cumulative access at each timestep
statusUS = sum(statusUS, 1);
statusDE = sum(statusDE, 1);
statusIN = sum(statusIN, 1);

subplot(3,1,1);
stairs(timeSteps, statusUS);
title("Natick to GALILEO")
ylabel("# of satellites")
subplot(3,1,2);
stairs(timeSteps, statusDE);
title("München to GALILEO")
ylabel("# of satellites")
subplot(3,1,3);
stairs(timeSteps, statusIN);
title("Bangalore to GALILEO")
ylabel("# of satellites")

Figure contains 3 axes objects. Axes object 1 with title Natick to GALILEO, ylabel # of satellites contains an object of type stair. Axes object 2 with title München to GALILEO, ylabel # of satellites contains an object of type stair. Axes object 3 with title Bangalore to GALILEO, ylabel # of satellites contains an object of type stair.

比較のために、各地上局のアクセス間隔メトリックを表に収集します。

statusTable = [table(height(intervalsUS), height(intervalsDE), height(intervalsIN)); ...
    table(sum(intervalsUS.Duration)/3600, sum(intervalsDE.Duration)/3600, sum(intervalsIN.Duration)/3600); ...
    table(mean(intervalsUS.Duration/60), mean(intervalsDE.Duration/60), mean(intervalsIN.Duration/60)); ...
    table(mean(statusUS, 2), mean(statusDE, 2), mean(statusIN, 2)); ...
    table(min(statusUS), min(statusDE), min(statusIN)); ...
    table(max(statusUS), max(statusDE), max(statusIN))];
statusTable.Properties.VariableNames = ["Natick", "München", "Bangalore"];
statusTable.Properties.RowNames = ["Total # of intervals", "Total interval time (hrs)",...
    "Mean interval length (min)", "Mean # of satellites in view", ...
    "Min # of satellites in view", "Max # of satellites in view"];
statusTable
statusTable=6×3 table
                                    Natick    München    Bangalore
                                    ______    _______    _________

    Total # of intervals                40        40          31  
    Total interval time (hrs)       167.88    169.95      180.42  
    Mean interval length (min)      251.82    254.93      349.19  
    Mean # of satellites in view     7.018    7.1041      7.5337  
    Min # of satellites in view          5         5           5  
    Max # of satellites in view          9        10           9  

Walker-Delta コンスタレーションは経度にわたって均等に分布しています。ネイティックとミュンヘンは同様の緯度に位置しているため、コンスタレーションに関して非常に類似したアクセス特性を持っています。バンガロールは赤道に近い緯度にあり、個々のアクセス間隔の数が少ないにもかかわらず、視野内の衛星の平均数が最も多く、全体の間隔時間が最も長く、平均間隔期間が最も長い(約 95 分)都市です。GNSS 三辺測量に必要なように、すべての場所には常に少なくとも 4 つの衛星が視野内にあります。

参考文献

[1] ワーツ、ジェームズ・R、デイビッド・F・エヴェレット、ジェフリー・J・プシェル。宇宙ミッションエンジニアリング:新しいSmad 。カリフォルニア州ホーソーン:マイクロコズムプレス、2011年。印刷します。

[2] ビーチ、テレサW.、セファニアコルナナ、ミゲルB.モラ。3 つの衛星コンスタレーション設計アルゴリズムの研究。 第 14 回宇宙飛行力学に関する国際シンポジウム、ブラジル、フォス・ド・イグアス、1999 年。

[3] 欧州宇宙機関:ガリレオの事実と数字。https://www.esa.int/Applications/Navigation/Galileo/Facts_and_figures

参考

ブロック

オブジェクト