Tikz - Sensor Fusion Paper
Table of Contents
- 1. Change some default
- 2. Sensor Fusion with complementary filters
- 3. Equivalent configuration
- 4. Equivalent configuration - classical Feedback
- 5. Equivalent configuration - classical Feedback with pre-filter
- 6. Equivalent configuration - bis
- 7. H-Infinity - Complementary filters - Generalized plant
- 8. H-Infinity - Complementary filters
- 9. Input Multiplicative Uncertainty
- 10. One mass
- 11. One mass - Control
- 12. Piezoelectric Actuator
- 13. Upper bounds
- 14. Bode plot of the mechanical system
- 15. Bode plot of the mechanical system - Uncertainty
- 16. Bode plot of the controller
- 17. Bode plot of the loop gain
- 18. Upper bounds with weights
- 19. Upper bounds with Complementary Filters
- 20. Upper bounds with weights and Complementary Filters
- 21. Robustness - Nyquist
- 22. Robustness - Loop Gain
- 23. Robust performance
Configuration file is accessible here.
1 Change some default
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}%
2 Sensor Fusion with complementary filters
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \begin{tikzpicture} \node[addb={+}{}{}{}{-}] (addfb) at (0, 0){}; \node[block, right=of addfb] (K){$k$}; \node[block, right=1.2 of K] (G){$G^\prime$}; \node[addb={+}{}{}{}{}, right=of G] (adddy){}; \coordinate[] (KG) at ($0.5*(K.east)+0.5*(G.west)$); \node[block, below=of KG] (Gm){$G$}; \node[block, below=of Gm] (Hh){$H_H$}; \node[addb={+}{}{}{}{}, below=of Hh] (addsf){}; \node[block] (Hl) at (addsf-|G) {$H_L$}; \node[addb={+}{}{}{}{}, right=1.2 of Hl] (addn) {}; \draw[->] (addfb.east) -- (K.west) node[above left]{}; \draw[->] (K.east) -- (G.west) node[above left]{$u$}; \draw[->] (KG) node[branch]{} -- (Gm.north); \draw[->] (Gm.south) -- (Hh.north); \draw[->] (Hh.south) -- (addsf.north) node[above left]{}; \draw[->] (Hl.west) -- (addsf.east); \draw[->] (addsf.west) -| (addfb.south) node[below right]{}; \draw[->] (G.east) -- (adddy.west); \draw[<-] (addn.east) -- ++(\cdist, 0) coordinate[](endpos) node[above left]{$n$}; \draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$}; \draw[->] (adddy-|addn) node[branch]{} -- (addn.north); \draw[<-] (addfb.west) -- ++(-\cdist, 0) node[above right]{$r$}; \draw[->] (addn.west) -- (Hl.east) node[above right]{$y_m$}; \draw[<-] (adddy.north) -- ++(0, \cdist) node[below right]{$d_y$}; \end{tikzpicture}
3 Equivalent configuration
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \begin{tikzpicture} \node[addb={+}{}{}{}{-}] (addfb) at (0, 0){}; \node[addb={+}{}{}{}{-}, right=of addfb] (addK){}; \node[block, right=of addK] (K){$k$}; \node[block, right=1.8 of K] (G){$G^\prime$}; \node[addb={+}{}{}{}{}, right=of G] (adddy){}; \node[block, below right=0.5 and -0.2 of K] (Gm){$G$}; \node[block, below left =0.5 and -0.2 of K] (Hh){$H_H$}; \node[block, below=1.5 of G] (Hl) {$H_L$}; \node[addb={+}{}{}{}{}, right=1 of Hl] (addn) {}; \draw[->] (addfb.east) -- (addK.west); \draw[->] (addK.east) -- (K.west); \draw[->] (K.east) -- (G.west) node[above left]{$u$}; \draw[->] (G.east) -- (adddy.west); \draw[->] ($(G.west)+(-0.8, 0)$) node[branch](sffb){} |- (Gm.east); \draw[->] (Gm.west) -- (Hh.east); \draw[->] (Hh.west) -| (addK.south); \draw[<-] (addn.east) -- ++(\cdist, 0) coordinate[](endpos) node[above left]{$n$}; \draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$}; \draw[->] (adddy-|addn) node[branch]{} -- (addn.north); \draw[<-] (addfb.west) -- ++(-\cdist, 0) node[above right]{$r$}; \draw[->] (addn.west) -- (Hl.east) node[above right]{$y_m$}; \draw[<-] (adddy.north) -- ++(0, \cdist) node[below right]{$d_y$}; \draw[->] (Hl.west) -| (addfb.south) node[below right]{}; \node[fit={($(addK.west|-Hh.south)+(-0.1, 0)$) (K.north-|sffb)}, inner sep=5pt, draw, dashed, color=gray, label={$K$}] (Kfb) {}; \end{tikzpicture}
4 Equivalent configuration - classical Feedback
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \begin{tikzpicture} \node[addb={+}{}{}{}{-}] (addfb) at (0, 0){}; \node[block, right=of addfb] (K){$K$}; \node[block, right=of K] (G){$G^\prime$}; \node[addb={+}{}{}{}{}, right=of G] (adddy){}; \node[addb={+}{}{}{}{}, below right=and 0.5 of adddy] (addn) {}; \node[block] (Hh) at (G|-addn) {$H_L$}; \draw[->] (addfb.east) -- (K.west) node[above left]{}; \draw[->] (K.east) -- (G.west) node[above left]{$u$}; \draw[->] (G.east) -- (adddy.west); \draw[<-] (addn.east) -- ++(\cdist, 0) coordinate[](endpos) node[above left]{$n$}; \draw[->] (G-|addn)node[branch]{} -- (addn.north); \draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$}; \draw[<-] (addfb.west) -- ++(-\cdist, 0) node[above right]{$r$}; \draw[->] (addn.west) -- (Hh.east); \draw[->] (Hh.west) -| (addfb.south); \draw[<-] (adddy.north) -- ++(0, \cdist) node[below right]{$d_y$}; \end{tikzpicture}
5 Equivalent configuration - classical Feedback with pre-filter
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \begin{tikzpicture} \node[addb={+}{}{}{}{-}] (addfb) at (0, 0){}; \node[block, left=of addfb] (Kr){$K_r$}; \node[block, right=of addfb] (K){$K$}; \node[block, right=of K] (G){$G^\prime$}; \node[addb={+}{}{}{}{}, right=of G] (adddy){}; \node[addb={+}{}{}{}{}, below right=0.7 and 0.3 of adddy] (addn) {}; \node[block, left=of addn] (Hh) {$H_H$}; \draw[->] (addfb.east) -- (K.west) node[above left]{}; \draw[->] (K.east) -- (G.west) node[above left]{$u$}; \draw[->] (G.east) -- (adddy.west); \draw[<-] (addn.east) -- ++(\cdist, 0) coordinate[](endpos) node[above left]{$n$}; \draw[->] (G-|addn)node[branch]{} -- (addn.north); \draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$}; \draw[<-] (Kr.west) -- ++(-\cdist, 0) node[above right]{$r$}; \draw[->] (Kr.east) -- (addfb.west); \draw[->] (addn.west) -- (Hh.east); \draw[->] (Hh.west) -| (addfb.south); \draw[<-] (adddy.north) -- ++(0, \cdist) node[below right]{$d_y$}; \end{tikzpicture}
6 Equivalent configuration - bis
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \begin{tikzpicture} \node[addb={+}{}{}{}{-}] (addfb) at (0, 0){}; \node[block, left=of addfb] (Kr){${H_H}^{-1}$}; \node[block, right=of addfb] (K){$G^{-1} {H_L}^{-1} H_H$}; \node[block, right=of K] (G){$G^\prime$}; \node[addb={+}{}{}{}{}, right=of G] (adddy){}; \node[addb={+}{}{}{}{}, below right=0.7 and 0.3 of adddy] (addn) {}; \draw[->] (addfb.east) -- (K.west) node[above left]{}; \draw[->] (K.east) -- (G.west) node[above left]{$u$}; \draw[->] (G.east) -- (adddy.west); \draw[<-] (addn.east) -- ++(\cdist, 0) coordinate[](endpos) node[above left]{$n$}; \draw[->] (G-|addn)node[branch]{} -- (addn.north); \draw[->] (adddy.east) -- (G-|endpos) node[above left]{$y$}; \draw[<-] (Kr.west) -- ++(-\cdist, 0) node[above right]{$r$}; \draw[->] (Kr.east) -- (addfb.west); \draw[->] (addn.west) -| (addfb.south); \draw[<-] (adddy.north) -- ++(0, \cdist) node[below right]{$d_y$}; \end{tikzpicture}
7 H-Infinity - Complementary filters - Generalized plant
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \begin{tikzpicture} \node[block={4.0cm}{3.0cm}, dashed] (P) {}; \node[above] at (P.north) {$P$}; \coordinate[] (inputw) at ($(P.south west)!0.8!(P.north west) + (-\cdist, 0)$); \coordinate[] (inputu) at ($(P.south west)!0.4!(P.north west) + (-\cdist, 0)$); \coordinate[] (outputh) at ($(P.south east)!0.8!(P.north east) + ( \cdist, 0)$); \coordinate[] (outputl) at ($(P.south east)!0.4!(P.north east) + ( \cdist, 0)$); \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( \cdist, 0)$); \node[block, left=2*\cdist of outputl] (WL){$w_L$}; \node[block, left=2*\cdist of outputh] (WH){$w_H$}; \node[addb={+}{}{}{}{-}, left=of WH] (sub) {}; \draw[->] (inputw) node[above right]{$w$} -- (sub.west); \draw[->] (inputu) node[above right]{$u$} -- (WL.west); \draw[->] (inputu-|sub) node[branch]{} -- (sub.south); \draw[->] (sub.east) -- (WH.west); \draw[->] ($(inputw)+(2*\cdist, 0)$) node[branch]{} |- (outputv) node[above left]{$v$}; \draw[->] (WH.east) -- (outputh)node[above left]{$z_H$}; \draw[->] (WL.east) -- (outputl)node[above left]{$z_L$}; \end{tikzpicture}
8 H-Infinity - Complementary filters
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \begin{tikzpicture} \node[block={4.0cm}{3.0cm}, dashed] (P) {}; \node[above] at (P.north) {$P$}; \coordinate[] (inputw) at ($(P.south west)!0.8!(P.north west) + (-\cdist, 0)$); \coordinate[] (inputu) at ($(P.south west)!0.4!(P.north west) + (-\cdist, 0)$); \coordinate[] (outputh) at ($(P.south east)!0.8!(P.north east) + ( \cdist, 0)$); \coordinate[] (outputl) at ($(P.south east)!0.4!(P.north east) + ( \cdist, 0)$); \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( \cdist, 0)$); \node[block, left=2*\cdist of outputl] (WL){$w_L$}; \node[block, left=2*\cdist of outputh] (WH){$w_H$}; \node[addb={+}{}{}{}{-}, left=of WH] (sub) {}; \node[block, below=\cdist of P] (HL) {$H_L$}; \draw[->] (inputw) node[above right]{$w$} -- (sub.west); \draw[->] (HL.west) -| ($(inputu)+(0.5*\cdist, 0)$) -- (WL.west); \draw[->] (inputu-|sub) node[branch]{} -- (sub.south); \draw[->] (sub.east) -- (WH.west); \draw[->] ($(inputw)+(2*\cdist, 0)$) node[branch]{} |- ($(outputv)+(-0.5*\cdist, 0)$) |- (HL.east); \draw[->] (WH.east) -- (outputh)node[above left]{$z_H$}; \draw[->] (WL.east) -- (outputl)node[above left]{$z_L$}; \end{tikzpicture}
9 Input Multiplicative Uncertainty
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \begin{tikzpicture} % Blocs \node[block] (G) {$G$}; \node[addb, left=of G] (addi) {}; \node[block, above left=0.5 and 0.2 of addi] (deltai) {$\Delta_I$}; \node[block, left=of deltai] (wi) {$w_I$}; % Connections and labels \draw[->] ($(G.west)+(-4, 0)$)coordinate[](start) node[branch]{} |- (wi.west); \draw[->] ($(start)+(-\cdist, 0)$) -- (addi.west); \draw[->] (wi.east) -- (deltai.west); \draw[->] (deltai.east) -| (addi.north); \draw[->] (addi.east) -- (G.west); \draw[->] (G.east) -- ++(0.8, 0); \node[fit={(start|-wi.north) (G.south east)}, inner sep=10pt, draw, dashed, color=gray, label={$G_p$}] (Gp) {}; \end{tikzpicture}
10 One mass
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \begin{tikzpicture} % ==================== % Parameters % ==================== \def\massw{2.2} % Width of the masses \def\massh{0.8} % Height of the masses \def\spaceh{1.2} % Height of the springs/dampers \def\dispw{0.3} % Width of the dashed line for the displacement \def\disph{0.5} % Height of the arrow for the displacements \def\bracs{0.05} % Brace spacing vertically \def\brach{-10pt} % Brace shift horizontaly % ==================== % ==================== % Ground % ==================== \draw (-0.5*\massw, 0) -- (0.5*\massw, 0); \draw[dashed] (0.5*\massw, 0) -- ++(\dispw, 0); \draw[->] (0.5*\massw+0.5*\dispw, 0) -- ++(0, \disph) node[right]{$w$}; % ==================== \begin{scope}[shift={(0, 0)}] % Mass \draw[fill=white] (-0.5*\massw, \spaceh) rectangle (0.5*\massw, \spaceh+\massh) node[pos=0.5]{$m$}; % Spring, Damper, and Actuator \draw[spring] (-0.4*\massw, 0) -- (-0.4*\massw, \spaceh) node[midway, left=0.1]{$k$}; \draw[damper] (0, 0) -- ( 0, \spaceh) node[midway, left=0.2]{$c$}; \draw[actuator] ( 0.4*\massw, 0) -- ( 0.4*\massw, \spaceh) node[midway, left=0.1](F){$F$}; % Displacements \draw[dashed] (0.5*\massw, \spaceh) -- ++(\dispw, 0); \draw[->] (0.5*\massw+0.5*\dispw, \spaceh) -- ++(0, \disph) node[right]{$x$}; % Legend % \draw[decorate, decoration={brace, amplitude=8pt}, xshift=\brach] % % (-0.5*\massw, \bracs) -- (-0.5*\massw, \spaceh+\massh-\bracs) % % node[midway,rotate=90,anchor=south,yshift=10pt]{}; \end{scope} \end{tikzpicture}
11 One mass - Control
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \begin{tikzpicture} % ==================== % Parameters % ==================== \def\massw{2.2} % Width of the masses \def\massh{0.8} % Height of the masses \def\spaceh{1.2} % Height of the springs/dampers \def\dispw{0.3} % Width of the dashed line for the displacement \def\disph{0.5} % Height of the arrow for the displacements \def\bracs{0.05} % Brace spacing vertically \def\brach{-10pt} % Brace shift horizontaly % ==================== % ==================== % Ground % ==================== \draw (-0.5*\massw, 0) -- (0.5*\massw, 0); \draw[dashed] (0.5*\massw, 0) -- ++(\dispw, 0); \draw[->] (0.5*\massw+0.5*\dispw, 0) -- ++(0, \disph) node[below right]{$w$}; % ==================== \begin{scope}[shift={(0, 0)}] % Mass \draw[fill=white] (-0.5*\massw, \spaceh) rectangle (0.5*\massw, \spaceh+\massh) node[pos=0.5]{$m$}; % Spring, Damper, and Actuator \draw[spring] (-0.4*\massw, 0) -- (-0.4*\massw, \spaceh) node[midway, left=0.1]{$k$}; \draw[damper] (0, 0) -- ( 0, \spaceh) node[midway, left=0.2]{$c$}; \draw[actuator] ( 0.4*\massw, 0) -- ( 0.4*\massw, \spaceh) coordinate[midway, right=0.15](F); % Displacements \draw[dashed] (0.5*\massw, \spaceh) -- ++(\dispw, 0); \draw[->] (0.5*\massw+0.5*\dispw, \spaceh) -- ++(0, \disph) node[right](x){$x$}; \end{scope} \node[block, right=1 of F] (Kfb) {$K$}; \node[addb={+}{}{-}{}{}, right=2*\cdist of Kfb] (add) {}; \node[addb] (addn) at (x-|Kfb) {}; \node[block, right=of addn] (Hl) {$H_L$}; \draw[->] (x) -- (addn.west); \draw[->] (addn.east) -- (Hl.west); \draw[->] (Hl.east) -| (add.north); \draw[->] (add.west) -- (Kfb.east); \draw[->] (Kfb.west) -- (F) node[above right]{$F$}; \draw[<-] (addn.north) -- ++(0,\cdist) node[below right]{$n$}; \draw[<-] (add.east) -- ++(\cdist,0) node[above left]{$r$}; \end{tikzpicture}
12 Piezoelectric Actuator
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \begin{tikzpicture} \node[piezo={2}{3}{10}] (piezo) at (0, 0){}; \node[draw, fill=white, anchor=south, minimum width=3cm, minimum height=1.5cm] (mass) at ($(piezo.north)+(0, 0.5)$) {Mass}; \draw[] ($(piezo.south)+(-1.5, -0.5)$) -- ++(3, 0); \draw ($0.8*(piezo.north west)+0.2*(piezo.north east)$) -- ++(0, 0.5); \draw ($0.2*(piezo.north west)+0.8*(piezo.north east)$) -- ++(0, 0.5); \draw ($0.8*(piezo.south west)+0.2*(piezo.south east)$) -- ++(0, -0.5); \draw ($0.2*(piezo.south west)+0.8*(piezo.south east)$) -- ++(0, -0.5); \end{tikzpicture}
13 Upper bounds
\tikzset{block/.default={0.8cm}{0.6cm}} \tikzset{addb/.append style={scale=0.7}} \tikzset{node distance=0.6} \def\cdist{0.7} \definecolor{T}{rgb}{0.230, 0.299, 0.754}% \definecolor{S}{rgb}{0.706, 0.016, 0.150}% \setlength\fwidth{7cm} \setlength\fheight{5cm} \begin{tikzpicture} \begin{axis}[% name=axis, width=\fwidth, height=\fheight, at={(0, 0)}, scale only axis, separate axis lines, every outer x axis line/.append style={black}, every x tick label/.append style={font=\color{black}}, every x tick/.append style={black}, xmode=log, xmin=0.1, xmax=1000, xminorticks=true, xlabel={Frequency [Hz]}, every outer y axis line/.append style={black}, every y tick label/.append style={font=\color{black}}, every y tick/.append style={black}, ymode=log, ymin=0.001, ymax=10, yminorticks=true, ylabel={Magnitude}, axis background/.style={fill=white}, xmajorgrids, xminorgrids, ymajorgrids, yminorgrids ] \addplot [color=T, line width=1.5pt, forget plot, upperbound] table[row sep=crcr]{% 0.1 4.7609074288834\\ 0.457784053837662 4.74112847250108\\ 0.781435060784454 4.70208061093208\\ 1.0991097009295 4.64559165613624\\ 1.42283045721435 4.57144906349989\\ 1.75891659032773 4.47927616460061\\ 2.09566239948043 4.37423445322045\\ 2.45126006203334 4.25274519592358\\ 2.8408836901833 4.11095719445138\\ 3.26222200971167 3.95170788088451\\ 3.71167181947577 3.77948905141281\\ 4.18428850790158 3.59988757314696\\ 4.71708469091702 3.40317136463527\\ 5.31772317785097 3.19223684289429\\ 5.99484250318941 2.97087790006113\\ 6.82077673286568 2.72585419958062\\ 7.76050333513357 2.47949503869403\\ 8.9114823228402 2.2201435349723\\ 10.3279473191895 1.95491825546796\\ 12.0804213467733 1.69160934903556\\ 14.3932264471941 1.42447068049222\\ 17.3076553419573 1.17667603248786\\ 21.1995345753607 0.943491337665097\\ 26.2070669648385 0.740920673515988\\ 32.6974974451177 0.569453372601831\\ 41.1731993116168 0.427919272009563\\ 51.8459354389291 0.317863515154134\\ 65.8898955079995 0.230558428152838\\ 85.2964449974102 0.1611173349527\\ 114.566872863487 0.105607825522203\\ 228.74908173557 0.0390036255196556\\ 272.543253128103 0.0307810979565345\\ 315.863540826782 0.025500739341156\\ 359.381366380463 0.0218605610825003\\ 405.142317111465 0.0191453206052172\\ 452.538627817017 0.0171066280251345\\ 505.479682119124 0.0154393411147139\\ 559.432570616938 0.0141825204910006\\ 619.144175597784 0.0131421696026314\\ 685.229159528406 0.012282656024432\\ 758.367791499719 0.0115737646620205\\ 847.08682665574 0.0109423524789141\\ 946.1848194722 0.0104322816237634\\ 1000 0.0102154679782451\\ }; \addplot [color=T, line width=1.5pt, forget plot, upperbound] table[row sep=crcr]{% 20 0.7\\ 50 0.7\\ }; \addplot [color=T, line width=1.5pt, forget plot, upperbound] table[row sep=crcr]{% 50 0.1\\ 500 0.1\\ }; \addplot [color=T, line width=1.5pt, forget plot, upperbound] table[row sep=crcr]{% 500 0.01\\ 1000 0.01\\ }; \addplot [color=S, line width=1.5pt, forget plot, upperbound] table[row sep=crcr]{% 0.02 1e-05\\ 2 0.1\\ }; \node[draw, fill=white, align=center, anchor=west] (noise) at (20, 0.01){Noise\\Attenuation}; \draw[->] (noise.north) -- (100, 0.1-|noise.north); \draw[->] (noise.east) -- (500, 0.01); \node[draw, fill=white, align=center, anchor=north east] (bandwidth) at (900, 8) {Bandwidth\\Limitation}; \draw[->] (bandwidth.west) -- (20, 0.7); \node[draw, fill=white, align=center, anchor=south west] (robust) at (0.2, 1) {Robust\\Stability}; \draw[->] (robust.east) -- (8,2|-robust.east); \node[draw, fill=white, align=center, anchor=south west] (dist) at (0.11, 0.1) {Disturbance\\Rejection}; \draw[->] (dist.south) -- (1, 0.025); \end{axis} % \begin{customlegend}[legend cell align=left, %<= to align cells % legend entries={ % <= in the following there are the entries % $S$, % $T$ % }, % legend style={at={(axis.north east)}, outer sep=5pt, font=\footnotesize}] % \addlegendimage{upperbound, S} % \addlegendimage{upperbound, T} % \end{customlegend} \end{tikzpicture}