## The Extended Kalman Filter: An Interactive Tutorial for Non-Experts

### Part 3: Putting it Together

So now we have two equations describing the state of our airplane:

** altitude_{current_time} = * altitude_{previous_time}**

** observed_altitude_{current_time} = altitude_{current_time} + noise_{current_time}**

These equations are pretty easy to understand, but they aren’t general enough to deal with systems other than our airplane-altitude example. To make the equations more general, engineers adopt the familiar mathematical convention of using names like $x$, $y$, and $z$ for variables and $a$ and $b$ for constants, and the subscript $k$ to represent time.^{[3]} So our equations become:

\[

\begin{aligned}

x_k & = a x_{k-1} \\

z_k & = x_k + v_k \\

\end{aligned}

\]

where $x$ is the current state of our system, $x_{k-1}$ is its previous state, $a$is some constant (0.98 in our example), $z_k$ is our current observation of the system, and $v_k$ is the current noise measurement. One reason the Kalman filter is so popular is that it allows us to get a very good estimation of the actual current state $x_k$ given the observation $z_k$, the constant $a$, and the overall amount of measurement noise $v$.

To complete the picture, we should also consider that that actual altitude of the airplane may not describe a perfectly smooth path. As anyone who has ever flown can tell you, airplanes typically experience a certain amount of turbulence as they descend for a landing. This turbulence is by definition noisy, and so can be treated as another noise signal:

** altitude_{current_time} = 0.98 * altitude_{previous_time} + turbulence_{current_time}**

More generally:

\[ x_k = a x_{k-1} + w_k \]

where $w_k$ is called the *process noise*, because, like turbulence, it is an inherent part of the process, and not an artifact of observation or measurement. We will ignore process noise for a while in order to focus on other topics, but we’ll return to it in the section on Sensor Fusion.^{[4]}

**Previous**: Dealing with Noise

**Next**: State Estimation

[3] Why not *t* for time? Probably because time is being treated as a sequence of discrete steps, for which an index variable like *k* is conventional.

[4] I have also ignored the control-signal component of the state equation, because it is tangential to most of the Kalman Filter equations and can be easily added when needed.