Class IodGooding

java.lang.Object
org.orekit.estimation.iod.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 Details

    • IodGooding

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

    • 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)