Skip to the lesson
FixTheRobot Explore Robotics / Guidance, Navigation and Control / M3 Classical Feedback Control / M3-T2

Guidance, Navigation and Control · Theory · M3

M3-T2 — What Feedback Buys and What It Costs

Feedback is the cheapest way to make a vehicle insensitive to what you do not know. It has a price in sensor noise, and the price is fixed by one identity.

  • Lesson 2 of 7
  • Intermediate
  • Module 3: Classical Feedback Control
  • Theory
  • About 14 minutes to read

Hopper's pitch axis is unstable, wind pushes it, its gyroscope is noisy and its authority falls by 40% during a flight. Feedback deals with the first three and tolerates the fourth, and it does so without anyone measuring the wind or the authority. This lesson makes that precise with two functions of frequency, the sensitivity S and the complementary sensitivity T, and the one identity that relates them, S + T = 1. It shows why feedback works, what it costs, and why the cost can be moved around but never removed.

Learning objectives

After this lesson, you should be able to:

  • Write the response of a feedback loop to a reference, a disturbance and sensor noise in terms of S and T.
  • Read the benefits of feedback (rejection, tracking, robustness) from the size of S.
  • Read the costs (noise transmission, reliance on the sensor) from the size of T.
  • Explain why S and T cannot both be small at the same frequency.

The intuition

Consider the loop of M1-T1: Three Questions: Where Am I, Where Should I Go, How Do I Get There in its simplest form: a controller CC, a plant PP, a sensor, a reference rr that says what the output should be, a disturbance dd that pushes on the output, and noise nn in the measurement. The output yy is what the vehicle does.

What feedback buys

  • Disturbance rejection. A gust pushes the pitch away. The sensor sees the error, the controller commands the gimbal against it, and the push is partly undone. The loop need not know where the gust came from, only that the output is not where it should be.
  • Tracking. The same mechanism makes the output follow a changing reference: the error is the difference between the two.
  • Insensitivity to the plant. If the gain of the plant changes, as Hopper's authority does, the loop corrects for it, because the error that results is fed back too.
  • Stabilization. An unstable plant such as the pitch axis can be made stable. No amount of open-loop design can do that, since the input commands would have to be exact.

What it costs

  • Noise. The controller acts on the measurement. A noisy sensor sends noise to the output through the same path the reference takes, and the larger the loop gain, the more of it arrives.
  • Dependence on the sensor. The output is only as good as the measurement of it. Feedback cannot beat the sensor.
  • Risk of instability. A loop that is stable for a perfect plant and sensor can oscillate once delays, lags and limits are added. The next three lessons are about this.

Two functions of frequency

Everything above is captured by two transfer functions. The sensitivity SS says how much of a disturbance reaches the output, and the complementary sensitivity TT says how much of the reference, and of the sensor noise, does. Both depend on frequency, because a loop can be good at rejecting a slow disturbance and poor at a fast one.

Magnitude of the sensitivity S and the complementary sensitivity T of the pitch loopTwo curves against the logarithm of frequency. The sensitivity S starts near 0.03 at low frequency, rises through 0.27 at 2 radians per second and reaches 1 above 8 radians per second, where it stays. The complementary sensitivity T is near 1.03 at low frequency, peaks at 1.29 near 3 radians per second and falls to 0.28 at 20 and 0.11 at 50 radians per second. A dashed line marks the value 1.-1-0.500.511.5200.20.40.60.811.21.4log10 of frequency (rad/s): 0.1, 1, 10, 100magnitude |S|: how much of a disturbance gets through |T|: how much referenceand sensor noise get through
S and T of Hopper's pitch loop (the loop of the previous lesson, before the servo is added). Below 1 rad/s a disturbance is cut to a tenth or less, and the reference is followed. Above 10 rad/s the loop does nothing about disturbances and passes sensor noise less and less.

The figure is the whole story. At low frequency ∣S∣|S| is small and ∣T∣|T| is about 1: the loop rejects disturbances and follows the reference. At high frequency the roles swap: ∣S∣|S| is about 1, the loop does nothing about disturbances, and ∣T∣|T| is small, so noise and reference commands are not passed. The frequency at which one hands over to the other is the bandwidth of the loop.

Feedback is good where the loop gain is large and the vehicle is disturbed, and harmless where the loop gain is small and the sensor is noisy. Design is the choice of the frequency at which the two meet.

Definitions

Loop gain L(s)L(s)
The transfer function around the whole loop, controller times plant (times sensor): L=CPL = CP. It is what a signal is multiplied by on one trip round the loop.
Sensitivity SS
The transfer function from a disturbance at the plant output to the output: S=1/(1+L)S = 1/(1 + L).
Complementary sensitivity TT
The transfer function from the reference to the output (and from sensor noise to the output, with a sign): T=L/(1+L)T = L/(1 + L).
Reference rr, disturbance dd, noise nn
The command, the push on the output, and the error in the measurement.

