510 lines
15 KiB
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, …</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’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’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>
|