poliastro? What is poliastro? Pure Python library for Astrodynamics Orbital element conversion, analytical and numerical propagation, interface to NEOs databases, orbital maneuvers Physical unit handling, astronomical time scales Cool documentation Version 0.8.0 released few days ago! MIT License (permissive, i.e. commercial-friendly) http://docs.poliastro.space/ (http://docs.poliastro.space/) http://docs.poliastro.space/en/v0.8.0 /changelog.html#poliastro-0-8-0-2017-11-18 (http://docs.poliastro.space /en/v0.8.0/changelog.html#poliastro-0-8-0-2017-11-18)
2.1. First contact 2.1. First contact Interactive usage on Jupyter notebook Physical units, astronomical time scales and reference frame handling (thanks to Astropy) Orbital elements conversion (cartesian, keplerian, equinoctial) 2D and 3D visualization
In [3]: r = [-6045, -3490, 2500] * u.km v = [-3.457, 6.618, 2.533] * u.km / u.s ss = Orbit.from_vectors(Earth, r, v, Time.now()) ss Out[3]: 7283 x 10293 km x 153.2 deg orbit around Earth (♁) In [4]: ss.epoch Out[4]: <Time object: scale='utc' format='datetime' value=2017-11-21 23:21:46.509700> In [5]: ss.raan.to(u.deg) Out[5]: 255.27929 ∘
Near Earth Objects (NEOs) NeoWs DASTCOM5 database ftp://ssd.jpl.nasa.gov/pub/ssd/README.txt https://api.nasa.gov/neo/?api_key=DEMO_KEY (https://api.nasa.gov/neo/?api_key=DEMO_KEY) In [10]: from astropy.coordinates import solar_system_ephemeris solar_system_ephemeris.set("jpl") Orbit.from_body_ephem(Earth) Out[10]: 1 x 1 AU x 23.4 deg orbit around Sun (☉) In [11]: from poliastro.neos import neows florence = neows.orbit_from_name("Florence") florence Out[11]: 1 x 3 AU x 22.2 deg orbit around Sun (☉) In [12]: from poliastro.neos import dastcom5 halley_1835 = dastcom5.orbit_from_name('1P')[-3] halley_1835 Out[12]: 1 x 35 AU x 162.3 deg orbit around Sun (☉)
deg orbit around Earth (♁) In [20]: propagate(ss, 3 * u.day, method=cowell, rtol=1e-9, ad=accel, callback=results) Out[20]: 21188 x 24857 km x 153.2 deg orbit around Earth (♁)
ss_i = Orbit.circular(Earth, alt=700 * u.km) ss_i Out[31]: 7078 x 7078 km x 0.0 deg orbit around Earth (♁) In [32]: hoh = Maneuver.hohmann(ss_i, 36000 * u.km) hoh.get_total_cost() Out[32]: 3.6173999 km s
Izzo algorithm compiled or interpreted in several ways. Figure from ) https://indico.esa.int/indico/event/111/session/32/contribution/5 (https://indico.esa.int/indico/event/111/session/32/contribution/5)
Continuous-thrust maneuvers and perturbations: Several optimal or quasi-optimal transfer maneuvers (studied as part of my �nal MSc project ) Solar pressure, atmospheric drag, third body effects... https://github.com/Juanlu001/pfc-uc3m (https://github.com/Juanlu001/pfc-uc3m) Improvements on propagation: Support for events (pericenter and apocenter passage, eclipses, custom events) Better convergence Storage of intermediate results (plotting, analysis) Better validation: So far, results from textbook assignments and scholarly papers: scarce and often not available in full precision Next step: validate against SPICE
use API while being "fast enough" Lots of functionality provided by a strong ecosystem of packages Interactive visualization is useful in preliminary analysis There is some work to do to add more features and improve stability We would love to have you as a contributor!