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