Class 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
    • 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.
    • Constructor Detail

      • TLEBasedOrbitDetermination

        public TLEBasedOrbitDetermination()
    • 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 class AbstractOrbitDetermination<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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        estimated - estimated propagators
      • getMu

        protected double getMu()
        Get the central attraction coefficient.
        Specified by:
        getMu in class AbstractOrbitDetermination<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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        referenceOrbit - reference orbit from which real orbits will be built
        builder - first order integrator builder
        positionScale - 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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        propagatorBuilder - propagator builder
        mass - 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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        propagatorBuilder - propagator builder
        body - 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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        propagatorBuilder - propagator builder
        conventions - IERS conventions to use
        body - central body
        degree - degree of the tide model to load
        order - 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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        propagatorBuilder - propagator builder
        conventions - IERS conventions to use
        body - central body
        solidTidesBodies - 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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        propagatorBuilder - propagator builder
        thirdBody - 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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        propagatorBuilder - propagator builder
        atmosphere - atmospheric model
        spacecraft - 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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        propagatorBuilder - propagator builder
        sun - Sun model
        earth - Earth body shape
        spacecraft - 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 class AbstractOrbitDetermination<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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        propagatorBuilder - propagator builder
        name - name of the acceleration
        direction - normalized direction of the acceleration
        degree - 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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        propagatorBuilder - propagator builder
        attitudeProvider - 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 class AbstractOrbitDetermination<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 class AbstractOrbitDetermination<org.orekit.propagation.conversion.TLEPropagatorBuilder>
        Parameters:
        propagatorBuilder - propagator builder
        fireDate - maneuver date
        duration - 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