Class IodGooding


  • public class IodGooding
    extends Object
    Gooding angles only Initial Orbit Determination (IOD) algorithm, assuming Keplerian motion.

    An orbit is determined from three lines of sight w.r.t. their respective observers inertial positions vectors. Gooding algorithm can handle multiple satellite's revolutions. Reference: Gooding, R.H., A New Procedure for Orbit Determination Based on Three Lines of Sight (Angles only), Technical Report 93004, April 1993

    Since:
    8.0
    Author:
    Joris Olympio, Bryan Cazabonne
    • Constructor Detail

      • IodGooding

        public IodGooding​(double mu)
        Constructor.
        Parameters:
        mu - gravitational constant
    • Method Detail

      • getRange1

        public double getRange1()
        Get range for observation (1).
        Returns:
        the range for observation (1)
      • getRange2

        public double getRange2()
        Get range for observation (2).
        Returns:
        the range for observation (2)
      • getRange3

        public double getRange3()
        Get range for observation (3).
        Returns:
        the range for observation (3)
      • estimate

        public Orbit estimate​(Frame outputFrame,
                              AngularAzEl azEl1,
                              AngularAzEl azEl2,
                              AngularAzEl azEl3)
        Estimate orbit from three angular (i.e., azimuth - elevation) observations.

        This method doesn't need initial guesses of range values since they are computed by a Gauss algorithm.

        Parameters:
        outputFrame - inertial frame for observer coordinates and orbit estimate
        azEl1 - first angular observation
        azEl2 - second angular observation
        azEl3 - third angular observation
        Returns:
        an estimate of the orbit at the central date (i.e., date of the second angular observation)
        Since:
        13.0
      • estimate

        public Orbit estimate​(Frame outputFrame,
                              AngularAzEl azEl1,
                              AngularAzEl azEl2,
                              AngularAzEl azEl3,
                              int nRev,
                              boolean direction)
        Estimate orbit from three angular (i.e., azimuth - elevation) observations.

        This method doesn't need initial guesses of range values since they are computed by a Gauss algorithm.

        Parameters:
        outputFrame - inertial frame for observer coordinates and orbit estimate
        azEl1 - first angular observation
        azEl2 - second angular observation
        azEl3 - third angular observation
        nRev - number of complete revolutions between observation 1 and 3
        direction - true if posigrade (short way)
        Returns:
        an estimate of the orbit at the central date (i.e., date of the second angular observation)
        Since:
        13.0
      • estimate

        public Orbit estimate​(Frame outputFrame,
                              AngularAzEl azEl1,
                              AngularAzEl azEl2,
                              AngularAzEl azEl3,
                              double rho1init,
                              double rho3init)
        Estimate orbit from three angular observations.

        This signature assumes there was less than an half revolution between start and final date

        Parameters:
        outputFrame - inertial frame for observer coordinates and orbit estimate
        azEl1 - first angular observation
        azEl2 - second angular observation
        azEl3 - third angular observation
        rho1init - initial guess of the range problem. range 1, in meters
        rho3init - initial guess of the range problem. range 3, in meters
        Returns:
        an estimate of the Keplerian orbit at the central date (i.e., date of the second angular observation)
        Since:
        12.0
      • estimate

        public Orbit estimate​(Frame outputFrame,
                              AngularAzEl azEl1,
                              AngularAzEl azEl2,
                              AngularAzEl azEl3,
                              double rho1init,
                              double rho3init,
                              int nRev,
                              boolean direction)
        Estimate orbit from three angular observations.
        Parameters:
        outputFrame - inertial frame for observer coordinates and orbit estimate
        azEl1 - first angular observation
        azEl2 - second angular observation
        azEl3 - third angular observation
        rho1init - initial guess of the range problem. range 1, in meters
        rho3init - initial guess of the range problem. range 3, in meters
        nRev - number of complete revolutions between observation 1 and 3
        direction - true if posigrade (short way)
        Returns:
        an estimate of the Keplerian orbit at the central date (i.e., date of the second angular observation)
        Since:
        11.0
      • estimate

        public Orbit estimate​(Frame outputFrame,
                              AngularRaDec raDec1,
                              AngularRaDec raDec2,
                              AngularRaDec raDec3)
        Estimate orbit from three angular (i.e., right ascension - declination) observations.

        This method doesn't need initial guesses of range values since they are computed by a Gauss algorithm.

        Parameters:
        outputFrame - inertial frame for observer coordinates and orbit estimate
        raDec1 - first angular observation
        raDec2 - second angular observation
        raDec3 - third angular observation
        Returns:
        an estimate of the orbit at the central date (i.e., date of the second angular observation)
        Since:
        13.0
      • estimate

        public Orbit estimate​(Frame outputFrame,
                              AngularRaDec raDec1,
                              AngularRaDec raDec2,
                              AngularRaDec raDec3,
                              int nRev,
                              boolean direction)
        Estimate orbit from three angular (i.e., right ascension - declination) observations.

        This method doesn't need initial guesses of range values since they are computed by a Gauss algorithm.

        Parameters:
        outputFrame - inertial frame for observer coordinates and orbit estimate
        raDec1 - first angular observation
        raDec2 - second angular observation
        raDec3 - third angular observation
        nRev - number of complete revolutions between observation 1 and 3
        direction - true if posigrade (short way)
        Returns:
        an estimate of the orbit at the central date (i.e., date of the second angular observation)
        Since:
        13.0
      • estimate

        public Orbit estimate​(Frame outputFrame,
                              AngularRaDec raDec1,
                              AngularRaDec raDec2,
                              AngularRaDec raDec3,
                              double rho1init,
                              double rho3init)
        Estimate orbit from three angular observations.

        This signature assumes there was less than an half revolution between start and final date

        Parameters:
        outputFrame - inertial frame for observer coordinates and orbit estimate
        raDec1 - first angular observation
        raDec2 - second angular observation
        raDec3 - third angular observation
        rho1init - initial guess of the range problem. range 1, in meters
        rho3init - initial guess of the range problem. range 3, in meters
        Returns:
        an estimate of the Keplerian orbit at the central date (i.e., date of the second angular observation)
        Since:
        11.0
      • estimate

        public Orbit estimate​(Frame outputFrame,
                              AngularRaDec raDec1,
                              AngularRaDec raDec2,
                              AngularRaDec raDec3,
                              double rho1init,
                              double rho3init,
                              int nRev,
                              boolean direction)
        Estimate orbit from three angular observations.
        Parameters:
        outputFrame - inertial frame for observer coordinates and orbit estimate
        raDec1 - first angular observation
        raDec2 - second angular observation
        raDec3 - third angular observation
        rho1init - initial guess of the range problem. range 1, in meters
        rho3init - initial guess of the range problem. range 3, in meters
        nRev - number of complete revolutions between observation 1 and 3
        direction - true if posigrade (short way)
        Returns:
        an estimate of the Keplerian orbit at the central date (i.e., date of the second angular observation)
        Since:
        11.0
      • estimate

        public Orbit estimate​(Frame outputFrame,
                              Vector3D O1,
                              Vector3D O2,
                              Vector3D O3,
                              Vector3D lineOfSight1,
                              AbsoluteDate dateObs1,
                              Vector3D lineOfSight2,
                              AbsoluteDate dateObs2,
                              Vector3D lineOfSight3,
                              AbsoluteDate dateObs3,
                              double rho1init,
                              double rho3init)
        Estimate orbit from three line of sight.

        This signature assumes there was less than an half revolution between start and final date

        Parameters:
        outputFrame - inertial frame for observer coordinates and orbit estimate
        O1 - Observer position 1
        O2 - Observer position 2
        O3 - Observer position 3
        lineOfSight1 - line of sight 1
        dateObs1 - date of observation 1
        lineOfSight2 - line of sight 2
        dateObs2 - date of observation 1
        lineOfSight3 - line of sight 3
        dateObs3 - date of observation 1
        rho1init - initial guess of the range problem. range 1, in meters
        rho3init - initial guess of the range problem. range 3, in meters
        Returns:
        an estimate of the Keplerian orbit at the central date (i.e., date of the second angular observation)
      • estimate

        public Orbit estimate​(Frame outputFrame,
                              Vector3D O1,
                              Vector3D O2,
                              Vector3D O3,
                              Vector3D lineOfSight1,
                              AbsoluteDate dateObs1,
                              Vector3D lineOfSight2,
                              AbsoluteDate dateObs2,
                              Vector3D lineOfSight3,
                              AbsoluteDate dateObs3,
                              double rho1init,
                              double rho3init,
                              int nRev,
                              boolean direction)
        Estimate orbit from three line of sight.
        Parameters:
        outputFrame - inertial frame for observer coordinates and orbit estimate
        O1 - Observer position 1
        O2 - Observer position 2
        O3 - Observer position 3
        lineOfSight1 - line of sight 1
        dateObs1 - date of observation 1
        lineOfSight2 - line of sight 2
        dateObs2 - date of observation 2
        lineOfSight3 - line of sight 3
        dateObs3 - date of observation 3
        rho1init - initial guess of the range problem. range 1, in meters
        rho3init - initial guess of the range problem. range 3, in meters
        nRev - number of complete revolutions between observation1 and 3
        direction - true if posigrade (short way)
        Returns:
        an estimate of the Keplerian orbit at the central date (i.e., date of the second angular observation)