3.5.34Guidance, Navigation & Control (GNC)

Pole placement — Ackermann's formula

1,719 words8 min readdifficulty · medium3 backlinks

WHY do we even want to move the poles?

The solution of x˙=Ax\dot x = Ax is built from terms eλite^{\lambda_i t} where λi\lambda_i are eigenvalues of AA.

  • Re(λi)>0\text{Re}(\lambda_i) > 0 ⟹ blows up (unstable).
  • Re(λi)<0\text{Re}(\lambda_i) < 0 ⟹ decays (stable); more negative = faster.
  • Im(λi)0\text{Im}(\lambda_i) \neq 0 ⟹ oscillation.

So the poles are the dynamics. If we can choose them, we choose settling time, damping, everything.


WHAT problem does Ackermann solve?

We are given desired poles μ1,,μn\mu_1,\dots,\mu_n. Form the desired characteristic polynomial α(s)=(sμ1)(sμ2)(sμn)=sn+an1sn1++a1s+a0.\alpha(s) = (s-\mu_1)(s-\mu_2)\cdots(s-\mu_n) = s^n + a_{n-1}s^{n-1}+\cdots+a_1 s + a_0.

Goal: find KK so that det(sI(ABK))=α(s)\det(sI-(A-BK)) = \alpha(s).

The condition for this to work: C\mathcal{C} must be invertible — i.e. the system is controllable. If you cannot steer some direction, you cannot place its pole.


HOW — deriving Ackermann from scratch

The trick is the controllable canonical form (CCF), where pole placement is trivial, then transform back.

Step 1 — Poles are trivial to place in CCF

Suppose A,BA,B are already in CCF: Ac=[010001a0a1an1],Bc=[001].A_c=\begin{bmatrix}0&1&0&\cdots\\0&0&1&\cdots\\ \vdots&&&\\ -a_0'&-a_1'&\cdots&-a_{n-1}'\end{bmatrix},\quad B_c=\begin{bmatrix}0\\ \vdots\\0\\1\end{bmatrix}. Here det(sIAc)=sn+an1sn1++a0\det(sI-A_c)=s^n+a_{n-1}'s^{n-1}+\cdots+a_0' — the coefficients live on the bottom row. Since BcB_c only touches the last row, feedback KcK_c directly overwrites that row: AcBcKc has bottom row [(a0+k1) ].A_c - B_cK_c \text{ has bottom row } [-(a_0'+k_1)\ \dots]. To get desired α(s)\alpha(s) we just set ki=ai1ai1k_i = a_{i-1} - a_{i-1}'. Easy — but only in CCF.

Step 2 — Cayley–Hamilton is the engine

Every matrix satisfies its own characteristic polynomial. So α(Ac)\alpha(A_c) — using the desired polynomial — is not zero; it equals α(Ac)χ(Ac)=0\alpha(A_c)-\underbrace{\chi(A_c)}_{=0} where χ\chi is the actual char. poly. Because α\alpha and χ\chi differ only in coefficients, α(Ac)\alpha(A_c) collapses so that its last row equals exactly the required feedback gains KcK_c, while everything above cancels. Concretely one can show [001]α(Ac)=Kc.\begin{bmatrix}0&\cdots&0&1\end{bmatrix}\alpha(A_c)=K_c.

Step 3 — Undo the coordinate change

A general controllable (A,B)(A,B) maps to CCF via z=Txz = Tx with T=C~C1T = \tilde{\mathcal C}\,\mathcal C^{-1} (product of canonical and actual controllability matrices). Pushing the CCF result back through TT and simplifying, the transformation matrices merge and the general formula falls out: K=[001]C1α(A).K = \begin{bmatrix}0&\cdots&0&1\end{bmatrix}\mathcal C^{-1}\,\alpha(A). The C1\mathcal C^{-1} is literally the "return ticket" from CCF to your coordinates.


Worked Example 1 — a double integrator

