Class AbstractOrbitDeterminationEngine<T extends org.orekit.propagation.conversion.PropagatorBuilder>
- java.lang.Object
-
- org.orekit.tutorials.estimation.common.AbstractOrbitDeterminationEngine<T>
-
- Type Parameters:
T
- type of the propagator builder
- Direct Known Subclasses:
OrbitDeterminationEngine
public abstract class AbstractOrbitDeterminationEngine<T extends org.orekit.propagation.conversion.PropagatorBuilder> extends Object
Base class for Orekit orbit determination tutorials.- Author:
- Luc Maisonobe, Bryan Cazabonne
-
-
Constructor Summary
Constructors Constructor Description AbstractOrbitDeterminationEngine()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract void
compareWithReference(org.orekit.orbits.Orbit estimatedOrbit)
Compare the estimated orbit with a reference orbit.protected abstract void
createGravityField(TutorialOrbitDetermination inputData)
Create a gravity field from input parameters.protected abstract T
createPropagatorBuilder(org.orekit.orbits.Orbit referenceOrbit, org.orekit.propagation.conversion.ODEIntegratorBuilder builder, double positionScale)
Create a propagator builder from input parameters.protected abstract double
getMu()
Get the central attraction coefficient.protected void
run(File input)
Run the program.protected void
runKalman(File input)
Run the program.protected org.orekit.orbits.Orbit
runReference(File input, org.hipparchus.geometry.euclidean.threed.Vector3D refPosition, org.hipparchus.geometry.euclidean.threed.Vector3D refVelocity, org.orekit.utils.ParameterDriversList refPropagationParameters, org.orekit.time.AbsoluteDate finalDate)
Use the physical models in the input file.protected abstract void
setAttitudeProvider(T propagatorBuilder, org.orekit.attitudes.AttitudeProvider attitudeProvider)
Set attitude provider.protected abstract List<org.orekit.utils.ParameterDriver>
setDrag(T propagatorBuilder, org.orekit.models.earth.atmosphere.Atmosphere atmosphere, org.orekit.forces.drag.DragSensitive spacecraft)
Set drag force model.protected abstract List<org.orekit.utils.ParameterDriver>
setGravity(T propagatorBuilder, org.orekit.bodies.OneAxisEllipsoid body)
Set gravity force model.protected abstract void
setMass(T propagatorBuilder, double mass)
Set satellite mass.protected abstract List<org.orekit.utils.ParameterDriver>
setOceanTides(T propagatorBuilder, org.orekit.utils.IERSConventions conventions, org.orekit.bodies.OneAxisEllipsoid body, int degree, int order)
Set third body attraction force model.protected abstract List<org.orekit.utils.ParameterDriver>
setPolynomialAcceleration(T propagatorBuilder, String name, org.hipparchus.geometry.euclidean.threed.Vector3D direction, int degree)
Set polynomial acceleration force model.protected abstract List<org.orekit.utils.ParameterDriver>
setRelativity(T propagatorBuilder)
Set relativity force model.protected abstract List<org.orekit.utils.ParameterDriver>
setSolarRadiationPressure(T propagatorBuilder, org.orekit.bodies.CelestialBody sun, org.orekit.bodies.OneAxisEllipsoid earth, org.orekit.forces.radiation.RadiationSensitive spacecraft)
Set solar radiation pressure force model.protected abstract List<org.orekit.utils.ParameterDriver>
setSolidTides(T propagatorBuilder, org.orekit.utils.IERSConventions conventions, org.orekit.bodies.OneAxisEllipsoid body, org.orekit.bodies.CelestialBody[] solidTidesBodies)
Set third body attraction force model.protected abstract List<org.orekit.utils.ParameterDriver>
setThirdBody(T propagatorBuilder, org.orekit.bodies.CelestialBody thirdBody)
Set third body attraction force model.
-
-
-
Method Detail
-
createGravityField
protected abstract void createGravityField(TutorialOrbitDetermination inputData) throws NoSuchElementException
Create a gravity field from input parameters.- Parameters:
inputData
- input data- Throws:
NoSuchElementException
- if input parameters are missing
-
getMu
protected abstract double getMu()
Get the central attraction coefficient.- Returns:
- central attraction coefficient
-
createPropagatorBuilder
protected abstract T 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.
- 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 abstract void setMass(T propagatorBuilder, double mass)
Set satellite mass.- Parameters:
propagatorBuilder
- propagator buildermass
- initial mass
-
setGravity
protected abstract List<org.orekit.utils.ParameterDriver> setGravity(T propagatorBuilder, org.orekit.bodies.OneAxisEllipsoid body)
Set gravity force model.- Parameters:
propagatorBuilder
- propagator builderbody
- central body- Returns:
- drivers for the force model
-
setOceanTides
protected abstract List<org.orekit.utils.ParameterDriver> setOceanTides(T propagatorBuilder, org.orekit.utils.IERSConventions conventions, org.orekit.bodies.OneAxisEllipsoid body, int degree, int order)
Set third body attraction force model.- 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 abstract List<org.orekit.utils.ParameterDriver> setSolidTides(T propagatorBuilder, org.orekit.utils.IERSConventions conventions, org.orekit.bodies.OneAxisEllipsoid body, org.orekit.bodies.CelestialBody[] solidTidesBodies)
Set third body attraction force model.- Parameters:
propagatorBuilder
- propagator builderconventions
- IERS conventions to usebody
- central bodysolidTidesBodies
- third bodies generating solid tides- Returns:
- drivers for the force model
-
setThirdBody
protected abstract List<org.orekit.utils.ParameterDriver> setThirdBody(T propagatorBuilder, org.orekit.bodies.CelestialBody thirdBody)
Set third body attraction force model.- Parameters:
propagatorBuilder
- propagator builderthirdBody
- third body- Returns:
- drivers for the force model
-
setDrag
protected abstract List<org.orekit.utils.ParameterDriver> setDrag(T propagatorBuilder, org.orekit.models.earth.atmosphere.Atmosphere atmosphere, org.orekit.forces.drag.DragSensitive spacecraft)
Set drag force model.- Parameters:
propagatorBuilder
- propagator builderatmosphere
- atmospheric modelspacecraft
- spacecraft model- Returns:
- drivers for the force model
-
setSolarRadiationPressure
protected abstract List<org.orekit.utils.ParameterDriver> setSolarRadiationPressure(T propagatorBuilder, org.orekit.bodies.CelestialBody sun, org.orekit.bodies.OneAxisEllipsoid earth, org.orekit.forces.radiation.RadiationSensitive spacecraft)
Set solar radiation pressure force model.- Parameters:
propagatorBuilder
- propagator buildersun
- Sun modelearth
- Earth body shapespacecraft
- spacecraft model- Returns:
- drivers for the force model
-
setRelativity
protected abstract List<org.orekit.utils.ParameterDriver> setRelativity(T propagatorBuilder)
Set relativity force model.- Parameters:
propagatorBuilder
- propagator builder- Returns:
- drivers for the force model
-
setPolynomialAcceleration
protected abstract List<org.orekit.utils.ParameterDriver> setPolynomialAcceleration(T propagatorBuilder, String name, org.hipparchus.geometry.euclidean.threed.Vector3D direction, int degree)
Set polynomial acceleration force model.- Parameters:
propagatorBuilder
- propagator buildername
- name of the accelerationdirection
- normalized direction of the accelerationdegree
- polynomial degree- Returns:
- drivers for the force model
-
setAttitudeProvider
protected abstract void setAttitudeProvider(T propagatorBuilder, org.orekit.attitudes.AttitudeProvider attitudeProvider)
Set attitude provider.- Parameters:
propagatorBuilder
- propagator builderattitudeProvider
- attitude provider
-
compareWithReference
protected abstract void compareWithReference(org.orekit.orbits.Orbit estimatedOrbit) throws IOException
Compare the estimated orbit with a reference orbit.- Parameters:
estimatedOrbit
- estimated orbit- Throws:
IOException
- Input file cannot be opened
-
run
protected void run(File input) throws IOException
Run the program.This method uses a batch least squares algorithms to perform the orbit determination.
- Parameters:
input
- input file- Throws:
IOException
- if input files cannot be read
-
runKalman
protected void runKalman(File input) throws IOException
Run the program.This method uses an Extended Kalman Filter to perform the orbit determination.
- Parameters:
input
- input file- Throws:
IOException
- if input files cannot be read
-
runReference
protected org.orekit.orbits.Orbit runReference(File input, org.hipparchus.geometry.euclidean.threed.Vector3D refPosition, org.hipparchus.geometry.euclidean.threed.Vector3D refVelocity, org.orekit.utils.ParameterDriversList refPropagationParameters, org.orekit.time.AbsoluteDate finalDate) throws IOException
Use the physical models in the input file. Incorporate the initial reference values And run the propagation until the last measurement to get the reference orbit at the same date as the Kalman filter- Parameters:
input
- Input configuration filerefPosition
- Initial reference positionrefVelocity
- Initial reference velocityrefPropagationParameters
- Reference propagation parametersfinalDate
- The final date to usefinal dateame date as the Kalman filter- Returns:
- reference orbit at the same data as the Kalman Filter
- Throws:
IOException
- Input file cannot be opened
-
-