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>> <<sec:h_infinity_introduction>>
** Introduction :ignore: ** 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]] 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]] .
- Section [[sec:h_infinity_synthesis]]
- Section [[sec:generalized_plant]] The generalized plant, a very useful tool to describe a control problem, is presented in Section [[sec:generalized_plant]].
- Section [[sec:h_infinity_general_synthesis]] The $\mathcal{H}_\infty$ is then applied to this generalized plant in Section [[sec:h_infinity_general_synthesis]].
- Section [[sec:generalized_plant_derivation]]
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 ** The $\mathcal{H}_\infty$ Norm
<<sec:h_infinity_norm>> <<sec:h_infinity_norm>>
#+begin_definition #+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} \begin{equation}
\|G(s)\|_\infty = \max_\omega \bar{\sigma}\big( G(j\omega) \big) \|G(s)\|_\infty = \max_\omega \bar{\sigma}\big( G(j\omega) \big)
\end{equation} \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} \begin{equation}
\|G(s)\|_\infty = \max_{\omega} |G(j\omega)| \label{eq:hinf_norm_siso} \|G(s)\|_\infty = \max_{\omega} |G(j\omega)| \label{eq:hinf_norm_siso}
\end{equation} \end{equation}
@ -850,7 +852,7 @@ Let's compute the $\mathcal{H}_\infty$ norm of our test plant $G(s)$ using the =
#+RESULTS: #+RESULTS:
: 7.9216e-06 : 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 #+begin_src matlab :exports none
freqs = logspace(0, 3, 1000); 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>> <<sec:h_infinity_synthesis>>
#+begin_definition #+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 #+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 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.
1. Write the problem as standard $\mathcal{H}_\infty$ problem #+end_important
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
Note that there are many ways to use the $\mathcal{H}_\infty$ Synthesis: 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]]) - 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. 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. 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]]. 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). It has two /sets/ of inputs $[w,\,u]$ and two /sets/ of outputs $[z\,v]$ such that:
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.
\begin{equation} \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} \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_src latex :file general_plant.pdf
\begin{tikzpicture} \begin{tikzpicture}
\node[block={2.0cm}{2.0cm}] (P) {$P$}; \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{tikzpicture}
#+end_src #+end_src
#+begin_important
#+name: fig:general_plant #+name: fig:general_plant
#+caption: Inputs and Outputs of the generalized Plant #+caption: Inputs and Outputs of the generalized Plant
#+RESULTS: #+RESULTS:
[[file:figs/general_plant.png]] [[file:figs/general_plant.png]]
#+begin_important
#+name: tab:notation_general #+name: tab:notation_general
#+caption: Notations for the general configuration #+caption: Notations for the general configuration
| Notation | Meaning | | Notation | Meaning |
@ -961,10 +962,11 @@ Once the generalized plant is obtained, the $\mathcal{H}_\infty$ synthesis probl
#+begin_important #+begin_important
- $\mathcal{H}_\infty$ Synthesis applied on the generalized plant :: - $\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. 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_src latex :file general_control_names.pdf
\begin{tikzpicture} \begin{tikzpicture}
@ -992,11 +994,7 @@ Once the generalized plant is obtained, the $\mathcal{H}_\infty$ synthesis probl
#+caption: General Control Configuration #+caption: General Control Configuration
#+RESULTS: #+RESULTS:
[[file:figs/general_control_names.png]] [[file:figs/general_control_names.png]]
#+end_important
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}
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]]): 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 #+begin_src matlab :eval no :tangoe no
@ -1006,13 +1004,15 @@ where:
- =P= is the generalized plant transfer function matrix - =P= is the generalized plant transfer function matrix
- =nmeas= is the number of sensed output (size of $v$) - =nmeas= is the number of sensed output (size of $v$)
- =ncont= is the number of control signals (size of $u$) - =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 ** From a Classical Feedback Architecture to a Generalized Plant
<<sec:generalized_plant_derivation>> <<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: 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]] 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 #+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 #+end_src
#+begin_exercice #+begin_exercice
1. Convert the tracking control architecture shown in Figure [[fig:classical_feedback_tracking]] to a generalized configuration Consider the feedback control architecture shown in Figure [[fig:classical_feedback_tracking]].
2. Compute the transfer function matrix using Matlab as a function or $K$ and $G$ 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 #+name: fig:classical_feedback_tracking
#+caption: Classical Feedback Control Architecture (Tracking) #+caption: Classical Feedback Control Architecture (Tracking)