Grid-Based Bayesian Estimation (GBEES)

Tracking uncertainty where Gaussians break down.

GBEES propagates the full probability distribution of a system's state through nonlinear dynamics, on a grid that grows and shrinks with the uncertainty itself. It is built for chaotic systems and deep-space navigation, where the usual Gaussian assumptions fail.

Developed by Benjamin L. Hanson, PhD candidate, advised by Thomas Bewley and Aaron Rosengren.

Probability isosurfaces of the Lorenz 63 system propagated by GBEES, cyan before and magenta after a measurement update
Probability isosurfaces of the chaotic Lorenz system as GBEES carries them forward in time, before (cyan) and after (magenta) a measurement update.
How it works

Treat probability like a fluid.

Most filters squeeze uncertainty into a mean and a covariance. GBEES keeps the whole distribution, and only spends effort where the probability actually is.

  1. Propagate

    Probability flows through a discretized state space following the system's dynamics, solved with a second-order, total-variation-diminishing finite-volume scheme borrowed from fluid mechanics.

  2. Exploit sparsity

    The distribution is near zero almost everywhere, so the grid keeps only cells with meaningful probability and adapts its size and shape as the uncertainty moves and stretches.

  3. Update

    When a measurement arrives, Bayes' rule reshapes the distribution directly, with no Gaussian approximation, from one dimension up to six.

Results

From orbits to icy moons.

Orbital element uncertainty over 20 orbits: Monte Carlo samples on top, GBEES distribution below, both bending into a banana shape that a Gaussian ellipse misses
Orbit uncertainty over 20 revolutions. GBEES (bottom) matches Monte Carlo sampling (top) as the distribution bends into a shape a Gaussian ellipse cannot describe.
Saturn-Enceladus distant prograde orbit with GBEES position and velocity uncertainty at four measurement epochs
A 4D distant prograde orbit around Saturn's moon Enceladus.
Jupiter-Europa low prograde orbit with the GBEES state uncertainty stretched along the trajectory
A 6D low prograde orbit around Jupiter's moon Europa.
1000x+
Speedup of the GPU implementation over the original code
6D
Full state dimension handled: position and velocity together
2
Implementations, C and Python, with near-equal efficiency
BSD
Open source under the BSD-3-Clause license
Publications

Papers and code.

  1. 2026
    Bayesian Benchmarking of GBEES Applied to Outer Planet Orbiter EstimationB. L. Hanson, T. A. Ely, T. R. Bewley, A. J. Rosengren. Journal of Guidance, Control, and Dynamics 49(1), 240 to 246.
  2. 2025
    GBEES-GPU: An Efficient Parallel GPU Algorithm for High-Dimensional Nonlinear Uncertainty PropagationB. L. Hanson, C. Rubio, A. García-Gutiérrez, T. Bewley. Computer Physics Communications 317.
  3. 2025
    Non-Gaussian Recursive Bayesian Filtering for Outer Planetary Orbilander NavigationB. L. Hanson, A. J. Rosengren, T. R. Bewley, T. A. Ely. AAS/AIAA Space Flight Mechanics Meeting.
  4. 2024
    State Estimation of Chaotic Trajectories: A Higher-Dimensional, Grid-Based, Bayesian Approach to Uncertainty PropagationB. L. Hanson, A. J. Rosengren, T. R. Bewley.

Full list on Ben Hanson's site.

Team

Who built it.

  • Benjamin L. HansonDeveloper of GBEES. PhD candidate, Mechanical and Aerospace Engineering
  • Thomas BewleyCo-advisor. Introduced the GBEES framework
  • Aaron RosengrenCo-advisor. Astrodynamics
  • Todd ElyCollaborator, NASA Jet Propulsion Laboratory