System A=[0100]A=\begin{bmatrix}0&1\\0&0\end{bmatrix}, B=[01]B=\begin{bmatrix}0\\1\end{bmatrix}. Place poles at μ=2,2\mu=-2,-2.

Step 1 — desired polynomial. α(s)=(s+2)2=s2+4s+4\alpha(s)=(s+2)^2=s^2+4s+4, so a1=4,a0=4a_1=4,a_0=4. Why: these coefficients ARE the target dynamics.

Step 2 — controllability matrix. C=[B AB]=[0110],C1=[0110].\mathcal C=[B\ AB]=\begin{bmatrix}0&1\\1&0\end{bmatrix},\quad \mathcal C^{-1}=\begin{bmatrix}0&1\\1&0\end{bmatrix}. Why: need detC=10\det\mathcal C=-1\neq0 ⟹ controllable, so Ackermann applies.

Step 3 — α(A)\alpha(A). A2=[0000]A^2=\begin{bmatrix}0&0\\0&0\end{bmatrix}, so α(A)=A2+4A+4I=[4404].\alpha(A)=A^2+4A+4I=\begin{bmatrix}4&4\\0&4\end{bmatrix}. Why: substitute the matrix into the desired polynomial (matrix powers, identity for constant).

Step 4 — assemble. K=[0 1][0110][4404]=[0 1][0444]=[4 4].K=[0\ 1]\begin{bmatrix}0&1\\1&0\end{bmatrix}\begin{bmatrix}4&4\\0&4\end{bmatrix}=[0\ 1]\begin{bmatrix}0&4\\4&4\end{bmatrix}=[4\ 4].

Check: ABK=[0144]A-BK=\begin{bmatrix}0&1\\-4&-4\end{bmatrix}, char. poly s2+4s+4s^2+4s+4. ✓ Poles at 2,2-2,-2.


Worked Example 2 — stabilising an unstable pole

A=[0121]A=\begin{bmatrix}0&1\\2&-1\end{bmatrix}, B=[01]B=\begin{bmatrix}0\\1\end{bmatrix}. Open-loop poles solve s2+s2=0s=1,2s^2+s-2=0 \Rightarrow s=1,-2 (the +1+1 is unstable). Place at 1±j-1\pm j.

Step 1. α(s)=(s+1)2+1=s2+2s+2\alpha(s)=(s+1)^2+1=s^2+2s+2, so a1=2,a0=2a_1=2,a_0=2.

Step 2. C=[B AB]=[0111]\mathcal C=[B\ AB]=\begin{bmatrix}0&1\\1&-1\end{bmatrix}, det=1\det=-1, C1=[1110]\mathcal C^{-1}=\begin{bmatrix}1&1\\1&0\end{bmatrix}.

Step 3. A2=[2123]A^2=\begin{bmatrix}2&-1\\-2&3\end{bmatrix}. α(A)=A2+2A+2I=[2123]+[0242]+[2002]=[4123].\alpha(A)=A^2+2A+2I=\begin{bmatrix}2&-1\\-2&3\end{bmatrix}+\begin{bmatrix}0&2\\4&-2\end{bmatrix}+\begin{bmatrix}2&0\\0&2\end{bmatrix}=\begin{bmatrix}4&1\\2&3\end{bmatrix}.

Step 4. K=[0 1][1110][4123]=[0 1][6441]=[4 1].K=[0\ 1]\begin{bmatrix}1&1\\1&0\end{bmatrix}\begin{bmatrix}4&1\\2&3\end{bmatrix}=[0\ 1]\begin{bmatrix}6&4\\4&1\end{bmatrix}=[4\ 1].

Check: ABK=[0122]A-BK=\begin{bmatrix}0&1\\-2&-2\end{bmatrix}, char poly s2+2s+2s^2+2s+2 ⟹ roots 1±j-1\pm j. ✓

Figure — Pole placement — Ackermann's formula


Recall Feynman: explain to a 12-year-old

