#+TITLE: Optimal and Robust Sensor Fusion :DRAWER: #+LATEX_CLASS: IEEEtran #+LATEX_CLASS_OPTIONS: [conference] #+OPTIONS: toc:nil todo:nil #+STARTUP: overview #+DATE: {{{time(%Y-%m-%d)}}} #+AUTHOR: @@latex:\IEEEauthorblockN{Dehaeze Thomas}@@ #+AUTHOR: @@latex:\IEEEauthorblockA{\textit{European Synchrotron Radiation Facility} \\@@ #+AUTHOR: @@latex:Grenoble, France\\@@ #+AUTHOR: @@latex:\textit{Precision Mechatronics Laboratory} \\@@ #+AUTHOR: @@latex:\textit{University of Liege}, Belgium \\@@ #+AUTHOR: @@latex:thomas.dehaeze@esrf.fr@@ #+AUTHOR: @@latex:}\and@@ #+AUTHOR: @@latex:\IEEEauthorblockN{Collette Christophe}@@ #+AUTHOR: @@latex:\IEEEauthorblockA{\textit{BEAMS Department}\\@@ #+AUTHOR: @@latex:\textit{Free University of Brussels}, Belgium\\@@ #+AUTHOR: @@latex:\textit{Precision Mechatronics Laboratory} \\@@ #+AUTHOR: @@latex:\textit{University of Liege}, Belgium \\@@ #+AUTHOR: @@latex:ccollett@ulb.ac.be@@ #+AUTHOR: @@latex:}@@ #+LATEX_HEADER: \IEEEoverridecommandlockouts #+LATEX_HEADER: \usepackage{cite} #+LATEX_HEADER: \usepackage{amsmath,amssymb,amsfonts} #+LATEX_HEADER: \usepackage{algorithmic} #+LATEX_HEADER: \usepackage{graphicx} #+LATEX_HEADER: \usepackage{textcomp} #+LATEX_HEADER: \usepackage{xcolor} #+LATEX_HEADER: \usepackage{cases} #+LATEX_HEADER: \usepackage{tabularx,siunitx,booktabs} #+LATEX_HEADER: \usepackage{algorithmic} #+LATEX_HEADER: \usepackage{import, hyperref} #+LATEX_HEADER: \renewcommand{\citedash}{--} #+LATEX_HEADER_EXTRA: \usepackage{showframe} #+LATEX_HEADER: \def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} \bibliographystyle{IEEEtran} :END: * LaTeX Config :noexport: #+begin_src latex :tangle config.tex #+end_src * Build :noexport: #+NAME: startblock #+BEGIN_SRC emacs-lisp :results none (add-to-list 'org-latex-classes '("IEEEtran" "\\documentclass{IEEEtran}" ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}") ("\\paragraph{%s}" . "\\paragraph*{%s}") ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) ) (defun delete-org-comments (backend) (loop for comment in (reverse (org-element-map (org-element-parse-buffer) 'comment 'identity)) do (setf (buffer-substring (org-element-property :begin comment) (org-element-property :end comment)) ""))) ;; add to export hook (add-hook 'org-export-before-processing-hook 'delete-org-comments) ;; Remove hypersetup (setq org-latex-with-hyperref nil) #+END_SRC * Abstract :ignore: #+begin_abstract Abstract text to be done #+end_abstract * Keywords :ignore: #+begin_IEEEkeywords Complementary Filters, Sensor Fusion, H-Infinity Synthesis #+end_IEEEkeywords * Introduction <> - Section ref:sec:optimal_fusion - Section ref:sec:robust_fusion - Section ref:sec:optimal_robust_fusion - Section ref:sec:experimental_validation * Optimal Super Sensor Noise: $\mathcal{H}_2$ Synthesis <> ** Sensor Model Let's consider a sensor measuring a physical quantity $x$ (Figure ref:fig:sensor_model_noise). The sensor has an internal dynamics which is here modelled with a Linear Time Invariant (LTI) system transfer function $G_i(s)$. The noise of sensor can be described by the Power Spectral Density (PSD) $\Phi_{n_i}(\omega)$. This is approximated by shaping a white noise with unitary PSD $\tilde{n}_i$ eqref:eq:unitary_sensor_noise_psd with a LTI transfer function $N_i(s)$: \begin{equation} \begin{aligned} \Phi_{n_i}(\omega) &= \left| N_i(j\omega) \right|^2 \Phi_{\tilde{n}_i}(\omega) \\ &= \left| N_i(j\omega) \right|^2 \end{aligned} \end{equation} #+name: eq:unitary_sensor_noise_psd \begin{equation} \Phi_{\tilde{n}_i}(\omega) = 1 \end{equation} The output of the sensor $v_i$: \begin{equation} v_i = \left( G_i \right) x + \left( G_i N_i \right) \tilde{n}_i \end{equation} In order to obtain an estimate $\hat{x}_i$ of $x$, a model $\hat{G}_i$ of the (true) sensor dynamics $G_i$ is inverted and applied at the output (Figure ref:fig:sensor_model_noise): \begin{equation} \hat{x}_i = \left( \hat{G}_i^{-1} G_i \right) x + \left( \hat{G}_i^{-1} G_i N_i \right) \tilde{n}_i \end{equation} #+name: fig:sensor_model_noise #+caption: Sensor Model #+attr_latex: :scale 1 [[file:figs/sensor_model_noise.pdf]] ** Sensor Fusion Architecture Let's now consider two sensors measuring the same physical quantity $x$ but with different dynamics $(G_1, G_2)$ and noise characteristics $(N_1, N_2)$ (Figure ref:fig:sensor_fusion_noise_arch). The noise sources $\tilde{n}_1$ and $\tilde{n}_2$ are considered to be uncorrelated. #+name: fig:sensor_fusion_noise_arch #+caption: Sensor Fusion Architecture with sensor noise #+attr_latex: :scale 1 [[file:figs/sensor_fusion_noise_arch.pdf]] The output of both sensors $(v1,v2)$ are then passed through the inverse of the sensor model to obtained two estimates $(\hat{x}_1, \hat{x}_2)$ of $x$. These two estimates are then filtered out by two filters $H_1$ and $H_2$ and summed to gives the super sensor estimate $\hat{x}$. \begin{equation} \begin{split} \hat{x} = {}&\left( H_1 \hat{G}_1^{-1} G_1 + H_2 \hat{G}_2^{-1} G_2 \right) x \\ &+ \left( H_1 \hat{G}_1^{-1} G_1 N_1 \right) \tilde{n}_1 + \left( H_2 \hat{G}_2^{-1} G_2 N_2 \right) \tilde{n}_2 \end{split} \end{equation} Suppose the sensor dynamical model $\hat{G}_i$ is perfect: \begin{equation} \hat{G}_i = G_i \end{equation} We considered here complementary filters: \begin{equation} H_1(s) + H_2(s) = 1 \end{equation} In such case, the super sensor estimate $\hat{x}$ is equal to $x$ plus the noise of the individual sensors filtered out by the complementary filters: \begin{equation} \hat{x} = x + \left( H_1 N_1 \right) \tilde{n}_1 + \left( H_2 N_2 \right) \tilde{n}_2 \end{equation} ** Super Sensor Noise Let's note $n$ the super sensor noise. \begin{equation} n = \left( H_1 N_1 \right) \tilde{n}_1 + \left( H_2 N_2 \right) \tilde{n}_2 \end{equation} As the noise of both sensors are considered to be uncorrelated, the PSD of the super sensor noise is computed as follow: \begin{equation} \Phi_n(\omega) = \left| H_1 N_1 \right|^2 + \left| H_2 N_2 \right|^2 \end{equation} It is clear that the PSD of the super sensor depends on the norm of the complementary filters. ** $\mathcal{H}_2$ Synthesis of Complementary Filters The goal is to design $H_1(s)$ and $H_2(s)$ such that the effect of the noise sources $\tilde{n}_1$ and $\tilde{n}_2$ has the smallest possible effect on the noise $n$ of the estimation $\hat{x}$. And the goal is the minimize the Root Mean Square (RMS) value of $n$: #+name: eq:rms_value_estimation \begin{equation} \sigma_{n} = \sqrt{\int_0^\infty \Phi_{n}(\omega) d\omega} = \left\| \begin{matrix} H_1 N_1 \\ H_2 N_2 \end{matrix} \right\|_2 \end{equation} Thus, the goal is to design $H_1(s)$ and $H_2(s)$ such that $H_1(s) + H_2(s) = 1$ and such that $\sigma_n$ is minimized. This can be cast into an $\mathcal{H}_2$ synthesis problem by considering the following generalized plant (also represented in Figure ref:fig:h_two_optimal_fusion): \begin{equation} \begin{pmatrix} z_1 \\ z_2 \\ v \end{pmatrix} = \underbrace{\begin{bmatrix} N_1 & N_1 \\ 0 & N_2 \\ 1 & 0 \end{bmatrix}}_{P_{\mathcal{H}_2}} \begin{pmatrix} w \\ u \end{pmatrix} \end{equation} Applying the $\mathcal{H}_2$ synthesis on $P_{\mathcal{H}_2}$ will generate a filter $H_2(s)$ such that the $\mathcal{H}_2$ norm from $w$ to $(z_1,z_2)$ is minimized: #+NAME: eq:H2_norm \begin{equation} \left\| \begin{matrix} z_1/w \\ z_2/w \end{matrix} \right\|_2 = \left\| \begin{matrix} N_1 (1 - H_2) \\ N_2 H_2 \end{matrix} \right\|_2 \end{equation} The $\mathcal{H}_2$ norm of Eq. eqref:eq:H2_norm is equals to $\sigma_n$ by defining $H_1(s)$ to be the complementary filter of $H_2(s)$: \begin{equation} H_1(s) = 1 - H_2(s) \end{equation} We then have that the $\mathcal{H}_2$ synthesis applied on $P_{\mathcal{H}_2}$ generates two complementary filters $H_1(s)$ and $H_2(s)$ such that the RMS value of super sensor noise is minimized. #+name: fig:h_two_optimal_fusion #+caption: Generalized plant $P_{\mathcal{H}_2}$ used for the $\mathcal{H}_2$ synthesis of complementary filters #+attr_latex: :scale 1 [[file:figs/h_two_optimal_fusion.pdf]] ** Example ** Robustness Problem * Robust Sensor Fusion: $\mathcal{H}_\infty$ Synthesis <> ** Representation of Sensor Dynamical Uncertainty In Section ref:sec:optimal_fusion, the model $\hat{G}_i(s)$ of the sensor was considered to be perfect. In reality, there are always uncertainty (neglected dynamics) associated with the estimation of the sensor dynamics. The Uncertainty on the sensor dynamics $G_i(s)$ is here modelled by (input) multiplicative uncertainty: \begin{equation} G_i(s) = \hat{G}_i(s) \left( 1 + W_i(s) \Delta_i(s) \right); \quad |\Delta_i(j\omega)| < 1 \forall \omega \end{equation} where $\hat{G}_i(s)$ is the nominal model, $W_i$ a weight representing the size of the uncertainty at each frequency, and $\Delta_i$ is any complex perturbation such that $\left\| \Delta_i \right\|_\infty < 1$. The sensor can then be represented as shown in Figure ref:fig:sensor_model_uncertainty. #+name: fig:sensor_model_uncertainty #+caption: Sensor Model including Dynamical Uncertainty #+attr_latex: :scale 1 [[file:figs/sensor_model_uncertainty.pdf]] ** Sensor Fusion Architecture Let's consider the sensor fusion architecture shown in Figure ref:fig:sensor_fusion_arch_uncertainty where the dynamical uncertainties of both sensors are included. The super sensor estimate is then: \begin{equation} \begin{aligned} \hat{x} &= \Big( H_1 \hat{G}_1^{-1} \hat{G}_1 (1 + W_1 \Delta_1) \\ & \quad + H_2 \hat{G}_2^{-1} \hat{G}_2 (1 + W_2 \Delta_2) \Big) x \\ &= \Big( H_1 (1 + W_1 \Delta_1) + H_2 (1 + W_2 \Delta_2) \Big) x \end{aligned} \end{equation} with $\Delta_i$ is any transfer function satisfying $\| \Delta_i \|_\infty < 1$. As $H_1$ and $H_2$ are complementary filters, we finally have: \begin{equation} \hat{x} = \left( 1 + H_1 W_1 \Delta_1 + H_2 W_2 \Delta_2 \right) x, \quad \|\Delta_i\|_\infty<1 \end{equation} #+name: fig:sensor_fusion_arch_uncertainty #+caption: Sensor Fusion Architecture with sensor model uncertainty #+attr_latex: :scale 1 [[file:figs/sensor_fusion_arch_uncertainty.pdf]] ** Super Sensor Dynamical Uncertainty The uncertainty set of the transfer function from $\hat{x}$ to $x$ at frequency $\omega$ is bounded in the complex plane by a circle centered on 1 and with a radius equal to $|W_1(j\omega) H_1(j\omega)| + |W_2(j\omega) H_2(j\omega)|$ as shown in Figure ref:fig:uncertainty_set_super_sensor. And we can see that the dynamical uncertainty of the super sensor is equal to the sum of the individual sensor uncertainties filtered out by the complementary filters. #+name: fig:uncertainty_set_super_sensor #+caption: Super Sensor model uncertainty displayed in the complex plane #+attr_latex: :scale 1 [[file:figs/uncertainty_set_super_sensor.pdf]] # Some comments on the weights At frequencies where $\left|W_i(j\omega)\right| > 1$ the uncertainty exceeds $100\%$ and sensor fusion is impossible. ** $\mathcal{H_\infty}$ Synthesis of Complementary Filters In order for the fusion to be "robust", meaning no phase drop will be induced in the super sensor dynamics, The goal is to design two complementary filters $H_1(s)$ and $H_2(s)$ such that the super sensor noise uncertainty is kept reasonably small. To define what by "small" we mean, we use a weighting filter $W_u(s)$ such that the synthesis objective is: \begin{equation} \left| W_1(j\omega)H_1(j\omega) \right| + \left| W_2(j\omega)H_2(j\omega) \right| < \frac{1}{\left| W_u(j\omega) \right|}, \quad \forall \omega \end{equation} This is actually almost equivalent (to within a factor $\sqrt{2}$) equivalent as to have: \begin{equation} \left\| \begin{matrix} W_u W_1 H_1 \\ W_u W_2 H_2 \end{matrix} \right\|_\infty < 1 \end{equation} This problem can thus be dealt with an $\mathcal{H}_\infty$ synthesis problem by considering the following generalized plant (Figure ref:fig:h_infinity_robust_fusion): \begin{equation} \begin{pmatrix} z_1 \\ z_2 \\ v \end{pmatrix} = \underbrace{\begin{bmatrix} W_u W_1 & W_u W_1 \\ 0 & W_u W_2 \\ 1 & 0 \end{bmatrix}}_{P_{\mathcal{H}_\infty}} \begin{pmatrix} w \\ u \end{pmatrix} \end{equation} Applying the $\mathcal{H}_\infty$ synthesis on $P_{\mathcal{H}_\infty}$ will generate a filter $H_2(s)$ such that the $\mathcal{H}_\infty$ norm from $w$ to $(z_1,z_2)$ is minimized: #+NAME: eq:Hinf_norm \begin{equation} \left\| \begin{matrix} z_1/w \\ z_2/w \end{matrix} \right\|_\infty = \left\| \begin{matrix} W_u W_1 (1 - H_2) \\ W_u W_2 H_2 \end{matrix} \right\|_\infty \end{equation} The $\mathcal{H}_\infty$ norm of Eq. eqref:eq:Hinf_norm is equals to $\sigma_n$ by defining $H_1(s)$ to be the complementary filter of $H_2(s)$: \begin{equation} H_1(s) = 1 - H_2(s) \end{equation} #+name: fig:h_infinity_robust_fusion #+caption: Generalized plant $P_{\mathcal{H}_\infty}$ used for the $\mathcal{H}_\infty$ synthesis of complementary filters #+attr_latex: :scale 1 [[file:figs/h_infinity_robust_fusion.pdf]] ** Example # Comments on the choice of the weights => we cannot ask for less uncertainty than both sensors * Optimal and Robust Sensor Fusion: Mixed $\mathcal{H}_2/\mathcal{H}_\infty$ Synthesis <> ** Sensor Fusion Architecture #+name: fig:sensor_model_noise_uncertainty #+caption: Sensor Model including Noise and Dynamical Uncertainty #+attr_latex: :scale 1 [[file:figs/sensor_model_noise_uncertainty.pdf]] #+name: fig:sensor_fusion_arch_full #+caption: Super Sensor Fusion with both sensor noise and sensor model uncertainty #+attr_latex: :scale 1 [[file:figs/sensor_fusion_arch_full.pdf]] ** Synthesis Objective ** Mixed $\mathcal{H}_2/\mathcal{H}_\infty$ Synthesis #+name: fig:mixed_h2_hinf_synthesis #+caption: Generalized plant $P_{\mathcal{H}_2/\matlcal{H}_\infty}$ used for the mixed $\mathcal{H}_2/\mathcal{H}_\infty$ synthesis of complementary filters #+attr_latex: :scale 1 [[file:figs/mixed_h2_hinf_synthesis.pdf]] ** Example * Experimental Validation <> ** Experimental Setup ** Sensor Noise and Dynamical Uncertainty ** Mixed $\mathcal{H}_2/\mathcal{H}_\infty$ Synthesis ** Super Sensor Noise and Dynamical Uncertainty * Conclusion <> * Acknowledgment * Bibliography :ignore: \bibliography{ref}