Спутниковое созвездие доступ к наземной станции

Этот пример демонстрирует, как настроить анализ доступа между наземной станцией и коническими датчиками на борту созвездие спутников. Наземная станция и конический датчик, принадлежащий спутнику, как говорят, имеют доступ друг к другу, если наземная станция в поле зрения конического датчика, и угол возвышения конического датчика относительно наземной станции больше или равен минимальному углу возвышения последнего. Сценарий включает созвездие 40 спутников низкой околоземной орбиты и географического сайта, расположенного в MathWorks Natick. Каждый спутник имеет камеру с полем зрения 90 градусов. Для целого созвездия спутников определяют задачу с фотографированием MathWorks Natick, который расположен в 42,3001 градусах на север и 71,3504 градусах на запад. Фотографии требуются, чтобы быть сделанными между 12 мая 2020 13:00 UTC и 12 мая 2020 19:00 UTC, когда MathWorks Natick соответственно освещается солнцем. Для получения изображения хорошего качества с минимальным атмосферным искажением, угол возвышения спутника относительно MathWorks Natick должен быть по крайней мере 30 градусами (обратите внимание на то, что, 30 градусов были произвольно выбраны в иллюстративных целях). Во время 6-часового интервала это требуется, чтобы определять времена, в течение которых каждый спутник может сфотографировать MathWorks Natick. Это также требуется, чтобы определять процент времени во время этого интервала, когда камера по крайней мере одного спутника видит MathWorks Natick. Это количество процента называют процентом доступа в масштабе всей системы.

Создайте спутниковый сценарий

Создайте спутниковый сценарий с помощью satelliteScenario. Используйте datetime установить время начала до 12 мая 2020 13:00:00 UTC и время остановки до 12 мая 2020 19:00:00 UTC. Установите шаг расчета симуляции на 30 секунд.

startTime = datetime(2020,5,12,13,0,0);
stopTime = startTime + hours(6);
sampleTime = 30; % seconds
sc = satelliteScenario(startTime,stopTime,sampleTime)
sc = 
  satelliteScenario with properties:

         StartTime: 12-May-2020 13:00:00
          StopTime: 12-May-2020 19:00:00
        SampleTime: 30
           Viewers: [0×0 matlabshared.satellitescenario.Viewer]
        Satellites: []
    GroundStations: []
          AutoShow: 1

Добавьте спутники в спутниковый сценарий

Используйте satellite добавить спутники в сценарий из файла TLE leoSatelliteConstellation.tle. Файл TLE задает средние орбитальные параметры 40 типовых спутников почти в круговых низких околоземных орбитах на высоте и наклоне приблизительно 500 км и 55 градусах соответственно.

tleFile = "leoSatelliteConstellation.tle";
sat = satellite(sc,tleFile)
sat = 
  1×40 Satellite array with properties:

    Name
    ID
    ConicalSensors
    Gimbals
    Transmitters
    Receivers
    Accesses
    GroundTrack
    Orbit
    OrbitPropagator
    MarkerColor
    MarkerSize
    ShowLabel
    LabelFontColor
    LabelFontSize

Добавьте камеры в спутники

Используйте conicalSensor добавить конический датчик в каждый спутник. Эти конические датчики представляют камеры. Задайте их MaxViewAngle быть 90 градусами, который задает поле зрения.

for idx = 1:numel(sat)
    name = sat(idx).Name + " Camera";
    conicalSensor(sat(idx),"Name",name,"MaxViewAngle",90);
end

% Retrieve the cameras
cam = [sat.ConicalSensors]
cam = 
  1×40 ConicalSensor array with properties:

    Name
    ID
    MountingLocation
    MountingAngles
    MaxViewAngle
    Accesses
    FieldOfView

Задайте MathWorks Natick Geographical Site в спутниковом сценарии

Используйте groundStation добавить наземную станцию, которая представляет MathWorks Natick. Задайте его MinElevationAngle быть 30 градусами. Если широта и долгота не заданы, они принимают значение по умолчанию к координатам MathWorks Natick.

name = "MathWorks Natick";
minElevationAngle = 30; % degrees
mwNatick = groundStation(sc, ...
    "Name",name, ...
    "MinElevationAngle",minElevationAngle)
