README

go-estimate: State estimation and filtering algorithms in Go

Build Status go.dev reference GoDoc License Go Report Card

This package offers a small suite of basic filtering algorithms written in Go. It currently provides the implementations of the following filters and estimators:

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

Contributing

YES PLEASE!

Expand ▾ Collapse ▴

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DiscreteModel

type DiscreteModel interface {
	// Model is a model of a dynamical system
	Model
	// StateMatrix returns state propagation matrix
	StateMatrix() mat.Matrix
	// StateCtlMatrix returns state propagation control matrix
	StateCtlMatrix() mat.Matrix
	// OutputMatrix returns observation matrix
	OutputMatrix() mat.Matrix
	// OutputCtlMatrix returns observation control matrix
	OutputCtlMatrix() mat.Matrix
}

    DiscreteModel is a dynamical system whose state is driven by static propagation and observation dynamics matrices

    type Estimate

    type Estimate interface {
    	// Val returns estimate value
    	Val() mat.Vector
    	// Cov returns estimate covariance
    	Cov() mat.Symmetric
    }

      Estimate is dynamical system filter estimate

      type Filter

      type Filter interface {
      	// Predict estimates the next internal state of the system
      	Predict(mat.Vector, mat.Vector) (Estimate, error)
      	// Update updates the system state based on external measurement
      	Update(mat.Vector, mat.Vector, mat.Vector) (Estimate, error)
      }

        Filter is a dynamical system filter.

        type InitCond

        type InitCond interface {
        	// State returns initial filter state
        	State() mat.Vector
        	// Cov returns initial state covariance
        	Cov() mat.Symmetric
        }

          InitCond is initial state condition of the filter

          type Model

          type Model interface {
          	// Propagator is system propagator
          	Propagator
          	// Observer is system observer
          	Observer
          	// Dims returns input and output dimensions of the model
          	Dims() (in int, out int)
          }

            Model is a model of a dynamical system

            type Noise

            type Noise interface {
            	// Mean returns noise mean
            	Mean() []float64
            	// Cov returns covariance matrix of the noise
            	Cov() mat.Symmetric
            	// Sample returns a sample of the noise
            	Sample() mat.Vector
            	// Reset resets the noise
            	Reset()
            }

              Noise is dynamical system noise

              type Observer

              type Observer interface {
              	// Observe observes external state of the system
              	Observe(mat.Vector, mat.Vector, mat.Vector) (mat.Vector, error)
              }

                Observer observes external state (output) of the system

                type Propagator

                type Propagator interface {
                	// Propagate propagates internal state of the system to the next step
                	Propagate(mat.Vector, mat.Vector, mat.Vector) (mat.Vector, error)
                }

                  Propagator propagates internal state of the system to the next step

                  type Smoother

                  type Smoother interface {
                  	// Smooth implements filter smoothing and returns new estimates
                  	Smooth([]Estimate, []mat.Vector) ([]Estimate, error)
                  }

                    Smoother is a filter smoother

                    Source Files

                    Directories

                    Path Synopsis
                    ekf
                    kf
                    ukf
                    bf
                    rts