0.2.0
Loading...
Searching...
No Matches
NAV::SPP::KalmanFilter Class Reference

The Spp Kalman Filter related options. More...

Public Member Functions

void addInterFrequencyBias (const Frequency &freq)
 Adds the frequency as inter-frequency bias state.
 
KeyedMatrixXd< States::StateKeyTypes, States::StateKeyTypescalcProcessNoiseMatrixGroves (double dt, const Eigen::Vector3d &lla_pos, const std::string &nameId) const
 Calculates the process noise matrix Q.
 
void deinitialize ()
 Deinitialize the KF (can be used to reinitialize the Filter when results seem strange)
 
const KeyedMatrixXd< States::StateKeyTypes, States::StateKeyTypes > & getErrorCovarianceMatrix () const
 Returns the Error covariance matrix 𝐏
 
const KeyedVectorXd< States::StateKeyTypes > & getState () const
 Returns the State vector x̂
 
const std::vector< SPP::States::StateKeyTypes > & getStateKeys () const
 Get the States in the Kalman Filter.
 
void initialize (const KeyedVectorXd< States::StateKeyTypes > &states, const KeyedMatrixXd< States::StateKeyTypes, States::StateKeyTypes > &variance)
 Initialize the filter.
 
bool isInitialized () const
 Checks wether the Kalman filter is initialized.
 
void predict (const double &dt, const Eigen::Vector3d &lla_pos, const std::string &nameId)
 Does the Kalman Filter prediction.
 
void reset ()
 Resets the filter.
 
void setClockBiasErrorCovariance (double clkPhaseDrift)
 Set the P matrix entry for the covariance of the clock phase drift.
 
bool ShowGuiWidgets (const char *id, bool useDoppler, bool multiConstellation, bool estimateInterFrequencyBiases, float itemWidth, float unitWidth)
 Shows the GUI input to select the options.
 
void update (const std::vector< Meas::MeasKeyTypes > &measKeys, const KeyedMatrixXd< Meas::MeasKeyTypes, States::StateKeyTypes > &H, const KeyedMatrixXd< Meas::MeasKeyTypes, Meas::MeasKeyTypes > &R, const KeyedVectorXd< Meas::MeasKeyTypes > &dz, const std::string &nameId)
 Does the Kalman Filter update.
 
SatelliteSystem updateInterSystemTimeDifferences (const std::set< SatelliteSystem > &usedSatSystems, SatelliteSystem oldRefSys, SatelliteSystem newRefSys, const std::string &nameId)
 Adds the inter system time difference bias and drift.
 

Detailed Description

The Spp Kalman Filter related options.

Member Function Documentation

◆ addInterFrequencyBias()

void NAV::SPP::KalmanFilter::addInterFrequencyBias ( const Frequency & freq)

Adds the frequency as inter-frequency bias state.

Parameters
[in]freqFrequency to estimate the inter-frequency bias for

◆ calcProcessNoiseMatrixGroves()

KeyedMatrixXd< States::StateKeyTypes, States::StateKeyTypes > NAV::SPP::KalmanFilter::calcProcessNoiseMatrixGroves ( double dt,
const Eigen::Vector3d & lla_pos,
const std::string & nameId ) const

Calculates the process noise matrix Q.

Parameters
[in]dtTime step [s]
[in]lla_posPosition in Latitude, Longitude, Altitude [rad, rad, m]
[in]nameIdName and id of the node calling this (only used for logging purposes)
Note
See [17] Groves, ch. 9.4.2.2, eq. 9.152, p. 417

◆ initialize()

void NAV::SPP::KalmanFilter::initialize ( const KeyedVectorXd< States::StateKeyTypes > & states,
const KeyedMatrixXd< States::StateKeyTypes, States::StateKeyTypes > & variance )

Initialize the filter.

Parameters
statesStates to initialize with
varianceVariance of the state

◆ predict()

void NAV::SPP::KalmanFilter::predict ( const double & dt,
const Eigen::Vector3d & lla_pos,
const std::string & nameId )

Does the Kalman Filter prediction.

Parameters
[in]dtTime step [s]
[in]lla_posPosition in Latitude, Longitude, Altitude [rad, rad, m]
[in]nameIdName and id of the node calling this (only used for logging purposes)

◆ setClockBiasErrorCovariance()

void NAV::SPP::KalmanFilter::setClockBiasErrorCovariance ( double clkPhaseDrift)

Set the P matrix entry for the covariance of the clock phase drift.

Parameters
clkPhaseDriftClock phase drift variance in [m^2 / s]

◆ ShowGuiWidgets()

bool NAV::SPP::KalmanFilter::ShowGuiWidgets ( const char * id,
bool useDoppler,
bool multiConstellation,
bool estimateInterFrequencyBiases,
float itemWidth,
float unitWidth )

Shows the GUI input to select the options.

Parameters
[in]idUnique id for ImGui.
[in]useDopplerWhether to use doppler measurements
[in]multiConstellationWhether to use multiple constellations
[in]estimateInterFrequencyBiasesWhether to use estimate inter frequency biases
[in]itemWidthWidth of the widgets
[in]unitWidthWidth on unit inputs
Returns
True when something was changed

◆ update()

void NAV::SPP::KalmanFilter::update ( const std::vector< Meas::MeasKeyTypes > & measKeys,
const KeyedMatrixXd< Meas::MeasKeyTypes, States::StateKeyTypes > & H,
const KeyedMatrixXd< Meas::MeasKeyTypes, Meas::MeasKeyTypes > & R,
const KeyedVectorXd< Meas::MeasKeyTypes > & dz,
const std::string & nameId )

Does the Kalman Filter update.

Parameters
[in]measKeysMeasurement keys
[in]HMeasurement sensitivity matrix 𝐇
[in]RMeasurement noise covariance matrix 𝐑
[in]dzMeasurement innovation 𝜹𝐳
[in]nameIdName and id of the node calling this (only used for logging purposes)

◆ updateInterSystemTimeDifferences()

SatelliteSystem NAV::SPP::KalmanFilter::updateInterSystemTimeDifferences ( const std::set< SatelliteSystem > & usedSatSystems,
SatelliteSystem oldRefSys,
SatelliteSystem newRefSys,
const std::string & nameId )

Adds the inter system time difference bias and drift.

Parameters
[in]usedSatSystemsUsed Satellite systems this epoch
[in]oldRefSysOld Satellite time reference system
[in]newRefSysNew Satellite time reference system
[in]nameIdName and id of the node calling this (only used for logging purposes)
Returns
The reference system which was selected

The documentation for this class was generated from the following file: