Как работает пример пакета poliastro python «Going to Mars with Python»? Что он делает на самом деле?

В ответе @astrojuanlu упоминается о существовании пакета Python poliastro , и в документации я нашел пример под названием Going to Mars with Python с использованием poliastro среди прочего.

Входные данные, используемые в примере, включают некоторые исторические даты для Марсианской научной лаборатории с марсоходом Curiosity и некоторые ядра специй JPL.

Очевидно, он каким-то образом генерирует приблизительную траекторию миссии.

Вопрос: В общих чертах, как это делается? Какие основные шаги и методы он использует, и какая информация получается? Можно ли построить межпланетную траекторию? Времена, масштабы и направления маневров Delta-V тоже?

Я ищу больше, чем просто спекуляции в кресле или класс ответов «я подозреваю» . Если возможно, проведите тест-драйв примера и включите фрагмент сценария и часть вывода вместе с кратким изложением, которое отвечает на эти вопросы. Идея состоит в том, чтобы дать ответ, который будет информативным для будущих читателей и пользователей полиастро. Спасибо!

Хотя это и не совсем не по теме, я чувствую, что документация по полиастро принадлежит сайту полиастро; @astrojuanlu, вероятно, единственный человек, способный ответить в любом случае.
@RussellBorogove Я не ищу вычислительных деталей; Я изменил язык, чтобы было понятнее, что я просто ищу обзор шагов и того, что они делают. Я думаю, что любой, кто попробует это и немного разбирается в питоне и орбитальной механике, сможет это сделать. Например, я никогда не смотрел исходный код пакета Skyfield Python, но, используя его, у меня есть базовое понимание того, как он делает то, что делает. Трудно заранее знать, что «никто не знает ответа на ваш вопрос» с какой-либо уверенностью.
@RussellBorogove После вашего комментария я быстро скорректировал формулировку. Вы все еще верите, что «@astrojuanlu, вероятно, единственный человек, способный ответить»?
На всякий случай, если модераторы решат закрыть это из-за не по теме, я решил оставить ответ :) Надеюсь, он будет полезен!
@uhoh не забудь принять мой ответ, если считаешь его хорошим
@astrojuanlu да, дай мне еще несколько дней. Я ждал, пока истечет срок действия одной из трех моих наград, чтобы я мог добавить сюда награду за награду. Срок действия одного истек несколько часов назад. Также нужно прочитать все ваши ссылки и дать полиастро тест-драйв. Не стесняйтесь пинговать меня снова, если я не закончу к этим выходным, и еще раз спасибо за отличный ответ!

Ответы (1)

Полный отказ от ответственности: я автор и главный разработчик полиастро.

Самый важный шаг перед тем, как что-либо делать, — это каким-то образом получить положения и скорости планет Солнечной системы. Astropy , одна из основных зависимостей полиастро, обеспечивает приближенные модели средней точности, описанные в Simon et al. «Числовые выражения для формул прецессии и средних элементов для Луны и планет» (1994). Однако для приложений с высокой точностью лучше напрямую загружать эфемериды из JPL , основанные на данных наблюдений из множества различных источников и охватывающих широкий временной интервал[1]. Другой пакет Python, jplephem , способен считывать полиномы Чебышева, содержащиеся в этих файлах, и вычислять декартовы элементы доступных тел.

После установки точных дат запуска и прибытия, в данном случае для миссии Mars Science Laboratory, и пренебрегая маневрами коррекции траектории (TCM) и другими отклонениями от кеплеровских траекторий, полиастро может решить граничную задачу двух тел, также известную как проблема Ламберта . который дает траекторию между двумя заданными точками. Существует несколько алгоритмов для решения проблемы Ламберта, и полиастро использует алгоритм Иззо , описанный в Иззо «Пересмотр проблемы Ламберта» (2014), который использует итерационный метод Хаусхолдера (эквивалент метода Ньютона 3-го порядка) для достижения более быстрой сходимости с меньшим количеством функций. оценки.

После этого остается только рисовать[2]. Для кеплеровских траекторий полиастро уже знает, как наилучшим образом выбирать точки, чтобы максимизировать эффективность ( и избежать уродливых эффектов в апоцентре орбит с большим эксцентриситетом ), используя интеллектуальный метод, описанный Берри и Хили «Обобщенное преобразование Сундмана для распространения высоко- эксцентриситет эллиптических орбит» (2002). В случае уже рассчитанных траекторий или некеплеровских орбит полиастро позволяет пользователю просто использовать набор векторов. Чтобы получить более простые 2D-графики, полиастро перепроецирует все орбиты на перифокальную рамку первой орбиты. С другой стороны, 3D-графики не требуют какой-либо предварительной обработки.

Сюжет миссии МСЛ

[1] Альтернативным источником с совместимым форматом файла является «Institut de Mécanique Céleste et de Calcul des Éphémérides» https://www.imcce.fr/recherche/equipes/asd/inpop/download17a#4 , но это не так . но поддерживается Astropy .

[2] Единственная причина, по которой графики не появлялись, заключалась в досадной ошибке в базовой 3D-библиотеке JavaScript и веб-сайте документации.

@uhoh, вы бы хотели отметить этот ответ как принятый? :)