https://github.com/yuricst/paladin
Full-ephemeris integrator in python via pygsl
https://github.com/yuricst/paladin
astrodynamics
Last synced: 5 months ago
JSON representation
Full-ephemeris integrator in python via pygsl
- Host: GitHub
- URL: https://github.com/yuricst/paladin
- Owner: Yuricst
- License: mit
- Created: 2023-05-24T01:23:18.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-09-15T21:25:53.000Z (over 1 year ago)
- Last Synced: 2025-02-08T15:02:50.852Z (over 1 year ago)
- Topics: astrodynamics
- Language: Jupyter Notebook
- Homepage: https://yuricst.github.io/paladin/
- Size: 42.3 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# `paladin` : python library for astrodynamics
| PyPI | Documentation |
| -------- | ------------- |
| [](https://badge.fury.io/py/spacecraft-paladin) | [](https://yuricst.github.io/paladin/) |
!! Currently only tested/working with python 3.11 and numpy 1.X (due to restriction by pygsl) !!
## Installation
To install via pip
```bash
pip install spacecraft-paladin
```
To uninstall
```bash
pip uninstall spacecraft-paladin
```
## Environment setup
An example virtual environment for working with this library can be initialized using [`poetry`](https://python-poetry.org/) via
```bash
poetry install
pip install pygsl
```
Note: `pygsl` cannot be imported via `poetry` as it does not PEP 517 builds.
## Overview
This package provides tools for conducting CR3BP and ephemeris level analysis in cislunar and deep-space environments.
While the library is implemented in python, the majority of functionalities are powered by either [SPICE routines](https://naif.jpl.nasa.gov/pub/naif/toolkit_docs/FORTRAN/spicelib/index.html) or through numpy/scipy/numba implementations, resulting in (relatively) fast computations.
For numerical integration of ODEs, `paladin` provides the option of using either `scipy` or `gsl`; the latter is recommended due to higher accuracy.
Optimization is conducted by constructing problems as [`pygmo` udp's](https://esa.github.io/pygmo2/index.html), which can then be solved through a variety of compatible solvers, including IPOPT, SNOPT, or WORHP (the latter two requires licenses).
## Dependencies
Developed for python 3.10 & 3.11.
Package requirements:
- `numpy`, `matplotlib`, `numba`, `scipy`, `spiceypy`, `sympy`, `pygsl`
Optional:
- `pygmo`, `pygmo_plugins_nonfree` : required for running trajectory construction problems
## SPICE setup
Users are responsible for downloading [the generic SPICE kernels froom the NAIF website](https://naif.jpl.nasa.gov/pub/naif/generic_kernels/). In addition, supplementary custom kernels specific to this module are stored in `paladin/assets/spice/`. The most commonly required kernels are:
- `naif0012.tls`
- `de440.bsp`
- `gm_de440.tpc`
## GSL setup
See [pygsl setup notes](./notes/pygsl_setup.md)
## Capabilities
- [x] GSL event capability
- [x] Propagation in CR3BP
- [x] Propagation in N-body problem
- [x] Transition to full-ephemeris model
- [x] Helper methods for frame transformation
## Gallery
NRHO propagation