|
EmrysFilter 0.1.0
State estimation utilities in C++23 using Eigen
|
A zero-mean Ornstein-Uhlenbeck (first-order Gauss-Markov) process on each coordinate of the block named by Path, such as a slowly varying sensor bias. More...
#include <EmrysFilter/Models/ProcessModel.h>
Public Types | |
| using | Scalar = Scalar_ |
| the scalar type of the parameters | |
Public Member Functions | |
| OrnsteinUhlenbeck (TimeConstant< Scalar_ > timeConstant, StationaryVariance< Scalar_ > variance) | |
| Time constant timeConstant and stationary variance variance. | |
| Scalar_ | timeConstant () const |
| Scalar_ | variance () const |
A zero-mean Ornstein-Uhlenbeck (first-order Gauss-Markov) process on each coordinate of the block named by Path, such as a slowly varying sensor bias.
With time constant \( \tau \) and stationary variance \( \sigma^2 \), a step \( \Delta t \) gives \( x' = \phi x \) with \( \phi = e^{-\Delta t / \tau} \) and noise \( \sigma^2 (1 - \phi^2) \) on each coordinate, the exact discretization of the Ornstein-Uhlenbeck process, the first-order Gauss-Markov process of Gelb (1974), that models slowly varying sensor errors. The model is affine in its block and returns its Jacobian.
Scalar_ is the type of \( \tau \) and \( \sigma^2 \). The step computes in the scalar of the step it is given, as Kinematic's does. The two are given by name, OrnsteinUhlenbeck<Bias>{TimeConstant{60.0}, StationaryVariance{0.25}}, since as two numbers of one type they would swap silently. Each coordinate of the block takes the same \( \tau \) and \( \sigma^2 \); coordinates that differ are blocks of their own (decisions.md [continuous-time-noise]).
|
inlinenodiscard |
|
inlinenodiscard |