The Smoother

The smoother object is represented in the Browser and in the ODTK toolbar by the icon. You can perform smoothing over the results of one or more filter runs. For smoothing over two or more filter runs, you must give unique names to the .rough files from the filter runs so that ODTK doesn't overwrite the data.

You can view and edit the following smoother settings in the Object Properties window:

To understand some of the definitions in the following table, it is essential to bear in mind that the smoother runs backward in time, so that typically one would start smoothing at the latest filter time in the enabled .rough file(s) and smooth backward to some time. For further discussion, see the section following the table.

Smoother Properties
Property Description
Input - Files Click this to launch a dialog box that enables you to add one or more .rough files for the smoother to process.
Input - Remove This option enables you to specify whether or not you want to delete all .rough files in the Files list after the smoother run is complete. If you select this option, ODTK will delete the .rough files regardless of the Enabled flag setting associated with each rough file.
ProcessControl - StateTransitionMode Select between:
  • Nonlinear: Smoothed estimates are transitioned backwards in time using the full non-linear model. Most notably, the smoother numerically integrates orbit estimates in reverse time. This is the heritage mode for ODTK versions prior to v6.1.2.
  • Linear: Smoothed estimates are transitioned backwards in time using the linear state error transition function computed during filtering. This method can be significantly more computationally efficient for cases where the numerical integration of the orbit state requires the majority of the time in the smoothing process.
ProcessControl - StartMode Select between:
  • LatestFilterTime: The smoother starts at the latest filter time based on the enabled .rough file(s).
  • StartTime: Enables you to enter the start time, which must fall within the time span covered by the .rough file(s).
ProcessControl - StartTime If you set StartMode (above) to StartTime, enter the start time here. It must fall within the time span covered by the .rough file(s). The default is based on the scenario's start time. If you set StartMode to LatestFilterTime, this field is a read-only display of the latest filter time.
ProcessControl - StopMode Select among:
  • EarliestFilterTime: This stops the smoother at the earliest filter time, based on the enabled .rough file(s).
  • StopTime: This enables you to enter a stop time, which must fall within the time span covered by the .rough file(s).
  • TimeSpan: Enter the time interval for the smoother to run. Depending on the selection made for StartMode (above), the interval will begin with the selected StartTime or the latest filter time, based on the enabled .rough file(s).
ProcessControl - StopTime If you set StopMode (above) to StopTime, enter a stop time here. It must fall within the time span covered by the .rough file(s). The default is based on the scenario's stop time. If you set StopMode to EarliestFilterTime, this field is a read-only display of the earliest filter time. If you set StopMode to TimeSpan, this field does not display.
ProcessControl - TimeSpan If ouy set StopMode (above) to TimeSpan, enter the time interval for the smoother to run. Depending on the selection made for StartMode (above), the interval will begin with the selected StartTime or the latest filter time, based on the enabled .rough file(s). If StopMode is not set to TimeSpan, this field does not display.
ProcessControl - OutputLag Enter a time value representing the output lag. The latest time in the smoothed output will be at the process start time (specific time or last data in the .rough file) minus the output lag.
ProcessControl - OrbitTypeDivergenceCheck Enables a divergence monitoring check that stops smoother processing if the smoother and filter orbit states represent different types of orbits (one elliptical orbit and one hyperbolic orbit). By default, this check is enabled. Certain situations, such as a transition between a closed orbit and an escape trajectory, will necessitate the disabling of this check for smoothing operations.
GlobalAtmosphericDensityEstimation
(Simulator only)
Controls for simulating deviations in selected atmospheric density model parameters.
Output - DataArchive Data Archive options are available.
Output - STKEphemeris

Configure the STKEphemeris attribute to write the smoother output to a file in your Ephemeris directory during the smoothing process. The file is assigned a default name based on the name of the satellite:

Sat_<SATELLITE NAME>_Smooth_<SMOOTHER REF TIME>.ext

where SMOOTHER REF TIME is one of the following:

  • ProcessStart - smoother stop time
  • ProcessStop - smoother start time
  • PredictStart - smoother start time
  • PredictStop - prediction end time

And where the file extension is one of the following:

  • e - when using STK Ephemeris formt
  • oem - when using CCSDS 502 format

The smoother ephemeris files may also contain covariance information for position or position and velocity.

Smoother start time > smoother stop time, while ProcessStart < ProcessStop.

If you set Predict.Generate to false, PredictStop is the filter stop time.

