Initial Orbit Determination

The Initial Orbit Determination (IOD) object is represented in the Object Browser and in the ODTK toolbar by the icon. Double-click the IOD object in the Browser to expose its properties and select a method. The following sections describe the properties for each available method:

HerrickGibbs properties

The Herrick-Gibbs IOD method uses three sets of range plus direction measurements to generate an initial orbit solution for a geocentric spacecraft. The directional information can be in the form of azimuth/elevation angles or direction cosines. The following properties are available for the HerrickGibbs method:

HerrickGibbs Properties
Property Description
SelectedFacility Select the desired tracking station from the dropdown list. If you create the IOD object after loading the tracking data in the scenario object, then by default the selected Facility will be the first Facility with tracking data for the associated satellite.
MeasurementPass

The Herrick-Gibbs IOD method enables you to select three (3) observations from the tracking data. ODTK offers you a list of measurements to select from, which may span several orbit revolutions or several passes of tracking data. You are responsible for choosing a span of data that is consistent with the Herrick Gibbs algorithm. The Herrick Gibbs algorithm is valid for a selection that spans substantially less than one orbit period, and is typically applied to three measurements from the same tracking pass.

To assist you in selecting data, ODTK presents time in two ways:

  • as seconds since the first point in the file
  • as a full date-time string

Time data goes together with the range and elevation for each observation.

MeasurementSampleSize Enables you to set a limit on the number of points displayed when you select the measurement set (see below). This value is 300 by default, so that no matter how many measurements are in the first pass, you will see only the first 300 points.
MinimumElevation Enables you to exclude measurements when the satellite is less than a specified angular distance above the horizon.
SelectedMeasurements Click where indicated to display a List window, which provides a means of selecting points to define your measurement set. The list contains four columns:
  • first column: time in seconds into the pass
  • second column: the UTC time of the observation
  • third column: range in km
  • fourth column: elevation in deg
Click Add... to select the number of points required for the IOD method (three for Herrick-Gibbs).

You must select a facility prior to selecting measurements.

Output Set the OrbitState field to Cartesian or Keplerian. When you run IOD, read-only fields appear for the orbit state and the satellite's epoch, based on those of the middle point in the measurement set.
Output.DataArchive Set the "OutputStateHistory" to true to output an .iodrun state history file. Name the run file with the "Filename" property. The state history will contain one record with the output IOD orbit state at the IOD epoch time.

Herrick-Gibbs IOD uses satellite transponder bias as well as the facility measurement biases in its calculation process. The ODTK Herrick-Gibbs IOD accepts standard range (eMTRange) and laser normal-point range (eMTNPRange) as valid range types. You must load range plus directional measurements as part of the same observation set in the tracking data loader to be recognized as usable by the Herrick-Gibbs algorithm.

GoodingAnglesOnly properties

The GoodingAnglesOnly IOD method uses three sets of angles-only measurements to determine the orbit of a geocentric spacecraft. In ODTK, the angle set may be ground-based azimuth and elevation, ground-based RA and DEC, ground-based X and Y, ground-based Direction Cosines, ground-based phased array Face Angles, or space-based RA and DEC. Measurements may come from one or more tracking stations (or satellites). Measurements are not limited to a specific range in orbital arc, although white noise and two-body dynamic considerations may apply in choosing the measurement sets (see the Wright reference below).

R. H. Gooding, A New Procedure for Orbit Determination Based on Three Lines of Sight (Angles Only), Technical Report 93004, Defence Research Agency, Farnborough, Hampshire, April 1993.

J. R. Wright, Implementation of Gooding's Angles-Only IOD, Analytical Graphics, Inc.

More detailed information on the use of this method follows this table:

GoodingAnglesOnly Properties
Property Description
TrackerList This is a list of trackers to consider.
StartTime ODTK will only display measurements after (and including) this time.
StopMode Select one of the following options:
  • Last Measurement - Display all measurements (with correct tracking ID) after StartTime.
  • StopTime - Only display measurements before (and including) the StopTime parameter.
  • TimeSpan - Only display measurements from StartTime to StartTime + TimeSpan.
