Этот пример демонстрирует, как настроить анализ доступа между наземной станцией и коническими датчиками на борту созвездие спутников. Наземная станция и конический датчик, принадлежащий спутнику, как говорят, имеют доступ друг к другу, если наземная станция в поле зрения конического датчика, и угол возвышения конического датчика относительно наземной станции больше или равен минимальному углу возвышения последнего. Сценарий включает созвездие 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
, который может вращаться независимый от спутника. Таким образом, спутники могут указать прямо вниз (поведение по умолчанию), в то время как карданов подвес может быть сконфигурирован так, чтобы камеры независимо отследили географический сайт.
satelliteScenario
| satellite
| access
| groundStation
| satelliteScenarioViewer
| conicalSensor
| transmitter
| receiver