mwNatick = 
  GroundStation with properties:

                 Name: "MathWorks Natick"
                   ID: 81
             Latitude: 42.3001
            Longitude: -71.3504
             Altitude: 0
    MinElevationAngle: 30
       ConicalSensors: []
              Gimbals: []
         Transmitters: []
            Receivers: []
             Accesses: []
          MarkerColor: [0 1 1]
           MarkerSize: 10
            ShowLabel: 1
       LabelFontColor: [0 1 1]
        LabelFontSize: 15

Добавьте доступ к анализу между камерами и MathWorks Natick

Используйте access добавить анализ доступа между каждой камерой и MathWorks Natick. Исследования доступа будут использоваться, чтобы определить, когда каждая камера сможет сфотографировать MathWorks Natick.

for idx = 1:numel(cam)
    access(cam(idx),mwNatick);
end

% Retrieve the access analysis objects
ac = [cam.Accesses];

% Properties of access analysis objects
ac(1)
ans = 
  Access with properties:

     Sequence: [41 81]
    LineWidth: 1
    LineColor: [0.5000 0 1]

Визуализируйте сценарий

Используйте satelliteScenarioViewer запустить спутниковое средство просмотра сценария и визуализировать сценарий.

v = satelliteScenarioViewer(sc);

Средство просмотра может использоваться в качестве визуального подтверждения, что сценарий был настроен правильно. Фиолетовая линия указывает, что камера на Спутнике 4 и MathWorks Natick имеет доступ друг к другу. Это означает, что MathWorks Natick в поле зрения камеры, и угол возвышения камеры относительно MathWorks Natick больше или равен 30 градусам. В целях этого сценария это означает, что камера может успешно сфотографировать MathWorks Natick.

Визуализируйте поле зрения камеры

Используйте fieldOfView визуализировать поле зрения каждой камеры на Спутнике 4.

fov = fieldOfView(cam([cam.Name] == "Satellite 4 Camera"))
fov = 
  FieldOfView with properties:

         LineWidth: 1
         LineColor: [0 1 0]
    VisibilityMode: 'inherit'

Присутствие MathWorks Natick в контуре является визуальным подтверждением, что это - в поле зрения камеры встроенный Спутник 4.

Настройте визуализацию

Используйте hide скрыть спутниковые орбиты и устранить помехи визуализацию.

hide([sat.Orbit]);

Измените цвет визуализации доступа к зеленому.

for idx = 1:numel(ac)
    ac(idx).LineColor = 'green';
end

Определите "Таймс", когда Камеры смогут Сфотографировать MathWorks Natick

Используйте accessIntervals определить времена, когда существует доступ между каждой камерой и MathWorks Natick. Это времена, когда камера может сфотографировать MathWorks Natick

accessIntervals(ac)
ans=30×8 table
           Source                  Target          IntervalNumber         StartTime                EndTime           Duration    StartOrbit    EndOrbit
    _____________________    __________________    ______________    ____________________    ____________________    ________    __________    ________

    "Satellite 1 Camera"     "MathWorks Natick"          1           12-May-2020 13:36:00    12-May-2020 13:39:30      210           1            1    
    "Satellite 1 Camera"     "MathWorks Natick"          2           12-May-2020 15:23:00    12-May-2020 15:25:00      120           2            2    
    "Satellite 2 Camera"     "MathWorks Natick"          1           12-May-2020 14:30:30    12-May-2020 14:34:30      240           1            1    
    "Satellite 3 Camera"     "MathWorks Natick"          1           12-May-2020 13:28:30    12-May-2020 13:32:30      240           1            1    
    "Satellite 4 Camera"     "MathWorks Natick"          1           12-May-2020 13:00:00    12-May-2020 13:02:30      150           1            1    
    "Satellite 4 Camera"     "MathWorks Natick"          2           12-May-2020 14:46:00    12-May-2020 14:48:30      150           2            2    
    "Satellite 5 Camera"     "MathWorks Natick"          1           12-May-2020 16:28:30    12-May-2020 16:33:00      270           3            3    
    "Satellite 6 Camera"     "MathWorks Natick"          1           12-May-2020 17:05:30    12-May-2020 17:09:30      240           3            3    
    "Satellite 7 Camera"     "MathWorks Natick"          1           12-May-2020 16:20:00    12-May-2020 16:24:30      270           2            3    
    "Satellite 8 Camera"     "MathWorks Natick"          1           12-May-2020 15:18:00    12-May-2020 15:20:00      120           2            2    
    "Satellite 8 Camera"     "MathWorks Natick"          2           12-May-2020 17:03:30    12-May-2020 17:07:00      210           3            3    
    "Satellite 9 Camera"     "MathWorks Natick"          1           12-May-2020 17:55:30    12-May-2020 17:57:00       90           3            3    
    "Satellite 10 Camera"    "MathWorks Natick"          1           12-May-2020 18:44:30    12-May-2020 18:49:00      270           4            4    
    "Satellite 11 Camera"    "MathWorks Natick"          1           12-May-2020 18:39:30    12-May-2020 18:44:00      270           4            4    
    "Satellite 12 Camera"    "MathWorks Natick"          1           12-May-2020 17:58:00    12-May-2020 18:01:00      180           3            3    
    "Satellite 29 Camera"    "MathWorks Natick"          1           12-May-2020 13:09:30    12-May-2020 13:13:30      240           1            1    
      ⋮