StopTime If StopMode = StopTime, this gives the time to stop displaying measurements. Otherwise, the attribute is hidden.
TimeSpan If StopMode = TimeSpan, this gives time duration past the StartTime to display measurements. Otherwise, the attribute is hidden.
MeasurementSampleSize Enables you to set a limit on the number of points displayed when you select the measurement set.
MinimumElevation Enables you to exclude measurements when the satellite is less than the specified angular distance above the horizon.
SelectedMeasurements Click where indicated to display a List window, which provides a means of selecting points to define your measurement set. The list contains five columns:
  • first column - time in seconds relative to StartTime
  • second column - Tracker ID
  • third column - angle set descriptor
  • fourth column - angle 1, either (RA or Az or X or Face Horizontal) in deg or DirectionCosineEast
  • fifth column - angle2, either (DEC or El or Y or Face Vertical) in deg or DirectionCosineNorth
Click Add... to select the number of points required for the IOD method (three for Gooding Angles Only).
HalfRevEstimate This is an estimate of the number of half-revolutions between the first and last (third) observation set. Half-revs are considered in a "true anomaly" sense, not in the sense of an orbit period. ODTK rounds HalfRev input down, e.g., 0 to 1/2 rev is input as 0, 1/2 to 1 rev is input as 1, etc.

This is an important parameter to get correct; if it is incorrect, it is likely that ODTK will not find a good orbit solution.

