> 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="https://442453138-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWs42vVsGF012EH3SD2WG%2Fuploads%2FRqYdrTysME2n40C1zXZH%2Fbayes_filter_moving_robot.png?alt=media&amp;token=65df7c7f-64f6-450e-a633-af471b638f9a" 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="https://442453138-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWs42vVsGF012EH3SD2WG%2Fuploads%2FKNUaOorpvPdiSUYYN3sn%2Fbayes_filter_graph_model.png?alt=media&amp;token=7da54875-edbe-4048-b582-8e8d73cacc3f" alt="" width="375"><figcaption></figcaption></figure>

TODO

<figure><img src="https://442453138-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWs42vVsGF012EH3SD2WG%2Fuploads%2FNft2XCIP13JQKsz43AUT%2Fbayes_filter_prediction_and_belief_update.png?alt=media&amp;token=1d70c7c3-be75-4258-8042-2206cae41af8" alt="" width="375"><figcaption></figcaption></figure>

## Bayes Filter Algorithm

<figure><img src="https://442453138-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWs42vVsGF012EH3SD2WG%2Fuploads%2FITshv1E6nF8HqsMGASbd%2Fimage.png?alt=media&amp;token=e509afa2-d2a0-43e9-8859-c20d2afdd7a2" 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 %}

$$
\
$$
