H-Infinity Control Simulator — Mixed Sensitivity Design
Visualize the sensitivity S, complementary sensitivity T, and the mixed sensitivity peak under W_S and W_T weights for a PI controller on G_p = 1/(T_p s + 1). Explore the disturbance vs noise rejection trade-off.
Parameters
PI proportional gain K_c
—
Sensitivity peak target M_s
—
Roll-off frequency ω_BW
rad/s
Comp. roll-off freq. ω_BT
rad/s
Plant is a first-order lag with T_p = 2 s; controller is PI with integral time T_i = 2 s. Weights use A_s = 0.01, A_t = 0.01, M_t = 2.0.
Results
—
|S|max (M_s peak)
—
|T|max (M_t peak)
—
||W_S·S||_∞
—
Closed-loop BW ω_c
Bode plot: |S|, |T|, |W_S|, |W_T|
Red = |S|, blue = |T|, green dashed = |W_S|, purple dashed = |W_T|, grey dashed = M_s limit
Theory & Key Formulas
From the plant $G_p(s)=\dfrac{1}{T_p s+1}$ and PI controller $C(s)=K_c\left(1+\dfrac{1}{T_i s}\right)$, form the open loop $L=CG_p$.
Sensitivity $S$ and complementary sensitivity $T$ (with $S+T=1$):
Design conditions are $\|W_S S\|_\infty<1$ and $\|W_T T\|_\infty<1$. Meeting both at once guarantees disturbance rejection, noise attenuation, and tolerance to model uncertainty.
What is the H-Infinity Control Simulator?
🙋
I keep hearing about "H-infinity control" but I never really got what's so great about it. How is it different from a regular PID design?
🎓
Roughly speaking, H-infinity is a design method that directly minimizes the maximum frequency-domain gain of the closed loop. PID looks at time-domain stuff like overshoot and settling time, but H-infinity guarantees that the gain doesn't blow up at any "bad" frequency. Try raising K_c on the slider above and watch the red |S| peak (M_s) change. That peak is your direct robustness indicator.
🙋
It looks like |S| and |T| swap behavior between low and high frequencies. What does that actually mean?
🎓
That's the heart of H-infinity design. S tells you how much disturbance leaks through to the output; T tells you how much of the reference (and unfortunately sensor noise) reaches the output. The algebraic identity S + T = 1 means you can't make both zero. At low frequency you want S small (kill disturbances), at high frequency you want T small (kill noise). The weights W_S and W_T just encode where to put that crossover.
🙋
The green and purple dashed lines are the weights, right? So S and T shouldn't go above them?
🎓
More precisely, you want |W_S·S| and |W_T·T| to stay below one. That's called the "mixed sensitivity problem." On the plot, |S| (red) shouldn't exceed 1/|W_S| (green) and |T| (blue) shouldn't exceed 1/|W_T| (purple). If the "||W_S·S||_∞" card stays under 1, your disturbance rejection requirement is met. Over 1 means you didn't meet spec.
🙋
Moving M_s from 1.4 to 5 changes the plot a lot. How do you pick M_s in practice?
🎓
In industry, 1.4 to 2.0 is the standard range. At 1.4 you get great robustness but tracking is sluggish. Above 2.0 your stability margins shrink, and any model error — a slightly different motor friction, a slightly longer pipe — can push you toward oscillation. Use M_s = 2.0 as your baseline and tune K_c until |S|'s peak just touches the M_s line on the chart.
FAQ
H-infinity bundles all uncertainty into a single unstructured max-singular-value norm, which is conservative for block-diagonal structured uncertainty. Mu-synthesis (structured singular value design) exploits the block structure for tighter robust performance, but it requires D-K iteration, is computationally expensive, and only guarantees a local optimum. Standard practice is to start with H-infinity and only move to mu when conservatism actually hurts.
"Robust control" is the broader umbrella term for any control method that guarantees stability and performance under model uncertainty. H-infinity is one well-known instance that quantifies uncertainty via the H-infinity norm of transfer functions. Other robust methods include LQG/LTR, QFT, sliding-mode control, and mu-synthesis; H-infinity is the natural choice when you want rigorous frequency-domain guarantees.
For a stable linear time-invariant system, the integral of log|S(jω)| over all frequencies equals a non-negative constant (the sum of unstable poles). So if you push S below 1 in one frequency band (disturbance rejection), S must rise above 1 (disturbance amplification) somewhere else. It's the "waterbed effect": pushing the water down in one place raises it elsewhere. H-infinity design is essentially choosing where to push the water down.
W_S should be high-gain at low frequency (disturbance rejection), cross 0 dB near the roll-off frequency ω_BW, and asymptote to 1/M_s (the allowed peak) at high frequency. W_T does the opposite: high-gain at high frequency (noise rejection), crossing 0 dB near ω_BT. Leave a margin between ω_BW and ω_BT so the solver can find a feasible controller. Pushing both weights down at the same frequency contradicts S + T = 1 and gives no solution.
Real-World Applications
Flight control of aircraft and rockets: Vehicle parameters change dramatically with speed, altitude, and payload, so robustness is essential. H-infinity control is used to guarantee stability margins across the entire flight envelope, in F-16 CAS, attitude control of various UAVs, and thrust-vector control of rockets.
Hard disk head positioning and semiconductor lithography: Mechatronic systems that demand both disturbance rejection and high-speed tracking routinely use H-infinity. Its ability to absorb notch filters into the weights makes it well suited to flexible structures with resonant modes.
Process control (chemical plants, power grids): Processes with multivariable coupling, transport delay, and large model uncertainty benefit from H-infinity and mixed sensitivity. Examples include distillation column composition control, boiler-turbine control in thermal power plants, and power system stabilizers (PSS).
Vehicle chassis control: Active suspension, electric power steering, ESC, and similar systems with road-condition- and load-dependent dynamics are good fits. Trading off ride comfort versus road tracking using frequency-dependent weights is a textbook H-infinity mixed sensitivity problem.
Common Misconceptions and Pitfalls
The most common misconception is "if the H-infinity norm is small, the real-world performance must be good". H-infinity minimizes frequency-domain peak gain; it does not directly minimize settling time or overshoot. On the simulator, raising K_c can reduce ||W_S·S||_∞ but make the transient response oscillatory. H-infinity guarantees robust performance, but time-domain quality must be verified and tuned separately.
Another frequent mistake is thinking "stricter weights always give a better design". Making W_S huge at low frequency or W_T huge at high frequency leads either to no feasible solution or to absurdly high-order controllers. Move ω_BW close to ω_BT in the simulator and watch the weight curves merge and the M_s peak shoot up — that's the design hitting its physical limits. Bode's sensitivity integral (the waterbed effect) is the underlying reason; you have to be selective about where you demand performance.
Finally, remember that this simulator is an evaluation tool for a fixed PI structure. True H-infinity synthesis solves Riccati equations or LMIs to obtain an optimal controller K(s). What we show here is an intuitive process-engineer's view of how mixed-sensitivity metrics change as you vary the PI gain K_c. Full H-infinity synthesis uses MATLAB's Robust Control Toolbox (hinfsyn), Python's python-control, or the SLICOT library, and the resulting controller is usually higher order than PI (plant order + weight order).