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-27 18:26:06 +01:00
<!-- 2020 - 11 - 27 ven. 18:20 -->
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-27 18:26:06 +01:00
< li > < a href = "#org482cee2" > 1. Introduction to the Control Methodology - Model Based Control< / a >
2020-11-25 19:35:11 +01:00
< ul >
2020-11-27 18:26:06 +01:00
< li > < a href = "#org279a16f" > 1.1. Control Methodology< / a > < / li >
< li > < a href = "#orgca6e3d9" > 1.2. Some Background: From Classical Control to Robust Control< / a > < / li >
< li > < a href = "#orgc1a54dd" > 1.3. Example System< / a > < / li >
2020-11-25 19:35:11 +01:00
< / ul >
< / li >
2020-11-27 18:26:06 +01:00
< li > < a href = "#org1336132" > 2. Classical Open Loop Shaping< / a >
< ul >
< li > < a href = "#org1c9ddc9" > 2.1. Introduction ot Open Loop Shaping< / a > < / li >
< li > < a href = "#org3cd2ec2" > 2.2. Example of Open Loop Shaping< / a > < / li >
< li > < a href = "#orgafc190d" > 2.3. \(\mathcal{H}_\infty\) Loop Shaping Synthesis< / a > < / li >
< li > < a href = "#org386c720" > 2.4. Example of the \(\mathcal{H}_\infty\) Loop Shaping Synthesis< / a > < / li >
< / ul >
< / li >
< li > < a href = "#orgcf6b2a6" > 3. The \(\mathcal{H}_\infty\) Norm< / a > < / li >
< li > < a href = "#org5bc80a8" > 4. \(\mathcal{H}_\infty\) Synthesis< / a > < / li >
< li > < a href = "#org3a241a5" > 5. The Generalized Plant< / a > < / li >
< li > < a href = "#org49fe7df" > 6. Problem Formulation< / a > < / li >
< li > < a href = "#orgf671631" > 7. Classical feedback control and closed loop transfer functions< / a > < / li >
< li > < a href = "#orgd118710" > 8. From a Classical Feedback Architecture to a Generalized Plant< / a > < / li >
< li > < a href = "#orgdd1c5fa" > 9. Modern Interpretation of the Control Specifications< / a >
< ul >
< li > < a href = "#org00cad5d" > 9.1. Introduction< / a > < / li >
< / ul >
< / li >
< li > < a href = "#org0e07a10" > 10. Resources< / a > < / li >
2020-11-25 19:35:11 +01:00
< / ul >
< / div >
< / div >
2020-11-27 18:26:06 +01:00
< div id = "outline-container-org482cee2" class = "outline-2" >
< h2 id = "org482cee2" > < 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" >
2020-11-27 18:26:06 +01:00
< / div >
< div id = "outline-container-org279a16f" class = "outline-3" >
< h3 id = "org279a16f" > < span class = "section-number-3" > 1.1< / span > Control Methodology< / h3 >
< div class = "outline-text-3" id = "text-1-1" >
2020-11-25 19:35:11 +01:00
< p >
2020-11-27 18:26:06 +01:00
The typical methodology when applying Model Based Control to a plant is schematically shown in Figure < a href = "#org3328399" > 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-27 18:26:06 +01:00
< div id = "org3328399" 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-27 18:26:06 +01:00
< div id = "outline-container-orgca6e3d9" class = "outline-3" >
< h3 id = "orgca6e3d9" > < span class = "section-number-3" > 1.2< / span > Some Background: From Classical Control to Robust Control< / h3 >
< div class = "outline-text-3" id = "text-1-2" >
2020-11-25 19:35:11 +01:00
< 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-27 18:26:06 +01:00
< div id = "outline-container-orgc1a54dd" class = "outline-3" >
< h3 id = "orgc1a54dd" > < span class = "section-number-3" > 1.3< / span > Example System< / h3 >
< div class = "outline-text-3" id = "text-1-3" >
< p >
Let’ s consider the test-system shown in Figure < a href = "#orgbec3f57" > 2< / a > .
The notations used are listed in Table < a href = "#orgf10115b" > 1< / a > .
< / p >
< div id = "orgbec3f57" class = "figure" >
< p > < img src = "figs/mech_sys_1dof_inertial_contr.png" alt = "mech_sys_1dof_inertial_contr.png" / >
< / p >
< p > < span class = "figure-number" > Figure 2: < / span > Test System consisting of a payload with a mass \(m\) on top of an active system with a stiffness \(k\), damping \(c\) and an actuator.< / p >
< / div >
< table id = "orgf10115b" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< caption class = "t-above" > < span class = "table-number" > Table 1:< / span > Example system variables< / caption >
< colgroup >
< col class = "org-left" / >
< col class = "org-left" / >
< col class = "org-left" / >
< col class = "org-left" / >
< / colgroup >
< thead >
< tr >
< th scope = "col" class = "org-left" > < b > Notation< / b > < / th >
< th scope = "col" class = "org-left" > < b > Description< / b > < / th >
< th scope = "col" class = "org-left" > < b > Value< / b > < / th >
< th scope = "col" class = "org-left" > < b > Unit< / b > < / th >
< / tr >
< / thead >
< tbody >
< tr >
< td class = "org-left" > \(m\)< / td >
< td class = "org-left" > Payload’ s mass to position / isolate< / td >
< td class = "org-left" >   < / td >
< td class = "org-left" > [kg]< / td >
< / tr >
< tr >
< td class = "org-left" > \(k\)< / td >
< td class = "org-left" > Stiffness of the suspension system< / td >
< td class = "org-left" >   < / td >
< td class = "org-left" > [N/m]< / td >
< / tr >
< tr >
< td class = "org-left" > \(c\)< / td >
< td class = "org-left" > Damping coefficient of the suspension system< / td >
< td class = "org-left" >   < / td >
< td class = "org-left" > [N/(m/s)]< / td >
< / tr >
< tr >
< td class = "org-left" > \(y\)< / td >
< td class = "org-left" > Payload absolute displacement (measured by an inertial sensor)< / td >
< td class = "org-left" >   < / td >
< td class = "org-left" > [m]< / td >
< / tr >
< tr >
< td class = "org-left" > \(d\)< / td >
< td class = "org-left" > Ground displacement, it acts as a disturbance< / td >
< td class = "org-left" >   < / td >
< td class = "org-left" > [m]< / td >
< / tr >
< tr >
< td class = "org-left" > \(u\)< / td >
< td class = "org-left" > Actuator force< / td >
< td class = "org-left" >   < / td >
< td class = "org-left" > [N]< / td >
< / tr >
< tr >
< td class = "org-left" > \(r\)< / td >
< td class = "org-left" > Wanted position of the mass (the reference)< / td >
< td class = "org-left" >   < / td >
< td class = "org-left" > [m]< / td >
< / tr >
< tr >
< td class = "org-left" > \(\epsilon = r - y\)< / td >
< td class = "org-left" > Position error< / td >
< td class = "org-left" >   < / td >
< td class = "org-left" > [m]< / td >
< / tr >
< tr >
< td class = "org-left" > \(K\)< / td >
< td class = "org-left" > Feedback controller< / td >
< td class = "org-left" > to be designed< / td >
< td class = "org-left" > [N/m]< / td >
< / tr >
< / tbody >
< / table >
< div class = "exercice" id = "org09b2f15" >
< p >
Derive the following open-loop transfer functions:
< / p >
\begin{align}
G(s) & = \frac{y}{u} \\
G_d(s) & = \frac{y}{d}
\end{align}
< p >
< b > Hint:< / b > You can follow this generic procedure:
< / p >
< ol class = "org-ol" >
< li > List all applied forces ot the mass: Actuator force, Stiffness force (Hooke’ s law), … < / li >
< li > Apply the Newton’ s Second Law on the payload
\[ m \ddot{y} = \Sigma F \]< / li >
< li > Transform the differential equations into the Laplace domain:
\[ \frac{d\ \cdot}{dt} \Leftrightarrow \cdot \times s \]< / li >
< li > Write \(y(s)\) as a function of \(u(s)\) and \(w(s)\)< / li >
< / ol >
< / div >
< p >
Having obtained \(G(s)\) and \(G_d(s)\), we can transform the system shown in Figure < a href = "#orgbec3f57" > 2< / a > into a classical feedback form as shown in Figure < a href = "#orge09e85e" > 4< / a > .
< / p >
< div id = "orge1cf983" class = "figure" >
< p > < img src = "figs/classical_feedback_test_system.png" alt = "classical_feedback_test_system.png" / >
< / p >
< p > < span class = "figure-number" > Figure 3: < / span > Block diagram corresponding to the example system< / p >
< / div >
< / div >
< / div >
< / div >
< div id = "outline-container-org1336132" class = "outline-2" >
< h2 id = "org1336132" > < span class = "section-number-2" > 2< / span > Classical Open Loop Shaping< / h2 >
< div class = "outline-text-2" id = "text-2" >
< / div >
< div id = "outline-container-org1c9ddc9" class = "outline-3" >
< h3 id = "org1c9ddc9" > < span class = "section-number-3" > 2.1< / span > Introduction ot Open Loop Shaping< / h3 >
< div class = "outline-text-3" id = "text-2-1" >
< p >
Usually, the controller \(K(s)\) is designed such that the loop gain \(L(s)\) has desirable shape.
This technique is called < b > Open Loop Shaping< / b > .
< / p >
< div class = "inlinetask" >
< b > Explain why the Loop gain si an important “ value” < / b > < br / >
< p >
For instance example all the specifications can usually be explained in terms of the open loop gain.
< / p >
< / div >
< div id = "orge09e85e" class = "figure" >
< p > < img src = "figs/open_loop_shaping.png" alt = "open_loop_shaping.png" / >
< / p >
< p > < span class = "figure-number" > Figure 4: < / span > Classical Feedback Architecture< / p >
< / div >
< p >
This is usually done manually has the loop gain \(L(s)\) depends linearly of \(K(s)\):
< / p >
\begin{equation}
L(s) = G(s) K(s)
\end{equation}
< ul class = "org-ul" >
< li > where \(L(s)\) is called the < b > Loop Gain Transfer Function< / b > < / li >
< / ul >
< p >
\(K(s)\) then consists of a combination of leads, lags, notches, etc. such that its product with \(G(s)\) has wanted shape.
< / p >
< / div >
< / div >
< div id = "outline-container-org3cd2ec2" class = "outline-3" >
< h3 id = "org3cd2ec2" > < span class = "section-number-3" > 2.2< / span > Example of Open Loop Shaping< / h3 >
< div class = "outline-text-3" id = "text-2-2" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > k = 1e< span class = "org-type" > -< / span > 6;
m = 10;
c = 10;
G =
< / pre >
< / div >
< div id = "org846352b" class = "figure" >
< p > < img src = "figs/bode_plot_example_afm.png" alt = "bode_plot_example_afm.png" / >
< / p >
< p > < span class = "figure-number" > Figure 5: < / span > Bode plot of the plant \(G(s)\)< / p >
< / div >
< p >
Specifications:
< / p >
< ul class = "org-ul" >
< li > < b > Performance< / b > : Bandwidth of approximately 50Hz< / li >
< li > < b > Noise Attenuation< / b > : Roll-off of -40dB/decade past 250Hz< / li >
< li > < b > Robustness< / b > : Gain margin > 5dB and Phase margin > 40 deg< / li >
< / ul >
< div class = "exercice" id = "orge257cef" >
< p >
Using < code > SISOTOOL< / code > , design a controller that fulfill the specifications.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > sisotool(G)
< / pre >
< / div >
< / div >
< p >
In order to have the wanted Roll-off, two integrators are used, a lead is also added to have sufficient phase margin.
< / p >
< p >
The obtained controller is shown below, and the bode plot of the Loop Gain is shown in Figure < a href = "#orgd8a3cda" > 6< / a > .
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > K = 6e4 < span class = "org-type" > *< / span > ...< span class = "org-comment" > % Gain< / span >
1< span class = "org-type" > /< / span > (s< span class = "org-type" > ^< / span > 2) < span class = "org-type" > *< / span > ...< span class = "org-comment" > % Double Integrator< / span >
(1 < span class = "org-type" > +< / span > s< span class = "org-type" > /< / span > 111)< span class = "org-type" > /< / span > (1 < span class = "org-type" > +< / span > s< span class = "org-type" > /< / span > 888); < span class = "org-comment" > % Lead< / span >
< / pre >
< / div >
< div id = "orgd8a3cda" class = "figure" >
< p > < img src = "figs/loop_gain_manual_afm.png" alt = "loop_gain_manual_afm.png" / >
< / p >
< p > < span class = "figure-number" > Figure 6: < / span > Bode Plot of the obtained Loop Gain \(L(s) = G(s) K(s)\)< / p >
< / div >
< p >
And we can verify that we have the wanted stability margins:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > [Gm, Pm, < span class = "org-type" > ~< / span > , Wc] = margin(G< span class = "org-type" > *< / span > K)
< / pre >
< / div >
< table border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< colgroup >
< col class = "org-left" / >
< col class = "org-right" / >
< / colgroup >
< thead >
< tr >
< th scope = "col" class = "org-left" >   < / th >
< th scope = "col" class = "org-right" > Value< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td class = "org-left" > Gain Margin [dB]< / td >
< td class = "org-right" > 7.2< / td >
< / tr >
< tr >
< td class = "org-left" > Phase Margin [deg]< / td >
< td class = "org-right" > 48.1< / td >
< / tr >
< tr >
< td class = "org-left" > Crossover [Hz]< / td >
< td class = "org-right" > 50.7< / td >
< / tr >
< / tbody >
< / table >
< / div >
< / div >
< div id = "outline-container-orgafc190d" class = "outline-3" >
< h3 id = "orgafc190d" > < span class = "section-number-3" > 2.3< / span > \(\mathcal{H}_\infty\) Loop Shaping Synthesis< / h3 >
< div class = "outline-text-3" id = "text-2-3" >
< p >
The Open Loop Shaping synthesis can be performed using the \(\mathcal{H}_\infty\) Synthesis.
< / p >
< p >
Even though we will not go into details, we will provide one example.
< / p >
< p >
Using Matlab, the \(\mathcal{H}_\infty\) synthesis of a controller based on the wanted open loop shape can be performed using the < code > loopsyn< / code > command:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > K = loopsyn(G, Gd);
< / pre >
< / div >
< p >
where:
< / p >
< ul class = "org-ul" >
< li > < code > G< / code > is the (LTI) plant< / li >
< li > < code > Gd< / code > is the wanted loop shape< / li >
< li > < code > K< / code > is the synthesize controller< / li >
< / ul >
< div class = "seealso" id = "org3c008e3" >
< p >
Matlab documentation of < code > loopsyn< / code > (< a href = "https://www.mathworks.com/help/robust/ref/loopsyn.html" > link< / a > ).
< / p >
< / div >
< / div >
< / div >
< div id = "outline-container-org386c720" class = "outline-3" >
< h3 id = "org386c720" > < span class = "section-number-3" > 2.4< / span > Example of the \(\mathcal{H}_\infty\) Loop Shaping Synthesis< / h3 >
< div class = "outline-text-3" id = "text-2-4" >
< p >
Let’ s re-use the previous plant.
< / p >
< p >
Translate the specification into the wanted shape of the open loop gain.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > G = tf(16,[1 0.16 16]);
Gd = 3.7e4< span class = "org-type" > *< / span > 1< span class = "org-type" > /< / span > s< span class = "org-type" > *< / span > (1 < span class = "org-type" > +< / span > s< span class = "org-type" > /< / span > 2< span class = "org-type" > /< / span > < span class = "org-constant" > pi< / span > < span class = "org-type" > /< / span > 20)< span class = "org-type" > /< / span > (1 < span class = "org-type" > +< / span > s< span class = "org-type" > /< / span > 2< span class = "org-type" > /< / span > < span class = "org-constant" > pi< / span > < span class = "org-type" > /< / span > 220)< span class = "org-type" > *< / span > 1< span class = "org-type" > /< / span > (s < span class = "org-type" > +< / span > s< span class = "org-type" > /< / span > 2< span class = "org-type" > /< / span > < span class = "org-constant" > pi< / span > < span class = "org-type" > /< / span > 500);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > [K,CL,GAM,INFO] = loopsyn(G, Gd);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > bodeFig({K})
< / pre >
< / div >
< / div >
< / div >
< / div >
< div id = "outline-container-orgcf6b2a6" class = "outline-2" >
< h2 id = "orgcf6b2a6" > < 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-27 18:26:06 +01:00
< div class = "definition" id = "org86c267f" >
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-27 18:26:06 +01:00
< div class = "exampl" id = "org9ae7fd2" >
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-27 18:26:06 +01:00
The magnitude \(|G(j\omega)|\) of the plant \(G(s)\) as a function of frequency is shown in Figure < a href = "#org220c414" > 7< / 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-27 18:26:06 +01:00
< div id = "org220c414" 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 >
2020-11-27 18:26:06 +01:00
< p > < span class = "figure-number" > Figure 7: < / span > Example of the \(\mathcal{H}_\infty\) norm of a SISO system< / p >
2020-11-25 19:35:11 +01:00
< / div >
< / div >
< / div >
< / div >
2020-11-27 18:26:06 +01:00
< div id = "outline-container-org5bc80a8" class = "outline-2" >
< h2 id = "org5bc80a8" > < 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-27 18:26:06 +01:00
< div id = "outline-container-org3a241a5" class = "outline-2" >
< h2 id = "org3a241a5" > < 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-27 18:26:06 +01:00
< div id = "orgf05141d" 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-27 18:26:06 +01:00
< table id = "orgfb53780" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< caption class = "t-above" > < span class = "table-number" > Table 2:< / span > Notations for the general configuration< / caption >
2020-11-25 19:35:11 +01:00
< 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-27 18:26:06 +01:00
< div id = "outline-container-org49fe7df" class = "outline-2" >
< h2 id = "org49fe7df" > < 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-27 18:26:06 +01:00
< div class = "important" id = "orgcec66b9" >
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-27 18:26:06 +01:00
< div id = "org1e975ee" class = "figure" >
2020-11-25 19:35:11 +01:00
< p > < img src = "figs/general_control_names.png" alt = "general_control_names.png" / >
< / p >
2020-11-27 18:26:06 +01:00
< p > < span class = "figure-number" > Figure 9: < / span > General Control Configuration< / p >
2020-11-25 19:35:11 +01:00
< / div >
< / div >
< / div >
2020-11-27 18:26:06 +01:00
< div id = "outline-container-orgf671631" class = "outline-2" >
< h2 id = "orgf671631" > < 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-27 18:26:06 +01:00
< div id = "orgd59dc12" class = "figure" >
2020-11-25 19:35:11 +01:00
< p > < img src = "figs/classical_feedback.png" alt = "classical_feedback.png" / >
< / p >
2020-11-27 18:26:06 +01:00
< p > < span class = "figure-number" > Figure 10: < / span > Classical Feedback Architecture< / p >
2020-11-25 19:35:11 +01:00
< / div >
2020-11-27 18:26:06 +01:00
< table id = "org111f2c5" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
< caption class = "t-above" > < span class = "table-number" > Table 3:< / span > Notations for the Classical Feedback Architecture< / caption >
2020-11-25 19:35:11 +01:00
< 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-27 18:26:06 +01:00
< div id = "outline-container-orgd118710" class = "outline-2" >
< h2 id = "orgd118710" > < 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-27 18:26:06 +01:00
< div class = "exampl" id = "org211c0bc" >
2020-11-25 19:35:11 +01:00
< p >
2020-11-27 18:26:06 +01:00
Let’ s find the Generalized plant of corresponding to the tracking control architecture shown in Figure < a href = "#orgbec59d7" > 11< / a >
2020-11-25 19:35:11 +01:00
< / p >
2020-11-27 18:26:06 +01:00
< div id = "orgbec59d7" class = "figure" >
2020-11-25 19:35:11 +01:00
< p > < img src = "figs/classical_feedback_tracking.png" alt = "classical_feedback_tracking.png" / >
< / p >
2020-11-27 18:26:06 +01:00
< p > < span class = "figure-number" > Figure 11: < / span > Classical Feedback Control Architecture (Tracking)< / p >
2020-11-25 19:35:11 +01:00
< / 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-27 18:26:06 +01:00
We obtain the generalized plant shown in Figure < a href = "#org64eccd4" > 12< / a > .
2020-11-25 19:35:11 +01:00
< / p >
2020-11-27 18:26:06 +01:00
< div id = "org64eccd4" 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 >
2020-11-27 18:26:06 +01:00
< p > < span class = "figure-number" > Figure 12: < / span > Generalized plant of the Classical Feedback Control Architecture (Tracking)< / p >
2020-11-25 19:35:11 +01:00
< / 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-27 18:26:06 +01:00
< div id = "outline-container-orgdd1c5fa" class = "outline-2" >
< h2 id = "orgdd1c5fa" > < 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-27 18:26:06 +01:00
< div id = "outline-container-org00cad5d" class = "outline-3" >
< h3 id = "org00cad5d" > < 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-27 18:26:06 +01:00
< div id = "outline-container-org0e07a10" class = "outline-2" >
< h2 id = "org0e07a10" > < 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 >
2020-11-27 18:26:06 +01:00
< div class = "yt" > < iframe width = "100%" height = "100%" src = "https://www.youtube.com/embed/?listType=playlist&list=PLn8PRpmsu08qFLMfgTEzR8DxOPE7fBiin" frameborder = "0" allowfullscreen > < / iframe > < / div >
2020-11-25 19:35:11 +01:00
< / p >
< p >
2020-11-27 18:26:06 +01:00
< div class = "yt" > < iframe width = "100%" height = "100%" src = "https://www.youtube.com/embed/?listType=playlist&list=PLsjPUqcL7ZIFHCObUU_9xPUImZ203gB4o" frameborder = "0" allowfullscreen > < / iframe > < / div >
2020-11-25 19:35:11 +01:00
< / p >
< / div >
< / div >
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2020-11-27 18:26:06 +01:00
< p class = "date" > Created: 2020-11-27 ven. 18:20< / p >
2020-11-25 19:35:11 +01:00
< / div >
< / body >
< / html >