Skip to content

Particle Filter

Matthew Daigle edited this page Feb 8, 2017 · 3 revisions

Class implementing the SIR particle filter.

This class implements the sampling-importance-resampling particle filter algorithm. It accepts a model of the explicit discrete time-variant form:

   x(t+dt) = stateEqn(t,x(t),u(t),noise,dt)
     y(t) = outputEqn(t,x(t),u(t),noise)

State and output equations must be defined in a vectorized form, i.e., so that they can take several samples of state, input, output, and noise. Matrices must be formed such that the row represents the variable and the column the sample.

Assumptions

Currently assumes only Gaussian noise, specified using process and sensor noise variance vectors (so noise for each state/output is generated independently).

Limitations

Calculation of likelihood is done in a way found to be most efficient, but uses a lot of memory, so this method will have to be changed if a very large number of particles are used (like 10,000).

Methods

  • initialize(PF,t0,x0,u0) - Initialize filter given initial time, state, and inputs
  • estimate(PF,t,u,z) - Update the state and output estimates given new input and output data.
  • getStateEstimate(PF) - Return a state estimate structure with samples and weights fields

This class implements the Observer interface.

Clone this wiki locally