+
+
+
+
+
+Let’s design a controller using the \(\mathcal{H}_\infty\) synthesis that fulfils the following requirements:
+
+
+- Bandwidth of at least 10Hz
+- Small static errors for step responses
+- Robustness: Large module margin \(\Delta M > 0.5\) (\(\Rightarrow \Delta G > 2\) and \(\Delta \phi > 29^o\))
+
+
+
+As usual, the plant used is the one presented in Section 1.3.
+
+
+
+
+Translate the requirements as upper bounds on the Sensitivity function and design the corresponding Weight using Matlab.
+
+
+
Hint
+
+The typical wanted upper bound of the sensitivity function is shown in Figure 28.
+
+
+
+More precisely:
+
+
+- Recall that the closed-loop bandwidth is defined as the frequency \(|S(j\omega)|\) first crosses \(1/\sqrt{2} = -3dB\) from below
+- For the small static error, -60dB is usually enough as other factors (measurement noise, disturbances) will anyhow limit the performances
+- Recall that the module margin is equal to the inverse of the \(\mathcal{H}_\infty\) norm of the sensitivity function:
+\[ \Delta M = \frac{1}{\|S\|_\infty} \]
+
+
+
+Remember that the wanted upper bound of the sensitivity function is defined by the inverse magnitude of the weight.
+
+
+
+
+
+
+
Answer
+
+- \(|W_s(j \cdot 2 \pi 10)| = \sqrt{2}\)
+- \(|W_s(j \cdot 0)| = 10^3\)
+- \(\|W_s\|_\infty = 0.5\)
+
+
+
+Using Matlab, such weighting function can be generated using the makeweight
function as shown below:
+
+
+
Ws = makeweight(1e3, [2*pi*10, sqrt(2)], 1/2);
+
+
+
+
+Or using the generateWeight
function:
+
+
+
Ws = generateWeight('G0', 1e3, ...
+ 'G1', 1/2, ...
+ 'Gc', sqrt(2), 'wc', 2*pi*10, ...
+ 'n', 2);
+
+
+
+
+
+
+
+Let’s say we came up with the following weighting function:
+
+
+
Ws = generateWeight('G0', 1e3, ...
+ 'G1', 1/2, ...
+ 'Gc', sqrt(2), 'wc', 2*pi*10, ...
+ 'n', 2);
+
+
+
+
+The weighting function is then added to the generalized plant.
+
+
+
P = [1 -G;
+ 1 -G];
+Pw = blkdiag(Ws, 1)*P;
+
+
+
+
+And the \(\mathcal{H}_\infty\) synthesis is performed on the weighted generalized plant.
+
+
+
K = hinfsyn(Pw, 1, 1, 'Display', 'on');
+
+
+
+
+Test bounds: 0.5 <= gamma <= 0.51
+
+ gamma X>=0 Y>=0 rho(XY)<1 p/f
+5.05e-01 0.0e+00 0.0e+00 3.000e-16 p
+Limiting gains...
+5.05e-01 0.0e+00 0.0e+00 3.461e-16 p
+5.05e-01 -3.5e+01 # -4.9e-14 1.732e-26 f
+
+Best performance (actual): 0.503
+
+
+
+\(\gamma \approx 0.5\) means that the \(\mathcal{H}_\infty\) synthesis generated a controller \(K(s)\) that stabilizes the closed-loop system, and such that:
+
+\begin{aligned}
+ & \| W_s(s) S(s) \|_\infty \approx 0.5 \\
+ & \Leftrightarrow |S(j\omega)| < \frac{0.5}{|W_s(j\omega)|} \quad \forall \omega
+\end{aligned}
+
+
+This is indeed what we can see by comparing \(|S|\) and \(|W_S|\) in Figure 29.
+
+
+
+
+Having \(\gamma < 1\) means that the \(\mathcal{H}_\infty\) synthesis found a controller such that the specified closed-loop transfer functions are bellow the specified upper bounds.
+
+
+
+Having \(\gamma\) slightly above one does not necessary means the obtained controller is not “good”.
+It just means that at some frequency, one of the closed-loop transfer functions is above the specified upper bound by a factor \(\gamma\).
+
+
+
+
+
+
+