diff --git a/tikz/config.org b/tikz/config.org index 2024e1f..77a45a7 100644 --- a/tikz/config.org +++ b/tikz/config.org @@ -688,3 +688,10 @@ And we add the corresdonding } } #+end_src + +* More Defaults specific to this paper +#+begin_src latex + \tikzset{block/.default={0.8cm}{0.6cm}} + \tikzset{addb/.append style={scale=0.7}} + \tikzset{node distance=0.6} +#+end_src diff --git a/tikz/config.tex b/tikz/config.tex index 0e6781c..bbb59de 100644 --- a/tikz/config.tex +++ b/tikz/config.tex @@ -554,3 +554,7 @@ outer sep=6pt, } } + +\tikzset{block/.default={0.8cm}{0.6cm}} +\tikzset{addb/.append style={scale=0.7}} +\tikzset{node distance=0.6} diff --git a/tikz/figs/fusion_super_sensor.pdf b/tikz/figs/fusion_super_sensor.pdf new file mode 100644 index 0000000..0a866dd Binary files /dev/null and b/tikz/figs/fusion_super_sensor.pdf differ diff --git a/tikz/figs/fusion_super_sensor.png b/tikz/figs/fusion_super_sensor.png new file mode 100644 index 0000000..f0f2959 Binary files /dev/null and b/tikz/figs/fusion_super_sensor.png differ diff --git a/tikz/figs/fusion_super_sensor.svg b/tikz/figs/fusion_super_sensor.svg new file mode 100644 index 0000000..c5f27a4 --- /dev/null +++ b/tikz/figs/fusion_super_sensor.svg @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tikz/figs/h_infinity_robust_fusion.pdf b/tikz/figs/h_infinity_robust_fusion.pdf index 4044d48..3d0f3e0 100644 Binary files a/tikz/figs/h_infinity_robust_fusion.pdf and b/tikz/figs/h_infinity_robust_fusion.pdf differ diff --git a/tikz/figs/h_two_optimal_fusion.pdf b/tikz/figs/h_two_optimal_fusion.pdf new file mode 100644 index 0000000..85268ca Binary files /dev/null and b/tikz/figs/h_two_optimal_fusion.pdf differ diff --git a/tikz/figs/h_two_optimal_fusion.png b/tikz/figs/h_two_optimal_fusion.png new file mode 100644 index 0000000..c2ac826 Binary files /dev/null and b/tikz/figs/h_two_optimal_fusion.png differ diff --git a/tikz/figs/h_two_optimal_fusion.svg b/tikz/figs/h_two_optimal_fusion.svg new file mode 100644 index 0000000..088bfe6 --- /dev/null +++ b/tikz/figs/h_two_optimal_fusion.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tikz/figs/mixed_h2_hinf_synthesis.pdf b/tikz/figs/mixed_h2_hinf_synthesis.pdf index 77636a7..5cf816b 100644 Binary files a/tikz/figs/mixed_h2_hinf_synthesis.pdf and b/tikz/figs/mixed_h2_hinf_synthesis.pdf differ diff --git a/tikz/figs/mixed_h2_hinf_synthesis.png b/tikz/figs/mixed_h2_hinf_synthesis.png index 41ccc50..30ed62e 100644 Binary files a/tikz/figs/mixed_h2_hinf_synthesis.png and b/tikz/figs/mixed_h2_hinf_synthesis.png differ diff --git a/tikz/figs/mixed_h2_hinf_synthesis.svg b/tikz/figs/mixed_h2_hinf_synthesis.svg index 2ad5490..f80cb3e 100644 --- a/tikz/figs/mixed_h2_hinf_synthesis.svg +++ b/tikz/figs/mixed_h2_hinf_synthesis.svg @@ -1,87 +1,287 @@ - + - + - + - + - + - + - + + + + + + + + + + - + + + + - + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - + - + - - + - - - + - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - + - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tikz/figs/sensor_fusion_arch_full.pdf b/tikz/figs/sensor_fusion_arch_full.pdf new file mode 100644 index 0000000..70e112e Binary files /dev/null and b/tikz/figs/sensor_fusion_arch_full.pdf differ diff --git a/tikz/figs/sensor_fusion_arch_full.png b/tikz/figs/sensor_fusion_arch_full.png new file mode 100644 index 0000000..0d4267d Binary files /dev/null and b/tikz/figs/sensor_fusion_arch_full.png differ diff --git a/tikz/figs/sensor_fusion_arch_full.svg b/tikz/figs/sensor_fusion_arch_full.svg new file mode 100644 index 0000000..77e8d2c --- /dev/null +++ b/tikz/figs/sensor_fusion_arch_full.svg @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tikz/figs/sensor_fusion_arch_uncertainty.pdf b/tikz/figs/sensor_fusion_arch_uncertainty.pdf new file mode 100644 index 0000000..fcdfa18 Binary files /dev/null and b/tikz/figs/sensor_fusion_arch_uncertainty.pdf differ diff --git a/tikz/figs/sensor_fusion_arch_uncertainty.png b/tikz/figs/sensor_fusion_arch_uncertainty.png new file mode 100644 index 0000000..760b39f Binary files /dev/null and b/tikz/figs/sensor_fusion_arch_uncertainty.png differ diff --git a/tikz/figs/sensor_fusion_arch_uncertainty.svg b/tikz/figs/sensor_fusion_arch_uncertainty.svg new file mode 100644 index 0000000..ab543f3 --- /dev/null +++ b/tikz/figs/sensor_fusion_arch_uncertainty.svg @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tikz/figs/sensor_fusion_dynamic_uncertainty.pdf b/tikz/figs/sensor_fusion_dynamic_uncertainty.pdf index bd28f0b..843e09c 100644 Binary files a/tikz/figs/sensor_fusion_dynamic_uncertainty.pdf and b/tikz/figs/sensor_fusion_dynamic_uncertainty.pdf differ diff --git a/tikz/figs/sensor_fusion_dynamic_uncertainty.png b/tikz/figs/sensor_fusion_dynamic_uncertainty.png index 2385934..760b39f 100644 Binary files a/tikz/figs/sensor_fusion_dynamic_uncertainty.png and b/tikz/figs/sensor_fusion_dynamic_uncertainty.png differ diff --git a/tikz/figs/sensor_fusion_dynamic_uncertainty.svg b/tikz/figs/sensor_fusion_dynamic_uncertainty.svg index 0105d24..ab543f3 100644 --- a/tikz/figs/sensor_fusion_dynamic_uncertainty.svg +++ b/tikz/figs/sensor_fusion_dynamic_uncertainty.svg @@ -1,291 +1,290 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + + + - - + - - - - - - - - - - - - - - - + - - - - - - - - - - + - + - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + diff --git a/tikz/figs/sensor_fusion_full.pdf b/tikz/figs/sensor_fusion_full.pdf index 5e3b0cb..6d52e2f 100644 Binary files a/tikz/figs/sensor_fusion_full.pdf and b/tikz/figs/sensor_fusion_full.pdf differ diff --git a/tikz/figs/sensor_fusion_noise_arch.pdf b/tikz/figs/sensor_fusion_noise_arch.pdf new file mode 100644 index 0000000..4d786b4 Binary files /dev/null and b/tikz/figs/sensor_fusion_noise_arch.pdf differ diff --git a/tikz/figs/sensor_fusion_noise_arch.png b/tikz/figs/sensor_fusion_noise_arch.png new file mode 100644 index 0000000..f0f2959 Binary files /dev/null and b/tikz/figs/sensor_fusion_noise_arch.png differ diff --git a/tikz/figs/sensor_fusion_noise_arch.svg b/tikz/figs/sensor_fusion_noise_arch.svg new file mode 100644 index 0000000..c5f27a4 --- /dev/null +++ b/tikz/figs/sensor_fusion_noise_arch.svg @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tikz/figs/uncertainty_set_super_sensor.pdf b/tikz/figs/uncertainty_set_super_sensor.pdf new file mode 100644 index 0000000..d01de34 Binary files /dev/null and b/tikz/figs/uncertainty_set_super_sensor.pdf differ diff --git a/tikz/figs/uncertainty_set_super_sensor.png b/tikz/figs/uncertainty_set_super_sensor.png new file mode 100644 index 0000000..d3f0e39 Binary files /dev/null and b/tikz/figs/uncertainty_set_super_sensor.png differ diff --git a/tikz/figs/uncertainty_set_super_sensor.svg b/tikz/figs/uncertainty_set_super_sensor.svg new file mode 100644 index 0000000..fc19ed3 --- /dev/null +++ b/tikz/figs/uncertainty_set_super_sensor.svg @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tikz/index.html b/tikz/index.html index 2cc91ad..298a2f7 100644 --- a/tikz/index.html +++ b/tikz/index.html @@ -3,248 +3,25 @@ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> - + - Robust and Optimal Sensor Fusion - Tikz Figures - - + +
@@ -257,821 +34,374 @@ for the JavaScript code in this tag.

Table of Contents

-

Configuration file is accessible here.

-
-

1 Change some default

+
+

1 Sensor Fusion Architecture

-
\tikzset{block/.default={0.8cm}{0.6cm}}
-\tikzset{addb/.append style={scale=0.7}}
-\tikzset{node distance=0.6}
-\def\cdist{0.7}
+
\begin{tikzpicture}
+  \node[branch] (x) at (0, 0);
+  \node[block, above right=1.0 and 0.5 of x](G1){$G_1(s)$};
+  \node[block, below right=1.0 and 0.5 of x](G2){$G_2(s)$};
+  \node[addb, right=0.4 of G1](add1){};
+  \node[addb, right=0.4 of G2](add2){};
+  \node[block, right=1.1 of add1](H1){$H_1(s)$};
+  \node[block, right=1.1 of add2](H2){$H_2(s)$};
+  \node[block, above=0.5 of add1](N1){$N_1(s)$};
+  \node[block, above=0.5 of add2](N2){$N_2(s)$};
+  \node[addb, right=4.8 of x](add){};
 
