poliastro: a Python library for interactive astrodynamics
Jorge Martínez Garrido
Abstract
Space is more popular than ever, with the growing public awareness of interplanetary scientific missions,
as well as the increasingly large number of satellite companies planning to deploy satellite constellations.
Python has become a fundamental technology in the astronomical sciences,
and it has also caught the attention of the Space Engineering community.
One of the requirements for designing a space mission is
studying the trajectories of satellites, probes, and other artificial objects,
usually ignoring non-gravitational forces or treating them as perturbations:
the so-called n-body problem.
However, for preliminary design studies and most practical purposes,
it is sufficient to consider only two bodies: the object under study and its attractor.
Even though the two-body problem has many analytical solutions,
orbit propagation (the initial value problem) and targeting (the boundary value problem)
remain computationally intensive because of long propagation times, tight tolerances, and vast solution spaces.
On the other hand, astrodynamics researchers often do not share
the source code they used to run analyses and simulations,
which makes it challenging to try out new solutions.
This paper presents poliastro, an open-source Python library for interactive astrodynamics
that features an easy-to-use API and tools for quick visualization.
poliastro implements core astrodynamics algorithms
(such as the resolution of the Kepler and Lambert problems)
and leverages numba, a Just-in-Time compiler for scientific Python,
to optimize the running time.
Thanks to Astropy, poliastro can perform seamless coordinate frame conversions
and use proper physical units and timescales.
At the moment, poliastro is the longest-lived Python library for astrodynamics,
has contributors from all around the world,
and several New Space companies and people in academia use it.
astrodynamics, orbital mechanics, orbit propagation, orbit visualization, two-body problem
DOI10.25080/majora-212e5952-015