Skip to content
Snippets Groups Projects
maxvalier.in 11.8 KiB
Newer Older
noeljanes's avatar
noeljanes committed
## 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 definition
## date of the orbital parameters (UTC)
orbit.date = 2019-06-11T16:35:29.149
noeljanes's avatar
noeljanes committed

### Keplerian elements
## Semi-major axis (m)
noeljanes's avatar
noeljanes committed
## Eccentricity
noeljanes's avatar
noeljanes committed
## Inclination (degrees)
noeljanes's avatar
noeljanes committed
## Right Ascension of Ascending Node (degrees)
noeljanes's avatar
noeljanes committed
## Perigee Argument (degrees)
noeljanes's avatar
noeljanes committed
## Anomaly (degrees)
## orbit.keplerian.anomaly = 0.0
noeljanes's avatar
noeljanes committed

### Equinoctial elements
## Semi-major axis (m)
noeljanes's avatar
noeljanes committed
## ex/k component of eccentricity vector
noeljanes's avatar
noeljanes committed
## ey/h component of eccentricity vector
noeljanes's avatar
noeljanes committed
## hx/q component of inclination vector
noeljanes's avatar
noeljanes committed
## hy/p component of inclination vector
noeljanes's avatar
noeljanes committed
## Longitude Argument (degrees)
## orbit.equinoctial.lambda = 0.0
noeljanes's avatar
noeljanes committed

### Circular elements
## Semi-major axis (m)
noeljanes's avatar
noeljanes committed
## ex component of eccentricity vector
noeljanes's avatar
noeljanes committed
## ey component of eccentricity vector
noeljanes's avatar
noeljanes committed
## Inclination (degrees)
noeljanes's avatar
noeljanes committed
## Right Ascension of Ascending Node (degrees)
noeljanes's avatar
noeljanes committed
## Latitude Argument (degrees)
noeljanes's avatar
noeljanes committed

### Angle type for anomaly, alpha or lambda (ECCENTRIC/MEAN/TRUE) [MEAN]
noeljanes's avatar
noeljanes committed

### Cartesian elements
## Position along X in inertial frame (m)
orbit.cartesian.px = -5423194
noeljanes's avatar
noeljanes committed
## Position along Y in inertial frame (m)
orbit.cartesian.py = -4550295
noeljanes's avatar
noeljanes committed
## Position along Z in inertial frame (m)
orbit.cartesian.pz = 250075
noeljanes's avatar
noeljanes committed
## Velocity along X in inertial frame (m/s)
orbit.cartesian.vx = -735
noeljanes's avatar
noeljanes committed
## Velocity along Y in inertial frame (m/s)
orbit.cartesian.vy =  740
noeljanes's avatar
noeljanes committed
## Velocity along Z in inertial frame (m/s)
orbit.cartesian.vz = 7760
noeljanes's avatar
noeljanes committed

## TLE parameters
#Line 1
##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
noeljanes's avatar
noeljanes committed

## Spacecraft mass (kg) [1000.]
noeljanes's avatar
noeljanes committed

# 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.sun    = false
noeljanes's avatar
noeljanes committed
solid.tides.moon   = false

## Atmospheric drag (true/false) [false]
drag = true
## Drag coefficient
drag.cd =  2.0
## Estimation flag for drag coefficient (true/false) [false]
drag.cd.estimated = false
noeljanes's avatar
noeljanes committed
## Drag area (m^2)
drag.area = 0.25

## Solar Radiation Pressure (true/false) [false]
solar.radiation.pressure = false
noeljanes's avatar
noeljanes committed
## 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
noeljanes's avatar
noeljanes committed

## 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)
noeljanes's avatar
noeljanes committed

ground.station.name                            [0] = 39-CGBSAT-VHF
noeljanes's avatar
noeljanes committed
ground.station.latitude                        [0] = 52.834 
ground.station.longitude                       [0] = 6.379  
ground.station.altitude                        [0] = 10
noeljanes's avatar
noeljanes committed
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
noeljanes's avatar
noeljanes committed
ground.station.range.bias                      [0] = 11473.623
noeljanes's avatar
noeljanes committed
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] = 15
ground.station.range.rate.bias                 [0] = 375.0
ground.station.range.rate.bias.min             [0] = -0.0
ground.station.range.rate.bias.max             [0] = +500.0
noeljanes's avatar
noeljanes committed
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

noeljanes's avatar
noeljanes committed
### 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
noeljanes's avatar
noeljanes committed
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
estimator.optimization.engine = 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 = 1.0e6

# 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                                = 600
estimator.max.evaluations                               = 600
noeljanes's avatar
noeljanes committed

# comma-separated list of measurements files (in the same directory as this file)
measurements.files = generated-doppler-39-CGBSAT-VHF-km.dat

#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
noeljanes's avatar
noeljanes committed

# base name of the output files (log and residuals), no files created if empty
output.base.name = orbit-determination