dyne is a Python package containing a collection of algorithms for state estimation in dynamic systems. Specifically it deals with discrete-time stochastic dynamic systems of the form:
With
-
$k$ - integer epoch index -
$X_k$ - state vector -
$W_k$ - process noise vector -
$Z_k$ - measurement vector -
$V_k$ - measurement noise vector -
$f_k$ - process function -
$h_k$ - measurement function
The system can be depicted as a chain graph:
The task is to estimate
At the moment the following estimation algorithms are implemented in dyne
:
Algorithm | Function | Causal? | Requires Jacobian? |
---|---|---|---|
Linear Kalman Smoother | run_kalman_smoother | No | Not applicable |
Extended Kalman Filter | run_ekf | Yes | Yes |
Unscented Kalman Filter | run_ukf | Yes | No |
Moving Horizon Filter | run_mhf | Yes | Yes |
Batch Nonlinear Optimizer | run_optimization | No | Yes |
The file examples.py
contains example problems which can be setup and run by all available
algorithms.
The package is pure Python and can be easily installed on any platform. Runtime dependencies include (versions in parentheses were used for the latest development):
- numpy (1.25.2)
- scipy (1.11.3)
To perform a regular install, execute in the cloned repository directory:
pip install .
To perform an editable (inplace) install:
pip install -e .