BREW
Bayesian Recursive Estimation Workspace
Overview
BREW is a C++ library for model-generalized multi-object tracking. Its core goal is to decouple the filter from the object model so that new motion models, extent representations, and measurement likelihoods can be swapped in without rewriting the estimation pipeline.
At its core the framework operates over a multi-object density $\pi(X)$ where $X \subset \R^{n}$ is a random finite set of object states, and admits a generic measurement update $$ \pi_{k|k}(X) \propto \ell(Z_k \mid X)\, \pi_{k|k-1}(X), $$ leaving the likelihood $\ell(\cdot)$ and the state space free to be specialized per object model.
Motivation
Reference multi-object tracking codebases often bake a specific motion or extent model deep into the filter. That makes prototyping new representations (orientation-augmented GGIW, trajectory-level states, surrogate-modeled dynamics) slow and error-prone. BREW addresses this by treating the object model as a template parameter.
Technical Approach
- C++ templates for custom data structures that stay generic over state and measurement types.
- Implemented extended object models, trajectory-based models, and experimental extent representations.
- Factored RFS filter implementations (e.g. GGIW, JGLMB-style) against the generic object model interface.
- MATLAB MEX bindings let sensor-modeling and simulation code live in MATLAB while heavy filter loops run in C++.
Outcomes
- Enabled rapid prototyping of new filters and models across multiple ongoing research projects.
- Used as the C++ backbone for portions of doctoral research (distributed METT, intent-centric tracking).
- TODO: add benchmarks / plots / specific filter comparisons.