Export to PDF!
This commit is contained in:
parent
5888f6a2a0
commit
aedb62c0e6
262
.gitignore
vendored
Normal file
262
.gitignore
vendored
Normal file
@ -0,0 +1,262 @@
|
|||||||
|
.auctex-auto/
|
||||||
|
.log/
|
||||||
|
|
||||||
|
## Core latex/pdflatex auxiliary files:
|
||||||
|
*.aux
|
||||||
|
*.lof
|
||||||
|
*.log
|
||||||
|
*.lot
|
||||||
|
*.fls
|
||||||
|
*.out
|
||||||
|
*.toc
|
||||||
|
*.fmt
|
||||||
|
*.fot
|
||||||
|
*.cb
|
||||||
|
*.cb2
|
||||||
|
.*.lb
|
||||||
|
|
||||||
|
## Intermediate documents:
|
||||||
|
*.dvi
|
||||||
|
*.xdv
|
||||||
|
*-converted-to.*
|
||||||
|
# these rules might exclude image files for figures etc.
|
||||||
|
# *.ps
|
||||||
|
# *.eps
|
||||||
|
# *.pdf
|
||||||
|
|
||||||
|
## Generated if empty string is given at "Please type another file name for output:"
|
||||||
|
.pdf
|
||||||
|
|
||||||
|
## Bibliography auxiliary files (bibtex/biblatex/biber):
|
||||||
|
*.bbl
|
||||||
|
*.bcf
|
||||||
|
*.blg
|
||||||
|
*-blx.aux
|
||||||
|
*-blx.bib
|
||||||
|
*.run.xml
|
||||||
|
|
||||||
|
## Build tool auxiliary files:
|
||||||
|
*.fdb_latexmk
|
||||||
|
*.synctex
|
||||||
|
*.synctex(busy)
|
||||||
|
*.synctex.gz
|
||||||
|
*.synctex.gz(busy)
|
||||||
|
*.pdfsync
|
||||||
|
|
||||||
|
## Build tool directories for auxiliary files
|
||||||
|
# latexrun
|
||||||
|
latex.out/
|
||||||
|
|
||||||
|
## Auxiliary and intermediate files from other packages:
|
||||||
|
# algorithms
|
||||||
|
*.alg
|
||||||
|
*.loa
|
||||||
|
|
||||||
|
# achemso
|
||||||
|
acs-*.bib
|
||||||
|
|
||||||
|
# amsthm
|
||||||
|
*.thm
|
||||||
|
|
||||||
|
# beamer
|
||||||
|
*.nav
|
||||||
|
*.pre
|
||||||
|
*.snm
|
||||||
|
*.vrb
|
||||||
|
|
||||||
|
# changes
|
||||||
|
*.soc
|
||||||
|
|
||||||
|
# comment
|
||||||
|
*.cut
|
||||||
|
|
||||||
|
# cprotect
|
||||||
|
*.cpt
|
||||||
|
|
||||||
|
# elsarticle (documentclass of Elsevier journals)
|
||||||
|
*.spl
|
||||||
|
|
||||||
|
# endnotes
|
||||||
|
*.ent
|
||||||
|
|
||||||
|
# fixme
|
||||||
|
*.lox
|
||||||
|
|
||||||
|
# feynmf/feynmp
|
||||||
|
*.mf
|
||||||
|
*.mp
|
||||||
|
*.t[1-9]
|
||||||
|
*.t[1-9][0-9]
|
||||||
|
*.tfm
|
||||||
|
|
||||||
|
#(r)(e)ledmac/(r)(e)ledpar
|
||||||
|
*.end
|
||||||
|
*.?end
|
||||||
|
*.[1-9]
|
||||||
|
*.[1-9][0-9]
|
||||||
|
*.[1-9][0-9][0-9]
|
||||||
|
*.[1-9]R
|
||||||
|
*.[1-9][0-9]R
|
||||||
|
*.[1-9][0-9][0-9]R
|
||||||
|
*.eledsec[1-9]
|
||||||
|
*.eledsec[1-9]R
|
||||||
|
*.eledsec[1-9][0-9]
|
||||||
|
*.eledsec[1-9][0-9]R
|
||||||
|
*.eledsec[1-9][0-9][0-9]
|
||||||
|
*.eledsec[1-9][0-9][0-9]R
|
||||||
|
|
||||||
|
# glossaries
|
||||||
|
*.acn
|
||||||
|
*.acr
|
||||||
|
*.glg
|
||||||
|
*.glo
|
||||||
|
*.gls
|
||||||
|
*.glsdefs
|
||||||
|
|
||||||
|
# gnuplottex
|
||||||
|
*-gnuplottex-*
|
||||||
|
|
||||||
|
# gregoriotex
|
||||||
|
*.gaux
|
||||||
|
*.gtex
|
||||||
|
|
||||||
|
# htlatex
|
||||||
|
*.4ct
|
||||||
|
*.4tc
|
||||||
|
*.idv
|
||||||
|
*.lg
|
||||||
|
*.trc
|
||||||
|
*.xref
|
||||||
|
|
||||||
|
# hyperref
|
||||||
|
*.brf
|
||||||
|
|
||||||
|
# knitr
|
||||||
|
*-concordance.tex
|
||||||
|
# TODO Comment the next line if you want to keep your tikz graphics files
|
||||||
|
*.tikz
|
||||||
|
*-tikzDictionary
|
||||||
|
|
||||||
|
# listings
|
||||||
|
*.lol
|
||||||
|
|
||||||
|
# makeidx
|
||||||
|
*.idx
|
||||||
|
*.ilg
|
||||||
|
*.ind
|
||||||
|
*.ist
|
||||||
|
|
||||||
|
# minitoc
|
||||||
|
*.maf
|
||||||
|
*.mlf
|
||||||
|
*.mlt
|
||||||
|
*.mtc[0-9]*
|
||||||
|
*.slf[0-9]*
|
||||||
|
*.slt[0-9]*
|
||||||
|
*.stc[0-9]*
|
||||||
|
|
||||||
|
# minted
|
||||||
|
_minted*
|
||||||
|
*.pyg
|
||||||
|
|
||||||
|
# morewrites
|
||||||
|
*.mw
|
||||||
|
|
||||||
|
# nomencl
|
||||||
|
*.nlg
|
||||||
|
*.nlo
|
||||||
|
*.nls
|
||||||
|
|
||||||
|
# pax
|
||||||
|
*.pax
|
||||||
|
|
||||||
|
# pdfpcnotes
|
||||||
|
*.pdfpc
|
||||||
|
|
||||||
|
# sagetex
|
||||||
|
*.sagetex.sage
|
||||||
|
*.sagetex.py
|
||||||
|
*.sagetex.scmd
|
||||||
|
|
||||||
|
# scrwfile
|
||||||
|
*.wrt
|
||||||
|
|
||||||
|
# sympy
|
||||||
|
*.sout
|
||||||
|
*.sympy
|
||||||
|
sympy-plots-for-*.tex/
|
||||||
|
|
||||||
|
# pdfcomment
|
||||||
|
*.upa
|
||||||
|
*.upb
|
||||||
|
|
||||||
|
# pythontex
|
||||||
|
*.pytxcode
|
||||||
|
pythontex-files-*/
|
||||||
|
|
||||||
|
# tcolorbox
|
||||||
|
*.listing
|
||||||
|
|
||||||
|
# thmtools
|
||||||
|
*.loe
|
||||||
|
|
||||||
|
# TikZ & PGF
|
||||||
|
*.dpth
|
||||||
|
*.md5
|
||||||
|
*.auxlock
|
||||||
|
|
||||||
|
# todonotes
|
||||||
|
*.tdo
|
||||||
|
|
||||||
|
# vhistory
|
||||||
|
*.hst
|
||||||
|
*.ver
|
||||||
|
|
||||||
|
# easy-todo
|
||||||
|
*.lod
|
||||||
|
|
||||||
|
# xcolor
|
||||||
|
*.xcp
|
||||||
|
|
||||||
|
# xmpincl
|
||||||
|
*.xmpi
|
||||||
|
|
||||||
|
# xindy
|
||||||
|
*.xdy
|
||||||
|
|
||||||
|
# xypic precompiled matrices
|
||||||
|
*.xyc
|
||||||
|
|
||||||
|
# endfloat
|
||||||
|
*.ttt
|
||||||
|
*.fff
|
||||||
|
|
||||||
|
# Latexian
|
||||||
|
TSWLatexianTemp*
|
||||||
|
|
||||||
|
## Editors:
|
||||||
|
# WinEdt
|
||||||
|
*.bak
|
||||||
|
*.sav
|
||||||
|
|
||||||
|
# Texpad
|
||||||
|
.texpadtmp
|
||||||
|
|
||||||
|
# LyX
|
||||||
|
*.lyx~
|
||||||
|
|
||||||
|
# Kile
|
||||||
|
*.backup
|
||||||
|
|
||||||
|
# KBibTeX
|
||||||
|
*~[0-9]*
|
||||||
|
|
||||||
|
# auto folder when using emacs and auctex
|
||||||
|
./auto/*
|
||||||
|
*.el
|
||||||
|
|
||||||
|
# expex forward references with \gathertags
|
||||||
|
*-tags.tex
|
||||||
|
|
||||||
|
# standalone packages
|
||||||
|
*.sta
|
858
index.html
858
index.html
File diff suppressed because it is too large
Load Diff
472
index.org
472
index.org
@ -11,9 +11,15 @@
|
|||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
|
|
||||||
#+HTML_MATHJAX: align: center tagside: right font: TeX
|
#+HTML_MATHJAX: align: center tagside: right font: TeX
|
||||||
|
|
||||||
|
#+BIND: org-latex-image-default-option "scale=1"
|
||||||
|
#+BIND: org-latex-image-default-width ""
|
||||||
|
|
||||||
|
#+LaTeX_CLASS: scrreprt
|
||||||
|
#+LaTeX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12]
|
||||||
|
#+LaTeX_HEADER_EXTRA: \input{preamble.tex}
|
||||||
|
|
||||||
#+CSL_STYLE: ieee.csl
|
#+CSL_STYLE: ieee.csl
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
@ -41,7 +47,160 @@
|
|||||||
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
|
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
* Introduction :ignore:
|
* LaTeX Config :noexport:
|
||||||
|
#+begin_src emacs-lisp :tangle no
|
||||||
|
(setq org-latex-default-table-environment "tabular")
|
||||||
|
(setq org-latex-tables-booktabs nil)
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\usepackage{float}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\usepackage{caption,tabularx,booktabs}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\usepackage{biblatex}
|
||||||
|
\addbibresource{ref.bib}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\usepackage{fontawesome}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\usepackage{caption}
|
||||||
|
\usepackage{subcaption}
|
||||||
|
|
||||||
|
\captionsetup[figure]{labelfont=bf}
|
||||||
|
\captionsetup[subfigure]{labelfont=bf}
|
||||||
|
\captionsetup[listing]{labelfont=bf}
|
||||||
|
\captionsetup[table]{labelfont=bf}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\usepackage{xcolor}
|
||||||
|
|
||||||
|
\definecolor{my-blue}{HTML}{6b7adb}
|
||||||
|
\definecolor{my-pale-blue}{HTML}{e6e9f9}
|
||||||
|
\definecolor{my-red}{HTML}{db6b6b}
|
||||||
|
\definecolor{my-pale-red}{HTML}{f9e6e6}
|
||||||
|
\definecolor{my-green}{HTML}{6bdbb6}
|
||||||
|
\definecolor{my-pale-green}{HTML}{e6f9f3}
|
||||||
|
\definecolor{my-yellow}{HTML}{dbd26b}
|
||||||
|
\definecolor{my-pale-yellow}{HTML}{f9f7e6}
|
||||||
|
\definecolor{my-orange}{HTML}{dba76b}
|
||||||
|
\definecolor{my-pale-orange}{HTML}{f9f0e6}
|
||||||
|
\definecolor{my-grey}{HTML}{a3a3a3}
|
||||||
|
\definecolor{my-pale-grey}{HTML}{f0f0f0}
|
||||||
|
\definecolor{my-turq}{HTML}{6bc7db}
|
||||||
|
\definecolor{my-pale-turq}{HTML}{e6f6f9}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\usepackage{inconsolata}
|
||||||
|
|
||||||
|
\usepackage[newfloat=true, chapter]{minted}
|
||||||
|
\usemintedstyle{autumn}
|
||||||
|
|
||||||
|
\setminted{frame=lines,breaklines=true,tabsize=4,fontsize=\scriptsize,autogobble=true,labelposition=topline,bgcolor=my-pale-grey}
|
||||||
|
\setminted[matlab]{label=Matlab}
|
||||||
|
\setminted[latex]{label=LaTeX}
|
||||||
|
\setminted[bash]{label=Bash}
|
||||||
|
\setminted[python]{label=Python}
|
||||||
|
\setminted[text]{label=Results}
|
||||||
|
|
||||||
|
\setmintedinline{fontsize=\normalsize,bgcolor=my-pale-grey}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\usepackage[most]{tcolorbox}
|
||||||
|
|
||||||
|
\tcbuselibrary{minted}
|
||||||
|
|
||||||
|
\newtcolorbox{seealso}[1][]{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=See Also,#1}
|
||||||
|
\newtcolorbox{hint}[1][]{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=Hint,#1}
|
||||||
|
\newtcolorbox{definition}[1][]{enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Definition,#1}
|
||||||
|
\newtcolorbox{important}[1][]{ enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Important,#1}
|
||||||
|
\newtcolorbox{exampl}[1][]{ enhanced,breakable,colback=my-pale-green,colframe=my-green,fonttitle=\bfseries,title=Example,#1}
|
||||||
|
\newtcolorbox{exercice}[1][]{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Exercice,#1}
|
||||||
|
\newtcolorbox{question}[1][]{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Question,#1}
|
||||||
|
\newtcolorbox{answer}[1][]{ enhanced,breakable,colback=my-pale-turq,colframe=my-turq,fonttitle=\bfseries,title=Answer,#1}
|
||||||
|
\newtcolorbox{summary}[1][]{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Summary,#1}
|
||||||
|
\newtcolorbox{caution}[1][]{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Caution,#1}
|
||||||
|
\newtcolorbox{warning}[1][]{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Warning,#1}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\newtcolorbox{my-quote}[1]{%
|
||||||
|
colback=my-pale-grey,
|
||||||
|
grow to right by=-10mm,
|
||||||
|
grow to left by=-10mm,
|
||||||
|
boxrule=0pt,
|
||||||
|
boxsep=0pt,
|
||||||
|
breakable,
|
||||||
|
enhanced jigsaw,
|
||||||
|
borderline west={4pt}{0pt}{my-grey}}
|
||||||
|
|
||||||
|
\renewenvironment{quote}{\begin{my-quote}}{\end{my-quote}}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\newtcolorbox{my-verse}[1]{%
|
||||||
|
colback=my-pale-grey,
|
||||||
|
grow to right by=-10mm,
|
||||||
|
grow to left by=-10mm,
|
||||||
|
boxrule=0pt,
|
||||||
|
boxsep=0pt,
|
||||||
|
breakable,
|
||||||
|
enhanced jigsaw,
|
||||||
|
borderline west={4pt}{0pt}{my-grey}}
|
||||||
|
|
||||||
|
\renewenvironment{verse}{\begin{my-verse}}{\end{my-verse}}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\usepackage{environ}% http://ctan.org/pkg/environ
|
||||||
|
\NewEnviron{aside}{%
|
||||||
|
\marginpar{\BODY}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\renewenvironment{verbatim}{\VerbatimEnvironment\begin{minted}[]{text}}{\end{minted}}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\usepackage{soul}
|
||||||
|
\sethlcolor{my-pale-grey}
|
||||||
|
|
||||||
|
\let\OldTexttt\texttt
|
||||||
|
\renewcommand{\texttt}[1]{{\ttfamily\hl{\mbox{\,#1\,}}}}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\makeatletter
|
||||||
|
\preto\Gin@extensions{png,}
|
||||||
|
\DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf}
|
||||||
|
\makeatother
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex :tangle preamble.tex
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\hypersetup{
|
||||||
|
colorlinks = true,
|
||||||
|
allcolors = my-blue
|
||||||
|
}
|
||||||
|
|
||||||
|
\usepackage{hypcap}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Introduction
|
||||||
|
:PROPERTIES:
|
||||||
|
:UNNUMBERED: t
|
||||||
|
:END:
|
||||||
|
|
||||||
The purpose of this document is to give a /practical introduction/ to the wonderful world of $\mathcal{H}_\infty$ Control.
|
The purpose of this document is to give a /practical introduction/ to the wonderful world of $\mathcal{H}_\infty$ Control.
|
||||||
|
|
||||||
@ -78,12 +237,6 @@ The general structure of this document is as follows:
|
|||||||
* Introduction to Model Based Control
|
* Introduction to Model Based Control
|
||||||
<<sec:model_based_control>>
|
<<sec:model_based_control>>
|
||||||
|
|
||||||
** Introduction :ignore:
|
|
||||||
|
|
||||||
# - Section [[sec:model_based_control_methodology]]
|
|
||||||
# - Section [[sec:comp_classical_modern_robust_control]]
|
|
||||||
# - Section [[sec:example_system]]
|
|
||||||
|
|
||||||
** Model Based Control - Methodology
|
** Model Based Control - Methodology
|
||||||
<<sec:model_based_control_methodology>>
|
<<sec:model_based_control_methodology>>
|
||||||
|
|
||||||
@ -160,32 +313,32 @@ The three presented control methods are compared in Table [[tab:comparison_contr
|
|||||||
|
|
||||||
Note that in parallel, there have been numerous other developments, including non-linear control, adaptive control, machine-learning control just to name a few.
|
Note that in parallel, there have been numerous other developments, including non-linear control, adaptive control, machine-learning control just to name a few.
|
||||||
|
|
||||||
|
|
||||||
#+name: tab:comparison_control_methods
|
#+name: tab:comparison_control_methods
|
||||||
#+caption: Table summurazing the main differences between classical, modern and robust control
|
#+caption: Table summurazing the main differences between classical, modern and robust control
|
||||||
| <l> | <c> | <c> | <c> |
|
#+attr_latex: :environment tabularx :booktabs t :width \linewidth :align lccc
|
||||||
| | *Classical Control* | *Modern Control* | *Robust Control* |
|
| <l> | <c> | <c> | <c> |
|
||||||
|-------------------------+------------------------------------+--------------------------------------+--------------------------------------------|
|
| | *Classical Control* | *Modern Control* | *Robust Control* |
|
||||||
| *Date* | 1930- | 1960- | 1980- |
|
|---------------+---------------------+--------------------------+-------------------------------|
|
||||||
|-------------------------+------------------------------------+--------------------------------------+--------------------------------------------|
|
| *Date* | 1930- | 1960- | 1980- |
|
||||||
| *Tools* | Transfer Functions | State Space formulation | Systems and Signals Norms |
|
|---------------+---------------------+--------------------------+-------------------------------|
|
||||||
| | Nyquist, Bode Plots | Riccati Equations | Closed Loop Transfer Functions |
|
| *Tools* | Transfer Functions | State Space formulation | Systems/Signal Norms |
|
||||||
| | Root Locus | | Closed Loop Shaping |
|
| | Nyquist, Bode Plots | Riccati Equations | Closed Loop TF |
|
||||||
| | Phase and Gain margins | | Weighting Functions |
|
| | Root Locus | Kalman Filters | Closed Loop Shaping |
|
||||||
| | Open Loop Shaping | | Disk margin |
|
| | Phase/Gain margins | | Weighting Functions |
|
||||||
| | | | Singular Value Decomposition |
|
| | Open Loop Shaping | | Disk margin |
|
||||||
|-------------------------+------------------------------------+--------------------------------------+--------------------------------------------|
|
|---------------+---------------------+--------------------------+-------------------------------|
|
||||||
| *Control Architectures* | Proportional, Integral, Derivative | Full State Feedback, LQR | General Control Configuration |
|
| *Controllers* | P, PI, PID | Full State Feedback | General Control Conf. |
|
||||||
| | Leads, Lags | Kalman Filters, LQG | Generalized Plant |
|
| | Leads, Lags | LQG, LQR | |
|
||||||
|-------------------------+------------------------------------+--------------------------------------+--------------------------------------------|
|
|---------------+---------------------+--------------------------+-------------------------------|
|
||||||
| *Advantages* | Study Stability | Automatic Synthesis | Automatic Synthesis |
|
| *Advantages* | Study Stability | Automatic Synthesis | Automatic Synthesis |
|
||||||
| | Simple | MIMO | MIMO |
|
| | Simple | MIMO | MIMO |
|
||||||
| | Natural | Optimization Problem | Optimization Problem |
|
| | Natural | Optimization Problem | Optimization Problem |
|
||||||
| | | | Guaranteed Robustness |
|
| | | | Guaranteed Robustness |
|
||||||
| | | | Easy specification of performances |
|
|---------------+---------------------+--------------------------+-------------------------------|
|
||||||
|-------------------------+------------------------------------+--------------------------------------+--------------------------------------------|
|
| *Disadvant.* | Manual Method | No Guaranteed Robustness | Requires knowledge of tools |
|
||||||
| *Disadvantages* | Manual Method | No Guaranteed Robustness | Required knowledge of specific tools |
|
| | Only SISO | Rejection of Pert. | Need good model of the system |
|
||||||
| | Only SISO | Difficult Rejection of Perturbations | Need a reasonably good model of the system |
|
| | No input usage lim. | | |
|
||||||
| | No clear way to limit input usage | | |
|
|
||||||
|
|
||||||
#+begin_src latex :file robustness_performance.pdf
|
#+begin_src latex :file robustness_performance.pdf
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
@ -315,6 +468,7 @@ The notations used on Figure [[fig:mech_sys_1dof_inertial_contr]] are listed and
|
|||||||
|
|
||||||
#+name: tab:example_notations
|
#+name: tab:example_notations
|
||||||
#+caption: Example system variables
|
#+caption: Example system variables
|
||||||
|
#+attr_latex: :environment tabularx :booktabs t :width \linewidth :align cXcc
|
||||||
| *Notation* | *Description* | *Value* | *Unit* |
|
| *Notation* | *Description* | *Value* | *Unit* |
|
||||||
|--------------------+----------------------------------------------------------------+----------------+-----------|
|
|--------------------+----------------------------------------------------------------+----------------+-----------|
|
||||||
| $m$ | Payload's mass to position / isolate | $10$ | [kg] |
|
| $m$ | Payload's mass to position / isolate | $10$ | [kg] |
|
||||||
@ -335,6 +489,7 @@ Derive the following open-loop transfer functions:
|
|||||||
\end{align}
|
\end{align}
|
||||||
|
|
||||||
#+HTML: <details><summary>Hint</summary>
|
#+HTML: <details><summary>Hint</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Hint}
|
||||||
You can follow this generic procedure:
|
You can follow this generic procedure:
|
||||||
1. List all applied forces ot the mass: Actuator force, Stiffness force (Hooke's law), ...
|
1. List all applied forces ot the mass: Actuator force, Stiffness force (Hooke's law), ...
|
||||||
2. Apply the Newton's Second Law on the payload
|
2. Apply the Newton's Second Law on the payload
|
||||||
@ -345,6 +500,7 @@ You can follow this generic procedure:
|
|||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
#+HTML: <details><summary>Results</summary>
|
#+HTML: <details><summary>Results</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Results}
|
||||||
\begin{align}
|
\begin{align}
|
||||||
G(s) &= \frac{1}{m s^2 + cs + k} \\
|
G(s) &= \frac{1}{m s^2 + cs + k} \\
|
||||||
G_d(s) &= \frac{cs + k}{m s^2 + cs + k}
|
G_d(s) &= \frac{cs + k}{m s^2 + cs + k}
|
||||||
@ -501,6 +657,7 @@ Its name comes from the fact that this is actually the "gain around the loop".
|
|||||||
|
|
||||||
#+name: fig:open_loop_shaping
|
#+name: fig:open_loop_shaping
|
||||||
#+caption: Classical Feedback Architecture
|
#+caption: Classical Feedback Architecture
|
||||||
|
#+attr_latex: :float nil
|
||||||
[[file:figs/open_loop_shaping.png]]
|
[[file:figs/open_loop_shaping.png]]
|
||||||
#+end_definition
|
#+end_definition
|
||||||
|
|
||||||
@ -584,6 +741,7 @@ Using =SISOTOOL=, design a controller that fulfills the specifications.
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+HTML: <details><summary>Hint</summary>
|
#+HTML: <details><summary>Hint</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Hint}
|
||||||
You can follow this procedure:
|
You can follow this procedure:
|
||||||
1. In order to have good disturbance rejection at low frequency, add a simple or double *integrator*
|
1. In order to have good disturbance rejection at low frequency, add a simple or double *integrator*
|
||||||
2. In terms of the loop gain, the *bandwidth* can be defined at the frequency $\omega_c$ where $|l(j\omega_c)|$ first crosses 1 from above.
|
2. In terms of the loop gain, the *bandwidth* can be defined at the frequency $\omega_c$ where $|l(j\omega_c)|$ first crosses 1 from above.
|
||||||
@ -687,12 +845,13 @@ Such shape corresponds to the typical wanted Loop gain Shape shown in Figure [[f
|
|||||||
|
|
||||||
#+name: tab:open_loop_shaping_specifications
|
#+name: tab:open_loop_shaping_specifications
|
||||||
#+caption: Wanted Loop Shape corresponding to each specification
|
#+caption: Wanted Loop Shape corresponding to each specification
|
||||||
| | Specification | Corresponding Loop Shape |
|
#+attr_latex: :environment tabularx :booktabs t :width \linewidth :align lXX
|
||||||
|-------------------------+---------------------------------------------+-----------------------------------------------------------------|
|
| | *Specification* | *Corresponding Loop Shape* |
|
||||||
| *Disturbance Rejection* | Highest possible rejection below 1Hz | Slope of -40dB/decade at low frequency to have a high loop gain |
|
|--------------+----------------------------------------+------------------------------------------|
|
||||||
| *Positioning Speed* | Bandwidth of approximately 10Hz | $L$ crosses 1 at 10Hz: $\vert L_w(j2 \pi 10)\vert = 1$ |
|
| *Dist. Rej.* | Highest possible rejection below 1Hz | Slope of -40dB/dec at low frequency |
|
||||||
| *Noise Attenuation* | Roll-off of -40dB/decade past 30Hz | Roll-off of -40dB/decade past 30Hz |
|
| *Pos. Speed* | Bandwidth of approximately 10Hz | $L$ crosses 1 at 10Hz |
|
||||||
| *Robustness* | Gain margin > 3dB and Phase margin > 30 deg | Slope of -20dB/decade near the crossover |
|
| *Noise Att.* | Roll-off of -40dB/decade past 30Hz | Roll-off of -40dB/decade past 30Hz |
|
||||||
|
| *Robustness* | $\Delta G > 3dB$, $\Delta \phi > 30^o$ | Slope of -20dB/decade near the crossover |
|
||||||
|
|
||||||
Then, a (stable, minimum phase) transfer function $L_w(s)$ should be created that has the same gain as the wanted shape of the Loop gain.
|
Then, a (stable, minimum phase) transfer function $L_w(s)$ should be created that has the same gain as the wanted shape of the Loop gain.
|
||||||
For this example, a double integrator and a lead centered on 10Hz are used.
|
For this example, a double integrator and a lead centered on 10Hz are used.
|
||||||
@ -808,12 +967,13 @@ Let's finally compare the obtained stability margins of the $\mathcal{H}_\infty$
|
|||||||
|
|
||||||
#+name: tab:open_loop_shaping_compare
|
#+name: tab:open_loop_shaping_compare
|
||||||
#+caption: Comparison of the characteristics obtained with the two methods
|
#+caption: Comparison of the characteristics obtained with the two methods
|
||||||
|
#+attr_latex: :environment tabularx :booktabs t :width \linewidth :align Xcc
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
| Specifications | Manual Method | $\mathcal{H}_\infty$ Method |
|
| *Specifications* | *Manual Method* | *$\mathcal{H}_\infty$ Method* |
|
||||||
|-----------------------------+---------------+-----------------------------|
|
|-----------------------------+-----------------+-------------------------------|
|
||||||
| Gain Margin $> 3$ [dB] | 3.1 | 31.7 |
|
| Gain Margin $> 3$ [dB] | 3.1 | 31.7 |
|
||||||
| Phase Margin $> 30$ [deg] | 35.4 | 54.7 |
|
| Phase Margin $> 30$ [deg] | 35.4 | 54.7 |
|
||||||
| Crossover $\approx 10$ [Hz] | 10.1 | 9.9 |
|
| Crossover $\approx 10$ [Hz] | 10.1 | 9.9 |
|
||||||
|
|
||||||
* A first Step into the $\mathcal{H}_\infty$ world
|
* A first Step into the $\mathcal{H}_\infty$ world
|
||||||
<<sec:h_infinity_introduction>>
|
<<sec:h_infinity_introduction>>
|
||||||
@ -873,6 +1033,7 @@ We can see in Figure [[fig:hinfinity_norm_siso_bode]] that indeed, the $\mathcal
|
|||||||
|
|
||||||
#+name: fig:hinfinity_norm_siso_bode
|
#+name: fig:hinfinity_norm_siso_bode
|
||||||
#+caption: Example of the $\mathcal{H}_\infty$ norm of a SISO system
|
#+caption: Example of the $\mathcal{H}_\infty$ norm of a SISO system
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/hinfinity_norm_siso_bode.png]]
|
[[file:figs/hinfinity_norm_siso_bode.png]]
|
||||||
#+end_exampl
|
#+end_exampl
|
||||||
@ -941,18 +1102,20 @@ A practical example about how to derive the generalized plant for a classical co
|
|||||||
#+begin_important
|
#+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
|
||||||
|
#+ATTR_LATEX: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/general_plant.png]]
|
[[file:figs/general_plant.png]]
|
||||||
|
|
||||||
#+name: tab:notation_general
|
#+name: tab:notation_general
|
||||||
#+caption: Notations for the general configuration
|
#+caption: Notations for the general configuration
|
||||||
| Notation | Meaning |
|
#+attr_latex: :environment tabularx :booktabs t :width 0.8\linewidth :align cX :float nil
|
||||||
|----------+----------------------------------------------------|
|
| *Notation* | *Meaning* |
|
||||||
| $P$ | Generalized plant model |
|
|------------+----------------------------------------------------|
|
||||||
| $w$ | Exogenous inputs: references, disturbances, noises |
|
| $P$ | Generalized plant model |
|
||||||
| $z$ | Exogenous outputs: signals to be minimized |
|
| $w$ | Exogenous inputs: references, disturbances, noises |
|
||||||
| $v$ | Controller inputs: measurements |
|
| $z$ | Exogenous outputs: signals to be minimized |
|
||||||
| $u$ | Control signals |
|
| $v$ | Controller inputs: measurements |
|
||||||
|
| $u$ | Control signals |
|
||||||
#+end_important
|
#+end_important
|
||||||
|
|
||||||
** The $\mathcal{H}_\infty$ Synthesis applied on the Generalized plant
|
** The $\mathcal{H}_\infty$ Synthesis applied on the Generalized plant
|
||||||
@ -992,6 +1155,7 @@ Once the generalized plant is obtained, the $\mathcal{H}_\infty$ synthesis probl
|
|||||||
|
|
||||||
#+name: fig:general_control_names
|
#+name: fig:general_control_names
|
||||||
#+caption: General Control Configuration
|
#+caption: General Control Configuration
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/general_control_names.png]]
|
[[file:figs/general_control_names.png]]
|
||||||
#+end_important
|
#+end_important
|
||||||
@ -1067,24 +1231,28 @@ The procedure to convert a typical control architecture as the one shown in Figu
|
|||||||
|
|
||||||
#+name: fig:classical_feedback_tracking
|
#+name: fig:classical_feedback_tracking
|
||||||
#+caption: Classical Feedback Control Architecture (Tracking)
|
#+caption: Classical Feedback Control Architecture (Tracking)
|
||||||
|
#+attr_latex: :float nil
|
||||||
[[file:figs/classical_feedback_tracking.png]]
|
[[file:figs/classical_feedback_tracking.png]]
|
||||||
|
|
||||||
#+HTML: <details><summary>Hint</summary>
|
#+HTML: <details><summary>Hint</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Hint}
|
||||||
First, define the signals of the generalized plant:
|
First, define the signals of the generalized plant:
|
||||||
- Exogenous inputs: $w = r$
|
- Exogenous inputs: $w = r$
|
||||||
- Signals to be minimized:
|
- Signals to be minimized:
|
||||||
Usually, we want to minimize the tracking errors $\epsilon$ and the control signal $u$: $z = [\epsilon,\ u]$
|
Usually, we want to minimize the tracking errors $\epsilon$ and the control signal $u$: $z = [\epsilon,\ u]$
|
||||||
- Controller inputs: this is the signal at the input of the controller: $v = \epsilon$
|
- Controller inputs: this is the signal at the input of the controller: $v = \epsilon$
|
||||||
- Control inputs: signal generated by the controller: $u$
|
- Controller outputs: signal generated by the controller: $u$
|
||||||
|
|
||||||
Then, Remove $K$ and rearrange the inputs and outputs as in Figure [[fig:general_plant]].
|
Then, Remove $K$ and rearrange the inputs and outputs as in Figure [[fig:general_plant]].
|
||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
#+HTML: <details><summary>Answer</summary>
|
#+HTML: <details><summary>Answer</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Anwser}
|
||||||
The obtained generalized plant shown in Figure [[fig:mixed_sensitivity_ref_tracking]].
|
The obtained generalized plant shown in Figure [[fig:mixed_sensitivity_ref_tracking]].
|
||||||
|
|
||||||
#+name: fig:mixed_sensitivity_ref_tracking
|
#+name: fig:mixed_sensitivity_ref_tracking
|
||||||
#+caption: Generalized plant of the Classical Feedback Control Architecture (Tracking)
|
#+caption: Generalized plant of the Classical Feedback Control Architecture (Tracking)
|
||||||
|
#+attr_latex: :float nil
|
||||||
[[file:figs/mixed_sensitivity_ref_tracking.png]]
|
[[file:figs/mixed_sensitivity_ref_tracking.png]]
|
||||||
|
|
||||||
Using Matlab, the generalized plant can be defined as follows:
|
Using Matlab, the generalized plant can be defined as follows:
|
||||||
@ -1161,7 +1329,8 @@ These are summarized in Table [[tab:spec_closed_loop_tf]].
|
|||||||
|
|
||||||
#+name: tab:spec_closed_loop_tf
|
#+name: tab:spec_closed_loop_tf
|
||||||
#+caption: Typical Specification and associated closed-loop transfer function
|
#+caption: Typical Specification and associated closed-loop transfer function
|
||||||
| Specification | Closed-Loop Transfer Function |
|
#+attr_latex: :environment tabularx :booktabs t :width 0.8\linewidth :align Xl
|
||||||
|
| *Specification* | *CL Transfer Function* |
|
||||||
|--------------------------------+-----------------------------------------------|
|
|--------------------------------+-----------------------------------------------|
|
||||||
| Reference Tracking | From $r$ to $\epsilon$ |
|
| Reference Tracking | From $r$ to $\epsilon$ |
|
||||||
| Disturbance Rejection | From $d$ to $y$ |
|
| Disturbance Rejection | From $d$ to $y$ |
|
||||||
@ -1174,13 +1343,14 @@ These are summarized in Table [[tab:spec_closed_loop_tf]].
|
|||||||
For the feedback system in Figure [[fig:gang_of_four_feedback]], write the output signals $[\epsilon, u, y]$ as a function of the systems $K(s), G(s)$ and the input signals $[r, d, n]$.
|
For the feedback system in Figure [[fig:gang_of_four_feedback]], write the output signals $[\epsilon, u, y]$ as a function of the systems $K(s), G(s)$ and the input signals $[r, d, n]$.
|
||||||
|
|
||||||
#+HTML: <details><summary>Hint</summary>
|
#+HTML: <details><summary>Hint</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Hint}
|
||||||
Take one of the output (e.g. $y$), and write it as a function of the inputs $[d, r, n]$ going step by step around the loop:
|
Take one of the output (e.g. $y$), and write it as a function of the inputs $[d, r, n]$ going step by step around the loop:
|
||||||
\begin{aligned}
|
\begin{align*}
|
||||||
y &= G u \\
|
y &= G u \\
|
||||||
&= G (d + K \epsilon) \\
|
&= G (d + K \epsilon) \\
|
||||||
&= G \big(d + K (r - n - y) \big) \\
|
&= G \big(d + K (r - n - y) \big) \\
|
||||||
&= G d + GK r - GK n - GK y
|
&= G d + GK r - GK n - GK y
|
||||||
\end{aligned}
|
\end{align*}
|
||||||
|
|
||||||
Isolate $y$ at the right hand side, and finally obtain:
|
Isolate $y$ at the right hand side, and finally obtain:
|
||||||
\[ y = \frac{GK}{1+ GK} r + \frac{G}{1 + GK} d - \frac{GK}{1 + GK} n \]
|
\[ y = \frac{GK}{1+ GK} r + \frac{G}{1 + GK} d - \frac{GK}{1 + GK} n \]
|
||||||
@ -1189,6 +1359,7 @@ Do the same procedure for $u$ and $\epsilon$
|
|||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
#+HTML: <details><summary>Answer</summary>
|
#+HTML: <details><summary>Answer</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Answer}
|
||||||
The following equations should be obtained:
|
The following equations should be obtained:
|
||||||
\begin{align}
|
\begin{align}
|
||||||
y &= \frac{GK}{1 + GK} r + \frac{G}{1 + GK} d - \frac{GK}{1 + GK} n \\
|
y &= \frac{GK}{1 + GK} r + \frac{G}{1 + GK} d - \frac{GK}{1 + GK} n \\
|
||||||
@ -1238,11 +1409,12 @@ The comparison of the sensitivity functions shapes and their effect on the step
|
|||||||
|
|
||||||
#+name: tab:compare_sensitivity_shapes
|
#+name: tab:compare_sensitivity_shapes
|
||||||
#+caption: Comparison of the sensitivity function shape and the corresponding step response for the three controller variations
|
#+caption: Comparison of the sensitivity function shape and the corresponding step response for the three controller variations
|
||||||
| Controller | Sensitivity Function Shape | Change of the Step Response |
|
#+attr_latex: :environment tabularx :booktabs t :width 0.9\linewidth :align lXX
|
||||||
|------------+----------------------------------------------------+----------------------------------|
|
| *Controller* | *Sensitivity Function Shape* | *Change of the Step Response* |
|
||||||
| $K_1(s)$ | Larger bandwidth $\omega_b$ | Faster rise time |
|
|--------------+----------------------------------------------------+----------------------------------|
|
||||||
| $K_2(s)$ | Larger peak value $\Vert S\Vert_\infty$ | Large overshoot and oscillations |
|
| $K_1(s)$ | Larger bandwidth $\omega_b$ | Faster rise time |
|
||||||
| $K_3(s)$ | Larger low frequency gain $\vert S(j\cdot 0)\vert$ | Larger static error |
|
| $K_2(s)$ | Larger peak value $\Vert S\Vert_\infty$ | Large overshoot and oscillations |
|
||||||
|
| $K_3(s)$ | Larger low frequency gain $\vert S(j\cdot 0)\vert$ | Larger static error |
|
||||||
|
|
||||||
#+begin_src matlab :exports none
|
#+begin_src matlab :exports none
|
||||||
wc = 2*pi*1; L_w = 8; wi = 2*pi*0.02;
|
wc = 2*pi*1; L_w = 8; wi = 2*pi*0.02;
|
||||||
@ -1379,6 +1551,7 @@ From the simple analysis above, we can draw a first estimation of the wanted sha
|
|||||||
|
|
||||||
#+name: fig:h-infinity-spec-S
|
#+name: fig:h-infinity-spec-S
|
||||||
#+caption: Typical wanted shape of the Sensitivity transfer function
|
#+caption: Typical wanted shape of the Sensitivity transfer function
|
||||||
|
#+attr_latex: :float nil
|
||||||
[[file:figs/h-infinity-spec-S.png]]
|
[[file:figs/h-infinity-spec-S.png]]
|
||||||
#+end_important
|
#+end_important
|
||||||
|
|
||||||
@ -1445,10 +1618,10 @@ Or does it? Let's find out.
|
|||||||
|
|
||||||
#+name: fig:phase_gain_margin_model_plant
|
#+name: fig:phase_gain_margin_model_plant
|
||||||
#+caption: Bode plot of the obtained Loop Gain $L(s)$
|
#+caption: Bode plot of the obtained Loop Gain $L(s)$
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/phase_gain_margin_model_plant.png]]
|
[[file:figs/phase_gain_margin_model_plant.png]]
|
||||||
|
|
||||||
|
|
||||||
Now let's suppose the controller is implemented in practice, and the "real" plant $G_r(s)$ as a slightly lower damping factor than the one estimated for the model:
|
Now let's suppose the controller is implemented in practice, and the "real" plant $G_r(s)$ as a slightly lower damping factor than the one estimated for the model:
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
xi = 0.03;
|
xi = 0.03;
|
||||||
@ -1504,6 +1677,7 @@ It is confirmed by checking the stability of the closed loop system:
|
|||||||
|
|
||||||
#+name: fig:phase_gain_margin_real_plant
|
#+name: fig:phase_gain_margin_real_plant
|
||||||
#+caption: Bode plots of $L(s)$ (loop gain corresponding the nominal plant) and $L_r(s)$ (loop gain corresponding to the real plant)
|
#+caption: Bode plots of $L(s)$ (loop gain corresponding the nominal plant) and $L_r(s)$ (loop gain corresponding to the real plant)
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/phase_gain_margin_real_plant.png]]
|
[[file:figs/phase_gain_margin_real_plant.png]]
|
||||||
|
|
||||||
@ -1516,7 +1690,7 @@ Let's now determine a new robustness indicator based on the Nyquist Stability Cr
|
|||||||
|
|
||||||
#+begin_definition
|
#+begin_definition
|
||||||
- Nyquist Stability Criteria (for stable systems) ::
|
- Nyquist Stability Criteria (for stable systems) ::
|
||||||
If the open-loop transfer function $L(s)$ is stable, then the closed-loop system will be unstable for any encirclement of the point $−1$ on the Nyquist plot.
|
If the open-loop transfer function $L(s)$ is stable, then the closed-loop system will be unstable for any encirclement of the point $-1$ on the Nyquist plot.
|
||||||
|
|
||||||
- Nyquist Plot ::
|
- Nyquist Plot ::
|
||||||
The Nyquist plot shows the evolution of $L(j\omega)$ in the complex plane from $\omega = 0 \to \infty$.
|
The Nyquist plot shows the evolution of $L(j\omega)$ in the complex plane from $\omega = 0 \to \infty$.
|
||||||
@ -1591,6 +1765,7 @@ The gain, phase and module margins are graphically shown to have an idea of what
|
|||||||
|
|
||||||
#+name: fig:module_margin_example
|
#+name: fig:module_margin_example
|
||||||
#+caption: Nyquist plot with visual indication of the Gain margin $\Delta G$, Phase margin $\Delta \phi$ and Module margin $\Delta M$
|
#+caption: Nyquist plot with visual indication of the Gain margin $\Delta G$, Phase margin $\Delta \phi$ and Module margin $\Delta M$
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/module_margin_example.png]]
|
[[file:figs/module_margin_example.png]]
|
||||||
#+end_exampl
|
#+end_exampl
|
||||||
@ -1642,13 +1817,14 @@ And we now understand why setting an upper bound on the magnitude of $S$ is gene
|
|||||||
|
|
||||||
#+name: tab:specification_modern
|
#+name: tab:specification_modern
|
||||||
#+caption: Typical Specifications and corresponding wanted norms of open and closed loop tansfer functions
|
#+caption: Typical Specifications and corresponding wanted norms of open and closed loop tansfer functions
|
||||||
| | Open-Loop Shaping | Closed-Loop Shaping |
|
#+attr_latex: :environment tabularx :booktabs t :width 0.9\linewidth :align lXX
|
||||||
|-----------------------------+--------------------+--------------------------------------------|
|
| | *Open-Loop Shaping* | *Closed-Loop Shaping* |
|
||||||
| Reference Tracking | $L$ large | $S$ small |
|
|-----------------------------+---------------------+--------------------------------------------|
|
||||||
| Disturbance Rejection | $L$ large | $GS$ small |
|
| Reference Tracking | $L$ large | $S$ small |
|
||||||
| Measurement Noise Filtering | $L$ small | $T$ small |
|
| Disturbance Rejection | $L$ large | $GS$ small |
|
||||||
| Small Command Amplitude | $K$ and $L$ small | $KS$ small |
|
| Measurement Noise Filtering | $L$ small | $T$ small |
|
||||||
| Robustness | Phase/Gain margins | Module margin: $\Vert S\Vert_\infty$ small |
|
| Small Command Amplitude | $K$ and $L$ small | $KS$ small |
|
||||||
|
| Robustness | Phase/Gain margins | Module margin: $\Vert S\Vert_\infty$ small |
|
||||||
|
|
||||||
* $\mathcal{H}_\infty$ Shaping of closed-loop transfer functions
|
* $\mathcal{H}_\infty$ Shaping of closed-loop transfer functions
|
||||||
<<sec:closed-loop-shaping>>
|
<<sec:closed-loop-shaping>>
|
||||||
@ -1769,12 +1945,14 @@ Let's now show how this is equivalent as *shaping* the sensitivity function:
|
|||||||
Using matlab, compute the weighted generalized plant shown in Figure [[fig:first_order_weight]] as a function of $G(s)$ and $W_S(s)$.
|
Using matlab, compute the weighted generalized plant shown in Figure [[fig:first_order_weight]] as a function of $G(s)$ and $W_S(s)$.
|
||||||
|
|
||||||
#+HTML: <details><summary>Hint</summary>
|
#+HTML: <details><summary>Hint</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Hint}
|
||||||
The weighted generalized plant can be defined in Matlab using two techniques:
|
The weighted generalized plant can be defined in Matlab using two techniques:
|
||||||
- by writing manually the 4 transfer functions from $[w, u]$ to $[\tilde{\epsilon}, v]$
|
- by writing manually the 4 transfer functions from $[w, u]$ to $[\tilde{\epsilon}, v]$
|
||||||
- by pre-multiplying the (non-weighted) generalized plant by a block-diagonal transfer function matrix containing the weights for the outputs $z$ and =1= for the outputs $v$
|
- by pre-multiplying the (non-weighted) generalized plant by a block-diagonal transfer function matrix containing the weights for the outputs $z$ and =1= for the outputs $v$
|
||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
#+HTML: <details><summary>Answer</summary>
|
#+HTML: <details><summary>Answer</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Answer}
|
||||||
The two solutions below can be used.
|
The two solutions below can be used.
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :eval no
|
#+begin_src matlab :tangle no :eval no
|
||||||
@ -1823,7 +2001,7 @@ The Matlab code below produces a weighting function with the following character
|
|||||||
- Gain of 1 at 10Hz
|
- Gain of 1 at 10Hz
|
||||||
- High frequency gain of 0.5
|
- High frequency gain of 0.5
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab :float nil
|
||||||
Ws = makeweight(1e2, [2*pi*10, 1], 1/2);
|
Ws = makeweight(1e2, [2*pi*10, 1], 1/2);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -1845,6 +2023,7 @@ The Matlab code below produces a weighting function with the following character
|
|||||||
|
|
||||||
#+name: fig:first_order_weight
|
#+name: fig:first_order_weight
|
||||||
#+caption: Obtained Magnitude of the Weighting Function
|
#+caption: Obtained Magnitude of the Weighting Function
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/first_order_weight.png]]
|
[[file:figs/first_order_weight.png]]
|
||||||
#+end_exampl
|
#+end_exampl
|
||||||
@ -1870,8 +2049,6 @@ The parameters permit to specify:
|
|||||||
|
|
||||||
A Matlab function implementing Equation eqref:eq:weight_formula_advanced is shown below:
|
A Matlab function implementing Equation eqref:eq:weight_formula_advanced is shown below:
|
||||||
|
|
||||||
#+name: lst:generateWeight
|
|
||||||
#+caption: Matlab Function that can be used to generate Weighting functions
|
|
||||||
#+begin_src matlab :tangle matlab/generateWeight.m :comments none :eval no
|
#+begin_src matlab :tangle matlab/generateWeight.m :comments none :eval no
|
||||||
function [W] = generateWeight(args)
|
function [W] = generateWeight(args)
|
||||||
arguments
|
arguments
|
||||||
@ -1890,7 +2067,7 @@ A Matlab function implementing Equation eqref:eq:weight_formula_advanced is show
|
|||||||
|
|
||||||
s = zpk('s');
|
s = zpk('s');
|
||||||
|
|
||||||
W = (((1/args.wc)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.G1)^(2/args.n)))*s + (args.G0/args.Gc)^(1/args.n))/((1/args.G1)^(1/args.n)*(1/args.wc)*sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.G1)^(2/args.n)))*s + (1/args.Gc)^(1/args.n)))^args.n;
|
W = (((1/args.wc) * sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.G1)^(2/args.n)))*s + (args.G0/args.Gc)^(1/args.n)) / ((1/args.G1)^(1/args.n) * (1/args.wc) * sqrt((1-(args.G0/args.Gc)^(2/args.n))/(1-(args.Gc/args.G1)^(2/args.n)))*s + (1/args.Gc)^(1/args.n)))^args.n;
|
||||||
|
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
@ -1928,6 +2105,7 @@ The obtained shapes are shown in Figure [[fig:high_order_weight]].
|
|||||||
|
|
||||||
#+name: fig:high_order_weight
|
#+name: fig:high_order_weight
|
||||||
#+caption: Higher order weights using Equation eqref:eq:weight_formula_advanced
|
#+caption: Higher order weights using Equation eqref:eq:weight_formula_advanced
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/high_order_weight.png]]
|
[[file:figs/high_order_weight.png]]
|
||||||
#+end_seealso
|
#+end_seealso
|
||||||
@ -1946,6 +2124,7 @@ As usual, the plant used is the one presented in Section [[sec:example_system]].
|
|||||||
Translate the requirements as upper bounds on the Sensitivity function and design the corresponding weighting functions using Matlab.
|
Translate the requirements as upper bounds on the Sensitivity function and design the corresponding weighting functions using Matlab.
|
||||||
|
|
||||||
#+HTML: <details><summary>Hint</summary>
|
#+HTML: <details><summary>Hint</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Hint}
|
||||||
The typical wanted upper bound of the sensitivity function is shown in Figure [[fig:h-infinity-spec-S-bis]].
|
The typical wanted upper bound of the sensitivity function is shown in Figure [[fig:h-infinity-spec-S-bis]].
|
||||||
|
|
||||||
More precisely:
|
More precisely:
|
||||||
@ -1958,10 +2137,12 @@ Remember that the wanted upper bound of the sensitivity function is defined by t
|
|||||||
|
|
||||||
#+name: fig:h-infinity-spec-S-bis
|
#+name: fig:h-infinity-spec-S-bis
|
||||||
#+caption: Typical wanted shape of the Sensitivity transfer function
|
#+caption: Typical wanted shape of the Sensitivity transfer function
|
||||||
|
#+attr_latex: :float nil
|
||||||
[[file:figs/h-infinity-spec-S.png]]
|
[[file:figs/h-infinity-spec-S.png]]
|
||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
#+HTML: <details><summary>Answer</summary>
|
#+HTML: <details><summary>Answer</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Answer}
|
||||||
We want to design the weighting function $W_s(s)$ such that:
|
We want to design the weighting function $W_s(s)$ such that:
|
||||||
1. $|W_s(j \cdot 2 \pi 10)| = \sqrt{2}$
|
1. $|W_s(j \cdot 2 \pi 10)| = \sqrt{2}$
|
||||||
2. $|W_s(j \cdot 0)| = 10^3$
|
2. $|W_s(j \cdot 0)| = 10^3$
|
||||||
@ -2016,10 +2197,10 @@ And the $\mathcal{H}_\infty$ synthesis is performed on the /weighted/ generalize
|
|||||||
#+end_example
|
#+end_example
|
||||||
|
|
||||||
$\gamma \approx 0.5$ means that the $\mathcal{H}_\infty$ synthesis generated a controller $K(s)$ that stabilizes the closed-loop system, and such that the $\mathcal{H}_\infty$ norm of the closed-loop transfer function from $w$ to $z$ is less than $\gamma$:
|
$\gamma \approx 0.5$ means that the $\mathcal{H}_\infty$ synthesis generated a controller $K(s)$ that stabilizes the closed-loop system, and such that the $\mathcal{H}_\infty$ norm of the closed-loop transfer function from $w$ to $z$ is less than $\gamma$:
|
||||||
\begin{aligned}
|
\begin{align*}
|
||||||
& \| W_s(s) S(s) \|_\infty \approx 0.5 \\
|
& \| W_s(s) S(s) \|_\infty \approx 0.5 \\
|
||||||
& \Leftrightarrow |S(j\omega)| < \frac{0.5}{|W_s(j\omega)|} \quad \forall \omega
|
& \Leftrightarrow |S(j\omega)| < \frac{0.5}{|W_s(j\omega)|} \quad \forall \omega
|
||||||
\end{aligned}
|
\end{align*}
|
||||||
|
|
||||||
This is indeed what we can see by comparing $|S|$ and $|W_S|$ in Figure [[fig:results_sensitivity_hinf]].
|
This is indeed what we can see by comparing $|S|$ and $|W_S|$ in Figure [[fig:results_sensitivity_hinf]].
|
||||||
|
|
||||||
@ -2063,31 +2244,33 @@ When multiple closed-loop transfer function are shaped at the same time, it is r
|
|||||||
|
|
||||||
#+name: tab:usual_shaping_gang_four
|
#+name: tab:usual_shaping_gang_four
|
||||||
#+caption: Typical specifications and corresponding shaping of the /Gang of four/
|
#+caption: Typical specifications and corresponding shaping of the /Gang of four/
|
||||||
| <l> | <c> | <l> |
|
#+attr_latex: :environment tabularx :booktabs t :width 0.9\linewidth :align llX
|
||||||
| Specification | Gang of Four | Wanted shape |
|
| <l> | <c> | <l> |
|
||||||
|--------------------------------------+--------------+-----------------------------------------------------------|
|
| *Specifications* | *TF* | *Wanted shape* |
|
||||||
| Fast Reference Tracking | $S$ | Set lower bound on the bandwidth |
|
|-------------------------------+------+------------------------------------------------|
|
||||||
| Small Steady State Errors | $S$ | Small low frequency gain |
|
| Fast Reference Tracking | $S$ | Set lower bound on the bandwidth |
|
||||||
| Follow Step ref. inputs | $S$ | Slope of +20dB/dec at low frequency |
|
| Small Steady State Errors | $S$ | Small low frequency gain |
|
||||||
| Follow Ramp ref. inputs | $S$ | Slope of +40dB/dec at low frequency |
|
| Follow Step ref. inputs | $S$ | Slope of +20dB/dec at low frequency |
|
||||||
| Follow Sinusoidal ref. inputs | $S$ | Small magnitude centered on the sin. frequency |
|
| Follow Ramp ref. inputs | $S$ | Slope of +40dB/dec at low frequency |
|
||||||
|--------------------------------------+--------------+-----------------------------------------------------------|
|
| Follow Sin. ref. inputs | $S$ | Small magnitude centered on the sin. frequency |
|
||||||
| Output Disturbance Rejection | $S$ | Small gain in the disturbance bandwidth |
|
|-------------------------------+------+------------------------------------------------|
|
||||||
| Input Disturbance Rejection | $GS$ | Small gain in the disturbance bandwidth |
|
| Output Disturbance Rejection | $S$ | Small gain in the disturbance bandwidth |
|
||||||
| Prevent inversion of resonant plants | $GS$ | Limit gain around resonance |
|
| Input Disturbance Rejection | $GS$ | Small gain in the disturbance bandwidth |
|
||||||
|--------------------------------------+--------------+-----------------------------------------------------------|
|
| Prevent notching resonances | $GS$ | Limit gain around resonance |
|
||||||
| Small Command Amplitude | $KS$ | Small at high frequency |
|
|-------------------------------+------+------------------------------------------------|
|
||||||
| Limitation of the Control Bandwidth | $T$ | Set an upper bound on the bandwidth |
|
| Small Command Amplitude | $KS$ | Small at high frequency |
|
||||||
| Measurement Noise Filtering | $T$ | Small high frequency gain |
|
| Limitation of the Bandwidth | $T$ | Set an upper bound on the bandwidth |
|
||||||
|--------------------------------------+--------------+-----------------------------------------------------------|
|
| Measurement Noise Filtering | $T$ | Small high frequency gain |
|
||||||
| Stability margins | $S$ | Module margin: $\Vert S\Vert_\infty$ small |
|
|-------------------------------+------+------------------------------------------------|
|
||||||
| Robustness to un-modelled dynamics | $T$ | Small at frequencies where the plant uncertainty is large |
|
| Stability margins | $S$ | Module margin: $\Vert S\Vert_\infty$ small |
|
||||||
|
| Robust to unmodelled dynamics | $T$ | Small at freq. where uncertainty is large |
|
||||||
|
|
||||||
Depending on which closed-loop transfer function are to be shaped, different weighted generalized plant can be used.
|
Depending on which closed-loop transfer function are to be shaped, different weighted generalized plant can be used.
|
||||||
Some of them are described below for reference, it is a good exercise to try to re-design such weighted generalized plants.
|
Some of them are described below for reference, it is a good exercise to try to re-design such weighted generalized plants.
|
||||||
|
|
||||||
*** S KS :ignore:
|
*** S KS :ignore:
|
||||||
#+HTML: <details><summary>Shaping of S and KS</summary>
|
#+HTML: <details><summary>Shaping of S and KS</summary>
|
||||||
|
#+latex: \begin{exampl}[after title={~- Shape $S$ and $KS$}]
|
||||||
#+begin_src latex :file general_conf_shaping_S_KS.pdf
|
#+begin_src latex :file general_conf_shaping_S_KS.pdf
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
% Blocs
|
% Blocs
|
||||||
@ -2126,6 +2309,7 @@ Some of them are described below for reference, it is a good exercise to try to
|
|||||||
|
|
||||||
#+name: fig:general_conf_shaping_S_KS
|
#+name: fig:general_conf_shaping_S_KS
|
||||||
#+caption: Generalized Plant to shape $S$ and $KS$
|
#+caption: Generalized Plant to shape $S$ and $KS$
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/general_conf_shaping_S_KS.png]]
|
[[file:figs/general_conf_shaping_S_KS.png]]
|
||||||
|
|
||||||
@ -2133,17 +2317,18 @@ Weighting functions:
|
|||||||
- $W_1(s)$ is used to shape $S$
|
- $W_1(s)$ is used to shape $S$
|
||||||
- $W_2(s)$ is used to shape $KS$
|
- $W_2(s)$ is used to shape $KS$
|
||||||
|
|
||||||
#+name: lst:general_plant_S_KS
|
|
||||||
#+caption: General Plant definition corresponding to Figure [[fig:general_conf_shaping_S_KS]]
|
|
||||||
#+begin_src matlab :eval no :tangle no
|
#+begin_src matlab :eval no :tangle no
|
||||||
P = [W1 -G*W1
|
P = [1 -G
|
||||||
0 W2
|
0 1
|
||||||
1 -G];
|
1 -G];
|
||||||
|
Pw = blkdiag(W1, W2, 1)*P;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
#+latex: \end{exampl}
|
||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
*** S T :ignore:
|
*** S T :ignore:
|
||||||
#+HTML: <details><summary>Shaping of S and T</summary>
|
#+HTML: <details><summary>Shaping of S and T</summary>
|
||||||
|
#+latex: \begin{exampl}[after title={~- Shape $S$ and $T$}]
|
||||||
#+begin_src latex :file general_conf_shaping_S_T.pdf
|
#+begin_src latex :file general_conf_shaping_S_T.pdf
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
% Blocs
|
% Blocs
|
||||||
@ -2180,6 +2365,7 @@ Weighting functions:
|
|||||||
|
|
||||||
#+name: fig:general_conf_shaping_S_T
|
#+name: fig:general_conf_shaping_S_T
|
||||||
#+caption: Generalized Plant to shape $S$ and $T$
|
#+caption: Generalized Plant to shape $S$ and $T$
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/general_conf_shaping_S_T.png]]
|
[[file:figs/general_conf_shaping_S_T.png]]
|
||||||
|
|
||||||
@ -2187,17 +2373,18 @@ Weighting functions:
|
|||||||
- $W_1$ is used to shape $S$
|
- $W_1$ is used to shape $S$
|
||||||
- $W_2$ is used to shape $T$
|
- $W_2$ is used to shape $T$
|
||||||
|
|
||||||
#+name: lst:general_plant_S_T
|
|
||||||
#+caption: General Plant definition corresponding to Figure [[fig:general_conf_shaping_S_T]]
|
|
||||||
#+begin_src matlab :eval no :tangle no
|
#+begin_src matlab :eval no :tangle no
|
||||||
P = [W1 -G*W1
|
P = [1 -G
|
||||||
0 G*W2
|
0 G
|
||||||
1 -G];
|
1 -G];
|
||||||
|
Pw = blkdiag(W1, W2, 1)*P;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
#+latex: \end{exampl}
|
||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
*** S GS :ignore:
|
*** S GS :ignore:
|
||||||
#+HTML: <details><summary>Shaping of S and GS</summary>
|
#+HTML: <details><summary>Shaping of S and GS</summary>
|
||||||
|
#+latex: \begin{exampl}[after title={~- Shape $S$ and $GS$}]
|
||||||
#+begin_src latex :file general_conf_shaping_S_GS.pdf
|
#+begin_src latex :file general_conf_shaping_S_GS.pdf
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
% Blocs
|
% Blocs
|
||||||
@ -2234,6 +2421,7 @@ Weighting functions:
|
|||||||
|
|
||||||
#+name: fig:general_conf_shaping_S_GS
|
#+name: fig:general_conf_shaping_S_GS
|
||||||
#+caption: Generalized Plant to shape $S$ and $GS$
|
#+caption: Generalized Plant to shape $S$ and $GS$
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/general_conf_shaping_S_GS.png]]
|
[[file:figs/general_conf_shaping_S_GS.png]]
|
||||||
|
|
||||||
@ -2241,17 +2429,18 @@ Weighting functions:
|
|||||||
- $W_1$ is used to shape $S$
|
- $W_1$ is used to shape $S$
|
||||||
- $W_2$ is used to shape $GS$
|
- $W_2$ is used to shape $GS$
|
||||||
|
|
||||||
#+name: lst:general_plant_S_GS
|
|
||||||
#+caption: General Plant definition corresponding to Figure [[fig:general_conf_shaping_S_GS]]
|
|
||||||
#+begin_src matlab :eval no :tangle no
|
#+begin_src matlab :eval no :tangle no
|
||||||
P = [W1 -W1
|
P = [1 -1
|
||||||
G*W2 -G*W2
|
G -G
|
||||||
G -G];
|
G -G];
|
||||||
|
Pw = blkdiag(W1, W2, 1)*P;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
#+latex: \end{exampl}
|
||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
*** S T KS :ignore:
|
*** S T KS :ignore:
|
||||||
#+HTML: <details><summary>Shaping of S, T and KS</summary>
|
#+HTML: <details><summary>Shaping of S, T and KS</summary>
|
||||||
|
#+latex: \begin{exampl}[after title={~- Shape $S$, $T$ and $KS$}]
|
||||||
#+begin_src latex :file general_conf_shaping_S_T_KS.pdf
|
#+begin_src latex :file general_conf_shaping_S_T_KS.pdf
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
% Blocs
|
% Blocs
|
||||||
@ -2293,6 +2482,7 @@ Weighting functions:
|
|||||||
|
|
||||||
#+name: fig:general_conf_shaping_S_T_KS
|
#+name: fig:general_conf_shaping_S_T_KS
|
||||||
#+caption: Generalized Plant to shape $S$, $T$ and $KS$
|
#+caption: Generalized Plant to shape $S$, $T$ and $KS$
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/general_conf_shaping_S_T_KS.png]]
|
[[file:figs/general_conf_shaping_S_T_KS.png]]
|
||||||
|
|
||||||
@ -2301,18 +2491,19 @@ Weighting functions:
|
|||||||
- $W_2$ is used to shape $KS$
|
- $W_2$ is used to shape $KS$
|
||||||
- $W_3$ is used to shape $T$
|
- $W_3$ is used to shape $T$
|
||||||
|
|
||||||
#+name: lst:general_plant_S_T_KS
|
|
||||||
#+caption: General Plant definition corresponding to Figure [[fig:general_conf_shaping_S_T_KS]]
|
|
||||||
#+begin_src matlab :eval no :tangle no
|
#+begin_src matlab :eval no :tangle no
|
||||||
P = [W1 -G*W1
|
P = [1 -G
|
||||||
0 W2
|
0 1
|
||||||
0 G*W3
|
0 G
|
||||||
1 -G];
|
1 -G];
|
||||||
|
Pw = blkdiag(W1, W2, W3, 1)*P;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
#+latex: \end{exampl}
|
||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
*** S T GS :ignore:
|
*** S T GS :ignore:
|
||||||
#+HTML: <details><summary>Shaping of S, T and GS</summary>
|
#+HTML: <details><summary>Shaping of S, T and GS</summary>
|
||||||
|
#+latex: \begin{exampl}[after title={~- Shape $S$, $T$ and $GS$}]
|
||||||
#+begin_src latex :file general_conf_shaping_S_T_GS.pdf
|
#+begin_src latex :file general_conf_shaping_S_T_GS.pdf
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
% Blocs
|
% Blocs
|
||||||
@ -2354,6 +2545,7 @@ Weighting functions:
|
|||||||
|
|
||||||
#+name: fig:general_conf_shaping_S_T_GS
|
#+name: fig:general_conf_shaping_S_T_GS
|
||||||
#+caption: Generalized Plant to shape $S$, $T$ and $GS$
|
#+caption: Generalized Plant to shape $S$, $T$ and $GS$
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/general_conf_shaping_S_T_GS.png]]
|
[[file:figs/general_conf_shaping_S_T_GS.png]]
|
||||||
|
|
||||||
@ -2362,18 +2554,19 @@ Weighting functions:
|
|||||||
- $W_2$ is used to shape $GS$
|
- $W_2$ is used to shape $GS$
|
||||||
- $W_3$ is used to shape $T$
|
- $W_3$ is used to shape $T$
|
||||||
|
|
||||||
#+name: lst:general_plant_S_T_GS
|
|
||||||
#+caption: General Plant definition corresponding to Figure [[fig:general_conf_shaping_S_T_GS]]
|
|
||||||
#+begin_src matlab :eval no :tangle no
|
#+begin_src matlab :eval no :tangle no
|
||||||
P = [W1 -W1
|
P = [1 -1
|
||||||
G*W2 -G*W2
|
G -G
|
||||||
0 W3
|
0 1
|
||||||
G -G];
|
G -G];
|
||||||
|
Pw = blkdiag(W1, W2, W3, 1)*P;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
#+latex: \end{exampl}
|
||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
*** S T KS GS :ignore:
|
*** S T KS GS :ignore:
|
||||||
#+HTML: <details><summary>Shaping of S, T, KS and GS</summary>
|
#+HTML: <details><summary>Shaping of S, T, KS and GS</summary>
|
||||||
|
#+latex: \begin{exampl}[after title={~- Shape $S$, $T$, $KS$ and $GS$}]
|
||||||
#+begin_src latex :file general_conf_shaping_S_T_KS_GS.pdf
|
#+begin_src latex :file general_conf_shaping_S_T_KS_GS.pdf
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
% Blocs
|
% Blocs
|
||||||
@ -2419,6 +2612,7 @@ Weighting functions:
|
|||||||
|
|
||||||
#+name: fig:general_conf_shaping_S_T_KS_GS
|
#+name: fig:general_conf_shaping_S_T_KS_GS
|
||||||
#+caption: Generalized Plant to shape $S$, $T$, $KS$ and $GS$
|
#+caption: Generalized Plant to shape $S$, $T$, $KS$ and $GS$
|
||||||
|
#+attr_latex: :float nil
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/general_conf_shaping_S_T_KS_GS.png]]
|
[[file:figs/general_conf_shaping_S_T_KS_GS.png]]
|
||||||
|
|
||||||
@ -2428,13 +2622,13 @@ Weighting functions:
|
|||||||
- $W_1W_3$ is used to shape $GS$
|
- $W_1W_3$ is used to shape $GS$
|
||||||
- $W_2W_3$ is used to shape $T$
|
- $W_2W_3$ is used to shape $T$
|
||||||
|
|
||||||
#+name: lst:general_plant_S_T_KS_GS
|
|
||||||
#+caption: General Plant definition corresponding to Figure [[fig:general_conf_shaping_S_T_KS_GS]]
|
|
||||||
#+begin_src matlab :eval no :tangle no
|
#+begin_src matlab :eval no :tangle no
|
||||||
P = [ W1 -W1*G*W3 -G*W1
|
P = [ 1 -G -G
|
||||||
0 0 W2
|
0 0 1
|
||||||
1 -G*W3 -G];
|
1 -G -G];
|
||||||
|
Pw = blkdiag(W1, W2, 1)*P*blkdiag(1, W3, 1);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
#+latex: \end{exampl}
|
||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
*** Limitation :ignore:
|
*** Limitation :ignore:
|
||||||
@ -2476,6 +2670,7 @@ Similar relationship can be found for $T$, $KS$ and $GS$.
|
|||||||
Determine the approximate norms of $T$, $KS$ and $GS$ for large loop gains ($|G(j\omega) K(j\omega)| \gg 1$) and small loop gains ($|G(j\omega) K(j\omega)| \ll 1$).
|
Determine the approximate norms of $T$, $KS$ and $GS$ for large loop gains ($|G(j\omega) K(j\omega)| \gg 1$) and small loop gains ($|G(j\omega) K(j\omega)| \ll 1$).
|
||||||
|
|
||||||
#+HTML: <details><summary>Hint</summary>
|
#+HTML: <details><summary>Hint</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Hint}
|
||||||
You can follows this procedure for $T$, $KS$ and $GS$:
|
You can follows this procedure for $T$, $KS$ and $GS$:
|
||||||
1. Write the closed-loop transfer function as a function of $K(s)$ and $G(s)$
|
1. Write the closed-loop transfer function as a function of $K(s)$ and $G(s)$
|
||||||
2. Take $|K(j\omega)G(j\omega)| \gg 1$ and conclude on the norm of the closed-loop transfer function
|
2. Take $|K(j\omega)G(j\omega)| \gg 1$ and conclude on the norm of the closed-loop transfer function
|
||||||
@ -2483,6 +2678,7 @@ You can follows this procedure for $T$, $KS$ and $GS$:
|
|||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
|
|
||||||
#+HTML: <details><summary>Answer</summary>
|
#+HTML: <details><summary>Answer</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Answer}
|
||||||
The obtained constrains are shown in Figure [[fig:h-infinity-4-blocs-constrains]].
|
The obtained constrains are shown in Figure [[fig:h-infinity-4-blocs-constrains]].
|
||||||
#+HTML: </details>
|
#+HTML: </details>
|
||||||
#+end_exercice
|
#+end_exercice
|
||||||
@ -2651,7 +2847,7 @@ Here is the general design procedure that will be followed:
|
|||||||
4. Chose the suitable weighted general plant to shape the wanted quantities
|
4. Chose the suitable weighted general plant to shape the wanted quantities
|
||||||
5. Shape sequentially the chosen closed-loop transfer functions
|
5. Shape sequentially the chosen closed-loop transfer functions
|
||||||
|
|
||||||
Let's first convert the system of Figure [[fig:ex_test_system]] into the classical feedback architecture of Figure [[fig:classical_feedback_test_system]].
|
Let's first convert the system of Figure [[fig:ex_test_system]] into the classical feedback architecture of Figure [[fig:classical_feedback_test_system_bis]].
|
||||||
|
|
||||||
#+begin_src latex :file ex_test_system_feedback.pdf
|
#+begin_src latex :file ex_test_system_feedback.pdf
|
||||||
\begin{tikzpicture}
|
\begin{tikzpicture}
|
||||||
@ -2675,7 +2871,7 @@ Let's first convert the system of Figure [[fig:ex_test_system]] into the classic
|
|||||||
\end{tikzpicture}
|
\end{tikzpicture}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:classical_feedback_test_system
|
#+name: fig:classical_feedback_test_system_bis
|
||||||
#+caption: Block diagram corresponding to the example system
|
#+caption: Block diagram corresponding to the example system
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
[[file:figs/ex_test_system_feedback.png]]
|
[[file:figs/ex_test_system_feedback.png]]
|
||||||
@ -2819,6 +3015,7 @@ Time domain simulations will be performed by first computing the closed-loop sys
|
|||||||
4. Using Matlab, define the generalized plant
|
4. Using Matlab, define the generalized plant
|
||||||
|
|
||||||
#+HTML: <details><summary>Hint</summary>
|
#+HTML: <details><summary>Hint</summary>
|
||||||
|
#+LATEX: \tcbsubtitle{Hint}
|
||||||
1. Make use of Table [[tab:usual_shaping_gang_four]]
|
1. Make use of Table [[tab:usual_shaping_gang_four]]
|
||||||
2. Make use of Table [[tab:usual_shaping_gang_four]]
|
2. Make use of Table [[tab:usual_shaping_gang_four]]
|
||||||
3. See Section [[sec:shaping_multiple_tf]]
|
3. See Section [[sec:shaping_multiple_tf]]
|
||||||
@ -2832,13 +3029,14 @@ In such case, we want to shape $S$, $GS$ and $T$.
|
|||||||
|
|
||||||
#+name: tab:ex_specification_shapes
|
#+name: tab:ex_specification_shapes
|
||||||
#+caption: Control Specifications and associated wanted shape of the closed-loop transfer functions
|
#+caption: Control Specifications and associated wanted shape of the closed-loop transfer functions
|
||||||
| <l> | <c> | <l> |
|
#+attr_latex: :environment tabularx :booktabs t :width 0.7\linewidth :align llX
|
||||||
| Specification | Corresponding Transfer Function | Wanted Shape |
|
| <l> | <c> | <l> |
|
||||||
|--------------------------+---------------------------------+------------------------------------|
|
| *Specification* | *TF* | *Wanted Shape* |
|
||||||
| Follow Step Reference | $S$ | +40dB of slope at low frequency |
|
|--------------------------+-----------+------------------------------------|
|
||||||
| Reject Disturbances | $S$, $GS$ | Small gain |
|
| Follow Step Reference | $S$ | +40dB of slope at low frequency |
|
||||||
| Reject measurement noise | $T$ | Small high frequency (>100Hz) gain |
|
| Reject Disturbances | $S$, $GS$ | Small gain |
|
||||||
| Robust System | $S$ | Small $\Vert S \Vert_\infty$ |
|
| Reject measurement noise | $T$ | Small high frequency (>100Hz) gain |
|
||||||
|
| Robust System | $S$ | Small $\Vert S \Vert_\infty$ |
|
||||||
|
|
||||||
To do so, we use to generalized plant shown in Figure [[fig:ex_general_plant]] for the synthesis where the three closed-loop tranfert functions from $w$ to $[z_1\,,z_2\,,z_3]$ are respectively $S$, $GS$ and $T$.
|
To do so, we use to generalized plant shown in Figure [[fig:ex_general_plant]] for the synthesis where the three closed-loop tranfert functions from $w$ to $[z_1\,,z_2\,,z_3]$ are respectively $S$, $GS$ and $T$.
|
||||||
|
|
||||||
@ -3504,6 +3702,8 @@ If you want to nice reference book in French, look at cite:duc99_comman_h.
|
|||||||
|
|
||||||
You can also look at the very good lectures below.
|
You can also look at the very good lectures below.
|
||||||
|
|
||||||
yt:?listType=playlist&list=PLn8PRpmsu08qFLMfgTEzR8DxOPE7fBiin
|
[[yt:?listType=playlist&list=PLn8PRpmsu08qFLMfgTEzR8DxOPE7fBiin][Robust Control - Brian Douglas]]
|
||||||
|
|
||||||
yt:?listType=playlist&list=PLsjPUqcL7ZIFHCObUU_9xPUImZ203gB4o
|
[[yt:?listType=playlist&list=PLsjPUqcL7ZIFHCObUU_9xPUImZ203gB4o][Control Bootcamp - Steve Brunton]]
|
||||||
|
|
||||||
|
#+latex: \printbibliography
|
||||||
|
113
preamble.tex
Normal file
113
preamble.tex
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
\usepackage{float}
|
||||||
|
|
||||||
|
\usepackage{caption,tabularx,booktabs}
|
||||||
|
|
||||||
|
\usepackage{biblatex}
|
||||||
|
\addbibresource{ref.bib}
|
||||||
|
|
||||||
|
\usepackage{fontawesome}
|
||||||
|
|
||||||
|
\usepackage{caption}
|
||||||
|
\usepackage{subcaption}
|
||||||
|
|
||||||
|
\captionsetup[figure]{labelfont=bf}
|
||||||
|
\captionsetup[subfigure]{labelfont=bf}
|
||||||
|
\captionsetup[listing]{labelfont=bf}
|
||||||
|
\captionsetup[table]{labelfont=bf}
|
||||||
|
|
||||||
|
\usepackage{xcolor}
|
||||||
|
|
||||||
|
\definecolor{my-blue}{HTML}{6b7adb}
|
||||||
|
\definecolor{my-pale-blue}{HTML}{e6e9f9}
|
||||||
|
\definecolor{my-red}{HTML}{db6b6b}
|
||||||
|
\definecolor{my-pale-red}{HTML}{f9e6e6}
|
||||||
|
\definecolor{my-green}{HTML}{6bdbb6}
|
||||||
|
\definecolor{my-pale-green}{HTML}{e6f9f3}
|
||||||
|
\definecolor{my-yellow}{HTML}{dbd26b}
|
||||||
|
\definecolor{my-pale-yellow}{HTML}{f9f7e6}
|
||||||
|
\definecolor{my-orange}{HTML}{dba76b}
|
||||||
|
\definecolor{my-pale-orange}{HTML}{f9f0e6}
|
||||||
|
\definecolor{my-grey}{HTML}{a3a3a3}
|
||||||
|
\definecolor{my-pale-grey}{HTML}{f0f0f0}
|
||||||
|
\definecolor{my-turq}{HTML}{6bc7db}
|
||||||
|
\definecolor{my-pale-turq}{HTML}{e6f6f9}
|
||||||
|
|
||||||
|
\usepackage{inconsolata}
|
||||||
|
|
||||||
|
\usepackage[newfloat=true, chapter]{minted}
|
||||||
|
\usemintedstyle{autumn}
|
||||||
|
|
||||||
|
\setminted{frame=lines,breaklines=true,tabsize=4,fontsize=\scriptsize,autogobble=true,labelposition=topline,bgcolor=my-pale-grey}
|
||||||
|
\setminted[matlab]{label=Matlab}
|
||||||
|
\setminted[latex]{label=LaTeX}
|
||||||
|
\setminted[bash]{label=Bash}
|
||||||
|
\setminted[python]{label=Python}
|
||||||
|
\setminted[text]{label=Results}
|
||||||
|
|
||||||
|
\setmintedinline{fontsize=\normalsize,bgcolor=my-pale-grey}
|
||||||
|
|
||||||
|
\usepackage[most]{tcolorbox}
|
||||||
|
|
||||||
|
\tcbuselibrary{minted}
|
||||||
|
|
||||||
|
\newtcolorbox{seealso}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=See Also}
|
||||||
|
\newtcolorbox{hint}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=Hint}
|
||||||
|
\newtcolorbox{definition}{enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Definition}
|
||||||
|
\newtcolorbox{important}{ enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Important}
|
||||||
|
\newtcolorbox{exampl}[1][]{ enhanced,breakable,colback=my-pale-green,colframe=my-green,fonttitle=\bfseries,title=Example,#1}
|
||||||
|
\newtcolorbox{exercice}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Exercice}
|
||||||
|
\newtcolorbox{question}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Question}
|
||||||
|
\newtcolorbox{answer}{ enhanced,breakable,colback=my-pale-turq,colframe=my-turq,fonttitle=\bfseries,title=Answer}
|
||||||
|
\newtcolorbox{summary}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Summary}
|
||||||
|
\newtcolorbox{caution}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Caution}
|
||||||
|
\newtcolorbox{warning}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Warning}
|
||||||
|
|
||||||
|
\newtcolorbox{my-quote}[1]{%
|
||||||
|
colback=my-pale-grey,
|
||||||
|
grow to right by=-10mm,
|
||||||
|
grow to left by=-10mm,
|
||||||
|
boxrule=0pt,
|
||||||
|
boxsep=0pt,
|
||||||
|
breakable,
|
||||||
|
enhanced jigsaw,
|
||||||
|
borderline west={4pt}{0pt}{my-grey}}
|
||||||
|
|
||||||
|
\renewenvironment{quote}{\begin{my-quote}}{\end{my-quote}}
|
||||||
|
|
||||||
|
\newtcolorbox{my-verse}[1]{%
|
||||||
|
colback=my-pale-grey,
|
||||||
|
grow to right by=-10mm,
|
||||||
|
grow to left by=-10mm,
|
||||||
|
boxrule=0pt,
|
||||||
|
boxsep=0pt,
|
||||||
|
breakable,
|
||||||
|
enhanced jigsaw,
|
||||||
|
borderline west={4pt}{0pt}{my-grey}}
|
||||||
|
|
||||||
|
\renewenvironment{verse}{\begin{my-verse}}{\end{my-verse}}
|
||||||
|
|
||||||
|
\usepackage{environ}% http://ctan.org/pkg/environ
|
||||||
|
\NewEnviron{aside}{%
|
||||||
|
\marginpar{\BODY}
|
||||||
|
}
|
||||||
|
|
||||||
|
\renewenvironment{verbatim}{\VerbatimEnvironment\begin{minted}[]{text}}{\end{minted}}
|
||||||
|
|
||||||
|
\usepackage{soul}
|
||||||
|
\sethlcolor{my-pale-grey}
|
||||||
|
|
||||||
|
\let\OldTexttt\texttt
|
||||||
|
\renewcommand{\texttt}[1]{{\ttfamily\hl{\mbox{\,#1\,}}}}
|
||||||
|
|
||||||
|
\makeatletter
|
||||||
|
\preto\Gin@extensions{png,}
|
||||||
|
\DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf}
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\hypersetup{
|
||||||
|
colorlinks = true,
|
||||||
|
allcolors = my-blue
|
||||||
|
}
|
||||||
|
|
||||||
|
\usepackage{hypcap}
|
33
ref.bib
Normal file
33
ref.bib
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
@article{lurie02_system_archit_trades_using_bode,
|
||||||
|
author = {Boris J. Lurie and Ali Ghavimi and Fred Y. Hadaegh and Edward Mettler},
|
||||||
|
title = {System Architecture Trades Using Bode-Step Control Design},
|
||||||
|
journal = {Journal of Guidance, Control, and Dynamics},
|
||||||
|
volume = {25},
|
||||||
|
number = {2},
|
||||||
|
pages = {309-315},
|
||||||
|
year = {2002},
|
||||||
|
doi = {10.2514/2.4883},
|
||||||
|
url = {https://doi.org/10.2514/2.4883},
|
||||||
|
}
|
||||||
|
@techreport{bibel92_guidel_h,
|
||||||
|
author = {Bibel, John E and Malyevac, D Stephen},
|
||||||
|
institution = {NAVAL SURFACE WARFARE CENTER DAHLGREN DIV VA},
|
||||||
|
keywords = {robust control},
|
||||||
|
title = {Guidelines for the selection of weighting functions for H-infinity control},
|
||||||
|
year = {1992},
|
||||||
|
}
|
||||||
|
@book{skogestad07_multiv_feedb_contr,
|
||||||
|
author = {Skogestad, Sigurd and Postlethwaite, Ian},
|
||||||
|
title = {Multivariable Feedback Control: Analysis and Design},
|
||||||
|
year = {2007},
|
||||||
|
publisher = {John Wiley},
|
||||||
|
isbn = {9780470011683},
|
||||||
|
keywords = {favorite},
|
||||||
|
}
|
||||||
|
@book{duc99_comman_h,
|
||||||
|
author = {Duc, G and Font, S},
|
||||||
|
title = {Commande H infinie et mu-analyse-des outils pour la robustesse},
|
||||||
|
year = {1999},
|
||||||
|
publisher = {Lavoisier},
|
||||||
|
journal = {Hermes., Paris: Hermes},
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user