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

Этот пример демонстрирует, как настроить анализ доступа между наземной станцией и коническими датчиками на созвездие спутников. Наземная станция и конический датчик, принадлежащий спутнику, имеют доступ друг к другу, если наземная станция находится внутри поля зрения конического датчика, и угол возвышения конического датчика относительно наземной станции больше или равен минимальному углу возвышения последнего. Сценарий включает созвездие 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-May-2020 13:00:00 UTC, а время остановки - 12-May-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. Файл определяет средние параметры орбиты 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 в спутниковом сценарии

Использование 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);

Средство просмотра может использоваться как визуальное подтверждение того, что сценарий настроен правильно. Фиолетовая линия указывает, что камера на Satellite 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 внутри контура является визуальным подтверждением того, что он находится внутри поля зрения камеры на борту Satellite 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. Для заданной камеры это вектор-строка логических единиц, где каждый элемент в векторе представляет состояние доступа, соответствующее заданной временной выборке. Значение True указывает, что камера может фотографировать MathWorks Natick в эту конкретную временную выборку.

  • Выполните логическую OR на всех этих векторах-строках, соответствующих доступу каждой камеры к MathWorks Natick. Это приведет к появлению одной строки вектора логики, в которой заданный элемент верен, если по крайней мере одна камера может фотографировать 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

Улучшите процент доступа к системе путем создания Cameras Track MathWorks Natick

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

Если вместо этого камеры всегда указывают на MathWorks Natick, последняя всегда находится внутри поля зрения камер, пока Земля не блокирует линию зрения. Следовательно, процент доступа к системе теперь будет ограничен MinElevationAngle MathWorks Natick в отличие от поля зрения камер. В первом случае интервалы доступа начались и закончились, когда 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.

См. также

Объекты

Функции

Похожие примеры

Подробнее о