(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

Y'know, if you log in, you can write something here, or contact authors directly on the site. Create a New User if you don't already have an account.