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-12T07:20:42.145

### Keplerian elements
## Semi-major axis (m)
# orbit.keplerian.a = 0.0
## Eccentricity
# orbit.keplerian.e = 0.0
## Inclination (degrees)
# orbit.keplerian.i = 0.0
## Right Ascension of Ascending Node (degrees)
# orbit.keplerian.raan = 0.0
## Perigee Argument (degrees)
# orbit.keplerian.pa = 0.0
## Anomaly (degrees)
# orbit.keplerian.anomaly = 0.0

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

### Circular elements
## Semi-major axis (m)
# orbit.circular.a = 0.0
## ex component of eccentricity vector
# orbit.circular.ex = 0.0
## ey component of eccentricity vector
# orbit.circular.ey = 0.0
## Inclination (degrees)
# orbit.circular.i = 0.0
## Right Ascension of Ascending Node (degrees)
# orbit.circular.raan = 0.0
## Latitude Argument (degrees)
# 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.cartesian.px = -40517522.9
## Position along Y in inertial frame (m)
# orbit.cartesian.py = -10003079.9
## Position along Z in inertial frame (m)
# orbit.cartesian.pz = 166792.8
## Velocity along X in inertial frame (m/s)
# orbit.cartesian.vx = 762.559
## Velocity along Y in inertial frame (m/s)
# orbit.cartesian.vy =  -1474.468
## Velocity along Z in inertial frame (m/s)
# orbit.cartesian.vz = 55.430

## TLE parameters
#Line 1
orbit_tle_line_1 = 1 42778U 17036P   19168.73968312  .00000624  00000-0  30313-4 0  9995
orbit_tle_line_2 = 2 42778  97.3544 226.4276 0011195 221.3881 138.6508 15.22005879110094

## Spacecraft mass (kg) [1000.]
# mass = 5370.0

# 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;
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 = true
## Drag area (m^2)
drag.area = 0.25

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

## 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] = 0.001
ground.station.range.rate.bias                 [0] = 0.0
ground.station.range.rate.bias.min             [0] = -50.0
ground.station.range.rate.bias.max             [0] = +50.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

### Measurements parameters
range.outlier.rejection.multiplier              = 6
range.outlier.rejection.starting.iteration      = 2
range.rate.outlier.rejection.multiplier         = 6
range.rate.outlier.rejection.starting.iteration = 2
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                                = 20
estimator.max.evaluations                               = 25

# comma-separated list of measurements files (in the same directory as this file)
measurements.files = 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