overview.html 16.6 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>
4
<h1>1. Purpose</h1>
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

28
<h1>2. Features</h1>
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, BDT, IRNSS ...)</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>
46
      <li>predefined frames (EME2000/J2000, ICRF, GCRF, all ITRF from 1988 to 2014 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
      <li>computation of Dilution Of Precision (DOP) with respect to GNSS constellations</li>
      <li>projection of sensor Field Of View footprint on ground for any FoV shape</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
59
60
61
62
    </ul>
  </li>
  <li>Spacecraft state
    <ul>
63
64
      <li>Cartesian, elliptical Keplerian, circular and equinoctial parameters, with non-Keplerian
          derivatives if available</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
65
      <li>Two-Line Elements</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
66
67
68
      <li>transparent conversion between all parameters</li>
      <li>automatic binding with frames</li>
      <li>attitude state and derivative</li>
69
      <li>Jacobians</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
70
      <li>mass management</li>
71
72
      <li>user-defined associated state
          (for example battery status, or higher order derivatives, or anything else)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
73
74
    </ul>
  </li>
75
76
77
78
79
80
81
  <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
82
83
84
85
86
87
88
89
  <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>
90
              <li>gravity models including time-dependent like trends and pulsations (automatic reading of ICGEM (new Eigen models), SHM (old Eigen models),
91
              EGM and GRGS gravity field files formats, even compressed)</li>
92
              <li>atmospheric drag</li>
93
              <li>third body attraction (with data for Sun, Moon and all solar systems planets)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
94
              <li>radiation pressure with eclipses</li>
95
96
              <li>solid tides, with or without solid pole tide</li>
              <li>ocean tides, with or without ocean pole tide</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
97
              <li>general relativity</li>
98
              <li>multiple maneuvers</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
99
100
101
102
            </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
103
          <li>computation of Jacobians with respect to orbital parameters and selected force models parameters</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
104
105
106
          <li>serialization mechanism to store complete results on persistent storage for later use</li>
        </ul>
      </li>
Luc Maisonobe's avatar
Luc Maisonobe committed
107
      <li>semi-analytical propagation model (DSST) with customizable force models</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
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>
115
116
117
118
119
      <li>specialized GPS propagation, using SEM or YUMA files</li>
      <li>Taylor-algebra (or any other real field) version of most of the above propagators,
            with all force models, events detection, orbits types, coordinates types and frames
           allowing allowing high order uncertainties and derivatives computation or very fast
           Monte-Carlo analyzes
120
      </li>
Luc Maisonobe's avatar
Luc Maisonobe committed
121
122
      <li>unified interface above analytical/numerical/tabulated propagators for easy
          switch from coarse analysis to fine simulation with one line change</li>
123
124
125
126
127
128
129
130
131
132
133
      <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>
134
135
136
137
      <li>handling of discrete events during integration
          (models changes, G-stop, simple notifications ...)</li>
      <li>predefined discrete events
        <ul>
138
          <li>eclipse (both umbra and penumbra)</li>
139
          <li>ascending and descending node crossing</li>
140
141
          <li>anomaly, latitude argument or longitude argument crossings,
              with either true, eccentric or mean angles</li>
142
          <li>apogee and perigee crossing</li>
143
          <li>alignment with some body in the orbital plane (with customizable threshold angle)</li>
144
145
          <li>angular separation thresholds crossing between spacecraft and a beacon (typically the Sun)
              as seen from an observer (typically a ground station)</li>
146
          <li>raising/setting with respect to a ground location
147
148
              (with customizable triggering elevation and ground mask, optionally considering refraction)</li>
          <li>date and on-the-fly resetting countdown</li>
149
150
          <li>latitude, longitude, altitude crossing</li>
          <li>latitude, longitude extremum</li>
151
          <li>elevation extremum</li>
152
          <li>anomaly, latitude argument, or longitude argument crossings, either true, mean or eccentric</li>
153
          <li>moving target detection (with optional radius) in spacecraft sensor Field Of View (any shape, with special case for circular)</li>
154
          <li>spacecraft detection in ground based Field Of View (any shape)</li>
155
          <li>sensor Field Of View (any shape) overlapping complex geographic zone</li>
156
157
          <li>complex geographic zone traversal</li>
          <li>inter-satellites direct view</li>
158
          <li>ground at night</li>
159
          <li>impulse maneuvers occurrence</li>
160
161
        </ul>
      </li>
Luc Maisonobe's avatar
Luc Maisonobe committed
162
      <li>possibility of slightly shifting events in time (for example to switch from
Luc Maisonobe's avatar
Luc Maisonobe committed
163
164
          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>
165
      <li>events filtering  based on their direction (for example to detect
166
          only eclipse entries and not eclipse exits)</li>
167
      <li>events filtering  based on an external enabling function (for
168
          example to detect events only during selected orbits and not others)</li>
169
170
      <li>events combination with boolean operators</li>
      <li>ability to run several propagators in parallel and manage their states
171
          simultaneously throughout propagation</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
172
173
174
    </ul>
  </li>
  <li>Attitude
Luc Maisonobe's avatar
Luc Maisonobe committed
175
    <ul>
Luc Maisonobe's avatar
Luc Maisonobe committed
176
177
178
179
180
181
182
      <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
183
          <li>space referenced attitudes (inertial, celestial body-pointed, spin-stabilized)</li>
184
          <li>tabulated attitudes, either respective to inertial frame or respective to Local Orbital Frames</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
185
186
          <li>specific law for GNSS satellites: GPS (block IIA, block IIF, block IIF),
              GLONASS, GALILEO, BEIDOU (GEO, IGSO, MEO)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
187
188
        </ul>
      </li>
Luc Maisonobe's avatar
Luc Maisonobe committed
189
190
    </ul>
  </li>
191
192
  <li>Orbit determination
    <ul>
193
      <li>batch least squares fitting
194
195
196
197
198
199
200
201
202
        <ul>
          <li>optimizers choice (Levenberg-Marquardt or Gauss-Newton)</li>
          <li>decomposition algorithms choice (QR, LU, SVD, Cholesky)</li>
          <li>choice between forming normal equations or not</li>
        </ul>
      </li>
      <li>Kalman filtering
        <ul>
          <li>customizable process noise matrices providers</li>
203
          <li>time-dependent process nous provider</li>
204
205
206
        </ul>
      </li>
      <li>parameters estimation
207
        <ul>
208
209
          <li>orbital parameters estimation (or only a subset if desired)</li>
          <li>force model parameters estimation (drag coefficients, radiation pressure coefficients,
210
              central attraction, maneuver thrust or flow rate)</li>
211
          <li>measurements parameters estimation (biases, satellite clock offset, station clock offset,
212
213
              station position, pole motion and rate, prime meridian correction and rate, total
              zenith delay in tropospheric correction)</li>
214
215
        </ul>
      </li>
216
      <li>multi-satellites orbit determination</li>
217
218
      <li>ground stations displacements due to solid tides</li>
      <li>ground stations displacements due to ocean loading (based on Onsala Space Observatory files in BLQ format)</li>
219
220
221
      <li>several predefined measurements
        <ul>
          <li>range</li>
222
          <li>range rate (one way and two way)</li>
223
224
          <li>turn-around range</li>
          <li>azimuth/elevation</li>
225
          <li>right ascension/declination</li>
226
          <li>position-velocity</li>
227
          <li>position</li>
228
          <li>inter-satellites range (one way and two way)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
229
          <li>GNSS code</li>
230
          <li>GNSS phase with integer ambiguity resolution (not complete yet and experimental)</li>
231
232
233
234
235
236
        </ul>
      </li>
      <li>possibility to add custom measurements</li>
      <li>several predefined modifiers
        <ul>
          <li>tropospheric effects</li>
237
238
          <li>ionospheric effects</li>
          <li>station offsets</li>
239
240
          <li>biases</li>
          <li>delays</li>
241
          <li>Antenna Phase Center</li>
242
          <li>Shapiro relativistic effect</li>
243
        </ul>
244
      </li>
245
      <li>possibility to add custom measurement modifiers (even for predefined events)</li>
246
      <li>possibility to parse CCSDS Tracking Data Message files</li>
247
248
249
250
251
252
253
254
255
256
      <li>measurements generation
        <ul>
          <li>with measurements feasibility triggered by regular event detectors
              (ground visibility, ground at night, sunlit satellite, inter satellites
               direct view, boolean combination...)</li>
          <li>with measurement scheduling as fixed step streams (optionally aligned with round UTC time)</li>
          <li>with measurement scheduling as high rate bursts rest periods (optionally aligned with round UTC time)</li>
          <li>possibility to customize measurement scheduling</li>
        </ul>
      </li>
257
258
    </ul>
  </li>
259
260
261
262
  <li>GNSS
    <ul>
      <li>computation of Dilution Of Precision</li>
      <li>loading of ANTEX antenna models file</li>
263
      <li>loading of RINEX observation files (version 2 and version 3)</li>
264
265
    </ul>
  </li>
266
267
  <li>Orbit file handling
    <ul>
268
      <li>loading of SP3 orbit files (from versions a to d)</li>
269
      <li>loading of CCSDS Orbit Data Messages (both OPM, OEM, and OMM types are supported)</li>
270
      <li>loading of SEM and YUMA files for GPS constellation</li>
271
      <li>exporting of ephemeris in CCSDS OEM file format</li>
272
273
    </ul>
  </li>
274
  <li>Earth models
275
    <ul>
276
277
      <li>atmospheric models (DTM2000, Jacchia-Bowman 2008, NRL MSISE 2000, Harris-Priester and
          simple exponential models), and Marshall solar Activity Future Estimation, optionally with lift component</li>
278
      <li>tropospheric delay (modified Saastamoinen, Mendes-Pavlis, Vienna 1, Vienna 3, estimated, fixed)</li>
279
      <li>tropospheric refraction correction angle (Recommendation ITU-R P.834-7 and Saemundssen's formula quoted by Meeus)</li>
280
      <li>tropospheric model for laser ranging (Marini-Murray)</li>
281
      <li>Klobuchar ionospheric model (including parsing α and β coefficients from University of Bern Astronomical Institute files)</li>
282
      <li>Global Pression and Temperature models (GPT and GPT2)</li>
283
      <li>geomagnetic field (WMM, IGRF)</li>
284
      <li>geoid model from any gravity field</li>
285
      <li>displacement of ground points due to tides</li>
286
287
      <li>tessellation of zones of interest as tiles</li>
      <li>sampling of zones of interest as grids of points</li>
288
289
    </ul>
  </li>
290
291
  <li>Customizable data loading
    <ul>
292
293
      <li>loading by exploring folders hierarchy on local disk</li>
      <li>loading from explicit lists of files on local disk</li>
294
295
296
      <li>loading from classpath</li>
      <li>loading from network (even through internet proxies)</li>
      <li>support for zip archives</li>
297
298
      <li>automatic decompression of gzip compressed (.gz) files upon loading</li>
      <li>automatic decompression of Unix compressed (.Z) files upon loading</li>
299
      <li>automatic decompression of Hatanaka compressed files upon loading</li>
300
      <li>plugin mechanism to add filtering like custom decompression algorithms, deciphering or monitoring</li>
301
302
303
      <li>plugin mechanism to delegate loading to user defined database or data access library</li>
    </ul>
  </li>
Luc Maisonobe's avatar
Luc Maisonobe committed
304
</ul>
305

306
<h1>3. Dependency</h1>
Fabien Maussion's avatar
Fabien Maussion committed
307
<p>
308
OREKIT has only one dependency: the <a href="https://hipparchus.org/">Hipparchus</a>
Luc Maisonobe's avatar
Luc Maisonobe committed
309
310
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
311
business-friendly Apache Software License version 2.0.
Fabien Maussion's avatar
Fabien Maussion committed
312
</p>
313
<p>
314
OREKIT is based on several Hipparchus packages:
315
</p>
Luc Maisonobe's avatar
Luc Maisonobe committed
316
<ul>
Luc Maisonobe's avatar
Luc Maisonobe committed
317
 <li>geometry, which provides very useful objects as vectors
Luc Maisonobe's avatar
Luc Maisonobe committed
318
   and rotations (internally represented by quaternions)</li>
Luc Maisonobe's avatar
Luc Maisonobe committed
319
 <li>ode, which provides numerical solutions to solve 
320
321
322
323
324
   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
325
</ul>
326
<p>
327
The use of Hipparchus is hidden in OREKIT as much as possible so users don't 
Luc Maisonobe's avatar
Luc Maisonobe committed
328
need to fully master this library. If they wish, they can limit themselves to understanding
Luc Maisonobe's avatar
Luc Maisonobe committed
329
330
the simple classes Vector3D and Rotation from the geometry package, and the interface
FirstOrderIntegrator from the ode package. 
331
332
</p>

Luc Maisonobe's avatar
Luc Maisonobe committed
333
@author Luc Maisonobe
334
@author Thierry Ceolin
Luc Maisonobe's avatar
Luc Maisonobe committed
335
@author Fabien Maussion
336
@author Pascal Parraud
Luc Maisonobe's avatar
Luc Maisonobe committed
337
338
@author V&eacute;ronique Pommier-Maurussane
@author Guylaine Prat
Fabien Maussion's avatar
Fabien Maussion committed
339
340

</body>
341
</html>