Newer
Older
## Input file for OrbitDetermination
## The input file syntax is a set of key=value lines.
## Blank lines and lines starting with '#' (after whitespace trimming) are
## silently ignored.
## The equal sign may be surrounded by space characters.
## Keys must correspond to the ParameterKey enumerate constants, given that
## matching is not case sensitive and that '_' characters may appear as '.'
## characters in the file.
## This file must contain one orbit defined as keplerian, equinoctial, circular
## or cartesian.
## Some parameters are optional, default values are shown below between [].
## All dates are treated in UTC timescale.
## The inertial frame for orbit definition and propagation is EME2000.
## Physical data are read from the src/tutorial/resources/tutorial-orekit-data
## directory.
### Orbit Determination log options:
## Setting od.log.extended to true will yield a log format that contains estimated Cartesian parameters for each evaluation, changes in parameters etc.
od.log.extended = true
## Setting od.log.covariances to true will give a log that conatins covariance and correlation information for a variety of parameters, such as drag and biases
od.log.covariances = true
### Orbit definition
## date of the orbital parameters (UTC)
## orbit.keplerian.a = 0.0
## orbit.keplerian.e = 0.0
## orbit.keplerian.i = 0.0
## orbit.keplerian.raan = 0.0
## orbit.keplerian.pa = 0.0
## orbit.keplerian.anomaly = 0.0
## orbit.equinoctial.a = 0.0
## orbit.equinoctial.ex = 0.0
## orbit.equinoctial.ey = 0.0
## orbit.equinoctial.hx = 0.0
## orbit.equinoctial.hy = 0.0
## orbit.equinoctial.lambda = 0.0
## orbit.circular.a = 0.0
## orbit.circular.ex = 0.0
## orbit.circular.ey = 0.0
## orbit.circular.i = 0.0
## orbit.circular.raan = 0.0
## orbit.circular.alpha = 0.0
### Angle type for anomaly, alpha or lambda (ECCENTRIC/MEAN/TRUE) [MEAN]
## orbit.angle.type = MEAN
### Cartesian elements
## Position along X in inertial frame (m)
##orbit_tle_line_1 = 1 42778U 17036P 19162.69113096 .00000749 00000-0 35781-4 0 9997
##orbit_tle_line_2 = 2 42778 97.3549 220.5119 0010756 245.3704 114.6412 15.21997549109170
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
# IERS conventions [2010]
iers.conventions = 2010
# Inertial frame [EME2000]
inertial.frame = EME2000
# Propagator min step (s), max step (s) and position error (m) [0.001, 300, 10.0]
propagator.min.step = 0.001
propagator.max.step = 300
propagator.position.error = 10.0
# body (default is a WGS-84 ellipsoid with IERS-2010 conventions and simple EOP frame)
body.frame = CIO/2010-based ITRF simple EOP
body.equatorial.radius = 6378137.0
body.inverse.flattening = 298.257223563
### Force models
## Central body gravity potential degree
central.body.degree = 12
## Central body gravity potential order
central.body.order = 12
## 3rd body Sun (true/false) [false]
third.body.sun = true
## 3rd body Moon (true/false) [false]
third.body.moon = true
## ocean tides (negative degree and order by default to disable ocean tides)
ocean.tides.degree = -1
ocean.tides.order = -1
## solid tides (true/false) [false]
solid.tides.moon = false
## Atmospheric drag (true/false) [false]
drag = true
## Drag coefficient
## Estimation flag for drag coefficient (true/false) [false]
## Maximum and minimum values of the drag coefficient
drag.cd.min = 0
solar.radiation.pressure = false
## SRP coefficient
solar.radiation.pressure.cr = 2
## Estimation flag for SRP coefficient (true/false) [false]
solar.radiation.pressure.cr.estimated = false
## SRP area (m^2)
solar.radiation.pressure.area = 13.12
# Post-Newtonian correction force due to general relativity (true/false) [false]
general.relativity = false
# extra accelerations (leaks, thermal radiation, ...)
#polynomial.acceleration.name [0] = leak-X
#polynomial.acceleration.direction.X [0] = 1.0
#polynomial.acceleration.direction.Y [0] = 0.0
#polynomial.acceleration.direction.Z [0] = 0.0
#polynomial.acceleration.coefficients [0] = 0.0, 0.0
#polynomial.acceleration.estimated [0] = true
#polynomial.acceleration.name [1] = leak-Y
#polynomial.acceleration.direction.X [1] = 0.0
#polynomial.acceleration.direction.Y [1] = 1.0
#polynomial.acceleration.direction.Z [1] = 0.0
#polynomial.acceleration.coefficients [1] = 0.0, 0.0
#polynomial.acceleration.estimated [1] = true
#polynomial.acceleration.name [2] = leak-Z
#polynomial.acceleration.direction.X [2] = 0.0
#polynomial.acceleration.direction.Y [2] = 0.0
#polynomial.acceleration.direction.Z [2] = 1.0
#polynomial.acceleration.coefficients [2] = 0.0, 0.0
#polynomial.acceleration.estimated [2] = true
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
## On-board range bias (m) [0.0]
onboard.range.bias = 5969.0
onboard.range.bias.min = -50000.0
onboard.range.bias.max = +50000.0
### Estimation flag for on-board range (true/false) [false]
onboard.range.bias.estimated = false
## On-board antenna phase center in spacecraft frame (m) [0.0, 0.0, 0.0]
on.board.antenna.phase.center.x = 0.0
on.board.antenna.phase.center.y = 0.0
on.board.antenna.phase.center.z = 0.0
## On-board clock offset (s) [0.0]
on.board.clock.offset = 0.0
on.board.clock.offset.min = -0.01
on.board.clock.offset.max = +0.01
on.board.clock.offset.estimated = false
## correction of ground stations displacements (true/false) [false, false, false]
## if remove.permanent.deformation if true, the station coordinates are
## considered *mean tide* and already include the permanent deformation, hence
## it should be removed from the displacement to avoid considering it twice;
## if false, the station coordinates are considered *conventional tide free*
## so the permanent deformation must be included in the displacement
solid.tides.displacement.correction = false
solid.tides.displacement.remove.permanent.deformation = false
ocean.loading.correction = false
## Ground stations (angles in degrees, altitude and range bias in meters)
ground.station.name [0] = 39-CGBSAT-VHF
ground.station.latitude [0] = 52.834
ground.station.longitude [0] = 6.379
ground.station.altitude [0] = 10
ground.station.clock.offset [0] = 0.0
ground.station.clock.offset.min [0] = -0.001
ground.station.clock.offset.max [0] = +0.001
ground.station.clock.offset.estimated [0] = false
ground.station.position.estimated [0] = false
ground.station.range.sigma [0] = 20.0
ground.station.range.bias [0] = 11473.623
ground.station.range.bias.min [0] = -50000.0
ground.station.range.bias.max [0] = +50000.0
ground.station.range.bias.estimated [0] = true
ground.station.range.rate.sigma [0] = 1
ground.station.range.rate.bias [0] = 0.0
ground.station.range.rate.bias.min [0] = -0.0
ground.station.range.rate.bias.max [0] = +500.0
ground.station.range.rate.bias.estimated [0] = true
ground.station.azimuth.sigma [0] = 0.02
ground.station.azimuth.bias [0] = 0.01
ground.station.azimuth.bias.min [0] = -0.50
ground.station.azimuth.bias.max [0] = +0.50
ground.station.elevation.sigma [0] = 0.02
ground.station.elevation.bias [0] = 0.01
ground.station.elevation.bias.min [0] = -0.50
ground.station.elevation.bias.max [0] = +0.50
ground.station.az.el.biases.estimated [0] = true
ground.station.elevation.refraction.correction [0] = true
ground.station.tropospheric.model.estimated [0] = false
ground.station.tropospheric.zenith.delay [0] = 2.0
ground.station.tropospheric.delay.estimated [0] = false
ground.station.global.mapping.function [0] = false
ground.station.niell.mapping.function [0] = false
ground.station.range.tropospheric.correction [0] = true
ground.station.range.rate.tropospheric.correction [0] = true
ground.station.name [1] = Kir-virt
ground.station.latitude [1] = 67.840507
ground.station.longitude [1] = 20.409061
ground.station.altitude [1] = 401.0
ground.station.clock.offset [1] = 0.0
ground.station.clock.offset.min [1] = -0.001
ground.station.clock.offset.max [1] = +0.001
ground.station.clock.offset.estimated [1] = false
ground.station.position.estimated [1] = false
ground.station.range.sigma [1] = 20.0
ground.station.range.bias [1] = 11473.623
ground.station.range.bias.min [1] = -50000.0
ground.station.range.bias.max [1] = +50000.0
ground.station.range.bias.estimated [1] = true
ground.station.range.rate.sigma [1] = 1
ground.station.range.rate.bias [1] = 0
ground.station.range.rate.bias.min [1] = -0.0
ground.station.range.rate.bias.max [1] = +500.0
ground.station.range.rate.bias.estimated [1] = true
ground.station.azimuth.sigma [1] = 0.02
ground.station.azimuth.bias [1] = 0.01
ground.station.azimuth.bias.min [1] = -0.50
ground.station.azimuth.bias.max [1] = +0.50
ground.station.elevation.sigma [1] = 0.02
ground.station.elevation.bias [1] = 0.01
ground.station.elevation.bias.min [1] = -0.50
ground.station.elevation.bias.max [1] = +0.50
ground.station.az.el.biases.estimated [1] = true
ground.station.elevation.refraction.correction [1] = true
ground.station.tropospheric.model.estimated [1] = false
ground.station.tropospheric.zenith.delay [1] = 2.0
ground.station.tropospheric.delay.estimated [1] = false
ground.station.global.mapping.function [1] = false
ground.station.niell.mapping.function [1] = false
ground.station.range.tropospheric.correction [1] = true
ground.station.range.rate.tropospheric.correction [1] = true
### Measurements parameters
range.outlier.rejection.multiplier = 6
range.outlier.rejection.starting.iteration = 2
range.rate.outlier.rejection.multiplier = 10
range.rate.outlier.rejection.starting.iteration = 15
az.el.outlier.rejection.multiplier = 6
az.el.outlier.rejection.starting.iteration = 2
PV.outlier.rejection.multiplier = 6
PV.outlier.rejection.starting.iteration = 2
range.measurements.base.weight = 1.0
range.rate.measurements.base.weight = 1.0
azimuth.measurements.base.weight = 1.0
elevation.measurements.base.weight = 1.0
PV.measurements.base.weight = 1.0
PV.measurements.position.sigma = 10.0
PV.measurements.velocity.sigma = 0.01
## Estimator
# normalized parameters p are computed from physical parameters x
# as p = (x - x0) / sx where x0 is the reference value for physical
# parameter x and sx is the associated scale factor
# scaling factor for orbital parameters normalization (m)
# if not specified, the value set for propagator.position.error will be copied
estimator.orbital.parameters.position.scale = 10.0
# we can use either a Levenberg-Marquardt or a Gauss-Newton
# optimization engine. Default is Levenberg-Marquardt
# the default initial step bound factor is 100 for Levenberg-Marquardt
# this is too small for normalized parameters when initial guess is very
# far. An order of magnitude is 100 times the distance error of the initial guess
# divided by estimator.orbital.parameters.position.scale. So if the initial guess
# is about 100km wrong and estimator.orbital.parameters.position.scale is set to 10.0,
# the initial step bound factor should be of the order of magnitude of 1.0e6
estimator.Levenberg.Marquardt.initial.step.bound.factor = 100
# convergence is reached when max|p(k+1) - p(k)| < ε for each
# normalized estimated parameters p and iterations k and k+1
# so the ε threshold (which corresponds to the key
# estimator.normalized.parameters.convergence.threshold)
# Normalized values are computed as (x - x0) / sx,
# so convergence is reached when the following condition holds for
# all estimated parameters: |x[i+1] - x[i]| <= ε * sx
# So the convergence threshold specified here can be considered as
# a multiplication factor applied to scale. Since for all parameters
# the scale is often small (typically about 1 m for orbital positions
# for example), then the threshold should not be too small. A value
# of 10⁻³ is often quite accurate.
estimator.normalized.parameters.convergence.threshold = 1.0e-3
estimator.max.iterations = 300
estimator.max.evaluations = 300
# comma-separated list of measurements files (in the same directory as this file)
measurements.files = generated-doppler-39-CGBSAT-VHFnonoise.dat,generated-doppler-Kir-virtnonoise.dat
# ,generated-doppler-F4KLD-UNIVERSITE-PAUL-SABATIER-Toulouse-III.dat ,
# ,
# ,
#
# generated-doppler-Observatoire-de-Paris.dat
#Measured Data
# 2019-06-11T19_58_49_145.961_4171_42778.dat, 2019-06-11T21_32_55_145.961_4171_42778.dat
# , 2019-06-12T07_20_42_145.961_4171_42778.dat
#
# base name of the output files (log and residuals), no files created if empty
output.base.name = orbit-determination-nobias-15msnoise-2station-lm1