Guidance, Navigation and Control · Theory · M4
M4-T2 — Controllability, Observability and Pole Placement
Before designing a feedback law, ask two questions of the model: can the input reach every mode, and can the sensors see every mode? Then choose where the poles go, with the gimbal in mind.
A designer is free to put the poles of a state-feedback loop anywhere, but only if the input can reach every mode, and an observer can only recover the states that the sensors reveal. The first property is called controllability and the second observability. Both are decided by a rank test on a matrix built from the model, and both have physical meanings on Hopper that can be read from the structure of its lateral channel. Once they hold, pole placement is a formula. What the formula does not tell you is where to place the poles, and the answer is set by the actuator.
Learning objectives
After this lesson, you should be able to:
- Test controllability and observability of a model by the rank of the controllability and observability matrices.
- Explain, from the structure of a model, which states a given sensor can and cannot reveal.
- Compute the state-feedback gain that places the poles of a single-input model at chosen locations.
- Estimate the actuator demand of a pole placement and reject placements that saturate.
The intuition
M4-T1: State-Space Models, Modes and Stability gave Hopper's lateral model: four states and one input, the gimbal. Two questions about that pair come before any design.
Can the input reach every state?
A model is controllable if, for any target state, some input drives the model there from rest. If a mode cannot be influenced by the input, no feedback law can move it. Think of two tanks of water that are filled by the same pipe and drain at the same rate: the sum of their levels can be controlled, the difference cannot. The difference obeys its own equation and the input never enters it.
The test is mechanical. Compute the directions the input can push the state in: , then how the dynamics carry those pushes forward, , , and so on. The model is controllable if these directions together span the whole state space. Hopper's gimbal does: the matrix of these four vectors has rank 4. The gimbal pushes the pitch rate directly, the pitch rate becomes pitch, pitch becomes velocity, velocity becomes position. Every state is on the chain.
Can the sensors see every state?
The dual question is observability: can the state be reconstructed from the measurements over time? The test is the same with the roles reversed: take what a sensor reads, , then how that reading would change with the dynamics, , , and ask whether these rows span the space.
Hopper's lateral channel has a one-way structure that makes the answer easy to read. The pitch drives the velocity, and the velocity drives the position, but nothing drives the pitch from the position. So:
- Measuring the position reveals everything: its first derivative is the velocity, its second the acceleration, which is proportional to the pitch, its third the pitch rate. Rank 4.
- Measuring the velocity reveals the velocity, pitch and pitch rate but never the position: a constant offset in position changes nothing the velocity sensor reads. Rank 3.
- Measuring the pitch or the pitch rate reveals only the two pitch states: nothing about them depends on the velocity or the position. Rank 2.
The consequence for the vehicle is concrete. A gyroscope alone, however good, cannot tell Hopper where it is. Something must measure position, and the beacons of M1-T1: Three Questions: Where Am I, Where Should I Go, How Do I Get There are there for that.
Placing the poles, and the price
If the model is controllable, state feedback can put the closed-loop poles anywhere. The formula that finds is Ackermann's. The choice of where to put the poles is the design, and it is limited by the actuator. A pole twice as far to the left needs a loop twice as fast, with gains that grow roughly as the product of the poles. The figure shows what that does to Hopper: with poles at −1 to −4 the gimbal saturates for a position error of 1.6 m. With poles at −4 to −16 it saturates for 6 mm, so any real error drives it to its limit and the loop is never linear.
Controllability says the poles can be placed anywhere. The actuator says where they should be placed. The two questions are separate, and the second is the one that decides the design.
Definitions
- Controllability matrix
- The matrix with columns for a model with states. The model is controllable if its rank is .
- Observability matrix
- The matrix with rows . The model is observable if its rank is .
- Duality
- is observable exactly when is controllable, so every result about one gives a result about the other.
- State feedback and desired polynomial
- gives the closed loop . The desired characteristic polynomial is for the chosen poles .
The rank tests are:
For a controllable single-input model, the gain that places the poles at the roots of is given by Ackermann's formula:
Derivation: why the rank test works, and where Ackermann's formula comes from
The test rests on the Cayley-Hamilton theorem, which says that a matrix satisfies its own characteristic equation.
The state reached at time from rest under an input is this integral (the variation of constants formula).
By Cayley-Hamilton, and every higher power is a combination of , so the matrix exponential is too, with scalar functions .
Substitute and take the matrices out of the integral. Whatever the input, the reached state is a combination of these vectors: the model can reach only their span.
Conversely, if the vectors span the whole space then inputs can be found that reach any state. The reachable set is exactly the span, so the rank test is both necessary and sufficient.
Where Ackermann's formula comes from
A controllable model can be transformed into controllable canonical form: a chain of integrators whose last row holds the coefficients of the characteristic polynomial .
Feedback changes only the last row, adding to each . To reach the desired coefficients of , choose the differences.
Transform back to the original coordinates: the transformation that took the model to canonical form is built from the two controllability matrices.
Using the Cayley-Hamilton theorem, has a simple last row equal to , and carrying it back gives Ackermann's formula.
The reachable set is the span of B, AB, ..., A^(n-1)B. If it is everything, the poles can be placed anywhere, and the gain is one formula. If not, some modes are beyond the reach of any feedback.
A worked example
Test and design Hopper's lateral channel (the model of M4-T1: State-Space Models, Modes and Stability).
- Controllability. The controllability matrix of the gimbal has rank 4 of 4. For contrast, two identical modes (both −1) driven by one input have rank 1 of 2: only their sum can be steered.
- Observability. By the sensor: position 4 of 4, velocity 3, pitch 2, pitch rate 2. The velocity sensor cannot see the position, and the pitch and rate sensors cannot see the translation: as the one-way structure said.
- Place the poles. Ackermann's formula for poles at (−1, −1.5, −3, −4) gives . For (−2, −3, −6, −8) it is (1.535, 1.726, 5.578, 0.105), and for (−4, −6, −12, −16) it is (24.55, 13.81, 13.03, −4.97).
- The actuator. The first gain is the gimbal angle per metre of position error. The gimbal saturates at 0.15 rad for a position error of 1.56 m with the first set of poles, 0.098 m with the second, and 6 mm with the third. The first design is linear for any realistic error. The third is saturated all the time, and has a negative rate gain (−4.97) that fights the other terms.
- Choose. The first set is slow (the slowest pole is at −1, a settling time of several seconds). A balance is between the first and second sets, which is what the optimal design of M4-T4: The Linear-Quadratic Regulator from Dynamic Programming finds from the weights instead of from guessed poles.
import gnckit as g
gr, lam, b = 9.81, 0.7, 19.62
A = [[0, 1, 0, 0], [0, 0, gr, 0], [0, 0, 0, 1], [0, 0, lam ** 2, 0]]
B = [0, gr, 0, b]
print('rank of the controllability matrix:', g.mat_rank(g.ctrb(A, B)), 'of 4')
print('two identical modes with one input: rank', g.mat_rank(g.ctrb([[-1.0, 0.0], [0.0, -1.0]], [1.0, 1.0])), 'of 2')
print('rank of the observability matrix, by what is measured:')
for name, C in (('position', [1, 0, 0, 0]), ('velocity', [0, 1, 0, 0]), ('pitch', [0, 0, 1, 0]), ('pitch rate', [0, 0, 0, 1])):
print(f' {name:10s}: {g.mat_rank(g.obsv(A, C))} of 4')
print('state feedback u = -K x by pole placement (Ackermann):')
for poles in ([-1, -1.5, -3, -4], [-2, -3, -6, -8], [-4, -6, -12, -16]):
K = g.acker(A, B, poles)
print(f' poles {poles}: K = {[round(k, 3) for k in K]}; position error that saturates the 0.15 rad gimbal: {0.15 / abs(K[0]):.3f} m')rank of the controllability matrix: 4 of 4 two identical modes with one input: rank 1 of 2 rank of the observability matrix, by what is measured: position : 4 of 4 velocity : 3 of 4 pitch : 2 of 4 pitch rate: 2 of 4 state feedback u = -K x by pole placement (Ackermann): poles [-1, -1.5, -3, -4]: K = [0.096, 0.216, 1.557, 0.376]; position error that saturates the 0.15 rad gimbal: 1.564 m poles [-2, -3, -6, -8]: K = [1.535, 1.726, 5.578, 0.105]; position error that saturates the 0.15 rad gimbal: 0.098 m poles [-4, -6, -12, -16]: K = [24.554, 13.812, 13.028, -4.969]; position error that saturates the 0.15 rad gimbal: 0.006 m
In robotics
Both properties are checked on every vehicle, and the failures are instructive.
- Sensor suites. Observability decides which sensors are needed. Hopper needs a position sensor because the gyroscopes cannot see translation. An inertial navigation system cannot observe its heading from accelerometers at rest, and gyrocompassing uses the Earth's rotation to get it (module 6). A visual-inertial estimator has directions that are unobservable by construction, the absolute position and the yaw, and an estimator that ignores this becomes overconfident: the topic of UAV M3-T12: Observability and consistency.
- Actuator failures. When an effector fails, controllability of the vehicle can drop. A multirotor with one rotor lost can still be controlled in some axes and not in yaw, which is why failure-tolerant designs exist (module 5, control allocation).
- Placement in practice. Nobody places the poles of a flight vehicle by choosing numbers and hoping. The poles are chosen from a bandwidth the actuator can support (the budget of M3-T6: Limits of Performance: Delay, Right-Half-Plane Zeros and the Bode Integral) or the gains are derived from weights, as in LQR. Ackermann's formula is used to check designs and to teach, and larger models use algorithms of better numerical behaviour.
- Controllable is not the same as practical. The rank can be 4 with a matrix that is nearly singular: some mode is reachable only with enormous inputs. The condition number of is the warning, and the rank test is a yes-or-no that hides it.
- Linear algebra. The rank of a matrix and the span of its columns are treated in Linear Algebra M3-T4: Rank and Linear Independence; controllability is that idea applied to the columns B, AB, A²B and so on.
The next lesson uses observability, the dual, to build a state estimate from the sensors that Hopper actually has, and shows that the controller and the observer can be designed separately.
Common misconceptions
“Controllable means easy to control.”
It means that the input can reach every state in principle. It says nothing about how much input is needed or how fast. A model can be controllable with a controllability matrix so ill-conditioned that reaching one mode needs a thousand times the actuator range.
“Faster poles are always better, so place them far to the left.”
The gains grow quickly with speed and the actuator saturates. Hopper's gimbal saturates for a 6 mm position error when the poles are at −4 to −16, so the loop is nonlinear for every real error and the design says nothing. Place poles where the actuator can follow them.
“If a mode is uncontrollable, the system is unstable.”
The two are different properties. An uncontrollable mode can be stable (a stable mode the input does not touch is harmless) or unstable (and then no feedback can stabilize the system). The check is whether the uncontrollable modes are stable: a weaker property called stabilizability.
“A sensor that sees one state cannot give information about the others.”
It can, if the dynamics couple them: the position sensor of Hopper reveals all four states because the position is driven by the velocity, which is driven by the pitch, which is driven by the pitch rate. A model with the opposite one-way structure, as for the pitch sensor, does not.
“The controllability of the model is the controllability of the vehicle.”
The test assumes that the input can take any value. A vehicle with a saturating actuator can reach only part of the space the model says it can: the set of states that can be reached with a gimbal of ±0.15 rad is bounded. The model is a necessary check, not a sufficient one.
Key takeaways
- A model is controllable if the vectors span the state space, observable if the rows do. Both are rank tests, and the two are duals.
- Hopper's gimbal controls all four lateral states. A position sensor sees all four, a velocity sensor three, and a pitch or pitch-rate sensor two.
- The one-way structure (pitch drives velocity drives position) decides what a sensor can reveal: downstream states are invisible to upstream sensors.
- For a controllable single-input model, Ackermann's formula places the poles anywhere.
- Where to place them is set by the actuator: Hopper's gimbal saturates for a 1.56 m error with poles at −1 to −4 and for 6 mm with poles at −4 to −16.
- Check the conditioning of the controllability matrix as well as its rank.
References and further reading
Each source is marked free or paid. Free to read does not mean free to reuse: the course resources page lists every source with its licence.
- K. J. Åström and R. M. Murray, Feedback Systems, 2nd edition, Princeton University Press, 2021 , the chapters on reachability and on state feedback. Free to read as the authors' PDF; the book is copyrighted.
- S. Brunton, “Control Bootcamp” (video series) , the lectures on controllability, observability and pole placement. Free to watch.
- J. How and E. Frazzoli, MIT 16.30 Feedback Control Systems (OpenCourseWare) , the lectures on controllability and pole placement. Free; licence CC BY-NC-SA 4.0.
- J. Ackermann, “Der Entwurf linearer Regelungssysteme im Zustandsraum”, Regelungstechnik und Prozess-Datenverarbeitung, 1972, the original paper, in German. Paid.
Knowledge check
Three questions. Write an answer, then reveal the explanation. Your answers stay in your browser.
Question 1
With the second pole placement (−2, −3, −6, −8), Hopper's gain on position is Kx = 1.535 rad per metre. What gimbal angle does a 0.5 m position error call for, and what happens?
Explanation
The gimbal angle demanded is Kx × 0.5 = 0.77 rad (44°), about five times the 0.15 rad limit. The gimbal saturates, the loop is open until the error has fallen below 0.098 m, and the linear design predicts a response that the actuator cannot deliver. A designer should either slow the poles, or limit the commanded step (a reference prefilter) so that the loop stays in its linear range.
Question 2
Hopper's velocity sensor gives rank 3. Which combination of states can it not see, and why?
Explanation
It cannot see the position. A constant offset in position, the state (1, 0, 0, 0), is in the null space of the observability matrix: the velocity, pitch and pitch rate are all unchanged by it, and A applied to it gives zero (nothing moves). Measuring the velocity says how fast the vehicle is going, not where it is. A position fix such as the beacons is needed, or the velocity measurement must be integrated, which accumulates an unknown starting offset.
Question 3
Two identical stable modes, ẋ₁ = −x₁ + u and ẋ₂ = −x₂ + u, share one input. Show that they are not controllable.
Explanation
The difference d = x₁ − x₂ obeys ḋ = −d: the input cancels and d decays on its own whatever u does, so no input can move d to a chosen value. The controllability matrix [B, AB] = [[1, −1], [1, −1]] has rank 1, not 2: only the sum x₁ + x₂ can be steered. This mode is stable, so the model is stabilizable but not controllable: nothing needs to be done about d for stability, but it cannot be placed anywhere.
What’s next
Related content
Nothing below is required to finish this lesson.
- BeforeM4-T1: State-Space Models, Modes and Stability
Read the modes of a vehicle from the eigenvalues and eigenvectors of its state matrix, and relate them to the poles of module 3.
Other courses on this site treat neighbouring topics from their own angle:
- UAV M5-T7: LQR control
- UAV M5-L2: Implement LQR
- Navigation M5-T6: LQR and MPC for Path Tracking
- UAV M3-T4: Kalman Filter
- UAV M3-T12: Observability and consistency
- Linear Algebra M6-T1: Eigenvalues and Eigenvectors
- Linear Algebra M6-T4: Positive Definite Matrices
- Linear Algebra M9-T7: Linear Kalman Filter Mathematics
- Robot Learning M4-T4: Dynamic Programming and Value Iteration
- Probability for Robotics (module 7 derives the Kalman filter)
This course leaves the following to the pages that already teach them:
Get notified when the next lesson and new labs are released.
One email per new lesson or lab.