Class AbstractOrbitDetermination<T extends org.orekit.propagation.conversion.PropagatorBuilder>

    • 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 void finish​(org.orekit.propagation.Propagator[] estimated)
      Initialization just after orekit-data setting.
      protected abstract double getMu()
      Get the central attraction coefficient.
      protected void init​(TutorialOrbitDetermination inputData)
      Initialization just after orekit-data setting.
      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 List<org.orekit.utils.ParameterDriver> setManeuver​(T 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 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.
    • Constructor Detail

      • AbstractOrbitDetermination

        public AbstractOrbitDetermination()
    • Method Detail

      • 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 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 abstract void setMass​(T propagatorBuilder,
                                        double mass)
        Set satellite mass.
        Parameters:
        propagatorBuilder - propagator builder
        mass - 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 builder
        body - 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 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 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 builder
        conventions - IERS conventions to use
        body - central body
        solidTidesBodies - 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 builder
        thirdBody - 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 builder
        atmosphere - atmospheric model
        spacecraft - 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 builder
        sun - Sun model
        earth - Earth body shape
        spacecraft - 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 builder
        name - name of the acceleration
        direction - normalized direction of the acceleration
        degree - polynomial degree
        Returns:
        drivers for the force model
      • setManeuver

        protected abstract List<org.orekit.utils.ParameterDriver> setManeuver​(T propagatorBuilder,
                                                                              org.orekit.time.AbsoluteDate fireDate,
                                                                              double duration,
                                                                              double thrust,
                                                                              double isp,
                                                                              org.hipparchus.geometry.euclidean.threed.Vector3D direction,
                                                                              String name)
        Set maneuver model.
        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
      • setAttitudeProvider

        protected abstract void setAttitudeProvider​(T propagatorBuilder,
                                                    org.orekit.attitudes.AttitudeProvider attitudeProvider)
        Set attitude provider.
        Parameters:
        propagatorBuilder - propagator builder
        attitudeProvider - 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
      • init

        protected void init​(TutorialOrbitDetermination inputData)
        Initialization just after orekit-data setting.

        By default, does nothing.

        Parameters:
        inputData - input data
      • finish

        protected void finish​(org.orekit.propagation.Propagator[] estimated)
        Initialization just after orekit-data setting.

        By default, does nothing.

        Parameters:
        estimated - estimated propagators
      • 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 file
        refPosition - Initial reference position
        refVelocity - Initial reference velocity
        refPropagationParameters - Reference propagation parameters
        finalDate - 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