Вышеупомянутая таблица состоит из времен начала и конца каждого интервала, во время которого данная камера может сфотографировать MathWorks Natick. О длительности каждого интервала сообщают в секундах. StartOrbit и EndOrbit являются количествами орбиты спутника, к которому присоединена камера, когда доступ начинается и заканчивается. Количество запускается со времени начала сценария.

Используйте play визуализировать симуляцию сценария с его времени начала ко времени остановки. Это видно, что зеленые линии появляются каждый раз, когда камера может сфотографировать MathWorks Natick

play(sc);

Вычислите доступ в масштабе всей системы к проценту

В дополнение к определению времен, когда каждая камера может сфотографировать MathWorks Natick, она также требуется, чтобы определять процент доступа в масштабе всей системы, который является процентом времени со времени начала сценария ко времени остановки, когда по крайней мере один спутник может сфотографировать MathWorks Natick. Это вычисляется можно следующим образом:

  • Для каждой камеры вычислите историю состояния доступа к MathWorks Natick с помощью accessStatus. Для данной камеры это - вектор-строка из logicals, где каждый элемент в векторе представляет состояние доступа, соответствующее данной выборке времени. Значение True указывает, что камера может сфотографировать MathWorks Natick на той определенной выборке времени.

  • Выполните логический OR на всех этих векторах-строках, соответствующих доступу каждой камеры к MathWorks Natick. Это приведет к вектору одной строки из logicals, в котором данный элемент верен, если по крайней мере одна камера может сфотографировать MathWorks Natick на соответствующей выборке времени на срок одного шага расчета сценария 30 секунд.

  • Считайте число элементов в векторе, значением которого является True. Умножьте это количество на шаг расчета 30 секунд, чтобы определить общее время в секундах, когда по крайней мере одна камера сможет сфотографировать MathWorks Natick.

  • Разделите это количество на длительность сценария 6 часов и умножьтесь на 100, чтобы получить процент доступа в масштабе всей системы.

for idx = 1:numel(ac)
    [s,time] = accessStatus(ac(idx));
    
    if idx == 1
        % Initialize system-wide access status vector in the first iteration
        systemWideAccessStatus = s;
    else
        % Update system-wide access status vector by performing a logical OR
        % with access status for the current camera-MathWorks Natick access
        % analysis
        systemWideAccessStatus = or(systemWideAccessStatus,s);
    end
end

Используйте plot построить состояние доступа в масштабе всей системы относительно времени.

plot(time,systemWideAccessStatus,"LineWidth",2);
grid on;
xlabel("Time");
ylabel("System-Wide Access Status");

Каждый раз, когда состояние доступа в масштабе всей системы равняется 1 (True), по крайней мере одна камера может сфотографировать MathWorks Natick.

Используйте nnz определить число элементов в systemWideAccessStatus чьим значением является True.

n = nnz(systemWideAccessStatus)
n = 203

Определите общее время, когда по крайней мере одна камера сможет сфотографировать MathWorks Natick. Это выполняется путем умножения количества True элементы шагом расчета сценария.

systemWideAccessDuration = n*sc.SampleTime % seconds
systemWideAccessDuration = 6090

Используйте seconds вычислить общую длительность сценария.

scenarioDuration = seconds(sc.StopTime - sc.StartTime)
scenarioDuration = 21600

Вычислите процент доступа в масштабе всей системы.

systemWideAccessPercentage = (systemWideAccessDuration/scenarioDuration)*100
systemWideAccessPercentage = 28.1944

