주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

Ephemeris 데이터를 사용한 위성 군집 모델링

이 예제에서는 액세스 분석을 위해 24개 위성으로 구성된 위성군(ESA Galileo GNSS 위성군과 유사)에 대한 타임스탬프가 찍힌 ephemeris 데이터를 위성 시나리오에 추가하는 방법을 보여줍니다. 이 예제에서는 Aerospace Blockset Orbit Propagator 블록에서 생성된 데이터를 사용합니다. 자세한 내용은 Aerospace Blockset 예제 Orbit Propagator 블록을 사용한 위성군 모델링을 참조하세요.

satelliteScenario 객체는 이전에 생성되고 타임스탬프가 찍힌 위성 천문력 데이터를 timeseries 또는 timetable 객체에서 시나리오로 로드하는 것을 지원합니다. 천문력은 일정 기간 동안 위성의 위치(그리고 선택적으로 속도) 상태 정보를 포함하는 표입니다. 시나리오 객체에 위성을 추가하는 데 사용되는 Ephemeris 데이터는 시나리오 시간 단계에 맞춰 makima 보간 방법을 통해 보간됩니다. 이를 통해 Simulink 모델에서 생성된 데이터를 새 위성 시나리오나 기존 위성 시나리오에 통합할 수 있습니다.

미션 파라미터 및 위성군 초기 조건 정의

임무의 시작 날짜와 기간을 지정하세요. 이 예제에서는 MATLAB 구조를 사용하여 미션 데이터를 구성합니다. 이러한 구조를 통해 나중에 예제에서 데이터에 접근하는 것이 더 직관적이 됩니다. 또한 글로벌 기반 작업 공간을 정리하는 데 도움이 됩니다.

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

이 예에서의 위성군은 유럽의 GNSS(전역 항법 위성 시스템) 위성군인 Galileo와 유사하게 모델링된 Walker-Delta 위성군입니다. 이 위성군은 중간 지구 궤도(MEO)에 있는 24개의 위성으로 구성되어 있습니다. 임무 시작 날짜 및 Epoch에서 위성의 케플러 궤도 요소는 다음과 같습니다.

mission.ConstellationDefinition = table( ...
    29599.8e3 * ones(24,1), ...                % Semi-major axis (m)
    0.0005    * ones(24,1), ...                % Eccentricity
    56        * ones(24,1), ...                % Inclination (deg)
    350       * ones(24,1), ...                % Right ascension of the ascending node (deg)
    sort(repmat([0 120 240], 1,8))', ...       % Argument of periapsis (deg)
    [0:45:315, 15:45:330, 30:45:345]', ...     % True anomaly (deg)
    'VariableNames', ["a (m)", "e", "i (deg)", ...
    "Ω (deg)", "ω (deg)", "ν (deg)"]);
mission.ConstellationDefinition
ans=24×6 table
     a (m)        e       i (deg)    Ω (deg)    ω (deg)    ν (deg)
    ________    ______    _______    _______    _______    _______

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

Ephemeris 시계열 데이터 로드

시계열 객체에는 위성군에 있는 24개 위성 모두의 위치와 속도 데이터가 포함되어 있습니다. 이 데이터는 ECEF(지구중심고정) 좌표계인 ITRF(국제 지상 기준 프레임)을 참조합니다. 데이터는 Aerospace Blockset Orbit Propagator 블록을 사용하여 생성되었습니다. 자세한 내용은 Aerospace Blockset 예제 Orbit Propagator 블록을 사용한 위성군 모델링을 참조하세요.

mission.Ephemeris = load("SatelliteScenarioEphemerisData.mat", "TimeseriesPosITRF", "TimeseriesVelITRF");
mission.Ephemeris.TimeseriesPosITRF
  timeseries

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

  More properties, Methods
mission.Ephemeris.TimeseriesVelITRF
  timeseries

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

  More properties, Methods

위성 ephemerides을 satelliteScenario O 객체에 로드

