2020-11-25 19:35:11 +01:00
<?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 19:38:32 +01:00
<!-- 2020 - 11 - 25 mer. 19:38 -->
2020-11-25 19:35:11 +01:00
< 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" / >
2020-11-25 19:37:47 +01:00
< 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 >
2020-11-25 19:35:11 +01:00
< script > M a t h J a x = {
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 >
2020-11-25 19:38:32 +01:00
< li > < a href = "#org983c7b8" > 1. Introduction to the Control Methodology - Model Based Control< / a > < / li >
< li > < a href = "#org56e9b1e" > 2. Some Background: From Classical Control to Robust Control< / a > < / li >
< li > < a href = "#org26e4f77" > 3. The \(\mathcal{H}_\infty\) Norm< / a > < / li >
< li > < a href = "#org7fece23" > 4. \(\mathcal{H}_\infty\) Synthesis< / a > < / li >
< li > < a href = "#orga8463c6" > 5. The Generalized Plant< / a > < / li >
< li > < a href = "#org8f2f474" > 6. Problem Formulation< / a > < / li >
< li > < a href = "#org6e6fa08" > 7. Classical feedback control and closed loop transfer functions< / a > < / li >
< li > < a href = "#org61c8d78" > 8. From a Classical Feedback Architecture to a Generalized Plant< / a > < / li >
< li > < a href = "#orgf0b775f" > 9. Modern Interpretation of the Control Specifications< / a >
2020-11-25 19:35:11 +01:00
< ul >
2020-11-25 19:38:32 +01:00
< li > < a href = "#org0691a02" > 9.1. Introduction< / a > < / li >
2020-11-25 19:35:11 +01:00
< / ul >
< / li >
2020-11-25 19:38:32 +01:00
< li > < a href = "#org2d9c766" > 10. Resources< / a > < / li >
2020-11-25 19:35:11 +01:00
< / ul >
< / div >
< / div >
2020-11-25 19:38:32 +01:00
< div id = "outline-container-org983c7b8" class = "outline-2" >
< h2 id = "org983c7b8" > < span class = "section-number-2" > 1< / span > Introduction to the Control Methodology - Model Based Control< / h2 >
2020-11-25 19:35:11 +01:00
< div class = "outline-text-2" id = "text-1" >
< p >
2020-11-25 19:38:32 +01:00
The typical methodology when applying Model Based Control to a plant is schematically shown in Figure < a href = "#org893c4a9" > 1< / a > .
2020-11-25 19:35:11 +01:00
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 >
2020-11-25 19:38:32 +01:00
< div id = "org893c4a9" class = "figure" >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< div id = "outline-container-org56e9b1e" class = "outline-2" >
< h2 id = "org56e9b1e" > < span class = "section-number-2" > 2< / span > Some Background: From Classical Control to Robust Control< / h2 >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< div id = "outline-container-org26e4f77" class = "outline-2" >
< h2 id = "org26e4f77" > < span class = "section-number-2" > 3< / span > The \(\mathcal{H}_\infty\) Norm< / h2 >
2020-11-25 19:35:11 +01:00
< div class = "outline-text-2" id = "text-3" >
2020-11-25 19:38:32 +01:00
< div class = "definition" id = "org2a3b6b9" >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< div class = "exampl" id = "org2014425" >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
The magnitude \(|G(j\omega)|\) of the plant \(G(s)\) as a function of frequency is shown in Figure < a href = "#org614e629" > 2< / a > .
2020-11-25 19:35:11 +01:00
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 >
2020-11-25 19:38:32 +01:00
< div id = "org614e629" class = "figure" >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< div id = "outline-container-org7fece23" class = "outline-2" >
< h2 id = "org7fece23" > < span class = "section-number-2" > 4< / span > \(\mathcal{H}_\infty\) Synthesis< / h2 >
2020-11-25 19:35:11 +01:00
< div class = "outline-text-2" id = "text-4" >
< p >
< b > Optimization problem< / b > :
2020-11-25 19:38:32 +01:00
\(\mathcal{H}_\infty\) 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 \(\mathcal{H}_\infty\) norms of defined transfer functions are minimized.
2020-11-25 19:35:11 +01:00
< / p >
< p >
< b > Engineer work< / b > :
< / p >
< ol class = "org-ol" >
2020-11-25 19:38:32 +01:00
< li > Write the problem as standard \(\mathcal{H}_\infty\) problem< / li >
< li > Translate the specifications as \(\mathcal{H}_\infty\) norms< / li >
2020-11-25 19:35:11 +01:00
< li > Make the synthesis and analyze the obtain controller< / li >
< li > Reduce the order of the controller for implementation< / li >
< / ol >
< p >
2020-11-25 19:38:32 +01:00
< b > Many ways to use the \(\mathcal{H}_\infty\) Synthesis< / b > :
2020-11-25 19:35:11 +01:00
< / p >
< ul class = "org-ul" >
2020-11-25 19:38:32 +01:00
< li > Traditional \(\mathcal{H}_\infty\) Synthesis< / li >
2020-11-25 19:35:11 +01:00
< li > Mixed Sensitivity Loop Shaping< / li >
2020-11-25 19:38:32 +01:00
< li > Fixed-Structure \(\mathcal{H}_\infty\) Synthesis< / li >
< li > Signal Based \(\mathcal{H}_\infty\) Synthesis< / li >
2020-11-25 19:35:11 +01:00
< / ul >
< / div >
< / div >
2020-11-25 19:38:32 +01:00
< div id = "outline-container-orga8463c6" class = "outline-2" >
< h2 id = "orga8463c6" > < span class = "section-number-2" > 5< / span > The Generalized Plant< / h2 >
2020-11-25 19:35:11 +01:00
< div class = "outline-text-2" id = "text-5" >
2020-11-25 19:38:32 +01:00
< div id = "org501fafe" class = "figure" >
2020-11-25 19:35:11 +01:00
< p > < img src = "figs/general_plant.png" alt = "general_plant.png" / >
< / p >
< / div >
2020-11-25 19:38:32 +01:00
< table id = "org56ab58c" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< div id = "outline-container-org8f2f474" class = "outline-2" >
< h2 id = "org8f2f474" > < span class = "section-number-2" > 6< / span > Problem Formulation< / h2 >
2020-11-25 19:35:11 +01:00
< div class = "outline-text-2" id = "text-6" >
2020-11-25 19:38:32 +01:00
< div class = "important" id = "org3c999ad" >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< div id = "orgbf7a5b3" class = "figure" >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< div id = "outline-container-org6e6fa08" class = "outline-2" >
< h2 id = "org6e6fa08" > < span class = "section-number-2" > 7< / span > Classical feedback control and closed loop transfer functions< / h2 >
2020-11-25 19:35:11 +01:00
< div class = "outline-text-2" id = "text-7" >
2020-11-25 19:38:32 +01:00
< div id = "orgbdf8949" class = "figure" >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< table id = "org0716237" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< div id = "outline-container-org61c8d78" class = "outline-2" >
< h2 id = "org61c8d78" > < span class = "section-number-2" > 8< / span > From a Classical Feedback Architecture to a Generalized Plant< / h2 >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< div class = "exampl" id = "orgf472923" >
2020-11-25 19:35:11 +01:00
< p >
2020-11-25 19:38:32 +01:00
Let’ s find the Generalized plant of corresponding to the tracking control architecture shown in Figure < a href = "#orgdcc8e73" > 6< / a >
2020-11-25 19:35:11 +01:00
< / p >
2020-11-25 19:38:32 +01:00
< div id = "orgdcc8e73" class = "figure" >
2020-11-25 19:35:11 +01:00
< 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.
2020-11-25 19:38:32 +01:00
We obtain the generalized plant shown in Figure < a href = "#org6782ec2" > 7< / a > .
2020-11-25 19:35:11 +01:00
< / p >
2020-11-25 19:38:32 +01:00
< div id = "org6782ec2" class = "figure" >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< div id = "outline-container-orgf0b775f" class = "outline-2" >
< h2 id = "orgf0b775f" > < span class = "section-number-2" > 9< / span > Modern Interpretation of the Control Specifications< / h2 >
2020-11-25 19:35:11 +01:00
< div class = "outline-text-2" id = "text-9" >
< / div >
2020-11-25 19:38:32 +01:00
< div id = "outline-container-org0691a02" class = "outline-3" >
< h3 id = "org0691a02" > < span class = "section-number-3" > 9.1< / span > Introduction< / h3 >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< div id = "outline-container-org2d9c766" class = "outline-2" >
< h2 id = "org2d9c766" > < span class = "section-number-2" > 10< / span > Resources< / h2 >
2020-11-25 19:35:11 +01:00
< 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 >
2020-11-25 19:38:32 +01:00
< p class = "date" > Created: 2020-11-25 mer. 19:38< / p >
2020-11-25 19:35:11 +01:00
< / div >
< / body >
< / html >