Улучшите доступ в масштабе всей системы к проценту путем создания дорожки камер MathWorks Natick

Настройка отношения по умолчанию спутников такова, что их оси рыскания указывают прямо вниз на низшую точку (точка на Земле непосредственно ниже спутника). Поскольку камеры выравниваются с осью рыскания по умолчанию, они указывают прямо вниз также. В результате MathWorks Natick выходит за пределы поля зрения камер перед их падениями угла возвышения ниже 30 градусов. Поэтому процент доступа в масштабе всей системы ограничивается полем зрения камер.

Если вместо этого камеры всегда указывают на MathWorks Natick, последний всегда в поле зрения камер, пока Земля не блокирует угол обзора. Следовательно, процент доступа в масштабе всей системы будет теперь ограничен MathWorks Natick's MinElevationAngle в противоположность полю зрения камер. В бывшем случае интервалы доступа начались и закончились, когда вводимый MathWorks Natick и оставил поле зрения камеры. Это ввело поле зрения некоторое время после того, как угол возвышения камеры вышел за предел 30 градусов и покинул поле представления перед его углом возвышения, который опускают ниже 30 градусов. Однако, если камеры постоянно будут указывать на MathWorks Natick, интервалы доступа начнутся, когда угол возвышения повысится выше 30 градусов и конца, когда это опускается ниже 30 градусов, таким образом, увеличивая длительность интервалов. Поэтому процент доступа в масштабе всей системы увеличится также.

Поскольку камеры твердо присоединены к спутникам, каждый спутник требуется, чтобы быть постоянно переориентированным вдоль его орбиты так, чтобы его ось рыскания отследила MathWorks Natick. Когда камеры выравниваются с осью рыскания, они также укажут на MathWorks Natick. Используйте pointAt заставить ось рыскания каждого спутника отследить MathWorks Natick.

for idx = 1:numel(sat)
    pointAt(sat(idx),mwNatick);
end

Повторно вычислите процент доступа в масштабе всей системы.

% Calculate system-wide access status
for idx = 1:numel(ac)
    [s,time] = accessStatus(ac(idx));
    
    if idx == 1
        % Initialize system-wide access status vector in the first iteration
        systemWideAccessStatus = s;
    else
        % Update system-wide access status vector by performing a logical OR
        % with access status for the current camera-MathWorks Natick
        % combination
        systemWideAccessStatus = or(systemWideAccessStatus,s);
    end
end

% Calculate system-wide access percentage
n = nnz(systemWideAccessStatus);
systemWideAccessDuration = n*sc.SampleTime;
systemWideAccessPercentageWithTracking = (systemWideAccessDuration/scenarioDuration)*100
systemWideAccessPercentageWithTracking = 38.3333

Процент доступа в масштабе всей системы улучшился приблизительно на 35%. Это - результат камер, постоянно указывающих на MathWorks Natick. Это может визуализироваться при помощи play снова.

play(sc)

Контур поля зрения является более не круговым, потому что камера не указывает прямо вниз больше, когда это отслеживает MathWorks Natick.

Исследование примера

Этот пример продемонстрировал, как определить времена, в которые камеры встроенные спутники в созвездии могут сфотографировать географический сайт (MathWorks Natick). Камеры были смоделированы с помощью конических датчиков, и анализ доступа использовался, чтобы вычислить времена. Кроме того, процент доступа в масштабе всей системы был вычислен, чтобы определить процент времени в 6-часовой период, когда по крайней мере один спутник может сфотографировать MathWorks Natick. Было замечено, что эти результаты зависели, на котором направлении указывали камеры.

Этими результатами является также функция:

  • Орбита спутников

  • MinElevationAngle из MathWorks Natick

  • Монтирование положения и местоположения камер относительно спутников

  • Поле зрения (MaxViewAngle) из камер, если они постоянно не указывают на MathWorks Natick

Измените вышеупомянутые параметры к своим требованиям и наблюдайте их влияние на интервалы доступа и процент доступа в масштабе всей системы. Орбита спутников может быть изменена путем явного указывания их Кеплеровских орбитальных элементов с помощью satellite. Кроме того, камеры могут быть смонтированы на gimbals, который может вращаться независимый от спутника. Таким образом, спутники могут указать прямо вниз (поведение по умолчанию), в то время как карданов подвес может быть сконфигурирован так, чтобы камеры независимо отследили MathWorks Natick.

Для просмотра документации необходимо авторизоваться на сайте