Resurgence (PY2022)
Codebase for the Husky Robotics 2021-2022 rover Resurgence
Loading...
Searching...
No Matches
filters::KalmanFilter< stateDim, inputDim, outputDim > Class Template Reference

Implements a Kalman Filter. More...

#include <KalmanFilter.h>

Inheritance diagram for filters::KalmanFilter< stateDim, inputDim, outputDim >:
Collaboration diagram for filters::KalmanFilter< stateDim, inputDim, outputDim >:

Public Member Functions

void correct (const Eigen::Matrix< double, outputDim, 1 > &measurement)
 Correct the state estimate with measurement data.
 
void predict (const Eigen::Matrix< double, inputDim, 1 > &input) override
 Use the model to predict the next system state, given the current inputs.
 
- Public Member Functions inherited from filters::KalmanFilterBase< stateDim, inputDim >
void reset ()
 Reset the filter.
 
void reset (const Eigen::Matrix< double, stateDim, 1 > &state)
 Reset the filter.
 
void reset (const Eigen::Matrix< double, stateDim, 1 > &state, const Eigen::Matrix< double, stateDim, 1 > &stdDevs)
 Reset the filter.
 
void reset (const Eigen::Matrix< double, stateDim, 1 > &state, const Eigen::Matrix< double, stateDim, stateDim > &estCovMat)
 Reset the filter.
 
Eigen::Matrix< double, stateDim, 1 > getState () const
 Gets the current state estimate.
 
Eigen::Matrix< double, stateDim, stateDim > getEstimateCovarianceMat () const
 Get the current estimate covariance matrix.
 

Static Public Member Functions

static KalmanFilter createContinuous (const Eigen::Matrix< double, stateDim, stateDim > &systemMat, const Eigen::Matrix< double, stateDim, inputDim > &inputMat, const Eigen::Matrix< double, outputDim, stateDim > &outputMat, const Eigen::Matrix< double, stateDim, 1 > &stateStdDevs, const Eigen::Matrix< double, outputDim, 1 > &measurementStdDevs, double dt)
 Create a new Kalman Filter from a continuous-time state space model.
 
static KalmanFilter createDiscrete (const Eigen::Matrix< double, stateDim, stateDim > &systemMat, const Eigen::Matrix< double, stateDim, inputDim > &inputMat, const Eigen::Matrix< double, outputDim, stateDim > &outputMat, const Eigen::Matrix< double, stateDim, 1 > &stateStdDevs, const Eigen::Matrix< double, outputDim, 1 > &measurementStdDevs, double dt)
 Create a new Kalman Filter from a discrete-time state space model.
 

Additional Inherited Members

- Protected Attributes inherited from filters::KalmanFilterBase< stateDim, inputDim >
Eigen::Matrix< double, stateDim, stateDim > P
 
Eigen::Matrix< double, stateDim, 1 > xHat
 

Detailed Description

template<int stateDim, int inputDim, int outputDim>
class filters::KalmanFilter< stateDim, inputDim, outputDim >

Implements a Kalman Filter.

Unlike the "standard" Kalman Filter this uses the asymptotic Kalman gain.

Template Parameters
stateDimThe dimension of the state vector.
inputDimThe dimension of the system input vector.
outputDimThe dimension of the system output vector, or the sensor measurement.

Member Function Documentation

◆ correct()

template<int stateDim, int inputDim, int outputDim>
void filters::KalmanFilter< stateDim, inputDim, outputDim >::correct ( const Eigen::Matrix< double, outputDim, 1 > & measurement)
inline

Correct the state estimate with measurement data.

The measurement should be in the same space as the state.

Parameters
measurementThe measurement to use to correct the filter.

◆ createContinuous()

template<int stateDim, int inputDim, int outputDim>
static KalmanFilter filters::KalmanFilter< stateDim, inputDim, outputDim >::createContinuous ( const Eigen::Matrix< double, stateDim, stateDim > & systemMat,
const Eigen::Matrix< double, stateDim, inputDim > & inputMat,
const Eigen::Matrix< double, outputDim, stateDim > & outputMat,
const Eigen::Matrix< double, stateDim, 1 > & stateStdDevs,
const Eigen::Matrix< double, outputDim, 1 > & measurementStdDevs,
double dt )
inlinestatic

Create a new Kalman Filter from a continuous-time state space model.

The only matrices that change between this and createDisc() are the system matrix and input matrix. All other parameters would be the same.

Parameters
systemMatThe continuous-time system matrix.
inputMatThe continuous-time input matrix.
outputMatThe output matrix.
stateStdDevsThe standard deviations for the system model. This implies inaccuracy in the state space model.
measurementStdDevsThe standard deviations of the measurement. This implies inaccuracy in the sensor.
dtThe time in seconds between each update.
Returns
A Kalman Filter built for the specified system.

◆ createDiscrete()

template<int stateDim, int inputDim, int outputDim>
static KalmanFilter filters::KalmanFilter< stateDim, inputDim, outputDim >::createDiscrete ( const Eigen::Matrix< double, stateDim, stateDim > & systemMat,
const Eigen::Matrix< double, stateDim, inputDim > & inputMat,
const Eigen::Matrix< double, outputDim, stateDim > & outputMat,
const Eigen::Matrix< double, stateDim, 1 > & stateStdDevs,
const Eigen::Matrix< double, outputDim, 1 > & measurementStdDevs,
double dt )
inlinestatic

Create a new Kalman Filter from a discrete-time state space model.

The only matrices that change between this and createCont() are the system matrix and input matrix. All other parameters would be the same.

Parameters
systemMatThe discrete-time system matrix.
inputMatThe discrete-time input matrix.
outputMatThe output matrix.
stateStdDevsThe standard deviations for the system model. This implies inaccuracy in the state space model.
measurementStdDevsThe standard deviations of the measurement. This implies inaccuracy in the sensor.
dtThe time in seconds between each update.
Returns
A Kalman Filter built for the specified system.

◆ predict()

template<int stateDim, int inputDim, int outputDim>
void filters::KalmanFilter< stateDim, inputDim, outputDim >::predict ( const Eigen::Matrix< double, inputDim, 1 > & input)
inlineoverridevirtual

Use the model to predict the next system state, given the current inputs.

Parameters
inputThe current inputs to the system.

Implements filters::KalmanFilterBase< stateDim, inputDim >.


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