overview.html 11.8 KB
Newer Older
Fabien Maussion's avatar
Fabien Maussion committed
1
<html>
Luc Maisonobe's avatar
Luc Maisonobe committed
2
OREKIT
Fabien Maussion's avatar
Fabien Maussion committed
3
<body>
Luc Maisonobe's avatar
Luc Maisonobe committed
4
<h2>1. Purpose</h2>
5
<p> 
Luc Maisonobe's avatar
Luc Maisonobe committed
6
  OREKIT library is a low-level library for space mechanics projects. It is 
Luc Maisonobe's avatar
Luc Maisonobe committed
7
implemented in the JAVA language. 
8
</p>
Luc Maisonobe's avatar
Luc Maisonobe committed
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
<p>OREKIT project was initiated by CS with the following goals in mind:</p>
<ul>
 <li>provide a common base layer for space projects</li>
 <li>support both quick developments with loose requirements and complex
     projects with rich physical modeling, fine customization, and high accuracy</li>
 <li>be user-extensible through clear and as simple as possible architecture</li> 
 <li>use unified interfaces to allow models and algorithms switching with almost no effort</li>
 <li>provide both basic and rich models that can be plugged interchangeably to ease
     applications validation</li> 
 <li>separate models configuration from models usage to hide away complexity and keep
     caller code simple</li>
 <li>support both development of standalone and embedded applications (web services,
     plugins, scripting frameworks ...)</li>
 <li>use up-to-date techniques for low cost development and maintenance</li>
 <li>remove platforms and system dependencies and leverage environment-hell
     (environment variables, dynamic libraries versions, operating system,
      filesystem layout ...)</li>
</ul>
Luc Maisonobe's avatar
Luc Maisonobe committed
27

Luc Maisonobe's avatar
Luc Maisonobe committed
28
<h2>2. Features</h2>
29
<p>
Luc Maisonobe's avatar
Luc Maisonobe committed
30 31 32
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:</p>
Luc Maisonobe's avatar
Luc Maisonobe committed
33

Luc Maisonobe's avatar
Luc Maisonobe committed
34
<ul>
Luc Maisonobe's avatar
Luc Maisonobe committed
35 36 37
  <li>Time
    <ul>
      <li>high accuracy absolute dates</li>
38
      <li>time scales (TAI, UTC, UT1, GPS, TT, TCG, TDB, TCB, GMST, GST, GLONASS, QZSS ...)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
39
      <li>transparent handling of leap seconds</li>
40
      <li>support for CCSDS time code standards</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
41 42 43 44 45
    </ul>
  </li>
  <li>Geometry
    <ul>
      <li>frames hierarchy supporting fixed and time-dependent (or telemetry-dependent) frames</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
46
      <li>predefined frames (EME2000/J2000, ICRF, GCRF, ITRF93, ITRF97, ITRF2000, ITRF2005, ITRF2008 and
47
          intermediate frames, TOD, MOD, GTOD and TEME frames, Veis, topocentric, tnw and qsw local orbital
48
          frames, Moon, Sun, planets, solar system barycenter, Earth-Moon barycenter, ecliptic)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
49
      <li>user extensible (used operationally in real time with a set of about 60 frames on several spacecraft)</li>
50 51
      <li>transparent handling of IERS Earth Orientation Parameters (for both new CIO-based frames following
          IERS 2010 conventions and old equinox-based frames)</li>
52
      <li>transparent handling of JPL DE 4xx (405, 406 and more recent) and INPOP ephemerides</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
53 54 55
      <li>transforms including kinematic combination effects</li>
      <li>composite transforms reduction and caching for efficiency</li>
      <li>extensible central body shapes models (with predefined spherical and ellipsoidic shapes)</li>
56
      <li>Cartesian and geodesic coordinates, kinematics</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
57 58 59 60
    </ul>
  </li>
  <li>Spacecraft state
    <ul>
61
      <li>Cartesian, elliptical Keplerian, circular and equinoctial parameters</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
62
      <li>Two-Line Elements</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
63 64 65
      <li>transparent conversion between all parameters</li>
      <li>automatic binding with frames</li>
      <li>attitude state and derivative</li>
66
      <li>Jacobians</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
67
      <li>mass management</li>
68 69
      <li>user-defined associated state
          (for example battery status, or higher order derivatives, or anything else)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
70 71
    </ul>
  </li>
72 73 74 75 76 77 78
  <li>Maneuvers
    <ul>
      <li>analytical models for small maneuvers without propagation</li>
      <li>impulse maneuvers for any propagator type</li>
      <li>continuous maneuvers for numerical propagator type</li>
    </ul>
  </li>