For the loop with the disturbance added at the plant output and the noise added at the measurement, the output is the sum of three responses:

The loop in three transfer functions
y=T r+S d−T n,S=11+L,T=L1+L,S+T=1y = T\,r + S\,d - T\,n, \qquad S = \frac{1}{1 + L}, \quad T = \frac{L}{1 + L}, \quad S + T = 1
The three terms are the response to the reference, the disturbance and the noise. The last identity is exact and does not depend on the controller or the plant.

If the plant gain changes by a small fraction, the closed loop changes by the same fraction times the sensitivity:

Sensitivity to the plant
ΔTT=S ΔPP\frac{\Delta T}{T} = S\,\frac{\Delta P}{P}
Where ∣S∣|S| is small, the closed loop barely notices a change in the plant. That is the sense in which feedback buys insensitivity.

Derivation: the three responses, the identity and the sensitivity to the plant

The loop equations are three lines of algebra. The controller acts on the error between the reference and the measurement, the measurement is the output plus noise, and the output is the plant response plus the disturbance.

  1. u=C (r−y−n),y=P u+du = C\,(r - y - n), \qquad y = P\,u + d

    The controller takes the error r−(y+n)r - (y + n): reference minus the noisy measurement of the output. The plant adds its response to the disturbance.

  2. y=P C (r−y−n)+d  ⇒  (1+L) y=L r−L n+dy = P\,C\,(r - y - n) + d \;\Rightarrow\; (1 + L)\,y = L\,r - L\,n + d

    Substitute the control into the plant equation and collect the terms in yy, writing L=PCL = PC.

  3. y=L1+L r+11+L d−L1+L n=T r+S d−T ny = \frac{L}{1 + L}\,r + \frac{1}{1 + L}\,d - \frac{L}{1 + L}\,n = T\,r + S\,d - T\,n

    Divide by 1+L1 + L. The three coefficients are TT, SS and −T-T.

  4. S+T=11+L+L1+L=1S + T = \frac{1}{1 + L} + \frac{L}{1 + L} = 1

    Add the two. The sum is exactly 1 at every frequency, whatever the controller and the plant.

The sensitivity to a change of the plant

  1. T(P)=PC1+PC  ⇒  dTdP=C(1+PC)2T(P) = \frac{PC}{1 + PC} \;\Rightarrow\; \frac{dT}{dP} = \frac{C}{(1 + PC)^2}

    Differentiate the complementary sensitivity with respect to the plant, by the quotient rule.

  2. dT/TdP/P=C P(1+PC)2⋅1+PCPC=11+PC=S\frac{dT/T}{dP/P} = \frac{C\,P}{(1 + PC)^2}\cdot\frac{1 + PC}{PC} = \frac{1}{1 + PC} = S

    Divide by T/PT/P. The relative change of the closed loop per relative change of the plant is exactly SS.

S + T = 1 is why feedback has a price. Wherever S is small T is nearly 1, so the loop follows its reference and also passes sensor noise. A designer cannot reject disturbances and noise at the same frequency, only at different ones.

The usual resolution is to separate them in frequency. Disturbances (wind, load changes) and references are slow, and sensor noise is fast, so ∣S∣|S| is made small at low frequency and ∣T∣|T| small at high frequency. The compromise is in the frequency where ∣L∣|L| falls through 1. Lesson M3-T5: Loop Shaping: Lead, Lag and PID as Compensators shapes LL to do exactly that.

A worked example

Take the pitch loop of M3-T1: Transfer Functions, Poles and Zeros: a PD controller on a plant b/(s2−λ2)b/(s^2 - \lambda^2) with natural frequency 4 rad/s and damping 0.7, so L(s)=(5.6 s+16.49)/(s2−0.49)L(s) = (5.6\,s + 16.49)/(s^2 - 0.49). The servo of M2-T3: Forces, Moments and Actuator Models is left out here and added in the next lessons.

  1. Compute S and T over a range of frequencies. S=1/(1+L)S = 1/(1 + L) and T=L/(1+L)T = L/(1 + L) are evaluated at s=jωs = j\omega. The table shows eight of the values.
  2. Disturbances. A slow disturbance at 0.1 rad/s gets through at 3.1% of its open-loop size, one at 0.5 rad/s at 4.6%, one at 2 rad/s at 27%. At 8 rad/s the loop does nothing (98%). A pitch gust that would have pushed the vehicle 10° is held to under 1° if it is slow.
  3. Reference and noise. ∣T∣|T| is 1.03 to 1.09 up to 1 rad/s (the loop follows the reference, with the 3% offset of the last lesson), peaks at 1.29 near 3.1 rad/s (the resonance behind the 4.6% overshoot) and falls to 0.28 at 20 rad/s and 0.11 at 50 rad/s. Gyroscope noise at 20 rad/s reaches the pitch at 28% of its size, and at 50 rad/s at 11%.
  4. Check the identity. At any frequency, ∣S+T−1∣|S + T - 1| is about 10⁻¹⁶: zero to rounding.
  5. Check the sensitivity to the plant. A 10% loss of authority at 0.5 rad/s changes TT by 0.52%. The formula predicts ∣S∣×10%=0.46%|S| \times 10\% = 0.46\%, which is right to first order. The loop is 20 times less sensitive to the loss of authority than the open loop is.