-\definecolor{T}{rgb}{0.230, 0.299, 0.754}%
-\definecolor{S}{rgb}{0.706, 0.016, 0.150}%
+  \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
+  \draw[->] (x.center) |- (G1.west);
+  \draw[->] (x.center) |- (G2.west);
+  \draw[->] (G1.east) -- (add1.west);
+  \draw[->] (G2.east) -- (add2.west);
+  \draw[->] (N1.south) -- (add1.north)node[above right]{$n_1$};
+  \draw[->] (N2.south) -- (add2.north)node[above right]{$n_2$};
+  \draw[<-] (N1.north) -- ++(0, 0.6)node[below right](n1){$\tilde{n}_1$};
+  \draw[<-] (N2.north) -- ++(0, 0.6)node[below right](n2){$\tilde{n}_2$};
+  \draw[->] (add1.east) -- (H1.west)node[above left]{$\hat{x}_1$};
+  \draw[->] (add2.east) -- (H2.west)node[above left]{$\hat{x}_2$};
+  \draw[->] (H1) -| (add.north);
+  \draw[->] (H2) -| (add.south);
+  \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$};
+
+  \begin{scope}[on background layer]
+    \node[fit={($(G2.south-|x)+(-0.2, -0.3)$) ($(n1.north east-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
+    \node[below left] at (supersensor.north east) {Super Sensor};
+
+    \node[fit={($(G1.south west)+(-0.3, -0.1)$) ($(n1.north east)+(0.1, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {};
+    \node[below right] at (sensor1.north west) {Sensor 1};
+    \node[fit={($(G2.south west)+(-0.3, -0.1)$) ($(n2.north east)+(0.1, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {};
+    \node[below right] at (sensor2.north west) {Sensor 2};
+  \end{scope}
+\end{tikzpicture}
 
+ + +
+

sensor_fusion_noise_arch.png +

+

Figure 1: Sensor Fusion Architecture (png, pdf).

+
-
-

2 H-Infinity - Complementary filters - Generalized plant

+
+

2 Architecture used for \(\mathcal{H}_2\) synthesis of 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}
+
\begin{tikzpicture}
+   \node[block={4.0cm}{2.5cm}, fill=black!20!white, dashed] (P) {};
+   \node[above] at (P.north) {$P(s)$};
 
-\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.75!(P.north west) + (-0.7, 0)$);
+   \coordinate[] (inputu)  at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$);
 
-   \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[] (output1) at ($(P.south east)!0.75!(P.north east) + ( 0.7, 0)$);
+   \coordinate[] (output2) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$);
+   \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( 0.7, 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=1.4 of output1] (N1){$N_1(s)$};
+   \node[block, left=1.4 of output2] (N2){$N_2(s)$};
+   \node[addb={+}{}{}{}{-}, left=of N1] (sub) {};
 
-   \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=0.3 of P] (H2) {$H_2(s)$};
 
-   \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}
+   \draw[->] (inputw) node[above right]{$w$} -- (sub.west);
+   \draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (N2.west);
+   \draw[->] (inputu-|sub) node[branch]{} -- (sub.south);
+   \draw[->] (sub.east) -- (N1.west);
+   \draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east);
+   \draw[->] (N1.east) -- (output1)node[above left]{$z_1$};
+   \draw[->] (N2.east) -- (output2)node[above left]{$z_2$};
+\end{tikzpicture}
 
-
-

sf_hinf_filters_plant_b.png +

+

h_two_optimal_fusion.png

-

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

+

Figure 2: Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters (png, pdf).

-
-

3 H-Infinity - Complementary filters

+
+

3 Sensor fusion architecture with sensor dynamics uncertainty

-
\tikzset{block/.default={0.8cm}{0.6cm}}
-\tikzset{addb/.append style={scale=0.7}}
-\tikzset{node distance=0.6}
-\def\cdist{0.7}
+
\begin{tikzpicture}
+  \node[branch] (x) at (0, 0);
+  \node[addb, above right=0.8 and 4 of x](add1){};
+  \node[addb, below right=0.8 and 4 of x](add2){};
+  \node[block, above left=0.2 and 0.1 of add1](delta1){$\Delta_1(s)$};
+  \node[block, above left=0.2 and 0.1 of add2](delta2){$\Delta_2(s)$};
+  \node[block, left=0.5 of delta1](W1){$w_1(s)$};
+  \node[block, left=0.5 of delta2](W2){$w_2(s)$};
+  \node[block, right=0.5 of add1](H1){$H_1(s)$};
+  \node[block, right=0.5 of add2](H2){$H_2(s)$};
+  \node[addb, right=6 of x](add){};
 
-\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$};
+  \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
+  \draw[->] (x.center) |- (add1.west);
+  \draw[->] (x.center) |- (add2.west);
+  \draw[->] ($(add1-|W1.west)+(-0.5, 0)$)node[branch](S1){} |- (W1.west);
+  \draw[->] ($(add2-|W2.west)+(-0.5, 0)$)node[branch](S1){} |- (W2.west);
+  \draw[->] (W1.east) -- (delta1.west);
+  \draw[->] (W2.east) -- (delta2.west);
+  \draw[->] (delta1.east) -| (add1.north);
+  \draw[->] (delta2.east) -| (add2.north);
+  \draw[->] (add1.east) -- (H1.west);
+  \draw[->] (add2.east) -- (H2.west);
+  \draw[->] (H1.east) -| (add.north);
+  \draw[->] (H2.east) -| (add.south);
+  \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$};
 
-   \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)$);
+  \begin{scope}[on background layer]
+    \node[fit={($(H2.south-|x)+(-0.2, -0.3)$) ($(delta1.north east-|add.east)+(0.2, 0.4)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
+    \node[below left] at (supersensor.north east) {Super Sensor};
 
-   \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}
+    \node[block, fit={($(W1.north-|S1)+(-0.2, 0.2)$) ($(add1.south east)+(0.2, -0.3)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {};
+    \node[above right] at (sensor1.south west) {Sensor 1};
+    \node[block, fit={($(W2.north-|S1)+(-0.2, 0.2)$) ($(add2.south east)+(0.2, -0.3)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {};
+    \node[above right] at (sensor2.south west) {Sensor 2};
+  \end{scope}
+\end{tikzpicture}
 
-
-

sf_hinf_filters_b.png +

+

sensor_fusion_arch_uncertainty.png

-

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

+

Figure 3: Sensor fusion architecture with sensor dynamics uncertainty (png, pdf).

-
-

4 H-Infinity - Optimal Complementary Filters

+
+

4 Uncertainty set of the super sensor dynamics

-
\tikzset{block/.default={0.8cm}{0.6cm}}
-\tikzset{addb/.append style={scale=0.7}}
-\tikzset{node distance=0.6}
-\def\cdist{0.7}
+
\begin{tikzpicture}
+  \begin{scope}[shift={(4, 0)}]
 
-\definecolor{T}{rgb}{0.230, 0.299, 0.754}%
-\definecolor{S}{rgb}{0.706, 0.016, 0.150}%
-\begin{tikzpicture}
-   \node[block={5.0cm}{3.0cm}, dashed] (P) {};
-   \node[above] at (P.north) {$P$};
+    % Uncertainty Circle
+    \node[draw, circle, fill=black!20!white, minimum size=3.6cm] (c) at (0, 0) {};
+    \path[draw, dotted] (0, 0) circle [radius=1.0];
+    \path[draw, dashed] (135:1.0) circle [radius=0.8];
 
-   \coordinate[] (inputn1)  at ($(P.south west)!0.8!(P.north west) + (-\cdist, 0)$);
-   \coordinate[] (inputn2)  at ($(P.south west)!0.5!(P.north west) + (-\cdist, 0)$);
-   \coordinate[] (inputu)   at ($(P.south west)!0.2!(P.north west) + (-\cdist, 0)$);
+    % Center of Circle
+    \node[below] at (0, 0){$1$};
 
-   \coordinate[] (outputx) at ($(P.south east)!0.5!(P.north east) + ( \cdist, 0)$);
-   \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( \cdist, 0)$);
+    \draw[<->, dashed] (0, 0)   node[branch]{} -- coordinate[midway](r1) ++(45:1.0);
+    \draw[<->, dashed] (135:1.0)node[branch]{} -- coordinate[midway](r2) ++(90:0.8);
 
-   \node[block, right=1.5 of inputn1] (W1){$W_1$};
-   \node[block, right=1.5 of inputn2] (W2){$W_2$};
-   \node[addb={+}{}{}{}{-}, right=of W1] (sub) {};
-   \node[addb, right=2 of W2] (add) {};
+    \node[] (l1) at (2, 1.5) {$|w_1 H_1|$};
+    \draw[->, dashed, out=-90, in=0] (l1.south) to (r1);
 
-   \node[block, below=of P] (H1) {$H_1$};
+    \node[] (l2) at (-2.5, 1.5) {$|w_2 H_2|$};
+    \draw[->, dashed, out=0, in=-180] (l2.east) to (r2);
 
-   \draw[->] (inputn1)node[above right]{$n_1$} -- (W1.west);
-   \draw[->] (inputn2)node[above right]{$n_2$} -- (W2.west);
-   \draw[->] (W1) -- (sub.west);
-   \draw[->] (W2) -| (sub.south);
-   \draw[->] (W2-|sub.south) node[branch]{} -- (add.west);
-   \draw[->] (sub.east) -- ++(0.5, 0) |- ($(outputv) + (-0.3, 0)$) |- (H1.east);
-   \draw[->] (H1.west) -| ($(inputu) + (0.3, 0)$) -| (add.south);
-   \draw[->] (add.east) -- (outputx) node[above left]{$\hat{x}$};
-\end{tikzpicture}
+    \draw[<->, dashed] (0, 0) -- coordinate[near end](r3) ++(200:1.8);
+    \node[] (l3) at (-2.5, -1.5) {$|w_1 H_1| + |w_2 H_2|$};
+    \draw[->, dashed, out=90, in=-90] (l3.north) to (r3);
+  \end{scope}
+
+  % Real and Imaginary Axis
+  \draw[->] (-0.5, 0) -- (7.0, 0) node[below left]{Re};
+  \draw[->] (0, -1.7) -- (0, 1.7) node[below left]{Im};
+
+  \draw[dashed] (0, 0) -- (tangent cs:node=c,point={(0, 0)},solution=2);
+  \draw[dashed] (1, 0) arc (0:28:1) node[midway, right]{$\Delta \phi$};
+\end{tikzpicture}
 
-
-

h_infinity_optimal_comp_filters.png +

+

uncertainty_set_super_sensor.png

-

Figure 3: H-Infinity - Optimal Complementary Filters (png, pdf, tex).

+

Figure 4: Uncertainty region of the super sensor dynamics in the complex plane (solid circle), of the sensor 1 (dotted circle) and of the sensor 2 (dashed circle) (png, pdf).

-
-

5 Fusion of two noisy sensors

+ +
+

5 Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters

-
\begin{tikzpicture}
-  \node[branch] (x) at (0, 0);
-  \node[addb, above right=1.5 and 1 of x](add1){};
-  \node[addb, below right=1.5 and 1 of x](add2){};
-  \node[block, above=0.5 of add1](W1){$W_1$};
-  \node[block, above=0.5 of add2](W2){$W_2$};
-  \node[block, right=1 of add1](H1){$H_1$};
-  \node[block, right=1 of add2](H2){$H_2$};
-  \node[addb, right=4 of x](add){};
+
\begin{tikzpicture}
+   \node[block={4.0cm}{2.5cm}, fill=black!20!white, dashed] (P) {};
+   \node[above] at (P.north) {$P(s)$};
 
-  \draw[] ($(x)+(-1, 0)$) node[above right]{$x$} -- (x);
-  \draw[->] (x) |- (add1.west);
-  \draw[->] (x) |- (add2.west);
-  \draw[->] (W1.south) -- (add1.north);
-  \draw[->] (W2.south) -- (add2.north);
-  \draw[<-] (W1.north) -- ++(0, 0.8)node[below right]{$n_1$};
-  \draw[<-] (W2.north) -- ++(0, 0.8)node[below right]{$n_2$};
-  \draw[->] (add1.east) -- (H1.west);
-  \draw[->] (add2.east) -- (H2.west);
-  \draw[->] (H1) -| (add.north);
-  \draw[->] (H2) -| (add.south);
-  \draw[->] (add.east) -- ++(1, 0) node[above left]{$\hat{x}$};
-\end{tikzpicture}
+   \coordinate[] (inputw)  at ($(P.south west)!0.75!(P.north west) + (-0.7, 0)$);
+   \coordinate[] (inputu)  at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$);
+
+   \coordinate[] (output1) at ($(P.south east)!0.75!(P.north east) + ( 0.7, 0)$);
+   \coordinate[] (output2) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$);
+   \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( 0.7, 0)$);
+
+   \node[block, left=1.4 of output1] (W1){$W_1(s)$};
+   \node[block, left=1.4 of output2] (W2){$W_2(s)$};
+   \node[addb={+}{}{}{}{-}, left=of W1] (sub) {};
+
+   \node[block, below=0.3 of P] (H2) {$H_2(s)$};
+
+   \draw[->] (inputw) node[above right]{$w$} -- (sub.west);
+   \draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (W2.west);
+   \draw[->] (inputu-|sub) node[branch]{} -- (sub.south);
+   \draw[->] (sub.east) -- (W1.west);
+   \draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east);
+   \draw[->] (W1.east) -- (output1)node[above left]{$z_1$};
+   \draw[->] (W2.east) -- (output2)node[above left]{$z_2$};
+\end{tikzpicture}
 
-
-

fusion_two_noisy_sensors.png -

-

Figure 4: Fusion of two noisy sensors (png, pdf, tex).

-
-
-
-
-

6 Fusion of two noisy signals

-
-
-
\begin{tikzpicture}
-  \node[addb] (add) at (0, 0){};
-  \node[block, above left=0.5 and 0.8 of add] (H1) {$H_1$};
-  \node[block, below left=0.5 and 0.8 of add] (H2) {$H_2$};
-
-  \draw[->] ($(H1.west)+(-1.5, 0)$)node[above right]{$x + n_1$} -- (H1.west);
-  \draw[->] ($(H2.west)+(-1.5, 0)$)node[above right]{$x + n_2$} -- (H2.west);
-  \draw[->] (H1) -| (add.north);
-  \draw[->] (H2) -| (add.south);
-  \draw[->] (add.east) -- ++(1, 0) node[above left]{$\hat{x}$};
-\end{tikzpicture}
-
-
- - -
-

fusion_two_signals.png -

-

Figure 5: Fusion of two noisy sensors (png, pdf, tex).

-
-
-
- -
-

7 Fusion of two noisy sensors with Dynamics

-
-
-
\begin{tikzpicture}
-  \node[branch] (x) at (0, 0);
-  \node[block, above right=1.5 and 0.5 of x](G1){$G_1$};
-  \node[block, below right=1.5 and 0.5 of x](G2){$G_2$};
-  \node[addb, right=1 of G1](add1){};
-  \node[addb, right=1 of G2](add2){};
-  \node[block, above=0.5 of add1](W1){$W_1$};
-  \node[block, above=0.5 of add2](W2){$W_2$};
-  \node[block, right=1 of add1](H1){$H_1$};
-  \node[block, right=1 of add2](H2){$H_2$};
-  \node[addb, right=6 of x](add){};
-
-  \draw[] ($(x)+(-1, 0)$) node[above right]{$x$} -- (x);
-  \draw[->] (x) |- (G1.west);
-  \draw[->] (x) |- (G2.west);
-  \draw[->] (G1.east) -- (add1.west);
-  \draw[->] (G2.east) -- (add2.west);
-  \draw[->] (W1.south) -- (add1.north);
-  \draw[->] (W2.south) -- (add2.north);
-  \draw[<-] (W1.north) -- ++(0, 0.8)node[below right]{$n_1$};
-  \draw[<-] (W2.north) -- ++(0, 0.8)node[below right]{$n_2$};
-  \draw[->] (add1.east) -- (H1.west);
-  \draw[->] (add2.east) -- (H2.west);
-  \draw[->] (H1) -| (add.north);
-  \draw[->] (H2) -| (add.south);
-  \draw[->] (add.east) -- ++(1, 0) node[above left]{$\hat{x}$};
-\end{tikzpicture}
-
-
- - -
-

fusion_two_noisy_sensors_with_dyn.png -

-

Figure 6: Fusion of two noisy sensorswithdyn (png, pdf, tex).

-
-
-
-
-

8 Fusion of two noisy sensors with Dynamics - Bis

-
-
-
\begin{tikzpicture}
-  \node[branch] (x) at (0, 0);
-  \node[block, above right=0.5 and 0.5 of x](G1){$G_1$};
-  \node[block, below right=0.5 and 0.5 of x](G2){$G_2$};
-  \node[addb, right=1 of G1](add1){};
-  \node[addb, right=1 of G2](add2){};
-  \node[block, right=1 of add1](H1){$H_1$};
-  \node[block, right=1 of add2](H2){$H_2$};
-  \node[addb, right=6 of x](add){};
-
-  \draw[] ($(x)+(-1, 0)$) node[above right]{$x$} -- (x);
-  \draw[->] (x) |- (G1.west);
-  \draw[->] (x) |- (G2.west);
-  \draw[->] (G1.east) -- (add1.west);
-  \draw[->] (G2.east) -- (add2.west);
-  \draw[<-] (add1.north) -- ++(0, 0.8)node[below right]{$n_1$};
-  \draw[<-] (add2.north) -- ++(0, 0.8)node[below right]{$n_2$};
-  \draw[->] (add1.east) -- (H1.west);
-  \draw[->] (add2.east) -- (H2.west);
-  \draw[->] (H1) -| (add.north);
-  \draw[->] (H2) -| (add.south);
-  \draw[->] (add.east) -- ++(1, 0) node[above left]{$\hat{x}$};
-\end{tikzpicture}
-
-
- - -
-

fusion_two_noisy_sensors_with_dyn_bis.png -

-

Figure 7: Fusion of two noisy sensorswithdynbis (png, pdf, tex).

-
-
-
- -
-

9 Fusion of two sensors with mismatch dynamics

-
-
-
\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[branch] (x) at (0, 0);
-  \node[addb, above right=1 and 3.5 of x](add1){};
-  \node[addb, below right=1 and 3.5 of x](add2){};
-  \node[block, above left= of add1](delta1){$\Delta_1$};
-  \node[block, above left= of add2](delta2){$\Delta_2$};
-  \node[block, left= of delta1](W1){$W_1$};
-  \node[block, left= of delta2](W2){$W_2$};
-  \node[block, right= of add1](H1){$H_1$};
-  \node[block, right= of add2](H2){$H_2$};
-  \node[addb, right=5.5 of x](add){};
-
-  \draw[] ($(x)+(-1, 0)$) node[above right]{$x$} -- (x);
-  \draw[->] (x) |- (add1.west);
-  \draw[->] (x) |- (add2.west);
-  \draw[->] ($(add1-|W1.west)+(-0.5, 0)$)node[branch]{} |- (W1.west);
-  \draw[->] ($(add2-|W2.west)+(-0.5, 0)$)node[branch]{} |- (W2.west);
-  \draw[->] (W1.east) -- (delta1.west);
-  \draw[->] (W2.east) -- (delta2.west);
-  \draw[->] (delta1.east) -| (add1.north);
-  \draw[->] (delta2.east) -| (add2.north);
-  \draw[->] (add1.east) -- (H1.west);
-  \draw[->] (add2.east) -- (H2.west);
-  \draw[->] (H1.east) -| (add.north);
-  \draw[->] (H2.east) -| (add.south);
-  \draw[->] (add.east) -- ++(1, 0) node[above left]{$\hat{x}$};
-\end{tikzpicture}
-
-
- - -
-

fusion_gain_mismatch.png -

-

Figure 8: Fusion of two noisy sensorswithdyn (png, pdf, tex).

-
-
-
- -
-

10 Uncertainty to Phase and Gain variation

-
-
-
\begin{tikzpicture}
-  \draw[->] (-0.5, 0)   -- (7, 0) node[below left]{Real};
-  \draw[->] (0, -1) -- (0, 1) node[left]{Im};
-  \node[branch] (1) at (5, 0){};
-  \node[below] at (1){$1$};
-  \node[circle, draw] (c) at (1)[minimum size=2cm]{};
-  \draw[dashed] (0, 0) -- (tangent cs:node=c,point={(0, 0)},solution=2) -- node[midway, right]{$|H_i W_i|$} (1);
-  \draw[dashed] (2, 0) arc (0:23:1) node[midway, right]{$\Delta \phi$};
-  % \draw[dashed] (0, 0) -- (tangent cs:node=c,point={(0, 0)},solution=1) coordinate(cbot);
-\end{tikzpicture}
-
-
- - -
-

uncertainty_gain_phase_variation.png -

-

Figure 9: Uncertainty to Phase and Gain variation (png, pdf, tex).

-
-
-
- -
-

11 Generate Complementary Filters using Feedback Control Architecture

-
-
-
\begin{tikzpicture}
-  \node[addb={+}{}{}{}{-}] (addfb) at (0, 0){};
-  \node[block, right=1 of addfb] (L){$L$};
-  \node[addb={+}{}{}{}{}, right=1 of L] (adddy){};
-
-  \draw[<-] (addfb.west) -- ++(-1, 0) node[above right]{$y_1$};
-  \draw[->] (addfb.east) -- (L.west);
-  \draw[->] (L.east) -- (adddy.west);
-  \draw[->] (adddy.east) -- ++(1, 0) node[above left]{$y_s$};
-  \draw[->] ($(adddy.east) + (0.5, 0)$) node[branch]{} -- ++(0, -1) -| (addfb.south);
-  \draw[<-] (adddy.north) -- ++(0, 1) node[below right]{$y_2$};
-\end{tikzpicture}
-
-
- - -
-

complementary_filters_feedback_architecture.png -

-

Figure 10: Generation of Complementary Filters using the feedback architecture (png, pdf, tex).

-
-
-
- -
-

12 H-Infinity Synthesis for Robust Sensor Fusion

-
-
-
\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] (W1){$w_1$};
-   \node[block, left=2*\cdist of outputh] (W2){$w_2$};
-   \node[addb={+}{}{}{}{-}, left=of W2] (sub) {};
-
-   \node[block, below=\cdist of P] (H1) {$H_1$};
-
-   \draw[->] (inputw) node[above right]{$w$} -- (sub.west);
-   \draw[->] (H1.west) -| ($(inputu)+(0.5*\cdist, 0)$) -- (W1.west);
-   \draw[->] (inputu-|sub) node[branch]{} -- (sub.south);
-   \draw[->] (sub.east) -- (W2.west);
-   \draw[->] ($(inputw)+(2*\cdist, 0)$) node[branch]{} |- ($(outputv)+(-0.5*\cdist, 0)$) |- (H1.east);
-   \draw[->] (W2.east) -- (outputh)node[above left]{$z_2$};
-   \draw[->] (W1.east) -- (outputl)node[above left]{$z_1$};
-\end{tikzpicture}
-
-
- - -
+

h_infinity_robust_fusion.png

-

Figure 11: H-Infinity Synthesis for Robust Sensor Fusion (png, pdf, tex).

+

Figure 5: Architecture used for \(\mathcal{H}_\infty\) synthesis of complementary filters (png, pdf).

-
-

13 Sensor fusion architecture with sensor dynamics uncertainty and noise

-
+ +
+

6 Sensor fusion architecture with sensor dynamics uncertainty and noise

+
-
\tikzset{block/.default={0.8cm}{0.6cm}}
-\tikzset{addb/.append style={scale=0.7}}
-\tikzset{node distance=0.6}
-\def\cdist{0.7}
+
\begin{tikzpicture}
+  \node[branch] (x) at (0, 0);
+  \node[addb, above right=1.2 and 3.7 of x](add1){};
+  \node[addb, below right=1.2 and 3.7 of x](add2){};
+  \node[block, above left=0.2 and 0.1 of add1](delta1){$\Delta_1(s)$};
+  \node[block, above left=0.2 and 0.1 of add2](delta2){$\Delta_2(s)$};
+  \node[block, left=0.5 of delta1](W1){$w_1(s)$};
+  \node[block, left=0.5 of delta2](W2){$w_2(s)$};
+  \node[addb, right=0.5 of add1](addn1){};
+  \node[addb, right=0.5 of add2](addn2){};
+  \node[block, above=0.5 of addn1](N1) {$N_1(s)$};
+  \node[block, above=0.5 of addn2](N2) {$N_2(s)$};
+  \node[block, right=1.2 of addn1](H1){$H_1(s)$};
+  \node[block, right=1.2 of addn2](H2){$H_2(s)$};
+  \node[addb, right=7.5 of x](add){};
 
-\definecolor{T}{rgb}{0.230, 0.299, 0.754}%
-\definecolor{S}{rgb}{0.706, 0.016, 0.150}%
-\begin{tikzpicture}
-  \node[branch] (x) at (0, 0);
-  \node[addb, above right=1.2 and 3.7 of x](add1){};
-  \node[addb, below right=1.2 and 3.7 of x](add2){};
-  \node[block, above left=0.2 and 0.1 of add1](delta1){$\Delta_1(s)$};
-  \node[block, above left=0.2 and 0.1 of add2](delta2){$\Delta_2(s)$};
-  \node[block, left=0.5 of delta1](W1){$w_1(s)$};
-  \node[block, left=0.5 of delta2](W2){$w_2(s)$};
-  \node[addb, right=0.5 of add1](addn1){};
-  \node[addb, right=0.5 of add2](addn2){};
-  \node[block, above=0.5 of addn1](N1) {$N_1(s)$};
-  \node[block, above=0.5 of addn2](N2) {$N_2(s)$};
-  \node[block, right=1.2 of addn1](H1){$H_1(s)$};
-  \node[block, right=1.2 of addn2](H2){$H_2(s)$};
-  \node[addb, right=7.5 of x](add){};
+  \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
+  \draw[->] (x.center) |- (add1.west);
+  \draw[->] (x.center) |- (add2.west);
+  \draw[->] ($(add1-|W1.west)+(-0.5, 0)$)node[branch](S1){} |- (W1.west);
+  \draw[->] ($(add2-|W2.west)+(-0.5, 0)$)node[branch](S2){} |- (W2.west);
+  \draw[->] (W1.east) -- (delta1.west);
+  \draw[->] (W2.east) -- (delta2.west);
+  \draw[->] (delta1.east) -| (add1.north);
+  \draw[->] (delta2.east) -| (add2.north);
+  \draw[->] (add1.east) -- (addn1.west);
+  \draw[->] (add2.east) -- (addn2.west);
+  \draw[->] (addn1.east) -- (H1.west)node[above left]{$\hat{x}_1$};
+  \draw[->] (addn2.east) -- (H2.west)node[above left]{$\hat{x}_2$};
+  \draw[->] ($(N1.north)+(0,0.7)$) node[below right](n1){$\tilde{n}_1$} -- (N1.north);
+  \draw[->] ($(N2.north)+(0,0.7)$) node[below right](n2){$\tilde{n}_2$} -- (N2.north);
+  \draw[->] (N1.south) -- (addn1.north)node[above right]{$n_1$};
+  \draw[->] (N2.south) -- (addn2.north)node[above right]{$n_2$};
+  \draw[->] (H1.east) -| (add.north);
+  \draw[->] (H2.east) -| (add.south);
+  \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$};
 
-  \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
-  \draw[->] (x.center) |- (add1.west);
-  \draw[->] (x.center) |- (add2.west);
-  \draw[->] ($(add1-|W1.west)+(-0.5, 0)$)node[branch](S1){} |- (W1.west);
-  \draw[->] ($(add2-|W2.west)+(-0.5, 0)$)node[branch](S2){} |- (W2.west);
-  \draw[->] (W1.east) -- (delta1.west);
-  \draw[->] (W2.east) -- (delta2.west);
-  \draw[->] (delta1.east) -| (add1.north);
-  \draw[->] (delta2.east) -| (add2.north);
-  \draw[->] (add1.east) -- (addn1.west);
-  \draw[->] (add2.east) -- (addn2.west);
-  \draw[->] (addn1.east) -- (H1.west)node[above left]{$\hat{x}_1$};
-  \draw[->] (addn2.east) -- (H2.west)node[above left]{$\hat{x}_2$};
-  \draw[->] ($(N1.north)+(0,0.7)$) node[below right](n1){$\tilde{n}_1$} -- (N1.north);
-  \draw[->] ($(N2.north)+(0,0.7)$) node[below right](n2){$\tilde{n}_2$} -- (N2.north);
-  \draw[->] (N1.south) -- (addn1.north)node[above right]{$n_1$};
-  \draw[->] (N2.south) -- (addn2.north)node[above right]{$n_2$};
-  \draw[->] (H1.east) -| (add.north);
-  \draw[->] (H2.east) -| (add.south);
-  \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$};
-
-  \begin{scope}[on background layer]
-    \node[fit={($(add2.south-|x)+(-0.2, -0.4)$) ($(n1.north-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
-    \node[below left] at (supersensor.north east) {Super Sensor};
-    \node[block, fit={($(S1|-add1.south)+(-0.2, -0.2)$) ($(n1.north-|N1.east)+(0.2, 0.1)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {};
-    \node[below right] at (sensor1.north west) {Sensor 1};
-    \node[block, fit={($(S2|-add2.south)+(-0.2, -0.2)$) ($(n2.north-|N2.east)+(0.2, 0.1)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {};
-    \node[below right] at (sensor2.north west) {Sensor 2};
-  \end{scope}
-\end{tikzpicture}
+  \begin{scope}[on background layer]
+    \node[fit={($(add2.south-|x)+(-0.2, -0.4)$) ($(n1.north-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
+    \node[below left] at (supersensor.north east) {Super Sensor};
+    \node[block, fit={($(S1|-add1.south)+(-0.2, -0.2)$) ($(n1.north-|N1.east)+(0.2, 0.1)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {};
+    \node[below right] at (sensor1.north west) {Sensor 1};
+    \node[block, fit={($(S2|-add2.south)+(-0.2, -0.2)$) ($(n2.north-|N2.east)+(0.2, 0.1)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {};
+    \node[below right] at (sensor2.north west) {Sensor 2};
+  \end{scope}
+\end{tikzpicture}
 
-
-

sensor_fusion_full.png +

+

sensor_fusion_arch_full.png

-

Figure 12: Sensor fusion architecture with sensor dynamics uncertainty (png, pdf, tex).

+

Figure 6: Sensor fusion architecture with sensor dynamics uncertainty (png, pdf).

-
-

14 Equivalent super sensor

-
+
+

7 Mixed H2/H-Infinity Synthesis

+
-
\tikzset{block/.default={0.8cm}{0.6cm}}
-\tikzset{addb/.append style={scale=0.7}}
-\tikzset{node distance=0.6}
-\def\cdist{0.7}
+
\begin{tikzpicture}
+   \node[block={5.0cm}{5.0cm}, fill=black!20!white, dashed] (P) {};
+   \node[above] at (P.north) {$P(s)$};
 
-\definecolor{T}{rgb}{0.230, 0.299, 0.754}%
-\definecolor{S}{rgb}{0.706, 0.016, 0.150}%
-\begin{tikzpicture}
-  \node[branch] (x) at (0, 0);
-  \node[block, above right=0.6 and 0.4 of x](Wss){$w_{ss}(s)$};
-  \node[block, right=0.5 of Wss](delta){$\Delta(s)$};
-  \node[addb](add) at ($(delta.east|-x) + (0.5, 0)$){};
-  \node[addb, right=0.5 of add](addn){};
-  \node[block](Nss) at (delta-|addn) {$N_{ss}(s)$};
+   \coordinate[] (inputw)  at ($(P.south west)!0.85!(P.north west) + (-0.7, 0)$);
+   \coordinate[] (inputu)  at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$);
 
-  \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (add.west);
-  \draw[->] (x.center) |- (Wss);
-  \draw[->] (Wss.east) -- (delta.west);
-  \draw[->] (delta.east) -| (add.north);
-  \draw[->] (add.east) -- (addn.west);
-  \draw[->] ($(Nss.north)+(0,0.7)$) node[below right](nss){$\hat{n}$} -- (Nss.north);
-  \draw[->] (Nss.south) -- (addn.north) node[above right]{$n$};
-  \draw[->] (addn.east) -- ++(1.1, 0) node[above left]{$\hat{x}$};
+   \coordinate[] (output1) at ($(P.south east)!0.85!(P.north east) + ( 0.7, 0)$);
+   \coordinate[] (output2) at ($(P.south east)!0.7!(P.north east)  + ( 0.7, 0)$);
+   \coordinate[] (output3) at ($(P.south east)!0.5!(P.north east)   + ( 0.7, 0)$);
+   \coordinate[] (output4) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$);
+   \coordinate[] (outputv) at ($(P.south east)!0.15!(P.north east) + ( 0.7, 0)$);
 
-  \begin{scope}[on background layer]
-    \node[fit={($(add.south-|x)+(-0.2, -0.2)$) ($(Nss.east|-nss.north)+(0.2, 0.2)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
-    \node[below right] at (supersensor.north west) {Super Sensor};
-  \end{scope}
-\end{tikzpicture}
+   \node[block, left=1.4 of output1] (W1){$W_1(s)$};
+   \node[block, left=1.4 of output2] (W2){$W_2(s)$};
+   \node[addb={+}{}{}{}{-}, left=1.6 of W1] (sub1) {};
+
+   \node[block, left=1.4 of output3] (N1){$N_1(s)$};
+   \node[block, left=1.4 of output4] (N2){$N_2(s)$};
+   \node[addb={+}{}{}{}{-}, left=1 of N1] (sub2) {};
+
+   \node[block, below=0.3 of P] (H2) {$H_2(s)$};
+
+   \draw[->] (inputw) node[above right]{$w$} -- (sub1.west);
+   \draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (N2.west);
+   \draw[->] (inputu-|sub1) node[branch]{} -- (sub1.south);
+   \draw[->] (inputu-|sub2) node[branch]{} -- (sub2.south);
+   \draw[->] (sub1|-W2) node[branch]{} -- (W2.west);
+   \draw[->] (sub1.east) -- (W1.west);
+   \draw[->] (sub2.east) -- (N1.west);
+   \draw[->] ($(sub1.west)+(-0.6, 0)$) node[branch](w_branch){} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east);
+   \draw[->] (w_branch|-sub2) node[branch]{} -- (sub2.west);
+   \draw[->] (W1.east) -- (output1)node[above left]{$z_1$};
+   \draw[->] (W2.east) -- (output2)node[above left]{$z_2$};
+   \draw[->] (N1.east) -- (output3)node[above left]{$z_3$};
+   \draw[->] (N2.east) -- (output4)node[above left]{$z_4$};
+\end{tikzpicture}
 
-
-

sensor_fusion_equivalent.png +

+

mixed_h2_hinf_synthesis.png

-

Figure 13: Sensor fusion architecture with sensor dynamics uncertainty (png, pdf, tex).

-
-
-
- -
-

15 One sensor with noise

-
-
-
\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] (G) at (0, 0) {$G(s)$};
-  \node[addb, right=0.8 of G] (add) {};
-
-  \draw[->] ($(G.west) + (-0.8, 0)$)node[above right]{$x$} -- (G.west);
-  \draw[->] (G.east) -- (add.west);
-  \draw[->] ($(add.north) + (0, 0.8)$)node[below right](n){$n$} -- (add.north);
-  \draw[->] (add.east) -- ++(0.8, 0) node[above left]{$\hat{x}$};
-
-  \begin{scope}[on background layer]
-    \node[fit={($(G.south west)+(-0.3, -0.1)$) ($(n.north east)+(0.0, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor) {};
-    \node[below right] at (sensor.north west) {Sensor};
-  \end{scope}
-\end{tikzpicture}
-
-
- - -
-

one_sensor_noise.png -

-

Figure 14: One sensor with Noise (png, pdf, tex).

-
-
-
- -
-

16 One sensor with normalized noise

-
-
-
\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] (G) at (0, 0) {$G(s)$};
-  \node[addb, right=0.8 of G] (add) {};
-  \node[block, above=0.6 of add] (N) {$N(s)$};
-
-  \draw[->] ($(G.west) + (-0.8, 0)$)node[above right]{$x$} -- (G.west);
-  \draw[->] (G.east) -- (add.west);
-  \draw[->] ($(N.north) + (0, 0.8)$)node[below right](ntilde){$\tilde{n}$} -- (N.north);
-  \draw[->] (N.south) -- (add.north)node[above right](n){$n$};
-  \draw[->] (add.east) -- ++(1.0, 0) node[above left]{$\hat{x}$};
-
-  \begin{scope}[on background layer]
-    \node[fit={($(G.south west)+(-0.3, -0.2)$) ($(ntilde.north-|N.east)+(0.2, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor) {};
-    \node[below right] at (sensor.north west) {Sensor};
-  \end{scope}
-\end{tikzpicture}
-
-
- - -
-

one_sensor_normalized_noise.png -

-

Figure 15: One sensor with normalized noise (png, pdf, tex).

-
-
-
- -
-

17 One sensor with dynamic 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}
-  \node[branch] (x) at (0, 0) {};
-  \node[block, above right=0.4 and 0.4 of x](W){$w(s)$};
-  \node[block, right=0.4 of W](delta){$\Delta(s)$};
-  \node[addb](add) at ($(delta.east|-x) + (0.4, 0)$) {};
-  \node[block, right=0.5 of add](G){$G(s)$};
-
-  \draw[->] ($(x.west) + (-0.8, 0)$)node[above right]{$x$} -- (add.west);
-  \draw[->] (x.center) |- (W.west);
-  \draw[->] (W.east) -- (delta.west);
-  \draw[->] (delta.east) -| (add.north);
-  \draw[->] (add.east) -- (G.west);
-  \draw[->] (G.east) -- ++(0.8, 0) node[above left]{$\hat{x}$};
-
-  \begin{scope}[on background layer]
-    \node[fit={($(x.west|-G.south)+(-0.2, -0.2)$) ($(delta.north-|G.east)+(0.2, 0.2)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor) {};
-    \node[below left] at (sensor.north east) {Sensor};
-  \end{scope}
-\end{tikzpicture}
-
-
- - -
-

one_sensor_dyn_uncertainty.png -

-

Figure 16: One sensor with dynamic uncertainty (png, pdf, tex).

-
-
-
- -
-

18 One sensor with dynamic uncertainty and noise

-
-
-
\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[branch] (x) at (0, 0) {};
-  \node[block, above right=0.4 and 0.4 of x](W){$w(s)$};
-  \node[block, right=0.4 of W](delta){$\Delta(s)$};
-  \node[addb](add) at ($(delta.east|-x) + (0.4, 0)$) {};
-  \node[block, right=0.5 of add](G){$G(s)$};
-  \node[addb, right=0.5 of G] (addn) {};
-
-  \draw[->] ($(x.west) + (-0.8, 0)$)node[above right]{$x$} -- (add.west);
-  \draw[->] (x.center) |- (W.west);
-  \draw[->] (W.east) -- (delta.west);
-  \draw[->] (delta.east) -| (add.north);
-  \draw[->] (add.east) -- (G.west);
-  \draw[->] (G.east) -- (addn.west);
-  \draw[->] ($(addn.north)+(0, 0.8)$) node[below right]{$n$} -- (addn.north);
-  \draw[->] (addn.east) -- ++(0.8, 0) node[above left]{$\hat{x}$};
-
-  \begin{scope}[on background layer]
-    \node[fit={($(x.west|-G.south)+(-0.2, -0.2)$) ($(delta.north-|addn.east)+(0.2, 0.2)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor) {};
-    \node[above right] at (sensor.south west) {Sensor};
-  \end{scope}
-\end{tikzpicture}
-
-
- - -
-

one_sensor_dyn_uncertainty_noise.png -

-

Figure 17: One sensor with dynamic uncertainty (png, pdf, tex).

-
-
-
- -
-

19 Huddle Test

-
-
-
\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[branch] (x) at (0, 0);
-  \node[block, above right=0.5 and 0.5 of x](G1){$G_1(s)$};
-  \node[block, below right=0.5 and 0.5 of x](G2){$G_2(s)$};
-  \node[addb, right=0.8 of G1](add1){};
-  \node[addb, right=0.8 of G2](add2){};
-
-  \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
-  \draw[->] (x.center) |- (G1.west);
-  \draw[->] (x.center) |- (G2.west);
-  \draw[->] (G1.east) -- (add1.west);
-  \draw[->] (G2.east) -- (add2.west);
-  \draw[<-] (add1.north) -- ++(0, 0.8)node[below right](n1){$n_1$};
-  \draw[<-] (add2.north) -- ++(0, 0.8)node[below right](n2){$n_2$};
-  \draw[->] (add1.east) -- ++(1, 0)node[above left]{$\hat{x}_1$};
-  \draw[->] (add2.east) -- ++(1, 0)node[above left]{$\hat{x}_2$};
-
-  \begin{scope}[on background layer]
-    % \node[fit={($(G2.south-|x)+(-0.2, -0.3)$) ($(n1.north east-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
-    % \node[below left] at (supersensor.north east) {Super Sensor};
-
-    \node[fit={($(G1.south west)+(-0.3, -0.1)$) ($(n1.north east)+(0.0, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {};
-    \node[below right] at (sensor1.north west) {Sensor 1};
-    \node[fit={($(G2.south west)+(-0.3, -0.1)$) ($(n2.north east)+(0.0, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {};
-    \node[below right] at (sensor2.north west) {Sensor 2};
-  \end{scope}
-\end{tikzpicture}
-
-
- - -
-

huddle_test.png -

-

Figure 18: Huddle Test (png, pdf, tex).

+

Figure 7: Mixed H2/H-Infinity Synthesis (png, pdf).

Author: Thomas Dehaeze

-

Created: 2019-08-29 jeu. 11:21

-

Validate

+

Created: 2020-08-17 lun. 17:49

diff --git a/tikz/index.org b/tikz/index.org index 2847e2a..f9c9bad 100644 --- a/tikz/index.org +++ b/tikz/index.org @@ -9,270 +9,48 @@ #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: -#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{/home/thomas/Cloud/These/Papers/dehaeze19_desig_compl_filte/tikz/}{config.tex}") + +#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{/home/thomas/Cloud/thesis/papers/dehaeze20_optim_robus_compl_filte/tikz/}{config.tex}") #+PROPERTY: header-args:latex+ :imagemagick t :fit yes #+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 #+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no +#+PROPERTY: header-args:latex+ :results file raw replace +#+PROPERTY: header-args:latex+ :buffer no +#+PROPERTY: header-args:latex+ :noweb yes #+PROPERTY: header-args:latex+ :eval no-export #+PROPERTY: header-args:latex+ :exports both #+PROPERTY: header-args:latex+ :mkdirp yes -#+PROPERTY: header-args:latex+ :noweb yes #+PROPERTY: header-args:latex+ :output-dir figs #+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") :END: Configuration file is accessible [[file:config.org][here]]. -* Change some default -#+NAME: tikz_default -#+begin_src latex :eval no - \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}% -#+end_src - -* H-Infinity - Complementary filters - Generalized plant -#+begin_src latex :file sf_hinf_filters_plant_b.pdf :tangle figs/sf_hinf_filters_plant_b.tex - <> - \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} -#+end_src - -#+name: fig:sf_hinf_filters_plant_b -#+caption: H-Infinity - Complementary filters - Generalized plant ([[./figs/sf_hinf_filters_plant_b.png][png]], [[./figs/sf_hinf_filters_plant_b.pdf][pdf]], [[./figs/sf_hinf_filters_plant_b.tex][tex]]). -#+RESULTS: -[[file:figs/sf_hinf_filters_plant_b.png]] - -* H-Infinity - Complementary filters -#+begin_src latex :file sf_hinf_filters_b.pdf :tangle figs/sf_hinf_filters_b.tex - <> - \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} -#+end_src - -#+name: fig:sf_hinf_filters_b -#+caption: H-Infinity - Complementary filters ([[./figs/sf_hinf_filters_b.png][png]], [[./figs/sf_hinf_filters_b.pdf][pdf]], [[./figs/sf_hinf_filters_b.tex][tex]]). -#+RESULTS: -[[file:figs/sf_hinf_filters_b.png]] - -* Generate Complementary Filters using Feedback Control Architecture -#+begin_src latex :file complementary_filters_feedback_architecture.pdf :tangle figs/complementary_filters_feedback_architecture.tex :exports both - \begin{tikzpicture} - \node[addb={+}{}{}{}{-}] (addfb) at (0, 0){}; - \node[block, right=1 of addfb] (L){$L$}; - \node[addb={+}{}{}{}{}, right=1 of L] (adddy){}; - - \draw[<-] (addfb.west) -- ++(-1, 0) node[above right]{$y_1$}; - \draw[->] (addfb.east) -- (L.west); - \draw[->] (L.east) -- (adddy.west); - \draw[->] (adddy.east) -- ++(1, 0) node[above left]{$y_s$}; - \draw[->] ($(adddy.east) + (0.5, 0)$) node[branch]{} -- ++(0, -1) -| (addfb.south); - \draw[<-] (adddy.north) -- ++(0, 1) node[below right]{$y_2$}; - \end{tikzpicture} -#+end_src - -#+name: fig:complementary_filters_feedback_architecture -#+caption: Generation of Complementary Filters using the feedback architecture ([[./figs/complementary_filters_feedback_architecture.png][png]], [[./figs/complementary_filters_feedback_architecture.pdf][pdf]], [[./figs/complementary_filters_feedback_architecture.tex][tex]]). -#+RESULTS: -[[file:figs/complementary_filters_feedback_architecture.png]] - -* H-Infinity Synthesis for Robust Sensor Fusion -#+begin_src latex :file h_infinity_robust_fusion_old.pdf :tangle figs/h_infinity_robust_fusion_old.tex :exports both - <> - \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] (W1){$w_1$}; - \node[block, left=2*\cdist of outputh] (W2){$w_2$}; - \node[addb={+}{}{}{}{-}, left=of W2] (sub) {}; - - \node[block, below=\cdist of P] (H1) {$H_1$}; - - \draw[->] (inputw) node[above right]{$w$} -- (sub.west); - \draw[->] (H1.west) -| ($(inputu)+(0.5*\cdist, 0)$) -- (W1.west); - \draw[->] (inputu-|sub) node[branch]{} -- (sub.south); - \draw[->] (sub.east) -- (W2.west); - \draw[->] ($(inputw)+(2*\cdist, 0)$) node[branch]{} |- ($(outputv)+(-0.5*\cdist, 0)$) |- (H1.east); - \draw[->] (W2.east) -- (outputh)node[above left]{$z_2$}; - \draw[->] (W1.east) -- (outputl)node[above left]{$z_1$}; - \end{tikzpicture} -#+end_src - -#+name: fig:h_infinity_robust_fusion_old -#+caption: H-Infinity Synthesis for Robust Sensor Fusion ([[./figs/h_infinity_robust_fusion_old.png][png]], [[./figs/h_infinity_robust_fusion_old.pdf][pdf]], [[./figs/h_infinity_robust_fusion_old.tex][tex]]). -#+RESULTS: -[[file:figs/h_infinity_robust_fusion_old.png]] - -* Fusion of two noisy sensors -#+begin_src latex :file fusion_two_noisy_sensors.pdf :tangle figs/fusion_two_noisy_sensors.tex - <> - +* Sensor Fusion Architecture +#+begin_src latex :file sensor_fusion_noise_arch.pdf \begin{tikzpicture} \node[branch] (x) at (0, 0); - \node[block, above right=0.5 and 0.5 of x](G1){$G_1(s)$}; - \node[block, below right=0.5 and 0.5 of x](G2){$G_2(s)$}; - \node[addb, right=0.8 of G1](add1){}; - \node[addb, right=0.8 of G2](add2){}; - \node[block, right=0.8 of add1](H1){$H_1(s)$}; - \node[block, right=0.8 of add2](H2){$H_2(s)$}; - \node[addb, right=5 of x](add){}; - - \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center); - \draw[->] (x.center) |- (G1.west); - \draw[->] (x.center) |- (G2.west); - \draw[->] (G1.east) -- (add1.west); - \draw[->] (G2.east) -- (add2.west); - \draw[<-] (add1.north) -- ++(0, 0.8)node[below right](n1){$n_1$}; - \draw[<-] (add2.north) -- ++(0, 0.8)node[below right](n2){$n_2$}; - \draw[->] (add1.east) -- (H1.west); - \draw[->] (add2.east) -- (H2.west); - \draw[->] (H1) -| (add.north); - \draw[->] (H2) -| (add.south); - \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$}; - - \begin{scope}[on background layer] - \node[fit={($(G2.south-|x)+(-0.2, -0.3)$) ($(n1.north east-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; - \node[below left] at (supersensor.north east) {Super Sensor}; - - \node[fit={($(G1.south west)+(-0.3, -0.1)$) ($(n1.north east)+(0.0, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {}; - \node[below right] at (sensor1.north west) {Sensor 1}; - \node[fit={($(G2.south west)+(-0.3, -0.1)$) ($(n2.north east)+(0.0, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {}; - \node[below right] at (sensor2.north west) {Sensor 2}; - \end{scope} - \end{tikzpicture} -#+end_src - -#+name: fig:fusion_two_noisy_sensors -#+caption: Fusion of two noisy sensors ([[./figs/fusion_two_noisy_sensors.png][png]], [[./figs/fusion_two_noisy_sensors.pdf][pdf]], [[./figs/fusion_two_noisy_sensors.tex][tex]]). -#+RESULTS: -[[file:figs/fusion_two_noisy_sensors.png]] - -* Fusion of two noisy sensors with perfect dynamics -#+begin_src latex :file sensor_fusion_noisy_perfect_dyn.pdf :tangle figs/sensor_fusion_noisy_perfect_dyn.tex - <> - \begin{tikzpicture} - \node[branch] (x) at (0, 0); - \node[addb, above right=1.2 and 1.8 of x](addn1){}; - \node[addb, below right=1.2 and 1.8 of x](addn2){}; - \node[block, above=0.5 of addn1](N1) {$N_1(s)$}; - \node[block, above=0.5 of addn2](N2) {$N_2(s)$}; - \node[block, right=1.2 of addn1](H1){$H_1(s)$}; - \node[block, right=1.2 of addn2](H2){$H_2(s)$}; - \node[addb, right=4.5 of x](add){}; - - \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center); - \draw[->] (x.center) |- (addn1.west); - \draw[->] (x.center) |- (addn2.west); - \draw[->] (addn1.east) -- (H1.west)node[above left]{$\hat{x}_1$}; - \draw[->] (addn2.east) -- (H2.west)node[above left]{$\hat{x}_2$}; - \draw[->] ($(N1.north)+(0,0.7)$) node[below right](n1){$\tilde{n}_1$} -- (N1.north); - \draw[->] ($(N2.north)+(0,0.7)$) node[below right](n2){$\tilde{n}_2$} -- (N2.north); - \draw[->] (N1.south) -- (addn1.north)node[above right]{$n_1$}; - \draw[->] (N2.south) -- (addn2.north)node[above right]{$n_2$}; - \draw[->] (H1.east) -| (add.north); - \draw[->] (H2.east) -| (add.south); - \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$}; - - \begin{scope}[on background layer] - \node[fit={($(addn2.south-|x)+(-0.2, -0.4)$) ($(n1.north-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; - \node[below left] at (supersensor.north east) {Super Sensor}; - \node[block, fit={($(x|-addn1.south)+(0.2, -0.2)$) ($(n1.north-|N1.east)+(0.2, 0.1)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {}; - \node[below right] at (sensor1.north west) {Sensor 1}; - \node[block, fit={($(x|-addn2.south)+(0.2, -0.2)$) ($(n2.north-|N2.east)+(0.2, 0.1)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {}; - \node[below right] at (sensor2.north west) {Sensor 2}; - \end{scope} - \end{tikzpicture} -#+end_src - -#+name: fig:sensor_fusion_noisy_perfect_dyn -#+caption: Sensor fusion architecture with sensor dynamics uncertainty ([[./figs/sensor_fusion_noisy_perfect_dyn.png][png]], [[./figs/sensor_fusion_noisy_perfect_dyn.pdf][pdf]], [[./figs/sensor_fusion_noisy_perfect_dyn.tex][tex]]). -#+RESULTS: -[[file:figs/sensor_fusion_noisy_perfect_dyn.png]] - -* Fusion of two noisy sensors with sensors weights -#+begin_src latex :file fusion_two_noisy_sensors_weights.pdf :tangle figs/fusion_two_noisy_sensors_weights.tex - <> - - \begin{tikzpicture} - \node[branch] (x) at (0, 0); - \node[block, above right=1 and 0.5 of x](G1){$G_1(s)$}; - \node[block, below right=1 and 0.5 of x](G2){$G_2(s)$}; - \node[addb, right=0.8 of G1](add1){}; - \node[addb, right=0.8 of G2](add2){}; + \node[block, above right=1.0 and 0.5 of x](G1){$G_1(s)$}; + \node[block, below right=1.0 and 0.5 of x](G2){$G_2(s)$}; + \node[addb, right=0.4 of G1](add1){}; + \node[addb, right=0.4 of G2](add2){}; + \node[block, right=1.1 of add1](H1){$H_1(s)$}; + \node[block, right=1.1 of add2](H2){$H_2(s)$}; \node[block, above=0.5 of add1](N1){$N_1(s)$}; \node[block, above=0.5 of add2](N2){$N_2(s)$}; - \node[block, right=0.9 of add1](H1){$H_1(s)$}; - \node[block, right=0.9 of add2](H2){$H_2(s)$}; - \node[addb, right=5 of x](add){}; + \node[addb, right=4.8 of x](add){}; \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center); \draw[->] (x.center) |- (G1.west); \draw[->] (x.center) |- (G2.west); \draw[->] (G1.east) -- (add1.west); \draw[->] (G2.east) -- (add2.west); - \draw[<-] (N1.north) -- ++(0, 0.6)node[below right](n1){$\tilde{n}_1$}; - \draw[<-] (N2.north) -- ++(0, 0.6)node[below right](n2){$\tilde{n}_2$}; \draw[->] (N1.south) -- (add1.north)node[above right]{$n_1$}; \draw[->] (N2.south) -- (add2.north)node[above right]{$n_2$}; - \draw[->] (add1.east) -- (H1.west); - \draw[->] (add2.east) -- (H2.west); + \draw[<-] (N1.north) -- ++(0, 0.6)node[below right](n1){$\tilde{n}_1$}; + \draw[<-] (N2.north) -- ++(0, 0.6)node[below right](n2){$\tilde{n}_2$}; + \draw[->] (add1.east) -- (H1.west)node[above left]{$\hat{x}_1$}; + \draw[->] (add2.east) -- (H2.west)node[above left]{$\hat{x}_2$}; \draw[->] (H1) -| (add.north); \draw[->] (H2) -| (add.south); \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$}; @@ -281,33 +59,66 @@ Configuration file is accessible [[file:config.org][here]]. \node[fit={($(G2.south-|x)+(-0.2, -0.3)$) ($(n1.north east-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; \node[below left] at (supersensor.north east) {Super Sensor}; - \node[fit={($(G1.south west)+(-0.3, -0.1)$) ($(n1.north-|N1.east)+(0.2, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {}; + \node[fit={($(G1.south west)+(-0.3, -0.1)$) ($(n1.north east)+(0.1, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {}; \node[below right] at (sensor1.north west) {Sensor 1}; - \node[fit={($(G2.south west)+(-0.3, -0.1)$) ($(n2.north-|N1.east)+(0.2, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {}; + \node[fit={($(G2.south west)+(-0.3, -0.1)$) ($(n2.north east)+(0.1, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {}; \node[below right] at (sensor2.north west) {Sensor 2}; \end{scope} \end{tikzpicture} #+end_src -#+name: fig:fusion_two_noisy_sensors_weights -#+caption: Fusion of two noisy sensors ([[./figs/fusion_two_noisy_sensors_weights.png][png]], [[./figs/fusion_two_noisy_sensors_weights.pdf][pdf]], [[./figs/fusion_two_noisy_sensors_weights.tex][tex]]). +#+name: fig:sensor_fusion_noise_arch +#+caption: Sensor Fusion Architecture ([[./figs/sensor_fusion_noise_arch.png][png]], [[./figs/sensor_fusion_noise_arch.pdf][pdf]]). #+RESULTS: -[[file:figs/fusion_two_noisy_sensors_weights.png]] +[[file:figs/sensor_fusion_noise_arch.png]] + +* Architecture used for $\mathcal{H}_2$ synthesis of complementary filters +#+begin_src latex :file h_two_optimal_fusion.pdf + \begin{tikzpicture} + \node[block={4.0cm}{2.5cm}, fill=black!20!white, dashed] (P) {}; + \node[above] at (P.north) {$P(s)$}; + + \coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west) + (-0.7, 0)$); + \coordinate[] (inputu) at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$); + + \coordinate[] (output1) at ($(P.south east)!0.75!(P.north east) + ( 0.7, 0)$); + \coordinate[] (output2) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$); + \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( 0.7, 0)$); + + \node[block, left=1.4 of output1] (N1){$N_1(s)$}; + \node[block, left=1.4 of output2] (N2){$N_2(s)$}; + \node[addb={+}{}{}{}{-}, left=of N1] (sub) {}; + + \node[block, below=0.3 of P] (H2) {$H_2(s)$}; + + \draw[->] (inputw) node[above right]{$w$} -- (sub.west); + \draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (N2.west); + \draw[->] (inputu-|sub) node[branch]{} -- (sub.south); + \draw[->] (sub.east) -- (N1.west); + \draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east); + \draw[->] (N1.east) -- (output1)node[above left]{$z_1$}; + \draw[->] (N2.east) -- (output2)node[above left]{$z_2$}; + \end{tikzpicture} +#+end_src + +#+name: fig:h_two_optimal_fusion +#+caption: Architecture used for $\mathcal{H}_\infty$ synthesis of complementary filters ([[./figs/h_two_optimal_fusion.png][png]], [[./figs/h_two_optimal_fusion.pdf][pdf]]). +#+RESULTS: +[[file:figs/h_two_optimal_fusion.png]] * Sensor fusion architecture with sensor dynamics uncertainty -#+begin_src latex :file sensor_fusion_dynamic_uncertainty.pdf :tangle figs/sensor_fusion_dynamic_uncertainty.tex - <> +#+begin_src latex :file sensor_fusion_arch_uncertainty.pdf \begin{tikzpicture} \node[branch] (x) at (0, 0); - \node[addb, above right=0.8 and 3.7 of x](add1){}; - \node[addb, below right=0.8 and 3.7 of x](add2){}; + \node[addb, above right=0.8 and 4 of x](add1){}; + \node[addb, below right=0.8 and 4 of x](add2){}; \node[block, above left=0.2 and 0.1 of add1](delta1){$\Delta_1(s)$}; \node[block, above left=0.2 and 0.1 of add2](delta2){$\Delta_2(s)$}; \node[block, left=0.5 of delta1](W1){$w_1(s)$}; \node[block, left=0.5 of delta2](W2){$w_2(s)$}; \node[block, right=0.5 of add1](H1){$H_1(s)$}; \node[block, right=0.5 of add2](H2){$H_2(s)$}; - \node[addb, right=5.8 of x](add){}; + \node[addb, right=6 of x](add){}; \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center); \draw[->] (x.center) |- (add1.west); @@ -325,8 +136,9 @@ Configuration file is accessible [[file:config.org][here]]. \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$}; \begin{scope}[on background layer] - \node[fit={($(add2.south-|x)+(-0.2, -0.4)$) ($(delta1.north-|add.east)+(0.2, 0.4)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; + \node[fit={($(H2.south-|x)+(-0.2, -0.3)$) ($(delta1.north east-|add.east)+(0.2, 0.4)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; \node[below left] at (supersensor.north east) {Super Sensor}; + \node[block, fit={($(W1.north-|S1)+(-0.2, 0.2)$) ($(add1.south east)+(0.2, -0.3)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {}; \node[above right] at (sensor1.south west) {Sensor 1}; \node[block, fit={($(W2.north-|S1)+(-0.2, 0.2)$) ($(add2.south east)+(0.2, -0.3)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {}; @@ -335,14 +147,88 @@ Configuration file is accessible [[file:config.org][here]]. \end{tikzpicture} #+end_src -#+name: fig:sensor_fusion_dynamic_uncertainty -#+caption: Sensor fusion architecture with sensor dynamics uncertainty ([[./figs/sensor_fusion_dynamic_uncertainty.png][png]], [[./figs/sensor_fusion_dynamic_uncertainty.pdf][pdf]], [[./figs/sensor_fusion_dynamic_uncertainty.tex][tex]]). +#+name: fig:sensor_fusion_arch_uncertainty +#+caption: Sensor fusion architecture with sensor dynamics uncertainty ([[./figs/sensor_fusion_arch_uncertainty.png][png]], [[./figs/sensor_fusion_arch_uncertainty.pdf][pdf]]). #+RESULTS: -[[file:figs/sensor_fusion_dynamic_uncertainty.png]] +[[file:figs/sensor_fusion_arch_uncertainty.png]] + +* Uncertainty set of the super sensor dynamics +#+begin_src latex :file uncertainty_set_super_sensor.pdf + \begin{tikzpicture} + \begin{scope}[shift={(4, 0)}] + + % Uncertainty Circle + \node[draw, circle, fill=black!20!white, minimum size=3.6cm] (c) at (0, 0) {}; + \path[draw, dotted] (0, 0) circle [radius=1.0]; + \path[draw, dashed] (135:1.0) circle [radius=0.8]; + + % Center of Circle + \node[below] at (0, 0){$1$}; + + \draw[<->, dashed] (0, 0) node[branch]{} -- coordinate[midway](r1) ++(45:1.0); + \draw[<->, dashed] (135:1.0)node[branch]{} -- coordinate[midway](r2) ++(90:0.8); + + \node[] (l1) at (2, 1.5) {$|w_1 H_1|$}; + \draw[->, dashed, out=-90, in=0] (l1.south) to (r1); + + \node[] (l2) at (-2.5, 1.5) {$|w_2 H_2|$}; + \draw[->, dashed, out=0, in=-180] (l2.east) to (r2); + + \draw[<->, dashed] (0, 0) -- coordinate[near end](r3) ++(200:1.8); + \node[] (l3) at (-2.5, -1.5) {$|w_1 H_1| + |w_2 H_2|$}; + \draw[->, dashed, out=90, in=-90] (l3.north) to (r3); + \end{scope} + + % Real and Imaginary Axis + \draw[->] (-0.5, 0) -- (7.0, 0) node[below left]{Re}; + \draw[->] (0, -1.7) -- (0, 1.7) node[below left]{Im}; + + \draw[dashed] (0, 0) -- (tangent cs:node=c,point={(0, 0)},solution=2); + \draw[dashed] (1, 0) arc (0:28:1) node[midway, right]{$\Delta \phi$}; + \end{tikzpicture} +#+end_src + +#+name: fig:uncertainty_set_super_sensor +#+caption: Uncertainty region of the super sensor dynamics in the complex plane (solid circle), of the sensor 1 (dotted circle) and of the sensor 2 (dashed circle) ([[./figs/uncertainty_set_super_sensor.png][png]], [[./figs/uncertainty_set_super_sensor.pdf][pdf]]). +#+RESULTS: +[[file:figs/uncertainty_set_super_sensor.png]] + +* Architecture used for $\mathcal{H}_\infty$ synthesis of complementary filters +#+begin_src latex :file h_infinity_robust_fusion.pdf + \begin{tikzpicture} + \node[block={4.0cm}{2.5cm}, fill=black!20!white, dashed] (P) {}; + \node[above] at (P.north) {$P(s)$}; + + \coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west) + (-0.7, 0)$); + \coordinate[] (inputu) at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$); + + \coordinate[] (output1) at ($(P.south east)!0.75!(P.north east) + ( 0.7, 0)$); + \coordinate[] (output2) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$); + \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( 0.7, 0)$); + + \node[block, left=1.4 of output1] (W1){$W_1(s)$}; + \node[block, left=1.4 of output2] (W2){$W_2(s)$}; + \node[addb={+}{}{}{}{-}, left=of W1] (sub) {}; + + \node[block, below=0.3 of P] (H2) {$H_2(s)$}; + + \draw[->] (inputw) node[above right]{$w$} -- (sub.west); + \draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (W2.west); + \draw[->] (inputu-|sub) node[branch]{} -- (sub.south); + \draw[->] (sub.east) -- (W1.west); + \draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east); + \draw[->] (W1.east) -- (output1)node[above left]{$z_1$}; + \draw[->] (W2.east) -- (output2)node[above left]{$z_2$}; + \end{tikzpicture} +#+end_src + +#+name: fig:h_infinity_robust_fusion +#+caption: Architecture used for $\mathcal{H}_\infty$ synthesis of complementary filters ([[./figs/h_infinity_robust_fusion.png][png]], [[./figs/h_infinity_robust_fusion.pdf][pdf]]). +#+RESULTS: +[[file:figs/h_infinity_robust_fusion.png]] * Sensor fusion architecture with sensor dynamics uncertainty and noise -#+begin_src latex :file sensor_fusion_full.pdf :tangle figs/sensor_fusion_full.tex - <> +#+begin_src latex :file sensor_fusion_arch_full.pdf \begin{tikzpicture} \node[branch] (x) at (0, 0); \node[addb, above right=1.2 and 3.7 of x](add1){}; @@ -391,471 +277,53 @@ Configuration file is accessible [[file:config.org][here]]. \end{tikzpicture} #+end_src -#+name: fig:sensor_fusion_full -#+caption: Sensor fusion architecture with sensor dynamics uncertainty ([[./figs/sensor_fusion_full.png][png]], [[./figs/sensor_fusion_full.pdf][pdf]], [[./figs/sensor_fusion_full.tex][tex]]). +#+name: fig:sensor_fusion_arch_full +#+caption: Sensor fusion architecture with sensor dynamics uncertainty ([[./figs/sensor_fusion_arch_full.png][png]], [[./figs/sensor_fusion_arch_full.pdf][pdf]]). #+RESULTS: -[[file:figs/sensor_fusion_full.png]] +[[file:figs/sensor_fusion_arch_full.png]] -* Equivalent super sensor -#+begin_src latex :file sensor_fusion_equivalent.pdf :tangle figs/sensor_fusion_equivalent.tex - <> +* Mixed H2/H-Infinity Synthesis +#+begin_src latex :file mixed_h2_hinf_synthesis.pdf \begin{tikzpicture} - \node[branch] (x) at (0, 0); - \node[block, above right=0.6 and 0.4 of x](Wss){$w_{ss}(s)$}; - \node[block, right=0.5 of Wss](delta){$\Delta(s)$}; - \node[addb](add) at ($(delta.east|-x) + (0.5, 0)$){}; - \node[addb, right=0.5 of add](addn){}; - \node[block](Nss) at (delta-|addn) {$N_{ss}(s)$}; - - \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (add.west); - \draw[->] (x.center) |- (Wss); - \draw[->] (Wss.east) -- (delta.west); - \draw[->] (delta.east) -| (add.north); - \draw[->] (add.east) -- (addn.west); - \draw[->] ($(Nss.north)+(0,0.7)$) node[below right](nss){$\hat{n}$} -- (Nss.north); - \draw[->] (Nss.south) -- (addn.north) node[above right]{$n$}; - \draw[->] (addn.east) -- ++(1.1, 0) node[above left]{$\hat{x}$}; - - \begin{scope}[on background layer] - \node[fit={($(add.south-|x)+(-0.2, -0.2)$) ($(Nss.east|-nss.north)+(0.2, 0.2)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; - \node[below right] at (supersensor.north west) {Super Sensor}; - \end{scope} - \end{tikzpicture} -#+end_src - -#+name: fig:sensor_fusion_equivalent -#+caption: Sensor fusion architecture with sensor dynamics uncertainty ([[./figs/sensor_fusion_equivalent.png][png]], [[./figs/sensor_fusion_equivalent.pdf][pdf]], [[./figs/sensor_fusion_equivalent.tex][tex]]). -#+RESULTS: -[[file:figs/sensor_fusion_equivalent.png]] - -* One sensor with noise -#+begin_src latex :file one_sensor_noise.pdf :tangle figs/huddle_test.tex :exports both - <> - \begin{tikzpicture} - \node[block] (G) at (0, 0) {$G(s)$}; - \node[addb, right=0.8 of G] (add) {}; - - \draw[->] ($(G.west) + (-0.8, 0)$)node[above right]{$x$} -- (G.west); - \draw[->] (G.east) -- (add.west); - \draw[->] ($(add.north) + (0, 0.8)$)node[below right](n){$n$} -- (add.north); - \draw[->] (add.east) -- ++(0.8, 0) node[above left]{$\hat{x}$}; - - \begin{scope}[on background layer] - \node[fit={($(G.south west)+(-0.3, -0.1)$) ($(n.north east)+(0.0, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor) {}; - \node[below right] at (sensor.north west) {Sensor}; - \end{scope} - \end{tikzpicture} -#+end_src - -#+name: fig:one_sensor_noise -#+caption: One sensor with Noise ([[./figs/one_sensor_noise.png][png]], [[./figs/one_sensor_noise.pdf][pdf]], [[./figs/one_sensor_noise.tex][tex]]). -#+RESULTS: -[[file:figs/one_sensor_noise.png]] - -* One sensor with normalized noise -#+begin_src latex :file one_sensor_normalized_noise.pdf :tangle figs/huddle_test.tex :exports both - <> - \begin{tikzpicture} - \node[block] (G) at (0, 0) {$G(s)$}; - \node[addb, right=0.8 of G] (add) {}; - \node[block, above=0.6 of add] (N) {$N(s)$}; - - \draw[->] ($(G.west) + (-0.8, 0)$)node[above right]{$x$} -- (G.west); - \draw[->] (G.east) -- (add.west); - \draw[->] ($(N.north) + (0, 0.8)$)node[below right](ntilde){$\tilde{n}$} -- (N.north); - \draw[->] (N.south) -- (add.north)node[above right](n){$n$}; - \draw[->] (add.east) -- ++(1.0, 0) node[above left]{$\hat{x}$}; - - \begin{scope}[on background layer] - \node[fit={($(G.south west)+(-0.3, -0.2)$) ($(ntilde.north-|N.east)+(0.2, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor) {}; - \node[below right] at (sensor.north west) {Sensor}; - \end{scope} - \end{tikzpicture} -#+end_src - -#+name: fig:one_sensor_normalized_noise -#+caption: One sensor with normalized noise ([[./figs/one_sensor_normalized_noise.png][png]], [[./figs/one_sensor_normalized_noise.pdf][pdf]], [[./figs/one_sensor_normalized_noise.tex][tex]]). -#+RESULTS: -[[file:figs/one_sensor_normalized_noise.png]] - -* One sensor with dynamic uncertainty -#+begin_src latex :file one_sensor_dyn_uncertainty.pdf :tangle figs/huddle_test.tex :exports both - <> - \begin{tikzpicture} - \node[branch] (x) at (0, 0) {}; - \node[block, above right=0.4 and 0.4 of x](W){$w(s)$}; - \node[block, right=0.4 of W](delta){$\Delta(s)$}; - \node[addb](add) at ($(delta.east|-x) + (0.4, 0)$) {}; - \node[block, right=0.5 of add](G){$G(s)$}; - - \draw[->] ($(x.west) + (-0.8, 0)$)node[above right]{$x$} -- (add.west); - \draw[->] (x.center) |- (W.west); - \draw[->] (W.east) -- (delta.west); - \draw[->] (delta.east) -| (add.north); - \draw[->] (add.east) -- (G.west); - \draw[->] (G.east) -- ++(0.8, 0) node[above left]{$\hat{x}$}; - - \begin{scope}[on background layer] - \node[fit={($(x.west|-G.south)+(-0.2, -0.2)$) ($(delta.north-|G.east)+(0.2, 0.2)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor) {}; - \node[below left] at (sensor.north east) {Sensor}; - \end{scope} - \end{tikzpicture} -#+end_src - -#+name: fig:one_sensor_dyn_uncertainty -#+caption: One sensor with dynamic uncertainty ([[./figs/one_sensor_dyn_uncertainty.png][png]], [[./figs/one_sensor_dyn_uncertainty.pdf][pdf]], [[./figs/one_sensor_dyn_uncertainty.tex][tex]]). -#+RESULTS: -[[file:figs/one_sensor_dyn_uncertainty.png]] - -* One sensor with dynamic uncertainty and noise -#+begin_src latex :file one_sensor_dyn_uncertainty_noise.pdf :tangle figs/huddle_test.tex :exports both - <> - \begin{tikzpicture} - \node[branch] (x) at (0, 0) {}; - \node[block, above right=0.4 and 0.4 of x](W){$w(s)$}; - \node[block, right=0.4 of W](delta){$\Delta(s)$}; - \node[addb](add) at ($(delta.east|-x) + (0.4, 0)$) {}; - \node[block, right=0.5 of add](G){$G(s)$}; - \node[addb, right=0.5 of G] (addn) {}; - - \draw[->] ($(x.west) + (-0.8, 0)$)node[above right]{$x$} -- (add.west); - \draw[->] (x.center) |- (W.west); - \draw[->] (W.east) -- (delta.west); - \draw[->] (delta.east) -| (add.north); - \draw[->] (add.east) -- (G.west); - \draw[->] (G.east) -- (addn.west); - \draw[->] ($(addn.north)+(0, 0.8)$) node[below right]{$n$} -- (addn.north); - \draw[->] (addn.east) -- ++(0.8, 0) node[above left]{$\hat{x}$}; - - \begin{scope}[on background layer] - \node[fit={($(x.west|-G.south)+(-0.2, -0.2)$) ($(delta.north-|addn.east)+(0.2, 0.2)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor) {}; - \node[above right] at (sensor.south west) {Sensor}; - \end{scope} - \end{tikzpicture} -#+end_src - -#+name: fig:one_sensor_dyn_uncertainty_noise -#+caption: One sensor with dynamic uncertainty ([[./figs/one_sensor_dyn_uncertainty_noise.png][png]], [[./figs/one_sensor_dyn_uncertainty_noise.pdf][pdf]], [[./figs/one_sensor_dyn_uncertainty_noise.tex][tex]]). -#+RESULTS: -[[file:figs/one_sensor_dyn_uncertainty_noise.png]] - -* Huddle Test -#+begin_src latex :file huddle_test.pdf :tangle figs/huddle_test.tex :exports both - <> - - \begin{tikzpicture} - \node[branch] (x) at (0, 0); - \node[block, above right=0.5 and 0.5 of x](G1){$G_1(s)$}; - \node[block, below right=0.5 and 0.5 of x](G2){$G_2(s)$}; - \node[addb, right=0.8 of G1](add1){}; - \node[addb, right=0.8 of G2](add2){}; - - \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center); - \draw[->] (x.center) |- (G1.west); - \draw[->] (x.center) |- (G2.west); - \draw[->] (G1.east) -- (add1.west); - \draw[->] (G2.east) -- (add2.west); - \draw[<-] (add1.north) -- ++(0, 0.8)node[below right](n1){$n_1$}; - \draw[<-] (add2.north) -- ++(0, 0.8)node[below right](n2){$n_2$}; - \draw[->] (add1.east) -- ++(1, 0)node[above left]{$\hat{x}_1$}; - \draw[->] (add2.east) -- ++(1, 0)node[above left]{$\hat{x}_2$}; - - \begin{scope}[on background layer] - % \node[fit={($(G2.south-|x)+(-0.2, -0.3)$) ($(n1.north east-|add.east)+(0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {}; - % \node[below left] at (supersensor.north east) {Super Sensor}; - - \node[fit={($(G1.south west)+(-0.3, -0.1)$) ($(n1.north east)+(0.0, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {}; - \node[below right] at (sensor1.north west) {Sensor 1}; - \node[fit={($(G2.south west)+(-0.3, -0.1)$) ($(n2.north east)+(0.0, 0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {}; - \node[below right] at (sensor2.north west) {Sensor 2}; - \end{scope} - \end{tikzpicture} -#+end_src - -#+name: fig:huddle_test -#+caption: Huddle Test ([[./figs/huddle_test.png][png]], [[./figs/huddle_test.pdf][pdf]], [[./figs/huddle_test.tex][tex]]). -#+RESULTS: -[[file:figs/huddle_test.png]] - -* Uncertainty to Phase and Gain variation -#+begin_src latex :file uncertainty_gain_phase_variation.pdf :tangle figs/uncertainty_gain_phase_variation.tex :exports both - \begin{tikzpicture} - % Uncertainty Circle - \node[circle, draw, fill=black!20!white] (c) at (4.5, 0)[minimum size=2cm]{}; - - % Real and Imaginary Axis - \draw[->] (-0.5, 0) -- (6.2, 0) node[below left]{Re}; - \draw[->] (0, -0.5) -- (0, 1) node[below left]{Im}; - - % X = 1 - \node[branch] (1) at (4.5, 0){}; - \node[below] at (1){$1$}; - - - - \draw[dashed] (0, 0)coordinate(A) -- (tangent cs:node=c,point={(0, 0)},solution=2)coordinate(B) -- node[midway, right]{$\epsilon$} (1); - \draw[dashed] (2, 0) arc (0:23:1) node[midway, right]{$\Delta \phi$}; - \end{tikzpicture} -#+end_src - -#+name: fig:uncertainty_gain_phase_variation -#+caption: Uncertainty to Phase and Gain variation ([[./figs/uncertainty_gain_phase_variation.png][png]], [[./figs/uncertainty_gain_phase_variation.pdf][pdf]], [[./figs/uncertainty_gain_phase_variation.tex][tex]]). -#+RESULTS: -[[file:figs/uncertainty_gain_phase_variation.png]] - -* Fusion of two noisy signals -#+begin_src latex :file fusion_two_signals.pdf :tangle figs/fusion_two_signals.tex - \begin{tikzpicture} - \node[addb] (add) at (0, 0){}; - \node[block, above left=0.5 and 0.8 of add] (H1) {$H_1$}; - \node[block, below left=0.5 and 0.8 of add] (H2) {$H_2$}; - - \draw[->] ($(H1.west)+(-1.5, 0)$)node[above right]{$x + n_1$} -- (H1.west); - \draw[->] ($(H2.west)+(-1.5, 0)$)node[above right]{$x + n_2$} -- (H2.west); - \draw[->] (H1) -| (add.north); - \draw[->] (H2) -| (add.south); - \draw[->] (add.east) -- ++(1, 0) node[above left]{$\hat{x}$}; - \end{tikzpicture} -#+end_src - -#+name: fig:fusion_two_signals -#+caption: Fusion of two noisy sensors ([[./figs/fusion_two_signals.png][png]], [[./figs/fusion_two_signals.pdf][pdf]], [[./figs/fusion_two_signals.tex][tex]]). -#+RESULTS: -[[file:figs/fusion_two_signals.png]] - -* Fusion of two noisy sensors with Dynamics -#+begin_src latex :file fusion_two_noisy_sensors_with_dyn.pdf :tangle figs/fusion_two_noisy_sensors_with_dyn.tex - \begin{tikzpicture} - \node[branch] (x) at (0, 0); - \node[block, above right=1.5 and 0.5 of x](G1){$G_1$}; - \node[block, below right=1.5 and 0.5 of x](G2){$G_2$}; - \node[addb, right=1 of G1](add1){}; - \node[addb, right=1 of G2](add2){}; - \node[block, above=0.5 of add1](W1){$W_1$}; - \node[block, above=0.5 of add2](W2){$W_2$}; - \node[block, right=1 of add1](H1){$H_1$}; - \node[block, right=1 of add2](H2){$H_2$}; - \node[addb, right=6 of x](add){}; - - \draw[] ($(x)+(-1, 0)$) node[above right]{$x$} -- (x); - \draw[->] (x) |- (G1.west); - \draw[->] (x) |- (G2.west); - \draw[->] (G1.east) -- (add1.west); - \draw[->] (G2.east) -- (add2.west); - \draw[->] (W1.south) -- (add1.north); - \draw[->] (W2.south) -- (add2.north); - \draw[<-] (W1.north) -- ++(0, 0.8)node[below right]{$n_1$}; - \draw[<-] (W2.north) -- ++(0, 0.8)node[below right]{$n_2$}; - \draw[->] (add1.east) -- (H1.west); - \draw[->] (add2.east) -- (H2.west); - \draw[->] (H1) -| (add.north); - \draw[->] (H2) -| (add.south); - \draw[->] (add.east) -- ++(1, 0) node[above left]{$\hat{x}$}; - \end{tikzpicture} -#+end_src - -#+name: fig:fusion_two_noisy_sensors_with_dyn -#+caption: Fusion of two noisy sensors_with_dyn ([[./figs/fusion_two_noisy_sensors_with_dyn.png][png]], [[./figs/fusion_two_noisy_sensors_with_dyn.pdf][pdf]], [[./figs/fusion_two_noisy_sensors_with_dyn.tex][tex]]). -#+RESULTS: -[[file:figs/fusion_two_noisy_sensors_with_dyn.png]] -* Fusion of two noisy sensors with Dynamics - Bis -#+begin_src latex :file fusion_two_noisy_sensors_with_dyn_bis.pdf :tangle figs/fusion_two_noisy_sensors_with_dyn_bis.tex - \begin{tikzpicture} - \node[branch] (x) at (0, 0); - \node[block, above right=0.5 and 0.5 of x](G1){$G_1$}; - \node[block, below right=0.5 and 0.5 of x](G2){$G_2$}; - \node[addb, right=1 of G1](add1){}; - \node[addb, right=1 of G2](add2){}; - \node[block, right=1 of add1](H1){$H_1$}; - \node[block, right=1 of add2](H2){$H_2$}; - \node[addb, right=6 of x](add){}; - - \draw[] ($(x)+(-1, 0)$) node[above right]{$x$} -- (x); - \draw[->] (x) |- (G1.west); - \draw[->] (x) |- (G2.west); - \draw[->] (G1.east) -- (add1.west); - \draw[->] (G2.east) -- (add2.west); - \draw[<-] (add1.north) -- ++(0, 0.8)node[below right]{$n_1$}; - \draw[<-] (add2.north) -- ++(0, 0.8)node[below right]{$n_2$}; - \draw[->] (add1.east) -- (H1.west); - \draw[->] (add2.east) -- (H2.west); - \draw[->] (H1) -| (add.north); - \draw[->] (H2) -| (add.south); - \draw[->] (add.east) -- ++(1, 0) node[above left]{$\hat{x}$}; - \end{tikzpicture} -#+end_src - -#+name: fig:fusion_two_noisy_sensors_with_dyn_bis -#+caption: Fusion of two noisy sensors_with_dyn_bis ([[./figs/fusion_two_noisy_sensors_with_dyn_bis.png][png]], [[./figs/fusion_two_noisy_sensors_with_dyn_bis.pdf][pdf]], [[./figs/fusion_two_noisy_sensors_with_dyn_bis.tex][tex]]). -#+RESULTS: -[[file:figs/fusion_two_noisy_sensors_with_dyn_bis.png]] - -* Fusion of two sensors with mismatch dynamics -#+begin_src latex :file fusion_gain_mismatch.pdf :tangle figs/fusion_gain_mismatch.tex - <> - \begin{tikzpicture} - \node[branch] (x) at (0, 0); - \node[addb, above right=1 and 3.5 of x](add1){}; - \node[addb, below right=1 and 3.5 of x](add2){}; - \node[block, above left= of add1](delta1){$\Delta_1$}; - \node[block, above left= of add2](delta2){$\Delta_2$}; - \node[block, left= of delta1](W1){$W_1$}; - \node[block, left= of delta2](W2){$W_2$}; - \node[block, right= of add1](H1){$H_1$}; - \node[block, right= of add2](H2){$H_2$}; - \node[addb, right=5.5 of x](add){}; - - \draw[] ($(x)+(-1, 0)$) node[above right]{$x$} -- (x); - \draw[->] (x) |- (add1.west); - \draw[->] (x) |- (add2.west); - \draw[->] ($(add1-|W1.west)+(-0.5, 0)$)node[branch]{} |- (W1.west); - \draw[->] ($(add2-|W2.west)+(-0.5, 0)$)node[branch]{} |- (W2.west); - \draw[->] (W1.east) -- (delta1.west); - \draw[->] (W2.east) -- (delta2.west); - \draw[->] (delta1.east) -| (add1.north); - \draw[->] (delta2.east) -| (add2.north); - \draw[->] (add1.east) -- (H1.west); - \draw[->] (add2.east) -- (H2.west); - \draw[->] (H1.east) -| (add.north); - \draw[->] (H2.east) -| (add.south); - \draw[->] (add.east) -- ++(1, 0) node[above left]{$\hat{x}$}; - \end{tikzpicture} -#+end_src - -#+name: fig:fusion_gain_mismatch -#+caption: Fusion of two noisy sensors_with_dyn ([[./figs/fusion_gain_mismatch.png][png]], [[./figs/fusion_gain_mismatch.pdf][pdf]], [[./figs/fusion_gain_mismatch.tex][tex]]). -#+RESULTS: -[[file:figs/fusion_gain_mismatch.png]] -* Architecture used for $\mathcal{H}_\infty$ synthesis of complementary filters -#+begin_src latex :file h_infinity_robust_fusion.pdf :tangle figs/h_infinity_robust_fusion.tex :exports both - <> - \begin{tikzpicture} - \node[block={4.0cm}{2.5cm}, fill=black!20!white, dashed] (P) {}; + \node[block={5.0cm}{5.0cm}, fill=black!20!white, dashed] (P) {}; \node[above] at (P.north) {$P(s)$}; - \coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west) + (-0.7, 0)$); + \coordinate[] (inputw) at ($(P.south west)!0.85!(P.north west) + (-0.7, 0)$); \coordinate[] (inputu) at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$); - \coordinate[] (output1) at ($(P.south east)!0.75!(P.north east) + ( 0.7, 0)$); - \coordinate[] (output2) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$); - \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( 0.7, 0)$); + \coordinate[] (output1) at ($(P.south east)!0.85!(P.north east) + ( 0.7, 0)$); + \coordinate[] (output2) at ($(P.south east)!0.7!(P.north east) + ( 0.7, 0)$); + \coordinate[] (output3) at ($(P.south east)!0.5!(P.north east) + ( 0.7, 0)$); + \coordinate[] (output4) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$); + \coordinate[] (outputv) at ($(P.south east)!0.15!(P.north east) + ( 0.7, 0)$); \node[block, left=1.4 of output1] (W1){$W_1(s)$}; \node[block, left=1.4 of output2] (W2){$W_2(s)$}; - \node[addb={+}{}{}{}{-}, left=of W1] (sub) {}; + \node[addb={+}{}{}{}{-}, left=1.6 of W1] (sub1) {}; + + \node[block, left=1.4 of output3] (N1){$N_1(s)$}; + \node[block, left=1.4 of output4] (N2){$N_2(s)$}; + \node[addb={+}{}{}{}{-}, left=1 of N1] (sub2) {}; \node[block, below=0.3 of P] (H2) {$H_2(s)$}; - \draw[->] (inputw) node[above right]{$w$} -- (sub.west); - \draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (W2.west); - \draw[->] (inputu-|sub) node[branch]{} -- (sub.south); - \draw[->] (sub.east) -- (W1.west); - \draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east); + \draw[->] (inputw) node[above right]{$w$} -- (sub1.west); + \draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (N2.west); + \draw[->] (inputu-|sub1) node[branch]{} -- (sub1.south); + \draw[->] (inputu-|sub2) node[branch]{} -- (sub2.south); + \draw[->] (sub1|-W2) node[branch]{} -- (W2.west); + \draw[->] (sub1.east) -- (W1.west); + \draw[->] (sub2.east) -- (N1.west); + \draw[->] ($(sub1.west)+(-0.6, 0)$) node[branch](w_branch){} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east); + \draw[->] (w_branch|-sub2) node[branch]{} -- (sub2.west); \draw[->] (W1.east) -- (output1)node[above left]{$z_1$}; \draw[->] (W2.east) -- (output2)node[above left]{$z_2$}; - \end{tikzpicture} -#+end_src - -#+name: fig:h_infinity_robust_fusion -#+caption: Architecture used for $\mathcal{H}_\infty$ synthesis of complementary filters ([[./figs/h_infinity_robust_fusion.png][png]], [[./figs/h_infinity_robust_fusion.pdf][pdf]], [[./figs/h_infinity_robust_fusion.tex][tex]]). -#+RESULTS: -[[file:figs/h_infinity_robust_fusion.png]] -* H-Infinity - Optimal Complementary Filters -#+begin_src latex :file h_infinity_optimal_comp_filters.pdf :tangle figs/h_infinity_optimal_comp_filters.tex - <> - \begin{tikzpicture} - \node[block={5.0cm}{3.0cm}, fill=black!20!white, dashed] (P) {}; - \node[above] at (P.north) {$P$}; - - \coordinate[] (inputn1) at ($(P.south west)!0.8!(P.north west) + (-\cdist, 0)$); - \coordinate[] (inputn2) at ($(P.south west)!0.5!(P.north west) + (-\cdist, 0)$); - \coordinate[] (inputu) at ($(P.south west)!0.2!(P.north west) + (-\cdist, 0)$); - - \coordinate[] (outputx) at ($(P.south east)!0.5!(P.north east) + ( \cdist, 0)$); - \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( \cdist, 0)$); - - \node[block, right=1.5 of inputn1] (N1){$N_1$}; - \node[block, right=1.5 of inputn2] (N2){$N_2$}; - \node[addb={+}{}{}{}{-}, right=of N1] (sub) {}; - \node[addb, right=2 of N2] (add) {}; - - \node[block, below=of P] (H1) {$H_1$}; - - \draw[->] (inputn1)node[above right]{$\tilde{n}_1$} -- (N1.west); - \draw[->] (inputn2)node[above right]{$\tilde{n}_2$} -- (N2.west); - \draw[->] (N1) -- (sub.west); - \draw[->] (N2) -| (sub.south); - \draw[->] (N2-|sub.south) node[branch]{} -- (add.west); - \draw[->] (sub.east) -- ++(0.5, 0) |- ($(outputv) + (-0.3, 0)$) |- (H1.east); - \draw[->] (H1.west) -| ($(inputu) + (0.3, 0)$) -| (add.south); - \draw[->] (add.east) -- (outputx) node[above left]{$\hat{x}$}; - \end{tikzpicture} -#+end_src - -#+name: fig:h_infinity_optimal_comp_filters -#+caption: H-Infinity - Optimal Complementary Filters ([[./figs/h_infinity_optimal_comp_filters.png][png]], [[./figs/h_infinity_optimal_comp_filters.pdf][pdf]], [[./figs/h_infinity_optimal_comp_filters.tex][tex]]). -#+RESULTS: -[[file:figs/h_infinity_optimal_comp_filters.png]] -* H-Infinity - Optimal Complementary Filters - Alternative -#+begin_src latex :file h_infinity_optimal_comp_filters_bis.pdf :tangle figs/h_infinity_optimal_comp_filters_bis.tex :exports both - <> - \begin{tikzpicture} - \node[block={4.0cm}{2.5cm}, fill=black!20!white, dashed] (P) {}; - \node[above] at (P.north) {$P(s)$}; - - \coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west) + (-0.7, 0)$); - \coordinate[] (inputu) at ($(P.south west)!0.35!(P.north west) + (-0.7, 0)$); - - \coordinate[] (output1) at ($(P.south east)!0.75!(P.north east) + ( 0.7, 0)$); - \coordinate[] (output2) at ($(P.south east)!0.35!(P.north east) + ( 0.7, 0)$); - \coordinate[] (outputv) at ($(P.south east)!0.1!(P.north east) + ( 0.7, 0)$); - - \node[block, left=1.4 of output1] (N1){$N_1(s)$}; - \node[block, left=1.4 of output2] (N2){$N_2(s)$}; - \node[addb={+}{}{}{}{-}, left=of N1] (sub) {}; - - \node[block, below=0.3 of P] (H2) {$H_2(s)$}; - - \draw[->] (inputw) node[above right]{$w$} -- (sub.west); - \draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (N2.west); - \draw[->] (inputu-|sub) node[branch]{} -- (sub.south); - \draw[->] (sub.east) -- (N1.west); - \draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- ($(outputv)+(-0.35, 0)$) node[above]{$v$} |- (H2.east); - \draw[->] (N1.east) -- (output1)node[above left]{$z_1$}; - \draw[->] (N2.east) -- (output2)node[above left]{$z_2$}; - \end{tikzpicture} -#+end_src - -#+name: fig:h_infinity_optimal_comp_filters_bis -#+caption: Architecture used for $\mathcal{H}_\infty$ synthesis of complementary filters ([[./figs/h_infinity_optimal_comp_filters_bis.png][png]], [[./figs/h_infinity_optimal_comp_filters_bis.pdf][pdf]], [[./figs/h_infinity_optimal_comp_filters_bis.tex][tex]]). -#+RESULTS: -[[file:figs/h_infinity_optimal_comp_filters_bis.png]] -* Mixed H2/H-Infinity Synthesis -#+begin_src latex :file mixed_h2_hinf_synthesis.pdf :tangle figs/mixed_h2_hinf_synthesis.tex :exports both - \begin{tikzpicture} - % Blocs - \node[block={2.0cm}{2.0cm}] (P) {$P$}; - \node[block={1.5cm}{1.2cm}, below=0.7 of P] (K) {$K$}; - - % Input and outputs coordinates - \coordinate[] (inputw) at ($(P.north west)!0.25!(P.south west)$); - \coordinate[] (inputu) at ($(P.north west)!0.75!(P.south west)$); - - \coordinate[] (outputzinf) at ($(P.north east)!0.1!(P.south east)$); - \coordinate[] (outputz2) at ($(P.north east)!0.4!(P.south east)$); - \coordinate[] (outputv) at ($(P.north east)!0.75!(P.south east)$); - - % Connections and labels - \draw[<-] (inputw) -- ++(-1.0, 0) node[above left]{$w$}; - \draw[<-] (inputu) -- ++(-0.8, 0) |- node[near start, left]{$u$} (K.west); - - \draw[->] (outputzinf) -- ++(1.0, 0) node[above right]{$z_\infty$}; - \draw[->] (outputz2) -- ++(1.0, 0) node[above right]{$z_2$}; - \draw[->] (outputv) -- ++(0.8, 0) |- node[near start, right]{$v$} (K.east); + \draw[->] (N1.east) -- (output3)node[above left]{$z_3$}; + \draw[->] (N2.east) -- (output4)node[above left]{$z_4$}; \end{tikzpicture} #+end_src #+name: fig:mixed_h2_hinf_synthesis -#+caption: Mixed H2/H-Infinity Synthesis ([[./figs/mixed_h2_hinf_synthesis.png][png]], [[./figs/mixed_h2_hinf_synthesis.pdf][pdf]], [[./figs/mixed_h2_hinf_synthesis.tex][tex]]). +#+caption: Mixed H2/H-Infinity Synthesis ([[./figs/mixed_h2_hinf_synthesis.png][png]], [[./figs/mixed_h2_hinf_synthesis.pdf][pdf]]). #+RESULTS: [[file:figs/mixed_h2_hinf_synthesis.png]]