Setting up a Smoother

Top  Previous  Next

For information on the initial configuration of a Filter, see the Setting up a Kalman Filter, Setting up an Unscented Kalman Filter, or Setting up a Square Root Information Filter pages. This page discusses the configuration of a Smoother, which can be configured for any KalmanFilterOD, UnscentedKalmanFilterOD, or SquareRootInformationFilterOD object.

 

There are three smoothing algorithm options available when configuring the Kalman Filter "Smoother Type" property for the Extended and Unscented Kalman Filters:

 

Fixed Point

Fixed Lag

Fixed Lag - Full Span

 

In addition, there is another smoothing algorithm used for the Square Root Information Filter:

 

Square Root Information Filter

 

Once this initial setup is complete, continue configuring your OD system by:

 

Defining the A Priori States

Defining the Measurement Model

Defining Thrust Events

Defining the Properties to Estimate

Including Tracking Data

 

See also Using the Smoother on the Kalman Filter, Square Root Information Filter, and Unscented Kalman Filter page of the Performing State Estimation section.

 

 

Fixed Point


The Fixed Point algorithm used in FreeFlyer comes from S. Meditch, as documented in "Stochastic Optimal Linear Estimation and Control", New York: McGraw-Hill 1969. The Fixed Point algorithm solves for a "smoothed state" at the start of the Smoother data span. The start of the Smoother data span is equivalent to either the epoch of the first Observation processed by the Kalman Filter, or, if there are gaps in the observation data, then the epoch of the first observation following a gap of data as defined by the "Gap Duration for Reset" property.

 

When using the Fixed Point algorithm, the "smoothed state" is computed every time the Kalman Filter processes an Observation.

 

When configuring a Fixed Point smoother, you have the ability to configure the data reset gap duration, as shown in the image below.

 

 

You can also configure a Fixed Point smoother through FreeFlyer script. The syntax example below shows how to set these options.

 

KalmanFilterOD1.UseSmoother = 1;

 

KalmanFilterOD1.Smoother.SmootherType = 0; // Fixed Point

KalmanFilterOD1.Smoother.SmootherResetGapDuration = TIMESPAN(15 minutes);

 

 

Fixed Lag


The Fixed Lag algorithm used in FreeFlyer comes from Rauch, Tung, and Striebel, as documented in "Maximum Likelihood Estimates of Linear Dynamic Systems", AIAA J3., 3: 1445 (1965). The Fixed Lag algorithm solves for a "smoothed state" at the start of the Smoother data span, where the data span slides in time as more observations are processed. For Fixed Lag, the start of the data span is determined by the latest epoch of:

 

The epoch of the first Observation processed by the Kalman Filter

The epoch of the first observation following a gap of data as defined by the "Gap Duration for Reset" property

The epoch of the observation processed n number of points in the past, where n is defined by the "Number of Points in Interval" property.

 

Until the Smoother data buffer is full (ie. until the third case above is satisfied), a Fixed Point algorithm is used to compute the "smoothed state".

 

Also, since the "Fixed Lag" algorithm is more numerically intensive, the "smoothed state" is only computed when the user manually calls the Smoother.CalculateSmoothedState() method (as is seen in the Using the Smoother section on the Kalman Filter page of Performing State Estimation).

 

When configuring a Fixed Lag smoother, you have the ability to configure the following properties, as shown in the image below:

 

Reset gap duration

Data window - allows you to specify the number of points in the interval, as shown in the image below

 

 

You can also configure a Fixed Lag smoother through FreeFlyer script. The syntax example below shows how to set these options.

 

KalmanFilterOD1.UseSmoother = 1;

 

KalmanFilterOD1.Smoother.SmootherType = 1; // Fixed Lag

KalmanFilterOD1.Smoother.SmootherResetGapDuration = TIMESPAN(15 minutes);

KalmanFilterOD1.Smoother.NumberOfPointsInInterval = 20;

 

 

Fixed Lag - Full Span


The Fixed Lag - Full Span algorithm used in FreeFlyer is the same as the Fixed Lag algorithm, from Rauch, Tung, and Striebel as documented in "Maximum Likelihood Estimates of Linear Dynamic Systems", AIAA J3., 3: 1445 (1965). The Fixed Lag - Full Span algorithm solves for a "smoothed state" at each observation epoch during the data span using all processed observation data. The start of the data span is the epoch of the first Observation processed by the Kalman Filter.

 

Also, since the "Fixed Lag" algorithm is more numerically intensive, the "smoothed state" is only computed when the user manually calls the Smoother.CalculateSmoothedState() method (as is seen in the Using the Smoother section on the Kalman Filter page of Performing State Estimation).

 

The Fixed Lag - Full Span algorithm can be chosen for the smoother as shown in the image below.

 

 

You can also configure a Fixed Lag - Full Span smoother through FreeFlyer script. The syntax example below shows how to do this.

 

KalmanFilterOD1.UseSmoother = 1;

 

KalmanFilterOD1.Smoother.SmootherType = 2; // Fixed Lag - Full Span

 

 

Square Root Information Smoother


The algorithm used for square root information smoothing in FreeFlyer comes from Gerald J. Bierman, as documented in "Factorization Methods for Discrete Sequential Estimation", Dover Publications, Inc, 1977. The algorithm solves for a "smoothed state" at each observation epoch during the data span using all processed observation data. Functionally it works very similarly to the Fixed Lag - Full Span Kalman smoother.

 

Since this algorithm is numerically intensive the "smoothed state" is only computed when the user manually calls the Smoother.CalculateSmoothedState() method (as is seen in the Using the Smoother section on the Kalman Filter, Square Root Information Filter, and Unscented Kalman Filter page of the Performing State Estimation guide).

 

The Square Root Information Smoother is enabled as shown in the image below.

 

 

You can also configure Square Root Information Smoother through FreeFlyer script. The syntax example below shows how to do this.

 

// Enable the smoother:

SquareRootInformationFilterOD1.UseSmoother = 1;

 

 

See Also


KalmanSmoother Properties and Methods

SquareRootInformationSmoother Properties and Methods

Using the Smoother