¿Cómo funciona el ejemplo del paquete poliastro python "Going to Mars with Python"? ¿Qué está haciendo realmente?

La respuesta de @astrojuanlu menciona la existencia del paquete poliastro de Python , y en la documentación encontré un ejemplo titulado Going to Mars with Python usando poliastro entre otros.

Los datos de entrada utilizados en el ejemplo incluyen algunas fechas históricas para el Laboratorio de Ciencias de Marte con el rover Curiosity y algunos Núcleos de Especias del JPL.

Aparentemente genera una trayectoria de misión aproximada a partir de eso de alguna manera.

Pregunta: En términos generales, ¿cómo hace esto? ¿Cuáles son los pasos y métodos básicos que utiliza y qué tipo de información se obtiene? ¿Existe una trayectoria interplanetaria que se pueda trazar? ¿Tiempos, magnitudes y direcciones de las maniobras Delta-V también?

Estoy buscando algo más que especulaciones de sillón o la clase de respuestas "Sospecho" . Si es posible, realice una prueba de manejo del ejemplo e incluya un fragmento de secuencia de comandos y un fragmento de salida junto con un resumen que responda a estas preguntas. La idea es dar una respuesta informativa a los futuros lectores y usuarios de poliastro. ¡Gracias!

Si bien no es estrictamente fuera de tema, siento que la documentación de polyastro pertenece al sitio de polyastro; @astrojuanlu es probablemente la única persona equipada para responder en cualquier caso.
@RussellBorogove No estoy buscando detalles computacionales; Ajusté el lenguaje para que quede más claro que solo estoy buscando una descripción general de los pasos y lo que logran. Creo que cualquiera que le dé una vuelta y conozca un poco de Python y la mecánica orbital podrá hacer esto. Nunca miré el código fuente del paquete Skyfield Python, por ejemplo, pero al usarlo, tengo una comprensión básica de cómo hace lo que hace. Es difícil saber de antemano que "nadie sabe la respuesta a su pregunta" con certeza.
@RussellBorogove Después de su comentario, ajusté rápidamente la redacción. ¿Todavía crees que "@astrojuanlu es probablemente la única persona equipada para responder"?
En caso de que los moderadores decidan cerrar esto por fuera de tema, decidí dejar una respuesta :) ¡Espero que sea útil!
@uhoh recuerda aceptar mi respuesta si crees que es buena
@astrojuanlu sí, dame unos días más. He estado esperando a que expire una de mis tres recompensas para poder agregar una recompensa aquí también. Uno acaba de expirar hace unas horas. También necesito leer todos sus enlaces y darle a poliastro una prueba de manejo. No dude en enviarme un ping nuevamente si no termino este fin de semana, ¡y gracias nuevamente por la excelente respuesta!

Respuestas (1)

Descargo de responsabilidad completo: soy el autor y principal desarrollador de poliastro.

El paso más importante antes de hacer nada es recuperar de alguna manera las posiciones y velocidades de los planetas del Sistema Solar. Astropy , una de las dependencias centrales de poliastro, envía modelos aproximados de precisión media descritos en Simon et al "Expresiones numéricas para fórmulas de precesión y elementos medios para la Luna y los planetas" (1994). Sin embargo, para aplicaciones de alta precisión, es mejor descargar directamente las efemérides del JPL , basadas en datos de observación de muchas fuentes diferentes y que cubren un amplio período de tiempo[1]. Otro paquete de Python, jplephem , puede leer los polinomios de Chebyshev contenidos en estos archivos y calcular los elementos cartesianos de los cuerpos disponibles.

Después de establecer fechas precisas de lanzamiento y llegada, en este caso para la misión Mars Science Laboratory, y descuidar las maniobras de corrección de trayectoria (TCM) y otras desviaciones de las trayectorias de Kepler, el poliastro puede resolver el problema de los límites de dos cuerpos, también conocido como problema de Lambert . que da la trayectoria entre dos puntos dados. Hay varios algoritmos para resolver el problema de Lambert, y poliastro usa el algoritmo de Izzo , descrito en Izzo "Revisiting Lambert's Problem" (2014), que usa un método iterativo de Householder (el equivalente de tercer orden del método de Newton) para lograr una convergencia más rápida con menos funciones. evaluaciones

Después de eso, lo único que queda es tramar[2]. Para las trayectorias keplerianas, el poliastro ya sabe cómo muestrear mejor los puntos para maximizar la eficiencia ( y evitar efectos feos en el apocentro de órbitas altamente excéntricas ) mediante el uso de un método inteligente descrito en Berry & Healy "La transformación de Sundman generalizada para la propagación de alta- órbitas elípticas de excentricidad" (2002). Para el caso de trayectorias ya calculadas o de órbitas no keplerianas, poliastro permite al usuario utilizar únicamente el conjunto de vectores. Para producir gráficos 2D más simples, poliastro reproyecta todas las órbitas en el marco perifocal de la primera órbita. Por otro lado, los gráficos 3D no requieren ningún tipo de procesamiento previo.

Trama de la misión MSL

[1] Una fuente alternativa con un formato de archivo compatible es el "Institut de Mécanique Céleste et de Calcul des Éphémérides" https://www.imcce.fr/recherche/equipes/asd/inpop/download17a#4 , pero no son pero apoyado por Astropy .

[2] La única razón por la que las tramas no aparecían era por un molesto error con la biblioteca JavaScript 3D subyacente y el sitio web de documentación.

@uhoh, ¿le gustaría marcar esta como la respuesta aceptada? :)