Observability is the tool we use to investigate the internal workings of a system. It lets us use what we know about the input
utut
and the output
ytyt
to observe the state of the system
xtxt.
To understand this concept let's start off with the basic state-space equations describing a system:
x′=Ax+Bu
x
A
x
B
u
y=Cx+Du
y
C
x
D
u
If we plug the general solution of the state variable,
xtxt,
into the equation for
ytyt,
we'd find the following familiar time-domain equation:
yt=CeAtx0+∫0tCeA(t−τ)Buτdτ+Dut
y
t
C
A
t
x
0
τ
0
t
C
A
t
τ
B
u
τ
D
u
t
(1)
Without loss of generality, we can assume zero input; this will significantly clarify the following discussion. This assumption can be easily justified. Based on our initial assumption above, the last two terms on the right-hand side of time-domain equation are known (because we know
utut).
We could simply replace these two terms with some function of tt.
We'll group them together into the variable
y0ty0t.
By moving
y0ty0t
to the left-hand side, we see that we can again group
yt−y0t
yt
y0t
into another replacement function of tt,
y_ty_t.
This result has the same effect as assuming zero input.
y_t=yt−y0t=CeAtx0
y_t
yt
y0t
C
A
t
x
0
Given the discussion in the above paragraph, we can now start our examination of observability based on the following formula:
yt=CeAtx0
y
t
C
A
t
x
0
(2)
The idea behind observability is to find the state of the system based upon its output. We will accomplish this by first finding the initial conditions of the state based upon the system's output. The state equation solution can then use this information to determine the state variable
xtxt.
base formula seems to tell us that as long as we known enough about
ytyt
we should be able to find
x0x0.
The first question to answer is how much is enough? Since the initial condition of the state
x0x0
is actually a vector of nn elements, we have nn unknowns and therefore need nn equations to solve the set. Remember that we have complete knowledge of the output
ytyt.
So, to generate these nn equations, we can simply take n−1n1
derivatives of base formula. Taking these
derivatives is relatively straightforward. On the right-hand
side, the derivative operator will only act on the matrix
exponential term. Each derivative of it will produce a
multiplicative term of AA.
Then, as we're dealing with these derivatives of
ytyt
at t=0t0,
all of the exponential terms will go to unity
(
eA0=1
A
0
1
).
y0=Cx0
y
0
C
x
0
ddty0=CAx0
t1
y
0
C
A
x
0
d2dt2y0=CA2x0
t2
y
0
C
A
2
x
0
⋮⋮
dn−1dtn−1y0=CAn−1x0
tn1
y
0
C
A
n
1
x
0
This can be re-expressed in matrix notation.
(
y0
d1y0dt1
d2y0dt2
⋮
dn−1y0dtn−1
)=(
C
CA
CA2
⋮
CAn−1
)x0
y
0
t1
y
0
t2
y
0
⋮
tn1
y
0
C
CA
CA2
⋮
C
A
n
1
x
0
The first term on the right-hand side is known as the observability matrix,
σCAσCA:
σCA=(
C
CA
CA2
⋮
CAn−1
)
σCA
C
CA
CA2
⋮
C
A
n
1
(3)
We call the system completely observable if the rank of the observability matrix equals nn.
This guarantees that we'll have enough independent equations to solve for the
nn components of the state
xtxt.
Whereas for controllability we talked about the system's controllable space, for observability we will talk about a system's unobservable space,
XunobsXunobs.
The unobservable space is found by taking the kernel of the observability matrix. This makes sense because when you multiply a vector in the kernel of the observability matrix by the observability matrix, the result will be 00.
The problem is that when we get a zero result for
ytyt,
we cannot say with certainty whether the zero result was caused by
xtxt
itself being zero or by
xtxt
being a vector in the nullspace. As we cannot give a definite answer in this case, all of these vectors are said to be unobservable.
One cool thing to note is that the observability and controllability matrices are intimately related:
σCAT=CATCT
σ
C
A
C
A
C
(4)