Re-worked Section 3

This commit is contained in:
Thomas Dehaeze 2020-12-02 19:53:19 +01:00
parent 6ce8fb5cba
commit e0ab1d863c
2 changed files with 386 additions and 366 deletions

File diff suppressed because it is too large Load Diff

View File

@ -819,23 +819,25 @@ Let's finally compare the obtained stability margins of the $\mathcal{H}_\infty$
<<sec:h_infinity_introduction>>
** Introduction :ignore:
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.
- Section [[sec:h_infinity_norm]]
- Section [[sec:h_infinity_synthesis]]
- Section [[sec:generalized_plant]]
- Section [[sec:h_infinity_general_synthesis]]
- Section [[sec:generalized_plant_derivation]]
After the $\mathcal{H}_\infty$ norm is defined in Section [[sec:h_infinity_norm]], the $\mathcal{H}_\infty$ synthesis procedure is described in Section [[sec:h_infinity_synthesis]] .
The generalized plant, a very useful tool to describe a control problem, is presented in Section [[sec:generalized_plant]].
The $\mathcal{H}_\infty$ is then applied to this generalized plant in Section [[sec:h_infinity_general_synthesis]].
Finally, an example showing how to convert a typical feedback control architecture into a generalized plant is given in Section [[sec:generalized_plant_derivation]].
** The $\mathcal{H}_\infty$ Norm
<<sec:h_infinity_norm>>
#+begin_definition
The $\mathcal{H}_\infty$ norm is defined as the peak of the maximum singular value of the frequency response
The $\mathcal{H}_\infty$ norm of a multi-input multi-output system $G(s)$ is defined as the peak of the maximum singular value of its frequency response
\begin{equation}
\|G(s)\|_\infty = \max_\omega \bar{\sigma}\big( G(j\omega) \big)
\end{equation}
For a SISO system $G(s)$, it is simply the peak value of $|G(j\omega)|$ as a function of frequency:
For a single-input single-output system $G(s)$, it is simply the peak value of $|G(j\omega)|$ as a function of frequency:
\begin{equation}
\|G(s)\|_\infty = \max_{\omega} |G(j\omega)| \label{eq:hinf_norm_siso}
\end{equation}
@ -850,7 +852,7 @@ Let's compute the $\mathcal{H}_\infty$ norm of our test plant $G(s)$ using the =
#+RESULTS:
: 7.9216e-06
We can see that the $\mathcal{H}_\infty$ norm of $G(s)$ does corresponds to the peak value of $|G(j\omega)|$ as a function of frequency as shown in Figure [[fig:hinfinity_norm_siso_bode]].
We can see in Figure [[fig:hinfinity_norm_siso_bode]] that indeed, the $\mathcal{H}_\infty$ norm of $G(s)$ does corresponds to the peak value of $|G(j\omega)|$.
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
@ -879,18 +881,19 @@ We can see that the $\mathcal{H}_\infty$ norm of $G(s)$ does corresponds to the
<<sec:h_infinity_synthesis>>
#+begin_definition
$\mathcal{H}_\infty$ synthesis is a method that uses an *algorithm* (LMI optimization, Riccati equation) to find a controller that stabilize the system and that *minimizes* the $\mathcal{H}_\infty$ norms of defined transfer functions.
The $\mathcal{H}_\infty$ synthesis is a method that uses an *algorithm* (LMI optimization, Riccati equation) to find a controller that stabilizes the system and that *minimizes* the $\mathcal{H}_\infty$ norms of defined transfer functions.
#+end_definition
Why optimizing the $\mathcal{H}_\infty$ norm of transfer functions is a pertinent choice will become clear when we will translate the typical control specifications into the $\mathcal{H}_\infty$ norm of transfer functions.
Why optimizing the $\mathcal{H}_\infty$ norm of transfer functions is a pertinent choice will become clear when we will translate the typical control specifications into the $\mathcal{H}_\infty$ norm of transfer functions in Section [[sec:modern_interpretation_specification]].
#+begin_important
Then applying the $\mathcal{H}_\infty$ synthesis to a plant, the engineer work usually consists of the following steps:
1. Write the problem as standard $\mathcal{H}_\infty$ problem using the generalized plant (described in the next section)
2. Translate the specifications as $\mathcal{H}_\infty$ norms of transfer functions (Section [[sec:modern_interpretation_specification]])
3. Make the synthesis and analyze the obtained controller
Then applying the $\mathcal{H}_\infty$ synthesis to a plant, the engineer work usually consists of the following steps
1. Write the problem as standard $\mathcal{H}_\infty$ problem
2. Translate the specifications as $\mathcal{H}_\infty$ norms of transfer functions
3. Make the synthesis and analyze the obtain controller
4. Reduce the order of the controller for implementation
As the $\mathcal{H}_\infty$ synthesis usually gives very high order controllers, an additional step that reduces the controller order is sometimes required for practical implementation.
#+end_important
Note that there are many ways to use the $\mathcal{H}_\infty$ Synthesis:
- Traditional $\mathcal{H}_\infty$ Synthesis (=hinfsyn= [[https://www.mathworks.com/help/robust/ref/hinfsyn.html][doc]])
@ -904,19 +907,17 @@ Note that there are many ways to use the $\mathcal{H}_\infty$ Synthesis:
The first step when applying the $\mathcal{H}_\infty$ synthesis is usually to write the problem as a standard $\mathcal{H}_\infty$ problem.
This consist of deriving the *Generalized Plant* for the current problem.
It makes things much easier for the following steps.
The generalized plant, usually noted $P(s)$, is shown in Figure [[fig:general_plant]].
It has two inputs and two outputs (both could contains many signals).
The meaning of the inputs and outputs are summarized in Table [[tab:notation_general]].
Note that this generalized plant is as its name implies, quite /general/.
It can indeed represent feedback as well as feedforward control architectures.
It has two /sets/ of inputs $[w,\,u]$ and two /sets/ of outputs $[z\,v]$ such that:
\begin{equation}
\begin{bmatrix} z \\ v \end{bmatrix} = P \begin{bmatrix} w \\ u \end{bmatrix} = \begin{bmatrix} P_{11} & P_{12} \\ P_{21} & P_{22} \end{bmatrix} \begin{bmatrix} w \\ u \end{bmatrix}
\begin{bmatrix} z \\ v \end{bmatrix} = P \begin{bmatrix} w \\ u \end{bmatrix}
\end{equation}
The meaning of these inputs and outputs are summarized in Table [[tab:notation_general]].
A practical example about how to derive the generalized plant for a classical control problem is given in Section [[sec:generalized_plant_derivation]].
#+begin_src latex :file general_plant.pdf
\begin{tikzpicture}
\node[block={2.0cm}{2.0cm}] (P) {$P$};
@ -937,12 +938,12 @@ It can indeed represent feedback as well as feedforward control architectures.
\end{tikzpicture}
#+end_src
#+begin_important
#+name: fig:general_plant
#+caption: Inputs and Outputs of the generalized Plant
#+RESULTS:
[[file:figs/general_plant.png]]
#+begin_important
#+name: tab:notation_general
#+caption: Notations for the general configuration
| Notation | Meaning |
@ -961,10 +962,11 @@ Once the generalized plant is obtained, the $\mathcal{H}_\infty$ synthesis probl
#+begin_important
- $\mathcal{H}_\infty$ Synthesis applied on the generalized plant ::
Find a stabilizing controller $K$ that, using the sensed output $v$, generates a control signal $u$ such that the $\mathcal{H}_\infty$ norm of the closed-loop transfer function from $w$ to $z$ is minimized.
Find a stabilizing controller $K$ that, using the sensed outputs $v$, generates control signals $u$ such that the $\mathcal{H}_\infty$ norm of the closed-loop transfer function from $w$ to $z$ is minimized.
After $K$ is found, the system is /robustified/ by adjusting the response around the unity gain frequency to increase stability margins.
#+end_important
The obtained controller $K$ and the generalized plant are connected as shown in Figure [[fig:general_control_names]].
#+begin_src latex :file general_control_names.pdf
\begin{tikzpicture}
@ -992,11 +994,7 @@ Once the generalized plant is obtained, the $\mathcal{H}_\infty$ synthesis probl
#+caption: General Control Configuration
#+RESULTS:
[[file:figs/general_control_names.png]]
Note that the closed-loop transfer function from $w$ to $z$ is:
\begin{equation}
\frac{z}{w} = P_{11} + P_{12} K \big( I - P_{22} K \big)^{-1} P_{21} \triangleq F_l(P, K)
\end{equation}
#+end_important
Using Matlab, the $\mathcal{H}_\infty$ Synthesis applied on a Generalized plant can be applied using the =hinfsyn= command ([[https://www.mathworks.com/help/robust/ref/hinfsyn.html][documentation]]):
#+begin_src matlab :eval no :tangoe no
@ -1006,13 +1004,15 @@ where:
- =P= is the generalized plant transfer function matrix
- =nmeas= is the number of sensed output (size of $v$)
- =ncont= is the number of control signals (size of $u$)
- =K= obtained controller that minimized the $\mathcal{H}_\infty$ norm from $w$ to $z$
- =K= obtained controller (of size =ncont x nmeas=) that minimizes the $\mathcal{H}_\infty$ norm from $w$ to $z$.
Note that the general control configure of Figure [[fig:general_control_names]], as its name implies, is quite /general/ and can represent feedback control as well as feedforward control architectures.
** From a Classical Feedback Architecture to a Generalized Plant
<<sec:generalized_plant_derivation>>
The procedure to convert a typical control architecture as the one shown in Figure [[fig:classical_feedback_tracking]] to a generalized Plant is as follows:
1. Define signals ($w$, $z$, $u$ and $v$) of the generalized plant
1. Define signals of the generalized plant: $w$, $z$, $u$ and $v$
2. Remove $K$ and rearrange the inputs and outputs to match the generalized configuration shown in Figure [[fig:general_plant]]
#+begin_src latex :file classical_feedback_tracking.pdf
@ -1060,8 +1060,10 @@ The procedure to convert a typical control architecture as the one shown in Figu
#+end_src
#+begin_exercice
1. Convert the tracking control architecture shown in Figure [[fig:classical_feedback_tracking]] to a generalized configuration
2. Compute the transfer function matrix using Matlab as a function or $K$ and $G$
Consider the feedback control architecture shown in Figure [[fig:classical_feedback_tracking]].
Suppose we want to design $K$ using the general $\mathcal{H}_\infty$ synthesis, and suppose the signals to be minimized are the control input $u$ and the tracking error $\epsilon$.
1. Convert the control architecture to a generalized configuration
2. Compute the transfer function matrix of the generalized plant $P$ using Matlab as a function or $K$ and $G$
#+name: fig:classical_feedback_tracking
#+caption: Classical Feedback Control Architecture (Tracking)