Flexible State Space

ODTK provides a set of capabilities designed to help the analyst make changes to an operational scenario at a Restart time, without having to reinitialize the filter. These actions change the dimension and content of the Filter state space, and so are called Flexible State Space options. Several use cases define the Flexible State Space options that ODTK supports.

For further information on how Flexible State Space options work, see the accompanying PDF document.

Assume that all the following are true:

  • A multisatellite simultaneous filter and smoother have been running.
  • A set of restart records exists for the filter.
  • The analyst wishes to modify the filter.

Then the analyst may want to make any of the following changes to the scenario without having to reinitialize the filter:

  1. Add a new satellite (a new launch for the constellation)
  2. Delete a satellite (satellite deorbited or otherwise retired)
  3. Replace a satellite position and velocity (Maneuver data for the satellite that is maneuvered is not available, but the satellite operator can provide a new postmaneuver state vector.)
  4. Add a ground station (new terminal available)
  5. Delete a ground station (retired)
  6. Change the solution vector (now solve for SRP/Drag/Bias or turn off the solution of SRP/Drag/Bias)
  7. Change the state statistics (the half-life or sigma on SRP/Drag/Bias/Transponder/etc.)
  8. Add a measurement type to the filter with new statistics
  9. Delete a measurement type altogether
  10. Add new finite maneuver events
  11. Remove obsolete finite maneuver events
  12. Change the constant bias and corresponding bias sigma for facilities or transponders

All of these capabilities are fairly easy to provide in a Filter application. You simply drop states from or add states to state space, and if a state value is changed, the cross-correlations to other states are zeroed. The challenge is to maintain the integrity of the associated processes, such as Restart File, Smoother, and Reports and Graphs in the presence of a Filter state space that changes in size and content; otherwise the covariance will suddenly have zero cross correlations. Flexible State Space events can only occur at a restart time.

In general, the analyst requests these actions by:

  • Editing the scenario object properties in the white panels
  • Restarting the filter at a selected restart time

You can exercise two or more flexible state space actions at any one time; however, you cannot add and drop the same object at the same restart time.

ODTK actions

  1. The filter determines the new state content from the object properties.
  2. The filter creates a new *.restart file based on the new state content (see FilterLog, below).
  3. The filter creates a log file entry to record the Flexible State Space event.
  4. The filter saves object properties into the *.rough file so that the smoother can recover the process noise statistics unique to that *.rough file without burdening the scenario with archiving that information. Each *.rough file contains a time segment over which the state space size is fixed.
  5. The smoother reads one or more rough files of variable lengths and end times and accounts for all changes in state space in producing a smoothed ephemeris.

The *.rough file does not archive model information for objects (e.g., force models for satellites); thus the smoother relies on the scenario to define these model choices. For objects removed from state space, do not remove them from the scenario until they are older than the earliest smoother time.

FilterLog file

ODTK provides a FilterLog file. ODTK writes one entry to this file each time you run the filter containing "Current Time,  ScenarioName.FilterName  StartMode  Start Time  # of states". If you add, drop, or reinitialize states, then the filter writes other lines for those states. The name of the log file is of the form FilterLog_(filtername)_(scenarioname).txt, and the directory into which it is written is the same as that for the Restart file. If you rename a scenario, then ODTK generates a new  FilterLog file, with entries copied from the FilterLog of the old scenario.

Running in initial mode does not automatically clear the file. You can clear the file manually or through the Filter.Output.ClearMsgLog attribute.

You should be aware of the file manipulation process, because it influences the data that you might want to archive. For example:

  • If a smoother operation spans several flexible state space events, you must save all of the *.rough files relevant to the span and input them to the smoother.
  • If you maintain an archive to support historical reconstruction and that archive includes *.restart files, then you should save the *.restart files before editing the scenario.

The following table identifies the objects to edit to define a Flexible State Space event:

Defining a Flexible State Space Event
Task This is a user action.
Add satellite Adds a satellite to ODTK.Scenario1.Filter1.SatelliteList.
Drop satellite Deletes a satellite from ODTK.Scenario1.Filter1.SatelliteList.
Replace satellite state Runs the utility SatelliteReplacementTool.htm.
Add a ground station Adds a facility to ODTK.Scenario1.Filter1.TrackerList.
Delete a ground station Deletes a facility from ODTK.Scenario1.Filter1.TrackerList.
Change solution vector Changes the Estimate flag for corresponding quantity.
Change state statistics

First enable the Filter.Restart.StochasticModelUpdates flag to expose the lists of state parameters modeled using a stochastic sequence. These state parameters are grouped by their associated stochastic sequence model. Parameters modeled using the scalar Gauss-Markov model appear in the Restart.StochasticModelUpdates.GaussMarkovList. Parameters modeled using the scalar Random Walk model appear in the Restart.StochasticModelUpdates.RandomWalkList. Parameters modeled using the scalar Vasicek model appear in the Restart.StochasticModelUpdates.VasicekList.

Select the appropriate list and then change statistics for the state of interest.

Add measurement type Adds a type to ODTK.Scenario1.Filter1.MeasTypes (assuming it is defined elsewhere in the scenario).
Delete measurement type Deletes a type from ODTK.Scenario1.Filter1.MeasTypes.
Add finite maneuver Adds a maneuver to ODTK.Scenario1.Satellite1.ForceModel.FiniteManeuvers.
Delete finite maneuver Deletes a maneuver from ODTK.Scenario1.Satellite1.ForceModel.FiniteManeuvers.
Change constant bias & bias sigma This is similar to the "Change state statistics" task. Enable the StochasticModelUpdates flag, select the appropriate list, and then change constant bias, sigma, or both for the state of interest.