kalmanFilter#

Executive Summary#

This virtual class provides an interface for all Kalman Filters. Modules which inherit from it will benefit from having the core logic of a sequential filter

Virtual and Private method descriptors#

The following table lists all the class methods and their function

Interface methods which remain private#

Method Name

Method Function

Protected or Private

Virtual or not

updateState

Loop through measurements and update filter states according to time

public

final

timeUpdate

filter time update

protected

virtual

measurementUpdate

filter measurement update in the presence of measurements

protected

virtual

computeResiduals

compute filter post fit residuals

protected

virtual

customReset

perform addition reset duties in child class

protected

virtual, optional

readFilterMeasurements

read the specific measurements in a child class

protected

virtual, needs to be populated

writeOutputMessages

write the specific measurements in a child class

protected

virtual, needs to be populated

orderMeasurementsChronologically

Runge-Kutta 4 integrator if needed for propagation

private

non-virtual

Module assumptions and limitations#

The module inherits all assumptions made while implementing a Kalman filter:
  • Observability considerations

  • Gaussian covariances

  • Linearity limits

  • and more

Otherwise, the limitations are governed by the measurement model and dynamics models relative to the required performance.

User Guide#

This section lists all the setters and getters that are defined by the interface

Interface methods which remain private#

Method Name

Method Function

Necessity

set/getInitialPosition

filter initial position component of the states

optional

set/getInitialVelocity

filter initial velocity component of the states

optional

set/getInitialAcceleration

filter initial acceleration component of the states

optional

set/getInitialBias

filter initial bias component of the states

optional

set/getInitialConsider

filter initial consider component of the states

optional

set/getInitialCovariance

filter initial covariance (square matrix size of state)

necessary

set/getProcessNoise

filter process noise value (square matrix size of state)

necessary

set/getUnitConversionFromSItoState

conversion from SI to internal filter units

optional

set/getMeasurementNoiseScale

filter measurement noise scale factor

optional

setFilterDynamics

provide the dynamics class to the filter

necessary

class KalmanFilter : public SysModel#

Kalman Filter interface.

Subclassed by EkfInterface, SRukfInterface

Public Functions

void updateState(uint64_t currentSimNanos) final#

Take the relative position measurements and output an estimate of the spacecraft states in the inertial frame.

Parameters:

currentSimNanos – The clock time at which the function was called (nanoseconds)

Returns:

void

void setInitialPosition(const Eigen::VectorXd &initialPositionInput)#

Set the filter initial state position vector

Parameters:

Eigen::VectorXd – initial position vector

Returns:

void

std::optional<Eigen::VectorXd> getInitialPosition() const#

Get the filter initial state position vector

Returns:

std::optional<Eigen::VectorXd> initial position vector

void setInitialVelocity(const Eigen::VectorXd &initialVelocityInput)#

Set the filter initial state velocity vector

Parameters:

Eigen::VectorXd – initial velocity vector

Returns:

void

std::optional<Eigen::VectorXd> getInitialVelocity() const#

Get the filter initial state velocity vector

Returns:

std::optional<Eigen::VectorXd> initial velocity vector

void setInitialAcceleration(const Eigen::VectorXd &initialAccelerationInput)#

Set the filter initial state acceleration vector

Parameters:

Eigen::VectorXd – initial acceleration vector

Returns:

void

std::optional<Eigen::VectorXd> getInitialAcceleration() const#

Get the filter initial state acceleration vector

Returns:

std::optional<Eigen::VectorXd> initial acceleration vector

void setInitialBias(const Eigen::VectorXd &initialBiasInput)#

Set the filter initial state bias vector

Parameters:

Eigen::VectorXd – initial bias vector

Returns:

void

std::optional<Eigen::VectorXd> getInitialBias() const#

Get the filter initial state bias vector

Returns:

std::optional<Eigen::VectorXd> initial bias vector

void setInitialConsiderParameters(const Eigen::VectorXd &initialConsiderInput)#

Set the filter initial state consider parameter vector

Parameters:

Eigen::VectorXd – initial consider parameter vector

Returns:

void

std::optional<Eigen::VectorXd> getInitialConsiderParameters() const#

Get the filter initial state consider parameter vector

Returns:

std::optional<Eigen::VectorXd> initial consider parameter vector

void setInitialCovariance(const Eigen::MatrixXd &initialCovariance)#

Set the filter initial state covariance

Parameters:

Eigen::MatrixXd – initialCovarianceInput

Returns:

void

Eigen::MatrixXd getInitialCovariance() const#

Get the filter initial state covariance

Returns:

Eigen::MatrixXd covarInitial

void setProcessNoise(const Eigen::MatrixXd &processNoise)#

Set the filter process noise

Parameters:

Eigen::MatrixXd – processNoiseInput

Returns:

void

Eigen::MatrixXd getProcessNoise() const#

Get the filter process noise

Returns:

Eigen::MatrixXd processNoise

void setUnitConversionFromSItoState(double conversion)#

Set a unit conversion factor, for instance if desirable to solve for a state in km in the filter, but Basilisk’s outside facing interface is in SI

Parameters:

double – conversion

double getUnitConversionFromSItoState() const#

Get a unit conversion factor, for instance if desirable to solve for a state in km in the filter, but Basilisk’s outside facing interface is in SI

Returns:

double unitConversion

void setMeasurementNoiseScale(double measurementNoiseScale)#

Set the filter measurement noise scale factor if desirable

Parameters:

double – measurementNoiseScale

Returns:

void

double getMeasurementNoiseScale() const#

Get the filter measurement noise scale factor

Returns:

double measurementNoiseScale

void setFilterDynamics(const std::function<const FilterStateVector(double, const FilterStateVector&)> &dynamicsPropagator)#

Set the filter equations of motion of the state (X_dot = f(t, X))

Parameters:

Eigen::VectorXd – initialStateInput

Returns:

void