Выход эфемерид из Скайфилда

Можно ли использовать Skyfield для распространения TLE вперед и последующего вывода его эфемерид, а не геометрических x, y, z в какой-то момент в будущем?

Я проработал примеры в API и, возможно, что-то неправильно понял, но похоже, что все доступные выходные данные относятся к событиям затмения, времени восхода и заката, углам обзора и т. д. Я хотел бы увидеть шесть элементов (SMA, эксцентриситет , наклон, RAAN, ArgP, означает аномалию), чтобы я мог видеть, что происходит между опубликованными TLE.

Я вижу способ, который может сработать. В принципе это кажется правильным, хотя я немного осторожен, поскольку я новичок в Skyfield:

  • распространить TLE на новое время
  • выходное положение.км
  • выходная скорость.km_per_s
  • сборка их вместе с новой эпохой для создания нового (полученного из SGP4) вектора состояния в то время
  • вывести орбитальные элементы из pos-vel

Это кажется скорее кладжом, если такая возможность уже существует.

Положение и скорость в некоторую эпоху являются формой эфемерид. На мой взгляд, положение/скорость в эпоху времени является лучшей формой эфемерид, чем TLE, до тех пор, пока положение и скорость в эту эпоху не являются производными от TLE. SGP4 не очень хороший распространитель (и это приятно). Цель состояла в том, чтобы сделать что-то, что могло бы распространять орбиты, используя технологию прошлого века (предыдущее тысячелетие!), и делать это с использованием технологии с плавающей запятой одинарной точности.
Эфемериды — это таблица положений (и, возможно, скоростей) в разное время. Орбитальные элементы не являются эфемеридами — это инструкции по вычислению эфемерид, которые иногда более полезны, чем сами эфемериды, а иногда нет. TLE — это инструкции о том, как сконфигурировать только одну конкретную часть программного обеспечения, SGP4, для вычисления эфемерид, и это единственное, для чего следует использовать SGP4: превратить TLE в таблицы pos & vel, а затем обработать их. их дальше чем-то другим, имеющим лучшую физику и менее запутанные определения.

Ответы (2)

Skyfield, как и большинство других инструментов, заявляющих о способности обрабатывать данные TLE, зависит от группы образованных, но старых догадок людей о том, что SGP4 мог делать некоторое время назад, а не от предоставления доступа к тому, что SGP4 на самом деле делает прямо сейчас. Это имело смысл в течение долгого времени, потому что у большинства людей не было другого способа заполучить SGP4, но, к счастью, это уже не так. Любой, кто зарегистрирует бесплатную учетную запись, теперь может загрузить официальную реализацию SGP4 правительства США и связанных с ней утилит, некоторые из которых были значительно обновлены в ноябре 2020 года, с https://www.space-track.org/documentation#/sgp4 .

Чтобы увидеть код, о котором я говорю ниже, вы должны согласиться с ограничениями лицензии с открытым исходным кодом SGP4 (которые появятся, когда вы нажмете ссылку для загрузки, и позже будут доступны для вашей ссылки как \Sgp4Prop_small\SampleCode\*\SGP4_Open_License .txt), загрузите этот файл, распакуйте его и просмотрите содержимое Sgp4Prop_small\SampleCode\Python\wrappers\ и Sgp4Prop_small\SampleCode\Python\DriverExamples\Sgp4Prop\src\ . Код оболочки также предоставляется на C, C#, Fortran, Java, Matlab и Visual Basic (фактические библиотеки предоставляются в виде DLL для Windows и .so для Linux), но вы спрашивали о Python, поэтому я опишу все это с начала. Точка зрения питона.

