Liberado poliastro 0.2: Mecánica Orbital y Astrodinámica en Python

Después de meses de trabajo he liberado poliastro 0.2.0, una biblioteca Python y Fortran destinada a estudiar problemas de Mecánica Orbital y Astrodinámica en Python:

https://pybonacci.github.io/poliastro

La versión 0.1.0 nació en 2013 mientras estudiaba Orbital Mechanics en el Politecnico di Milano: tomé unas subrutinas escritas en Fortran por el profesor David A. Vallado para su libro "Fundamentals of Astrodynamics and Applications" y escribí una interfaz en Python para poder optimizar una transferencia entre la Tierra y Venus.

Sin embargo la biblioteca era muy engorrosa de utilizar y tuve muchos problemas a la hora de manejar cantidades con unidades. Inspirado por el paquete abandonado Plyades, decidí refactorizar drásticamente todo el código y el resultado es poliastro 0.2.

Gracias al módulo astropy.units es sencillo utilizar cantidades con unidades que se integran de manera casi transparente con NumPy. Además, he incluido un módulo para representar órbitas en dos dimensiones con matplotlib y he cambiado la forma en la que se usa la biblioteca.

Solo hacen falta tres líneas para empezar a probar el potencial de poliastro:


from poliastro.examples import molniya
from poliastro.plotting import plot

plot(molniya)

Órbita Molniya

La piedra angular del paquete son los objetos State, que representan el estado de un objeto (un planeta, un satélite artificial) con respecto a un atractor principal (el Sol, la Tierra). Podemos acceder a sus vectores posición y velocidad, sus elementos keplerianos o pintar su órbita osculatriz.


from astropy import units as u
from poliastro.bodies import Earth
from poliastro.twobody import State

# Data from Curtis, example 4.3
r = [-6045, -3490, 2500] * u.km
v = [-3.457, 6.618, 2.533] * u.km / u.s

ss = State.from_vectors(Earth, r, v)

Así mismo, podemos definir maniobras (Maneuver) que alteran estas órbitas. Una forma es definir directamente los incrementos de velocidad que queremos aplicar, y otra es utilizar las funciones de poliastro para calcular maniobras comunes como las transferencias de Hohmann.

Transferencia de Hohmann

Podéis leer la documentación completa en inglés en la web de poliastro, y el código fuente está disponible en GitHub. Os animo a que le echéis un vistazo y me hagáis llegar todas las sugerencias que se os ocurran: he dedicado mucho tiempo a organizar el código de forma que fuese fácil de usar y me gustaría conocer vuestra opinión al respecto.

¡Muchas gracias y un saludo! 🙂

Juan Luis Cano

Estudiante de ingeniería aeronáutica y con pasión por la programación y el software libre. Obsesionado con mejorar los pequeños detalles y con ganas de cambiar el mundo. Divulgando Python en español a través de Pybonacci y la asociación Python España.

More Posts - Website

Follow Me:
TwitterLinkedIn

2 thoughts on “Liberado poliastro 0.2: Mecánica Orbital y Astrodinámica en Python

Leave a Reply

Your email address will not be published. Required fields are marked *