Output - SP3Ephemeris

This only applies to scenarios containing one or more Constellation objects, where Constellation.SVEstimated states include the ephemeris and clock.

Use the SP3Ephemeris parameter to optionally reformat the output ephemeris and clock data into a SP3 file (https://files.igs.org/pub/data/format/sp3_docu.txt). One file is generated for each Constellation object for which ephemeris and clocks were estimated.

You can generate the SP3 data over:

  1. The process interval only, or
  2. The predict interval only, or
  3. The process and predict interval

Data over the process interval requires that ODTK generate STKEphemeris over the process interval and add clock data to the process run file.

Data over the predict interval requires that the ODTK generate STKEphemeris over the predict interval.

The granularity for the STKEphemeris may be different from the SP3 ephemeris.

The output file name is in the form:

<GNSS Name>_<Process Type>_yyymmdd_hhmmss.sp3

where

<Process_Type> = “Truth”| “Filter| “Smoother”
yyymmdd_hhmmss refers to the start time of the SP3 file in Scenario.Units.DateFormat system

An example filename is:

GPS_Filter_20120601_120000.sp3
Output - FilterDifferencingControls

Controls whether ODTK will generate a Filter - Smoother State Difference run file (.difrun) during Smoother processing or not.

The generation of this file does not require that ODTK generate corresponding filter run file(s) or a smoother run file. Filter data is extracted from the rough file(s) and the Smoother data is saved from smoother computations.

  • Generate = true means that ODTK will generate the difference file.
  • Filename is the name of the output state difference run file. This attribute is hidden unless Generate = true.
  • SaveCrossCorrelations is an option whether or not to store the full covariances (true) in the .difrun file or only the covariance block diagonals (false). The blocks are defined as for the Output.DataArchive.SaveCrossCorrelations property. The full covariances are only needed in the .difrun file to support certain URE calculations. If you do not need URE calculations, then setting this option to false will save storage space as well as speed up reporting and graphing time.
Output - Debug See below.

More on smoother properties

The following is intended to clarify the relationships among OutputLag, IntervalLength, and the start and stop options defined in the above table.

The initial smoothed state is the filtered state at StartTime, which, if you do not specify it, is the latest filter time in the enabled .rough file(s). As the smoother runs (backward in time), if the filter has processed measurements, the smoother will smooth the ephemeris discontinuities based on state corrections and fold the measurement covariance into the remaining smoother span. Another way to say this is that once the smoothed data is initialized to the filtered data and begins running backwards, there is no improvement in smoothed data until the smoother processes a measurement update.

For example, suppose you ran the filter for 24 hours, and the last measurement pass ended at 22:30. When you run the smoother, the smoothed results will be identical from 24:00 to 22:30. If you set OutputLag to 0, you will see that the smoothed state and covariance are the same over this region. If you want to produce output state and covariance only after the smoother has made improvements, then you might set your OutputLag to 2 hours, or 4 hours, or whatever you have determined is a good time based on the mission.

To illustrate the above, suppose that you have two back-to-back 24-hour .rough files, and that you want to get smoothed data over the first 36 hours, running the smoother with the following settings:

StartTime = day 2 24:00
OutputLag = 6 hours

With these settings, the smoother will open the day 2 .roughfile, begin processing at 24:00 backwards to 18:00 and, at 18:00, start producing output results, and run to completion at 00:00 on day 1.

When you use two or more .rough files, there must not be any gaps in time between the file contents, and the state structure must match between the files. The central bodies and motion models (Orbiter or Lander) must also be the same for every satellite in the scenario. This is typically not a problem unless you select the wrong restart file.

To create two or more .rough files, you can run the filter in restart mode and create a unique .rough file name for each restart run.

Debug

The Debug attributes control whether or not ODTK will dump informational internal smoother data to a text file. Such a file can become quite large very quickly depending on state size and the number of steps taken during a smoother run.

Debug.Eigenvalues

The Eigenvalues attribute enables logging of determinants and eigenvalues of smoothed covariance matrices. The matrix names can be related directly to the smoother equations in Chapter 6 of ODTK Orbit Determination: Theorems & Equations.

To write eigenvalues and determinants of each smoother covariance matrix to a file, set the Generate attribute to true and specify a Filename.

A sample of an eigenvalue text file (generated during a filter run) accompanies this help system. The contents are the same for a smoother, except that the values generated are for the smoother matrices rather than the filter matrices.