T
- type of the propagator builderpublic abstract class AbstractOrbitDeterminationEngine<T extends org.orekit.propagation.conversion.OrbitDeterminationPropagatorBuilder> extends Object
Constructor and Description |
---|
AbstractOrbitDeterminationEngine() |
Modifier and Type | Method and 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,
double equatorialRadius,
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.
|
protected abstract void createGravityField(TutorialOrbitDetermination inputData) throws NoSuchElementException
inputData
- input dataNoSuchElementException
- if input parameters are missingprotected abstract double getMu()
protected abstract T 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.
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 abstract void setMass(T propagatorBuilder, double mass)
propagatorBuilder
- propagator buildermass
- initial massprotected abstract List<org.orekit.utils.ParameterDriver> setGravity(T propagatorBuilder, org.orekit.bodies.OneAxisEllipsoid body)
propagatorBuilder
- propagator builderbody
- central bodyprotected abstract List<org.orekit.utils.ParameterDriver> setOceanTides(T propagatorBuilder, org.orekit.utils.IERSConventions conventions, org.orekit.bodies.OneAxisEllipsoid body, int degree, int order)
propagatorBuilder
- propagator builderconventions
- IERS conventions to usebody
- central bodydegree
- degree of the tide model to loadorder
- order of the tide model to loadprotected abstract List<org.orekit.utils.ParameterDriver> setSolidTides(T propagatorBuilder, org.orekit.utils.IERSConventions conventions, org.orekit.bodies.OneAxisEllipsoid body, org.orekit.bodies.CelestialBody[] solidTidesBodies)
propagatorBuilder
- propagator builderconventions
- IERS conventions to usebody
- central bodysolidTidesBodies
- third bodies generating solid tidesprotected abstract List<org.orekit.utils.ParameterDriver> setThirdBody(T propagatorBuilder, org.orekit.bodies.CelestialBody thirdBody)
propagatorBuilder
- propagator builderthirdBody
- third bodyprotected abstract List<org.orekit.utils.ParameterDriver> setDrag(T propagatorBuilder, org.orekit.models.earth.atmosphere.Atmosphere atmosphere, org.orekit.forces.drag.DragSensitive spacecraft)
propagatorBuilder
- propagator builderatmosphere
- atmospheric modelspacecraft
- spacecraft modelprotected abstract List<org.orekit.utils.ParameterDriver> setSolarRadiationPressure(T propagatorBuilder, org.orekit.bodies.CelestialBody sun, double equatorialRadius, org.orekit.forces.radiation.RadiationSensitive spacecraft)
propagatorBuilder
- propagator buildersun
- Sun modelequatorialRadius
- central body equatorial radius (for shadow computation)spacecraft
- spacecraft modelprotected abstract List<org.orekit.utils.ParameterDriver> setRelativity(T propagatorBuilder)
propagatorBuilder
- propagator builderprotected abstract List<org.orekit.utils.ParameterDriver> setPolynomialAcceleration(T propagatorBuilder, String name, org.hipparchus.geometry.euclidean.threed.Vector3D direction, int degree)
propagatorBuilder
- propagator buildername
- name of the accelerationdirection
- normalized direction of the accelerationdegree
- polynomial degreeprotected abstract void setAttitudeProvider(T propagatorBuilder, org.orekit.attitudes.AttitudeProvider attitudeProvider)
propagatorBuilder
- propagator builderattitudeProvider
- attitude providerprotected abstract void compareWithReference(org.orekit.orbits.Orbit estimatedOrbit) throws IOException
estimatedOrbit
- estimated orbitIOException
- Input file cannot be openedprotected void run(File input) throws IOException
This method uses a batch least squares algorithms to perform the orbit determination.
input
- input fileIOException
- if input files cannot be readprotected void runKalman(File input) throws IOException
This method uses an Extended Kalman Filter to perform the orbit determination.
input
- input fileIOException
- if input files cannot be readprotected 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
input
- Input configuration filerefPosition
- Initial reference positionrefVelocity
- Initial reference velocityrefPropagationParameters
- Reference propagation parametersfinalDate
- The final date to usefinal dateame date as the Kalman filterIOException
- Input file cannot be openedCopyright © 2002–2022 CS GROUP. All rights reserved.