В этом примере показано, как настроить анализ доступа между наземной станцией и коническими датчиками на борту группировки спутников. Наземная станция и конический датчик, принадлежащие спутнику, имеют доступ друг к другу, если наземная станция находится внутри поля зрения конического датчика и угол возвышения конического датчика относительно наземной станции больше или равен минимальному углу возвышения последнего. Сценарий предполагает группировку из 40 спутников на низкой околоземной орбите и географической площадки, расположенной в MathWorks Natick. Каждый спутник имеет камеру с полем зрения 90 градусов. Перед всей группировкой спутников поставлена задача фотографировать MathWorks Natik, которая находится в 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 1:00:00 UTC и времени окончания 12-May-2020 7: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
Использовать groundStation добавить наземную станцию, которая представляет MathWorks Natick. Укажите его MinElevationAngle до 30 градусов. Если широта и долгота не указаны, по умолчанию используются координаты MathWorks Natic.
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
Использовать access добавление анализа доступа между каждой камерой и MathWorks Natic. Анализ доступа будет использоваться для определения того, когда каждая камера может фотографировать 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 Natic находится внутри поля зрения камеры, а угол возвышения камеры относительно MathWorks Natic больше или равен 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 Natik внутри контура является визуальным подтверждением того, что он находится внутри поля зрения камеры на борту спутника 4.
Использовать hide скрытие орбит спутника и замедление визуализации.
hide([sat.Orbit]);

Измените цвет визуализации доступа на зеленый.
for idx = 1:numel(ac) ac(idx).LineColor = 'green'; end

Использовать accessIntervals для определения времени доступа между каждой камерой и MathWorks Natic. Это время, когда камера может фотографировать 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 Natik, также требуется определить процент общесистемного доступа, который представляет собой процент времени от времени начала сценария до времени остановки, когда хотя бы один спутник может сфотографировать MathWorks Natick. Это вычисляется следующим образом:
Для каждой камеры рассчитайте историю состояния доступа к MathWorks Natick с помощью accessStatus. Для данной камеры это вектор строки логик, где каждый элемент в векторе представляет статус доступа, соответствующий данной временной выборке. Значение True указывает на то, что камера может фотографировать MathWorks Natic в этот конкретный образец времени.
Выполнение логической операции 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 % secondssystemWideAccessDuration = 6090
Использовать seconds для расчета общей продолжительности сценария.
scenarioDuration = seconds(sc.StopTime - sc.StartTime)
scenarioDuration = 21600
Рассчитайте процент доступа для всей системы.
systemWideAccessPercentage = (systemWideAccessDuration/scenarioDuration)*100
systemWideAccessPercentage = 28.1944
Конфигурация ориентации спутников по умолчанию такова, что их оси рыскания направлены прямо вниз к надиру (точке на Земле непосредственно под спутником). Так как камеры по умолчанию выровнены по оси рыскания, они также указывают прямо вниз. В результате MathWorks Natic выходит за пределы поля зрения камер до того, как их угол возвышения опустится ниже 30 градусов. Поэтому процент общесистемного доступа ограничен полем зрения камер.
Если вместо этого камеры всегда указывают на MathWorks Natick, последняя всегда находится внутри поля зрения камер, пока Земля не блокирует линию видимости. Следовательно, процент общесистемного доступа теперь будет ограничен MathWorks Natick 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 Natic.
Этот пример показал, как определить время, в которое камеры на борту спутников в созвездии могут фотографировать географический участок (MathWorks Natick). Камеры были смоделированы с использованием конических датчиков, а анализ доступа использовался для расчета времени. Кроме того, процент общесистемного доступа был рассчитан для определения процента времени в течение 6-часового периода, когда по меньшей мере один спутник может фотографировать MathWorks Natick. Было видно, что эти результаты зависят от того, в каком направлении указывали камеры.
Эти результаты также являются функцией:
Орбита спутников
MinElevationAngle MathWorks Natick
Положение установки и расположение камер относительно спутников
Поле зрения (MaxViewAngle) камер, если они не постоянно указывают на MathWorks Natick
Измените приведенные выше параметры в соответствии с требованиями и проверьте их влияние на интервалы доступа и процент доступа в рамках всей системы. Орбиту спутников можно изменить, явно указав их орбитальные элементы Keplerian с помощью satellite. Кроме того, камеры могут быть установлены на gimbals, который может вращаться независимо от спутника. Таким образом, спутники могут указывать прямо вниз (поведение по умолчанию), в то время как карданные шарниры могут быть сконфигурированы так, чтобы камеры независимо отслеживали MathWorks Natick.