Tikz - Sensor Fusion Paper

Table of Contents

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}

sf_arch.png

Figure 1: Sensor Fusion with complementary filters (png, pdf, tex).

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}

sf_arch_eq.png

Figure 2: Equivalent configuration (png, pdf, tex).

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}

sf_arch_class.png

Figure 3: Equivalent configuration - classical Feedback (png, pdf, tex).

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}

sf_arch_class_prefilter.png

Figure 4: Equivalent configuration - classical Feedback with pre-filter (png, pdf, tex).

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}

sf_arch_class_bis.png

Figure 5: Equivalent configuration - bis (png, pdf, tex).

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}

sf_hinf_filters_plant_b.png

Figure 6: H-Infinity - Complementary filters - Generalized plant (png, pdf, tex).

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}

sf_hinf_filters_b.png

Figure 7: H-Infinity - Complementary filters (png, pdf, tex).

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}

input_uncertainty.png

Figure 8: Input Multiplicative Uncertainty (png, pdf, tex).

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}

mech_sys_alone.png

Figure 9: One mass (png, pdf, tex).

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}

mech_sys_alone_ctrl.png

Figure 10: One mass - Control (png, pdf, tex).

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}

1dof_isolation_piezo.png

Figure 11: Piezoelectric Actuator (png, pdf, tex).

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}

spec_S_T.png

Figure 12: Upper bounds (png, pdf, tex).

14 Bode plot of the mechanical system

bode_plot_mech_sys.png

Figure 13: Bode plot of the mechanical system (png, pdf, tex).

15 Bode plot of the mechanical system - Uncertainty

bode_plot_mech_sys_uncertainty.png

Figure 14: Bode plot of the mechanical system - Uncertainty (png, pdf, tex).

16 Bode plot of the controller

bode_Kfb.png

Figure 15: Bode plot of the controller (png, pdf, tex).

17 Bode plot of the loop gain

bode_plot_loop_gain.png

Figure 16: Bode plot of the loop gain (png, pdf, tex).

18 Upper bounds with weights

spec_S_T_weights.png

Figure 17: Upper bounds with weights (png, pdf, tex).

19 Upper bounds with Complementary Filters

hinf_filters_result_tikz.png

Figure 18: Upper bounds with Complementary Filters (png, pdf, tex).

20 Upper bounds with weights and Complementary Filters

hinf_filters_result_weights.png

Figure 19: Upper bounds with weights and Complementary Filters (png, pdf, tex).

21 Robustness - Nyquist

nyquist_robustness.png

Figure 20: Robustness - Nyquist (png, pdf, tex).

22 Robustness - Loop Gain

bode_plot_loop_gain_robustness.png

Figure 21: Robustness - Loop Gain (png, pdf, tex).

23 Robust performance

robust_perf.png

Figure 22: Robust performance (png, pdf, tex).

Author: Thomas Dehaeze

Created: 2019-07-22 lun. 11:55

Validate