Last update before submission

This commit is contained in:
Thomas Dehaeze 2021-09-01 17:00:12 +02:00
parent 616652f67a
commit 4769d4b57f
5 changed files with 634 additions and 698 deletions

File diff suppressed because it is too large Load Diff

View File

@ -113,12 +113,6 @@ freqs = logspace(-1, 3, 1000);
#+begin_src matlab :tangle no
addpath('./matlab');
addpath('./matlab/src');
#+end_src
#+begin_src matlab :eval no
%% Add functions to path
addpath('./src');
#+end_src
** Design of Weighting Function - Proposed formula
@ -407,12 +401,6 @@ freqs = logspace(-3, 0, 1000);
#+begin_src matlab :tangle no
addpath('./matlab');
addpath('./matlab/src');
#+end_src
#+begin_src matlab :eval no
%% Add functions to path
addpath('./src');
#+end_src
** Specifications
@ -949,12 +937,6 @@ freqs = logspace(-1, 3, 1000);
#+begin_src matlab :tangle no
addpath('./matlab');
addpath('./matlab/src');
#+end_src
#+begin_src matlab :eval no
%% Add functions to path
addpath('./src');
#+end_src
** Weighting Function design
@ -1126,11 +1108,6 @@ freqs = logspace(-2, 3, 1000);
#+begin_src matlab :tangle no
addpath('./matlab');
addpath('./matlab/src');
#+end_src
#+begin_src matlab :eval no
addpath('./src');
#+end_src
** Synthesis Architecture
@ -1365,7 +1342,7 @@ This scripts corresponds to section 5.2 of cite:dehaeze21_new_method_desig_compl
** =generateWF=: Generate Weighting Functions
:PROPERTIES:
:header-args:matlab+: :tangle matlab/src/generateWF.m
:header-args:matlab+: :tangle matlab/generateWF.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:CUSTOM_ID: sec:generateWF
:END:
@ -1420,7 +1397,7 @@ function mustBeBetween(a,b,c)
** =generateCF=: Generate Complementary Filters
:PROPERTIES:
:header-args:matlab+: :tangle matlab/src/generateCF.m
:header-args:matlab+: :tangle matlab/generateCF.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:CUSTOM_ID: sec:generateCF
:END:
@ -1463,5 +1440,8 @@ P = [W1 -W1;
%% H1 is defined as the complementary of H2
H1 = 1 - H2;
#+end_src
* Bibliography :ignore:
bibliography:ref.bib
#+latex: \printbibliography

View File

@ -1,4 +1,4 @@
% Created 2021-09-01 mer. 14:59
% Created 2021-09-01 mer. 16:57
% Intended LaTeX compiler: pdflatex
\documentclass[a4paper, 10pt, DIV=12, parskip=full]{scrreprt}
\usepackage[utf8]{inputenc}
@ -47,7 +47,7 @@ This document is divided into the following sections also corresponding to the p
\chapter{H-Infinity synthesis of complementary filters}
\label{sec:h_inf_synthesis_complementary_filters}
\section{Synthesis Architecture}
\label{sec:orgbe50759}
\label{sec:org7b3f474}
In order to generate two complementary filters with a wanted shape, the generalized plant of Figure \ref{fig:h_infinity_robust_fusion_plant} can be used.
The included weights \(W_1(s)\) and \(W_2(s)\) are used to specify the upper bounds of the complementary filters being generated.
@ -93,7 +93,7 @@ The presented synthesis method therefore allows to shape two filters \(H_1(s)\)
The complete Matlab script for this part is given in Section \ref{sec:1_synthesis_complementary_filters}.
\section{Design of Weighting Function - Proposed formula}
\label{sec:orgde64d6c}
\label{sec:org69d0d73}
A formula is proposed to help the design of the weighting functions:
\begin{equation}
W(s) = \left( \frac{
@ -120,7 +120,7 @@ The general shape of a weighting function generated using the formula is shown i
\end{figure}
\section{Weighting functions for the design of two complementary filters}
\label{sec:orgc65c135}
\label{sec:org244c0a4}
\label{sec:weighting_functions_example}
The weighting function formula \eqref{eq:weighting_function_formula} is used to generate the upper bounds of two complementary filters that we wish to design.
@ -142,7 +142,7 @@ The inverse magnitude of these two weighting functions are shown in Figure \ref{
\end{figure}
\section{Synthesis of the complementary filters}
\label{sec:orgc8c8834}
\label{sec:org3378b49}
The generalized plant of Figure \ref{fig:h_infinity_robust_fusion_plant} is defined as follows:
\begin{minted}[]{matlab}
%% Generalized Plant
@ -198,7 +198,7 @@ This function is described in Section \ref{sec:generateCF}.
\end{minted}
\section{Obtained Complementary Filters}
\label{sec:orgc2b3de0}
\label{sec:orgb52f55e}
The obtained complementary filters are shown below and are found to be of order 5.
Their bode plots are shown in figure \ref{fig:hinf_filters_results} and compare with the defined upper bounds.
@ -231,7 +231,7 @@ In this section, the proposed method for the design of complementary filters is
The complete Matlab script for this part is given in Section \ref{sec:2_ligo_complementary_filters}.
\section{Specifications}
\label{sec:orgeaf463d}
\label{sec:orgc6bd7b2}
The specifications for the set of complementary filters (\(L_1,H_1\)) used at the LIGO are summarized below (for further details, refer to \cite{hua04_polyp_fir_compl_filter_contr_system}):
\begin{itemize}
\item From 0 to 0.008 Hz, the magnitude \(|L_1(j\omega)|\) should be less or equal to \(8 \times 10^{-4}\)
@ -249,7 +249,7 @@ The specifications are translated into upper bounds of the complementary filters
\end{figure}
\section{FIR Filter}
\label{sec:orge501c41}
\label{sec:orgef72f87}
To replicated the complementary filters developed in \cite{hua04_low_ligo}, the CVX Matlab toolbox \cite{grant14_cvx} is used.
The CVX toolbox is initialized and the \texttt{SeDuMi} solver \cite{sturm99_using_sedum} is used.
@ -409,7 +409,7 @@ H = [exp(-j*kron(w'.*2*pi,[0:n-1]))]*h;
\end{figure}
\section{Weighting function design}
\label{sec:orge7a3d56}
\label{sec:orgcbee7b7}
The weightings function that will be used for the \(\mathcal{H}_\infty\) synthesis of the complementary filters are now designed.
These weights will determine the order of the obtained filters.
@ -466,7 +466,7 @@ The inverse magnitude of the weighting functions are shown in Figure \ref{fig:li
\end{figure}
\section{Synthesis of the complementary filters}
\label{sec:orge44276c}
\label{sec:org8f9014e}
The generalized plant of figure \ref{fig:h_infinity_robust_fusion_plant} is defined.
\begin{minted}[]{matlab}
%% Generalized plant for the H-infinity Synthesis
@ -533,7 +533,7 @@ The magnitude of the obtained filters as well as the requirements are shown in F
\end{figure}
\section{Comparison of the FIR filters and synthesized filters}
\label{sec:orgc915ecf}
\label{sec:org6367ef0}
Let's now compare the FIR filters designed in \cite{hua04_low_ligo} with the with complementary filters obtained with the \(\mathcal{H}_\infty\) synthesis.
@ -558,7 +558,7 @@ In this section, the classical feedback architecture shown in Figure \ref{fig:fe
The complete Matlab script for this part is given in Section \ref{sec:3_closed_loop_complementary_filters}.
\section{Weighting Function design}
\label{sec:org62f8027}
\label{sec:org856a399}
Weighting functions using the \texttt{generateWF} Matlab function are designed to specify the upper bounds of the complementary filters to be designed.
These weighting functions are the same as the ones used in Section \ref{sec:weighting_functions_example}.
@ -569,7 +569,7 @@ W2 = generateWF('n', 2, 'w0', 2*pi*10, 'G0', 1/10, 'Ginf', 1000, 'Gc', 0.45);
\end{minted}
\section{Generalized plant}
\label{sec:orgb431bb1}
\label{sec:orgbba676f}
The generalized plant of Figure \ref{fig:feedback_synthesis_architecture_generalized_plant} is defined below:
\begin{minted}[]{matlab}
%% Generalized plant for "closed-loop" complementary filter synthesis
@ -584,7 +584,7 @@ P = [ W1 0 1;
\end{figure}
\section{Synthesis of the closed-loop complementary filters}
\label{sec:orga0ede8a}
\label{sec:org44dc95f}
And the standard \(\mathcal{H}_\infty\) synthesis is performed.
\begin{minted}[]{matlab}
%% Standard H-Infinity Synthesis
@ -614,7 +614,7 @@ And the standard \(\mathcal{H}_\infty\) synthesis is performed.
\end{verbatim}
\section{Synthesized filters}
\label{sec:org174b330}
\label{sec:org9e70c62}
The obtained filter \(L(s)\) can then be included in the feedback architecture shown in Figure \ref{fig:hinf_filters_results_mixed_sensitivity}.
The closed-loop transfer functions from \(\hat{x}_1\) to \(\hat{x}\) and from \(\hat{x}_2\) to \(\hat{x}\) corresponding respectively to the sensitivity and complementary sensitivity transfer functions are defined below:
@ -651,7 +651,7 @@ In this section, the proposed synthesis method of complementary filters is gener
The complete Matlab script for this part is given in Section \ref{sec:4_three_complementary_filters}.
\section{Synthesis Architecture}
\label{sec:org8851ed2}
\label{sec:orgc4d55c9}
The synthesis objective is to shape three filters that are complementary.
This corresponds to the conditions \eqref{eq:obj_three_cf} where \(W_1(s)\), \(W_2(s)\) and \(W_3(s)\) are weighting functions used to specify the maximum wanted magnitude of the three complementary filters.
@ -680,7 +680,7 @@ The last filter \(H_1(s)\) is defined as the complementary of the two others as
\end{equation}
\section{Weights}
\label{sec:orgca84b75}
\label{sec:orgf866c06}
The three weighting functions are defined as shown below.
\begin{minted}[]{matlab}
@ -699,7 +699,7 @@ Their inverse magnitudes are displayed in Figure \ref{fig:three_weighting_functi
\end{figure}
\section{H-Infinity Synthesis}
\label{sec:org65e90d4}
\label{sec:org0db8a8c}
The generalized plant in Figure \ref{fig:comp_filter_three_hinf} containing the weighting functions is defined below.
@ -780,9 +780,6 @@ s = zpk('s');
%% Initialize Frequency Vector
freqs = logspace(-1, 3, 1000);
%% Add functions to path
addpath('./src');
%% Weighting Function Design
% Parameters
n = 3; w0 = 2*pi*10; G0 = 1e-3; G1 = 1e1; Gc = 2;
@ -818,8 +815,8 @@ ylim([5e-4, 20]);
yticks([1e-4, 1e-3, 1e-2, 1e-1, 1, 1e1]);
%% Design of the Weighting Functions
W1 = generateWF('n', 3, 'w0', 2*pi*10, 'G0', 1000, 'G1', 1/10, 'Gc', 0.45);
W2 = generateWF('n', 2, 'w0', 2*pi*10, 'G0', 1/10, 'G1', 1000, 'Gc', 0.45);
W1 = generateWF('n', 3, 'w0', 2*pi*10, 'G0', 1000, 'Ginf', 1/10, 'Gc', 0.45);
W2 = generateWF('n', 2, 'w0', 2*pi*10, 'G0', 1/10, 'Ginf', 1000, 'Gc', 0.45);
%% Plot of the Weighting function magnitude
figure;
@ -910,9 +907,6 @@ s = zpk('s');
%% Initialize Frequency Vector
freqs = logspace(-3, 0, 1000);
%% Add functions to path
addpath('./src');
%% Upper bounds for the complementary filters
figure;
hold on;
@ -1175,12 +1169,9 @@ s = zpk('s');
%% Initialize Frequency Vector
freqs = logspace(-1, 3, 1000);
%% Add functions to path
addpath('./src');
%% Design of the Weighting Functions
W1 = generateWF('n', 3, 'w0', 2*pi*10, 'G0', 1000, 'G1', 1/10, 'Gc', 0.45);
W2 = generateWF('n', 2, 'w0', 2*pi*10, 'G0', 1/10, 'G1', 1000, 'Gc', 0.45);
W1 = generateWF('n', 3, 'w0', 2*pi*10, 'G0', 1000, 'Ginf', 1/10, 'Gc', 0.45);
W2 = generateWF('n', 2, 'w0', 2*pi*10, 'G0', 1/10, 'Ginf', 1000, 'Gc', 0.45);
%% Generalized plant for "closed-loop" complementary filter synthesis
P = [ W1 0 1;
@ -1252,15 +1243,10 @@ s = zpk('s');
freqs = logspace(-2, 3, 1000);
addpath('./src');
% Weights
% First we define the weights.
%% Design of the Weighting Functions
W1 = generateWF('n', 2, 'w0', 2*pi*1, 'G0', 1/10, 'G1', 1000, 'Gc', 0.5);
W1 = generateWF('n', 2, 'w0', 2*pi*1, 'G0', 1/10, 'Ginf', 1000, 'Gc', 0.5);
W2 = 0.22*(1 + s/2/pi/1)^2/(sqrt(1e-4) + s/2/pi/1)^2*(1 + s/2/pi/10)^2/(1 + s/2/pi/1000)^2;
W3 = generateWF('n', 3, 'w0', 2*pi*10, 'G0', 1000, 'G1', 1/10, 'Gc', 0.5);
W3 = generateWF('n', 3, 'w0', 2*pi*10, 'G0', 1000, 'Ginf', 1/10, 'Gc', 0.5);
%% Inverse magnitude of the weighting functions
figure;
@ -1278,28 +1264,20 @@ xlim([freqs(1), freqs(end)]); ylim([2e-4, 1.3e1])
leg = legend('location', 'northeast', 'FontSize', 8);
leg.ItemTokenSize(1) = 18;
% H-Infinity Synthesis
% Then we create the generalized plant =P=.
%% Generalized plant for the synthesis of 3 complementary filters
P = [W1 -W1 -W1;
0 W2 0 ;
0 0 W3;
1 0 0];
% And we do the $\mathcal{H}_\infty$ synthesis.
%% Standard H-Infinity Synthesis
[H, ~, gamma, ~] = hinfsyn(P, 1, 2,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
% Obtained Complementary Filters
% The obtained filters are:
%%
%% Synthesized H2 and H3 filters
H2 = tf(H(1));
H3 = tf(H(2));
%% H1 is defined as the complementary filter of H2 and H3
H1 = 1 - H2 - H3;
%% Bode plot of the obtained complementary filters
@ -1438,5 +1416,6 @@ P = [W1 -W1;
%% H1 is defined as the complementary of H2
H1 = 1 - H2;
\end{minted}
\printbibliography
\end{document}

View File

@ -12,15 +12,13 @@
organization = {International Society for Optics and Photonics},
}
@inproceedings{dehaeze21_new_method_desig_compl_filter,
@article{dehaeze21_new_method_desig_compl_filter,
author = {Dehaeze, Thomas and Vermat, Mohit and Collette, Christophe},
title = {A New Method of Designing Complementary Filters for Sensor
Fusion Using the $\mathcal{H}_\infty$ Synthesis},
booktitle = {Gravitational Wave and Particle Astrophysics Detectors},
year = 2004,
volume = 5500,
pages = {194--205},
organization = {International Society for Optics and Photonics},
Fusion Using the H-Infinity Synthesis},
journal = {Mechanical Systems and Signal Processing},
year = 2021,
month = {Nov},
}
@book{matlab20,