[ANN] Epicycle beta: a Julia framework for astrodynamics, mission design, and navigation

Epicycle is a Julia package monorepo for astrodynamics, space mission design, and navigation that spans preliminary mission design through trajectory optimization and orbit determination. It contains coordinate systems, time standards, spacecraft state and ground station models, propagators, targeters, optimal control transcriptions, and batch and sequential estimators. This beta is the first feature-rich release following an MVP last winter.

The core abstractions and astronomical models (EpicycleBase, AstroEpochs, AstroStates, AstroFrames, AstroRoutines, and AstroUniverse) are open source under MIT; the modelling, propagation, optimization, and visualization packages are source available. Operational use and export-controlled capability require a separate license. Terms for each package are in the license file.

Installation

Epicycle is distributed through the Gen Astro registry. Add it alongside General, then install as usual:

using Pkg
pkg"registry add General https://github.com/GenAstro/GenAstroRegistry.git"
pkg"add Epicycle"

Product brochure: https://genastro.github.io/Epicycle/Epicycle/dev/assets/EpicycleProductBrochure.pdf
Gallery: Gallery · Epicycle.jl
Documentation: Home · Epicycle.jl

Some Example Solutions

A transfer between L1 and L2 Lyapunov orbits.

An Earth to Apophis rendezvous with Sims-Flanagan transcription.

An Earth-Earth-Venus gravity assist.

A filter-smoother solution.

Running the examples

Epicycle ships with 32 runnable examples covering propagation, targeting, optimal control, and orbit determination. List them and run any one by name:

using Epicycle
Epicycle.list_examples()
Epicycle.run_example("Ex_HohmannTransfer")

The Hohmann transfer example targets a two-maneuver transfer to a circular orbit and draws it on a globe in a browser tab.

Acknowledgments

Epicycle builds upon the foundational work of many contributors to the aerospace and scientific computing communities, including OrdinaryDiffEq.jl (SciML), SatelliteToolbox.jl (JuliaSpace), SPICE.jl (JuliaAstro), AstroForceModels.jl (Hammerhead Space), SNOW.jl (BYU FLOW Lab), and TEMPO.jl (Julia Space Mission Design). The full list is in the [documentation](Home · Epicycle.jl).

Feedback is welcome here, and bugs can be reported on GitHub: Issues · GenAstro/Epicycle · GitHub

2 Likes