Initial Orbit Determination
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.
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:
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:
|
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:
|
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
- 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.
- 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.
- 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.
- The defaults for the rest of the inputs are from Gooding and will generally apply. See the detailed definitions in the above table.
- 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.
- 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.
- 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.
- One solution - This is the best case. You can transfer the solution to the satellite and try Least Squares (or Filter).
- 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:
|
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.