Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/milosgajdos/go-estimate
State estimation and filtering algorithms in Go
https://github.com/milosgajdos/go-estimate
estimator extended-kalman-filter filtering golang kalman-filter particle-filter particle-filters sensor-fusion unscented-kalman-filter
Last synced: 3 days ago
JSON representation
State estimation and filtering algorithms in Go
- Host: GitHub
- URL: https://github.com/milosgajdos/go-estimate
- Owner: milosgajdos
- License: apache-2.0
- Created: 2018-11-04T22:32:52.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-06-26T21:20:17.000Z (6 months ago)
- Last Synced: 2024-12-07T08:21:34.105Z (5 days ago)
- Topics: estimator, extended-kalman-filter, filtering, golang, kalman-filter, particle-filter, particle-filters, sensor-fusion, unscented-kalman-filter
- Language: Go
- Homepage:
- Size: 871 KB
- Stars: 114
- Watchers: 6
- Forks: 8
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go - go-estimate - State estimation and filtering algorithms in Go. (Science and Data Analysis / HTTP Clients)
- zero-alloc-awesome-go - go-estimate - State estimation and filtering algorithms in Go. (Science and Data Analysis / HTTP Clients)
- awesome-go-extra - go-estimate - 11-04T22:32:52Z|2022-05-28T17:42:08Z| (Science and Data Analysis / HTTP Clients)
README
# go-estimate: State estimation and filtering algorithms in Go
[![Build Status](https://github.com/milosgajdos/go-estimate/workflows/CI/badge.svg)](https://github.com/milosgajdos/go-estimate/actions?query=workflow%3ACI)
[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/github.com/milosgajdos/go-estimate)
[![GoDoc](https://godoc.org/github.com/milosgajdos/go-estimate?status.svg)](https://godoc.org/github.com/milosgajdos/go-estimate)
[![License](https://img.shields.io/:license-apache-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Go Report Card](https://goreportcard.com/badge/milosgajdos/go-estimate)](https://goreportcard.com/report/github.com/milosgajdos/go-estimate)
[![codecov](https://codecov.io/gh/milosgajdos/go-estimate/branch/master/graph/badge.svg)](https://codecov.io/gh/milosgajdos/go-estimate)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](https://en.wikipedia.org/wiki/Particle_filter#The_bootstrap_filter) also known as SIR Particle filter
* [Unscented Kalman Filter](https://en.wikipedia.org/wiki/Kalman_filter#Unscented_Kalman_filter) also known as Sigma-point filter
* [Extended Kalman Filter](https://en.wikipedia.org/wiki/Kalman_filter#Extended_Kalman_filter) also known as Non-linear Kalman Filter
* [Iterated Extended Kalman Filter](https://en.wikipedia.org/wiki/Extended_Kalman_filter#Iterated_extended_Kalman_filter)
* [Kalman Filter](https://en.wikipedia.org/wiki/Kalman_filter) also known as Linear Kalman FilterIn addition it provides an implementation of [Rauch–Tung–Striebel](https://en.wikipedia.org/wiki/Kalman_filter#Rauch%E2%80%93Tung%E2%80%93Striebel) 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:
```shell
$ go get github.com/milosgajdos/go-estimate
```Get dependencies:
```shell
$ make dep
```Run unit tests:
```shell
$ make test
```
You can find various examples of usage in [go-estimate-examples](https://github.com/milosgajdos/go-estimate-examples).# TODO
- [ ] [Square Root filter](https://en.wikipedia.org/wiki/Kalman_filter#Square_root_form)
- [ ] [Information Filter](https://en.wikipedia.org/wiki/Kalman_filter#Information_filter)
- [x] [Smoothing](https://en.wikipedia.org/wiki/Kalman_filter#Fixed-interval_smoothers)
- [Rauch–Tung–Striebel](https://en.wikipedia.org/wiki/Kalman_filter#Rauch%E2%80%93Tung%E2%80%93Striebel) for both KF and EKF has been implemented in `smooth` package# Contributing
**YES PLEASE!**