Custom Observations

Top  Previous  Next

Custom observations provide a script-level interface via the CustomObservation object that allows the user to leverage FreeFlyer's orbit determination capability and inject their own unique measurement model to be used by FreeFlyer's estimators. All estimators support the processing of custom observations. To run orbit determination using custom observations, two separate parts of the measurement model must be computed by the user:

 

Both the pre- and post-update computed values

The measurement partial derivatives (not required for the unscented kalman filter)

 

The computed value is the predicted value of the measurement based on the propagated states, and is set with the SetComputedValue() method. The partial derivatives from the matrix which maps the measurement information to the estimated state is set by the SetPartialDerivatives() method(1).

 

Uniform Gravity Field Trajectory

Uniform Gravity Field Trajectory

 

 

Sample Calculations


From the image above, the range and range-rate can be computed with the following expressions and set as the SetComputedValues(), where Xs, Ys, Xdots, and Ydots are the position and velocity components, respectively, of the tracking station.

 

 

This can be configured in script as follows:

 

// Define Custom Observations

CustomObservation range_rangeRate;

 

range_rangeRate.AddMeasurement("Range");

range_rangeRate.AddMeasurement("RangeRate");

 

// Set Computed Value

 

range_rangerate.Measurement[0].SetComputedValue(range_value);

range_rangerate.Measurement[0].SetComputedValue(rangeRate_value);

 

// Define Custom Range and Range-Rate biases for the Ground Station

GroundStation.Antenna.OD.AddCustomObservation(“Range-RangeRate”);

GroundStation.Antenna.OD.CustomObservations[0].AddMeasurement(“Range”);

GroundStation.Antenna.OD.CustomObservations[1].AddMeasurement(“RangeRate”);

 

GroundStation.Antenna.OD.CustomObservations[0].Measurements[0].Z.Bias.Value = 0.005 // 5 m in Z ;

GroundStation.Antenna.OD.CustomObservations[0].Measurements[0].VZ.Bias.Value = 0.000005 // .5 cm/s in Vz ;

 

range_rangeRate.SetComputedValue('Range', 'Pre-Update' range_value);

range_rangeRate.SetComputedValue('RangeRate', 'Pre-Update', rangeRate_value); 

 

The matrix is a mapping matrix that relates the observation deviation vector to the state deviation vector, and can be set with the SetPartialDerivatives() method.

 

This can be configured in script as follows:

 

// Set Partials

CustomObservation.SetPartialDerivatives('Range', range_partials_matrix);

 

References:

1."Statistical Orbit Determination," Born, G., Schutz B., and Tapley B.

 

 

See Also


CustomObservations Properties and Methods