Package org.orekit.tutorials.estimation
Class TLEBasedOrbitDetermination
- java.lang.Object
-
- org.orekit.tutorials.estimation.common.AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
-
- org.orekit.tutorials.estimation.TLEBasedOrbitDetermination
-
public class TLEBasedOrbitDetermination extends AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
The purpose of the tutorial is to present a TLE based orbit determination.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.
- Author:
- Bryan Cazabonne
-
-
Constructor Summary
Constructors Constructor Description TLEBasedOrbitDetermination()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method 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.-
Methods inherited from class org.orekit.tutorials.estimation.common.AbstractOrbitDetermination
run, runKalman, runReference
-
-
-
-
Method Detail
-
main
public static void main(String[] args)
Program entry point.- Parameters:
args
- program arguments (unused here)
-
init
protected void init(TutorialOrbitDetermination inputData)
Initialization just after orekit-data setting.By default, does nothing.
- Overrides:
init
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
inputData
- input data
-
finish
protected void finish(org.orekit.propagation.Propagator[] estimated)
Initialization just after orekit-data setting.By default, does nothing.
- Overrides:
finish
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
estimated
- estimated propagators
-
createGravityField
protected void createGravityField(TutorialOrbitDetermination inputData) throws NoSuchElementException
Create a gravity field from input parameters.- Specified by:
createGravityField
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
inputData
- input data- Throws:
NoSuchElementException
- if input parameters are missing
-
getMu
protected double getMu()
Get the central attraction coefficient.- Specified by:
getMu
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Returns:
- central attraction coefficient
-
createPropagatorBuilder
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.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.
- Specified by:
createPropagatorBuilder
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
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)- Returns:
- propagator builder
-
setMass
protected void setMass(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, double mass)
Set satellite mass.- Specified by:
setMass
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
propagatorBuilder
- propagator buildermass
- initial mass
-
setGravity
protected List<org.orekit.utils.ParameterDriver> setGravity(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, org.orekit.bodies.OneAxisEllipsoid body)
Set gravity force model.- Specified by:
setGravity
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
propagatorBuilder
- propagator builderbody
- central body- Returns:
- drivers for the force model
-
setOceanTides
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.- Specified by:
setOceanTides
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
propagatorBuilder
- propagator builderconventions
- IERS conventions to usebody
- central bodydegree
- degree of the tide model to loadorder
- order of the tide model to load- Returns:
- drivers for the force model
-
setSolidTides
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.- Specified by:
setSolidTides
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
propagatorBuilder
- propagator builderconventions
- IERS conventions to usebody
- central bodysolidTidesBodies
- third bodies generating solid tides- Returns:
- drivers for the force model
-
setThirdBody
protected List<org.orekit.utils.ParameterDriver> setThirdBody(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, org.orekit.bodies.CelestialBody thirdBody)
Set third body attraction force model.- Specified by:
setThirdBody
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
propagatorBuilder
- propagator builderthirdBody
- third body- Returns:
- drivers for the force model
-
setDrag
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.- Specified by:
setDrag
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
propagatorBuilder
- propagator builderatmosphere
- atmospheric modelspacecraft
- spacecraft model- Returns:
- drivers for the force model
-
setSolarRadiationPressure
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.- Specified by:
setSolarRadiationPressure
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
propagatorBuilder
- propagator buildersun
- Sun modelearth
- Earth body shapespacecraft
- spacecraft model- Returns:
- drivers for the force model
-
setRelativity
protected List<org.orekit.utils.ParameterDriver> setRelativity(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder)
Set relativity force model.- Specified by:
setRelativity
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
propagatorBuilder
- propagator builder- Returns:
- drivers for the force model
-
setPolynomialAcceleration
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.- Specified by:
setPolynomialAcceleration
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
propagatorBuilder
- propagator buildername
- name of the accelerationdirection
- normalized direction of the accelerationdegree
- polynomial degree- Returns:
- drivers for the force model
-
setAttitudeProvider
protected void setAttitudeProvider(org.orekit.propagation.conversion.TLEPropagatorBuilder propagatorBuilder, org.orekit.attitudes.AttitudeProvider attitudeProvider)
Set attitude provider.- Specified by:
setAttitudeProvider
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
propagatorBuilder
- propagator builderattitudeProvider
- attitude provider
-
compareWithReference
protected void compareWithReference(org.orekit.orbits.Orbit estimatedOrbit) throws IOException
Compare the estimated orbit with a reference orbit.- Specified by:
compareWithReference
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
estimatedOrbit
- estimated orbit- Throws:
IOException
- Input file cannot be opened
-
setManeuver
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)
Description copied from class:AbstractOrbitDetermination
Set maneuver model.- Specified by:
setManeuver
in classAbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
- Parameters:
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 maneuver- Returns:
- drivers for the force mode
-
-