This package provides some simple generic particle filters, and may serve as a template for making custom particle filters and other belief updaters. It is compatible with POMDPs.jl, but does not have to be used with that package.
In Julia:
Pkg.add("ParticleFilters")
Basic setup might look like this:
using ParticleFilters, Distributions
dynamics(x, u, rng) = x + u + randn(rng)
y_likelihood(x_previous, u, x, y) = pdf(Normal(), y - x)
model = ParticleFilterModel{Float64}(dynamics, y_likelihood)
pf = BootstrapFilter(model, 10)
Then the update
function can be used to perform a particle filter update.
b = ParticleCollection([1.0, 2.0, 3.0, 4.0])
u = 1.0
y = 3.0
b_new = update(pf, b, u, y)
This is a very simple example and the framework can accommodate a variety of more complex use cases. More details can be found in the documentation linked to below.
There are tutorials for three ways to use the particle filters:
- As an estimator for feedback control,
- to filter time-series measurements, and
- as an updater for POMDPs.jl.