# KalmanFilter

*x*(*t*+1) = *Ax*(*t*)+*Bu*(*t*),
where *x* is the state of the process and *u* is the control input. The observation (or measurement) is described by
*Hz*(*t*). The *a priori* process variance is set by the parameter *process_noise* and the measurement variance by
*observation_noise*.

## Example XML definition

A simple example

<module class = "KalmanFilter" name = "KalmanFilter" observation_size = "1" state_size = "1" A = "" B = "" H = "" />

## Parameters

Name | Description | Type | Default |
---|---|---|---|

class | The class name for the module; must be "KalmanFilter". | string | |

name | The name of this instance of the module. | string | |

A | The state transition matrix (state gain) [n x n] | matrix | |

B | The input gain [n x m] | matrix | |

H | The output gain [m x n] | matrix | |

state_size | The size of the state | int | 1 |

observation_size | The size of the observation (measurement noise) | int | 1 |

process_noise | Noise for the process | float | 1 |

observation_noise | Noise for each observation | float | 1 |

## Module Connections

### Inputs

Name | Description |
---|---|

INPUT | The input [1 x m] |

OBSERVATION | The observation [1 x m] |

### Outputs

Name | Description |
---|---|

STATE | The state [n x 1] |

INNOVATION | The state [m x 1] |

KALMAN_GAIN | The Kalman gain [n x m] |

## Limitations

It should be possible to specify the full covariance matrices for the process and measurements (R and Q).

The matrices A, B and H should also be able to use inputs instead of parameters.

Observation and state sizes should be inferred from the matrix parameters.

## Author

Christian Balkenius

christian.balkenius@lucs.lu.se

Lund Univeristy Cognitive Science

## Files

KalmanFilter.h

KalmanFilter.cc

KalmanFilter.ikc