분석을 위한 satellite scenario 객체를 생성합니다.

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

satellite 메서드를 사용하여 ECEF 위치 및 속도 시계열 객체에서 위성 시나리오에 모든 24개 위성을 추가합니다. 이 예에서는 위치 및 속도 정보를 사용합니다. 그러나 위치 데이터에서만 위성을 추가한 후 속도 상태를 추정할 수도 있습니다. 이름-값 쌍 CoordinateFrame에 사용 가능한 좌표 프레임은 "ECEF", "Inertial", "Geographic"입니다. timeseries 객체에 ts .TimeInfo.StartDate에 대한 값이 포함되어 있는 경우, 이 메서드는 해당 값을 timeseries 객체의 Epoch로 사용합니다. StartDate가 정의되지 않은 경우, 이 메서드는 기본적으로 시나리오 시작 날짜를 사용합니다.

sat = satellite(scenario, mission.Ephemeris.TimeseriesPosITRF, mission.Ephemeris.TimeseriesVelITRF, ...
    CoordinateFrame="ecef", Name="GALILEO " + (1:24))
sat = 
  1x24 Satellite array with properties:

    Name
    ID
    PhysicalProperties
    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
    CentralBodyOptions: [1×1 Aero.satellitescenario.CentralBodyOptions]
            Satellites: [1×24 matlabshared.satellitescenario.Satellite]
        GroundStations: [1×0 matlabshared.satellitescenario.GroundStation]
             Platforms: [1×0 matlabshared.satellitescenario.Platform]
               Viewers: [0×0 matlabshared.satellitescenario.Viewer]
              AutoShow: 1

또는 위성을 위성 시나리오에 MATLAB timetable, table, 또는 tscollection형식의 ephemerides로 추가할 수도 있습니다. 예를 들어, 이전 섹션의 위치 timeseries 객체의 처음 3개 위성을 포함하는 timetable satelliteScenario 객체와 함께 사용하도록 포맷되어 아래와 같습니다.

  • 위성은 변수(열 머리글)로 표현됩니다.

  • 각 행에는 행의 Time 속성과 연결된 위치 벡터가 포함되어 있습니다.

