OREKIT
1. Purpose
OREKIT library is a low level library for space mechanics projects. It is
implemented in the JAVA language.
OREKIT project was initiated by CS with the following goals in mind:
- provide a common base layer for space projects
- support both quick developments with loose requirements and complex
projects with rich physical modeling, fine customization, and high accuracy
- be user-extensible through clear and as simple as possible architecture
- use unified interfaces to allow models and algorithms switching with almost no effort
- provide both basic and rich models that can be plugged interchangeably to ease
applications validation
- separate models configuration from models usage to hide away complexity and keep
caller code simple
- support both development of standalone and embedded applications (web services,
plugins, scripting frameworks ...)
- use up-to-date techniques for low cost development and maintenance
- remove platforms and system dependencies and leverage environment-hell
(environment variables, dynamic libraries versions, operating system,
filesystem layout ...)
2. Features
Orekit can be used for many purposes, from simple geometrical or orbital tools
up to complex orbits propagators with several perturbing forces, maneuvers and
discrete events. Here is a short list of the features offered by the library:
- Time
- high accuracy absolute dates
- time scales (TAI, UTC, GPS, TCG, TT, TDB ...)
- transparent handling of leap seconds
- Geometry
- frames hierarchy supporting fixed and time-dependent (or telemetry-dependent) frames
- predefined frames (EME2000/J2000, GCRF, ITRF2005 and intermediate frames, TEME, MEME and PEF frames,
Veis, topocentric, tnw and qsw local orbital frames, spacecraft body, Moon, Sun, planets,
solar system barycenter, Earth-Moon barycenter)
- user extensible (used operationally in real time with a set of about 60 frames on several spacecrafts)
- transparent handling of IERS Earth Orientation Parameters (for both new CIO-based frames and
old equinox-based frames)
- transparent handling of JPL DE 405 and DE 406 ephemerides
- transforms including kinematic combination effects
- composite transforms reduction and caching for efficiency
- extensible central body shapes models (with predefined spherical and ellipsoidic shapes)
- cartesian and geodesic coordinates, kinematics
- Spacecraft state
- cartesian, elliptical keplerian, circular and equinoctial parameters
- Two-Lines Elements
- transparent conversion between all parameters
- automatic binding with frames
- attitude state and derivative
- mass management
- Propagation
- analytical propagation models (Kepler, Eckstein-Heschler, SDP4/SGP4 with 2006 corrections)
- numerical propagators
- customizable force models
- central attraction
- gravity models (automatic reading of ICGEM (new Eigen models), SHM (old Eigen models),
EGM and GRGS gravity field files formats, even compressed)
- atmospheric drag (DTM2000, Jacchia-Bowman 2006 and simple exponential models)
- third body attraction (with data for Sun, Moon and all solar systems planets)
- radiation pressure with eclipses
- multiple maneuvers
- state of the art ODE integrators (adaptive stepsize with error control,
continuous output, switching functions, G-stop, step normalization ...)
- can be used in master mode (propagator drives application callback functions),
slave mode (propagator is driven by calling application) or ephemeris generation
mode (all intermediate results solved and navigation feature enabled, to use the
generated ephemeris later as if it was an analytical model, ideal for search and
iterative algorithms)
- computation of jacobians with respect to orbital parameters and selected force models parameters
- serialization mechanism to store complete results on persistent storage for later use
- tabulated ephemerides
- file based
- memory based
- integration based
- unified interface above analytical/numerical/tabulated propagators for easy
switch from coarse analysis to fine simulation with one line change
- all propagators can be used in several different modes
- slave mode: propagator is driven by calling application
- master mode: propagator drives application callback functions
- ephemeris generation mode: all intermediate results are stored during
propagation and provided back to the application which can navigate at will
through them, effectively using the propagated orbit as if it was an
analytical model, even if it really is a numerically propagated one, which
is ideal for search and iterative algorithms
- handling of discrete events during integration
(models changes, G-stop, simple notifications ...)
- predefined discrete events
- eclipse (both umbra and penumbra)
- ascending and descending node crossing
- apogee and perigee crossing
- raising/setting with respect to a ground location
(with customizable triggering elevation)
- date
- altitude crossing
- impulse maneuvers occurrence
- eclipse (either umbra or penumbra
- possibility to slightly shift events in time (for example to switch from
solar pointing mode to something else a few minutes before eclipse entry and
reverting to solar pointing mode a few minutes after eclipse exit)
- Attitude
- extensible attitude evolution models
- predefined laws
- central body related attitude
(nadir pointing, center pointing, target pointing,
yaw compensation, yaw-steering)
- orbit referenced attitudes (LOF aligned, offset on all axes)
- space referenced attitudes (inertial, celestial body pointed, spin stabilized)
- Customizable data loading
- loading from local disk
- loading from classpath
- loading from network (even through internet proxies)
- support for zip archives
- support from gzip compressed files
- plugin mechanism to delegate loading to user defined database or data access library
3. Dependency
OREKIT has only one dependency: the commons-math
open-source library. This library provides mathematical tools for many purposes: geometry,
polynomial equations, differential equations, and more... It is distributed under the
business-friendly Apache Software License version 2.0.
OREKIT is based on two commons-math packages:
- geometry, which provides very useful objects as vectors
and rotations (internally represented by quaternions)
- ode, which provides numerical solutions to solve
Ordinary Differential Equations (ODE).
The use of commons-math is hidden in OREKIT as much as possible so users don't
need to fully master this library. If they wish, they can limit themselves to understanding
the simple classes Vector3D and Rotation from the geometry package, and the interface
FirstOrderIntegrator from the ode package.
@author Luc Maisonobe
@author Thierry Ceolin
@author Fabien Maussion
@author Pascal Parraud
@author Véronique Pommier-Maurussane
@author Guylaine Prat