forked from CS-SI/Orekit
-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathoverview.html
More file actions
495 lines (478 loc) · 26.6 KB
/
overview.html
File metadata and controls
495 lines (478 loc) · 26.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<title>OREKIT</title>
</head>
<body>
<h1>1. Purpose</h1>
<p>OREKIT library is a low-level library for space mechanics projects. It is
implemented in the JAVA language.</p>
<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>
<h1>2. Features</h1>
<p>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>
<ul>
<li>Time
<ul>
<li>high accuracy absolute dates</li>
<li>time scales (TAI, UTC, UT1, GPS, TT, TCG, TDB, TCB, GMST, GST, GLONASS, QZSS, BDT,
NavIC...)</li>
<li>transparent handling of leap seconds</li>
<li>support for CCSDS time code standards</li>
</ul>
</li>
<li>Geometry
<ul>
<li>frames hierarchy supporting fixed and time-dependent (or telemetry-dependent) frames</li>
<li>predefined frames (EME2000/J2000, ICRF, GCRF, all ITRF from 1988 to 2020 and
intermediate frames, TOD, MOD, GTOD and TEME frames, Veis, topocentric, tnw and qsw
local orbital frames, relative encounter frames, Moon, Sun, planets, solar system
barycenter, Earth-Moon barycenter, ecliptic)</li>
<li>user extensible (used operationally in real time with a set of about 60 frames on
several spacecraft)</li>
<li>transparent handling of IERS Earth Orientation Parameters (for both new CIO-based
frames following IERS 2010 conventions and old equinox-based frames)</li>
<li>transparent handling of JPL DE 4xx (405, 406 and more recent) and INPOP ephemerides</li>
<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>
<li>cartesian and geodesic coordinates, kinematics</li>
<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>
</ul>
</li>
<li>Spacecraft state
<ul>
<li>cartesian, elliptical Keplerian, circular and equinoctial parameters, with
non-Keplerian derivatives if available</li>
<li>Walker constellations (including in-orbit spares with shifted position)</li>
<li>Two-Line Elements (TLE)</li>
<li>Two-Line Elements generation using Fixed-Point algorithm or Least Squares Fitting</li>
<li>transparent conversion between all parameters</li>
<li>automatic binding with frames</li>
<li>attitude state and derivative</li>
<li>jacobians</li>
<li>mass management</li>
<li>user-defined associated state (for example battery status, or higher order
derivatives, or anything else)</li>
</ul>
</li>
<li>Covariance
<ul>
<li>covariance propagation</li>
<li>covariance extrapolation using a Keplerian model</li>
<li>covariance frame transformation (inertial, Earth fixed, and local orbital frames)</li>
<li>covariance type transformation (Cartesian, Keplerian, circular, and equinoctial)</li>
<li>covariance interpolation based on the blending model</li>
</ul>
</li>
<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>
<li>configurable low thrust maneuver model based on event detectors</li>
<li>used-defined propulsion models intended to be used with maneuver class (constant and
piecewise polynomials already provided by the library)</li>
<li>user-friendly interface for maneuver triggers</li>
</ul>
</li>
<li>Propagation
<ul>
<li>analytical propagation models
<ul>
<li>Kepler</li>
<li>Eckstein-Heschler</li>
<li>Brouwer-Lyddane with Warren Phipps' correction for the critical inclination of
63.4° and the perturbative acceleration due to atmospheric drag</li>
<li>SDP4/SGP4 with 2006 corrections</li>
<li>GNSS: GPS, QZSS, Galileo, GLONASS, Beidou, NavIC and SBAS</li>
<li>Intelsat's 11 elements</li>
</ul>
</li>
<li>numerical propagators
<ul>
<li>central attraction</li>
<li>gravity models including time-dependent like trends and pulsations (automatic
reading of ICGEM (new Eigen models), SHM (old Eigen models), EGM,
SHA (GRGM1200B and GRGM1200L) and GRGS gravity field files formats, even compressed)</li>
<li>atmospheric drag</li>
<li>third body attraction (with data for Sun, Moon and all solar systems planets)</li>
<li>radiation pressure with eclipses (multiple oblate spheroids occulting bodies,
multiple coefficients for box and wing models)</li>
<li>solid tides, with or without solid pole tide</li>
<li>ocean tides, with or without ocean pole tide</li>
<li>general relativity (including Lense-Thirring and De Sitter corrections)</li>
<li>Earth's albedo and infrared</li>
<li>multiple maneuvers</li>
<li>empirical accelerations to account for the unmodeled forces</li>
<li>state of the art ODE integrators (adaptive stepsize with error control, continuous
output, switching functions, G-stop, step normalization...)</li>
<li>propagation in non-inertial frames (e.g. for Lagrange point halo orbits)</li>
</ul>
</li>
<li>semi-analytical propagation model (DSST) with customizable force models
<ul>
<li>central attraction</li>
<li>gravity models</li>
<li>J2-squared effect (Zeis model)</li>
<li>atmospheric drag</li>
<li>third body attraction</li>
<li>radiation pressure with eclipse</li>
</ul>
</li>
<li>computation of Jacobians with respect to orbital parameters and selected force models
parameters</li>
<li>trajectories around Lagragian points using CR3BP model</li>
<li>tabulated ephemerides
<ul>
<li>file based</li>
<li>memory based</li>
<li>integration based</li>
</ul>
</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 high order uncertainties and derivatives computation or very fast Monte-Carlo
analyzes</li>
<li>unified interface above analytical/numerical/tabulated propagators for easy switch
from coarse analysis to fine simulation with one line change</li>
<li>all propagators can manage the time loop by themselves and handle callback functions
(called step handlers) from the calling application at each time step
<ul>
<li>step handlers can be called at discrete time at regular time steps, which are
independent of propagator time steps</li>
<li>step handlers can be called with interpolators valid throughout one propagator
time step, which can have varying sizes </li>
<li>step handlers can be switched off completely, when only final state is desired</li>
<li>special step handlers are provided for a posteriori ephemeris generation: 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 analytical model, even if it really is a numerically propagated one, which
is ideal for search and iterative algorithms</li>
<li>several step handlers can be used simultaneously, so it is possible to have a fine
grained fixed time step to log state in a huge file, and have at the same time
a coarse grained time step to display progress for user at a more human-friendly
rate, this feature can also be used for debugging purpose, by setting up a temporary
step handler alongside the operational ones</li>
</ul>
</li>
<li>handling of discrete events during integration (models changes, G-stop, simple
notifications...)</li>
<li>adaptable max checking interval for discrete events detection</li>
<li>predefined discrete events
<ul>
<li>eclipse (both umbra and penumbra)</li>
<li>ascending and descending node crossing</li>
<li>anomaly, latitude argument or longitude argument crossings, with either true,
eccentric or mean angles</li>
<li>apogee and perigee crossing</li>
<li>alignment with some body in the orbital plane (with customizable threshold angle)</li>
<li>angular separation thresholds crossing between spacecraft and a beacon (typically
the Sun) as seen from an observer (typically a ground station)</li>
<li>raising/setting with respect to a ground location (with customizable triggering
elevation and ground mask, optionally considering refraction)</li>
<li>date and on-the-fly resetting countdown</li>
<li>date interval with parameter-driven boundaries</li>
<li>latitude, longitude, altitude crossing</li>
<li>latitude, longitude extremum</li>
<li>elevation extremum</li>
<li>moving target detection (with optional radius) 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>
<li>sensor Field Of View (any shape) overlapping complex geographic zone</li>
<li>complex geographic zones traversal</li>
<li>inter-satellites direct view (with customizable skimming altitude)</li>
<li>ground at night</li>
<li>impulse maneuvers occurrence</li>
<li>geomagnetic intensity</li>
<li>extremum approach for TCA (Time of Closest Approach) computing</li>
<li>beta angle</li>
<li>relative distance with another object</li>
</ul>
</li>
<li>possibility of slightly shifting 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)</li>
<li>events filtering based on their direction (for example to detect only eclipse entries
and not eclipse exits)</li>
<li>events filtering based on an external enabling function (for example to detect events
only during selected orbits and not others)</li>
<li>events combination with boolean operators</li>
<li>ability to run several propagators in parallel and manage their states simultaneously
throughout propagation</li>
</ul>
</li>
<li>Attitude
<ul>
<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>
<li>space referenced attitudes (inertial, celestial body-pointed, spin-stabilized)</li>
<li>attitude aligned with one target and constrained by another target</li>
<li>tabulated attitudes, either respective to inertial frame or respective to Local
Orbital Frames</li>
<li>specific law for GNSS satellites: GPS (block IIA, block IIF, block IIF),
GLONASS, GALILEO, BEIDOU (GEO, IGSO, MEO)</li>
<li>torque-free for general (non-symmetrical) body</li>
</ul>
</li>
<li>loading and writing of CCSDS Attitude Data Messages (both AEM, APM and ACM types are
supported, in both KVN and XML formats, standalone or in combined NDM)</li>
<li>exporting of attitude ephemeris in CCSDS AEM and ACM file format</li>
</ul>
</li>
<li>Orbit determination
<ul>
<li>batch least squares fitting
<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>sequential batch least squares
<ul>
<li>sequential Gauss-Newton optimizer</li>
<li>decomposition algorithms choice (QR, LU, SVD, Cholesky)</li>
<li>possibility to use an initial covariance matrix</li>
</ul>
</li>
<li>Kalman filtering
<ul>
<li>customizable process noise matrices providers</li>
<li>time dependent process noise provider</li>
<li>implementation of the Extended Kalman Filter</li>
<li>implementation of the Extended Semi-analytical Kalman Filter (ESKF)</li>
<li>implementation of the Unscented Kalman Filter</li>
<li>implementation of the Unscented Semi-analytical Kalman Filter</li>
<li>RTS (Rauch-Tung-Striebel) smoothing step over results</li>
</ul>
</li>
<li>parameters estimation
<ul>
<li>orbital parameters estimation (or only a subset if desired)</li>
<li>force model parameters estimation (drag coefficients, radiation pressure
coefficients, central attraction, maneuver thrust, flow rate or start/stop epoch)</li>
<li>measurements parameters estimation (biases, satellite clock offset, station clock
offset, station position, pole motion and rate, prime meridian correction and rate,
total zenith delay in tropospheric correction)</li>
</ul>
</li>
<li>orbit determination can be performed with numerical, DSST, SDP4/SGP4,
Eckstein-Hechler, Brouwer-Lyddane, Keplerian or GNSS propagators</li>
<li>ephemeris-based orbit determination to estimate measurement parameters like station
biases or clock offsets</li>
<li>multi-satellites orbit determination</li>
<li>initial orbit determination methods (Gibbs, Herrick-Gibbs, Gooding, Lambert, Gauss, and Laplace)</li>
<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>
<li>ground stations displacements due to plate tectonics</li>
<li>several predefined measurements
<ul>
<li>range</li>
<li>range rate (one way and two way)</li>
<li>turn-around range</li>
<li>azimuth/elevation</li>
<li>right ascension/declination</li>
<li>position-velocity</li>
<li>position</li>
<li>inter-satellites range (one way and two way)</li>
<li>inter-satellites GNSS one way range rate</li>
<li>inter-satellites GNSS phase</li>
<li>GNSS code</li>
<li>GNSS phase with integer ambiguity resolution and wind-up effect</li>
<li>Time Difference of Arrival (TDOA)</li>
<li>Frequency Difference of Arrival (FDOA)</li>
<li>Bi-static range and range rate</li>
<li>multiplexed</li>
</ul>
</li>
<li>possibility to add custom measurements</li>
<li>loading of ILRS CRD laser ranging measurements file</li>
<li>loading and writing of CCSDS Tracking Data Messages (in both KVN and XML formats,
standalone or in combined NDM)</li>
<li>several predefined modifiers
<ul>
<li>tropospheric effects</li>
<li>ionospheric effects</li>
<li>clock relativistic effects (including J2 correction)</li>
<li>station offsets</li>
<li>biases</li>
<li>delays</li>
<li>Antenna Phase Center</li>
<li>Phase ambiguity</li>
<li>Shapiro relativistic effect</li>
<li>aberration of light in telescope measurements</li>
</ul>
</li>
<li>possibility to add custom measurement modifiers (even for predefined events)</li>
<li>combination of GNSS measurements
<ul>
<li>dual frequency combination of measurements (Geometry-free, Ionosphere-free,
Narrow-lane, Wide-lane and Melbourne-Wübbena)</li>
<li>single frequency combination of measurements (Phase minus code and GRAPHIC)</li>
</ul>
</li>
<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>
</ul>
</li>
<li>GNSS
<ul>
<li>computation of Dilution Of Precision</li>
<li>loading of ANTEX antenna models file</li>
<li>loading and writing of RINEX observation files (version 2, 3, and 4)</li>
<li>loading of RINEX navigation files (version 2, 3, and 4)</li>
<li>support for Hatanaka compact RINEX format</li>
<li>loading of SINEX file (can load station positions, velocities, eccentricities,
Post-Seismic Deformation models, EOPs, and Differential Code Biases)</li>
<li>loading of RINEX clock files (version 2 and version 3)</li>
<li>parsing of IGS SSR messages for all constellations (version 1)</li>
<li>parsing of RTCM messages (both ephemeris and correction messages)</li>
<li>parsing of GPS RF link binary message</li>
<li>Hatch filters for GNSS measurements smoothing</li>
<li>implementation of Ntrip protocol</li>
<li>decoding of GPS navigation messages</li>
</ul>
</li>
<li>Orbit file handling
<ul>
<li>loading and writing of SP3 orbit files (from versions a to d, including extension to a few inertial frames)</li>
<li>splicing and interpolation of SP3 files</li>
<li>loading and writing of CCSDS Orbit Data Messages (both OPM, OEM, OMM, OCM types are
supported, in both KVN and XML formats, standalone or in combined NDM)</li>
<li>loading of SEM and YUMA files for GPS constellation</li>
<li>exporting of ephemeris in CCSDS OEM and OCM file formats</li>
<li>loading of ILRS CPF orbit files</li>
<li>exporting of ephemeris in STK format</li>
</ul>
</li>
<li>Earth models
<ul>
<li>atmospheric models (DTM2000, Jacchia-Bowman 2006, Jacchia-Bowman 2008, NRL MSISE 2000, Harris-Priester and
simple exponential models), and Marshall Solar Activity Future Estimation, optionally
with lift component</li>
<li>support for CSSI space weather data</li>
<li>support for SOLFSMY and DTC data for JB2008 atmospheric model</li>
<li>tropospheric delay for radio propagation (canonical Saastamoinen, modified Saastamoinen,
Askne-Nordius, modified Hopfield, ITU-R P.834, Vienna 1, Vienna 3, estimated, fixed)</li>
<li>tropospheric delay for laser ranging (Marini-Murray, Mendes-Pavlis)</li>
<li>tropospheric refraction correction angle (ITU-R P.834 and Saemundssen's formula quoted by Meeus)</li>
<li>tropospheric mapping functions (Chao, revised Chao, Global Mapping Function, ITU-R P.834,
Vienna 1, Vienna 3, Niell, Mendes-Pavlis)</li>
<li>Klobuchar ionospheric model (including parsing α and β coefficients from University of
Bern Astronomical Institute files)</li>
<li>Global Ionospheric Map (GIM) model</li>
<li>NeQuick ionospheric models (both Galileo-specific and original ITU-R P.531 versions)</li>
<li>VTEC estimated ionospheric model with Single Layer Model (SLM) ionospheric mapping
function</li>
<li>Pressure, Temperature and Humidity models (GPT, GPT2, GPT2w, GPT3, ITU-R P.834)</li>
<li>Water Vapor pressure evolution (CIPM-2007, NBS-SRC, Wang 1988)</li>
<li>geomagnetic field (WMM, IGRF)</li>
<li>geoid model from any gravity field</li>
<li>displacement of ground points (tides, ocean loading, Post-Seismic Deformation, tectonics plates)</li>
<li>tessellation of zones of interest as tiles</li>
<li>sampling of zones of interest as grids of points</li>
<li>construction of trajectories using loxodromes (commonly, a rhumb line)</li>
</ul>
</li>
<li>Indirect optimal control
<ul>
<li>adjoint equations as defined by Pontryagin's Maximum Principle with Cartesian coordinates for a range of forces: (gravitational, inertial) including J2</li>
<li>so-called energy cost functions (proportional to the integral of the control vector's squared norm), with Hamitonian evaluation</li>
<li>single shooting based on Newton algorithm for the case of fixed time, fixed Cartesian bounds</li>
</ul>
</li>
<li>Collisions
<ul>
<li>loading and writing of CCSDS Conjunction Data Messages (CDM in both KVN and XML
formats)</li>
<li>2D probability of collision computing methods assuming short term encounter and
spherical bodies:
<ul>
<li>Chan 1997</li>
<li>Alfriend 1999</li>
<li>Alfriend 1999 (maximum version)</li>
<li>Alfano 2005</li>
<li>Patera 2005 (custom Orekit implementation) (recommended)</li>
<li>Laas 2015 (recommended)</li>
</ul></li>
</ul>
</li>
<li>Customizable data loading
<ul>
<li>loading by exploring folders hierarchy on local disk</li>
<li>loading from explicit lists of files on local disk</li>
<li>loading from classpath</li>
<li>loading from network (even through internet proxies)</li>
<li>support for zip archives</li>
<li>automatic decompression of gzip compressed (.gz) files upon loading</li>
<li>automatic decompression of Unix compressed (.Z) files upon loading</li>
<li>automatic decompression of Hatanaka compressed files upon loading</li>
<li>plugin mechanism to add filtering like custom decompression algorithms, deciphering or
monitoring</li>
<li>plugin mechanism to delegate loading to user defined database or data access library</li>
</ul>
</li>
</ul>
<h1>3. Dependency</h1>
<p>OREKIT has only one dependency: the <a href="https://hipparchus.org/">Hipparchus</a>
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.</p>
<p>OREKIT is based on several Hipparchus packages:</p>
<ul>
<li>geometry, which provides very useful objects as vectors and rotations (internally
represented by quaternions)</li>
<li>ode, which provides numerical solutions to solve 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>
</ul>
<p>The use of Hipparchus 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.</p>
@author Luc Maisonobe
@author Thierry Ceolin
@author Fabien Maussion
@author Pascal Parraud
@author Véronique Pommier-Maurussane
@author Guylaine Prat
</body>
</html>