estimator-1.2.0.0: State-space estimation algorithms such as Kalman Filters

Safe HaskellNone
LanguageHaskell2010

Numeric.Estimator.KalmanFilter

Description

This module implements the Extended Kalman Filter estimation algorithm.

Synopsis

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.

Constructors

KalmanFilter 

Fields

Instances

GaussianFilter KalmanFilter Source # 

Methods

mapStatistics :: (state var -> state' var') -> (state (state var) -> state' (state' var')) -> KalmanFilter state var -> KalmanFilter state' var' Source #

type Var (KalmanFilter state var) Source # 
type Var (KalmanFilter state var) = var
type State (KalmanFilter state var) Source # 
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.

Constructors

KalmanInnovation 

Fields

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.

Constructors

EKFProcess (forall s. Reifies s Tape => state (Reverse s var) -> state (Reverse s var)) 

Instances

(Additive state, Traversable state, Distributive state, Num var) => Process (EKFProcess state var) Source # 

Methods

process :: EKFProcess state var -> State (EKFProcess state var) (State (EKFProcess state var) (Var (EKFProcess state var))) -> Filter (EKFProcess state var) (State (EKFProcess state var)) (Var (EKFProcess state var)) -> Filter (EKFProcess state var) (State (EKFProcess state var)) (Var (EKFProcess state var)) Source #

Estimator (EKFProcess state var) Source # 

Associated Types

type Filter (EKFProcess state var) :: (* -> *) -> * -> * Source #

type Var (EKFProcess state var) Source # 
type Var (EKFProcess state var) = var
type State (EKFProcess state var) Source # 
type State (EKFProcess state var) = state
type Filter (EKFProcess state var) Source # 
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.

Constructors

EKFMeasurement (forall s. Reifies s Tape => state (Reverse s var) -> Reverse s var) 

Instances

(Additive state, Distributive state, Traversable state, Fractional var) => Measure (EKFMeasurement state var) Source # 

Associated Types

type MeasureQuality (EKFMeasurement state var) (obs :: * -> *) :: * Source #

type MeasureObservable (EKFMeasurement state var) (obs :: * -> *) :: Constraint Source #

Methods

measure :: MeasureObservable (EKFMeasurement state var) obs => obs (Var (EKFMeasurement state var), EKFMeasurement state var) -> obs (obs (Var (EKFMeasurement state var))) -> Filter (EKFMeasurement state var) (State (EKFMeasurement state var)) (Var (EKFMeasurement state var)) -> (MeasureQuality (EKFMeasurement state var) obs, Filter (EKFMeasurement state var) (State (EKFMeasurement state var)) (Var (EKFMeasurement state var))) Source #

Estimator (EKFMeasurement state var) Source # 

Associated Types

type Filter (EKFMeasurement state var) :: (* -> *) -> * -> * Source #

type Var (EKFMeasurement state var) Source # 
type Var (EKFMeasurement state var) = var
type State (EKFMeasurement state var) Source # 
type State (EKFMeasurement state var) = state
type Filter (EKFMeasurement state var) Source # 
type MeasureQuality (EKFMeasurement state var) obs Source # 
type MeasureQuality (EKFMeasurement state var) obs = KalmanInnovation obs var
type MeasureObservable (EKFMeasurement state var) obs Source # 
type MeasureObservable (EKFMeasurement state var) obs = (Additive obs, Traversable obs)