Luc Maisonobe's avatar
Luc Maisonobe committed
79 80 81 82 83 84 85 86
  <li>Propagation
    <ul>
      <li>analytical propagation models (Kepler, Eckstein-Heschler, SDP4/SGP4 with 2006 corrections)</li>
      <li>numerical propagators
        <ul>
          <li>customizable force models
            <ul>
              <li>central attraction</li>
87
              <li>gravity models including time-dependent like trends and pulsations (automatic reading of ICGEM (new Eigen models), SHM (old Eigen models),
88
              EGM and GRGS gravity field files formats, even compressed)</li>
89 90
              <li>atmospheric drag (DTM2000, Jacchia-Bowman 2006, Harris-Priester and simple exponential models),
              and Marshall solar Activity Future Estimation</li>
91
              <li>third body attraction (with data for Sun, Moon and all solar systems planets)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
92
              <li>radiation pressure with eclipses</li>
93 94
              <li>solid tides, with or without solid pole tide</li>
              <li>ocean tides, with or without ocean pole tide</li>
95
              <li>general relativity</li>
96
              <li>multiple maneuvers</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
97 98 99 100
            </ul>
          </li>
          <li>state of the art ODE integrators (adaptive stepsize with error control,
              continuous output, switching functions, G-stop, step normalization ...)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
101
          <li>computation of Jacobians with respect to orbital parameters and selected force models parameters</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
102 103 104
          <li>serialization mechanism to store complete results on persistent storage for later use</li>
        </ul>
      </li>
Luc Maisonobe's avatar
Luc Maisonobe committed
105
      <li>semi-analytical propagation model (DSST) with customizable force models</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
106 107 108 109 110 111 112 113 114
      <li>tabulated ephemerides
        <ul>
          <li>file based</li>
          <li>memory based</li>
          <li>integration based</li>
        </ul>
      </li>
      <li>unified interface above analytical/numerical/tabulated propagators for easy
          switch from coarse analysis to fine simulation with one line change</li>
115 116 117 118 119 120 121 122 123 124 125
      <li>all propagators can be used in several different modes
        <ul>
          <li>slave mode: propagator is driven by calling application</li>
          <li>master mode: propagator drives application callback functions</li>
          <li>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</li>
        </ul>
      </li>
126 127 128 129
      <li>handling of discrete events during integration
          (models changes, G-stop, simple notifications ...)</li>
      <li>predefined discrete events
        <ul>
130
          <li>eclipse (both umbra and penumbra)</li>
131
          <li>ascending and descending node crossing</li>
132 133
          <li>anomaly, latitude argument or longitude argument crossings,
              with either true, eccentric or mean angles</li>
134
          <li>apogee and perigee crossing</li>
135
          <li>alignment with some body in the orbital plane (with customizable threshold angle)</li>
136
          <li>raising/setting with respect to a ground location
137
              (with customizable triggering elevation and ground mask)</li>
138
          <li>date</li>
139 140
          <li>latitude, longitude, altitude crossing</li>
          <li>latitude, longitude extremum</li>
141
          <li>elevation extremum</li>
142
          <li>anomaly, latitude argument, or longitude argument crossings, either true, mean or eccentric</li>
143 144
          <li>moving target detection in spacecraft sensor Field Of View (any shape, with special case for circular)</li>
          <li>spacecraft detection in ground based Field Of View (any shape)</li>
145
          <li>sensor Field Of View (any shape) overlapping complex geographic zone</li>
146
           <li>complex geographic zone traversal</li>
147
          <li>impulse maneuvers occurrence</li>
148 149
        </ul>
      </li>
Luc Maisonobe's avatar
Luc Maisonobe committed
150
      <li>possibility of slightly shifting events in time (for example to switch from
Luc Maisonobe's avatar
Luc Maisonobe committed
151 152
          solar pointing mode to something else a few minutes before eclipse entry and
          reverting to solar pointing mode a few minutes after eclipse exit)</li>
153 154 155 156
      <li>possibility of filtering events based on their direction (for example to detect
          only eclipse entries and not eclipse exits)</li>
      <li>possibility of filtering events based on an external enabling function (for
          example to detect events only during selected orbits and not others)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
157 158 159
    </ul>
  </li>
  <li>Attitude
Luc Maisonobe's avatar
Luc Maisonobe committed
160
    <ul>
Luc Maisonobe's avatar
Luc Maisonobe committed
161 162 163 164 165 166 167
      <li>extensible attitude evolution models</li>
      <li>predefined laws
        <ul>
          <li>central body related attitude
              (nadir pointing, center pointing, target pointing,
               yaw compensation, yaw-steering)</li>
          <li>orbit referenced attitudes (LOF aligned, offset on all axes)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
