OSVR-Core  0.6-1962-g59773924
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
osvr::kalman Namespace Reference

Header-only framework for building Kalman-style filters, prediction, and sensor fusion. More...

Namespaces

 matrix_exponential_map
 
 types
 Type aliases, including template type aliases.
 

Classes

class  AbsoluteOrientationBase
 
singleton  AbsoluteOrientationMeasurement
 
class  AbsoluteOrientationMeasurement< pose_externalized_rotation::State >
 AbsoluteOrientationMeasurement with a pose_externalized_rotation::State. More...
 
class  AbsolutePositionBase
 
singleton  AbsolutePositionMeasurement
 
class  AbsolutePositionMeasurement< pose_externalized_rotation::State >
 AbsolutePositionMeasurement with a pose_externalized_rotation::State. More...
 
singleton  AngularVelocityMeasurement
 
class  AngularVelocityMeasurement< orient_externalized_rotation::State >
 
class  AngularVelocityMeasurement< pose_externalized_rotation::State >
 AngularVelocityMeasurement with a pose_externalized_rotation::State. More...
 
class  AugmentedProcessModel
 
class  AugmentedState
 
class  ConstantProcess
 
class  FlexibleKalmanFilter
 
struct  HasDimension
 
class  OrientationConstantVelocityProcessModel
 A model for a 3DOF pose (with angular velocity) More...
 
class  PoseConstantVelocityProcessModel
 A constant-velocity model for a 6DOF pose (with velocities) More...
 
class  PoseDampedConstantVelocityProcessModel
 
class  PoseSeparatelyDampedConstantVelocityProcessModel
 
class  PureVectorState
 

Typedefs

template<typename ModelA , typename ModelB >
using DeducedAugmentedProcessModel = AugmentedProcessModel< typename std::remove_const< ModelA >::type, typename std::remove_const< ModelB >::type >
 
template<typename StateA , typename StateB >
using DeducedAugmentedState = AugmentedState< typename std::remove_const< StateA >::type, typename std::remove_const< StateB >::type >
 

Functions

template<typename ModelA , typename ModelB >
DeducedAugmentedProcessModel
< ModelA, ModelB > 
makeAugmentedProcessModel (ModelA &a, ModelB &b)
 
template<typename StateA , typename StateB >
DeducedAugmentedState< StateA,
StateB > 
makeAugmentedState (StateA &a, StateB &b)
 Factory function, akin to std::tie(), to make an augmented state.
 
template<typename StateType , typename ProcessModelType >
types::DimSquareMatrix< StateType > predictErrorCovariance (StateType const &state, ProcessModelType &processModel, double dt)
 
template<typename StateType , typename ProcessModelType , typename MeasurementType >
CorrectionInProgress
< StateType, MeasurementType > 
beginCorrection (StateType &state, ProcessModelType &processModel, MeasurementType &meas)
 
template<typename StateType , typename ProcessModelType , typename MeasurementType >
bool correct (StateType &state, ProcessModelType &processModel, MeasurementType &meas, bool cancelIfNotFinite=true)
 
template<typename Derived >
Eigen::Matrix3d makeSkewSymmetrixCrossProductMatrix (Eigen::MatrixBase< Derived > const &v)
 

Detailed Description

Header-only framework for building Kalman-style filters, prediction, and sensor fusion.

Typedef Documentation

template<typename ModelA , typename ModelB >
using osvr::kalman::DeducedAugmentedProcessModel = typedef AugmentedProcessModel<typename std::remove_const<ModelA>::type, typename std::remove_const<ModelB>::type>

Template alias to make removing const from the deduced types less verbose/painful.

Definition at line 88 of file AugmentedProcessModel.h.

template<typename StateA , typename StateB >
using osvr::kalman::DeducedAugmentedState = typedef AugmentedState<typename std::remove_const<StateA>::type, typename std::remove_const<StateB>::type>

Template alias to make removing const from the deduced types less verbose/painful.

Definition at line 130 of file AugmentedState.h.

Function Documentation

template<typename ModelA , typename ModelB >
DeducedAugmentedProcessModel<ModelA, ModelB> osvr::kalman::makeAugmentedProcessModel ( ModelA &  a,
ModelB &  b 
)
inline

Factory function, akin to std::tie(), to make an augmented process model.

Definition at line 94 of file AugmentedProcessModel.h.

template<typename StateType , typename ProcessModelType >
types::DimSquareMatrix<StateType> osvr::kalman::predictErrorCovariance ( StateType const &  state,
ProcessModelType &  processModel,
double  dt 
)
inline

Computes P-

Usage is optional, most likely called from the process model updateState()` method.

Definition at line 135 of file FlexibleKalmanBase.h.

template<typename StateType , typename ProcessModelType , typename MeasurementType >
CorrectionInProgress<StateType, MeasurementType> osvr::kalman::beginCorrection ( StateType &  state,
ProcessModelType &  processModel,
MeasurementType &  meas 
)
inline

Dimension of measurement

Dimension of state

Measurement Jacobian

Measurement covariance

State error covariance

The kalman gain stuff to not invert (called P12 in TAG)

the stuff to invert for the kalman gain also sometimes called S or the "Innovation Covariance"

More computation is done in initializers/constructor

Definition at line 135 of file FlexibleKalmanCorrect.h.

template<typename StateType , typename ProcessModelType , typename MeasurementType >
bool osvr::kalman::correct ( StateType &  state,
ProcessModelType &  processModel,
MeasurementType &  meas,
bool  cancelIfNotFinite = true 
)
inline
Parameters
cancelIfNotFiniteIf the state correction or new error covariance is detected to contain non-finite values, should we cancel the correction and not apply it?
Returns
true if correction completed

Definition at line 58 of file FlexibleKalmanFilter.h.

template<typename Derived >
Eigen::Matrix3d osvr::kalman::makeSkewSymmetrixCrossProductMatrix ( Eigen::MatrixBase< Derived > const &  v)
inline

Produces the "hat matrix" that produces the same result as performing a cross-product with v. This is the same as the "capital omega" skew-symmetrix matrix used by a matrix-exponential-map rotation vector.

Parameters
va 3D vector
Returns
a matrix M such that for some 3D vector u, Mu = v x u.

Definition at line 48 of file MatrixExponentialMap.h.