dehaeze20_optim_robus_compl.../paper/paper.org

371 lines
14 KiB
Org Mode
Raw Normal View History

2020-09-22 11:29:13 +02:00
#+TITLE: Optimal and Robust Sensor Fusion
2019-08-14 12:08:30 +02:00
:DRAWER:
2020-08-17 17:56:40 +02:00
#+LATEX_CLASS: IEEEtran
#+LATEX_CLASS_OPTIONS: [conference]
#+OPTIONS: toc:nil todo:nil
2019-08-14 12:08:30 +02:00
#+STARTUP: overview
#+DATE: {{{time(%Y-%m-%d)}}}
2020-08-17 17:56:40 +02:00
#+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}{--}
2020-08-19 10:43:56 +02:00
#+LATEX_HEADER_EXTRA: \usepackage{showframe}
2020-08-17 17:56:40 +02:00
#+LATEX_HEADER: \def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
2019-08-14 12:08:30 +02:00
\bibliographystyle{IEEEtran}
:END:
2020-09-22 21:58:37 +02:00
* LaTeX Config :noexport:
2019-08-14 12:08:30 +02:00
#+begin_src latex :tangle config.tex
#+end_src
2020-09-22 21:58:37 +02:00
* Build :noexport:
#+NAME: startblock
2019-08-14 12:08:30 +02:00
#+BEGIN_SRC emacs-lisp :results none
(add-to-list 'org-latex-classes
2020-08-17 17:56:40 +02:00
'("IEEEtran"
"\\documentclass{IEEEtran}"
2019-08-14 12:08:30 +02:00
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
)
2020-08-17 17:56:40 +02:00
(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)
2019-08-14 12:08:30 +02:00
#+END_SRC
2020-09-22 21:58:37 +02:00
* Abstract :ignore:
2019-08-14 12:08:30 +02:00
#+begin_abstract
Abstract text to be done
#+end_abstract
2020-08-17 17:56:40 +02:00
* Keywords :ignore:
2019-08-14 12:08:30 +02:00
#+begin_IEEEkeywords
2020-08-17 17:56:40 +02:00
Complementary Filters, Sensor Fusion, H-Infinity Synthesis
2019-08-14 12:08:30 +02:00
#+end_IEEEkeywords
* Introduction
2020-08-17 15:58:25 +02:00
<<sec:introduction>>
2019-08-14 12:08:30 +02:00
2020-09-22 11:29:13 +02:00
- Section ref:sec:optimal_fusion
- Section ref:sec:robust_fusion
- Section ref:sec:optimal_robust_fusion
- Section ref:sec:experimental_validation
2020-08-17 15:58:25 +02:00
* Optimal Super Sensor Noise: $\mathcal{H}_2$ Synthesis
<<sec:optimal_fusion>>
2019-08-14 12:08:30 +02:00
2020-08-19 10:43:56 +02:00
** Sensor Model
2020-09-22 21:58:37 +02:00
Let's consider a sensor measuring a physical quantity $x$ (Figure ref:fig:sensor_model_noise).
2020-09-22 11:29:13 +02:00
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}
2020-09-22 21:58:37 +02:00
\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}
2020-09-22 11:29:13 +02:00
\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}
2020-09-22 21:58:37 +02:00
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):
2020-09-22 11:29:13 +02:00
\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}
2020-09-22 21:58:37 +02:00
#+name: fig:sensor_model_noise
2020-09-22 11:29:13 +02:00
#+caption: Sensor Model
#+attr_latex: :scale 1
2020-09-22 21:58:37 +02:00
[[file:figs/sensor_model_noise.pdf]]
2020-09-22 11:29:13 +02:00
2020-08-17 15:58:25 +02:00
** Sensor Fusion Architecture
2019-08-14 12:08:30 +02:00
2020-09-22 21:58:37 +02:00
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).
2020-09-22 11:29:13 +02:00
The noise sources $\tilde{n}_1$ and $\tilde{n}_2$ are considered to be uncorrelated.
2020-08-17 17:56:40 +02:00
#+name: fig:sensor_fusion_noise_arch
2020-09-22 10:15:26 +02:00
#+caption: Sensor Fusion Architecture with sensor noise
2020-08-17 17:56:40 +02:00
#+attr_latex: :scale 1
[[file:figs/sensor_fusion_noise_arch.pdf]]
2020-09-22 11:29:13 +02:00
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}$.
2020-09-22 10:15:26 +02:00
2020-08-19 10:43:56 +02:00
\begin{equation}
2020-09-22 11:29:13 +02:00
\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}
2020-08-19 10:43:56 +02:00
\end{equation}
Suppose the sensor dynamical model $\hat{G}_i$ is perfect:
\begin{equation}
\hat{G}_i = G_i
\end{equation}
2020-09-22 11:29:13 +02:00
We considered here complementary filters:
2020-08-19 10:43:56 +02:00
\begin{equation}
H_1(s) + H_2(s) = 1
\end{equation}
2020-09-22 11:29:13 +02:00
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:
2020-08-19 10:43:56 +02:00
\begin{equation}
2020-09-22 10:17:50 +02:00
\hat{x} = x + \left( H_1 N_1 \right) \tilde{n}_1 + \left( H_2 N_2 \right) \tilde{n}_2
2020-08-19 10:43:56 +02:00
\end{equation}
2020-08-17 15:58:25 +02:00
** Super Sensor Noise
2020-08-19 10:43:56 +02:00
Let's note $n$ the super sensor noise.
2020-09-22 11:29:13 +02:00
\begin{equation}
n = \left( H_1 N_1 \right) \tilde{n}_1 + \left( H_2 N_2 \right) \tilde{n}_2
\end{equation}
2020-08-19 10:43:56 +02:00
2020-09-22 11:29:13 +02:00
As the noise of both sensors are considered to be uncorrelated, the PSD of the super sensor noise is computed as follow:
2020-08-19 10:43:56 +02:00
\begin{equation}
2020-09-22 10:17:50 +02:00
\Phi_n(\omega) = \left| H_1 N_1 \right|^2 + \left| H_2 N_2 \right|^2
2020-08-19 10:43:56 +02:00
\end{equation}
2020-09-22 11:29:13 +02:00
It is clear that the PSD of the super sensor depends on the norm of the complementary filters.
2019-08-14 12:08:30 +02:00
2020-09-22 11:29:13 +02:00
** $\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}$.
2020-08-19 10:43:56 +02:00
And the goal is the minimize the Root Mean Square (RMS) value of $n$:
#+name: eq:rms_value_estimation
\begin{equation}
2020-09-22 11:29:13 +02:00
\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
2020-08-19 10:43:56 +02:00
\end{equation}
2020-09-22 11:29:13 +02:00
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.
2020-08-19 10:43:56 +02:00
2020-09-22 21:58:37 +02:00
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):
2020-08-19 10:43:56 +02:00
\begin{equation}
2020-09-22 09:51:26 +02:00
\begin{pmatrix}
z_1 \\ z_2 \\ v
2020-09-22 11:29:13 +02:00
\end{pmatrix} = \underbrace{\begin{bmatrix}
2020-09-22 10:17:50 +02:00
N_1 & N_1 \\
0 & N_2 \\
1 & 0
2020-09-22 11:29:13 +02:00
\end{bmatrix}}_{P_{\mathcal{H}_2}} \begin{pmatrix}
2020-09-22 09:51:26 +02:00
w \\ u
\end{pmatrix}
2020-08-19 10:43:56 +02:00
\end{equation}
2020-09-22 11:29:13 +02:00
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.
2020-08-19 10:43:56 +02:00
2020-08-17 17:56:40 +02:00
#+name: fig:h_two_optimal_fusion
2020-09-22 10:15:26 +02:00
#+caption: Generalized plant $P_{\mathcal{H}_2}$ used for the $\mathcal{H}_2$ synthesis of complementary filters
2020-08-17 17:56:40 +02:00
#+attr_latex: :scale 1
[[file:figs/h_two_optimal_fusion.pdf]]
2020-08-17 15:58:25 +02:00
** Example
2019-08-14 12:08:30 +02:00
2020-08-17 15:58:25 +02:00
** Robustness Problem
2019-08-14 12:08:30 +02:00
2020-08-17 15:58:25 +02:00
* Robust Sensor Fusion: $\mathcal{H}_\infty$ Synthesis
<<sec:robust_fusion>>
2019-08-14 12:08:30 +02:00
2020-08-17 15:58:25 +02:00
** Representation of Sensor Dynamical Uncertainty
2019-08-14 12:08:30 +02:00
2020-09-22 21:58:37 +02:00
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:
2020-09-22 10:15:26 +02:00
\begin{equation}
2020-09-22 21:58:37 +02:00
G_i(s) = \hat{G}_i(s) \left( 1 + W_i(s) \Delta_i(s) \right); \quad |\Delta_i(j\omega)| < 1 \forall \omega
2020-09-22 10:15:26 +02:00
\end{equation}
2020-09-22 21:58:37 +02:00
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$.
2020-09-22 10:15:26 +02:00
2020-09-22 21:58:37 +02:00
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]]
2020-09-22 10:15:26 +02:00
2020-09-22 09:51:26 +02:00
** Sensor Fusion Architecture
2020-09-22 21:58:37 +02:00
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.
2020-09-22 09:51:26 +02:00
2020-09-22 21:58:37 +02:00
The super sensor estimate is then:
2020-09-22 09:51:26 +02:00
\begin{equation}
2020-09-22 21:58:37 +02:00
\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}
2020-09-22 09:51:26 +02:00
\end{equation}
2020-09-22 21:58:37 +02:00
with $\Delta_i$ is any transfer function satisfying $\| \Delta_i \|_\infty < 1$.
2020-09-22 09:51:26 +02:00
2020-09-22 21:58:37 +02:00
As $H_1$ and $H_2$ are complementary filters, we finally have:
2020-09-22 09:51:26 +02:00
\begin{equation}
2020-09-22 21:58:37 +02:00
\hat{x} = \left( 1 + H_1 W_1 \Delta_1 + H_2 W_2 \Delta_2 \right) x, \quad \|\Delta_i\|_\infty<1
2020-09-22 09:51:26 +02:00
\end{equation}
2020-08-17 17:56:40 +02:00
#+name: fig:sensor_fusion_arch_uncertainty
2020-09-22 10:15:26 +02:00
#+caption: Sensor Fusion Architecture with sensor model uncertainty
2020-08-17 17:56:40 +02:00
#+attr_latex: :scale 1
[[file:figs/sensor_fusion_arch_uncertainty.pdf]]
2020-08-17 15:58:25 +02:00
** Super Sensor Dynamical Uncertainty
2019-08-14 12:08:30 +02:00
2020-09-22 21:58:37 +02:00
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.
2020-09-22 09:51:26 +02:00
2020-08-17 17:56:40 +02:00
#+name: fig:uncertainty_set_super_sensor
2020-09-22 10:15:26 +02:00
#+caption: Super Sensor model uncertainty displayed in the complex plane
2020-08-17 17:56:40 +02:00
#+attr_latex: :scale 1
[[file:figs/uncertainty_set_super_sensor.pdf]]
2020-09-22 21:58:37 +02:00
# Some comments on the weights
At frequencies where $\left|W_i(j\omega)\right| > 1$ the uncertainty exceeds $100\%$ and sensor fusion is impossible.
2020-08-17 15:58:25 +02:00
** $\mathcal{H_\infty}$ Synthesis of Complementary Filters
2020-09-22 21:58:37 +02:00
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.
This problem can be dealt with an $\mathcal{H}_\infty$ synthesis problem by considering the following generalized plant:
\begin{equation}
\begin{pmatrix}
z_1 \\ z_2 \\ v
\end{pmatrix} = \underbrace{\begin{bmatrix}
W_1 & W_1 \\
0 & 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_1 (1 - H_2) \\ 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}
2019-08-14 12:08:30 +02:00
2020-09-22 09:51:26 +02:00
2020-08-17 17:56:40 +02:00
#+name: fig:h_infinity_robust_fusion
2020-09-22 10:15:26 +02:00
#+caption: Generalized plant $P_{\mathcal{H}_\infty}$ used for the $\mathcal{H}_\infty$ synthesis of complementary filters
2020-08-17 17:56:40 +02:00
#+attr_latex: :scale 1
[[file:figs/h_infinity_robust_fusion.pdf]]
2020-08-17 15:58:25 +02:00
** Example
2019-08-14 12:08:30 +02:00
2020-09-22 21:58:37 +02:00
# Comments on the choice of the weights => we cannot ask for less uncertainty than both sensors
2020-08-17 15:58:25 +02:00
* Optimal and Robust Sensor Fusion: Mixed $\mathcal{H}_2/\mathcal{H}_\infty$ Synthesis
<<sec:optimal_robust_fusion>>
2019-08-14 12:08:30 +02:00
2020-08-17 15:58:25 +02:00
** Sensor Fusion Architecture
2019-08-14 12:08:30 +02:00
2020-09-22 21:58:37 +02:00
#+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]]
2020-08-17 17:56:40 +02:00
#+name: fig:sensor_fusion_arch_full
2020-09-22 10:15:26 +02:00
#+caption: Super Sensor Fusion with both sensor noise and sensor model uncertainty
2020-08-17 17:56:40 +02:00
#+attr_latex: :scale 1
[[file:figs/sensor_fusion_arch_full.pdf]]
2020-08-17 15:58:25 +02:00
** Synthesis Objective
2019-08-14 12:08:30 +02:00
2020-08-17 15:58:25 +02:00
** Mixed $\mathcal{H}_2/\mathcal{H}_\infty$ Synthesis
2019-08-14 12:08:30 +02:00
2020-08-17 17:56:40 +02:00
#+name: fig:mixed_h2_hinf_synthesis
2020-09-22 10:15:26 +02:00
#+caption: Generalized plant $P_{\mathcal{H}_2/\matlcal{H}_\infty}$ used for the mixed $\mathcal{H}_2/\mathcal{H}_\infty$ synthesis of complementary filters
2020-08-17 17:56:40 +02:00
#+attr_latex: :scale 1
[[file:figs/mixed_h2_hinf_synthesis.pdf]]
2020-08-17 15:58:25 +02:00
** Example
2019-08-14 12:08:30 +02:00
2020-08-17 15:58:25 +02:00
* Experimental Validation
<<sec:experimental_validation>>
2019-08-14 12:08:30 +02:00
2020-08-17 15:58:25 +02:00
** Experimental Setup
2019-08-14 12:08:30 +02:00
2020-08-17 15:58:25 +02:00
** Sensor Noise and Dynamical Uncertainty
2019-08-14 12:08:30 +02:00
2020-08-17 15:58:25 +02:00
** Mixed $\mathcal{H}_2/\mathcal{H}_\infty$ Synthesis
2019-08-14 12:08:30 +02:00
2020-08-17 15:58:25 +02:00
** Super Sensor Noise and Dynamical Uncertainty
2019-08-14 12:08:30 +02:00
* Conclusion
2020-08-17 15:58:25 +02:00
<<sec:conclusion>>
2019-08-14 12:08:30 +02:00
* Acknowledgment
* Bibliography :ignore:
\bibliography{ref}