public class TLEBasedOrbitDetermination extends AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
Position data from a SP3 file are used as observations for the orbit determination process. The dynamical model used for the satellite is the SGP4/SDP4 model. An input TLE (from Celestrak) is used as initial guess. The purpose is to generate a new TLE, with a better accuracy thanks to the estimation process.
Constructor and Description |
---|
TLEBasedOrbitDetermination() |
Modifier and Type | Method and Description |
---|---|
protected void |
compareWithReference(org.orekit.orbits.Orbit estimatedOrbit)
Compare the estimated orbit with a reference orbit.
|
protected void |
createGravityField(TutorialOrbitDetermination inputData)
Create a gravity field from input parameters.
|
protected org.orekit.propagation.conversion.TLEPropagatorBuilder |
createPropagatorBuilder(org.orekit.orbits.Orbit referenceOrbit,
org.orekit.propagation.conversion.ODEIntegratorBuilder builder,
double positionScale)
Create a propagator builder from input parameters.
|
protected void |
finish(org.orekit.propagation.Propagator[] estimated)
Initialization just after orekit-data setting.
|
protected double |
getMu()
Get the central attraction coefficient.
|
protected void |
init(TutorialOrbitDetermination inputData)
Initialization just after orekit-data setting.
|
static void |
main(String[] args)
Program entry point.
|
protected void |
setAttitudeProvider(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder,
org.orekit.attitudes.AttitudeProvider attitudeProvider)
Set attitude provider.
|
protected List<org.orekit.utils.ParameterDriver> |
setDrag(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder,
org.orekit.models.earth.atmosphere.Atmosphere atmosphere,
org.orekit.forces.drag.DragSensitive spacecraft)
Set drag force model.
|
protected List<org.orekit.utils.ParameterDriver> |
setGravity(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder,
org.orekit.bodies.OneAxisEllipsoid body)
Set gravity force model.
|
protected List<org.orekit.utils.ParameterDriver> |
setManeuver(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder,
org.orekit.time.AbsoluteDate fireDate,
double duration,
double thrust,
double isp,
org.hipparchus.geometry.euclidean.threed.Vector3D direction,
String name)
Set maneuver model.
|
protected void |
setMass(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder,
double mass)
Set satellite mass.
|
protected List<org.orekit.utils.ParameterDriver> |
setOceanTides(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder,
org.orekit.utils.IERSConventions conventions,
org.orekit.bodies.OneAxisEllipsoid body,
int degree,
int order)
Set third body attraction force model.
|
protected List<org.orekit.utils.ParameterDriver> |
setPolynomialAcceleration(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder,
String name,
org.hipparchus.geometry.euclidean.threed.Vector3D direction,
int degree)
Set polynomial acceleration force model.
|
protected List<org.orekit.utils.ParameterDriver> |
setRelativity(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder)
Set relativity force model.
|
protected List<org.orekit.utils.ParameterDriver> |
setSolarRadiationPressure(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder,
org.orekit.bodies.CelestialBody sun,
org.orekit.bodies.OneAxisEllipsoid earth,
org.orekit.forces.radiation.RadiationSensitive spacecraft)
Set solar radiation pressure force model.
|
protected List<org.orekit.utils.ParameterDriver> |
setSolidTides(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder,
org.orekit.utils.IERSConventions conventions,
org.orekit.bodies.OneAxisEllipsoid body,
org.orekit.bodies.CelestialBody[] solidTidesBodies)
Set third body attraction force model.
|
protected List<org.orekit.utils.ParameterDriver> |
setThirdBody(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder,
org.orekit.bodies.CelestialBody thirdBody)
Set third body attraction force model.
|
run, runKalman, runReference
public static void main(String[] args)
args
- program arguments (unused here)protected void init(TutorialOrbitDetermination inputData)
By default, does nothing.
init
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
inputData
- input dataprotected void finish(org.orekit.propagation.Propagator[] estimated)
By default, does nothing.
finish
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
estimated
- estimated propagatorsprotected void createGravityField(TutorialOrbitDetermination inputData) throws NoSuchElementException
createGravityField
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
inputData
- input dataNoSuchElementException
- if input parameters are missingprotected double getMu()
getMu
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
protected org.orekit.propagation.conversion.TLEPropagatorBuilder createPropagatorBuilder(org.orekit.orbits.Orbit referenceOrbit, org.orekit.propagation.conversion.ODEIntegratorBuilder builder, double positionScale)
The advantage of using the DSST instead of the numerical propagator is that it is possible to use greater values for the minimum and maximum integration steps.
createPropagatorBuilder
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
referenceOrbit
- reference orbit from which real orbits will be builtbuilder
- first order integrator builderpositionScale
- scaling factor used for orbital parameters normalization
(typically set to the expected standard deviation of the position)protected void setMass(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, double mass)
setMass
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
propagatorBuilder
- propagator buildermass
- initial massprotected List<org.orekit.utils.ParameterDriver> setGravity(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, org.orekit.bodies.OneAxisEllipsoid body)
setGravity
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
propagatorBuilder
- propagator builderbody
- central bodyprotected List<org.orekit.utils.ParameterDriver> setOceanTides(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, org.orekit.utils.IERSConventions conventions, org.orekit.bodies.OneAxisEllipsoid body, int degree, int order)
setOceanTides
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
propagatorBuilder
- propagator builderconventions
- IERS conventions to usebody
- central bodydegree
- degree of the tide model to loadorder
- order of the tide model to loadprotected List<org.orekit.utils.ParameterDriver> setSolidTides(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, org.orekit.utils.IERSConventions conventions, org.orekit.bodies.OneAxisEllipsoid body, org.orekit.bodies.CelestialBody[] solidTidesBodies)
setSolidTides
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
propagatorBuilder
- propagator builderconventions
- IERS conventions to usebody
- central bodysolidTidesBodies
- third bodies generating solid tidesprotected List<org.orekit.utils.ParameterDriver> setThirdBody(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, org.orekit.bodies.CelestialBody thirdBody)
setThirdBody
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
propagatorBuilder
- propagator builderthirdBody
- third bodyprotected List<org.orekit.utils.ParameterDriver> setDrag(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, org.orekit.models.earth.atmosphere.Atmosphere atmosphere, org.orekit.forces.drag.DragSensitive spacecraft)
setDrag
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
propagatorBuilder
- propagator builderatmosphere
- atmospheric modelspacecraft
- spacecraft modelprotected List<org.orekit.utils.ParameterDriver> setSolarRadiationPressure(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, org.orekit.bodies.CelestialBody sun, org.orekit.bodies.OneAxisEllipsoid earth, org.orekit.forces.radiation.RadiationSensitive spacecraft)
setSolarRadiationPressure
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
propagatorBuilder
- propagator buildersun
- Sun modelearth
- Earth body shapespacecraft
- spacecraft modelprotected List<org.orekit.utils.ParameterDriver> setRelativity(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder)
setRelativity
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
propagatorBuilder
- propagator builderprotected List<org.orekit.utils.ParameterDriver> setPolynomialAcceleration(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, String name, org.hipparchus.geometry.euclidean.threed.Vector3D direction, int degree)
setPolynomialAcceleration
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
propagatorBuilder
- propagator buildername
- name of the accelerationdirection
- normalized direction of the accelerationdegree
- polynomial degreeprotected void setAttitudeProvider(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, org.orekit.attitudes.AttitudeProvider attitudeProvider)
setAttitudeProvider
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
propagatorBuilder
- propagator builderattitudeProvider
- attitude providerprotected void compareWithReference(org.orekit.orbits.Orbit estimatedOrbit) throws IOException
compareWithReference
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
estimatedOrbit
- estimated orbitIOException
- Input file cannot be openedprotected List<org.orekit.utils.ParameterDriver> setManeuver(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, org.orekit.time.AbsoluteDate fireDate, double duration, double thrust, double isp, org.hipparchus.geometry.euclidean.threed.Vector3D direction, String name)
AbstractOrbitDetermination
setManeuver
in class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
propagatorBuilder
- propagator builderfireDate
- maneuver dateduration
- the duration of the thrust (s) (if negative, the date is considered to be the stop date)thrust
- the thrust force (N)isp
- engine specific impulse (s)direction
- the acceleration direction in satellite frame.name
- of the maneuverCopyright © 2002–2023 CS GROUP. All rights reserved.