Imagine a wobbly cart on a track. How wobbly, how fast it settles — that's baked into some secret numbers called poles. Left alone the cart might tip over. But you can watch where it is and gently push it based on what you see. Ackermann's formula is a cheat sheet that tells you exactly how hard to push for each thing you measure so the cart settles the way you want — smooth, quick, no tipping. It only works if your pushes can actually reach every wobble (that's "controllable").


Recap

Flashcards

What is the closed-loop system matrix under u=Kxu=-Kx?
ABKA-BK
State Ackermann's formula for a single-input system.
K=[001]C1α(A)K=[0\,\cdots\,0\,1]\,\mathcal C^{-1}\,\alpha(A)
What is C\mathcal C (controllability matrix)?
[B AB A2B  An1B][B\ AB\ A^2B\ \cdots\ A^{n-1}B]
Which polynomial is α\alpha in α(A)\alpha(A)?
The DESIRED characteristic polynomial from target poles μi\mu_i.
Necessary condition for arbitrary pole placement?
The pair (A,B)(A,B) is controllable (C\mathcal C invertible).
Why does the selector row [001][0\cdots0\,1] appear?
In controllable canonical form only the last coordinate is actuated, so gains sit in the bottom row.
What theorem underlies the derivation?
Cayley–Hamilton (a matrix satisfies its characteristic polynomial).
If you mistakenly use the actual char. poly of AA, what KK do you get?
K=0K=0, since χ(A)=0\chi(A)=0.
How do poles relate to system dynamics?
Eigenvalues λi\lambda_i give modes eλite^{\lambda_i t}: sign of real part sets stability, imaginary part sets oscillation.

Connections

Concept Map

dynamics set by

may be

motivates

uses

yields closed loop

form

goal

evaluated at matrix

must be invertible

combined with

inverse used in

solves for

required for

engine of derivation

System xdot = Ax + Bu

Eigenvalues poles of A

Unstable slow oscillatory

Pole placement

State feedback u = -Kx

A - BK

Desired poles mu_i

Char polynomial alpha s

det sI - A-BK = alpha s

alpha of A

Controllability matrix C

Controllable system

Ackermann K = e_n C-inv alpha A

Cayley-Hamilton

Hinglish (regional understanding)

Intuition Hinglish mein samjho

Dekho, kisi bhi linear system x˙=Ax+Bu\dot x = Ax + Bu ka behaviour uske poles (matrix AA ke eigenvalues) decide karte hain. Agar pole right-half plane mein hai to system unstable — cheez phat jaayegi. Hum chahte hain ki system stable ho, jaldi settle ho, zyada oscillate na kare. Iske liye hum state feedback lagate hain: u=Kxu = -Kx. Ab closed-loop matrix ban jaata hai ABKA - BK, aur iske eigenvalues hum apni marzi se rakh sakte hain — bas correct KK chunna hai.

Ackermann's formula ek ready-made recipe hai us KK ke liye: K=[001]C1α(A)K = [0\,\cdots\,0\,1]\,\mathcal C^{-1}\,\alpha(A). Yahan C=[B AB  An1B]\mathcal C = [B\ AB\ \cdots\ A^{n-1}B] controllability matrix hai, aur α(A)\alpha(A) ka matlab hai — apni desired characteristic polynomial mein matrix AA ko daal do. Sabse common galti yahi hoti hai ki log actual polynomial daal dete hain, jisse Cayley–Hamilton ke wajah se sab zero ho jaata hai aur K=0K=0 aa jaata hai. Hamesha DESIRED polynomial use karo.

Ek zaroori condition: system controllable hona chahiye, yaani C\mathcal C invertible ho. Agar aap system ke kisi direction ko push hi nahi kar sakte, to us pole ko move bhi nahi kar paoge — simple. GNC (rockets, satellites, drones) mein yeh core tool hai kyunki wahan attitude aur position ko exactly desired speed se stabilise karna padta hai, warna vehicle tumble kar jaayega.

Go deeper — visual, from zero

Test yourself — Guidance, Navigation & Control (GNC)

Connections