This repository includes reports, notebooks, and data relevant to astrodynamics. Specifically, this project outlines Halo orbit solvers and manifold transfer calculations, and provides a large collection of numerically periodic Halo orbits for common CR3BP systems in our solar system. This repository also includes notebooks and papers that describe Halo orbit solvers and manifold transfer calculations in more detail. The primary source for this project is Rund's Masters Thesis at Cal Poly.
In short, this repository contains:
- Over 130,000 numerically periodic Halo orbits in our solar system
- A Pluto notebook that outlines Halo orbit solvers, and why they're useful
- A paper that describes Halo orbit solvers in more detail.
- A Pluto notebook that outlines invariant manifolds, and their applications in low-cost interplanetary transfer designs
- A paper that describes manifold transfer calcualtions in more detail
All works in this repository are licensed under the Unlicense Open Source license (that is, they are free and available within public domain) with one exception: all papers and notebooks under the papers
and notebooks
directories are licensed with the permissive MIT license.
Halo orbits are theoretically perfectly periodic orbits about equilibrium positions (a.k.a. Lagrange points) within the Circular Restricted Three-body Problem. All Halo Orbits are surrounded by stable and unstable manifolds. These manifolds can be used to carry a spacecraft closer to a desired destination without spending fuel. As Rund shows, this can be used to drastically lower the fuel costs required for interplanetary trajectories. Some colorful examples are shown directly below!
This codebase uses the Julia Programming Language and DrWatson. As a result, this repository is entirely reproducable!
To (locally) reproduce this project, do the following:
-
Download this codebase. Note that raw data is typically not included in the git-history and may need to be re-created with included scripts.
-
Open a Julia REPL and enter:
julia> using Pkg julia> Pkg.activate("path/to/this/project") julia> Pkg.instantiate()