You are on page 1of 20

Kalman lter

Prediction step
Based on e.g.
physical model

Prior knowledge
of state

tainty matrix; no additional past information is required.


The Kalman lter does not require any assumption that
the errors are Gaussian.[2] However, the lter yields the
exact conditional probability estimate in the special case
that all errors are Gaussian-distributed.

Next timestep

Update step
Compare prediction
to measurements

Measurements

Extensions and generalizations to the method have also


been developed, such as the extended Kalman lter and
the unscented Kalman lter which work on nonlinear systems. The underlying model is a Bayesian model similar
to a hidden Markov model but where the state space of
the latent variables is continuous and where all latent and
observed variables have Gaussian distributions.

Output estimate
of state

The Kalman lter keeps track of the estimated state of the system and the variance or uncertainty of the estimate. The estimate is updated using a state transition model and measurements. x
k|k1 denotes the estimate of the systems state at time
step k before the k-th measurement y has been taken into account; Pk|k1 is the corresponding uncertainty.

1 Naming and historical development

Kalman ltering, also known as linear quadratic estimation (LQE), is an algorithm that uses a series of
measurements observed over time, containing statistical
noise and other inaccuracies, and produces estimates of
unknown variables that tend to be more precise than those
based on a single measurement alone. The lter is named
after Rudolf E. Klmn, one of the primary developers
of its theory.

The Kalman lter has numerous applications in technology. A common application is for guidance, navigation
and control of vehicles, particularly aircraft and spacecraft. Furthermore, the Kalman lter is a widely applied
concept in time series analysis used in elds such as signal
processing and econometrics. Kalman lters also are one
of the main topics in the eld of robotic motion planning
and control, and they are sometimes included in trajectory
optimization. The Kalman lter has also found use in
modeling the central nervous systems control of movement. Due to the time delay between issuing motor commands and receiving sensory feedback, use of the Kalman Rudolf Emil Klmn, co-inventor and developer of the Kalman
lter provides the needed model for making estimates of lter.
the current state of the motor system and issuing updated
commands.[1]
The lter is named after Hungarian migr Rudolf E.
The algorithm works in a two-step process. In the predic- Klmn, although Thorvald Nicolai Thiele[3][4] and Peter
tion step, the Kalman lter produces estimates of the cur- Swerling developed a similar algorithm earlier. Richard
rent state variables, along with their uncertainties. Once S. Bucy of the University of Southern California conthe outcome of the next measurement (necessarily cor- tributed to the theory, leading to it often being called
rupted with some amount of error, including random the KalmanBucy lter. Stanley F. Schmidt is genernoise) is observed, these estimates are updated using a ally credited with developing the rst implementation of a
weighted average, with more weight being given to esti- Kalman lter. He realized that the lter could be divided
mates with higher certainty. The algorithm is recursive. It into two distinct parts, with one part for time periods becan run in real time, using only the present input measure- tween sensor outputs and another part for incorporating
ments and the previously calculated state and its uncer- measurements.[5] It was during a visit by Klmn to the
1

EXAMPLE APPLICATION

NASA Ames Research Center that he saw the applicability of his ideas to the problem of trajectory estimation
for the Apollo program, leading to its incorporation in the
Apollo navigation computer. This Kalman lter was rst
described and partially developed in technical papers by
Swerling (1958), Kalman (1960) and Kalman and Bucy
(1961).

ters behavior in terms of gain. The Kalman gain is a function of the relative certainty of the measurements and current state estimate, and can be tuned to achieve particular performance. With a high gain, the lter places more
weight on the measurements, and thus follows them more
closely. With a low gain, the lter follows the model predictions more closely, smoothing out noise but decreasing
Kalman lters have been vital in the implementation of the responsiveness. At the extremes, a gain of one causes
the lter to ignore the state estimate entirely, while a gain
the navigation systems of U.S. Navy nuclear ballistic missile submarines, and in the guidance and navigation sys- of zero causes the measurements to be ignored.
tems of cruise missiles such as the U.S. Navys Tomahawk When performing the actual calculations for the lter (as
missile and the U.S. Air Force's Air Launched Cruise discussed below), the state estimate and covariances are
Missile. It is also used in the guidance and navigation sys- coded into matrices to handle the multiple dimensions intems of the NASA Space Shuttle and the attitude control volved in a single set of calculations. This allows for a repand navigation systems of the International Space Station. resentation of linear relationships between dierent state
This digital lter is sometimes called the Stratonovich variables (such as position, velocity, and acceleration) in
KalmanBucy lter because it is a special case of a more any of the transition models or covariances.
general, non-linear lter developed somewhat earlier by
the Soviet mathematician Ruslan Stratonovich.[6][7][8][9]
In fact, some of the special case linear lters equa- 3 Example application
tions appeared in these papers by Stratonovich that were
published before summer 1960, when Kalman met with As an example application, consider the problem of deStratonovich during a conference in Moscow.
termining the precise location of a truck. The truck can
be equipped with a GPS unit that provides an estimate of
the position within a few meters. The GPS estimate is
likely to be noisy; readings 'jump around' rapidly, though
2 Overview of the calculation
always remaining within a few meters of the real position.
In addition, since the truck is expected to follow the laws
The Kalman lter uses a systems dynamics model (e.g., of physics, its position can also be estimated by integratphysical laws of motion), known control inputs to that ing its velocity over time, determined by keeping track
system, and multiple sequential measurements (such as of wheel revolutions and the angle of the steering wheel.
from sensors) to form an estimate of the systems varying This is a technique known as dead reckoning. Typically,
quantities (its state) that is better than the estimate ob- the dead reckoning will provide a very smooth estimate
tained by using any one measurement alone. As such, it of the trucks position, but it will drift over time as small
is a common sensor fusion and data fusion algorithm.
errors accumulate.
All measurements and calculations based on models are In this example, the Kalman lter can be thought of as opestimated to some degree. Noisy sensor data, approxima- erating in two distinct phases: predict and update. In the
tions in the equations that describe how a system changes, prediction phase, the trucks old position will be modied
and external factors that are not accounted for introduce according to the physical laws of motion (the dynamic or
some uncertainty about the inferred values for a systems state transition model) plus any changes produced by
state. The Kalman lter averages a prediction of a sys- the accelerator pedal and steering wheel. Not only will
tems state with a new measurement using a weighted av- a new position estimate be calculated, but a new covarierage. The purpose of the weights is that values with ance will be calculated as well. Perhaps the covariance
better (i.e., smaller) estimated uncertainty are trusted is proportional to the speed of the truck because we are
more. The weights are calculated from the covariance, a more uncertain about the accuracy of the dead reckoning
measure of the estimated uncertainty of the prediction of position estimate at high speeds but very certain about the
the systems state. The result of the weighted average is position estimate when moving slowly. Next, in the upa new state estimate that lies between the predicted and date phase, a measurement of the trucks position is taken
measured state, and has a better estimated uncertainty from the GPS unit. Along with this measurement comes
than either alone. This process is repeated every time some amount of uncertainty, and its covariance relative to
step, with the new estimate and its covariance informing that of the prediction from the previous phase determines
the prediction used in the following iteration. This means how much the new measurement will aect the updated
that the Kalman lter works recursively and requires only prediction. Ideally, if the dead reckoning estimates tend
the last best guess, rather than the entire history, of a to drift away from the real position, the GPS measuresystems state to calculate a new state.
ment should pull the position estimate back towards the
Because the certainty of the measurements is often di- real position but not disturb it to the point of becoming
cult to measure precisely, it is common to discuss the l- rapidly changing and noisy.

Technical description and context

be regarded as analogous to the hidden Markov model,


with the key dierence that the hidden state variables
take values in a continuous space (as opposed to a discrete state space as in the hidden Markov model). There
The Kalman lter is an ecient recursive lter that is a strong duality between the equations of the Kalman
estimates the internal state of a linear dynamic system Filter and those of the hidden Markov model. A review of
from a series of noisy measurements. It is used in a this and other models is given in Roweis and Ghahramani
wide range of engineering and econometric applications (1999)[12] and Hamilton (1994), Chapter 13.[13]
from radar and computer vision to estimation of strucIn order to use the Kalman lter to estimate the intertural macroeconomic models,[10][11] and is an important
nal state of a process given only a sequence of noisy obtopic in control theory and control systems engineering.
servations, one must model the process in accordance
Together with the linear-quadratic regulator (LQR), the
with the framework of the Kalman lter. This means
Kalman lter solves the linear-quadratic-Gaussian control
specifying the following matrices: Fk, the state-transition
problem (LQG). The Kalman lter, the linear-quadratic
model; Hk, the observation model; Qk, the covariance of
regulator and the linear-quadratic-Gaussian controller are
the process noise; Rk, the covariance of the observation
solutions to what arguably are the most fundamental
noise; and sometimes Bk, the control-input model, for
problems in control theory.
each time-step, k, as described below.
In most applications, the internal state is much larger
Time= k -1
Time=k
Time= k +1
(more degrees of freedom) than the few observable paz
z
z
Observed
rameters which are measured. However, by combining
u
u
u
0, R
0, R
0, R
Supplied
a series of measurements, the Kalman lter can estimate
by user
0, Q
0, Q
0, Q
F B
F B
H
H
F B
H
the entire internal state.
v
v
w
w v
w
Hidden
k -1

k -1

k -1

In DempsterShafer theory, each state equation or observation is considered a special case of a linear belief function and the Kalman lter is a special case of combining
linear belief functions on a join-tree or Markov tree. Additional approaches include belief lters which use Bayes
or evidential updates to the state equations.
A wide variety of Kalman lters have now been developed, from Kalmans original formulation, now called
the simple Kalman lter, the KalmanBucy lter,
Schmidts extended lter, the information lter, and a
variety of square-root lters that were developed by
Bierman, Thornton and many others. Perhaps the most
commonly used type of very simple Kalman lter is the
phase-locked loop, which is now ubiquitous in radios,
especially frequency modulation (FM) radios, television
sets, satellite communications receivers, outer space communications systems, and nearly any other electronic
communications equipment.

k -1

xk-1,Pk -1

k +1

k +1

xk ,Pk

k +1

k+1

xk+1,Pk +1

Model underlying the Kalman lter. Squares represent matrices. Ellipses represent multivariate normal distributions (with the
mean and covariance matrix enclosed). Unenclosed values are
vectors. In the simple case, the various matrices are constant with
time, and thus the subscripts are dropped, but the Kalman lter
allows any of them to change each time step.

The Kalman lter model assumes the true state at time k


is evolved from the state at (k 1) according to

xk = Fk xk1 + Bk uk + wk
where
Fk is the state transition model which is applied to
the previous state xk;
Bk is the control-input model which is applied to the
control vector uk;

Underlying
model

dynamic

system

The Kalman lters are based on linear dynamic systems


discretized in the time domain. They are modelled on a
Markov chain built on linear operators perturbed by errors that may include Gaussian noise. The state of the system is represented as a vector of real numbers. At each
discrete time increment, a linear operator is applied to the
state to generate the new state, with some noise mixed in,
and optionally some information from the controls on the
system if they are known. Then, another linear operator
mixed with more noise generates the observed outputs
from the true (hidden) state. The Kalman lter may

wk is the process noise which is assumed to be drawn


from a zero mean multivariate normal distribution
with covariance Qk.
wk N (0, Qk )
At time k an observation (or measurement) zk of the true
state xk is made according to

zk = Hk xk + vk
where Hk is the observation model which maps the true
state space into the observed space and vk is the observation noise which is assumed to be zero mean Gaussian
white noise with covariance Rk.

6 DETAILS

some reason, the update may be skipped and multiple prediction steps performed. Likewise, if multiple indepenvk N (0, Rk )
dent observations are available at the same time, multiple
update steps may be performed (typically with dierent
The initial state, and the noise vectors at each step {x0 , observation matrices Hk).[16][17]
w1 , , wk, v1 vk} are all assumed to be mutually
independent.
Many real dynamical systems do not exactly t this model.
In fact, unmodelled dynamics can seriously degrade the
lter performance, even when it was supposed to work
with unknown stochastic signals as inputs. The reason for
this is that the eect of unmodelled dynamics depends on
the input, and, therefore, can bring the estimation algorithm to instability (it diverges). On the other hand, independent white noise signals will not make the algorithm
diverge. The problem of separating between measurement noise and unmodelled dynamics is a dicult one
and is treated in control theory under the framework of
robust control.[14][15]

Details

6.1 Predict
6.2 Update
The formula for the updated estimate covariance above is
only valid for the optimal Kalman gain. Usage of other
gain values requires a more complex formula found in the
derivations section.

6.3 Invariants
0|0 and P0|0
If the model is accurate, and the values for x
accurately reect the distribution of the initial state values, then the following invariants are preserved: (all estimates have a mean error of zero)

The Kalman lter is a recursive estimator. This means


that only the estimated state from the previous time step
k|k ] = E[xk x
k|k1 ] = 0
E[xk x
and the current measurement are needed to compute the
estimate for the current state. In contrast to batch esti E[yk ] = 0
mation techniques, no history of observations and/or esn|m
timates is required. In what follows, the notation x
represents the estimate of x at time n given observations where E[] is the expected value of , and covariance
matrices accurately reect the covariance of estimates
up to, and including at time m n.
The state of the lter is represented by two variables:
k|k , the a posteriori state estimate at time k given
x
observations up to and including at time k;
Pk|k , the a posteriori error covariance matrix (a
measure of the estimated accuracy of the state estimate).
The Kalman lter can be written as a single equation,
however it is most often conceptualized as two distinct
phases: Predict and Update. The predict phase uses
the state estimate from the previous timestep to produce
an estimate of the state at the current timestep. This predicted state estimate is also known as the a priori state
estimate because, although it is an estimate of the state at
the current timestep, it does not include observation information from the current timestep. In the update phase,
the current a priori prediction is combined with current
observation information to rene the state estimate. This
improved estimate is termed the a posteriori state estimate.
Typically, the two phases alternate, with the prediction
advancing the state until the next scheduled observation,
and the update incorporating the observation. However,
this is not necessary; if an observation is unavailable for

k|k )
Pk|k = cov(xk x
k|k1 )
Pk|k1 = cov(xk x
Sk = cov(yk )

6.4 Optimality and performance


It follows from theory that the Kalman lter is optimal in
cases where a) the model perfectly matches the real system, b) the entering noise is white and Gaussian and c)
the covariances of the noise are exactly known. Several
methods for the noise covariance estimation have been
proposed during past decades. After the covariances are
estimated, it is useful to evaluate the performance of the
lter, i.e. whether it is possible to improve the state estimation quality. If the Kalman lter works optimally,
the innovation sequence (the output prediction error) is a
white noise, therefore the whiteness property of the innovations measures lter performance. Several dierent methods can be used for this purpose.[18] If the noise
terms are non-Gaussian distributed, methods for assessing performance of the lter estimate, which use probability inequalities or large-sample theory, are given in [19]
and.[20]