timetable(...
datetime(getabstime(mission.Ephemeris.TimeseriesPosITRF), Locale="en_US"), ...
squeeze(mission.Ephemeris.TimeseriesPosITRF.Data(1,:,:))', ...
squeeze(mission.Ephemeris.TimeseriesPosITRF.Data(2,:,:))', ...
squeeze(mission.Ephemeris.TimeseriesPosITRF.Data(3,:,:))',...
VariableNames=["Satellite_1", "Satellite_2", "Satellite_3"])
ans=57×3 timetable
            Time                          Satellite_1                                 Satellite_2                                 Satellite_3               
    ____________________    ________________________________________    ________________________________________    ________________________________________

    30-Nov-2020 22:23:24    1.8249e+07    -2.2904e+07    -4.2009e+06    2.3678e+07     -1.075e+07     1.4119e+07    1.5239e+07     7.7076e+06     2.4177e+07
    30-Nov-2020 22:23:38    1.8252e+07    -2.2909e+07    -4.1563e+06    2.3662e+07    -1.0735e+07     1.4156e+07    1.5214e+07     7.7334e+06     2.4184e+07
    30-Nov-2020 22:24:53    1.8268e+07    -2.2937e+07     -3.933e+06    2.3584e+07    -1.0663e+07      1.434e+07    1.5088e+07     7.8627e+06     2.4222e+07
    30-Nov-2020 22:31:05    1.8326e+07    -2.3055e+07    -2.8121e+06    2.3185e+07     -1.028e+07     1.5243e+07    1.4466e+07     8.5229e+06     2.4378e+07
    30-Nov-2020 22:48:39    1.8326e+07    -2.3223e+07     3.9182e+05    2.2005e+07    -8.9966e+06     1.7621e+07    1.2798e+07     1.0506e+07     2.4539e+07
    30-Nov-2020 23:08:30    1.8076e+07    -2.3078e+07     3.9992e+06    2.0643e+07    -7.2057e+06     1.9943e+07    1.1124e+07     1.2894e+07     2.4217e+07
    30-Nov-2020 23:28:27    1.7624e+07    -2.2538e+07     7.5358e+06    1.9321e+07    -5.0678e+06     2.1838e+07    9.7076e+06     1.5379e+07     2.3362e+07
    30-Nov-2020 23:50:59    1.6968e+07    -2.1428e+07     1.1328e+07    1.7977e+07    -2.3021e+06       2.34e+07    8.4636e+06     1.8183e+07     2.1782e+07
    01-Dec-2020 00:14:27    1.6244e+07    -1.9712e+07     1.4937e+07    1.6838e+07     8.7771e+05     2.4329e+07    7.5789e+06     2.0966e+07     1.9489e+07
    01-Dec-2020 00:38:42    1.5585e+07    -1.7375e+07     1.8189e+07    1.6017e+07      4.355e+06     2.4512e+07    7.0779e+06     2.3551e+07     1.6498e+07
    01-Dec-2020 01:04:35    1.5124e+07    -1.4345e+07     2.1006e+07    1.5585e+07     8.1065e+06      2.383e+07    6.9314e+06     2.5831e+07     1.2718e+07
    01-Dec-2020 01:31:17    1.5035e+07     -1.079e+07     2.3096e+07     1.562e+07     1.1816e+07     2.2205e+07    7.0715e+06     2.7527e+07     8.3282e+06
    01-Dec-2020 01:58:58    1.5443e+07    -6.8501e+06     2.4303e+07    1.6102e+07     1.5274e+07     1.9601e+07     7.348e+06     2.8484e+07     3.4363e+06
    01-Dec-2020 02:27:08    1.6406e+07    -2.8152e+06     2.4478e+07    1.6925e+07     1.8197e+07     1.6103e+07    7.5521e+06     2.8587e+07    -1.6897e+06
    01-Dec-2020 02:55:18    1.7869e+07      1.001e+06     2.3582e+07    1.7894e+07     2.0376e+07     1.1901e+07    7.4614e+06     2.7856e+07    -6.7427e+06
    01-Dec-2020 03:23:29    1.9711e+07      4.381e+06     2.1653e+07    1.8787e+07     2.1739e+07     7.1754e+06    6.8858e+06     2.6405e+07    -1.1504e+07
      ⋮

위성의 그래픽 속성 설정

동일한 궤도 색상을 갖도록 동일한 궤도 평면에 위성을 설정합니다.

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개의 위성에 액세스할 수 있어야 합니다. 이 예에서는 세 개의 위치를 사용하여 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 및 End 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의 두 번째 출력에는 시나리오의 시간 단계가 포함되어 있습니다. 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  

Galileo와 같은 Walker-Delta 위성군은 경도에 따라 균등하게 분포되어 있습니다. 나틱과 뮌헨은 비슷한 위도에 위치해 있으므로 위성군에 대한 액세스 특성이 매우 비슷합니다. 방갈로르는 적도에 더 가까운 위도에 위치해 있습니다. 개별 액세스 구간의 수가 적음에도 불구하고, 시야에 들어오는 위성의 평균 수가 가장 많고, 전체 구간 시간이 가장 길며, 평균 구간 지속 시간도 가장 깁니다(약 95분). 모든 위치는 GNSS 삼각 측량에 필요하므로 항상 최소 4개의 위성을 시야에 확보해야 합니다.

참고 문헌

[1] Wertz, James R, David F. Everett 및 Jeffery J. Puschell. Space Mission Engineering: The New Smad. Hawthorne, CA: Microcosm Press, 2011. Print.

[2] The European Space Agency: Galileo Facts and Figures. https://www.esa.int/Applications/Navigation/Galileo/Facts_and_figures

참고 항목

객체

함수

도움말 항목