OSVR-Core
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
osvr::kalman::CorrectionInProgress< StateType, MeasurementType > Struct Template Reference

Public Member Functions

 CorrectionInProgress (StateType &state, MeasurementType &meas, types::SquareMatrix< n > const &P_, types::Matrix< n, m > const &PHt_, types::SquareMatrix< m > const &S)
 
bool finishCorrection (bool cancelIfNotFinite=true)
 That's as far as we go here before you choose to continue. More...
 

Public Attributes

types::SquareMatrix< nP
 State error covariance.
 
types::Matrix< n, mPHt
 The kalman gain stuff to not invert (called P12 in TAG)
 
Eigen::LDLT< types::SquareMatrix< m > > denom
 Decomposition of S. More...
 
types::Vector< mdeltaz
 Measurement residual/delta z/innovation.
 
types::Vector< nstateCorrection
 Corresponding state change to apply.
 
bool stateCorrectionFinite
 Is the state correction free of NaNs and +- infs?
 

Static Public Attributes

static const types::DimensionType m
 Dimension of measurement. More...
 
static const types::DimensionType n
 Dimension of state. More...
 

Member Function Documentation

§ finishCorrection()

template<typename StateType, typename MeasurementType>
bool osvr::kalman::CorrectionInProgress< StateType, MeasurementType >::finishCorrection ( bool  cancelIfNotFinite = true)
inline

That's as far as we go here before you choose to continue.

Finish computing the rest and correct the state.

Parameters
cancelIfNotFiniteIf the new error covariance is detected to contain non-finite values, should we cancel the correction and not apply it?
Returns
true if correction completed

Member Data Documentation

§ denom

template<typename StateType, typename MeasurementType>
Eigen::LDLT<types::SquareMatrix<m> > osvr::kalman::CorrectionInProgress< StateType, MeasurementType >::denom

Decomposition of S.

Not going to directly compute Kalman gain K = PHt (S^-1) Instead, decomposed S to solve things of the form (S^-1)x repeatedly later, by using the substitution Kx = PHt denom.solve(x)

Todo:
Figure out if this is the best decomp to use

§ m

template<typename StateType, typename MeasurementType>
const types::DimensionType osvr::kalman::CorrectionInProgress< StateType, MeasurementType >::m
static
Initial value:
=
types::Dimension<MeasurementType>::value

Dimension of measurement.

§ n

template<typename StateType, typename MeasurementType>
const types::DimensionType osvr::kalman::CorrectionInProgress< StateType, MeasurementType >::n
static
Initial value:
=
types::Dimension<StateType>::value

Dimension of state.


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