LambertIndicator Identifies which Lambert solution to use in the Newton-Raphson iteration. Set it to zero (0) to use the first Lambert solution or 1 to use the second Lambert solution (this follows Gooding's convention). When HalfRevEstimate (above) is 0 or 1, then there is only one Lambert solution and the LambertIndicator is 0 and not available. When HalfRevEstimate is greater than 1, then there are exactly two Lambert solutions (or there are none), and you may set LambertIndicator to 0 or 1.
Range1Estimate This is an estimate of the tracker-to-target range at the time of the first observation set. In most cases, this does not have to be very accurate. The default of 5 Re will work for LEO, HEO, and GEO, but in some cases IOD needs an accurate range estimate for the solution to converge.
Range3Estimate This is an estimate of the tracker-to-target range at the time of the third observation set.
MaxIterations Set the maximum number of iterations.
ConvergenceValue This is the solution vector convergence criterion. The default of 10-12 is Gooding's recommendation.
HalleyNewtonLimit Set this Halley/Newton-Raphson control parameter to 0 for pure Newton-Raphson, 0.5 for Halley, or 1.0 for modified Newton-Raphson. The Halley method is normal, but Gooding found that when two or more solutions are close together relative to the starting point, then modified Newton-Raphson works better.
NumericPartialEpsilon This is the "increment factor" for the Standard partial derivative.
T12 This is a read-only parameter giving the time between the first and second observation set. ODTK does not update this after you update the SelectedMeasurements field, but only after you run the IOD method.
T13 This is a read-only parameter giving the time between the first and third observation set. ODTK does not update this after you update the SelectedMeasurements field, but only after you run the IOD method.
Solutions - NumberOfSolutions This is a read-only parameter giving the number of solutions returned by the GoodingAnglesOnly algorithm.
Solutions - UseSolution For multiple solution cases, this determines which solution will appear in the Output - OrbitState field. You can cycle through the different solutions by resetting this parameter and rerunning the IOD method.
Output - OrbitState Set the OrbitState field to Cartesian or Keplerian. When you run IOD, read-only fields display the orbit state and the satellite's epoch. The epoch time is the time of the second observation set. The solution displayed (for multiple solution cases) is controlled by the "UseSolution" parameter.
Output.DataArchive Set the "OutputStateHistory" to true to produce an .iodrun state history file. Name the run file with the "Filename" property. The state history will contain one record with the output IOD orbit state at the IOD epoch time.
EllipticSolutionsOnly When set to true, ODTK will only consider elliptic solutions. When set to false, ODTK will consider both elliptic and hyperbolic solutions.

Using the GoodingAnglesOnly method

Inputs

  1. You must select three sets of angles measurements. To do this, first limit the tracking data by Tracker ID and time interval, and then choose the three measurement sets from the remaining list.
  2. You must estimate the number of half-revs (HalfRevEstimate) between the first and last observation set. This is an important parameter to get correct; if it is incorrect it is likely that ODTK will not find a good orbit solution. Half-revs are considered in a "true anomaly" sense, not an orbit period sense. ODTK rounds down HalfRev input, e.g., 0 to 1/2 rev is input as 0, 1/2 to 1 rev is input as 1, etc.
  3. You must supply a tracker-to-target range estimate at the time of first observation (Range1Estimate) and at the time of the third observation (Range3Estimate). Our testing has shown that, in most cases, this does not need to be very accurate. A 5 Re default estimate usually works well for GEO and LEO cases. There were cases, however, that would not converge to a good solution without a good range estimate.
  4. The defaults for the rest of the inputs are from Gooding and will generally apply. See the detailed definitions in the above table.
  5. In this initial implementation, not all of Gooding's options have been incorporated. Generally these are strategems that may help in finding a solution in some difficult cases or may speed up convergence.
  6. Gooding IOD default values are valid for near earth orbits (HEO, GEO, LEO), but not necessarily for longer ranges. Consider a case with eccentricity = 0.91, the satellite at approx 50 Re range during tracking, with three observations spanning two to three days. Running IOD with default values will fail to converge, with error messages telling you to check various input data. Range 1 or 2 values of 40-60 Re , ConvergenceValue >= 1.e-005, NumericalPartialEpsilon <= 1.e-008, and HalleyNewtonLimit of 0.5 or 1 will converge in this case. AGI has not performed a comprehensive study of parameter settings for all orbits , but this result should illustrate the amount of change required.

Outputs

Running the method may result in zero solutions, one solution, or two or more solutions.

  1. Zero solutions - The method was unable to converge to any solution. Verify HalfRevEstimate, Range1Estimate, and Range3Estimate inputs. A different set of measurements may improve results.
  2. One solution - This is the best case. You can transfer the solution to the satellite and try Least Squares (or Filter).
  3. Two or more solutions - As you increase the number of half-revs, the chance of multiple solutions is greater and the number of solutions generally increases. Also, in space-based applications, one solution may be that of the tracking satellite. You can cycle through the different solutions by resetting the UseSolution parameter and rerunning the IOD method. Looking at the solution orbit in Keplerian elements may be helpful in determining the "good" solution. For each solution, you can transfer the satellite orbit and try Least Squares (or Filter).

To successfully transfer a solution state to a parent satellite, you must use the same central body for both the solution and the satellite. ODTK will check this and display an error in the Message Viewer if the central body is different for the two.

GNSSNavSolution Properties

For this method, the IOD solution uses either GNSS pseudo-range observations or CA/DF Nav Sol observations as inputs. You can break up the method of the solution into two steps. When using pseudo-range measurements, first compute S/C Position and Clock Phase estimates using an analytical NAV solution algorithm developed by Yang and Chen for several points around the time of interest. When using the Nav Sol measurements, you do not calculate the clock phase but instead take the position estimates directly from the measurements. The second step, regardless of measurement type, is to use LaGrange interpolation on the position estimates to compute the velocity estimates.

Ming Yang and Kuo-Hwa Chen, "Performance Assessment of a Noniterative Algorithm for GNSS Absolute Positioning", Proc. Nat'l Sci. Counc. ROC(A) Vol. 25, No. 2, 2001, pp. 102-106.

Isik, O.K.; Hong, J.; Petrunin, I.; Tsourdos, A. Integrity Analysis for GPS-Based Navigation of UAVs in Urban Environment. Robotics 2020, 9, 66. https://doi.org/10.3390/robotics9030066.

When using this method in conjunction with GNSS Pseudo-range measurements, it is necessary to have measurements from four satellites at considered measurement times, including at the solution epoch.

The following options are available for the GNSSNavSolution method:

GNSSNavSolution Properties
Property Description
SelectedReceiver Open the dropdown list to select a GNSSReceiver object attached to the same satellite as the current IOD object.
SolutionEpoch This is the epoch time of interest. It must be within one hour of an actual measurements time. ODTK resets the actual solution time to match an observation time closest to the requested SolutionEpoch.
GNSSObsType

Choose the measurement type for ODTK to use from the following:

  • SF L1 Pseudo-range will process all available GNSS L1/E1 single-frequency pseudo-range measurements.
  • DF L2_L1 Pseudo-range will process GNSS L1/L2 dual-frequency pseudo-measurements by combining available {P1, P2}, {L1 CA, L2 C}, or {L1 C, L2C} measurements. If both are available, {L1 CA, L2 C} will take precedence over {L1 C, L2C} unless you data-delimited it through the receiver measurement statistics or satellite measurement types properties.
  • DF L5_L1 Pseudo-range will process GNSS L1/L5 dual frequency measurements and/or Galileo dual-frequency E1/E5 measurements by combining them with one of these measurement types (as available): GNSS {L1 CA, L5}, {L1 C, L5}, Galileo {E1, E5a}, or {E1, E5b}.
  • CA Nav Sol – CA Nav Sol is superseded by SF Nav Sol.
  • DF Nav Sol will process dual-frequency Nav Sol measurements.
  • SF Nav Sol will process single-frequency Nav Sol measurements.
  • CA Pseudo-range
  • DF Pseudo-range
You cannot use singly differenced measurements.
LaGrangeOrder Specify the interpolation order to use for velocity computation.
Output - OrbitState Set the OrbitState field to Cartesian or Keplerian. When you run IOD, read-only fields display the orbit state and the satellite's epoch.
Output - ClockPhaseError The clock phase error is the difference between the GNSS receiver clock and the GNSS master clock. The clock phase is one of the elements of a GNSS navigation solution.

Output.MinNumberOfAvailableSatellites

and

Output.MaxNumberOfAvailableSatellites

These two properties are read-only. They provide the number of satellites that were available at the measurement times used in the IOD solution that had the smallest (MinNumberOfAvailableSatellites) and greatest (MaxNumberOfAvailableSatellites) number of satellites available. You can use these properties as diagnostic information to help determine whether or not the SolutionEpoch that you chose was able to provide a good IOD solution. Larger numbers of satellites are usually indicative of better IOD solutions, but geometric dilution of precision is the more important metric.

Output.MinGeometricDilutionOfPrecision

and

Output.MaxGeometricDilutionOfPrecision

These two properties are read-only properties. They provide the geometric dilution of precision at the measurement times used in the IOD solution that had the smallest (MinGeometricDilutionOfPrecision) and greatest (MaxGeometricDilutionOfPrecision) geometric dilution of precision. Lower values of these properties are indicative of better IOD solutions. According to Table 2 of Isik et al., values of geometric dilution of precision that are less than 1.0 are ideal, values between 1.0 and 2.0 are excellent, values between 2.0 and 5.0 are good, values between 5.0 and 10.0 are moderate, values between 10.0 and 20.0 are fair, and values greater than 20.0 are poor.
Output.DataArchive Set the "OutputStateHistory" to true to output an .iodrun state history file. Name the run file with the "Filename" property. The state history will contain one record with the output IOD orbit state at the IOD epoch time.

 

For practice in setting up and using the IOD object, see Exercise 2.1 in Getting Started with ODTK.