Description

This module implements an Extended Kalman Filter (EKF) that accepts inputs from a constellation of Coarse Sun Sensors to estimate a sun heading based on sequential measurements through time. This method estimates both the sun’s heading and its rate of change. In the event of no CSS measurements (e.g. eclipse) the previous solution is used to estimate the current state of the sun. The quality of this solution will quickly degrade and a reset command can be sent to the state estimation software if desired.


Example Use Cases

  • Closed-Loop ADCS Sun Pointing: Estimate sun heading based on CSS measurements as an input into an ADCS that requires knowledge of the sun’s location e.g. sun pointing mode.

Module Implementation

Dynamics Model

This filter estimates the state of the sunline vector and its rate of change. This may be written as:

Here is the sunline vector state, is the sunline vector’s rate of change with time and is the state vector, which is a vector composed of the sunline state and sunline rate. Throughout the following, the * refers to a reference state. We must now define the dynamics function to propagate the sunline state in the filter. In the case of this filter, where is a measurement made by a coarse sun sense, we must remove an unobservable rotation about the axis [1]. This can be done by projecting the states along this axis and subtracting them, such that [1]:

The dynamics matrix is then given by:

Filter Model

In this model, the only measurements () used are from a coarse sun sensor, where the (ideal) measurement is simply the dot product between the sunline heading and the normal of the sensor i.e. the measurement of the ith sensor can be written as . Given that the measurement matrix the measurement matrix simply becomes a matrix where each row is formed from the sensor normals where the sensor reading is greater than a minimum threshold value.

Filter Algorithm

Initialization

This can be done at any time during a simulation and can be used to reset the filter as needed. The initial time must be set. This is important to calculate the internal timestep as the module uses the time between input message updates and the current clock time to propagate the internal sunline state. This means the software may be called out of sync with the dynamics step. The initial reference state , state error and covariance must also be set.

Time Update

At some time the update filter method is called.

  • Propagate State: Using with , compute
  • Update the dynamic matrix: Compute the new dynamics matrix using
  • Compute the State Transition Matrix () : with

This gives and

Observation Update

If valid measurements are found, compute the new observation vector, observation state matrix and Kalman Gain matrix [2]

  • Compute Observations: Compare the observation () to the observation model, giving
  • Compute the observation matrix
  • Compute the Kalman Gain:

Here is the measurement noise matrix.

Measurement Update

In the case of a large covariance, defined by a user threshold, the filter applies a linear Kalman Filter to provide faster convergence. Otherwise, an Extended Kalman Filter method is applied. See [2] for a more detailed description of Kalman Filters and their application to dynamic systems.

Linear Update:

  • Update state error:
  • Update Covariance: (Using Joseph form [1])

EKF Update

  • Update state error:
  • Update reference state:
  • Update Covariance: (Using Joseph form [1])

Assumptions/Limitations

  • The assumed CSS measurement model maps to a perfect cosine behaviour, while in reality (and modelled behaviour) CSS measurements are modelled as a modified cosine. This will create minor errors in heading estimation that could be optimized with a more refined measurement model.

References

[1] O’Keefe, Stephen A., and Hanspeter Schaub. “Sun-direction estimation using a partially underdetermined set of coarse sun sensors.” The Journal of the Astronautical Sciences 61 (2014): 85-106.

[2] Crassidis, J.L., Junkins, J.L.: Optimal Estimation of Dynamic Systems. Boca Raton, FL (2004)].