(Control Theory : Modern Control : Observability)
A system is observable if any initial state can be determined by
observing its output over a specified finite length of time.
In other words, if we can deduce information about all the state
variables of a system by monitoring only the sensed outputs, then it's
possible to design a controller that can estimate things like
position, velocity, etc. without actually measuring them directly--the
controller essentially reconstructs initial conditions by observing the
outputs. This is extremely useful since if a system is observable, we
can then design controllers without worrying about whether it's possible to
physically measure a certain system variable or not.
Given a state space model (a set of matrices constructed from the time domain differential equations modelling the system), it is possible to
determine whether the system is observable by constructing what is
called the observability matrix and then determining its rank (the
number of linearly independent rows or columns). If the rank of the
matrix equals the dimension of the state vector (the internal
variables tracking the state of the system), then the system is said
to be observable, i.e. all the state variables can be determined by
monitoring only the sensed outputs.
A weaker definition of observability exists and is called
detectability. A system is said to be detectable if its unobservable modes are asymptotically stable, i.e. if the system modes we can't observe don't "blow up", then not factoring them into the
controller's calculations probably won't compromise system stability.
Just as with controllability, observability also has a fairly simple
mathematical test for linear time-invariant systems:
Method
Given the typical state space form:
dx/dt = Ax + Bu
y = Cx + Du
Where
* A,B,C,D are the matrices modelling the system
* x∈Rn is the state vector
* y∈Rr is the output vector
* u∈Rm is the input vector
The observability matrix OA,C = [C; CA; CA2; ... ; CAn-1]
And the system is observable iff rank{OA,C} = n
Example
A = [0 1; 0 -1] (2x2)
C = [1 0] (1x2)
OA,C = [C; CA] = [1 0; 0 1] (= I2)
rank{OA,C} = 2
The system is observable.
Matlab can can generate the observability matrix for you if you have
the Control Systems Toolkit:
>Oac = obsv(A,C);
>rank(Oac)
(Does the rank returned equal n?)
REFERENCES:
Franklin, G.F., J.D. Powell, A. Emami-Naeini. Feedback Control of
Dynamic Systems, 3rd ed. Addison-Wesley, 1994.
ECE410F lecture notes, University of Toronto