Guidance, Navigation and Control · Theory · M3
M3-T6 — Limits of Performance: Delay, Right-Half-Plane Zeros and the Bode Integral
A controller can do a great deal, but not everything. The plant has an unstable pole, the loop has a delay, and between them they decide how fast the loop may be.
The last four lessons showed how to design a loop. This one says when a design cannot exist. Hopper's pitch axis has an unstable pole, which forces the loop to be fast, and the loop has delays, which force it to be slow. Between the two is a window, and the window gets smaller as the delay grows. The limits come from the plant and the loop, not from the controller, so no cleverness in the compensator can remove them. They are worth knowing before the first design, because they tell you whether to improve the controller or the hardware.
Learning objectives
After this lesson, you should be able to:
- State the three limits of performance: unstable poles, delay and right-half-plane zeros, and the sensitivity integral.
- Derive the condition that an unstable pole and a delay place on a first-order plant.
- Compute the window of usable crossover frequencies for a loop from its unstable pole and its delay.
- Explain the waterbed effect and check the sensitivity integral numerically.
The intuition
The previous lessons chose a bandwidth freely. In practice it is not free, and the constraints come from three properties of the plant and the loop that no controller can change.
An unstable pole sets a minimum speed
An unstable pole at makes errors grow as . A feedback loop has to act faster than that to catch the error. If the loop's crossover is much below , the loop reacts too slowly, and the margin shrinks to nothing. The usual rule of thumb is that the crossover must be at least about . For Hopper that is 1.4 rad/s, and below it the designs get fragile, as the table of the worked example shows: the lowest stable gain approaches 1, which means the gain cannot be reduced at all.
A delay sets a maximum speed
Every loop has delays: the sensor, the computation, the actuator, the communications. A delay adds a phase lag that grows with frequency, and so it limits the crossover: past about the lag is more than the loop can afford. Unlike the other limits this one lies in the hardware: a faster computer, a faster bus, a lower-latency sensor all move it. The previous lesson measured it as the delay margin.
A right-half-plane zero sets a maximum speed too
A zero in the right half-plane, at , makes the response start in the wrong direction (M3-T1: Transfer Functions, Poles and Zeros). Pushing a loop around such a plant faster than about makes the initial dip deeper and the loop unstable. It is a property of the plant. Hopper has none, but many aircraft show one between the elevator and the normal acceleration of the aircraft.
The window
The first limit gives a floor on the crossover and the other two give ceilings. Together they leave a window. For Hopper the floor is 1.4 rad/s and, for a loop delay of 30 ms and a margin of three times that, the ceiling is about 9.5 rad/s. The design of the last lessons, 6 rad/s, sits inside. A delay of 100 ms would close the window to nothing, and no controller would then stabilize the vehicle with margin.
The waterbed
There is also a limit on what the sensitivity can look like. If the loop makes small at low frequencies, it must make it large somewhere else, like pushing down on a waterbed. And when the plant has an unstable pole, the total is positive, so the high parts of the sensitivity are always larger than the low parts are small. A designer chooses where the hump goes, not whether there is one.
Before designing, find the unstable poles, the delays and the right-half-plane zeros. They draw the boundaries of the window, and the design is a choice of a point inside it.
Definitions
- Unstable pole
- A pole of the plant in the right half-plane: a mode that grows as . Hopper's pitch axis has per second.
- Delay
- The total pure time delay in the loop in seconds: the sum of sensing, computing, communication and actuator delays. A delay multiplies the loop by .
- Right-half-plane zero
- A zero of the plant in the right half-plane. It makes the response start in the wrong direction.
- Waterbed effect
- The fact that the integral of the logarithm of the sensitivity over frequency is fixed, so that a reduction of in one band must be paid for by an increase in another.
The sensitivity integral says that, for a loop whose gain falls faster than 1/s at high frequency, the area under the logarithm of the sensitivity is set by the unstable poles of the loop:
The rules of thumb for the window, in terms of the crossover , are:
For a first-order unstable plant with a delay, controlled by a proportional gain , the loop is stable for some gain only if the product of pole and delay is below 1:
Derivation: the unstable pole and the delay on a first-order plant
The tension between an unstable pole and a delay is easiest to see on the simplest case: a first-order plant with a delay and a proportional controller .
The loop gain is the controller, the plant and the delay. The delay has magnitude 1, so the magnitude is that of the plant.
Set the magnitude to 1 to find the crossover. It exists only for : below that the loop gain is under 1 at every frequency, including zero, and the unstable pole is not stabilized.
The plant has phase : it starts at −180° and rises towards −90° with frequency. The delay subtracts .
A positive phase margin needs the phase at the crossover to be above −180°: the gain of the unstable plant gives a little phase lead, and the delay must not use it all.
Use . The margin can be positive only if the delay is less than the time constant of the instability, . For no gain stabilizes the loop.
The worked example confirms it for : the range of stabilizing gains shrinks from 0.71 to 2.66 at a delay of 0.5 s, to 0.71 to 0.79 at 1.3 s, and vanishes at 1.5 s, just above s.
What the numbers say for Hopper
The first-order limit, for the pole alone. Hopper's real loop has a second-order plant and a servo, so its true limit is lower, and the margin we want is a fraction of it.
For a given margin, the delay a loop tolerates is inversely proportional to its crossover, which is what the figure shows: a factor of 10 in crossover costs a factor of 10 in delay margin.
An unstable pole sets a floor on the crossover and a delay sets a ceiling. When the product of the pole and the delay approaches 1 the window closes, and what is left to improve is the hardware, not the controller.
A worked example
Map the window for Hopper's pitch loop and check the sensitivity integral.
- A family of designs. Take PD controllers for natural frequencies from 1 to 32 rad/s with a damping ratio of 0.7 and the servo included, and compute their margins. The table of the output gives the crossover, the phase margin, the delay margin and the peak of the sensitivity for six of them.
- The floor. At the crossover is 1.41 rad/s, almost exactly . The design is still stable, with 51° of margin, but the lowest stable gain is 0.329: a loss of two thirds of the authority destabilizes it. Below this the floor bites harder.
- The ceiling. The delay margin falls from 0.631 s at 1.4 rad/s to 0.160 s at 6.07 rad/s (the design of the last lessons), 0.070 s at 11.9 rad/s and 0.007 s at 38 rad/s, as . The phase margin falls too, from 57° to 15°, because the servo's lag grows with frequency: the peak of the sensitivity climbs from 1.1 to 3.8.
- The window. With a total loop delay of 30 ms and a requirement that the delay margin be three times that, 0.09 s, the usable crossovers run from 1.4 to about 9.5 rad/s. The design at 6.07 rad/s has a delay margin of 0.160 s: 5.3 times the delay. With a delay of 100 ms the ceiling would drop to 3.2 rad/s, close to the floor.
- The waterbed. Integrate over frequency for the 6.07 rad/s design: the result is 2.197, against (the tiny difference is the truncated tail). The low-frequency part of the integral is negative, since is small there. It is outweighed by the positive part around and above the crossover, where peaks at 1.16.
- Unstable pole and delay. For a first-order plant with and a proportional controller, stabilizing gains exist for delays of 0.5, 1.0 and 1.3 s (windows shrinking) and none for 1.5 s, which exceeds s.
import cmath, math
import gnckit as g
b, lam = 19.62, 0.7
den = g.poly_mul([1, 0, -lam ** 2], [1 / 40, 1])
ws = g.logspace(-2, 3, 6000)
def margins_of(wn, zeta=0.7):
L = g.TF([2 * zeta * wn, wn ** 2 + lam ** 2], den) # b (Kd s + Kp) with b Kd = 2 zeta wn and b Kp = wn^2 + lam^2
wgc = [ws[i] for i in range(len(ws) - 1) if (abs(L.freq(ws[i])) - 1) * (abs(L.freq(ws[i + 1])) - 1) < 0][-1]
pm = 180 + math.degrees(cmath.phase(L.freq(wgc)))
return L, wgc, pm
print('closed-loop wn crossover phase margin delay margin peak |S| lowest stable gain')
for wn in (1.0, 2.0, 4.0, 8.0, 16.0, 32.0):
L, wgc, pm = margins_of(wn)
ms = g.peak_gain(lambda w: g.sensitivity(L, w), ws)[0]
kmin = lam ** 2 / (wn ** 2 + lam ** 2)
print(f'{wn:12.1f} {wgc:11.2f} {pm:12.1f} deg {math.radians(pm) / wgc:10.3f} s {ms:10.2f} {kmin:14.3f}')
# the sensitivity integral: ln|S| integrated over frequency equals pi times the unstable pole, for a loop of relative degree >= 2
L, _, _ = margins_of(4.0)
n, lo, hi = 400000, -4.0, 5.0
total, w_prev = 0.0, 10 ** lo
f_prev = math.log(abs(g.sensitivity(L, w_prev)))
for i in range(1, n + 1):
w = 10 ** (lo + (hi - lo) * i / n)
f = math.log(abs(g.sensitivity(L, w)))
total += 0.5 * (f + f_prev) * (w - w_prev)
w_prev, f_prev = w, f
total += f_prev * 10 ** lo
print(f'integral of ln|S| over frequency = {total:.3f}, pi x (unstable pole) = {math.pi * lam:.3f}')
# a delay and an unstable pole: P control of 1/(s - p) with a delay theta has a stable gain only if p theta < 1
p = lam
print('P control of 1/(s - 0.7) with delay theta: is any gain stable?')
for theta in (0.5, 1.0, 1.3, 1.5):
good = [k for k in [10 ** (i / 40) for i in range(-60, 80)] if g.nyquist_encirclements(g.TF([k], [1, -p], theta), w_max=100.0, n=3000) + 1 == 0]
print(f' theta = {theta:.1f} s (p theta = {p * theta:.2f}): ' + (f'stable for gains from {min(good):.2f} to {max(good):.2f}' if good else 'no gain works'))closed-loop wn crossover phase margin delay margin peak |S| lowest stable gain
1.0 1.41 50.9 deg 0.631 s 1.16 0.329
2.0 3.00 57.6 deg 0.335 s 1.09 0.109
4.0 6.07 55.5 deg 0.160 s 1.16 0.030
8.0 11.88 47.6 deg 0.070 s 1.34 0.008
16.0 22.03 33.7 deg 0.027 s 1.82 0.002
32.0 37.93 15.4 deg 0.007 s 3.78 0.000
integral of ln|S| over frequency = 2.197, pi x (unstable pole) = 2.199
P control of 1/(s - 0.7) with delay theta: is any gain stable?
theta = 0.5 s (p theta = 0.35): stable for gains from 0.71 to 2.66
theta = 1.0 s (p theta = 0.70): stable for gains from 0.71 to 1.12
theta = 1.3 s (p theta = 0.91): stable for gains from 0.71 to 0.79
theta = 1.5 s (p theta = 1.05): no gain worksIn robotics
The limits explain failures and guide the budget of every project that has an unstable or fast vehicle.
- Latency budgets. The limit turns a bandwidth requirement into a latency requirement: a pitch loop with a crossover of 6 rad/s needs a delay of a few tens of milliseconds, and the timing analysis of UAV M7-T6: End-to-end latency is how a project knows whether it has it.
- Unstable airframes. Aircraft and launch vehicles with relaxed or negative static stability have unstable poles of a fraction to a few per second. The flight control loop must have a crossover well above the pole, and its latency budget is a tight fraction of . That is the reason flight computers of such vehicles run at high rates with redundancy.
- Non-minimum phase. Right-half-plane zeros appear in the response of the altitude of an aircraft to its elevator, and in the lateral position of a car steered while driving in reverse. The autopilot designer does not try to beat the zero: the loop is kept slower than , or another output is controlled.
- Actuators and sensors. If a window is too narrow, the way out is to change the plant: a faster servo moves the ceiling up, a lower-latency sensor does the same, and a vehicle with less aerodynamic instability moves the floor down. Spending on the controller will not help.
- Waterbed in design reviews. A flat sensitivity of 0.1 over a wide band is impossible, and a requirement that implies one is a requirement to be renegotiated. The usual compromise is a hump of 1.2 to 1.5 in , as here.
The two lessons that remain in this module are the practical ones: how a controller runs on a computer with a finite rate and finite actuators, which adds exactly the delay and the saturation discussed here. In module 4 the same limits return in state-space form, as the cost of the observer's speed.
Common misconceptions
“A good enough controller can make any loop as fast as needed.”
The limits come from the plant and the loop, not from the controller. A delay of caps the usable crossover near , and a right-half-plane zero at near . A cleverer compensator does not remove them; it can only choose a point in the window.
“Unstable plants should be controlled as slowly as possible, to be safe.”
The opposite. An unstable pole needs the loop to be at least about twice as fast as the instability: a slow loop reacts after the error has already grown, and has almost no margin. For Hopper the floor is 1.4 rad/s and the lowest stable gain approaches 1 near it.
“The sensitivity can be made small at every frequency.”
The integral of is fixed (zero for a stable loop, for an unstable one), so a reduction in one band is paid for in another. Specifying a low sensitivity over all frequencies is specifying something that cannot exist.
“If the loop is stable on the bench, the delay does not matter.”
The bench setup has its own delays, which are in the model if it was measured properly. A change of computer, a new filter or a slower bus adds delay, and the delay margin says how much is allowed before the vehicle fails. The product near 1 means there is almost nothing left.
“The rules of thumb are exact.”
The factors of 2 are the customary ones. The exact bounds depend on the margin you require and on the plant. Hopper's design at the floor of 1.41 rad/s works, with less margin than at 6 rad/s. Treat the rules as guides to the window, and compute margins to decide.
Key takeaways
- An unstable pole at sets a floor of about on the crossover; a delay and a right-half-plane zero set ceilings of about and .
- For a first-order unstable plant with delay, a stabilizing proportional gain exists only if .
- The delay margin of a design falls as : a factor of 10 in bandwidth costs a factor of 10 in tolerable delay.
- The sensitivity integral is the waterbed: reducing in one band raises it elsewhere, and the total is positive for an unstable plant.
- For Hopper the window is 1.4 to about 9.5 rad/s for a 30 ms loop delay; the design at 6.07 rad/s is inside, with a delay margin 5.3 times the delay.
- When the window is too small, improve the hardware (the actuator, the sensor, the computer), not the controller.
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 chapter on fundamental limitations. Free to read as the authors' PDF; the book is copyrighted.
- S. Skogestad and I. Postlethwaite, Multivariable Feedback Control: Analysis and Design, 2nd edition, Wiley, 2005, the chapter on limitations on performance in SISO systems. The reference for the rules of thumb and the integrals. Paid book.
- J. How and E. Frazzoli, MIT 16.30 Feedback Control Systems (OpenCourseWare) , the lectures on limits of performance. Free; licence CC BY-NC-SA 4.0.
- J. C. Doyle, B. A. Francis and A. R. Tannenbaum, Feedback Control Theory, Macmillan, 1992, the chapter on design limitations. A concise theoretical treatment. Paid book.
Knowledge check
Three questions. Write an answer, then reveal the explanation. Your answers stay in your browser.
Question 1
Hopper's pitch loop is to have a delay margin of at least three times a loop delay of 50 ms. Using the table of the example, what is the largest usable crossover, and is the design at 6.07 rad/s acceptable?
Explanation
The delay margin must be at least 0.15 s. The table gives 0.160 s at a crossover of 6.07 rad/s and 0.070 s at 11.9 rad/s, and since the margin falls as 1/ωgc the limit is at 0.9686 / 0.15 = 6.5 rad/s for a phase margin of about 55°. The design at 6.07 rad/s just passes (0.160 s against 0.150 s required). With a 50 ms delay the window is 1.4 to 6.5 rad/s, narrower than for 30 ms, and shrinks quickly as the delay grows.
Question 2
An unstable plant has a pole at 2 per second. What is the largest delay for which a first-order loop can be stabilized, and what crossover would you aim at?
Explanation
The condition is p θ < 1, so θ < 1/2 = 0.5 s as the absolute limit for a first-order plant; in practice a margin is wanted, so the delay should be well below it, say 0.1 s or less. The crossover should be at least about 2p = 4 rad/s, and at most about 1/θ = 10 rad/s for a delay of 0.1 s, so the window runs from 4 to 10 rad/s. A delay of 0.3 s would leave 4 and 3.3, no window at all.
Question 3
A designer specifies |S| ≤ 0.1 for all frequencies below 10 rad/s and |S| ≤ 1.2 above. Why is this impossible for Hopper's unstable pitch axis?
Explanation
The sensitivity integral requires the area under ln|S| to be π × 0.7 = 2.2, for a loop whose gain falls fast enough at high frequency. The specification makes the part below 10 rad/s at most 10 × ln 0.1 = −23, so the part above 10 rad/s would have to be at least +25. With |S| ≤ 1.2 that part contributes at most ln 1.2 = 0.18 per rad/s, so |S| would have to stay near 1.2 out to about 140 rad/s. Hopper's servo has a bandwidth of 40 rad/s, above which the loop gain has already fallen and |S| returns to 1, so the specification cannot be met. Asking for a narrower band, or a milder |S|, would make it feasible.
What’s next
Related content
Nothing below is required to finish this lesson.
- BeforeM3-T5: Loop Shaping: Lead, Lag and PID as Compensators
Shape a loop to a crossover frequency and a phase margin with lead and lag terms, and recognise PID as a special case.
Other courses on this site treat neighbouring topics from their own angle:
- Lab: Tune a PID Controller
- Lab: Fix the Oscillating Robot
- UAV M5-T6: PID controllers
- UAV M7-T6: End-to-end latency
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.