Aerospace Open Source Tools

I collect some open source aerospace softwares in this post. For present, my focus is on orbital and attitude dynamics, but also include some remote sensing data handeling and analysis.

Suggestions, recommendations, and comments are very welcomed.

Python

poliastro

  • poliastro is an open source pure Python package dedicated to problems arising in Astrodynamics and Orbital Mechanics, such as orbit propagation, solution of the Lambert’s problem, conversion between position and velocity vectors and classical orbital elements and orbit plotting, focusing on interplanetary applications. It is released under the MIT license.

astropy

  • According to its website, “The Astropy Project is a community effort to develop a single core package for Astronomy in Python and foster interoperability between Python astronomy packages”. Not only it provides important core features for poliastro like time and physical units handling, but also sets a high bar for code quality and documentation standards. A truly inspiring project.

Skyfield

https://rhodesmill.org/skyfield/
https://github.com/skyfielders/python-skyfield/

  • Skyfield is a pure-Python astronomy package that is compatible with both Python 2 and 3 and makes it easy to generate high precision research-grade positions for planets and Earth satellites.
  • Skyfield computes positions for the stars, planets, and satellites in orbit around the Earth. Its results should agree with the positions generated by the United States Naval Observatory and their Astronomical Almanac to within 0.0005 arcseconds (half a “mas” or milliarcsecond).
  • (poliastro’s author) Another Astronomy Python package focused on computing observations of planetary bodies and Earth satellites written by Brandon Rhodes. It is the successor of pyephem, also written by him, but skyfield is a pure Python package and provides a much cleaner API.

Plyades: A Python Astrodynamics Library

https://github.com/helgee/plyades

  • Plyades is an MIT-licensed astrodynamics library written in Python. It aims to provide a comprehensive toolset for fast development of high-performance mission analysis applications. The API provides powerful high-level objects for pythonic ease-of-use while the low-level functional building blocks can also be used independently.
  • (poliastro’s author) A pioneering astrodynamics library written in Python by Helgee Eichhorn. Its clean and user friendly API inspired me to completely refactor poliastro 0.2 so it could be much easier to use. It has been stalled for a while, but at the moment of writing these lines its author is pushing new commits.

orbital (Development stopped 2 or 6 years ago)

https://github.com/RazerM/orbital

  • (poliastro’s author) Yet another orbital mechanics Python library written by Frazer McLean. It is very similar to poliastro (orbital plotting module was inspired in mine) but its internal structure is way smarter. It is more focused in plotting and it even provides 3D plots and animations.

Pytroll/pyorbital

https://github.com/pytroll/pyorbital

  • This is pyorbital, python package for computing orbital parameters from tle files, and making diverse astronomical computations.
  • It is part of the pytroll project: http://pytroll.org

**orekit-python-wrapper

  • (poliastro’s author) According to its website, “The Orekit python wrapper enables to use Orekit within a normal python environment”, using JCC. Orekit is a well-stablished, mature open source library for Astrodynamics written in Java strongly supported by several space agencies. The Python wrapper is developed by the Swedish Space Corporation.

**pykep

https://github.com/esa/pykep
https://esa.github.io/pykep/

  • pykep is a scientific library providing basic tools for astrodynamics research. Algorithmic efficiency is a main focus of the library, which is written in C++ and exposed to Python using the boost::python library. At the library core is the implementation of an efficient solver for the multiple revolutions Lambert’s problem, objects representing direct (Sims-Flanagan), indirect (Pontryagin) and hybrid methods to represent low-thrust optimization problems, efficient keplerian propagators, Taylor-integrators, a SGP4 propagator, TLE and SATCAT support and more.

(值得仔细研究一下)

pysat: Python Satellite Data Analysis Toolkit

https://github.com/pysat/pysat

  • The Python Satellite Data Analysis Toolkit (pysat) is a package providing a simple and flexible interface for downloading, loading, cleaning, managing, processing, and analyzing scientific measurements. Although pysat was initially designed for in situ satellite observations, it now supports many different types of ground- and space-based measurements.
  • Online Documentation

PyTROLL

http://pytroll.github.io/ \

Pytroll is an easy to use, modular, free and open source python framework for the processing of earth observation satellite data. The provided python packages are designed to be used both in R&D environments and in 24/7 operational production.

Pytroll/Satpy

Java

Orekit

Orekit/Rugged: A sensor-to-terrain mapping tool

https://github.com/CS-SI/Rugged