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
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
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
-
void updateState(uint64_t currentSimNanos) final#