2019-08-21 16:35:08 +02:00
#+TITLE : Robust and Optimal Sensor Fusion - Tikz Figures
2019-08-14 12:08:30 +02:00
:DRAWER:
#+HTML_LINK_HOME : ../index.html
#+HTML_LINK_UP : ../index.html
#+HTML_HEAD : <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
#+HTML_HEAD : <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
#+HTML_HEAD : <script src="../js/jquery.min.js"></script>
#+HTML_HEAD : <script src="../js/bootstrap.min.js"></script>
#+HTML_HEAD : <script src="../js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD : <script src="../js/readtheorg.js"></script>
2020-08-17 17:56:29 +02:00
#+PROPERTY : header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{/home/thomas/Cloud/thesis/papers/dehaeze20_optim_robus_compl_filte/tikz/}{config.tex}")
2019-08-14 12:08:30 +02:00
#+PROPERTY : header-args:latex+ :imagemagick t :fit yes
#+PROPERTY : header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY : header-args:latex+ :imoutoptions -quality 100
2020-08-17 17:56:29 +02:00
#+PROPERTY : header-args:latex+ :results file raw replace
#+PROPERTY : header-args:latex+ :buffer no
#+PROPERTY : header-args:latex+ :noweb yes
2019-08-14 12:08:30 +02:00
#+PROPERTY : header-args:latex+ :eval no-export
#+PROPERTY : header-args:latex+ :exports both
#+PROPERTY : header-args:latex+ :mkdirp 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 ]].
2020-09-22 21:58:32 +02:00
* Sensor Model - Noise
#+begin_src latex :file sensor_model_noise.pdf
2020-09-22 11:29:03 +02:00
\begin{tikzpicture}
\node[addb](add1){};
\node[block, right=0.5 of add1](G1){$G_i$};
\node[block, right=0.8 of G1](Ginv1){$\hat{G}_i^{-1}$};
\node[block, above=0.5 of add1](N1){$N_i$};
2020-09-22 21:58:32 +02:00
\draw[<-] (add1.west) -- ++(-1.0, 0) node[above right]{$x$};
2020-09-22 11:29:03 +02:00
\draw[->] (add1.east) -- (G1.west);
\draw[->] (N1.south) -- (add1.north)node[above left]{$n_i$};
\draw[<-] (N1.north)node[above left](n1){$\tilde{n}_i$} -- ++(0, 0.4);
\draw[->] (G1.east) -- (Ginv1.west)node[above left]{$v_i$};
\draw[->] (Ginv1.east) -- ++(0.7, 0) node[above left]{$\hat{x}_i$};
\begin{scope}[on background layer]
\node[fit={($(G1.south east)+(0.15, -0.15)$) ($(n1.north west)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {};
\node[below left, align=right] at (sensor1.north east) {Sensor};
\end{scope}
\end{tikzpicture}
#+end_src
2020-09-22 21:58:32 +02:00
#+name : fig:sensor_model_noise
#+caption : Sensor Model ([[./figs/sensor_model_noise.png][png]], [[./figs/sensor_model_noise.pdf][pdf]]).
2020-09-22 11:29:03 +02:00
#+RESULTS :
2020-09-22 21:58:32 +02:00
[[file:figs/sensor_model_noise.png ]]
2020-09-22 11:29:03 +02:00
2020-08-17 17:56:29 +02:00
* Sensor Fusion Architecture
#+begin_src latex :file sensor_fusion_noise_arch.pdf
2019-08-14 12:08:30 +02:00
\begin{tikzpicture}
\node[branch] (x) at (0, 0);
2020-09-22 11:29:03 +02:00
\node[addb, above right=1.05 and 0.6 of x](add1){};
\node[addb, below right=1.05 and 0.6 of x](add2){};
2020-09-22 09:51:26 +02:00
\node[block, right=0.4 of add1](G1){$G_1$};
\node[block, right=0.4 of add2](G2){$G_2$};
\node[block, right=0.7 of G1](Ginv1){$\hat{G}_1^{-1}$};
\node[block, right=0.7 of G2](Ginv2){$\hat{G}_2^{-1}$};
\node[block, right=0.6 of Ginv1](H1){$H_1$};
\node[block, right=0.6 of Ginv2](H2){$H_2$};
\node[block, above=0.5 of add1](N1){$N_1$};
\node[block, above=0.5 of add2](N2){$N_2$};
2020-09-22 11:29:03 +02:00
\node[addb, right=5.3 of x](add){};
2019-08-29 14:55:03 +02:00
\draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
2020-09-22 09:51:26 +02:00
\draw[->] (x.center) |- (add1.west);
\draw[->] (x.center) |- (add2.west);
\draw[->] (add1.east) -- (G1.west);
\draw[->] (add2.east) -- (G2.west);
\draw[->] (N1.south) -- (add1.north)node[above left]{$n_1$};
\draw[->] (N2.south) -- (add2.north)node[above left]{$n_2$};
\draw[<-] (N1.north)node[above left](n1){$\tilde{n}_1$} -- ++(0, 0.4);
\draw[<-] (N2.north)node[above left](n2){$\tilde{n}_2$} -- ++(0, 0.4);
\draw[->] (G1.east) -- (Ginv1.west)node[above left]{$v_1$};
\draw[->] (G2.east) -- (Ginv2.west)node[above left]{$v_2$};
\draw[->] (Ginv1.east) -- (H1.west)node[above left]{$\hat{x}_1$};
\draw[->] (Ginv2.east) -- (H2.west)node[above left]{$\hat{x}_2$};
2019-08-14 12:08:30 +02:00
\draw[->] (H1) -| (add.north);
\draw[->] (H2) -| (add.south);
2019-08-29 14:55:03 +02:00
\draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$};
\begin{scope}[on background layer]
2020-09-22 09:51:26 +02:00
\node[fit={($(G2.south-|x)+(-0.2, -0.3)$) ($(n1.north east-|add.east)+ (0.2, 0.2)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
2019-08-29 14:55:03 +02:00
\node[below left] at (supersensor.north east) {Super Sensor};
2020-09-22 09:51:26 +02:00
\node[fit={($(G1.south east)+(0.15, -0.15)$) ($(n1.north west)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {};
\node[below left] at (sensor1.north east) {Sensor 1};
\node[fit={($(G2.south east)+(0.15, -0.15)$) ($(n2.north west)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {};
\node[below left] at (sensor2.north east) {Sensor 2};
2019-08-29 14:55:03 +02:00
\end{scope}
2019-08-14 12:08:30 +02:00
\end{tikzpicture}
#+end_src
2020-08-17 17:56:29 +02:00
#+name : fig:sensor_fusion_noise_arch
#+caption : Sensor Fusion Architecture ([[./figs/sensor_fusion_noise_arch.png][png]], [[./figs/sensor_fusion_noise_arch.pdf][pdf]]).
2019-08-14 12:08:30 +02:00
#+RESULTS :
2020-08-17 17:56:29 +02:00
[[file:figs/sensor_fusion_noise_arch.png ]]
2019-08-29 14:55:03 +02:00
2020-08-17 17:56:29 +02:00
* Architecture used for $\mathcal{H}_2$ synthesis of complementary filters
#+begin_src latex :file h_two_optimal_fusion.pdf
2019-08-29 14:55:03 +02:00
\begin{tikzpicture}
2020-09-22 09:51:26 +02:00
\node[block={3.5cm}{2.5cm}, fill=black!20!white, dashed] (P) {};
2020-09-22 09:58:58 +02:00
\node[above] at (P.north) {$P_{\mathcal{H}_2}$};
2019-08-29 14:55:03 +02:00
2020-09-22 09:58:58 +02:00
\coordinate[] (inputw) at ($(P.south west)!0.8!(P.north west) + (-0.7, 0)$);
\coordinate[] (inputu) at ($(P.south west)!0.5!(P.north west) + (-0.7, 0)$);
2019-08-29 14:55:03 +02:00
2020-09-22 09:58:58 +02:00
\coordinate[] (output1) at ($(P.south east)!0.8!(P.north east) + ( 0.7, 0)$);
\coordinate[] (output2) at ($(P.south east)!0.5!(P.north east) + ( 0.7, 0)$);
\coordinate[] (outputv) at ($(P.south east)!0.2!(P.north east) + ( 0.7, 0)$);
2019-08-29 14:55:03 +02:00
2020-09-22 09:51:26 +02:00
\node[block, left=0.9 of output1] (N1){$N_1$};
\node[block, left=0.9 of output2] (N2){$N_2$};
2020-08-17 17:56:29 +02:00
\node[addb={+}{}{}{}{-}, left=of N1] (sub) {};
2019-08-29 14:55:03 +02:00
2020-09-22 09:51:26 +02:00
\node[block, below=0.3 of P] (H2) {$H_2$};
2019-08-29 14:55:03 +02:00
2020-08-17 17:56:29 +02:00
\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$};
2019-08-29 14:55:03 +02:00
\end{tikzpicture}
#+end_src
2020-08-17 17:56:29 +02:00
#+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]]).
2019-08-29 14:55:03 +02:00
#+RESULTS :
2020-08-17 17:56:29 +02:00
[[file:figs/h_two_optimal_fusion.png ]]
2019-08-29 14:55:03 +02:00
2020-09-22 21:58:32 +02:00
* Sensor Model - Uncertainty
#+begin_src latex :file sensor_model_uncertainty.pdf
\begin{tikzpicture}
\node[branch](b1){};
\node[block, above right=0.3 and 0.25 of b1](W1){$W_i$};
\node[block, right=0.3 of W1](delta1){$\Delta_i$};
\node[addb, right=0.3 of b1-|delta1](add1){};
\node[block, right=0.3 of add1](G1){$\hat{G}_i$};
\node[block, right=0.7 of G1](Ginv1){$\hat{G}_i^{-1}$};
\draw[->] ($(g1)+(-0.6,0)$) node[above right]{$x$} -- (add1.west);
\draw[->] (g1) |- (W1.west);
\draw[->] (W1.east) -- (delta1.west);
\draw[->] (delta1.east) -| (add1.north);
\draw[->] (add1.east) -- (G1.west);
\draw[->] (G1.east) -- (Ginv1.west)node[above left]{$v_i$};
\draw[->] (Ginv1.east) -- ++(0.7, 0) node[above left]{$\hat{x}_i$};
\begin{scope}[on background layer]
\node[block, fit={($(b1|-W1.north) + (-0.15, 0.15)$) ($(G1.south east)+ (0.15, -0.15)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {};
\node[below left] at (sensor1.north east) {Sensor};
\end{scope}
\end{tikzpicture}
#+end_src
#+name : fig:sensor_model_uncertainty
#+caption : Sensor Model including dynamical uncertainty ([[./figs/sensor_model_uncertainty.png][png]], [[./figs/sensor_model_uncertainty.pdf][pdf]]).
#+RESULTS :
[[file:figs/sensor_model_uncertainty.png ]]
2019-08-29 22:47:20 +02:00
* Sensor fusion architecture with sensor dynamics uncertainty
2020-08-17 17:56:29 +02:00
#+begin_src latex :file sensor_fusion_arch_uncertainty.pdf
2019-08-14 12:08:30 +02:00
\begin{tikzpicture}
\node[branch] (x) at (0, 0);
2020-09-22 09:51:26 +02:00
\node[branch, above right=0.8 and 0.2 of x](b1){};
\node[branch, below right=0.8 and 0.2 of x](b2){};
2020-09-22 11:29:03 +02:00
\node[block, above right=0.3 and 0.25 of b1](W1){$W_1$};
\node[block, above right=0.3 and 0.25 of b2](W2){$W_2$};
2020-09-22 09:51:26 +02:00
\node[block, right=0.3 of W1](delta1){$\Delta_1$};
\node[block, right=0.3 of W2](delta2){$\Delta_2$};
\node[addb, right=0.3 of b1-|delta1](add1){};
\node[addb, right=0.3 of b2-|delta2](add2){};
\node[block, right=0.3 of add1](G1){$\hat{G}_1$};
\node[block, right=0.3 of add2](G2){$\hat{G}_2$};
\node[block, right=0.7 of G1](Ginv1){$\hat{G}_1^{-1}$};
\node[block, right=0.7 of G2](Ginv2){$\hat{G}_2^{-1}$};
2020-09-22 11:29:03 +02:00
\node[block, right=0.35 of Ginv1](H1){$H_1$};
\node[block, right=0.35 of Ginv2](H2){$H_2$};
\node[addb, right=6.8 of x](add){};
2019-08-14 12:08:30 +02:00
2019-08-29 22:47:20 +02:00
\draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
\draw[->] (x.center) |- (add1.west);
\draw[->] (x.center) |- (add2.west);
2020-09-22 09:51:26 +02:00
\draw[->] (add1.east) -- (G1.west);
\draw[->] (add2.east) -- (G2.west);
\draw[->] (b1) |- (W1.west);
\draw[->] (b2) |- (W2.west);
2019-08-14 12:08:30 +02:00
\draw[->] (W1.east) -- (delta1.west);
\draw[->] (W2.east) -- (delta2.west);
\draw[->] (delta1.east) -| (add1.north);
\draw[->] (delta2.east) -| (add2.north);
2020-09-22 09:51:26 +02:00
\draw[->] (G1.east) -- (Ginv1.west)node[above left]{$v_1$};
\draw[->] (G2.east) -- (Ginv2.west)node[above left]{$v_2$};
\draw[->] (Ginv1.east) -- (H1.west);
\draw[->] (Ginv2.east) -- (H2.west);
2019-08-14 12:08:30 +02:00
\draw[->] (H1.east) -| (add.north);
\draw[->] (H2.east) -| (add.south);
2019-08-29 22:47:20 +02:00
\draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$};
2019-08-14 12:08:30 +02:00
2019-08-29 22:47:20 +02:00
\begin{scope}[on background layer]
2020-09-22 11:29:03 +02:00
\node[fit={($(H2.south-|x)+(-0.2, -0.3)$) ($(delta1.north east-|add.east)+ (0.2, 0.3)$)}, fill=black!10!white, draw, dashed, inner sep=0pt] (supersensor) {};
2019-08-29 22:47:20 +02:00
\node[below left] at (supersensor.north east) {Super Sensor};
2020-08-17 17:56:29 +02:00
2020-09-22 09:51:26 +02:00
\node[block, fit={($(b1|-W1.north) + (-0.15, 0.15)$) ($(G1.south east)+ (0.15, -0.15)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {};
\node[below left] at (sensor1.north east) {Sensor 1};
\node[block, fit={($(b2|-W2.north) + (-0.15, 0.15)$) ($(G2.south east)+ (0.15, -0.15)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {};
\node[below left] at (sensor2.north east) {Sensor 2};
2019-08-29 22:47:20 +02:00
\end{scope}
2019-08-14 12:08:30 +02:00
\end{tikzpicture}
#+end_src
2020-08-17 17:56:29 +02:00
#+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_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);
2020-09-22 09:58:58 +02:00
\node[] (l1) at (2, 1.5) {$|W_1 H_1|$};
2020-08-17 17:56:29 +02:00
\draw[->, dashed, out=-90, in=0] (l1.south) to (r1);
2020-09-22 09:58:58 +02:00
\ node[] (l2) at (-2.5, 1.5) {$|W_2 H_2|$};
2020-08-17 17:56:29 +02:00
\draw[->, dashed, out=0, in= -180] (l2.east) to (r2);
\draw[<- >, dashed] (0, 0) -- coordinate[near end](r3) ++(200:1.8);
2020-09-22 09:58:58 +02:00
\node[] (l3) at (-2.5, -1.5) {$|W_1 H_1| + |W_2 H_2|$};
2020-08-17 17:56:29 +02:00
\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}
2020-09-23 14:14:37 +02:00
\node[block={4.2cm}{2.5cm}, fill=black!20!white, dashed] (P) {};
2020-09-22 09:58:58 +02:00
\node[above] at (P.north) {$P_{\mathcal{H}_ \infty}$};
2020-08-17 17:56:29 +02:00
2020-09-22 09:58:58 +02:00
\coordinate[] (inputw) at ($(P.south west)!0.8!(P.north west) + (-0.7, 0)$);
\coordinate[] (inputu) at ($(P.south west)!0.5!(P.north west) + (-0.7, 0)$);
2020-08-17 17:56:29 +02:00
2020-09-22 09:58:58 +02:00
\coordinate[] (output1) at ($(P.south east)!0.8!(P.north east) + ( 0.7, 0)$);
\coordinate[] (output2) at ($(P.south east)!0.5!(P.north east) + ( 0.7, 0)$);
\coordinate[] (outputv) at ($(P.south east)!0.2!(P.north east) + ( 0.7, 0)$);
2020-08-17 17:56:29 +02:00
2020-09-22 09:51:26 +02:00
\node[block, left=0.9 of output1] (W1){$W_1$};
\node[block, left=0.9 of output2] (W2){$W_2$};
2020-09-23 14:14:37 +02:00
\node[block, left=0.4 of W1] (Wu1){$W_u$};
\node[block, left=0.4 of W2] (Wu2){$W_u$};
\node[addb={+}{}{}{}{-}, left=of Wu1] (sub) {};
2020-08-17 17:56:29 +02:00
2020-09-22 09:51:26 +02:00
\node[block, below=0.3 of P] (H2) {$H_2$};
2020-08-17 17:56:29 +02:00
\draw[->] (inputw) node[above right]{$w$} -- (sub.west);
2020-09-23 14:14:37 +02:00
\draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (Wu2.west);
2020-08-17 17:56:29 +02:00
\draw[->] (inputu-|sub) node[branch]{} -- (sub.south);
2020-09-23 14:14:37 +02:00
\draw[->] (sub.east) -- (Wu1.west);
2020-08-17 17:56:29 +02:00
\draw[->] ($(sub.west)+(-0.6, 0)$) node[branch]{} |- ($(outputv)+ (-0.35, 0)$) node[above]{$v$} |- (H2.east);
2020-09-23 14:14:37 +02:00
\draw[->] (Wu1.east) -- (W1.west);
\draw[->] (Wu2.east) -- (W2.west);
2020-08-17 17:56:29 +02:00
\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]]).
2019-08-14 12:08:30 +02:00
#+RESULTS :
2020-08-17 17:56:29 +02:00
[[file:figs/h_infinity_robust_fusion.png ]]
2019-08-14 12:08:30 +02:00
2020-09-22 21:58:32 +02:00
* Sensor Model - Noise and Uncertainty
#+begin_src latex :file sensor_model_noise_uncertainty.pdf
\begin{tikzpicture}
\node[addb](add1){};
\node[block, above=0.5 of add1](N1){$N_i$};
\node[branch, right=0.4 of add1](b1){};
\node[block, above right=0.3 and 0.25 of b1](W1){$W_i$};
\node[block, right=0.3 of W1](delta1){$\Delta_i$};
\node[addb, right=0.3 of b1-|delta1](addu){};
\node[block, right=0.3 of addu](G1){$\hat{G}_i$};
\node[block, right=0.7 of G1](Ginv1){$\hat{G}_i^{-1}$};
\draw[<-] (add1.west) -- ++(-1.0, 0) node[above right]{$x$};
\draw[->] (add1.east) -- (addu.west);
\draw[->] (b1) |- (W1.west);
\draw[->] (W1.east) -- (delta1.west);
\draw[->] (delta1.east) -| (addu.north);
\draw[->] (addu.east) -- (G1.west);
\draw[->] (N1.south) -- (add1.north)node[above left]{$n_i$};
\draw[<-] (N1.north)node[above left](n1){$\tilde{n}_i$} -- ++(0, 0.4);
\draw[->] (G1.east) -- (Ginv1.west)node[above left]{$v_i$};
\draw[->] (Ginv1.east) -- ++(0.7, 0) node[above left]{$\hat{x}_i$};
\begin{scope}[on background layer]
\node[fit={($(G1.south east)+(0.15, -0.15)$) ($(n1.north west)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {};
\node[below left, align=right] at (sensor1.north east) {Sensor};
\end{scope}
\end{tikzpicture}
#+end_src
#+name : fig:sensor_model_noise_uncertainty
#+caption : Sensor Model ([[./figs/sensor_model_noise_uncertainty.png][png]], [[./figs/sensor_model_noise_uncertainty.pdf][pdf]]).
#+RESULTS :
[[file:figs/sensor_model_noise_uncertainty.png ]]
2019-08-29 11:21:07 +02:00
* Sensor fusion architecture with sensor dynamics uncertainty and noise
2020-08-17 17:56:29 +02:00
#+begin_src latex :file sensor_fusion_arch_full.pdf
2019-08-29 11:21:07 +02:00
\begin{tikzpicture}
\node[branch] (x) at (0, 0);
2020-09-22 09:51:26 +02:00
\node[addb, above right=1.0 and 0.6 of x](addn1){};
\node[addb, below right=1.0 and 0.6 of x](addn2){};
\node[addb, right=2.6 of addn1](add1){};
\node[addb, right=2.6 of addn2](add2){};
\node[block, above left=0.2 and 0 of add1](delta1){$\Delta_1$};
\node[block, above left=0.2 and 0 of add2](delta2){$\Delta_2$};
2020-09-22 09:58:58 +02:00
\node[block, left=0.4 of delta1](W1){$W_1$};
\node[block, left=0.4 of delta2](W2){$W_2$};
2020-09-22 09:51:26 +02:00
\node[block, above=0.5 of addn1](N1) {$N_1$};
\node[block, above=0.5 of addn2](N2) {$N_2$};
\node[block, right=0.7 of add1](H1){$H_1$};
\node[block, right=0.7 of add2](H2){$H_2$};
\node[addb, right=5.8 of x](add){};
2019-08-29 11:21:07 +02:00
\draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
2020-09-22 09:51:26 +02:00
\draw[->] (x.center) |- (addn1.west);
\draw[->] (x.center) |- (addn2.west);
\draw[->] ($(addn1-|W1.west)+(-0.3, 0)$)node[branch](S1){} |- (W1.west);
\draw[->] ($(addn2-|W2.west)+(-0.3, 0)$)node[branch](S2){} |- (W2.west);
2019-08-29 11:21:07 +02:00
\draw[->] (W1.east) -- (delta1.west);
\draw[->] (W2.east) -- (delta2.west);
\draw[->] (delta1.east) -| (add1.north);
\draw[->] (delta2.east) -| (add2.north);
2020-09-22 09:51:26 +02:00
\draw[->] (addn1.east) -- (add1.west);
\draw[->] (addn2.east) -- (add2.west);
\draw[->] (add1.east) -- (H1.west)node[above left]{$\hat{x}_1$};
\draw[->] (add2.east) -- (H2.west)node[above left]{$\hat{x}_2$};
\draw[<-] (N1.north)node[above left](n1){$\tilde{n}_1$} -- ++(0, 0.4);
\draw[<-] (N2.north)node[above left](n2){$\tilde{n}_2$} -- ++(0, 0.4);
\draw[->] (N1.south) -- (addn1.north)node[above left]{$n_1$};
\draw[->] (N2.south) -- (addn2.north)node[above left]{$n_2$};
2019-08-29 11:21:07 +02:00
\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]
2020-09-22 09:51:26 +02:00
\node[fit={($(H2.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) {};
2019-08-29 11:21:07 +02:00
\node[below left] at (supersensor.north east) {Super Sensor};
2020-09-22 09:51:26 +02:00
\node[fit={(n1.north west) ($(add1.south -| add1.east) + (0.1, -0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor1) {};
\node[below left] at (sensor1.north east) {Sensor 1};
\node[fit={(n2.north west) ($(add2.south -| add2.east) + (0.1, -0.1)$)}, fill=black!20!white, draw, dashed, inner sep=0pt] (sensor2) {};
\node[below left] at (sensor2.north east) {Sensor 2};
2019-08-29 11:21:07 +02:00
\end{scope}
\end{tikzpicture}
#+end_src
2020-08-17 17:56:29 +02:00
#+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]]).
2019-08-29 22:47:20 +02:00
#+RESULTS :
2020-08-17 17:56:29 +02:00
[[file:figs/sensor_fusion_arch_full.png ]]
2019-08-29 22:47:20 +02:00
2020-08-17 17:56:29 +02:00
* Mixed H2/H-Infinity Synthesis
#+begin_src latex :file mixed_h2_hinf_synthesis.pdf
2019-08-30 14:39:01 +02:00
\begin{tikzpicture}
2020-09-23 14:14:37 +02:00
\node[block={4.2cm}{4.0cm}, fill=black!20!white, dashed] (P) {};
2020-09-22 09:58:58 +02:00
\node[above] at (P.north) {$P_{\mathcal{H}_2/\mathcal{H}_ \infty}$};
2019-08-30 14:39:01 +02:00
2020-08-17 17:56:29 +02:00
\coordinate[] (inputw) at ($(P.south west)!0.85!(P.north west) + (-0.7, 0)$);
2020-09-22 09:51:26 +02:00
\coordinate[] (inputu) at ($(P.south west)!0.25!(P.north west) + (-0.7, 0)$);
2019-08-30 14:39:01 +02:00
2020-08-17 17:56:29 +02:00
\coordinate[] (output1) at ($(P.south east)!0.85!(P.north east) + ( 0.7, 0)$);
2020-09-22 09:51:26 +02:00
\coordinate[] (output2) at ($(P.south east)!0.65!(P.north east) + ( 0.7, 0)$);
\coordinate[] (output3) at ($(P.south east)!0.45!(P.north east) + ( 0.7, 0)$);
\coordinate[] (output4) at ($(P.south east)!0.25!(P.north east) + ( 0.7, 0)$);
\coordinate[] (outputv) at ($(P.south east)!0.10!(P.north east) + ( 0.7, 0)$);
2019-08-30 14:39:01 +02:00
2020-09-22 09:51:26 +02:00
\node[block, left=1.0 of output1] (W1){$W_1$};
\node[block, left=1.0 of output2] (W2){$W_2$};
2020-09-23 14:14:37 +02:00
\node[block, left=0.4 of W1] (Wu1){$W_u$};
\node[block, left=0.4 of W2] (Wu2){$W_u$};
\node[addb={+}{}{}{}{-}, left=0.4 of Wu1] (sub1) {};
2019-08-30 14:39:01 +02:00
2020-09-22 09:51:26 +02:00
\node[block, left=1.0 of output3] (N1){$N_1$};
\node[block, left=1.0 of output4] (N2){$N_2$};
\node[addb={+}{}{}{}{-}, left=0.6 of N1] (sub2) {};
2019-08-30 14:39:01 +02:00
2020-09-22 09:51:26 +02:00
\node[block, below=0.3 of P] (H2) {$H_2$};
2019-08-30 14:39:01 +02:00
2020-08-17 17:56:29 +02:00
\draw[->] (inputw) node[above right]{$w$} -- (sub1.west);
2019-08-30 14:39:01 +02:00
\draw[->] (H2.west) -| ($(inputu)+(0.35, 0)$) node[above]{$u$} -- (N2.west);
2020-08-17 17:56:29 +02:00
\draw[->] (inputu-|sub1) node[branch]{} -- (sub1.south);
\draw[->] (inputu-|sub2) node[branch]{} -- (sub2.south);
2020-09-23 14:14:37 +02:00
\draw[->] (sub1|-W2) node[branch]{} -- (Wu2.west);
\draw[->] (sub1.east) -- (Wu1.west);
2020-08-17 17:56:29 +02:00
\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);
2020-09-23 14:14:37 +02:00
\draw[->] (Wu1.east) -- (W1.west);
\draw[->] (Wu2.east) -- (W2.west);
2020-09-22 09:51:26 +02:00
\draw[->] (W1.east) -- (output1)node[above left](z1){$z_1$};
\draw[->] (W2.east) -- (output2)node[above left](z2){$z_2$};
\draw[->] (N1.east) -- (output3)node[above left](z3){$z_3$};
\draw[->] (N2.east) -- (output4)node[above left](z4){$z_4$};
\draw [decoration={brace, raise=5pt}, decorate] (z1.north east) -- node[right=6pt]{$z_{\mathcal{H}_ \infty}$} (z2.south east);
\draw [decoration={brace, raise=5pt}, decorate] (z3.north east) -- node[right=6pt]{$z_{\mathcal{H}_2}$} (z4.south east);
2019-09-03 09:01:50 +02:00
\end{tikzpicture}
#+end_src
#+name : fig:mixed_h2_hinf_synthesis
2020-08-17 17:56:29 +02:00
#+caption : Mixed H2/H-Infinity Synthesis ([[./figs/mixed_h2_hinf_synthesis.png][png]], [[./figs/mixed_h2_hinf_synthesis.pdf][pdf]]).
2019-09-03 09:01:50 +02:00
#+RESULTS :
[[file:figs/mixed_h2_hinf_synthesis.png ]]