В рамках этого обновления предоставленная оболочка Python, наконец, изменилась с Python 2 на Python 3 (Sgp4Prop.py, включенный в версии библиотеки до 7.9, не изменился с января 2013 г., но все еще распространяется в октябре 2020 г., произошел сбой в Python 3, поскольку он не использовал круглые скобки в операторах печати, среди других основных недостатков). Лично я добавляю несколько собственных настроек, которые, по моему мнению, упрощают использование библиотек, например, добавление пустого __init__.py в каталог и добавление точек перед преобразованием вызовов оберток библиотек друг к другу из абсолютного импорта в относительный, но это совершенно необязательно и не является частью официального дистрибутива, и это все, что я собираюсь сейчас подробно описать.

Одна явно не-Pythonic вещь, с которой нужно бороться, заключается в том, что интерфейс, предоставляемый оболочками по умолчанию, точно следует старому стилю C и Fortran, поэтому все функции возвращают только целочисленный код состояния. Данные возвращаются в виде записанных в структуры, которые вы должны предварительно объявить с помощью ctypes и предоставить в качестве входных аргументов, что несложно, но совсем не так, как обычно используется Python. Вполне возможно скрыть все это, написав свои собственные обертки, которые я сделал для себя, но пока не сделал их доступными для кого-либо вне работы.

Задача преобразования TLE в таблицу соприкасающихся кеплеровских элементов наилучшим доступным способом, максимально корректно используя все модели SGP4, является одной из базовых вещей, показанных в качестве примера в демонстрационном скрипте Sgp4Prop_small\SampleCode\Python\DriverExamples. \Sgp4Prop\src\Sgp4Prop.py . Этот сценарий делает неудачный выбор (строка 129 вызывает TimeFunc.TConLoadFile), желая, чтобы вы предоставили время начала, остановки и шага для файла в болезненно архаичном и излишне запутанном формате «карты 6P» (например, как описано на стр. 7). –9 из Sgp4Prop_small\Documents\librarydocuments\TimeFunc.doc), но библиотека TimeFunc предоставляет все необходимые функции преобразования для создания формата времени, который хочет получить распространитель (десятичные дни с 1950 года, UTC) из любых других данных о времени, которые у вас могут быть. .

... чтобы я мог видеть, что происходит между опубликованными TLE.

Это отличная причина , чтобы захотеть такую ​​функцию; наблюдение за эволюцией орбитальных элементов с течением времени может дать некоторое интуитивное представление о том, что происходит. (примеры: 1 , 2 ). Он не сразу сообщает вам, где находится космический корабль в любой точке и с какой скоростью он движется (это то, что обычно хотят заказчики вектора состояния), но это был бы отличный вариант!

Я не знаю, есть ли он в Skyfield или нет (но я почти уверен, что нет), но сайт Github довольно активен и жив , и в дополнение к странице вопросов есть даже страница обсуждений .

Как я вижу, есть несколько путей:

  1. Рассчитайте преобразователь соприкасающихся кеплеровских элементов из одного или массива векторов состояния в один или массив соприкасающихся элементов орбиты, что и есть в Horizons. (но см. проблемы с кеплеровскими элементами ниже)
  2. Рассчитайте приблизительный средний элемент орбиты, подобный SGP (будет ли он содержать условия сопротивления SGP?)
  3. Рассчитайте что-нибудь лучше или более стандартно, чем SGP, возможно, Брауэр-Лиддан имеет в виду орбитальные элементы.
  4. Все вышеперечисленное!

Space SE, безусловно, имеет все уравнения для преобразования вектора состояния в кеплерову орбиту на основе центральной силы Земли. г М , но они гарантированно будут ошибочными порядка одной части на тысячу, потому что они даже не включают сплюснутость Земли, выраженную Дж 2 ни какой-либо другой эффект, поэтому я не думаю, что это работает за то, что вы хотите.

Это легко увидеть; получить соприкасающиеся элементы для некоторых объектов в Horizons, скажем, десять раз, распределенных за один период, и посмотреть, насколько каждый элемент орбиты фактически изменяется в пределах одной орбиты.


Дальнейшее чтение здесь:

Дальнейшее чтение вне сайта: