diff --git a/figs/bode_plot_example_afm.pdf b/figs/bode_plot_example_afm.pdf index a6dbbd6..453162b 100644 Binary files a/figs/bode_plot_example_afm.pdf and b/figs/bode_plot_example_afm.pdf differ diff --git a/figs/bode_plot_example_afm.png b/figs/bode_plot_example_afm.png index 380d61e..af6cdd0 100644 Binary files a/figs/bode_plot_example_afm.png and b/figs/bode_plot_example_afm.png differ diff --git a/index.org b/index.org index 65ef8bd..2094cae 100644 --- a/index.org +++ b/index.org @@ -17,7 +17,7 @@ #+BIND: org-latex-image-default-width "" #+LaTeX_CLASS: scrreprt -#+LaTeX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12] +#+LaTeX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12, parskip=full] #+LaTeX_HEADER_EXTRA: \input{preamble.tex} #+CSL_STYLE: ieee.csl @@ -50,7 +50,7 @@ * LaTeX Config :noexport: #+begin_src emacs-lisp :tangle no (setq org-latex-default-table-environment "tabular") - (setq org-latex-tables-booktabs nil) + (setq org-latex-tables-booktabs t) #+end_src #+begin_src latex :tangle preamble.tex @@ -210,7 +210,6 @@ Therefore, for more advanced discussion, please have a look at the recommended r When possible, Matlab scripts used for the example/exercises are provided such that you can easily test them on your computer. - The general structure of this document is as follows: - A short introduction to /model based control/ is given in Section [[sec:model_based_control]] - Classical /open/ loop shaping method is presented in Section [[sec:open_loop_shaping]]. @@ -316,7 +315,7 @@ Note that in parallel, there have been numerous other developments, including no #+name: tab:comparison_control_methods #+caption: Table summurazing the main differences between classical, modern and robust control -#+attr_latex: :environment tabularx :booktabs t :width \linewidth :align lccc +#+attr_latex: :environment tabularx :width \linewidth :align lccc | | | | | | | *Classical Control* | *Modern Control* | *Robust Control* | |---------------+---------------------+--------------------------+-------------------------------| @@ -468,17 +467,19 @@ The notations used on Figure [[fig:mech_sys_1dof_inertial_contr]] are listed and #+name: tab:example_notations #+caption: Example system variables -#+attr_latex: :environment tabularx :booktabs t :width \linewidth :align cXcc +#+attr_latex: :environment tabularx :width \linewidth :align cXcc | *Notation* | *Description* | *Value* | *Unit* | |--------------------+----------------------------------------------------------------+----------------+-----------| | $m$ | Payload's mass to position / isolate | $10$ | [kg] | | $k$ | Stiffness of the suspension system | $10^6$ | [N/m] | | $c$ | Damping coefficient of the suspension system | $400$ | [N/(m/s)] | +|--------------------+----------------------------------------------------------------+----------------+-----------| | $y$ | Payload absolute displacement (measured by an inertial sensor) | | [m] | | $d$ | Ground displacement, it acts as a disturbance | | [m] | | $u$ | Actuator force | | [N] | | $r$ | Wanted position of the mass (the reference) | | [m] | | $\epsilon = r - y$ | Position error | | [m] | +|--------------------+----------------------------------------------------------------+----------------+-----------| | $K$ | Feedback controller | to be designed | [N/m] | #+begin_exercice @@ -563,12 +564,13 @@ The Bode plots of $G(s)$ and $G_d(s)$ are shown in Figures [[fig:bode_plot_examp set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); ylabel('Magnitude'); set(gca, 'XTickLabel',[]); hold off; + ylim([1e-9, 1e-5]); ax2 = nexttile; hold on; plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G, freqs, 'Hz'))))); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); - yticks(-360:90:360); ylim([-270, 90]); + yticks(-360:90:360); ylim([-200, 20]); xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); hold off; linkaxes([ax1,ax2],'x'); @@ -576,7 +578,7 @@ The Bode plots of $G(s)$ and $G_d(s)$ are shown in Figures [[fig:bode_plot_examp #+end_src #+begin_src matlab :tangle no :exports results :results file replace - exportFig('figs/bode_plot_example_afm.pdf', 'width', 'wide', 'height', 'normal'); + exportFig('figs/bode_plot_example_afm.pdf', 'width', 'wide', 'height', 'tall'); #+end_src #+name: fig:bode_plot_example_afm @@ -845,7 +847,7 @@ Such shape corresponds to the typical wanted Loop gain Shape shown in Figure [[f #+name: tab:open_loop_shaping_specifications #+caption: Wanted Loop Shape corresponding to each specification -#+attr_latex: :environment tabularx :booktabs t :width \linewidth :align lXX +#+attr_latex: :environment tabularx :width \linewidth :align lXX | | *Specification* | *Corresponding Loop Shape* | |--------------+----------------------------------------+------------------------------------------| | *Dist. Rej.* | Highest possible rejection below 1Hz | Slope of -40dB/dec at low frequency | @@ -967,7 +969,7 @@ Let's finally compare the obtained stability margins of the $\mathcal{H}_\infty$ #+name: tab:open_loop_shaping_compare #+caption: Comparison of the characteristics obtained with the two methods -#+attr_latex: :environment tabularx :booktabs t :width \linewidth :align Xcc +#+attr_latex: :environment tabularx :width \linewidth :align Xcc #+RESULTS: | *Specifications* | *Manual Method* | *$\mathcal{H}_\infty$ Method* | |-----------------------------+-----------------+-------------------------------| @@ -1108,7 +1110,7 @@ A practical example about how to derive the generalized plant for a classical co #+name: tab:notation_general #+caption: Notations for the general configuration -#+attr_latex: :environment tabularx :booktabs t :width 0.8\linewidth :align cX :float nil +#+attr_latex: :environment tabularx :width 0.8\linewidth :align cX :float nil | *Notation* | *Meaning* | |------------+----------------------------------------------------| | $P$ | Generalized plant model | @@ -1329,7 +1331,7 @@ These are summarized in Table [[tab:spec_closed_loop_tf]]. #+name: tab:spec_closed_loop_tf #+caption: Typical Specification and associated closed-loop transfer function -#+attr_latex: :environment tabularx :booktabs t :width 0.8\linewidth :align Xl +#+attr_latex: :environment tabularx :width 0.8\linewidth :align Xl | *Specification* | *CL Transfer Function* | |--------------------------------+-----------------------------------------------| | Reference Tracking | From $r$ to $\epsilon$ | @@ -1409,7 +1411,7 @@ The comparison of the sensitivity functions shapes and their effect on the step #+name: tab:compare_sensitivity_shapes #+caption: Comparison of the sensitivity function shape and the corresponding step response for the three controller variations -#+attr_latex: :environment tabularx :booktabs t :width 0.9\linewidth :align lXX +#+attr_latex: :environment tabularx :width 0.9\linewidth :align lXX | *Controller* | *Sensitivity Function Shape* | *Change of the Step Response* | |--------------+----------------------------------------------------+----------------------------------| | $K_1(s)$ | Larger bandwidth $\omega_b$ | Faster rise time | @@ -1817,7 +1819,7 @@ And we now understand why setting an upper bound on the magnitude of $S$ is gene #+name: tab:specification_modern #+caption: Typical Specifications and corresponding wanted norms of open and closed loop tansfer functions -#+attr_latex: :environment tabularx :booktabs t :width 0.9\linewidth :align lXX +#+attr_latex: :environment tabularx :width 0.9\linewidth :align lXX | | *Open-Loop Shaping* | *Closed-Loop Shaping* | |-----------------------------+---------------------+--------------------------------------------| | Reference Tracking | $L$ large | $S$ small | @@ -2244,7 +2246,7 @@ When multiple closed-loop transfer function are shaped at the same time, it is r #+name: tab:usual_shaping_gang_four #+caption: Typical specifications and corresponding shaping of the /Gang of four/ -#+attr_latex: :environment tabularx :booktabs t :width 0.9\linewidth :align llX +#+attr_latex: :environment tabularx :width 0.9\linewidth :align llX | | | | | *Specifications* | *TF* | *Wanted shape* | |-------------------------------+------+------------------------------------------------| @@ -3029,7 +3031,7 @@ In such case, we want to shape $S$, $GS$ and $T$. #+name: tab:ex_specification_shapes #+caption: Control Specifications and associated wanted shape of the closed-loop transfer functions -#+attr_latex: :environment tabularx :booktabs t :width 0.7\linewidth :align llX +#+attr_latex: :environment tabularx :width 0.7\linewidth :align llX | | | | | *Specification* | *TF* | *Wanted Shape* | |--------------------------+-----------+------------------------------------| diff --git a/index.pdf b/index.pdf index eeead88..4aacc5e 100644 Binary files a/index.pdf and b/index.pdf differ diff --git a/index.tex b/index.tex index d068582..8bdd480 100644 --- a/index.tex +++ b/index.tex @@ -1,6 +1,6 @@ -% Created 2020-12-04 ven. 23:35 +% Created 2020-12-04 ven. 23:52 % Intended LaTeX compiler: pdflatex -\documentclass[a4paper, 10pt, DIV=12]{scrreprt} +\documentclass[a4paper, 10pt, DIV=12, parskip=full]{scrreprt} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{graphicx} @@ -38,7 +38,7 @@ \chapter*{Introduction} -\label{sec:orge367402} +\label{sec:orgd1c4555} The purpose of this document is to give a \emph{practical introduction} to the wonderful world of \(\mathcal{H}_\infty\) Control. No attend is made to provide an exhaustive treatment of the subject. @@ -61,11 +61,11 @@ Such technique is presented in Section \ref{sec:closed-loop-shaping} \end{itemize} \chapter{Introduction to Model Based Control} -\label{sec:orgef98240} +\label{sec:org906ea4a} \label{sec:model_based_control} \section{Model Based Control - Methodology} -\label{sec:orge1fd1b8} +\label{sec:org56271e2} \label{sec:model_based_control_methodology} The typical methodology for \textbf{Model Based Control} techniques is schematically shown in Figure \ref{fig:control-procedure}. @@ -95,7 +95,7 @@ In Section \ref{sec:open_loop_shaping}, steps 2 and 3 will be described for a co Then, steps 2 and 3 for the \textbf{\(\mathcal{H}_\infty\) Loop Shaping} of closed-loop transfer functions will be discussed in Sections \ref{sec:modern_interpretation_specification}, \ref{sec:closed-loop-shaping} and \ref{sec:h_infinity_mixed_sensitivity}. \section{From Classical Control to Robust Control} -\label{sec:org80f6e15} +\label{sec:orgd4cb731} \label{sec:comp_classical_modern_robust_control} Many different model based control techniques have been developed since the birth of \emph{classical control theory} in the '30s. @@ -154,7 +154,7 @@ Note that in parallel, there have been numerous other developments, including no \end{table} \section{Example System} -\label{sec:orgd6f2ecd} +\label{sec:org24dcae9} \label{sec:example_system} Throughout this document, multiple examples and practical application of presented control strategies will be provided. @@ -254,7 +254,7 @@ The Bode plots of \(G(s)\) and \(G_d(s)\) are shown in Figures \ref{fig:bode_plo \end{figure} \chapter{Classical Open Loop Shaping} -\label{sec:org88c26ac} +\label{sec:org2383b8a} \label{sec:open_loop_shaping} After an introduction to classical Loop Shaping in Section \ref{sec:open_loop_shaping_introduction}, a practical example is given in Section \ref{sec:loop_shaping_example}. Such Loop Shaping is usually performed manually with tools coming from the classical control theory. @@ -263,7 +263,7 @@ However, the \(\mathcal{H}_\infty\) synthesis can be used to automate the Loop S This is presented in Section \ref{sec:h_infinity_open_loop_shaping} and applied on the same example in Section \ref{sec:h_infinity_open_loop_shaping_example}. \section{Introduction to Loop Shaping} -\label{sec:orge3291a7} +\label{sec:orgca87141} \label{sec:open_loop_shaping_introduction} \begin{definition} @@ -311,7 +311,7 @@ But this is were the \(\mathcal{H}_\infty\) Synthesis will be useful! More details on that in Sections \ref{sec:modern_interpretation_specification} and \ref{sec:closed-loop-shaping}. \section{Example of Manual Open Loop Shaping} -\label{sec:org06d32ed} +\label{sec:orgc736296} \label{sec:loop_shaping_example} \begin{exampl} @@ -360,11 +360,13 @@ The bode plot of the Loop Gain is shown in Figure \ref{fig:loop_gain_manual_afm} \begin{center} \begin{tabular}{lr} +\toprule Requirements & Manual Method\\ -\hline +\midrule Gain Margin \(> 3\) [dB] & 3.1\\ Phase Margin \(> 30\) [deg] & 35.4\\ Crossover \(\approx 10\) [Hz] & 10.1\\ +\bottomrule \end{tabular} \end{center} @@ -375,7 +377,7 @@ Crossover \(\approx 10\) [Hz] & 10.1\\ \end{figure} \section{\(\mathcal{H}_\infty\) Loop Shaping Synthesis} -\label{sec:org2bb176d} +\label{sec:orga9060d3} \label{sec:h_infinity_open_loop_shaping} The synthesis of controllers based on the Loop Shaping method can be automated using the \(\mathcal{H}_\infty\) Synthesis. @@ -400,7 +402,7 @@ Therefore, by just providing the wanted loop shape and the plant model, the \(\m Even though we will not go into details and explain how such synthesis is working, an example is provided in the next section. \section{Example of the \(\mathcal{H}_\infty\) Loop Shaping Synthesis} -\label{sec:org4ea69be} +\label{sec:orgc755cbe} \label{sec:h_infinity_open_loop_shaping_example} To apply the \(\mathcal{H}_\infty\) Loop Shaping Synthesis, the wanted shape of the loop gain should be determined from the specifications. @@ -485,7 +487,7 @@ Crossover \(\approx 10\) [Hz] & 10.1 & 9.9\\ \end{table} \chapter{A first Step into the \(\mathcal{H}_\infty\) world} -\label{sec:org9957ebe} +\label{sec:orgfc80984} \label{sec:h_infinity_introduction} In this section, the \(\mathcal{H}_\infty\) Synthesis method, which is based on the optimization of the \(\mathcal{H}_\infty\) norm of transfer functions, is introduced. @@ -497,7 +499,7 @@ The \(\mathcal{H}_\infty\) is then applied to this generalized plant in Section Finally, an example showing how to convert a typical feedback control architecture into a generalized plant is given in Section \ref{sec:generalized_plant_derivation}. \section{The \(\mathcal{H}_\infty\) Norm} -\label{sec:org4d1191c} +\label{sec:org23de71d} \label{sec:h_infinity_norm} \begin{definition} @@ -532,7 +534,7 @@ We can see in Figure \ref{fig:hinfinity_norm_siso_bode} that indeed, the \(\math \end{exampl} \section{\(\mathcal{H}_\infty\) Synthesis} -\label{sec:org25f160e} +\label{sec:org251bca8} \label{sec:h_infinity_synthesis} \begin{definition} @@ -562,7 +564,7 @@ Note that there are many ways to use the \(\mathcal{H}_\infty\) Synthesis: \end{itemize} \section{The Generalized Plant} -\label{sec:org1d5b54d} +\label{sec:orgada260f} \label{sec:generalized_plant} The first step when applying the \(\mathcal{H}_\infty\) synthesis is usually to write the problem as a standard \(\mathcal{H}_\infty\) problem. @@ -601,7 +603,7 @@ A practical example about how to derive the generalized plant for a classical co \end{important} \section{The \(\mathcal{H}_\infty\) Synthesis applied on the Generalized plant} -\label{sec:orgd38e75b} +\label{sec:org1d8fc5f} \label{sec:h_infinity_general_synthesis} Once the generalized plant is obtained, the \(\mathcal{H}_\infty\) synthesis problem can be stated as follows: @@ -637,7 +639,7 @@ where: Note that the general control configure of Figure \ref{fig:general_control_names}, as its name implies, is quite \emph{general} and can represent feedback control as well as feedforward control architectures. \section{From a Classical Feedback Architecture to a Generalized Plant} -\label{sec:orgd8a0711} +\label{sec:orgead7d16} \label{sec:generalized_plant_derivation} The procedure to convert a typical control architecture as the one shown in Figure \ref{fig:classical_feedback_tracking} to a generalized Plant is as follows: @@ -689,7 +691,7 @@ P.OutputName = {'e', 'u', 'v'}; \end{exercice} \chapter{Modern Interpretation of Control Specifications} -\label{sec:orgcd910fe} +\label{sec:orgf4eb6c5} \label{sec:modern_interpretation_specification} As shown in Section \ref{sec:open_loop_shaping}, the loop gain \(L(s) = G(s) K(s)\) is a useful and easy tool when manually designing controllers. This is mainly due to the fact that \(L(s)\) is very easy to shape as it depends \emph{linearly} on \(K(s)\). @@ -713,7 +715,7 @@ The robustness (stability margins) of the system can also be linked to the shape Links between typical control specifications and shapes of the closed-loop transfer functions are summarized in Section \ref{sec:other_requirements}. \section{Closed Loop Transfer Functions and the Gang of Four} -\label{sec:org6d77210} +\label{sec:org40d15a2} \label{sec:closed_loop_tf} Consider the typical feedback system shown in Figure \ref{fig:gang_of_four_feedback}. @@ -798,7 +800,7 @@ Thus, for reference tracking, we have to shape the \emph{closed-loop} transfer f Similarly, to reduce the effect of measurement noise \(n\) on the output \(y\), we have to act on the complementary sensitivity function \(T(s)\). \section{The Sensitivity Function} -\label{sec:org2c7250a} +\label{sec:org6e8bfcd} \label{sec:sensitivity_transfer_functions} The sensitivity function is indisputably the most important closed-loop transfer function of a feedback system. @@ -861,7 +863,7 @@ This will become clear in the next section about the \textbf{module margin}. \end{important} \section{Robustness: Module Margin} -\label{sec:org30ae1f0} +\label{sec:org47b850d} \label{sec:module_margin} Let's start this section by an example demonstrating why the phase and gain margins might not be good indicators of robustness. @@ -1002,7 +1004,7 @@ To learn more about module/disk margin, you can check out \href{https://www.yout \end{seealso} \section{Summary of typical specification and associated wanted shaping} -\label{sec:org3eb7db2} +\label{sec:org5f5ba8c} \label{sec:other_requirements} \begin{table}[htbp] @@ -1022,7 +1024,7 @@ Robustness & Phase/Gain margins & Module margin: \(\Vert S\Vert_\infty\) small\\ \end{table} \chapter{\(\mathcal{H}_\infty\) Shaping of closed-loop transfer functions} -\label{sec:org80e0308} +\label{sec:org2b02046} \label{sec:closed-loop-shaping} In the previous sections, we have seen that the performances of the system depends on the \textbf{shape} of the closed-loop transfer function. Therefore, the synthesis problem is to design \(K(s)\) such that closed-loop system is stable and such that the closed-loop transfer functions such as \(S\), \(KS\) and \(T\) are shaped as wanted. @@ -1041,7 +1043,7 @@ Such synthesis is usually called \textbf{Mixed-sensitivity Loop Shaping} and is Some insight on the use and limitations of such techniques are given in Section \ref{sec:shaping_multiple_tf}. \section{How to Shape closed-loop transfer function? Using Weighting Functions!} -\label{sec:orga64410a} +\label{sec:org6ed8543} \label{sec:weighting_functions} Suppose we apply the \(\mathcal{H}_\infty\) synthesis on the generalized plant \(P(s)\) shown in Figure \ref{fig:loop_shaping_S_without_W}. @@ -1110,7 +1112,7 @@ Pw = blkdiag(Ws, 1)*P; \end{exercice} \section{Design of Weighting Functions} -\label{sec:org0c721f2} +\label{sec:org6cb9a44} \label{sec:weighting_functions_design} Weighting function included in the generalized plant must be \textbf{proper}, \textbf{stable} and \textbf{minimum phase} transfer functions. @@ -1217,7 +1219,7 @@ The obtained shapes are shown in Figure \ref{fig:high_order_weight}. \end{seealso} \section{Shaping the Sensitivity Function} -\label{sec:org622981c} +\label{sec:org9084e2e} \label{sec:sensitivity_shaping_example} Let's design a controller using the \(\mathcal{H}_\infty\) shaping of the sensitivity function that fulfils the following requirements: @@ -1325,7 +1327,7 @@ It just means that at some frequency, one of the closed-loop transfer functions \end{figure} \section{Shaping multiple closed-loop transfer functions - Limitations} -\label{sec:org501a0b0} +\label{sec:org08a5a05} \label{sec:shaping_multiple_tf} As was shown in Section \ref{sec:modern_interpretation_specification}, each of the four main closed-loop transfer functions (called the \emph{gang of four}) will impact different characteristics of the closed-loop system. This is summarized in Table \ref{tab:usual_shaping_gang_four}. @@ -1557,7 +1559,7 @@ Two approaches can be used to obtain controllers with reasonable order: \end{warning} \chapter{Mixed-Sensitivity \(\mathcal{H}_\infty\) Control - Example} -\label{sec:orgcbf596f} +\label{sec:org4999065} \label{sec:h_infinity_mixed_sensitivity} Let's now apply the \(\mathcal{H}_\infty\) Shaping control procedure on a practical example. @@ -1569,7 +1571,7 @@ The important step of interpreting the specifications as wanted shape of closed- Finally, the shaping of closed-loop transfer functions is performed in Sections \ref{sec:ex_shaping_S}, \ref{sec:ex_shaping_GS} and \ref{sec:ex_shaping_T}. \section{Control Problem} -\label{sec:org0d0e2a9} +\label{sec:org4641813} \label{sec:ex_control_problem} Let's consider our usual \emph{test system} shown in Figure \ref{fig:ex_test_system}. @@ -1598,7 +1600,7 @@ The considered inputs are: \end{itemize} \section{Control Design Procedure} -\label{sec:org0f986e4} +\label{sec:org2f6babe} \label{sec:ex_control_procedure} Here is the general design procedure that will be followed: @@ -1688,7 +1690,7 @@ u = z(:,2); % Input usage [N] \end{minted} \section{Modern Interpretation of control specifications} -\label{sec:org1c39f44} +\label{sec:orga74724d} \label{sec:ex_specification_interpretation} \begin{exercice} @@ -1769,7 +1771,7 @@ Now let's shape the three closed-loop transfer functions sequentially: \end{itemize} \section{Step 1 - Shaping of \(S\)} -\label{sec:org2b353b4} +\label{sec:orgfba6439} \label{sec:ex_shaping_S} Let's first shape the Sensitivity function as it is usually the most important of the \emph{Gang of four} closed-loop transfer functions. @@ -1861,7 +1863,7 @@ The time domain signals are shown in Figure \ref{fig:ex_time_domain_1b} and it i \end{figure} \section{Step 2 - Shaping of \(GS\)} -\label{sec:org040835b} +\label{sec:org0c2dbb8} \label{sec:ex_shaping_GS} Looking at Figure \ref{fig:ex_results_2}, it is clear that the rejection of disturbances is not satisfactory. @@ -1893,7 +1895,7 @@ If is shown that indeed, the disturbance rejection performance are much better a \end{figure} \section{Step 3 - Shaping of \(T\)} -\label{sec:orge27b967} +\label{sec:org98a0d1b} \label{sec:ex_shaping_T} Finally, we want to limit the effect of the noise on the displacement output. @@ -1942,7 +1944,7 @@ This can be seen when zooming on the output signal in Figure \ref{fig:ex_time_do \end{figure} \section{Conclusion and Discussion} -\label{sec:org8ee7c81} +\label{sec:org544ddf1} Hopefully this practical example will help you apply the \(\mathcal{H}_\infty\) Shaping synthesis on other control problems. @@ -1951,7 +1953,7 @@ As an exercise, plot and analyze the evolution of the controller and loop gain t If the large input usage is considered to be not acceptable, the shaping of \(KS\) could be included in the synthesis and all the \emph{Gang of four} closed-loop transfer function shapes. \chapter{Conclusion} -\label{sec:org6c74b5a} +\label{sec:org6166298} \label{sec:conclusion} Hopefully, this document gave you a glimpse on how useful and powerful the \(\mathcal{H}_\infty\) loop shaping synthesis can be. @@ -1959,7 +1961,7 @@ One of the true power of \(\mathcal{H}_\infty\) synthesis is that is can easily If you want to know more about the ``\(\mathcal{H}_\infty\) and robust control world'' some resources are given below. \chapter*{Resources} -\label{sec:org17d3722} +\label{sec:orgd57bda1} For a complete treatment of multivariable robust control, I would highly recommend this book \cite{skogestad07_multiv_feedb_contr}. If you want to nice reference book in French, look at \cite{duc99_comman_h}.