Этот пример сравнивает орбиты, предсказанные "Двумя Телами, Кеплеровскими", Упрощенные общие возмущения 4 (SGP4) и Упрощенные Возмущения Глубокого космоса 4 распространителя орбиты (SDP4). Распространитель орбиты является решателем, который вычисляет положение и скорость объекта, движение которого преимущественно под влиянием силы тяжести от небесных тел. Два Тела Кеплеровский распространитель орбиты основан на относительной модели 2D тела, которая принимает сферическое поле силы тяжести для Земли и пропускает третьи влияния корпуса и другие экологические возмущения, и следовательно, наименее точны. Распространитель орбиты SGP4 объясняет светские и периодические орбитальные возмущения, вызванные геометрией Земли и атмосферным перетаскиванием, и применим к околоземным спутникам, орбитальный период которых меньше 225 минут. Распространитель орбиты SDP4 полагается на SGP4 путем объяснения солнечной и лунной силы тяжести и применим к спутникам, орбитальный период которых больше или равен 225 минутам. Распространитель орбиты по умолчанию для satelliteScenario
SGP4 для спутников, орбитальный период которых меньше 225 минут и SDP4 в противном случае.
Создайте спутниковый сценарий при помощи satelliteScenario
функция. Установите время начала до 11 мая 2020 12:35:38 UTC и время остановки до 13 мая 2020 12:35:38 UTC, при помощи datetime
функция. Установите шаг расчета на 60 секунд.
startTime = datetime(2020,5,11,12,35,38); stopTime = startTime + days(2); sampleTime = 60; sc = satelliteScenario(startTime,stopTime,sampleTime)
sc = satelliteScenario with properties: StartTime: 11-May-2020 12:35:38 StopTime: 13-May-2020 12:35:38 SampleTime: 60 Viewers: [0×0 matlabshared.satellitescenario.Viewer] Satellites: [] GroundStations: [] AutoShow: 1
Добавьте три спутника в спутниковый сценарий из файла 2D линейного элемента (TLE) eccentricOrbitSatellite.tle
при помощи satellite
функция. TLE является форматом данных, используемым для кодирования орбитальных элементов Вращающегося вокруг земли объекта, заданного в определенное время. Присвойте Два Тела Кеплеровский распространитель орбиты первому спутнику, SGP4 к второму спутнику и SDP4 к третьему спутнику.
tleFile = "eccentricOrbitSatellite.tle"; satTwoBodyKeplerian = satellite(sc,tleFile, ... "Name","satTwoBodyKeplerian", ... "OrbitPropagator","two-body-keplerian")
satTwoBodyKeplerian = Satellite with properties: Name: "satTwoBodyKeplerian" ID: 1 ConicalSensors: [] Gimbals: [] Transmitters: [] Receivers: [] Accesses: [] GroundTrack: [1×1 matlabshared.satellitescenario.GroundTrack] Orbit: [1×1 matlabshared.satellitescenario.Orbit] OrbitPropagator: "two-body-keplerian" MarkerColor: [1 0 0] MarkerSize: 10 ShowLabel: 1 LabelFontColor: [1 0 0] LabelFontSize: 15
satSGP4 = satellite(sc,tleFile, ... "Name","satSGP4", ... "OrbitPropagator","sgp4")
satSGP4 = Satellite with properties: Name: "satSGP4" ID: 2 ConicalSensors: [] Gimbals: [] Transmitters: [] Receivers: [] Accesses: [] GroundTrack: [1×1 matlabshared.satellitescenario.GroundTrack] Orbit: [1×1 matlabshared.satellitescenario.Orbit] OrbitPropagator: "sgp4" MarkerColor: [1 0 0] MarkerSize: 10 ShowLabel: 1 LabelFontColor: [1 0 0] LabelFontSize: 15
satSDP4 = satellite(sc,tleFile, ... "Name","satSDP4", ... "OrbitPropagator","sdp4")
satSDP4 = Satellite with properties: Name: "satSDP4" ID: 3 ConicalSensors: [] Gimbals: [] Transmitters: [] Receivers: [] Accesses: [] GroundTrack: [1×1 matlabshared.satellitescenario.GroundTrack] Orbit: [1×1 matlabshared.satellitescenario.Orbit] OrbitPropagator: "sdp4" MarkerColor: [1 0 0] MarkerSize: 10 ShowLabel: 1 LabelFontColor: [1 0 0] LabelFontSize: 15
Запустите спутниковое средство просмотра сценария и визуализируйте спутниковый сценарий при помощи satelliteScenarioViewer
функция. Установите визуализацию satTwoBodyKeplerian
к красному, satSGP4
к зеленому и satSDP4
к пурпурному.
v = satelliteScenarioViewer(sc); satSGP4.MarkerColor = [0 1 0]; satSGP4.Orbit.LineColor = [0 1 0]; satSGP4.LabelFontColor = [0 1 0]; satSDP4.MarkerColor = [1 0 1]; satSDP4.Orbit.LineColor = [1 0 1]; satSDP4.LabelFontColor = [1 0 1];
Фокусируйте камеру на satTwoBodyKeplerian
при помощи camtarget
функция.
camtarget(v,satTwoBodyKeplerian);
Щелкните левой кнопкой где угодно в спутниковом окне средства просмотра сценария и переместите мышь при содержании нажатия кнопки, чтобы панорамировать камеру. Настройте уровень изменения масштаба с помощью колесика прокрутки, чтобы принести все три спутника в представление.
Визуализируйте перемещение satelliles при помощи play
функция на спутниковом сценарии. play
функция симулирует спутниковый сценарий от заданного StartTime
к StopTime
использование размера шага задано SampleTime
, и проигрывает результаты на спутниковом средстве просмотра сценария.
play(sc)
Используйте управление воспроизведением, расположенное в нижней части спутникового окна средства просмотра сценария, чтобы управлять скоростью воспроизведения и направлением. Фокусируйте камеру снова на satTwoBodyKeplerian
при помощи camtarget
функция, и приносит все три спутника в представление путем корректировки уровня изменения масштаба.
camtarget(v,satTwoBodyKeplerian);
Положения этих трех спутников отличаются в зависимости от времени.
Возвратите историю положения и скорости спутников в Геоцентрической астрономической системе координат (GCRF) при помощи states
функция.
[positionTwoBodyKeplerian,velocityTwoBodyKeplerian,time] = states(satTwoBodyKeplerian); [positionSGP4,velocitySGP4] = states(satSGP4); [positionSDP4,velocitySDP4] = states(satSDP4);
Вычислите величину относительного положения satSGP4
и satSDP4
относительно satTwoBodyKeplerian
при помощи vecnorm
функция.
sgp4RelativePosition = vecnorm(positionSGP4 - positionTwoBodyKeplerian,2,1); sdp4RelativePosition = vecnorm(positionSDP4 - positionTwoBodyKeplerian,2,1);
Постройте величину относительных положений в километрах satSGP4
и satSDP4
относительно того из satTwoBodyKeplerian
при помощи plot
функция.
sgp4RelativePositionKm = sgp4RelativePosition/1000; sdp4RelativePositionKm = sdp4RelativePosition/1000; plot(time,sgp4RelativePositionKm,time,sdp4RelativePositionKm) xlabel("Time") ylabel("Relative position (km)") legend("SGP4","SDP4")
Начальное относительное положение satSGP4
является ненулевым и тот из satSDP4
нуль потому что исходные положения satTwoBodyKeplerian
и satSDP4
вычисляются из файла TLE с помощью распространителя орбиты SDP4, в то время как исходное положение satSGP4
вычисляется с помощью распространителя орбиты SGP4. В зависимости от времени, положение satSDP4
отклоняется от того из satTwoBodyKeplerian
потому что последующие положения первого вычисляются с помощью распространителя орбиты SDP4, в то время как те из последнего вычисляются с помощью Двух Тел Кеплеровский распространитель орбиты. Распространитель орбиты SDP4 обеспечивает более высокую точность, потому что различающийся Два Тела Кеплеровский распространитель орбиты, она составляет сплющенность Земли, атмосферного перетаскивания и силы тяжести от солнца и луны.
Вычислите величину относительной скорости satSGP4
и satSDP4
относительно satTwoBodyKeplerian
при помощи vecnorm
функция.
sgp4RelativeVelocity = vecnorm(velocitySGP4 - velocityTwoBodyKeplerian,2,1); sdp4RelativeVelocity = vecnorm(velocitySDP4 - velocityTwoBodyKeplerian,2,1);
Постройте величину относительных скоростей в метрах в секунду satSGP4
и satSDP4
относительно satTwoBodyKeplerian
при помощи plot
функция.
plot(time,sgp4RelativeVelocity,time,sdp4RelativeVelocity) xlabel("Time") ylabel("Velocity deviation (m/s)") legend("SGP4","SDP4")
Начальная относительная скорость satSDP4
нуль потому что точно так же, как исходное положение, начальная скорость satTwoBodyKeplerian
и satSDP4
также вычисляются из файла TLE с помощью распространителя орбиты SDP4. В зависимости от времени, скорость satSDP4
отклоняется от того из satTwoBodyKeplerian
потому что во все другие времена, скорость satTwoBodyKeplerian
вычисляется с помощью Двух Тел Кеплеровский распространитель орбиты, который имеет более низкую точность, когда по сравнению с тем из распространителя орбиты SDP4, который используется для вычисления скорости satSDP4
. Скачки соответствуют периапсиде (самая близкая точка в орбите от центра массы Земли), где величины ошибок скорости объявлены.
Отклонения в графиках являются результатом различных уровней точности трех распространителей орбиты. Кеплеровский распространитель орбиты Двух Тел наименее точен, когда это принимает, что поле силы тяжести Земли является сферическим, и также пропускает все другие источники орбитальных возмущений. Распространитель орбиты SGP4 более точен, когда это составляет сплющенность Земли и атмосферного перетаскивания. Распространитель орбиты SDP4 является самым точным среди трех, потому что это также составляет солнечную и лунную силу тяжести, которая является более явной в этом примере, потому что орбитальный период больше 225 минут, таким образом, беря спутник дальше от Земли.
satelliteScenario
| satellite
| access
| groundStation
| satelliteScenarioViewer
| conicalSensor
| transmitter
| receiver