> For the complete documentation index, see [llms.txt](https://www.learnros2.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.learnros2.com/probabilistic-robotics/bayes-filter.md).

# Bayes Filter

The core idea of the application of Bayes' rule is that we can update our belief based on the new data. Here is a classic example in many robotics text books that illustrates the idea:

<figure><img src="/files/0TPSQv7zquHjkNpx2EH1" alt=""><figcaption></figcaption></figure>

This example might be too simple. An example with multiple doors is more interesting for the thought process but we will leave it as an exercise.

## Graph Model Representation

The Bayes Filter algorithm consists of two steps:

* prediction
* belief update

<figure><img src="/files/m6N2eNFPyTWp2D3nArrk" alt="" width="375"><figcaption></figcaption></figure>

TODO

<figure><img src="/files/kk3N3648w899eT5WhN3B" alt="" width="375"><figcaption></figcaption></figure>

## Bayes Filter Algorithm

<figure><img src="/files/jdKVpprqShXAvXNgmFNQ" alt=""><figcaption></figcaption></figure>

{% code fullWidth="true" %}

```latex
\begin{algorithm}
    \renewcommand{\thealgorithm}{}
    \caption{\textbf{Bayes Filter}}\label{alg:cap}
    
    \begin{algorithmic}[1]
        \Function{BayesFilter}{$bel(x_{t-1}), u_t, z_t$}
        \ForAll{$x_t$}
        \State $\overline{bel}(x_t) = \int{p(x_t|u_t, x_{t-1})bel(x_{t-1})dx_{t-1}}$
        \State $bel(x_t) = \eta{}p(z_t|x_t)\overline{bel}(x_t)$
        \EndFor
        \State \textbf{return} $bel(x_t)$
        \EndFunction
        
    \end{algorithmic}
\end{algorithm}
```

{% endcode %}

$$
\
$$