xk = Fxk1 + wk
where wk N (0, Q) and

Q = GGT a2 =

Black: truth, green: ltered process, red: observations

Example application, technical

Consider a truck on frictionless, straight rails. Initially,


the truck is stationary at position 0, but it is bueted this
way and that by random uncontrolled forces. We measure
the position of the truck every t seconds, but these measurements are imprecise; we want to maintain a model
of where the truck is and what its velocity is. We show
here how we derive the model from which we create our
Kalman lter.
Since F, H, R, Q are constant, their time indices are
dropped.

t4
4

t3
2

t3
2

a2 .

At each time step, a noisy measurement of the true position of the truck is made. Let us suppose the measurement noise vk is also normally distributed, with mean 0
and standard deviation z.

zk = Hxk + vk
where
[
H= 1

and
[ ]
R = E[vk vTk ] = z2

The position and velocity of the truck are described by


We know the initial starting state of the truck with perfect
the linear state space
precision, so we initialize
xk =

[ ]
x
x

0|0 =
x

[ ]
0
0

where x is the velocity, that is, the derivative of position


and to tell the lter that we know the exact position and
with respect to time.
velocity, we give it a zero covariance matrix:
We assume that between the (k 1) and k timestep uncontrolled forces cause a constant acceleration of ak that
[
]
0 0
is normally distributed, with mean 0 and standard deviaP0|0 =
0 0
tion a. From Newtons laws of motion we conclude that

xk = Fxk1 + Gak

If the initial position and velocity are not known perfectly


the covariance matrix should be initialized with a suitably
large number, say L, on its diagonal.

(note that there is no Bu term since we have no known


[
]
control inputs. Instead, we assume that ak is the eect of
L 0
an unknown input and G applies that eect to the state P0|0 =
0 L
vector) where
The lter will then prefer the information from the rst
measurements over the information already in the model.
[
]
1 t
F=
0 1

8 Derivations

and
[ t2 ]
G=

t
so that

8.1 Deriving the a posteriori estimate covariance matrix


Starting with our invariant on the error covariance Pk | k
as above

8 DERIVATIONS

k|k )
Pk|k = cov(xk x
k|k
substitute in the denition of x

Pk|k = cov(xk (
xk|k1 + Kk yk ))
and substitute yk

estimate covariance matrix Pk|k . By expanding out the


terms in the equation above and collecting, we get:

Pk|k = Pk|k1 Kk Hk Pk|k1 Pk|k1 HTk KTk + Kk (Hk Pk|k1 HTk + R


= Pk|k1 Kk Hk Pk|k1 Pk|k1 HTk KTk + Kk Sk KTk
The trace is minimized when its matrix derivative with
respect to the gain matrix is zero. Using the gradient matrix rules and the symmetry of the matrices involved we
nd that

k|k1 )))
Pk|k = cov(xk (
xk|k1 + Kk (zk Hk x
and zk

tr(Pk|k )
= 2(Hk Pk|k1 )T + 2Kk Sk = 0.
Kk

k|k1 )))
Pk|k = cov(xk (
xk|k1 +Kk (Hk xk +vk Hk x

Solving this for Kk yields the Kalman gain:

and by collecting the error vectors we get

k|k1 ) Kk vk )
Pk|k = cov((I Kk Hk )(xk x

Kk Sk = (Hk Pk|k1 )T = Pk|k1 HTk


Kk = Pk|k1 HTk S1
k

This gain, which is known as the optimal Kalman gain, is


Since the measurement error vk is uncorrelated with the
the one that yields MMSE estimates when used.
other terms, this becomes

k|k1 )) + cov(Kk vk )
Pk|k = cov((I Kk Hk )(xk x

8.3 Simplication of the a posteriori error


covariance formula

by the properties of vector covariance this becomes

The formula used to calculate the a posteriori error covariance can be simplied when the Kalman gain equals
the optimal
value derived above. Multiplying both sides
T
Pk|k = (IKk Hk )cov(xk
xk|k1 )(IKk Hk )T +Kk cov(v
ofk )K
ourk Kalman gain formula on the right by SkKkT , it
follows that
which, using our invariant on Pk | k and the denition
of Rk becomes
Kk Sk KTk = Pk|k1 HTk KTk
Pk|k = (I Kk Hk )Pk|k1 (I Kk Hk )T + Kk Rk KTk

Referring back to our expanded formula for the a posteriori error covariance,

This formula (sometimes known as the "Joseph form"


of the covariance update equation) is valid for any value
of Kk. It turns out that if Kk is the optimal Kalman gain,
Pk|k = Pk|k1 Kk Hk Pk|k1 Pk|k1 HTk KTk +Kk Sk KTk
this can be simplied further as shown below.
we nd the last two terms cancel out, giving

8.2

Kalman gain derivation

The Kalman lter is a minimum mean-square error esti- Pk|k = Pk|k1 Kk Hk Pk|k1 = (I Kk Hk )Pk|k1 .
mator. The error in the a posteriori state estimation is
This formula is computationally cheaper and thus nearly
always used in practice, but is only correct for the optimal gain. If arithmetic precision is unusually low causk|k
xk x
ing problems with numerical stability, or if a non-optimal
We seek to minimize the expected value of the square Kalman gain is deliberately used, this simplication cank|k 2 ] . This not be applied; the a posteriori error covariance formula
of the magnitude of this vector, E[xk x
is equivalent to minimizing the trace of the a posteriori as derived above (Joseph form) must be used.

Sensitivity analysis

error often causes a small positive eigenvalue to be computed as a negative number. This renders the numerical
The Kalman ltering equations provide an estimate of the representation of the state covariance matrix P indenite,
k|k and its error covariance Pk|k recursively. The while its true form is positive-denite.
state x
estimate and its quality depend on the system parameters Positive denite matrices have the property that they have
and the noise statistics fed as inputs to the estimator. This a triangular matrix square root P = SST . This can be
section analyzes the eect of uncertainties in the statisti- computed eciently using the Cholesky factorization alcal inputs to the lter.[21] In the absence of reliable statis- gorithm, but more importantly, if the covariance is kept
tics or the true values of noise covariance matrices Qk in this form, it can never have a negative diagonal or
and Rk , the expression
become asymmetric. An equivalent form, which avoids
many of the square root operations required by the matrix
square root yet preserves the desirable numerical properPk|k = (I Kk Hk )Pk|k1 (I Kk Hk )T + Kk Rk KTk
ties, is the U-D decomposition form, P = UDUT , where
U is a unit triangular matrix (with unit diagonal), and D
no longer provides the actual error covariance. In other
is a diagonal matrix.
k|k )(xk x
k|k )T ] . In most
words, Pk|k = E[(xk x
real-time applications, the covariance matrices that are Between the two, the U-D factorization uses the same
used in designing the Kalman lter are dierent from the amount of storage, and somewhat less computation, and
actual (true) noise covariances matrices. This sensitivity is the most commonly used square root form. (Early litanalysis describes the behavior of the estimation error co- erature on the relative eciency is somewhat misleading,
variance when the noise covariances as well as the system as it assumed that square roots were much more timematrices Fk and Hk that are fed as inputs to the lter are consuming than divisions,[22]:69 while on 21-st century
incorrect. Thus, the sensitivity analysis describes the ro- computers they are only slightly more expensive.)
bustness (or sensitivity) of the estimator to misspecied Ecient algorithms for the Kalman prediction and upstatistical and parametric inputs to the estimator.
date steps in the square root form were developed by G.
This discussion is limited to the error sensitivity analysis for the case of statistical uncertainties. Here the
actual noise covariances are denoted by Qak and Rak respectively, whereas the design values used in the estimator are Qk and Rk respectively. The actual error covariance is denoted by Pak|k and Pk|k as computed by
the Kalman lter is referred to as the Riccati variable.
When Qk Qak and Rk Rak , this means that
Pk|k = Pak|k . While computing the actual error covarik|k )(xk x
k|k )T ] , subance using Pak|k = E[(xk x
stituting for b
xk|k and using the fact that E[wk wTk ] = Qak
T
and E[vk vk ] = Rak , results in the following recursive
equations for Pak|k :
Pak|k1 = Fk Pak1|k1 FTk + Qak
and
Pak|k = (I Kk Hk )Pak|k1 (I Kk Hk )T + Kk Rak KTk

J. Bierman and C. L. Thornton.[22][23]


The LDLT decomposition of the innovation covariance
matrix S is the basis for another type of numerically ecient and robust square root lter.[24] The algorithm starts
with the LU decomposition as implemented in the Linear
Algebra PACKage (LAPACK). These results are further
factored into the LDLT structure with methods given by
Golub and Van Loan (algorithm 4.1.2) for a symmetric
nonsingular matrix.[25] Any singular covariance matrix is
pivoted so that the rst diagonal partition is nonsingular
and well-conditioned. The pivoting algorithm must retain
any portion of the innovation covariance matrix directly
corresponding to observed state-variables H x | - that
are associated with auxiliary observations in y . the ldlt
square-root lter requires orthogonalization of the observation vector.[23][24] This may be done with the inverse
square-root of the covariance matrix for the auxiliary
variables using Method 2 in Higham (2002, p. 263).[26]

11 Relationship

to

recursive

While computing Pk|k , by design the lter implicitly assumes that E[wk wTk ] = Qk and E[vk vTk ] = Rk . Note
Bayesian estimation
that the recursive expressions for Pak|k and Pk|k are identical except for the presence of Qak and Rak in place of the
The Kalman lter can be presented as one of the simdesign values Qk and Rk respectively.
plest dynamic Bayesian networks. The Kalman lter calculates estimates of the true values of states recursively
over time using incoming measurements and a mathemat10 Square root form
ical process model. Similarly, recursive Bayesian estimation calculates estimates of an unknown probability denOne problem with the Kalman lter is its numerical stabil- sity function (PDF) recursively over time using incoming
ity. If the process noise covariance Qk is small, round-o measurements and a mathematical process model.[27]

12 MARGINAL LIKELIHOOD

In recursive Bayesian estimation, the true state is assumed The probability distribution of the update is proportional
to be an unobserved Markov process, and the measure- to the product of the measurement likelihood and the prements are the observed states of a hidden Markov model dicted state.
(HMM).
p(xk | Zk ) =

p(zk | xk )p(xk | Zk1 )


p(zk | Zk1 )

The denominator

p(zk | Zk1 ) =
hidden markov model

p(zk | xk )p(xk | Zk1 )dxk

is a normalization term.

because of the Markov assumption, the true state is con- The remaining probability density functions are
ditionally independent of all earlier states given the immediately previous state.
p(xk | xk1 ) = N (Fk xk1 , Qk )
p(xk | x0 , . . . , xk1 ) = p(xk | xk1 )

p(zk | xk ) = N (Hk xk , Rk )

Similarly, the measurement at the k-th timestep is depen- p(xk1 | Zk1 ) = N (


xk1 , Pk1 )
dent only upon the current state and is conditionally indeNote that the PDF at the previous timestep is inductively
pendent of all other states given the current state.
assumed to be the estimated state and covariance. This
is justied because, as an optimal estimator, the Kalman
lter makes best use of the measurements, therefore the
p(zk | x0 , . . . , xk ) = p(zk | xk )
PDF for xk given the measurements Zk is the Kalman
Using these assumptions the probability distribution over lter estimate.
all states of the hidden Markov model can be written simply as:

12 Marginal likelihood
k

to the recursive Bayesian interpretation described


p(zi | xi )p(xi | xi1Related
)
above, the Kalman lter can be viewed as a generative
model, i.e., a process for generating a stream of random
However, when the Kalman lter is used to estimate the
observations z = (z0, z1, z2, ). Specically, the process
state x, the probability distribution of interest is that asis
sociated with the current states conditioned on the measurements up to the current timestep. This is achieved by
1. Sample a hidden state x0 from the Gaussian prior
marginalizing out the previous states and dividing by the
distribution p(x0 ) = N (
x0|0 , P0|0 ) .
probability of the measurement set.
p(x0 , . . . , xk , z1 , . . . , zk ) = p(x0 )

i=1

This leads to the predict and update steps of the Kalman


lter written probabilistically. The probability distribution associated with the predicted state is the sum (integral) of the products of the probability distribution associated with the transition from the (k 1)-th timestep to
the k-th and the probability distribution associated with
the previous state, over all possible xk1 .

p(xk | Zk1 ) =

p(xk | xk1 )p(xk1 | Zk1 ) dxk1

The measurement set up to time t is

Zt = {z1 , . . . , zt }

2. Sample an observation z0 from the observation


model p(z0 | x0 ) = N (H0 x0 , R0 ) .
3. For k = 1, 2, 3, ... . . . , do
(a) Sample the next hidden state xk from the transition model p(xk | xk1 ) = N (Fk xk1 +
Bk uk , Qk ) .
(b) Sample an observation zk from the observation
model p(zk | xk ) = N (Hk xk , Rk ) .
Note that this process has identical structure to the hidden
Markov model, except that the discrete state and observations are replaced with continuous variables sampled
from Gaussian distributions.

9
In some applications, it is useful to compute the probability that a Kalman lter with a given set of parameters (prior distribution, transition and observation models, and control inputs) would generate a particular observed signal. This probability is known as the marginal
likelihood because it integrates over (marginalizes out)
the values of the hidden state variables, so it can be
computed using only the observed signal. The marginal
likelihood can be useful to evaluate dierent parameter
choices, or to compare the Kalman lter against other
models using Bayesian model comparison.

in the scene (or, the number of objects is known but is


greater than one). In such a scenario, it can be unknown
apriori which observations/measurements were generated
by which object. A multiple hypothesis tracker (MHT)
typically will form dierent track association hypotheses, where each hypothesis can be viewed as a Kalman
lter (in the linear Gaussian case) with a specic set of parameters associated with the hypothesized object. Thus,
it is important to compute the likelihood of the observations for the dierent hypotheses under consideration,
such that the most-likely one can be found.

It is straightforward to compute the marginal likelihood


as a side eect of the recursive ltering computation. By
the chain rule, the likelihood can be factored as the prod- 13 Information lter
uct of the probability of each observation given previous
observations,
In the information lter, or inverse covariance lter, the
estimated covariance and estimated state are replaced by
the information matrix and information vector respecT

tively. These are dened as:


p(z) =
p(zk | zk1 , . . . , z0 )
k=0

and because the Kalman lter describes a Markov pro- Yk|k = P1


k|k
cess, all relevant information from previous observations
k|k1 , Pk|k1 y = P1 x
is contained in the current state estimate x

k|k
k|k k|k
. Thus the marginal likelihood is given by
Similarly the predicted covariance and state have equivalent information forms, dened as:

p(z) =
p(zk | xk )p(xk | zk1 , . . . , z0 )dxk
k=0
Yk|k1 = P1
k|k1

1
k|k1 , Pk|k1 )dxyk
=
N (zk ; Hk xk , Rk )N (xk ; x
k|k1
k|k1 = Pk|k1 x
k=0

k|k1 , Rk + Hk Pk|k1 HTk )


N (zk ; Hk x

as have the measurement covariance and measurement


vector, which are dened as:

k|k1 , Sk ),
N (zk ; Hk x

Ik = HTk R1
k Hk

k=0

k=0

i = HTk R1
k zk
i.e., a product of Gaussian densities, each correspond- k
ing to the density of one observation zk under the cur- The information update now becomes a trivial sum.
k|k1 , Sk . This can easily
rent ltering distribution Hk x
be computed as a simple recursive update; however, to
avoid numeric underow, in a practical implementation Y = Y
k|k
k|k1 + Ik
it is usually desirable to compute the log marginal likelihood = log p(z) instead. Adopting the convention yk|k = yk|k1 + ik
(1) = 0 , this can be done via the recursive update rule
The main advantage of the information lter is that N
measurements can be ltered at each timestep simply by
summing their information matrices and vectors.
)
1 ( T 1
yk Sk yk + log |Sk | + dy log 2
(k) = (k1)
2
where dy is the dimension of the measurement vector.

[28]

Y
=
Y
+
Ik,j
k|k
k|k1
An important application where such a (log) likelihood
j=1
of the observations (given the lter parameters) is used
is multi-target tracking. For example, consider an obN

ject tracking scenario where a stream of observations is y = y


ik,j
k|k
k|k1 +
the input, however, it is unknown how many objects are
j=1

10

15 FIXED-INTERVAL SMOOTHERS

To predict the information lter the information matrix If the estimation error covariance is dened so that
and vector can be converted back to their state space
equivalents, or alternatively the information space predic[(
]
) (
)
tion can be used.
ti|t
ti|t | z1 . . . zt ,
Pi := E xti x
xti x
then we have that the improvement on the estimation of
xti is given by:

1
T
Mk = [F1
k ] Yk1|k1 Fk
1
Ck = Mk [Mk + Q1
k ]

Lk = I Ck

P Pi =

T
Yk|k1 = Lk Mk LTk + Ck Q1
k Ck

[
]1 ( (i) )T
P(j) HT HPHT + R
H P

j=0

T
yk|k1 = Lk [F1
yk1|k1
k ]

Note that if F and Q are time invariant these values can


be cached. Note also that F and Q need to be invertible.

14

i [

Fixed-lag smoother

15 Fixed-interval smoothers
The optimal xed-interval smoother provides the optimal
k|n ( k < n ) using the measurements from
estimate of x
a xed interval z1 to zn . This is also called Kalman
Smoothing. There are several smoothing algorithms in
common use.

The optimal xed-lag smoother provides the optimal eskN |k for a given xed-lag N using the meatimate of x
surements from z1 to zk . It can be derived using the pre- 15.1 RauchTungStriebel
vious theory via an augmented state, and the main equaThe RauchTungStriebel (RTS) smoother is an ecient
tion of the lter is the following:
two-pass algorithm for xed interval smoothing.[29]


0
I

I
t1|t 0
t|t1 +

= .. x
..
..

.
.
.
tN +1|t
x
0
0

t|t
x

...
0
..
.
...

where:

The
forward
pass is the same as the regular Kalman lter
0 x
K(0) These ltered a-priori and a-posteriori state
t1|t1 algorithm.
.. x
K(1)x

t2|t1
k|k1
k|k and covariances Pk|k1 , Pk|k are
,x
.
estimates

yint|t1
..
.. use
saved
for
the
backwards pass.
..
.
.
.
1)
pass, we compute the smoothed state
tN +1|t1 In the
K(Nbackwards
I x
k|n and covariances Pk|n . We start at the last
estimates x
time step and proceed backwards in time using the following recursive equations:

t|t1 is estimated via a standard Kalman lter;


x
yt|t1 = zt H
xt|t1 is the innovation produced x
k|n = x
k|k + Ck (
k+1|k )
xk+1|n x
considering the estimate of the standard Kalman lter;
Pk|n = Pk|k + Ck (Pk+1|n Pk+1|k )CTk
ti|t with i = 1, . . . , N 1 are new where
the various x
variables, i.e. they do not appear in the standard
Kalman lter;
Ck = Pk|k FTk+1 P1
k+1|k
the gains are computed via the following scheme:

[
]1
K(i) = P(i) HT HPHT + R

Note that xk|k is the a-posteriori state estimate of


timestep k and xk+1|k is the a-priori state estimate of
timestep k + 1 . The same notation applies to the covariance.

and
[
]i
T
P(i) = P [F KH]
where P and K are the prediction error covariance and the gains of the standard Kalman lter
(i.e., Pt|t1 ).

15.2 Modied BrysonFrazier smoother


An alternative to the RTS algorithm is the modied
BrysonFrazier (MBF) xed interval smoother developed
by Bierman.[23] This also uses a backward pass that processes data saved from the Kalman lter forward pass.

11
The equations for the backward pass involve the recursive
computation of data which are used at each observation
yk|N = zk Rk k
time to compute the smoothed state and covariance.
The recursive equations are

Taking the causal part of this minimum-variance


smoother yields

T
k = HTk S1 Hk + C

k k Ck
k
yk|k = zk Rk S1/2
k
k

k1 = FTk
k Fk

which is identical to the minimum-variance Kalman lter. The above solutions minimize the variance of the output estimation error. Note that the RauchTungStriebel
smoother derivation assumes that the underlying distributions are Gaussian, whereas the minimum-variance solutions do not. Optimal smoothers for state estimation and
input estimation can be constructed similarly.

n = 0

k = HT S1 y + C
T

k k
k k
k
k1 = FT

k k
n = 0

k = I Kk Hk
where Sk is the residual covariance and C
. The smoothed state and covariance can then be found A continuous-time version of the above smoother is described in.[31][32]
by substitution in the equations

Expectation-maximization algorithms may be employed


to calculate approximate maximum likelihood estimates
of unknown state-space parameters within minimumvariance lters and smoothers. Often uncertainties remain within problem assumptions. A smoother that accommodates uncertainties can be designed by adding a
positive denite term to the Riccati equation.[33]

k Pk|k
Pk|n = Pk|k Pk|k
k
xk|n = xk|k Pk|k
or

k Pk|k1
Pk|n = Pk|k1 Pk|k1

In cases where the models are nonlinear, step-wise linearizations may be within the minimum-variance lter
and smoother recursions (extended Kalman ltering).

k .
xk|n = xk|k1 Pk|k1
An important advantage of the MBF is that it does not
require nding the inverse of the covariance matrix.

15.3

Minimum-variance smoother

The minimum-variance smoother can attain the bestpossible error performance, provided that the models are
linear, their parameters and the noise statistics are known
precisely.[30] This smoother is a time-varying state-space
generalization of the optimal non-causal Wiener lter.

16 Accommodating Poisson noise


The Kalman lter is the optimum estimator from the
set of all causal linear estimators when the underlying
noise processes are zero-mean white processes. In some
applications, the measurement noise may be Poissondistributed. The lter recursions may be generalized
to include a Poisson measurement noise component by
adding the Poisson intensity to the innovation (or residual) covariance:

The smoother calculations are done in two passes. The Sk = Hk Pk|k1 HT + Rk +


k
forward calculations involve a one-step-ahead predictor
An expectation-maximization algorithm may be emand are given by
ployed to iteratively estimate an unknown Poisson noise
intensity.[34]
k+1|k = (Fk Kk Hk )
x
xk|k1 + Kk zk
1/2

k = Sk

1/2

k|k1 + Sk
Hk x

zk

The above system is known as the inverse Wiener-Hopf


factor. The backward recursion is the adjoint of the above
forward system. The result of the backward pass k may
be calculated by operating the forward equations on the
time-reversed k and time reversing the result. In the
case of output estimation, the smoothed estimate is given
by

17 Frequency-weighted
lters

Kalman

Pioneering research on the perception of sounds at dierent frequencies was conducted by Fletcher and Munson in
the 1930s. Their work led to a standard way of weighting
measured sound levels within investigations of industrial
noise and hearing loss. Frequency weightings have since

12

18 NON-LINEAR FILTERS

been used within lter and controller designs to manage non-linear, the extended Kalman lter can give particperformance within bands of interest.
ularly poor performance.[36] This is because the covariTypically, a frequency shaping function is used to weight ance is propagated through linearization of the underlying
model. The unscented Kalman lter (UKF)
the average power of the error spectral density in a spec- non-linear
[36]
uses
a
deterministic sampling technique known as
ied frequency band. Let y - y denote the output estithe
unscented
transform to pick a minimal set of sammation error exhibited by a conventional Kalman lter.
ple
points
(called
sigma points) around the mean. These
Also, let W denote a causal frequency weighting transsigma
points
are
then
propagated through the non-linear
fer function. The optimum solution which minimizes the
functions,
from
which
the mean and covariance of the
variance of W ( y - y ) arises by simply constructing
estimate
are
then
recovered.
The result is a lter which
1
W y .
more accurately captures the true mean and covariance.
The design of W remains an open question. One way (This can be veried using Monte Carlo sampling or
of proceeding is to identify a system which generates the through a Taylor series expansion of the posterior statisestimation error and setting W equal to the inverse of tics.) In addition, this technique removes the requirement
that system.[35] This procedure may be iterated to ob- to explicitly calculate Jacobians, which for complex functain mean-square error improvement at the cost of in- tions can be a dicult task in itself (i.e., requiring comcreased lter order. The same technique can be applied plicated derivatives if done analytically or being computo smoothers.
tationally costly if done numerically).

18

Non-linear lters

Predict

As with the EKF, the UKF prediction can be used indeThe basic Kalman lter is limited to a linear assumption. pendently from the UKF update, in combination with a
More complex systems, however, can be nonlinear. The linear (or indeed EKF) update, or vice versa.
non-linearity can be associated either with the process
The estimated state and covariance are augmented with
model or with the observation model or with both.
the mean and covariance of the process noise.

18.1

Extended Kalman lter

Main article: Extended Kalman lter

xak1|k1 = [
xTk1|k1 E[wTk ] ]T
[
Pk1|k1
0
Pak1|k1 =
0
Qk

In the extended Kalman lter (EKF), the state transition


and observation models need not be linear functions of A set of 2L + 1 sigma points is derived from the augthe state but may instead be non-linear functions. These mented state and covariance where L is the dimension of
the augmented state.
functions are of dierentiable type.

xk = f (xk1 , uk ) + wk

0k1|k1 = xak1|k1

zk = h(xk ) + vk

ik1|k1 = xak1|k1 +

(
)
(L + )Pak1|k1 ,
i = 1, . . . , L
i
(
)
= xak1|k1
(L + )Pak1|k1
,
i = L+1, . . . , 2

The function f can be used to compute the predicted state


from the previous estimate and similarly the function h i
k1|k1
can be used to compute the predicted measurement from
the predicted state. However, f and h cannot be applied to where
the covariance directly. Instead a matrix of partial derivatives (the Jacobian) is computed.
(
)
a
(L
+
)P
k1|k1
At each timestep the Jacobian is evaluated with cur-

iL

rent predicted states. These matrices can be used in


the Kalman lter equations. This process essentially lin- is the ith column of the matrix square root of
earizes the non-linear function around the current estimate.
(L + )Pak1|k1

18.2

Unscented Kalman lter

using the denition: square root A of matrix B satises

When the state transition and observation modelsthat


is, the predict and update functions f and h are highly B AAT .

18.2

Unscented Kalman lter

13

The matrix square root should be calculated using numer- Alternatively if the UKF prediction has been used the
ically ecient and stable methods such as the Cholesky sigma points themselves can be augmented along the foldecomposition.
lowing lines
The sigma points are propagated through the transition
function f.
k|k1 := [Tk|k1
ik|k1 = f (ik1|k1 )

2L

2L

[
Rak =

0
0

0
Rk

The sigma points are projected through the observation


function h.

Wsi ik|k1

i=0

Pk|k1 =

(L + )Rak

where

i = 0, . . . , 2L

where f : RL R|x| . The weighted sigma points are recombined to produce the predicted state and covariance.

k|k1 =
x

E[vTk ] ]T

k|k1 ][ik|k1 x
k|k1 ]T
Wci [ik|k1 x

i=0

ki = h(ik|k1 )

i = 0..2L

where the weights for the state and covariance are given
The weighted sigma points are recombined to produce
by:
the predicted measurement and predicted measurement
covariance.

0
Ws =
L+
2L

zk =
Wsi ki
Wc0 =
+ (1 2 + )
L+
i=0
1
i
i
Ws = Wc =
2(L + )
2L

2
Pzk zk =
Wci [ki zk ][ki zk ]T
= (L + ) L
i=0

and control the spread of the sigma points. is related to the distribution of x . Normal values are = The state-measurement cross-covariance matrix,
103 , = 0 and = 2 . If the true distribution of x is
Gaussian, = 2 is optimal.[37]
2L

k|k1 ][ki zk ]T
P
=
Wci [ik|k1 x
xk zk
Update
i=0

The predicted state and covariance are augmented as beis used to compute the UKF Kalman gain.
fore, except now with the mean and covariance of the
measurement noise.
xak|k1 = [
xTk|k1 E[vTk ] ]T
[
Pk|k1
0
a
Pk|k1 =
0
Rk

Kk = Pxk zk P1
zk zk
As with the Kalman lter, the updated state is the predicted state plus the innovation weighted by the Kalman
gain,

As before, a set of 2L + 1 sigma points is derived from the


augmented state and covariance where L is the dimension
of the augmented state.
k|k = x
k|k1 + Kk (zk zk )
x
And the updated covariance is the predicted covariance,
minus the predicted measurement covariance, weighted
by the Kalman gain.
i = 1, . . . , L

0k|k1 = xak|k1
ik|k1 = xak|k1 +
ik|k1 = xak|k1

(
(

(L + )Pak|k1
(L + )Pak|k1

)
,
)

,
iL

i = LP
+k|k
1, .=. .P, k|k1
2L Kk Pz

k zk

KkT

14

19

22

KalmanBucy lter

APPLICATIONS

[
]
[
]
0|0 = E x(t0 ) , P0|0 = V ar x(t0 )
Initialize x

(t) = F(t)
k1|k1
x
x(t) + B(t)u(t) with ,
x(tk1 ) = x
The KalmanBucy lter (named after Richard Snow

x
=
x
(t
)
k
k|k1
den Bucy) is a continuous time version of the Kalman
Predict
lter.[38][39]

P(t)
= F(t)P(t) + P(t)F(t)T + Q(t) with ,P(tk1 ) = Pk1|k
It is based on the state space model

Pk|k1 = P(tk )

The prediction equations are derived from those of


continuous-time Kalman lter without update from measurements, i.e., K(t) = 0 . The predicted state and covariance are calculated respectively by solving a set of
z(t) = H(t)x(t) + v(t)
dierential equations with the initial value equal to the
where Q(t) and R(t) represent the intensities of the two estimate at the previous step.
white noise terms w(t) and v(t) , respectively.
(
)1
The lter consists of two dierential equations, one for Update Kk = Pk|k1 HTk Hk Pk|k1 HTk + Rk
the state estimate and one for the covariance:
k|k = x
k|k1 + Kk (zk Hk x
k|k1 )
x
d
x(t) = F(t)x(t) + B(t)u(t) + w(t)
dt

d
(t) = F(t)
x
x(t) + B(t)u(t) + K(t)(z(t) H(t)
x(t))
dt

Pk|k = (I Kk Hk )Pk|k1

The update equations are identical to those of the


d
T
T
P(t) = F(t)P(t)+P(t)F (t)+Q(t)K(t)R(t)K (t) discrete-time Kalman lter.
dt
where the Kalman gain is given by

K(t) = P(t)HT (t)R1 (t)

21 Variants for the recovery of


sparse signals

The traditional Kalman lter has also been employed for


the recovery of sparse, possibly dynamic, signals from
noisy observations. Recent works[41][42][43] utilize notions from the theory of compressed sensing/sampling,
such as the restricted isometry property and related probabilistic recovery arguments, for sequentially estimating
The distinction between the prediction and update steps
the sparse state in intrinsically low-dimensional systems.
of discrete-time Kalman ltering does not exist in continuous time.

Note that in this expression for K(t) the covariance of the


observation noise R(t) represents at the same time the
covariance of the prediction error (or innovation) y(t) =
z(t) H(t)
x(t) ; these covariances are equal only in the
case of continuous time.[40]

The second dierential equation, for the covariance, is an


example of a Riccati equation.

22 Applications
Attitude and heading reference systems

20

Hybrid Kalman lter

Most physical systems are represented as continuoustime models while discrete-time measurements are frequently taken for state estimation via a digital processor.
Therefore, the system model and measurement model are
given by

Autopilot
Battery state of charge (SoC) estimation[44][45]
Brain-computer interface
Chaotic signals
Tracking and vertex tting of charged particles in
particle detectors[46]

(
)

x(t)
= F(t)x(t) + B(t)u(t) + w(t), w(t) N 0, Q(t) Tracking of objects in computer vision
zk = Hk xk + vk ,
vk N (0, Rk )
Dynamic positioning
where
Economics, in particular macroeconomics, time series analysis, and econometrics[47]
xk = x(tk )

Inertial guidance system

15
Nuclear medicine single photon emission computed tomography image restoration[48]
Orbit Determination
Power system state estimation
Radar tracker
Satellite navigation systems
Seismology

[49]

Sensorless control of AC motor variable-frequency


drives
Simultaneous localization and mapping
Speech enhancement
Visual odometry
Weather forecasting
Navigation system
3D modeling
Structural health monitoring
Human sensorimotor processing[50]

23

See also

SchmidtKalman lter
Separation principle
Sliding mode control
Stochastic dierential equations
Volterra series
Wiener lter
Zakai equation

24 References
[1] Wolpert, Daniel; Ghahramani, Zoubin (2000). Computational principles of movement neuroscience. Nature Neuroscience 3: 12127. doi:10.1038/81497. PMID
11127840.
[2] Kalman, R. E. (1960). A New Approach to Linear Filtering and Prediction Problems. Journal of Basic Engineering 82: 35. doi:10.1115/1.3662552.
[3] Steen L. Lauritzen. Time series analysis in 1880. A
discussion of contributions made by T.N. Thiele. International Statistical Review 49, 1981, 319333. JSTOR
1402616
[4] Steen L. Lauritzen, Thiele: Pioneer in Statistics, Oxford
University Press, 2002. ISBN 0-19-850972-3.
[5] Mohinder S. Grewal and Angus P. Andrews

Alpha beta lter


Bayesian MMSE estimator
Covariance intersection
Data assimilation
Ensemble Kalman lter
Extended Kalman lter
Fast Kalman lter
Filtering problem (stochastic processes)
Generalized ltering
Invariant extended Kalman lter
Kernel adaptive lter
Linear-quadratic-Gaussian control
Moving horizon estimation
Non-linear lter
Particle lter estimator
Predictor corrector
Recursive least squares

[6] Stratonovich, R. L. (1959). Optimum nonlinear systems


which bring about a separation of a signal with constant
parameters from noise. Radiozika, 2:6, pp. 892901.
[7] Stratonovich, R. L. (1959). On the theory of optimal nonlinear ltering of random functions. Theory of Probability
and its Applications, 4, pp. 223225.
[8] Stratonovich, R. L. (1960) Application of the Markov processes theory to optimal ltering. Radio Engineering and
Electronic Physics, 5:11, pp. 119.
[9] Stratonovich, R. L. (1960). Conditional Markov Processes. Theory of Probability and its Applications, 5, pp.
156178.
[10] Ingvar Strid; Karl Walentin (April 2009). Block
Kalman Filtering for Large-Scale DSGE Models. Computational Economics (Springer) 33 (3): 277304.
doi:10.1007/s10614-008-9160-4.
[11] Martin Mller Andreasen (2008). Non-linear DSGE
Models, The Central Dierence Kalman Filter, and The
Mean Shifted Particle Filter (PDF).
[12] Roweis, S; Ghahramani, Z (1999). A unifying review of linear gaussian models. Neural computation 11
(2): 30545. doi:10.1162/089976699300016674. PMID
9950734.
[13] Hamilton, J. (1994), Time Series Analysis, Princeton University Press. Chapter 13, 'The Kalman Filter'.

16

24

REFERENCES

[14] Ishihara, J.Y.; Terra, M.H.; Campos, J.C.T. (2006).


Robust Kalman Filter for Descriptor Systems. IEEE
Transactions on Automatic Control 51 (8): 1354.
doi:10.1109/TAC.2006.878741.

[27] Masreliez, C. Johan; Martin, R D (1977). Robust


Bayesian estimation for the linear model and robustifying
the Kalman lter. IEEE Transactions on Automatic Control 22 (3): 361371. doi:10.1109/TAC.1977.1101538.

[15] Terra, Marco H.; Cerri, Joao P.; Ishihara, Joao Y.


(2014).
Optimal Robust Linear Quadratic Regulator for Systems Subject to Uncertainties.
IEEE
Transactions on Automatic Control 59 (9): 25862591.
doi:10.1109/TAC.2014.2309282.

[28] Ltkepohl, Helmut (1991). Introduction to Multiple Time


Series Analysis. Heidelberg: Springer-Verlag Berlin,. p.
435.

[16] Kelly, Alonzo (1994). A 3D state space formulation of a


navigation Kalman lter for autonomous vehicles (PDF).
DTIC Document: 13. 2006 Corrected Version
[17] Reid, Ian; Term, Hilary. Estimation II (PDF). www.
robots.ox.ac.uk. Oxford University. Retrieved 6 August
2014.
[18] Three optimality tests with numerical examples are described in Peter, Matisko, (2012). Optimality Tests and
Adaptive Kalman Filter. 16th IFAC Symposium on System Identication. 16th IFAC Symposium on System
Identication. p. 1523. doi:10.3182/20120711-3-BE2027.00011. ISBN 978-3-902823-06-9.
[19] Spall, James C. (1995). The Kantorovich inequality for error analysis of the Kalman lter with unknown noise distributions. Automatica 31 (10): 1513.
doi:10.1016/0005-1098(95)00069-9.
[20] Maryak, J.L.; Spall, J.C.; Heydon, B.D. (2004).
Use of the Kalman Filter for Inference in StateSpace Models with Unknown Noise Distributions.
IEEE Transactions on Automatic Control 49: 87.
doi:10.1109/TAC.2003.821415.
[21] Anderson, Brian D. O.; Moore, John B. (1979). Optimal
Filtering. New York: Prentice Hall. pp. 129133. ISBN
0-13-638122-7.
[22] Thornton, Catherine L. (15 October 1976). Triangular
Covariance Factorizations for Kalman Filtering (PDF).
(PhD thesis). NASA. NASA Technical Memorandum 33798.
[23] Bierman, G.J. (1977). Factorization Methods for
Discrete Sequential Estimation. Factorization Methods for Discrete Sequential Estimation (Academic Press).
Bibcode:1977fmds.book.....B.
[24] Bar-Shalom, Yaakov; Li, X. Rong; Kirubarajan, Thiagalingam (July 2001). Estimation with Applications to
Tracking and Navigation. New York: John Wiley & Sons.
pp. 308317. ISBN 978-0-471-41655-5.

[29] Rauch, H.E.; Tung, F.; Striebel, C. T. (August


1965).
Maximum likelihood estimates of linear
dynamic systems.
AIAA J 3 (8): 14451450.
Bibcode:1965AIAAJ...3.1445. doi:10.2514/3.3166.
[30] Einicke, G.A. (March 2006). Optimal and Robust Noncausal Filter Formulations. IEEE Trans. Signal Processing 54 (3): 10691077. Bibcode:2006ITSP...54.1069E.
doi:10.1109/TSP.2005.863042.
[31] Einicke, G.A. (April 2007).
Asymptotic Optimality of the Minimum-Variance Fixed-Interval
Smoother.
IEEE Trans.
Signal Processing 55
Bibcode:2007ITSP...55.1543E.
(4):
15431547.
doi:10.1109/TSP.2006.889402.
[32] Einicke, G.A.; Ralston, J.C.; Hargrave, C.O.; Reid, D.C.;
Hainsworth, D.W. (December 2008). Longwall Mining Automation. An Application of Minimum-Variance
Smoothing. IEEE Control Systems Magazine 28 (6): 28
37. doi:10.1109/MCS.2008.929281.
[33] Einicke, G.A. (December 2009). Asymptotic Optimality of the Minimum-Variance Fixed-Interval
Smoother.
IEEE Trans.
Automatic Control 54
(12): 29042908.
Bibcode:2007ITSP...55.1543E.
doi:10.1109/TSP.2006.889402.
[34] Einicke, G.A. (July 2015).
Iterative Filtering
and Smoothing of Measurements Possessing Poisson Measurement Noise.
IEEE Transactions on
Aerospace and Electronic Systems 51 (3): 22052211.
doi:10.1109/TAES.2015.140843.
[35] Einicke, G.A. (December 2014). Iterative FrequencyWeighted Filtering and Smoothing Procedures.
IEEE Signal Processing Letters 21 (12): 14671470.
doi:10.1109/LSP.2014.2341641.
[36] Julier, Simon J.; Uhlmann, Jerey K. (1997). A new extension of the Kalman lter to nonlinear systems (PDF).
Int. Symp. Aerospace/Defense Sensing, Simul. and
Controls. Signal Processing, Sensor Fusion, and Target
Recognition VI 3: 182. Bibcode:1997SPIE.3068..182J.
doi:10.1117/12.280797. Retrieved 2008-05-03.

[25] Golub, Gene H.; Van Loan, Charles F. (1996). Matrix


Computations. Johns Hopkins Studies in the Mathematical Sciences (Third ed.). Baltimore, Maryland: Johns
Hopkins University. p. 139. ISBN 978-0-8018-5414-9.

[37] Wan, E.A.; Van Der Merwe, R. (2000). The unscented Kalman lter for nonlinear estimation.
Proceedings of the IEEE 2000 Adaptive Systems for
Signal Processing, Communications, and Control
153.
Symposium (Cat.
No.00EX373) (PDF). p.
doi:10.1109/ASSPCC.2000.882463.
ISBN 0-78035800-7.

[26] Higham, Nicholas J. (2002). Accuracy and Stability of


Numerical Algorithms (Second ed.). Philadelphia, PA:
Society for Industrial and Applied Mathematics. p. 680.
ISBN 978-0-89871-521-7.

[38] Bucy, R.S. and Joseph, P.D., Filtering for Stochastic Processes with Applications to Guidance, John Wiley & Sons,
1968; 2nd Edition, AMS Chelsea Publ., 2005. ISBN 08218-3782-6

17

[39] Jazwinski, Andrew H., Stochastic processes and ltering


theory, Academic Press, New York, 1970. ISBN 0-12381550-9
[40] Kailath, T. (1968). An innovations approach to leastsquares estimation--Part I: Linear ltering in additive
white noise. IEEE Transactions on Automatic Control 13
(6): 646655. doi:10.1109/TAC.1968.1099025.
[41] Vaswani, Namrata (2008).
Kalman ltered
Compressed Sensing.
2008 15th IEEE International Conference on Image Processing.
p.
893.
doi:10.1109/ICIP.2008.4711899. ISBN 978-1-42441765-0.
[42] Carmi, Avishy; Gurl, Pini; Kanevsky, Dimitri (2010).
Methods for sparse signal recovery using Kalman ltering with embedded pseudo-measurement norms and
quasi-norms. IEEE Transactions on Signal Processing 58 (4): 24052409. Bibcode:2010ITSP...58.2405C.
doi:10.1109/TSP.2009.2038959.
[43] Zachariah, Dave; Chatterjee, Saikat; Jansson, Magnus (2012).
Dynamic Iterative Pursuit.
IEEE
Transactions on Signal Processing 60 (9): 49674972.
doi:10.1109/TSP.2012.2203813.
[44] Vasebi, Amir; Partovibakhsh, Maral; Bathaee, S. Mohammad Taghi (2007). A novel combined battery model
for state-of-charge estimation in lead-acid batteries based
on extended Kalman lter for hybrid electric vehicle
applications. Journal of Power Sources 174: 3040.
doi:10.1016/j.jpowsour.2007.04.011.
[45] Vasebi, A.; Bathaee, S.M.T.; Partovibakhsh, M.
(2008). Predicting state of charge of lead-acid batteries for hybrid electric vehicles by extended Kalman lter. Energy Conversion and Management 49: 7582.
doi:10.1016/j.enconman.2007.05.017.
[46] Fruhwirth, R. (1987). Application of Kalman ltering
to track and vertex tting. Nucl. Instrum. Meth. A262
(23): 444450.
Bibcode:1987NIMPA.262..444F.
doi:10.1016/0168-9002(87)90887-4.
[47] Harvey, Andrew C. (1994). Applications of the Kalman
lter in econometrics. In Bewley, Truman. Advances in
Econometrics. New York: Cambridge University Press.
pp. 285f. ISBN 0-521-46726-8.
[48] D. Boulfelfel, R.M. Rangayyan, L.J. Hahn, R. Kloiber,
and G.R. Kuduvalli (1994). "Restoration of single photon
emission computed tomography images by the Kalman lter". IEEE Transactions on Medical Imaging 13(1): 102
109
[49] Bock, Y.; Crowell, B.; Webb, F.; Kedar, S.; Clayton,
R.; Miyahara, B. (2008). Fusion of High-Rate GPS and
Seismic Data: Applications to Early Warning Systems for
Mitigation of Geological Hazards. American Geophysical Union 43: 01. Bibcode:2008AGUFM.G43B..01B.
[50] Wolpert, D. M.; Miall, R. C. (1996). Forward Models for Physiological Motor Control. Neural Netw. 9
(8): 12651279. doi:10.1016/S0893-6080(96)00035-4.
PMID 12662535.

25 Further reading
Einicke, G.A. (2012). Smoothing, Filtering and Prediction: Estimating the Past, Present and Future. Rijeka, Croatia: Intech. ISBN 978-953-307-752-9.
Jinya Su; Baibing Li; Wen-Hua Chen (2015).
On existence, optimality and asymptotic
stability of the Kalman lter with partially
observed inputs.
Automatica 53: 149154.
doi:10.1016/j.automatica.2014.12.044.
Gelb, A. (1974). Applied Optimal Estimation. MIT
Press.
Kalman, R.E. (1960).
A new approach to
linear ltering and prediction problems (PDF).
Journal of Basic Engineering 82 (1): 3545.
doi:10.1115/1.3662552. Retrieved 2008-05-03.
Kalman, R.E.; Bucy, R.S. (1961). New Results in
Linear Filtering and Prediction Theory.
Harvey, A.C. (1990). Forecasting, Structural Time
Series Models and the Kalman Filter. Cambridge
University Press.
Roweis, S.; Ghahramani, Z. (1999).
A
Unifying Review of Linear Gaussian Models.
Neural Computation 11 (2): 305345.
doi:10.1162/089976699300016674.
PMID
9950734.
Simon, D. (2006).
Optimal State Estimation:
Kalman, H Innity, and Nonlinear Approaches.
Wiley-Interscience.
Stengel, R.F. (1994). Optimal Control and Estimation. Dover Publications. ISBN 0-486-68200-5.
Warwick, K. (1987).
Optimal observers
for ARMA models (PDF). International
Journal of Control 46 (5):
14931503.
doi:10.1080/00207178708933989.
Retrieved
2008-05-03.
Bierman, G.J. (1977). Factorization Methods for
Discrete Sequential Estimation. Mathematics in Science and Engineering 128 (Mineola, N.Y.: Dover
Publications). ISBN 978-0-486-44981-4.
Bozic, S.M. (1994). Digital and Kalman ltering.
ButterworthHeinemann.
Haykin, S. (2002). Adaptive Filter Theory. Prentice
Hall.
Liu, W.; Principe, J.C. and Haykin, S. (2010). Kernel Adaptive Filtering: A Comprehensive Introduction. John Wiley.
Manolakis, D.G. (1999). Statistical and Adaptive
signal processing. Artech House.

18

26

Welch, Greg; Bishop, Gary (1997). SCAAT:


incremental tracking with incomplete information (PDF). SIGGRAPH '97 Proceedings
of the 24th annual conference on Computer
graphics and interactive techniques.
ACM
Press/Addison-Wesley Publishing Co.
pp.
333344. doi:10.1145/258734.258876. ISBN
0-89791-896-7.
Jazwinski, Andrew H. (1970). Stochastic Processes
and Filtering. Mathematics in Science and Engineering. New York: Academic Press. p. 376. ISBN
0-12-381550-9.
Maybeck, Peter S. (1979). Stochastic Models, Estimation, and Control. Mathematics in Science and
Engineering. 141-1. New York: Academic Press.
p. 423. ISBN 0-12-480701-1.
Moriya, N. (2011). Primer to Kalman Filtering: A
Physicist Perspective. New York: Nova Science Publishers, Inc. ISBN 978-1-61668-311-5.
Dunik, J.; Simandl M.; Straka O. (2009). Methods for Estimating State and Measurement Noise
Covariance Matrices: Aspects and Comparison.
15th IFAC Symposium on System Identication,
2009. 15th IFAC Symposium on System Identication, 2009.
France.
pp.
372377.
doi:10.3182/20090706-3-FR-2004.00061. ISBN
978-3-902661-47-0.
Chui, Charles K.; Chen, Guanrong (2009). Kalman
Filtering with Real-Time Applications. Springer Series in Information Sciences 17 (4th ed.). New York:
Springer. p. 229. ISBN 978-3-540-87848-3.
Spivey, Ben; Hedengren, J. D. and Edgar, T. F.
(2010). Constrained Nonlinear Estimation for
Industrial Process Fouling. Industrial & Engineering Chemistry Research 49 (17): 78247831.
doi:10.1021/ie9018116.
Thomas Kailath; Ali H. Sayed; Babak Hassibi
(2000). Linear Estimation. NJ: PrenticeHall.
ISBN 978-0-13-022464-4.
Ali H. Sayed (2008). Adaptive Filters. NJ: Wiley.
ISBN 978-0-470-25388-5.

26

External links

A New Approach to Linear Filtering and Prediction


Problems, by R. E. Kalman, 1960
KalmanBucy Filter, a good derivation of the
KalmanBucy Filter
MIT Video Lecture on the Kalman lter on
YouTube

EXTERNAL LINKS

An Introduction to the Kalman Filter, SIGGRAPH


2001 Course, Greg Welch and Gary Bishop
Kalman ltering chapter from Stochastic Models, Estimation, and Control, vol. 1, by Peter S. Maybeck
Kalman Filter webpage, with lots of links
Kalman Filtering. Archived from the original on
2013-06-23.
Kalman Filters, thorough introduction to several
types, together with applications to Robot Localization
Kalman lters used in Weather models, SIAM
News, Volume 36, Number 8, October 2003.
Critical Evaluation of Extended Kalman Filtering
and Moving-Horizon Estimation, Ind. Eng. Chem.
Res., 44 (8), 24512460, 2005.
Kalman and Bayesian Filters in Python Free book
on Kalman Filtering implemented in IPython Notebook.
Source code for the propeller microprocessor: Well
documented source code written for the Parallax
propeller processor.
Gerald J. Biermans Estimation Subroutine Library:
Corresponds to the code in the research monograph
Factorization Methods for Discrete Sequential Estimation originally published by Academic Press in
1977. Republished by Dover.
Matlab Toolbox implementing parts of Gerald J.
Biermans Estimation Subroutine Library: UD /
UDU' and LD / LDL' factorization with associated time and measurement updates making up the
Kalman lter.
Matlab Toolbox of Kalman Filtering applied to
Simultaneous Localization and Mapping: Vehicle
moving in 1D, 2D and 3D
Derivation of a 6D EKF solution to Simultaneous
Localization and Mapping (In old version PDF). See
also the tutorial on implementing a Kalman Filter
with the MRPT C++ libraries.
The Kalman Filter Explained A very simple tutorial.
The Kalman Filter in Reproducing Kernel Hilbert
Spaces A comprehensive introduction.
Matlab code to estimate CoxIngersollRoss interest rate model with Kalman Filter: Corresponds to
the paper estimating and testing exponential-ane
term structure models by kalman lter published by
Review of Quantitative Finance and Accounting in
1999.

19
Extended Kalman Filters explained in the context of
Simulation, Estimation, Control, and Optimization
Online demo of the Kalman Filter. Demonstration
of Kalman Filter (and other data assimilation methods) using twin experiments.
Botella, Guillermo; Martn h., Jos Antonio; Santos, Matilde; Meyer-Baese, Uwe (2011). FPGABased Multimodal Embedded Sensor System Integrating Low- and Mid-Level Vision. Sensors 11
(12): 12511259. doi:10.3390/s110808164.
Hookes Law and the Kalman Filter A little spring
theory emphasizing the connection between statistics and physics.
Examples and how-to on using Kalman Filters with
MATLAB A Tutorial on Filtering and Estimation
Explaining Filtering (Estimation) in One Hour, Ten
Minutes, One Minute, and One Sentence by Yu-Chi
Ho

20

27

27
27.1

TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES

Text and image sources, contributors, and licenses


Text

Kalman lter Source: https://en.wikipedia.org/wiki/Kalman_filter?oldid=707275061 Contributors: AxelBoldt, Marj Tiefert, The Anome,
Fnielsen, Michael Hardy, Kku, Ee79, Egil, Ellywa, Angela, Mark Foskey, Ciphergoth, Cyan, Novum, Catskul, Robbot, Benwing, Jredmond, Aetheling, Giftlite, Seabhcan, Michael Devore, Alexander.stohr, Eoghan, Eregli bob, Ablewisuk, Rdsmith4, Cihan, Sam Hocevar,
Qef, Flex, N328KF, Rich Farmbrough, TedPavlic, Caesar, Bender235, Neko-chan, Violetriga, MisterSheik, Sietse Snel, Peter M Gerdes,
Kghose, Meggar, I9Q79oL78KiL0QTFHgyc, Giraedata, Warnet, Crust, Don Reba, Arthena, Kotasik, PAR, Nullstein~enwiki, BRW,
Cburnett, Alai, Jehrlich, Forderud, Oleg Alexandrov, Firsfron, GregorB, Chrislloyd, Joe Beaudoin Jr., Rjwilmsi, Strait, Gareth McCaughan,
Amelio Vzquez, Mathbot, Chobot, YurikBot, Ashsong, Gaius Cornelius, VogonPoet, Nils Grimsmo, Voidxor, Light current, The imp,
Ccwen, Mebden, Amit man, SmackBot, PEHowland, Ekschuller, Number 8, Eike Welk, Mcld, Benjaminevans82, Thumperward, Nbarth,
Torzsmokus, Joeyo, Memming, SeanAhern, Forrestv, Cronholm144, Kvng, Kurtan~enwiki, Ioannes Pragensis, BoH, Myasuda, Cydebot,
Krauss, Ryan, Alan1507, Ztolstoy, Gogo Dodo, Ksood22, Skittleys, Oruanaidh, A.K., Thijs!bot, Nick Number, Binarybits, Robbbb, Erxnmedia, Drizzd~enwiki, .anacondabot, OM, Livermouse, Albmont, Netzer moriya, Michel ouiki~enwiki, Nikevich, User A1, Martynas Patasius, Vilwarin, Chris G, Gcranston, Khbkhb, Stochastics, Jiuguang Wang, Tdadamemd, JParise, Wgarn, Molly-in-md, Epiphany Johnson,
Jevansen, VolkovBot, AlnoktaBOT, Julian I Do Stu, Slaunger, Damien d, Marcosaedro, Bsrancho, Kovianyo, PaulTanenbaum, Jmath666,
Hmms, Forwardmeasure, Petteri Aimonen, StevenBell, Cwkmail, Stelleg151, KoenDelaere, Melcombe, Headlessplatter, Rinconsoleao,
Tigergb, Clarkmoody, Gvw007, Ezavarei, JimInTheUSA, Niemeyerstein en, Bradka, Niceguyedc, Excirial, Simonmckenzie, PixelBot,
Dilumb, Brews ohare, Butala, Chaosdruid, AlexCornejo, M.B.Shadmehr, Qwfp, XLinkBot, Stickee, Chanakal, Mikejulietvictor, Paulginz,
Daveros2008, Addbot, Jjunger, DOI bot, Olli Niemitalo, Keithbierman, Fgnievinski, PaleS2, MrOllie, EconoPhysicist, Publichealthguru,
SpBot, Oldlab, Ettrig, CountryBot, Luckas-bot, Yobot, AnomieBOT, Jose278, Fiacobelli, Citation bot, DayDuck1981, TheAMmollusc, Anschmid13, Omnipaedista, Kaslanidi, MultiPoly, 55604PP, FrescoBot, Fetchmaster, Fortdj33, Olexa Riznyk, Sanpitch, Anterior1,
Briardew, OgreBot, Citation bot 1, Zacio, Kiefer.Wolfowitz, Havocgb, Martinvl, Jerha202, YWD, Houber1, Serols, Trappist the monk,
Emmanuel Battesti, Reach Out to the Truth, Vishalv2050, Wogud86, Obankston, RjwilmsiBot, Iulian.serbanoiu, Fblasqueswiki, EmausBot,
Kronick, Drrggibbs, Mmeijeri, Brent Perreault, Yoepp, , Vgiri88, Mineotto6, AManWithNoPlan, Cblambert, Ray Czaplewski, Ptsneves, Yunfei Chu, Chris857, Ebehn, Kkddkkdd, Thundersh24, KlappCK, Lakshminarayanan r, Frietjes, Jerrykorulla, Danim, Hikenstu,
Mdutch2001, Helpful Pixie Bot, Qzertywsx, Mrajaa, Strike Eagle, Schnicki, BG19bot, Davmre, Stuartmacgregor, Eitt, Manoguru, Newstateofme, Dlituiev, Kfriston, Pshark sk, BattyBot, ChrisGualtieri, Gohchunfan, Brybot, Me, Myself, and I are Here, Pearl92, IheartDA,
Liwangyan, Reculet, Smirglis, Pdecalculus, Babitaarora, Stamptrader, Xenxax, Dalemcl, Avi.nehemiah, Impsswoon, Monkbot, Luigidigiacomo, Potwang, Pezcore2014, Loraof, Purefel, Navraj42, KasparBot, Lipkenszaal, Wikitidy, Myraeri, Jamal Abdalla and Anonymous:
399

27.2

Images

File:Basic_concept_of_Kalman_filtering.svg Source:
https://upload.wikimedia.org/wikipedia/commons/a/a5/Basic_concept_of_
Kalman_filtering.svg License: CC0 Contributors: Own work Original artist: Petteri Aimonen
File:Edit-clear.svg Source: https://upload.wikimedia.org/wikipedia/en/f/f2/Edit-clear.svg License: Public domain Contributors: The
Tango! Desktop Project. Original artist:
The people from the Tango! project. And according to the meta-data in the le, specically: Andreas Nilsson, and Jakub Steiner (although
minimally).
File:HMM_Kalman_Filter_Derivation.svg Source: https://upload.wikimedia.org/wikipedia/commons/8/81/HMM_Kalman_Filter_
Derivation.svg License: Public domain Contributors: Own work Original artist: Qef
File:Kalman.png Source: https://upload.wikimedia.org/wikipedia/commons/d/da/Kalman.png License: CC BY-SA 4.0 Contributors:
Own work Original artist: Lipkenszaal
File:Kalman_filter_model_2.svg Source: https://upload.wikimedia.org/wikipedia/commons/a/a0/Kalman_filter_model_2.svg License:
Public domain Contributors: Own work (Original text: I made this image myself, and I release it to the public domain.) Original artist:
User:Headlessplatter
File:Question_book-new.svg Source: https://upload.wikimedia.org/wikipedia/en/9/99/Question_book-new.svg License: Cc-by-sa-3.0
Contributors:
Created from scratch in Adobe Illustrator. Based on Image:Question book.png created by User:Equazcion Original artist:
Tkgd2007
File:Rudolf_Kalman.jpg Source: https://upload.wikimedia.org/wikipedia/commons/a/ac/Rudolf_Kalman.jpg License: CC BY-SA 2.0
de Contributors: http://owpdb.mfo.de/detail?photo_id=11513 Original artist: Greuel, Gert-Martin
File:Wiki_letter_w_cropped.svg Source: https://upload.wikimedia.org/wikipedia/commons/1/1c/Wiki_letter_w_cropped.svg License:
CC-BY-SA-3.0 Contributors: This le was derived from Wiki letter w.svg: <a href='//commons.wikimedia.org/wiki/File:
Wiki_letter_w.svg' class='image'><img alt='Wiki letter w.svg' src='https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Wiki_
letter_w.svg/50px-Wiki_letter_w.svg.png' width='50' height='50' srcset='https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/
Wiki_letter_w.svg/75px-Wiki_letter_w.svg.png 1.5x, https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Wiki_letter_w.svg/
100px-Wiki_letter_w.svg.png 2x' data-le-width='44' data-le-height='44' /></a>
Original artist: Derivative work by Thumperward

27.3

Content license

Creative Commons Attribution-Share Alike 3.0

You might also like