168
          <li>space referenced attitudes (inertial, celestial body-pointed, spin-stabilized)</li>
169
          <li>tabulated attitudes, either respective to inertial frame or respective to Local Orbital Frames</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
170 171
        </ul>
      </li>
Luc Maisonobe's avatar
Luc Maisonobe committed
172 173
    </ul>
  </li>
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
  <li>Orbit determination
    <ul>
      <li>batch least squares fitting of orbit</li>
      <li>several predefined measurements
        <ul>
          <li>range</li>
          <li>range rate</li>
          <li>azimuth</li>
          <li>elevation</li>
          <li>position-velocity</li>
        </ul>
      </li>
      <li>possibility to add custom measurements</li>
      <li>several predefined modifiers
        <ul>
          <li>tropospheric effects</li>
          <li>antenna mounts</li>
          <li>biases</li>
          <li>delays</li>
        </ul>
      <li>possibility to add custom measurement modifiers (even for predefined events)</li>
    </ul>
  </li>
197 198 199
  <li>Orbit file handling
    <ul>
      <li>loading of SP3-a and SP3-c orbit files</li>
200
      <li>loading of CCSDS Orbit Data Messages (both OPM, OEM, and OMM types are supported)</li>
201 202
    </ul>
  </li>
203
  <li>Earth models
204 205
    <ul>
      <li>tropospheric delay (modified Saastamoinen)</li>
206
      <li>tropospheric refraction correction angle (Recommendation ITU-R P.834-7 and Saemundssen's formula quoted by Meeus)</li>
207
      <li>geomagnetic field (WMM, IGRF)</li>
208 209 210
      <li>geoid model from any gravity field</li>
      <li>tessellation of zones of interest as tiles</li>
      <li>sampling of zones of interest as grids of points</li>
211 212
    </ul>
  </li>
213 214 215 216 217 218 219 220 221 222
  <li>Customizable data loading
    <ul>
      <li>loading from local disk</li>
      <li>loading from classpath</li>
      <li>loading from network (even through internet proxies)</li>
      <li>support for zip archives</li>
      <li>support from gzip compressed files</li>
      <li>plugin mechanism to delegate loading to user defined database or data access library</li>
    </ul>
  </li>
Luc Maisonobe's avatar
Luc Maisonobe committed
223
</ul>
224

Luc Maisonobe's avatar
Luc Maisonobe committed
225
<h2>3. Dependency</h2>
Fabien Maussion's avatar
Fabien Maussion committed
226
<p>
227
OREKIT has only one dependency: the <a href="https://hipparchus/">Hipparchus</a>
Luc Maisonobe's avatar
Luc Maisonobe committed
228 229
open-source library. This library provides mathematical tools for many purposes: geometry,
polynomial equations, differential equations, and more... It is distributed under the
Luc Maisonobe's avatar
Luc Maisonobe committed
230
business-friendly Apache Software License version 2.0.
Fabien Maussion's avatar
Fabien Maussion committed
231
</p>
232
<p>
233
OREKIT is based on several Hipparchus packages:
234
</p>
Luc Maisonobe's avatar
Luc Maisonobe committed
235
<ul>
Luc Maisonobe's avatar
Luc Maisonobe committed
236
 <li>geometry, which provides very useful objects as vectors
Luc Maisonobe's avatar
Luc Maisonobe committed
237
   and rotations (internally represented by quaternions)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
238
 <li>ode, which provides numerical solutions to solve 
239 240 241 242 243
   Ordinary Differential Equations (ODE)</li>
 <li>optim, which provides multi-dimensional optimization</li>
 <li>solvers, which provides root-finding algorithms</li>
 <li>differentiation, which provides analytical computation of partial derivatives
 to arbitrary order and arbitrary number of free parameters</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
244
</ul>
245
<p>
246
The use of Hipparchus is hidden in OREKIT as much as possible so users don't 
Luc Maisonobe's avatar
Luc Maisonobe committed
247
need to fully master this library. If they wish, they can limit themselves to understanding
Luc Maisonobe's avatar
Luc Maisonobe committed
248 249
the simple classes Vector3D and Rotation from the geometry package, and the interface
FirstOrderIntegrator from the ode package. 
250 251
</p>

Luc Maisonobe's avatar
Luc Maisonobe committed
252
@author Luc Maisonobe
253
@author Thierry Ceolin
Luc Maisonobe's avatar
Luc Maisonobe committed
254
@author Fabien Maussion
255
@author Pascal Parraud
Luc Maisonobe's avatar
Luc Maisonobe committed
256 257
@author V&eacute;ronique Pommier-Maurussane
@author Guylaine Prat
Fabien Maussion's avatar
Fabien Maussion committed
258 259

</body>
260
</html>