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