import math
import gnckit as g

b, lam, wn, zeta = 19.62, 0.7, 4.0, 0.7
Kd, Kp = 2 * zeta * wn / b, (wn ** 2 + lam ** 2) / b
L = g.TF([b * Kd, b * Kp], [1, 0, -lam ** 2])     # loop gain of the pitch loop, PD on the pitch error
S = lambda w: g.sensitivity(L, w)
T = lambda w: g.comp_sensitivity(L, w)

print('  w (rad/s)   |S|    |T|')
for w in (0.1, 0.5, 1, 2, 4, 8, 20, 50):
    print(f'  {w:8.1f} {abs(S(w)):6.3f} {abs(T(w)):6.3f}')
ws = g.logspace(-2, 2, 2000)
ms, wms = g.peak_gain(S, ws)
mt, wmt = g.peak_gain(T, ws)
print(f'peak |S| = {ms:.3f} at {wms:.1f} rad/s, peak |T| = {mt:.3f} at {wmt:.1f} rad/s, |S + T - 1| = {abs(S(3.0) + T(3.0) - 1):.0e}')

# parameter sensitivity: the relative change of T is S times the relative change of the plant
w, k = 0.5, 0.9                                   # the pitch authority is 10% low
Lk = g.TF([k * c for c in L.num], L.den)
actual = (g.comp_sensitivity(Lk, w) - T(w)) / T(w)
predicted = S(w) * (k - 1)
print(f'authority -10% at {w} rad/s: T changes by {100 * abs(actual):.2f}%, S x 10% predicts {100 * abs(predicted):.2f}%')
  w (rad/s)   |S|    |T|
       0.1  0.031  1.031
       0.5  0.046  1.046
       1.0  0.093  1.088
       2.0  0.274  1.214
       4.0  0.736  1.242
       8.0  0.982  0.727
      20.0  1.001  0.283
      50.0  1.000  0.112
peak |S| = 1.001 at 17.8 rad/s, peak |T| = 1.294 at 3.1 rad/s, |S + T - 1| = 1e-16
authority -10% at 0.5 rad/s: T changes by 0.52%, S x 10% predicts 0.46%
sensitivity and comp_sensitivity evaluate S and T of a loop TF at one frequency; peak_gain finds the largest magnitude over a grid.

In robotics

Every use of feedback on a vehicle is a use of this trade, and the same two functions describe it.

  • Wind and gusts. A multirotor or an aircraft in turbulence is disturbed at low frequencies, and the attitude loop rejects the disturbance where ∣S∣|S| is small. The disturbance observer of UAV M5-T16: Disturbance rejection and wind compensation is another way to reach the same goal: estimate the disturbance and cancel it.
  • Sensor noise. Gyroscope noise reaches the actuators through TT. A loop with a bandwidth of 4 rad/s hears almost none of the vibration at 100 rad/s, and a loop with a bandwidth of 40 rad/s hears a great deal. This is the usual reason for not choosing the highest bandwidth the actuator would allow.
  • Parameter changes. Hopper's pitch authority drops by 40% over a flight. Because ∣S∣|S| is small at the loop's working frequencies, the closed loop changes far less than the 40%. Gain scheduling (module 5) removes the rest.
  • Stabilizing the unstable. The unstable pole is moved by feedback and by nothing else. The price is paid in sensor dependence: if Hopper's gyroscope fails, the pitch loop has nothing to act on and the vehicle diverges within seconds (M1-T3: One Block Diagram, Four Vehicles).
  • Actuator effort. The controller output is u=CS(r−d−n)u = CS(r - d - n): noise and disturbance reach the actuator through CSCS. A loop that rejects a lot of disturbance asks a lot of the actuator, and can saturate it (module 3, lesson 7).

The frequency response of SS and TT is how loops are specified in practice: a bandwidth (where ∣T∣|T| falls), a limit on the peak of ∣S∣|S| (robustness, next lesson) and a roll-off of ∣T∣|T| at high frequency (noise). Aircraft and spacecraft requirements are written as such constraints on frequency responses.

