Last update before submission
This commit is contained in:
parent
616652f67a
commit
4769d4b57f
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
Binary file not shown.
@ -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}
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user