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

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

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

Создайте спутниковый сценарий с помощью 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: [1×0 matlabshared.satellitescenario.Satellite]
    GroundStations: [1×0 matlabshared.satellitescenario.GroundStation]
          AutoShow: 1

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

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

tleFile = "leoSatelliteConstellation.tle";
sat = satellite(sc,tleFile)
sat = 
  1x40 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 = 
  1x40 ConicalSensor array with properties:

    Name
    ID
    MountingLocation
    MountingAngles
    MaxViewAngle
    Accesses
    FieldOfView

Задайте Географический Сайт, который будет Сфотографирован в Спутниковом Сценарии

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

name = "Geographical Site";
minElevationAngle = 30; % degrees
geoSite = groundStation(sc, ...
    "Name",name, ...
    "MinElevationAngle",minElevationAngle)
geoSite = 
  GroundStation with properties:

                 Name:  Geographical Site
                   ID:  81
             Latitude:  42.3 degrees
            Longitude:  -71.35 degrees
             Altitude:  0 meters
    MinElevationAngle:  30 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]
          MarkerColor:  [0 1 1]
           MarkerSize:  10
            ShowLabel:  true
       LabelFontColor:  [0 1 1]
        LabelFontSize:  15

Добавьте доступ к анализу между камерами и географическим сайтом

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

for idx = 1:numel(cam)
    access(cam(idx),geoSite);
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.5 0 1]

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

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

v = satelliteScenarioViewer(sc);

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

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

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

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

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

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

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

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

hide([sat.Orbit]);

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

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

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

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

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

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

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

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

play(sc);

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

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

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

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

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

  • Разделите это количество на длительность сценария 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-site 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), по крайней мере одна камера может сфотографировать сайт.

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

n = nnz(systemWideAccessStatus)
n = 203

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

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

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

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

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

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

Улучшите доступ в масштабе всей системы к проценту, заставив камеры отследить географический сайт

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

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

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

for idx = 1:numel(sat)
    pointAt(sat(idx),geoSite);
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-site 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

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

play(sc)

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

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

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

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

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

  • MinElevationAngle из географического сайта

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

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

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