Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module implements the Extended Kalman Filter estimation algorithm.
- data KalmanFilter state var = KalmanFilter {
- kalmanState :: state var
- kalmanCovariance :: state (state var)
- data KalmanInnovation obs var = KalmanInnovation {
- kalmanInnovation :: obs var
- kalmanInnovationCovariance :: obs (obs var)
- newtype EKFProcess state var = EKFProcess (forall s. Reifies s Tape => state (Reverse s var) -> state (Reverse s var))
- newtype EKFMeasurement state var = EKFMeasurement (forall s. Reifies s Tape => state (Reverse s var) -> Reverse s var)
Documentation
data KalmanFilter state var Source
All variants of Kalman Filter, at their core, maintain the parameters of a multi-variate normal distribution.
Since different Kalman Filter variants share this filter type, you can mix and match algorithms within the same filter. For example, you could use a conventional Kalman filter for any linear measurements, and a Sigma-Point Kalman Filter for a non-linear process model.
KalmanFilter | |
|
GaussianFilter KalmanFilter | |
type Var (KalmanFilter state var) = var | |
type State (KalmanFilter state var) = state |
data KalmanInnovation obs var Source
Kalman filter estimators can report the innovation of each observation, as well as the covariance of the innovation.
KalmanInnovation | |
|
newtype EKFProcess state var Source
A process model in an Extended Kalman Filter transforms a state vector to a new state vector, but is wrapped in reverse-mode automatic differentiation.
EKFProcess (forall s. Reifies s Tape => state (Reverse s var) -> state (Reverse s var)) |
(Additive state, Traversable state, Distributive state, Num var) => Process (EKFProcess state var) | |
Estimator (EKFProcess state var) | |
type Var (EKFProcess state var) = var | |
type State (EKFProcess state var) = state | |
type Filter (EKFProcess state var) = KalmanFilter |
newtype EKFMeasurement state var Source
A measurement model in an Extended Kalman Filter uses the state vector to predict what value a sensor should return, while wrapped in reverse-mode automatic differentiation.
EKFMeasurement (forall s. Reifies s Tape => state (Reverse s var) -> Reverse s var) |
(Additive state, Distributive state, Traversable state, Fractional var) => Measure (EKFMeasurement state var) | |
Estimator (EKFMeasurement state var) | |
type Var (EKFMeasurement state var) = var | |
type State (EKFMeasurement state var) = state | |
type Filter (EKFMeasurement state var) = KalmanFilter | |
type MeasureQuality (EKFMeasurement state var) obs = KalmanInnovation obs var | |
type MeasureObservable (EKFMeasurement state var) obs = (Additive obs, Traversable obs) |