modulepackage
0.1.2
Repository: https://github.com/milosgajdos/go-estimate.git
Documentation: pkg.go.dev
# README
go-estimate: State estimation and filtering algorithms in Go
This package offers a small suite of basic filtering algorithms written in Go. It currently provides the implementations of the following filters and estimators:
- Bootstrap Filter also known as SIR Particle filter
- Unscented Kalman Filter also known as Sigma-point filter
- Extended Kalman Filter also known as Non-linear Kalman Filter
- Kalman Filter also known as Linear Kalman Filter
In addition it provides an implementation of Rauch–Tung–Striebel smoothing for Kalman filter, which is an optimal Gaussian smoothing algorithm. There are variants for both LKF
(Linear Kalman Filter) and EKF
(Extended Kalman Filter) implemented in the smooth
package. UKF
smoothing will be implemented in the future.
Get started
Get the package:
$ go get github.com/milosgajdos/go-estimate
Get dependencies:
$ make dep
Run unit tests:
$ make test
You can find various examples of usage in go-estimate-examples.
TODO
- Square Root filter
- Information Filter
- Smoothing
- Rauch–Tung–Striebel for both KF and EKF has been implemented in
smooth
package
- Rauch–Tung–Striebel for both KF and EKF has been implemented in
Contributing
YES PLEASE!
# Interfaces
DiscreteModel is a dynamical system whose state is driven by static propagation and observation dynamics matrices.
Estimate is dynamical system filter estimate.
Filter is a dynamical system filter.
InitCond is initial state condition of the filter.
Model is a model of a dynamical system.
Noise is dynamical system noise.
Observer observes external state (output) of the system.
Propagator propagates internal state of the system to the next step.
Smoother is a filter smoother.