Common misconceptions

“More loop gain is always better.”

More gain widens the band where ∣S∣|S| is small, which rejects more disturbance. It also widens the band where ∣T∣|T| is near 1, which passes more sensor noise, and it asks more of the actuator. Past some point a loop with more gain is worse in flight.

“Feedback removes the effect of disturbances.”

It reduces them by the factor ∣S∣|S| at each frequency, and only where ∣S∣<1|S| < 1. At 8 rad/s and above Hopper's pitch loop does nothing about a disturbance. A disturbance faster than the bandwidth is not rejected, and a disturbance near the peak of ∣S∣|S| can be amplified.

“I can make the loop reject disturbances and ignore noise at the same time.”

Not at the same frequency: S+T=1S + T = 1 means that where one is small the other is near 1. The trade is made by separating the two in frequency, which works only if the disturbances are slower than the noise.

“If the loop is stable, the sensitivity can be ignored.”

A loop can be stable and have a large peak of ∣S∣|S|, which means disturbances near that frequency are amplified and a small change in the plant destabilizes the loop. The peak of ∣S∣|S| is a robustness measure, and the next lesson relates it to the stability margins.

“The formula ΔT/T = S ΔP/P is exact.”

It is first order in the change of the plant. For a large change such as Hopper's 40% loss of authority, the new TT must be recomputed; the formula says only how sensitive the loop is near the nominal plant.

Key takeaways

  1. The output of a loop is y=Tr+Sd−Tny = Tr + Sd - Tn: the reference and the noise pass through TT, the disturbance through SS.
  2. Feedback rejects disturbances where ∣S∣|S| is small and makes the loop insensitive to the plant by the same factor: ΔT/T=S ΔP/P\Delta T/T = S\,\Delta P/P.
  3. The cost is sensor noise (through TT), dependence on the sensor and risk of instability from lags and delays.
  4. S+T=1S + T = 1 at every frequency, so rejection and noise immunity cannot both hold at the same frequency. They are separated in frequency.
  5. Hopper's pitch loop rejects slow disturbances to under 10% below 1 rad/s and does nothing above 8 rad/s; noise at 20 rad/s arrives at 28%.
  6. Bandwidth is the frequency where the loop hands over from rejecting disturbances to ignoring noise, and choosing it is the main design decision.

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.

Knowledge check

Three questions. Write an answer, then reveal the explanation. Your answers stay in your browser.

Question 1

At 2 rad/s, |S| of the pitch loop is 0.274. A sinusoidal torque disturbance at that frequency would, with no feedback, swing the pitch by 3°. How much does it swing it with the loop closed, and what does the same loop do to a gust at 20 rad/s?

Explanation

At 2 rad/s the swing is reduced to 0.274 × 3° = 0.82°. At 20 rad/s, |S| = 1.001, so the loop does nothing: the disturbance swings the pitch by the same 3° it would without feedback (and is slightly amplified, by 0.1%). The loop rejects disturbances below its bandwidth of a few rad/s and is blind above it, which is why a vibration at tens of rad/s must be isolated mechanically or filtered.

Question 2

The pitch gyroscope has noise of 0.01 rad amplitude at 50 rad/s. How much of it appears in the pitch output, and how much at 4 rad/s?

Explanation

Noise reaches the output through −T. At 50 rad/s, |T| = 0.112, so 0.01 × 0.112 = 1.1 × 10⁻³ rad appears in the pitch. At 4 rad/s |T| = 1.242, so the same noise would be amplified to 0.012 rad: noise in the loop's working band is not attenuated and is slightly amplified by the resonance of T. Sensor noise is only suppressed above the bandwidth.

Question 3

A designer doubles the loop gain to reject more wind disturbance. What happens to |S| at low frequency, to |T| at high frequency, and to the stability margins?

Explanation

Doubling the gain moves the frequency where |L| = 1 up, so |S| is made smaller over a wider band (roughly halved at low frequency, where |S| ≈ 1/|L|), and the band in which |T| ≈ 1 widens, so more sensor noise reaches the output and more is demanded from the actuator. The phase of L at the new crossover is lower because the servo and the delay lag more there, so the phase margin falls. The benefit and the costs come together, which is what S + T = 1 and the margins of the next lessons say.

What’s next

Next lesson

M3-T3 — Frequency Response and Bode Plots

Sketch the Bode plot of a transfer function from its poles and zeros, and read bandwidth and steady-state error from it.

Nothing below is required to finish this lesson.

Other courses on this site treat neighbouring topics from their own angle:

This course leaves the following to the pages that already teach them: