Update title

This commit is contained in:
2021-09-02 10:04:16 +02:00
parent 504f0d7935
commit 572e1d5abd
8 changed files with 202 additions and 216 deletions

View File

@@ -3,9 +3,9 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2021-09-01 mer. 16:59 -->
<!-- 2021-09-02 jeu. 10:04 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>A new method of designing complementary filters for sensor fusion using the $\mathcal{H}_\infty$ synthesis - Matlab Computation</title>
<title>Designing Complementary filters for sensor fusion using $\mathcal{H}_\infty$ synthesis - Matlab Computation</title>
<meta name="author" content="Dehaeze Thomas" />
<meta name="generator" content="Org Mode" />
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
@@ -34,42 +34,42 @@
|
<a accesskey="H" href="../index.html"> HOME </a>
</div><div id="content" class="content">
<h1 class="title">A new method of designing complementary filters for sensor fusion using the \(\mathcal{H}_\infty\) synthesis - Matlab Computation</h1>
<h1 class="title">Designing Complementary filters for sensor fusion using \(\mathcal{H}_\infty\) synthesis - Matlab Computation</h1>
<div id="table-of-contents" role="doc-toc">
<h2>Table of Contents</h2>
<div id="text-table-of-contents" role="doc-toc">
<ul>
<li><a href="#sec:h_inf_synthesis_complementary_filters">1. H-Infinity synthesis of complementary filters</a>
<ul>
<li><a href="#org039cf66">1.1. Synthesis Architecture</a></li>
<li><a href="#org5504635">1.2. Design of Weighting Function - Proposed formula</a></li>
<li><a href="#orgbe5ea75">1.3. Weighting functions for the design of two complementary filters</a></li>
<li><a href="#org93a8bd3">1.4. Synthesis of the complementary filters</a></li>
<li><a href="#orgd4544b8">1.5. Obtained Complementary Filters</a></li>
<li><a href="#orgc4b4c6d">1.1. Synthesis Architecture</a></li>
<li><a href="#org99141ab">1.2. Design of Weighting Function - Proposed formula</a></li>
<li><a href="#orge755bd5">1.3. Weighting functions for the design of two complementary filters</a></li>
<li><a href="#orgbd5024b">1.4. Synthesis of the complementary filters</a></li>
<li><a href="#org8eadcab">1.5. Obtained Complementary Filters</a></li>
</ul>
</li>
<li><a href="#sec:comp_filters_ligo">2. Design of complementary filters used in the Active Vibration Isolation System at the LIGO</a>
<ul>
<li><a href="#org0ef35df">2.1. Specifications</a></li>
<li><a href="#org86f81f8">2.2. FIR Filter</a></li>
<li><a href="#orga3462b9">2.3. Weighting function design</a></li>
<li><a href="#org2d35692">2.4. Synthesis of the complementary filters</a></li>
<li><a href="#org2d8f858">2.5. Comparison of the FIR filters and synthesized filters</a></li>
<li><a href="#org775cee5">2.1. Specifications</a></li>
<li><a href="#org6402809">2.2. FIR Filter</a></li>
<li><a href="#orge47e4d1">2.3. Weighting function design</a></li>
<li><a href="#org5ef288a">2.4. Synthesis of the complementary filters</a></li>
<li><a href="#org71076fb">2.5. Comparison of the FIR filters and synthesized filters</a></li>
</ul>
</li>
<li><a href="#sec:closed_loop_complementary_filters">3. &ldquo;Closed-Loop&rdquo; complementary filters</a>
<ul>
<li><a href="#orgafe7677">3.1. Weighting Function design</a></li>
<li><a href="#org746a218">3.2. Generalized plant</a></li>
<li><a href="#org18bfdfc">3.3. Synthesis of the closed-loop complementary filters</a></li>
<li><a href="#orge450acb">3.4. Synthesized filters</a></li>
<li><a href="#orgfa47886">3.1. Weighting Function design</a></li>
<li><a href="#org43ccb7c">3.2. Generalized plant</a></li>
<li><a href="#orgbf556a9">3.3. Synthesis of the closed-loop complementary filters</a></li>
<li><a href="#org426fd90">3.4. Synthesized filters</a></li>
</ul>
</li>
<li><a href="#sec:three_comp_filters">4. Synthesis of three complementary filters</a>
<ul>
<li><a href="#orga9cd2fd">4.1. Synthesis Architecture</a></li>
<li><a href="#orged7fb64">4.2. Weights</a></li>
<li><a href="#org0eb6887">4.3. H-Infinity Synthesis</a></li>
<li><a href="#org23dc1a0">4.1. Synthesis Architecture</a></li>
<li><a href="#orgf36e7cb">4.2. Weights</a></li>
<li><a href="#org8bb1bfb">4.3. H-Infinity Synthesis</a></li>
</ul>
</li>
<li><a href="#sec:matlab_scripts">5. Matlab Scripts</a>
@@ -110,27 +110,27 @@ This document is divided into the following sections also corresponding to the p
<div class="outline-text-2" id="text-sec:h_inf_synthesis_complementary_filters">
</div>
<div id="outline-container-org039cf66" class="outline-3">
<h3 id="org039cf66"><span class="section-number-3">1.1.</span> Synthesis Architecture</h3>
<div id="outline-container-orgc4b4c6d" class="outline-3">
<h3 id="orgc4b4c6d"><span class="section-number-3">1.1.</span> Synthesis Architecture</h3>
<div class="outline-text-3" id="text-1-1">
<p>
In order to generate two complementary filters with a wanted shape, the generalized plant of Figure <a href="#org8ec6b4a">1</a> can be used.
In order to generate two complementary filters with a wanted shape, the generalized plant of Figure <a href="#org938abd0">1</a> 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.
</p>
<div id="org8ec6b4a" class="figure">
<div id="org938abd0" class="figure">
<p><img src="figs-journal/h_infinity_robust_fusion_plant.png" alt="h_infinity_robust_fusion_plant.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Generalized plant used for the \(\mathcal{H}_\infty\) synthesis of a set of two complementary fiters</p>
</div>
<p>
Applied the standard \(\mathcal{H}_\infty\) synthesis on this generalized plant will give a transfer function \(H_2(s)\) (see Figure <a href="#org38fe996">2</a>) such that the \(\mathcal{H}_\infty\) norm of the transfer function from \(w\) to \([z_1,\ z_2]\) is less than one \eqref{eq:h_inf_objective}.
Applied the standard \(\mathcal{H}_\infty\) synthesis on this generalized plant will give a transfer function \(H_2(s)\) (see Figure <a href="#org133e437">2</a>) such that the \(\mathcal{H}_\infty\) norm of the transfer function from \(w\) to \([z_1,\ z_2]\) is less than one \eqref{eq:h_inf_objective}.
</p>
<div id="org38fe996" class="figure">
<div id="org133e437" class="figure">
<p><img src="figs-journal/h_infinity_robust_fusion_fb.png" alt="h_infinity_robust_fusion_fb.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Generalized plant with the synthesized filter obtained after the \(\mathcal{H}_\infty\) synthesis</p>
@@ -173,8 +173,8 @@ The complete Matlab script for this part is given in Section <a href="#sec:1_syn
</div>
</div>
<div id="outline-container-org5504635" class="outline-3">
<h3 id="org5504635"><span class="section-number-3">1.2.</span> Design of Weighting Function - Proposed formula</h3>
<div id="outline-container-org99141ab" class="outline-3">
<h3 id="org99141ab"><span class="section-number-3">1.2.</span> Design of Weighting Function - Proposed formula</h3>
<div class="outline-text-3" id="text-1-2">
<p>
A formula is proposed to help the design of the weighting functions:
@@ -198,11 +198,11 @@ The parameters permits to specify:
</ul>
<p>
The general shape of a weighting function generated using the formula is shown in figure <a href="#orga5d226a">3</a>.
The general shape of a weighting function generated using the formula is shown in figure <a href="#org652005a">3</a>.
</p>
<div id="orga5d226a" class="figure">
<div id="org652005a" class="figure">
<p><img src="figs/weight_formula.png" alt="weight_formula.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Magnitude of the weighting function generated using formula \eqref{eq:weighting_function_formula}</p>
@@ -210,11 +210,11 @@ The general shape of a weighting function generated using the formula is shown i
</div>
</div>
<div id="outline-container-orgbe5ea75" class="outline-3">
<h3 id="orgbe5ea75"><span class="section-number-3">1.3.</span> Weighting functions for the design of two complementary filters</h3>
<div id="outline-container-orge755bd5" class="outline-3">
<h3 id="orge755bd5"><span class="section-number-3">1.3.</span> Weighting functions for the design of two complementary filters</h3>
<div class="outline-text-3" id="text-1-3">
<p>
<a id="org3789fe5"></a>
<a id="orgbf8ba5a"></a>
</p>
<p>
@@ -233,11 +233,11 @@ W2 = generateWF(<span class="org-string">'n'</span>, 2, <span class="org-string"
</div>
<p>
The inverse magnitude of these two weighting functions are shown in Figure <a href="#org41b9a7a">4</a>.
The inverse magnitude of these two weighting functions are shown in Figure <a href="#org9dd5099">4</a>.
</p>
<div id="org41b9a7a" class="figure">
<div id="org9dd5099" class="figure">
<p><img src="figs/weights_W1_W2.png" alt="weights_W1_W2.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Inverse magnitude of the design weighting functions</p>
@@ -245,11 +245,11 @@ The inverse magnitude of these two weighting functions are shown in Figure <a hr
</div>
</div>
<div id="outline-container-org93a8bd3" class="outline-3">
<h3 id="org93a8bd3"><span class="section-number-3">1.4.</span> Synthesis of the complementary filters</h3>
<div id="outline-container-orgbd5024b" class="outline-3">
<h3 id="orgbd5024b"><span class="section-number-3">1.4.</span> Synthesis of the complementary filters</h3>
<div class="outline-text-3" id="text-1-4">
<p>
The generalized plant of Figure <a href="#org8ec6b4a">1</a> is defined as follows:
The generalized plant of Figure <a href="#org938abd0">1</a> is defined as follows:
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Generalized Plant</span>
@@ -268,7 +268,7 @@ And the \(\mathcal{H}_\infty\) synthesis is performed using the <code>hinfsyn</c
</pre>
</div>
<pre class="example" id="orgdbfdcce">
<pre class="example" id="orge151ac9">
[H2, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Test bounds: 0.3223 &lt;= gamma &lt;= 1000
@@ -318,15 +318,15 @@ This function is described in Section <a href="#sec:generateCF">5.6</a>.
</div>
</div>
<div id="outline-container-orgd4544b8" class="outline-3">
<h3 id="orgd4544b8"><span class="section-number-3">1.5.</span> Obtained Complementary Filters</h3>
<div id="outline-container-org8eadcab" class="outline-3">
<h3 id="org8eadcab"><span class="section-number-3">1.5.</span> Obtained Complementary Filters</h3>
<div class="outline-text-3" id="text-1-5">
<p>
The obtained complementary filters are shown below and are found to be of order 5.
Their bode plots are shown in figure <a href="#org1c88e24">5</a> and compare with the defined upper bounds.
Their bode plots are shown in figure <a href="#org2c627be">5</a> and compare with the defined upper bounds.
</p>
<pre class="example" id="org6f67900">
<pre class="example" id="orgfedb8df">
zpk(H1)
ans =
@@ -343,7 +343,7 @@ ans =
</pre>
<div id="org1c88e24" class="figure">
<div id="org2c627be" class="figure">
<p><img src="figs/hinf_filters_results.png" alt="hinf_filters_results.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Obtained complementary filters using \(\mathcal{H}_\infty\) synthesis</p>
@@ -364,8 +364,8 @@ The complete Matlab script for this part is given in Section <a href="#sec:2_lig
</p>
</div>
<div id="outline-container-org0ef35df" class="outline-3">
<h3 id="org0ef35df"><span class="section-number-3">2.1.</span> Specifications</h3>
<div id="outline-container-org775cee5" class="outline-3">
<h3 id="org775cee5"><span class="section-number-3">2.1.</span> Specifications</h3>
<div class="outline-text-3" id="text-2-1">
<p>
The specifications for the set of complementary filters (\(L_1,H_1\)) used at the LIGO are summarized below (for further details, refer to (<a href="#citeproc_bib_item_4">Hua, Debra, et al. 2004</a>)):
@@ -378,11 +378,11 @@ The specifications for the set of complementary filters (\(L_1,H_1\)) used at th
</ul>
<p>
The specifications are translated into upper bounds of the complementary filters and are shown in Figure <a href="#org4e806e6">6</a>.
The specifications are translated into upper bounds of the complementary filters and are shown in Figure <a href="#org03607c6">6</a>.
</p>
<div id="org4e806e6" class="figure">
<div id="org03607c6" class="figure">
<p><img src="figs/ligo_specifications.png" alt="ligo_specifications.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Specification for the LIGO complementary filters</p>
@@ -390,8 +390,8 @@ The specifications are translated into upper bounds of the complementary filters
</div>
</div>
<div id="outline-container-org86f81f8" class="outline-3">
<h3 id="org86f81f8"><span class="section-number-3">2.2.</span> FIR Filter</h3>
<div id="outline-container-org6402809" class="outline-3">
<h3 id="org6402809"><span class="section-number-3">2.2.</span> FIR Filter</h3>
<div class="outline-text-3" id="text-2-2">
<p>
To replicated the complementary filters developed in (<a href="#citeproc_bib_item_3">Hua, Adhikari, et al. 2004</a>), the CVX Matlab toolbox (<a href="#citeproc_bib_item_2">Grant and Boyd 2014</a>) is used.
@@ -476,7 +476,7 @@ h = y(2<span class="org-builtin">:</span>end);
</pre>
</div>
<pre class="example" id="org8c893b5">
<pre class="example" id="orge5b954e">
cvx_begin
variable y(n+1,1)
% t
@@ -553,7 +553,7 @@ h = y(2:end);
</pre>
<p>
Finally, the filter response is computed over the frequency vector defined and the result is shown on figure <a href="#org4fd297c">7</a> which is very close to the filters obtain in (<a href="#citeproc_bib_item_3">Hua, Adhikari, et al. 2004</a>).
Finally, the filter response is computed over the frequency vector defined and the result is shown on figure <a href="#orgf5ce15e">7</a> which is very close to the filters obtain in (<a href="#citeproc_bib_item_3">Hua, Adhikari, et al. 2004</a>).
</p>
<div class="org-src-container">
@@ -564,7 +564,7 @@ H = [exp(<span class="org-builtin">-</span><span class="org-matlab-math">j</span
</div>
<div id="org4fd297c" class="figure">
<div id="orgf5ce15e" class="figure">
<p><img src="figs/fir_filter_ligo.png" alt="fir_filter_ligo.png" />
</p>
<p><span class="figure-number">Figure 7: </span>FIR Complementary filters obtain after convex optimization</p>
@@ -572,8 +572,8 @@ H = [exp(<span class="org-builtin">-</span><span class="org-matlab-math">j</span
</div>
</div>
<div id="outline-container-orga3462b9" class="outline-3">
<h3 id="orga3462b9"><span class="section-number-3">2.3.</span> Weighting function design</h3>
<div id="outline-container-orge47e4d1" class="outline-3">
<h3 id="orge47e4d1"><span class="section-number-3">2.3.</span> Weighting function design</h3>
<div class="outline-text-3" id="text-2-3">
<p>
The weightings function that will be used for the \(\mathcal{H}_\infty\) synthesis of the complementary filters are now designed.
@@ -635,11 +635,11 @@ wL = minreal(ss(wL));
</div>
<p>
The inverse magnitude of the weighting functions are shown in Figure <a href="#orgf2af1c4">8</a>.
The inverse magnitude of the weighting functions are shown in Figure <a href="#org588a935">8</a>.
</p>
<div id="orgf2af1c4" class="figure">
<div id="org588a935" class="figure">
<p><img src="figs/ligo_weights.png" alt="ligo_weights.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Weights for the \(\mathcal{H}_\infty\) synthesis</p>
@@ -647,11 +647,11 @@ The inverse magnitude of the weighting functions are shown in Figure <a href="#o
</div>
</div>
<div id="outline-container-org2d35692" class="outline-3">
<h3 id="org2d35692"><span class="section-number-3">2.4.</span> Synthesis of the complementary filters</h3>
<div id="outline-container-org5ef288a" class="outline-3">
<h3 id="org5ef288a"><span class="section-number-3">2.4.</span> Synthesis of the complementary filters</h3>
<div class="outline-text-3" id="text-2-4">
<p>
The generalized plant of figure <a href="#org8ec6b4a">1</a> is defined.
The generalized plant of figure <a href="#org938abd0">1</a> is defined.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Generalized plant for the H-infinity Synthesis</span>
@@ -670,7 +670,7 @@ And the standard \(\mathcal{H}_\infty\) synthesis using the <code>hinfsyn</code>
</pre>
</div>
<pre class="example" id="orgb3aafc2">
<pre class="example" id="org12089e0">
[Hl, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
Resetting value of Gamma min based on D_11, D_12, D_21 terms
@@ -714,18 +714,18 @@ Hh = 1 <span class="org-builtin">-</span> Hl;
The size of the filters is shown to be equal to the sum of the weighting functions orders.
</p>
<pre class="example" id="orga490b22">
<pre class="example" id="org7e59413">
size(Hh), size(Hl)
State-space model with 1 outputs, 1 inputs, and 27 states.
State-space model with 1 outputs, 1 inputs, and 27 states.
</pre>
<p>
The magnitude of the obtained filters as well as the requirements are shown in Figure <a href="#orgb24a37f">9</a>.
The magnitude of the obtained filters as well as the requirements are shown in Figure <a href="#orgb9b3d25">9</a>.
</p>
<div id="orgb24a37f" class="figure">
<div id="orgb9b3d25" class="figure">
<p><img src="figs/hinf_synthesis_ligo_results.png" alt="hinf_synthesis_ligo_results.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Obtained complementary filters using the \(\mathcal{H}_\infty\) synthesis</p>
@@ -733,19 +733,19 @@ The magnitude of the obtained filters as well as the requirements are shown in F
</div>
</div>
<div id="outline-container-org2d8f858" class="outline-3">
<h3 id="org2d8f858"><span class="section-number-3">2.5.</span> Comparison of the FIR filters and synthesized filters</h3>
<div id="outline-container-org71076fb" class="outline-3">
<h3 id="org71076fb"><span class="section-number-3">2.5.</span> Comparison of the FIR filters and synthesized filters</h3>
<div class="outline-text-3" id="text-2-5">
<p>
Let&rsquo;s now compare the FIR filters designed in (<a href="#citeproc_bib_item_3">Hua, Adhikari, et al. 2004</a>) with the with complementary filters obtained with the \(\mathcal{H}_\infty\) synthesis.
</p>
<p>
This is done in Figure <a href="#org8f17c7a">10</a>, and both set of filters are found to be very close to each other.
This is done in Figure <a href="#org7eeadda">10</a>, and both set of filters are found to be very close to each other.
</p>
<div id="org8f17c7a" class="figure">
<div id="org7eeadda" class="figure">
<p><img src="figs/comp_fir_ligo_hinf.png" alt="comp_fir_ligo_hinf.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Comparison between the FIR filters developped for LIGO and the \(\mathcal{H}_\infty\) complementary filters</p>
@@ -758,11 +758,11 @@ This is done in Figure <a href="#org8f17c7a">10</a>, and both set of filters are
<h2 id="sec:closed_loop_complementary_filters"><span class="section-number-2">3.</span> &ldquo;Closed-Loop&rdquo; complementary filters</h2>
<div class="outline-text-2" id="text-sec:closed_loop_complementary_filters">
<p>
In this section, the classical feedback architecture shown in Figure <a href="#org915c7e1">11</a> is used for the design of complementary filters.
In this section, the classical feedback architecture shown in Figure <a href="#org91711eb">11</a> is used for the design of complementary filters.
</p>
<div id="org915c7e1" class="figure">
<div id="org91711eb" class="figure">
<p><img src="figs-journal/feedback_sensor_fusion.png" alt="feedback_sensor_fusion.png" />
</p>
<p><span class="figure-number">Figure 11: </span>&ldquo;Closed-Loop&rdquo; complementary filters</p>
@@ -773,12 +773,12 @@ The complete Matlab script for this part is given in Section <a href="#sec:3_clo
</p>
</div>
<div id="outline-container-orgafe7677" class="outline-3">
<h3 id="orgafe7677"><span class="section-number-3">3.1.</span> Weighting Function design</h3>
<div id="outline-container-orgfa47886" class="outline-3">
<h3 id="orgfa47886"><span class="section-number-3">3.1.</span> Weighting Function design</h3>
<div class="outline-text-3" id="text-3-1">
<p>
Weighting functions using the <code>generateWF</code> 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 <a href="#org3789fe5">1.3</a>.
These weighting functions are the same as the ones used in Section <a href="#orgbf8ba5a">1.3</a>.
</p>
<div class="org-src-container">
@@ -790,11 +790,11 @@ W2 = generateWF(<span class="org-string">'n'</span>, 2, <span class="org-string"
</div>
</div>
<div id="outline-container-org746a218" class="outline-3">
<h3 id="org746a218"><span class="section-number-3">3.2.</span> Generalized plant</h3>
<div id="outline-container-org43ccb7c" class="outline-3">
<h3 id="org43ccb7c"><span class="section-number-3">3.2.</span> Generalized plant</h3>
<div class="outline-text-3" id="text-3-2">
<p>
The generalized plant of Figure <a href="#org08ff8ac">12</a> is defined below:
The generalized plant of Figure <a href="#org3a36382">12</a> is defined below:
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak">%% Generalized plant for "closed-loop" complementary filter synthesis</span>
@@ -804,7 +804,7 @@ P = [ W1 0 1;
</div>
<div id="org08ff8ac" class="figure">
<div id="org3a36382" class="figure">
<p><img src="figs-journal/feedback_synthesis_architecture_generalized_plant.png" alt="feedback_synthesis_architecture_generalized_plant.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Generalized plant used for the \(\mathcal{H}_\infty\) synthesis of &ldquo;closed-loop&rdquo; complementary filters</p>
@@ -812,8 +812,8 @@ P = [ W1 0 1;
</div>
</div>
<div id="outline-container-org18bfdfc" class="outline-3">
<h3 id="org18bfdfc"><span class="section-number-3">3.3.</span> Synthesis of the closed-loop complementary filters</h3>
<div id="outline-container-orgbf556a9" class="outline-3">
<h3 id="orgbf556a9"><span class="section-number-3">3.3.</span> Synthesis of the closed-loop complementary filters</h3>
<div class="outline-text-3" id="text-3-3">
<p>
And the standard \(\mathcal{H}_\infty\) synthesis is performed.
@@ -824,7 +824,7 @@ And the standard \(\mathcal{H}_\infty\) synthesis is performed.
</pre>
</div>
<pre class="example" id="org2e786a3">
<pre class="example" id="org1af6c18">
Test bounds: 0.3191 &lt;= gamma &lt;= 1.669
gamma X&gt;=0 Y&gt;=0 rho(XY)&lt;1 p/f
@@ -848,11 +848,11 @@ And the standard \(\mathcal{H}_\infty\) synthesis is performed.
</div>
</div>
<div id="outline-container-orge450acb" class="outline-3">
<h3 id="orge450acb"><span class="section-number-3">3.4.</span> Synthesized filters</h3>
<div id="outline-container-org426fd90" class="outline-3">
<h3 id="org426fd90"><span class="section-number-3">3.4.</span> Synthesized filters</h3>
<div class="outline-text-3" id="text-3-4">
<p>
The obtained filter \(L(s)\) can then be included in the feedback architecture shown in Figure <a href="#orgf151405">13</a>.
The obtained filter \(L(s)\) can then be included in the feedback architecture shown in Figure <a href="#org9d40494">13</a>.
</p>
<p>
@@ -865,7 +865,7 @@ H2 = 1 <span class="org-builtin">-</span> H1;
</pre>
</div>
<pre class="example" id="orgae811fb">
<pre class="example" id="org8cae256">
zpk(H1) =
(s+3.842)^3 (s+153.6) (s+1.289e05)
-------------------------------------------------------
@@ -878,11 +878,11 @@ zpk(H2) =
</pre>
<p>
The bode plots of the synthesized complementary filters are compared with the upper bounds in Figure <a href="#orgf151405">13</a>.
The bode plots of the synthesized complementary filters are compared with the upper bounds in Figure <a href="#org9d40494">13</a>.
</p>
<div id="orgf151405" class="figure">
<div id="org9d40494" class="figure">
<p><img src="figs/hinf_filters_results_mixed_sensitivity.png" alt="hinf_filters_results_mixed_sensitivity.png" />
</p>
<p><span class="figure-number">Figure 13: </span>Bode plot of the obtained complementary filters</p>
@@ -903,8 +903,8 @@ The complete Matlab script for this part is given in Section <a href="#sec:4_thr
</p>
</div>
<div id="outline-container-orga9cd2fd" class="outline-3">
<h3 id="orga9cd2fd"><span class="section-number-3">4.1.</span> Synthesis Architecture</h3>
<div id="outline-container-org23dc1a0" class="outline-3">
<h3 id="org23dc1a0"><span class="section-number-3">4.1.</span> Synthesis Architecture</h3>
<div class="outline-text-3" id="text-4-1">
<p>
The synthesis objective is to shape three filters that are complementary.
@@ -921,18 +921,18 @@ This corresponds to the conditions \eqref{eq:obj_three_cf} where \(W_1(s)\), \(W
\end{equation}
<p>
This synthesis can be done by performing the standard \(\mathcal{H}_\infty\) synthesis with on the generalized plant in Figure <a href="#org452ccad">14</a>.
This synthesis can be done by performing the standard \(\mathcal{H}_\infty\) synthesis with on the generalized plant in Figure <a href="#orge2e8c55">14</a>.
</p>
<div id="org452ccad" class="figure">
<div id="orge2e8c55" class="figure">
<p><img src="figs-journal/comp_filter_three_hinf_fb.png" alt="comp_filter_three_hinf_fb.png" />
</p>
<p><span class="figure-number">Figure 14: </span>Generalized architecture for generating 3 complementary filters</p>
</div>
<p>
After synthesis, filter \(H_2(s)\) and \(H_3(s)\) are obtained as shown in Figure <a href="#org452ccad">14</a>.
After synthesis, filter \(H_2(s)\) and \(H_3(s)\) are obtained as shown in Figure <a href="#orge2e8c55">14</a>.
The last filter \(H_1(s)\) is defined as the complementary of the two others as in \eqref{eq:H1_complementary_of_H2_H3}.
</p>
@@ -942,8 +942,8 @@ The last filter \(H_1(s)\) is defined as the complementary of the two others as
</div>
</div>
<div id="outline-container-orged7fb64" class="outline-3">
<h3 id="orged7fb64"><span class="section-number-3">4.2.</span> Weights</h3>
<div id="outline-container-orgf36e7cb" class="outline-3">
<h3 id="orgf36e7cb"><span class="section-number-3">4.2.</span> Weights</h3>
<div class="outline-text-3" id="text-4-2">
<p>
The three weighting functions are defined as shown below.
@@ -958,11 +958,11 @@ W3 = generateWF(<span class="org-string">'n'</span>, 3, <span class="org-string"
</div>
<p>
Their inverse magnitudes are displayed in Figure <a href="#orge40038d">15</a>.
Their inverse magnitudes are displayed in Figure <a href="#orga89c5b8">15</a>.
</p>
<div id="orge40038d" class="figure">
<div id="orga89c5b8" class="figure">
<p><img src="figs/three_weighting_functions.png" alt="three_weighting_functions.png" />
</p>
<p><span class="figure-number">Figure 15: </span>Three weighting functions used for the \(\mathcal{H}_\infty\) synthesis of the complementary filters</p>
@@ -970,11 +970,11 @@ Their inverse magnitudes are displayed in Figure <a href="#orge40038d">15</a>.
</div>
</div>
<div id="outline-container-org0eb6887" class="outline-3">
<h3 id="org0eb6887"><span class="section-number-3">4.3.</span> H-Infinity Synthesis</h3>
<div id="outline-container-org8bb1bfb" class="outline-3">
<h3 id="org8bb1bfb"><span class="section-number-3">4.3.</span> H-Infinity Synthesis</h3>
<div class="outline-text-3" id="text-4-3">
<p>
The generalized plant in Figure <a href="#org452ccad">14</a> containing the weighting functions is defined below.
The generalized plant in Figure <a href="#orge2e8c55">14</a> containing the weighting functions is defined below.
</p>
<div class="org-src-container">
@@ -995,7 +995,7 @@ And the standard \(\mathcal{H}_\infty\) synthesis using the <code>hinfsyn</code>
</pre>
</div>
<pre class="example" id="org162f0ab">
<pre class="example" id="orgbeefca4">
Resetting value of Gamma min based on D_11, D_12, D_21 terms
Test bounds: 0.1000 &lt; gamma &lt;= 1050.0000
@@ -1038,11 +1038,11 @@ H1 = 1 <span class="org-builtin">-</span> H2 <span class="org-builtin">-</span>
</div>
<p>
The bode plots of the three obtained complementary filters are shown in Figure <a href="#org4f0c4c6">16</a>.
The bode plots of the three obtained complementary filters are shown in Figure <a href="#orgd7996d8">16</a>.
</p>
<div id="org4f0c4c6" class="figure">
<div id="orgd7996d8" class="figure">
<p><img src="figs/three_complementary_filters_results.png" alt="three_complementary_filters_results.png" />
</p>
<p><span class="figure-number">Figure 16: </span>The three complementary filters obtained after \(\mathcal{H}_\infty\) synthesis</p>
@@ -1755,7 +1755,7 @@ H1 = 1 <span class="org-builtin">-</span> H2;
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2021-09-01 mer. 16:59</p>
<p class="date">Created: 2021-09-02 jeu. 10:04</p>
</div>
</body>
</html>

View File

@@ -1,4 +1,4 @@
#+TITLE: A new method of designing complementary filters for sensor fusion using the $\mathcal{H}_\infty$ synthesis - Matlab Computation
#+TITLE: Designing Complementary filters for sensor fusion using $\mathcal{H}_\infty$ synthesis - Matlab Computation
:DRAWER:
#+LANGUAGE: en
#+EMAIL: dehaeze.thomas@gmail.com
@@ -1442,4 +1442,7 @@ H1 = 1 - H2;
#+end_src
* Bibliography :ignore:
# For html export only:
# bibliography:ref.bib
#+latex: \printbibliography

View File

@@ -1,4 +1,4 @@
% Created 2021-09-01 mer. 16:57
% Created 2021-09-02 jeu. 10:03
% Intended LaTeX compiler: pdflatex
\documentclass[a4paper, 10pt, DIV=12, parskip=full]{scrreprt}
\usepackage[utf8]{inputenc}
@@ -24,7 +24,7 @@
\addbibresource{ref.bib}
\author{Dehaeze Thomas}
\date{\today}
\title{A new method of designing complementary filters for sensor fusion using the \(\mathcal{H}_\infty\) synthesis - Matlab Computation}
\title{Designing Complementary filters for sensor fusion using \(\mathcal{H}_\infty\) synthesis - Matlab Computation}
\begin{document}
\maketitle
@@ -47,7 +47,6 @@ 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: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 +92,6 @@ 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:org69d0d73}
A formula is proposed to help the design of the weighting functions:
\begin{equation}
W(s) = \left( \frac{
@@ -120,7 +118,6 @@ 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: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 +139,6 @@ The inverse magnitude of these two weighting functions are shown in Figure \ref{
\end{figure}
\section{Synthesis of the complementary filters}
\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 +194,6 @@ This function is described in Section \ref{sec:generateCF}.
\end{minted}
\section{Obtained Complementary Filters}
\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 +226,6 @@ 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: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 +243,6 @@ The specifications are translated into upper bounds of the complementary filters
\end{figure}
\section{FIR Filter}
\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 +402,6 @@ H = [exp(-j*kron(w'.*2*pi,[0:n-1]))]*h;
\end{figure}
\section{Weighting function design}
\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 +458,6 @@ The inverse magnitude of the weighting functions are shown in Figure \ref{fig:li
\end{figure}
\section{Synthesis of the complementary filters}
\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 +524,6 @@ 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: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 +548,6 @@ 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: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 +558,6 @@ W2 = generateWF('n', 2, 'w0', 2*pi*10, 'G0', 1/10, 'Ginf', 1000, 'Gc', 0.45);
\end{minted}
\section{Generalized plant}
\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 +572,6 @@ P = [ W1 0 1;
\end{figure}
\section{Synthesis of the closed-loop complementary filters}
\label{sec:org44dc95f}
And the standard \(\mathcal{H}_\infty\) synthesis is performed.
\begin{minted}[]{matlab}
%% Standard H-Infinity Synthesis
@@ -614,7 +601,6 @@ And the standard \(\mathcal{H}_\infty\) synthesis is performed.
\end{verbatim}
\section{Synthesized filters}
\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 +637,6 @@ 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: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 +665,6 @@ The last filter \(H_1(s)\) is defined as the complementary of the two others as
\end{equation}
\section{Weights}
\label{sec:orgf866c06}
The three weighting functions are defined as shown below.
\begin{minted}[]{matlab}
@@ -699,7 +683,6 @@ Their inverse magnitudes are displayed in Figure \ref{fig:three_weighting_functi
\end{figure}
\section{H-Infinity Synthesis}
\label{sec:org0db8a8c}
The generalized plant in Figure \ref{fig:comp_filter_three_hinf} containing the weighting functions is defined below.