lecture-h-infinity/index.html

510 lines
15 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-11-25 mer. 19:37 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Robust Control - \(\mathcal{H}_\infty\) Synthesis</title>
<meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
<script>MathJax = {
tex: {
tags: 'ams',
macros: {bm: ["\\boldsymbol{#1}",1],}
}
};
</script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<body>
<div id="org-div-home-and-up">
<a accesskey="h" href="../index.html"> UP </a>
|
<a accesskey="H" href="../index.html"> HOME </a>
</div><div id="content">
<h1 class="title">Robust Control - \(\mathcal{H}_\infty\) Synthesis</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org4643b2e">1. Introduction to the Control Methodology - Model Based Control</a></li>
<li><a href="#org8a683c3">2. Some Background: From Classical Control to Robust Control</a></li>
<li><a href="#orgc683003">3. The \(\mathcal{H}_\infty\) Norm</a></li>
<li><a href="#org23e7e4a">4. \(\mathcal{H}_\infty\) Synthesis</a></li>
<li><a href="#orgcd078d9">5. The Generalized Plant</a></li>
<li><a href="#org675f3d8">6. Problem Formulation</a></li>
<li><a href="#org64eaa6d">7. Classical feedback control and closed loop transfer functions</a></li>
<li><a href="#orgee3fbb9">8. From a Classical Feedback Architecture to a Generalized Plant</a></li>
<li><a href="#orgc9be7b5">9. Modern Interpretation of the Control Specifications</a>
<ul>
<li><a href="#orgf9aaff9">9.1. Introduction</a></li>
</ul>
</li>
<li><a href="#org42f3566">10. Resources</a></li>
</ul>
</div>
</div>
<div id="outline-container-org4643b2e" class="outline-2">
<h2 id="org4643b2e"><span class="section-number-2">1</span> Introduction to the Control Methodology - Model Based Control</h2>
<div class="outline-text-2" id="text-1">
<p>
The typical methodology when applying Model Based Control to a plant is schematically shown in Figure <a href="#org3f1eee3">1</a>.
It consists of three steps:
</p>
<ol class="org-ol">
<li><b>Identification or modeling</b>: \(\Longrightarrow\) mathematical model</li>
<li><b>Translate the specifications into mathematical criteria</b>:
<ul class="org-ul">
<li><span class="underline">Specifications</span>: Response Time, Noise Rejection, Maximum input amplitude, Robustness, &#x2026;</li>
<li><span class="underline">Mathematical Criteria</span>: Cost Function, Shape of TF</li>
</ul></li>
<li><b>Synthesis</b>: research of \(K\) that satisfies the specifications for the model of the system</li>
</ol>
<div id="org3f1eee3" class="figure">
<p><img src="figs/control-procedure.png" alt="control-procedure.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Typical Methodoly for Model Based Control</p>
</div>
<p>
In this document, we will mainly focus on steps 2 and 3.
</p>
</div>
</div>
<div id="outline-container-org8a683c3" class="outline-2">
<h2 id="org8a683c3"><span class="section-number-2">2</span> Some Background: From Classical Control to Robust Control</h2>
<div class="outline-text-2" id="text-2">
<p>
Classical Control (1930)
</p>
<ul class="org-ul">
<li>Tools:
<ul class="org-ul">
<li>TF (input-output)</li>
<li>Nyquist, Bode, Black, \ldots</li>
<li>P-PI-PID, Phase lead-lag, \ldots</li>
</ul></li>
<li>Advantages:
<ul class="org-ul">
<li>Stability</li>
<li>Performances</li>
<li>Robustness</li>
</ul></li>
<li>Disadvantages:
<ul class="org-ul">
<li>Manual Method</li>
<li>Only SISO</li>
</ul></li>
</ul>
<p>
Modern Control (1960)
</p>
<ul class="org-ul">
<li>Tools:
<ul class="org-ul">
<li>State Space</li>
<li>Optimal Command</li>
<li>LQR, LQG</li>
</ul></li>
<li>Advantages:
<ul class="org-ul">
<li>Automatic Synthesis</li>
<li>MIMO</li>
<li>Optimisation problem</li>
</ul></li>
<li>Disadvantages:
<ul class="org-ul">
<li>Robustness</li>
<li>Rejection of Perturbations</li>
</ul></li>
</ul>
<p>
Robust Control (1980)
</p>
<ul class="org-ul">
<li>Tools:
<ul class="org-ul">
<li>Disk Margin</li>
<li>Systems and Signals norms (\(\mathcal{H}_\infty\) and \(\mathcal{H}_2\) norms)</li>
<li>Closed Loop Transfer Functions</li>
<li>Loop Shaping</li>
</ul></li>
<li>Advantages:
<ul class="org-ul">
<li>Stability</li>
<li>Performances</li>
<li>Robustness</li>
<li>Automatic Synthesis</li>
<li>MIMO</li>
<li>Optimization Problem</li>
</ul></li>
<li>Disadvantages:
<ul class="org-ul">
<li>Requires the knowledge of specific tools</li>
<li>Need a reasonably good model of the system</li>
</ul></li>
</ul>
</div>
</div>
<div id="outline-container-orgc683003" class="outline-2">
<h2 id="orgc683003"><span class="section-number-2">3</span> The \(\mathcal{H}_\infty\) Norm</h2>
<div class="outline-text-2" id="text-3">
<div class="definition" id="org376138c">
<p>
The \(\mathcal{H}_\infty\) norm is defined as the peak of the maximum singular value of the frequency response
</p>
\begin{equation}
\|G(s)\|_\infty = \max_\omega \bar{\sigma}\big( G(j\omega) \big)
\end{equation}
<p>
For a SISO system \(G(s)\), it is simply the peak value of \(|G(j\omega)|\) as a function of frequency:
</p>
\begin{equation}
\|G(s)\|_\infty = \max_{\omega} |G(j\omega)| \label{eq:hinf_norm_siso}
\end{equation}
</div>
<div class="exampl" id="org4a6bc14">
<p>
Let&rsquo;s define a plant dynamics:
</p>
<div class="org-src-container">
<pre class="src src-matlab">w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span>; k = 1e6; xi = 0.04;
G = 1<span class="org-type">/</span>k<span class="org-type">/</span>(s<span class="org-type">^</span>2<span class="org-type">/</span>w0<span class="org-type">^</span>2 <span class="org-type">+</span> 2<span class="org-type">*</span>xi<span class="org-type">*</span>s<span class="org-type">/</span>w0 <span class="org-type">+</span> 1);
</pre>
</div>
<p>
And compute its \(\mathcal{H}_\infty\) norm using the <code>hinfnorm</code> function:
</p>
<div class="org-src-container">
<pre class="src src-matlab">hinfnorm(G)
</pre>
</div>
<pre class="example">
1.0013e-05
</pre>
<p>
The magnitude \(|G(j\omega)|\) of the plant \(G(s)\) as a function of frequency is shown in Figure <a href="#org109ee6e">2</a>.
The maximum value of the magnitude over all frequencies does correspond to the \(\mathcal{H}_\infty\) norm of \(G(s)\) as Equation \eqref{eq:hinf_norm_siso} implies.
</p>
<div id="org109ee6e" class="figure">
<p><img src="figs/hinfinity_norm_siso_bode.png" alt="hinfinity_norm_siso_bode.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Example of the \(\mathcal{H}_\infty\) norm of a SISO system</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org23e7e4a" class="outline-2">
<h2 id="org23e7e4a"><span class="section-number-2">4</span> \(\mathcal{H}_\infty\) Synthesis</h2>
<div class="outline-text-2" id="text-4">
<p>
<b>Optimization problem</b>:
\(\hinf\) synthesis is a method that uses an <b>algorithm</b> (LMI optimization, Riccati equation) to find a controller of the same order as the system so that the \(\hinf\) norms of defined transfer functions are minimized.
</p>
<p>
<b>Engineer work</b>:
</p>
<ol class="org-ol">
<li>Write the problem as standard \(\hinf\) problem</li>
<li>Translate the specifications as \(\hinf\) norms</li>
<li>Make the synthesis and analyze the obtain controller</li>
<li>Reduce the order of the controller for implementation</li>
</ol>
<p>
<b>Many ways to use the \(\hinf\) Synthesis</b>:
</p>
<ul class="org-ul">
<li>Traditional \(\hinf\) Synthesis</li>
<li>Mixed Sensitivity Loop Shaping</li>
<li>Fixed-Structure \(\hinf\) Synthesis</li>
<li>Signal Based \(\hinf\) Synthesis</li>
</ul>
</div>
</div>
<div id="outline-container-orgcd078d9" class="outline-2">
<h2 id="orgcd078d9"><span class="section-number-2">5</span> The Generalized Plant</h2>
<div class="outline-text-2" id="text-5">
<div id="org798bc0e" class="figure">
<p><img src="figs/general_plant.png" alt="general_plant.png" />
</p>
</div>
<table id="org8df566a" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Notations for the general configuration</caption>
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Notation</th>
<th scope="col" class="org-left">Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">\(P\)</td>
<td class="org-left">Generalized plant model</td>
</tr>
<tr>
<td class="org-left">\(w\)</td>
<td class="org-left">Exogenous inputs: commands, disturbances, noise</td>
</tr>
<tr>
<td class="org-left">\(z\)</td>
<td class="org-left">Exogenous outputs: signals to be minimized</td>
</tr>
<tr>
<td class="org-left">\(v\)</td>
<td class="org-left">Controller inputs: measurements</td>
</tr>
<tr>
<td class="org-left">\(u\)</td>
<td class="org-left">Control signals</td>
</tr>
</tbody>
</table>
\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}
\end{equation}
</div>
</div>
<div id="outline-container-org675f3d8" class="outline-2">
<h2 id="org675f3d8"><span class="section-number-2">6</span> Problem Formulation</h2>
<div class="outline-text-2" id="text-6">
<div class="important" id="orgaecd7ae">
<p>
The \(\mathcal{H}_\infty\) Synthesis objective is to find all stabilizing controllers \(K\) which minimize
</p>
\begin{equation}
\| F_l(P, K) \|_\infty = \max_{\omega} \overline{\sigma} \big( F_l(P, K)(j\omega) \big)
\end{equation}
</div>
<div id="orgc5544e6" class="figure">
<p><img src="figs/general_control_names.png" alt="general_control_names.png" />
</p>
<p><span class="figure-number">Figure 4: </span>General Control Configuration</p>
</div>
</div>
</div>
<div id="outline-container-org64eaa6d" class="outline-2">
<h2 id="org64eaa6d"><span class="section-number-2">7</span> Classical feedback control and closed loop transfer functions</h2>
<div class="outline-text-2" id="text-7">
<div id="orge2d651d" class="figure">
<p><img src="figs/classical_feedback.png" alt="classical_feedback.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Classical Feedback Architecture</p>
</div>
<table id="org101f1b2" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 2:</span> Notations for the Classical Feedback Architecture</caption>
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Notation</th>
<th scope="col" class="org-left">Meaning</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">\(G\)</td>
<td class="org-left">Plant model</td>
</tr>
<tr>
<td class="org-left">\(K\)</td>
<td class="org-left">Controller</td>
</tr>
<tr>
<td class="org-left">\(r\)</td>
<td class="org-left">Reference inputs</td>
</tr>
<tr>
<td class="org-left">\(y\)</td>
<td class="org-left">Plant outputs</td>
</tr>
<tr>
<td class="org-left">\(u\)</td>
<td class="org-left">Control signals</td>
</tr>
<tr>
<td class="org-left">\(d\)</td>
<td class="org-left">Input Disturbance</td>
</tr>
<tr>
<td class="org-left">\(\epsilon\)</td>
<td class="org-left">Tracking Error</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-orgee3fbb9" class="outline-2">
<h2 id="orgee3fbb9"><span class="section-number-2">8</span> From a Classical Feedback Architecture to a Generalized Plant</h2>
<div class="outline-text-2" id="text-8">
<p>
The procedure is:
</p>
<ol class="org-ol">
<li>define signals of the generalized plant</li>
<li>Remove \(K\) and rearrange the inputs and outputs</li>
</ol>
<div class="exampl" id="orgb5a13ef">
<p>
Let&rsquo;s find the Generalized plant of corresponding to the tracking control architecture shown in Figure <a href="#orge163327">6</a>
</p>
<div id="orge163327" class="figure">
<p><img src="figs/classical_feedback_tracking.png" alt="classical_feedback_tracking.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Classical Feedback Control Architecture (Tracking)</p>
</div>
<p>
First, define the signals of the generalized plant:
</p>
<ul class="org-ul">
<li>Exogenous inputs: \(w = r\)</li>
<li>Signals to be minimized: \(z_1 = \epsilon\), \(z_2 = u\)</li>
<li>Control signals: \(v = y\)</li>
<li>Control inputs: \(u\)</li>
</ul>
<p>
Then, Remove \(K\) and rearrange the inputs and outputs.
We obtain the generalized plant shown in Figure <a href="#orgfbdbe4a">7</a>.
</p>
<div id="orgfbdbe4a" class="figure">
<p><img src="figs/mixed_sensitivity_ref_tracking.png" alt="mixed_sensitivity_ref_tracking.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Generalized plant of the Classical Feedback Control Architecture (Tracking)</p>
</div>
<p>
Using Matlab, the generalized plant can be defined as follows:
</p>
<div class="org-src-container">
<pre class="src src-matlab">P = [1 <span class="org-type">-</span>G;
0 1;
1 <span class="org-type">-</span>G]
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-orgc9be7b5" class="outline-2">
<h2 id="orgc9be7b5"><span class="section-number-2">9</span> Modern Interpretation of the Control Specifications</h2>
<div class="outline-text-2" id="text-9">
</div>
<div id="outline-container-orgf9aaff9" class="outline-3">
<h3 id="orgf9aaff9"><span class="section-number-3">9.1</span> Introduction</h3>
<div class="outline-text-3" id="text-9-1">
<ul class="org-ul">
<li><b>Reference tracking</b> Overshoot, Static error, Setling time
<ul class="org-ul">
<li>\(S(s) = T_{r \rightarrow \epsilon}\)</li>
</ul></li>
<li><b>Disturbances rejection</b>
<ul class="org-ul">
<li>\(G(s) S(s) = T_{d \rightarrow \epsilon}\)</li>
</ul></li>
<li><b>Measurement noise filtering</b>
<ul class="org-ul">
<li>\(T(s) = T_{n \rightarrow \epsilon}\)</li>
</ul></li>
<li><b>Small command amplitude</b>
<ul class="org-ul">
<li>\(K(s) S(s) = T_{r \rightarrow u}\)</li>
</ul></li>
<li><b>Stability</b>
<ul class="org-ul">
<li>\(S(s)\), \(T(s)\), \(K(s)S(s)\), \(G(s)S(s)\)</li>
</ul></li>
<li><b>Robustness to plant uncertainty</b> (stability margins)</li>
<li><b>Controller implementation</b></li>
</ul>
<p>
**
</p>
</div>
</div>
</div>
<div id="outline-container-org42f3566" class="outline-2">
<h2 id="org42f3566"><span class="section-number-2">10</span> Resources</h2>
<div class="outline-text-2" id="text-10">
<p>
<iframe width="1280" height="720" src="https://www.youtube.com/embed/?listType=playlist&list=PLn8PRpmsu08qFLMfgTEzR8DxOPE7fBiin" frameborder="0" allowfullscreen></iframe>
</p>
<p>
<iframe width="1280" height="720" src="https://www.youtube.com/embed/?listType=playlist&list=PLsjPUqcL7ZIFHCObUU_9xPUImZ203gB4o" frameborder="0" allowfullscreen></iframe>
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-11-25 mer. 19:37</p>
</div>
</body>
</html>