Analysis of compliance and modal measurements
BIN
figs/ModeShapeFlex1_crop.gif
Normal file
After Width: | Height: | Size: 348 KiB |
BIN
figs/ModeShapeFlex1_crop.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
figs/accelerometers_nano_hexapod.jpg
Normal file
After Width: | Height: | Size: 596 KiB |
BIN
figs/accelerometers_nano_hexapod.pdf
Normal file
BIN
figs/accelerometers_nano_hexapod.png
Normal file
After Width: | Height: | Size: 2.9 MiB |
BIN
figs/accelerometers_nano_hexapod.svg
Normal file
After Width: | Height: | Size: 4.8 MiB |
BIN
figs/compliance_vertical_comp_iff.pdf
Normal file
BIN
figs/compliance_vertical_comp_iff.png
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
figs/compliance_vertical_comp_model_iff.pdf
Normal file
BIN
figs/compliance_vertical_comp_model_iff.png
Normal file
After Width: | Height: | Size: 87 KiB |
BIN
figs/hammer_excitation_compliance_meas.jpg
Normal file
After Width: | Height: | Size: 491 KiB |
BIN
figs/mode_shapes_annotated.gif
Normal file
After Width: | Height: | Size: 2.1 MiB |
BIN
figs/mode_shapes_annotated.png
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
matlab/mat/Measurement_Z_axis.mat
Normal file
BIN
matlab/mat/Measurement_Z_axis_damped.mat
Normal file
@ -3,7 +3,7 @@
|
||||
"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-06-10 jeu. 17:52 -->
|
||||
<!-- 2021-06-14 lun. 17:24 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Nano-Hexapod - Test Bench</title>
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
@ -39,47 +39,54 @@
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org8cdd071">1. Encoders fixed to the Struts</a>
|
||||
<li><a href="#org5c42276">1. Encoders fixed to the Struts</a>
|
||||
<ul>
|
||||
<li><a href="#org3d72b93">1.1. Introduction</a></li>
|
||||
<li><a href="#orgcb16db3">1.2. Identification of the dynamics</a>
|
||||
<li><a href="#orge93a02f">1.1. Introduction</a></li>
|
||||
<li><a href="#org0640b0f">1.2. Identification of the dynamics</a>
|
||||
<ul>
|
||||
<li><a href="#org7810966">1.2.1. Load Data</a></li>
|
||||
<li><a href="#orge39bc92">1.2.2. Spectral Analysis - Setup</a></li>
|
||||
<li><a href="#orge971c61">1.2.3. DVF Plant</a></li>
|
||||
<li><a href="#orgfe174fa">1.2.4. IFF Plant</a></li>
|
||||
<li><a href="#org1fc2e33">1.2.1. Load Data</a></li>
|
||||
<li><a href="#org27129af">1.2.2. Spectral Analysis - Setup</a></li>
|
||||
<li><a href="#orgfe67585">1.2.3. DVF Plant</a></li>
|
||||
<li><a href="#org3674942">1.2.4. IFF Plant</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgaa25438">1.3. Comparison with the Simscape Model</a>
|
||||
<li><a href="#org90b8ca8">1.3. Comparison with the Simscape Model</a>
|
||||
<ul>
|
||||
<li><a href="#org8c6e670">1.3.1. Dynamics from Actuator to Force Sensors</a></li>
|
||||
<li><a href="#orgb40c194">1.3.2. Dynamics from Actuator to Encoder</a></li>
|
||||
<li><a href="#org7f3653d">1.3.1. Dynamics from Actuator to Force Sensors</a></li>
|
||||
<li><a href="#orgf2b8f1a">1.3.2. Dynamics from Actuator to Encoder</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org07b83f4">1.4. Integral Force Feedback</a>
|
||||
<li><a href="#orgcb40fee">1.4. Integral Force Feedback</a>
|
||||
<ul>
|
||||
<li><a href="#org32df075">1.4.1. Root Locus and Decentralized Loop gain</a></li>
|
||||
<li><a href="#orge5e9cea">1.4.2. Multiple Gains - Simulation</a></li>
|
||||
<li><a href="#orga581915">1.4.3. Experimental Results - Gains</a>
|
||||
<li><a href="#org454aab2">1.4.1. Root Locus and Decentralized Loop gain</a></li>
|
||||
<li><a href="#orgf25396d">1.4.2. Multiple Gains - Simulation</a></li>
|
||||
<li><a href="#org9e5a43a">1.4.3. Experimental Results - Gains</a>
|
||||
<ul>
|
||||
<li><a href="#org7089ea1">1.4.3.1. Load Data</a></li>
|
||||
<li><a href="#org54efadb">1.4.3.2. Spectral Analysis - Setup</a></li>
|
||||
<li><a href="#org5262511">1.4.3.3. DVF Plant</a></li>
|
||||
<li><a href="#org47db15b">1.4.3.4. Experimental Results - Comparison of the un-damped and fully damped system</a></li>
|
||||
<li><a href="#org7528195">1.4.3.1. Load Data</a></li>
|
||||
<li><a href="#org014c26e">1.4.3.2. Spectral Analysis - Setup</a></li>
|
||||
<li><a href="#orga410c78">1.4.3.3. DVF Plant</a></li>
|
||||
<li><a href="#org97f2ad7">1.4.3.4. Experimental Results - Comparison of the un-damped and fully damped system</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgd48530e">1.4.4. Experimental Results - Damped Plant with Optimal gain</a>
|
||||
<li><a href="#org38e77db">1.4.4. Experimental Results - Damped Plant with Optimal gain</a>
|
||||
<ul>
|
||||
<li><a href="#orgf0af7da">1.4.4.1. Load Data</a></li>
|
||||
<li><a href="#org1ce1b15">1.4.4.2. Spectral Analysis - Setup</a></li>
|
||||
<li><a href="#orgac97ace">1.4.4.3. DVF Plant</a></li>
|
||||
<li><a href="#org5b64143">1.4.4.1. Load Data</a></li>
|
||||
<li><a href="#org9d60597">1.4.4.2. Spectral Analysis - Setup</a></li>
|
||||
<li><a href="#org5e16098">1.4.4.3. DVF Plant</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgcf93367">1.5. Modal Analysis</a>
|
||||
<ul>
|
||||
<li><a href="#org4380b82">1.5.1. Effectiveness of the IFF Strategy - Compliance</a></li>
|
||||
<li><a href="#org432b9c9">1.5.2. Comparison with the Simscape Model</a></li>
|
||||
<li><a href="#org9e1cc1a">1.5.3. Obtained Mode Shapes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgba38b08">2. Encoders fixed to the plates</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org6382ca3">2. Encoders fixed to the plates</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -88,10 +95,10 @@
|
||||
<hr>
|
||||
|
||||
<p>
|
||||
In this document, the dynamics of the nano-hexapod shown in Figure <a href="#org67868f6">1</a> is identified.
|
||||
In this document, the dynamics of the nano-hexapod shown in Figure <a href="#org19c1f7f">1</a> is identified.
|
||||
</p>
|
||||
|
||||
<div class="note" id="org61a7813">
|
||||
<div class="note" id="org1ec7b22">
|
||||
<p>
|
||||
Here are the documentation of the equipment used for this test bench:
|
||||
</p>
|
||||
@ -106,27 +113,27 @@ Here are the documentation of the equipment used for this test bench:
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org67868f6" class="figure">
|
||||
<div id="org19c1f7f" class="figure">
|
||||
<p><img src="figs/IMG_20210608_152917.jpg" alt="IMG_20210608_152917.jpg" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Nano-Hexapod</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org492c735" class="figure">
|
||||
<div id="org224dec6" class="figure">
|
||||
<p><img src="figs/IMG_20210608_154722.jpg" alt="IMG_20210608_154722.jpg" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Nano-Hexapod and the control electronics</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgab57ea9" class="figure">
|
||||
<div id="orgd82bcd1" class="figure">
|
||||
<p><img src="figs/nano_hexapod_signals.png" alt="nano_hexapod_signals.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Block diagram of the system with named signals</p>
|
||||
</div>
|
||||
|
||||
<table id="org3c0425e" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="orga3794c2" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 1:</span> List of signals</caption>
|
||||
|
||||
<colgroup>
|
||||
@ -243,12 +250,12 @@ Here are the documentation of the equipment used for this test bench:
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div id="outline-container-org8cdd071" class="outline-2">
|
||||
<h2 id="org8cdd071"><span class="section-number-2">1</span> Encoders fixed to the Struts</h2>
|
||||
<div id="outline-container-org5c42276" class="outline-2">
|
||||
<h2 id="org5c42276"><span class="section-number-2">1</span> Encoders fixed to the Struts</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
</div>
|
||||
<div id="outline-container-org3d72b93" class="outline-3">
|
||||
<h3 id="org3d72b93"><span class="section-number-3">1.1</span> Introduction</h3>
|
||||
<div id="outline-container-orge93a02f" class="outline-3">
|
||||
<h3 id="orge93a02f"><span class="section-number-3">1.1</span> Introduction</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
In this section, the encoders are fixed to the struts.
|
||||
@ -256,12 +263,12 @@ In this section, the encoders are fixed to the struts.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcb16db3" class="outline-3">
|
||||
<h3 id="orgcb16db3"><span class="section-number-3">1.2</span> Identification of the dynamics</h3>
|
||||
<div id="outline-container-org0640b0f" class="outline-3">
|
||||
<h3 id="org0640b0f"><span class="section-number-3">1.2</span> Identification of the dynamics</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
</div>
|
||||
<div id="outline-container-org7810966" class="outline-4">
|
||||
<h4 id="org7810966"><span class="section-number-4">1.2.1</span> Load Data</h4>
|
||||
<div id="outline-container-org1fc2e33" class="outline-4">
|
||||
<h4 id="org1fc2e33"><span class="section-number-4">1.2.1</span> Load Data</h4>
|
||||
<div class="outline-text-4" id="text-1-2-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Load Identification Data</span></span>
|
||||
@ -276,8 +283,8 @@ meas_data_lf = {};
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge39bc92" class="outline-4">
|
||||
<h4 id="orge39bc92"><span class="section-number-4">1.2.2</span> Spectral Analysis - Setup</h4>
|
||||
<div id="outline-container-org27129af" class="outline-4">
|
||||
<h4 id="org27129af"><span class="section-number-4">1.2.2</span> Spectral Analysis - Setup</h4>
|
||||
<div class="outline-text-4" id="text-1-2-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Setup useful variables</span></span>
|
||||
@ -300,11 +307,11 @@ i_hf = f <span class="org-type">></span> 250; <span class="org-comment">% Poi
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge971c61" class="outline-4">
|
||||
<h4 id="orge971c61"><span class="section-number-4">1.2.3</span> DVF Plant</h4>
|
||||
<div id="outline-container-orgfe67585" class="outline-4">
|
||||
<h4 id="orgfe67585"><span class="section-number-4">1.2.3</span> DVF Plant</h4>
|
||||
<div class="outline-text-4" id="text-1-2-3">
|
||||
<p>
|
||||
First, let’s compute the coherence from the excitation voltage and the displacement as measured by the encoders (Figure <a href="#orgc8a5209">4</a>).
|
||||
First, let’s compute the coherence from the excitation voltage and the displacement as measured by the encoders (Figure <a href="#org47768a4">4</a>).
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
@ -320,14 +327,14 @@ coh_dvf_hf = zeros(length(f), 6, 6);
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgc8a5209" class="figure">
|
||||
<div id="org47768a4" class="figure">
|
||||
<p><img src="figs/enc_struts_dvf_coh.png" alt="enc_struts_dvf_coh.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Obtained coherence for the DVF plant</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Then the 6x6 transfer function matrix is estimated (Figure <a href="#orgb9f3fd5">5</a>).
|
||||
Then the 6x6 transfer function matrix is estimated (Figure <a href="#orgff1ab10">5</a>).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% DVF Plant (transfer function from u to dLm)</span></span>
|
||||
@ -342,7 +349,7 @@ G_dvf_hf = zeros(length(f), 6, 6);
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgb9f3fd5" class="figure">
|
||||
<div id="orgff1ab10" class="figure">
|
||||
<p><img src="figs/enc_struts_dvf_frf.png" alt="enc_struts_dvf_frf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Measured FRF for the DVF plant</p>
|
||||
@ -351,11 +358,11 @@ G_dvf_hf = zeros(length(f), 6, 6);
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-orgfe174fa" class="outline-4">
|
||||
<h4 id="orgfe174fa"><span class="section-number-4">1.2.4</span> IFF Plant</h4>
|
||||
<div id="outline-container-org3674942" class="outline-4">
|
||||
<h4 id="org3674942"><span class="section-number-4">1.2.4</span> IFF Plant</h4>
|
||||
<div class="outline-text-4" id="text-1-2-4">
|
||||
<p>
|
||||
First, let’s compute the coherence from the excitation voltage and the displacement as measured by the encoders (Figure <a href="#orgb8bd5d5">6</a>).
|
||||
First, let’s compute the coherence from the excitation voltage and the displacement as measured by the encoders (Figure <a href="#org5d46af6">6</a>).
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
@ -372,14 +379,14 @@ coh_iff_hf = zeros(length(f), 6, 6);
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgb8bd5d5" class="figure">
|
||||
<div id="org5d46af6" class="figure">
|
||||
<p><img src="figs/enc_struts_iff_coh.png" alt="enc_struts_iff_coh.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Obtained coherence for the IFF plant</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Then the 6x6 transfer function matrix is estimated (Figure <a href="#org7d9a20b">7</a>).
|
||||
Then the 6x6 transfer function matrix is estimated (Figure <a href="#org7d56a08">7</a>).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% IFF Plant</span></span>
|
||||
@ -394,7 +401,7 @@ G_iff_hf = zeros(length(f), 6, 6);
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org7d9a20b" class="figure">
|
||||
<div id="org7d56a08" class="figure">
|
||||
<p><img src="figs/enc_struts_iff_frf.png" alt="enc_struts_iff_frf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Measured FRF for the IFF plant</p>
|
||||
@ -403,16 +410,16 @@ G_iff_hf = zeros(length(f), 6, 6);
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgaa25438" class="outline-3">
|
||||
<h3 id="orgaa25438"><span class="section-number-3">1.3</span> Comparison with the Simscape Model</h3>
|
||||
<div id="outline-container-org90b8ca8" class="outline-3">
|
||||
<h3 id="org90b8ca8"><span class="section-number-3">1.3</span> Comparison with the Simscape Model</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
In this section, the measured dynamics is compared with the dynamics estimated from the Simscape model.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8c6e670" class="outline-4">
|
||||
<h4 id="org8c6e670"><span class="section-number-4">1.3.1</span> Dynamics from Actuator to Force Sensors</h4>
|
||||
<div id="outline-container-org7f3653d" class="outline-4">
|
||||
<h4 id="org7f3653d"><span class="section-number-4">1.3.1</span> Dynamics from Actuator to Force Sensors</h4>
|
||||
<div class="outline-text-4" id="text-1-3-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Initialize Nano-Hexapod</span></span>
|
||||
@ -434,14 +441,14 @@ Giff = exp(<span class="org-type">-</span>s<span class="org-type">*</span>Ts)<sp
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgf514a0e" class="figure">
|
||||
<div id="orgaec8567" class="figure">
|
||||
<p><img src="figs/enc_struts_iff_comp_simscape.png" alt="enc_struts_iff_comp_simscape.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Diagonal elements of the IFF Plant</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org5cb4798" class="figure">
|
||||
<div id="orged3779d" class="figure">
|
||||
<p><img src="figs/enc_struts_iff_comp_offdiag_simscape.png" alt="enc_struts_iff_comp_offdiag_simscape.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Off diagonal elements of the IFF Plant</p>
|
||||
@ -449,8 +456,8 @@ Giff = exp(<span class="org-type">-</span>s<span class="org-type">*</span>Ts)<sp
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb40c194" class="outline-4">
|
||||
<h4 id="orgb40c194"><span class="section-number-4">1.3.2</span> Dynamics from Actuator to Encoder</h4>
|
||||
<div id="outline-container-orgf2b8f1a" class="outline-4">
|
||||
<h4 id="orgf2b8f1a"><span class="section-number-4">1.3.2</span> Dynamics from Actuator to Encoder</h4>
|
||||
<div class="outline-text-4" id="text-1-3-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Initialization of the Nano-Hexapod</span></span>
|
||||
@ -472,14 +479,14 @@ Gdvf = exp(<span class="org-type">-</span>s<span class="org-type">*</span>Ts)<sp
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org0adec37" class="figure">
|
||||
<div id="org2041eb7" class="figure">
|
||||
<p><img src="figs/enc_struts_dvf_comp_simscape.png" alt="enc_struts_dvf_comp_simscape.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Diagonal elements of the DVF Plant</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org97225e9" class="figure">
|
||||
<div id="orgeb4abcc" class="figure">
|
||||
<p><img src="figs/enc_struts_dvf_comp_offdiag_simscape.png" alt="enc_struts_dvf_comp_offdiag_simscape.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Off diagonal elements of the DVF Plant</p>
|
||||
@ -488,12 +495,12 @@ Gdvf = exp(<span class="org-type">-</span>s<span class="org-type">*</span>Ts)<sp
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org07b83f4" class="outline-3">
|
||||
<h3 id="org07b83f4"><span class="section-number-3">1.4</span> Integral Force Feedback</h3>
|
||||
<div id="outline-container-orgcb40fee" class="outline-3">
|
||||
<h3 id="orgcb40fee"><span class="section-number-3">1.4</span> Integral Force Feedback</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
</div>
|
||||
<div id="outline-container-org32df075" class="outline-4">
|
||||
<h4 id="org32df075"><span class="section-number-4">1.4.1</span> Root Locus and Decentralized Loop gain</h4>
|
||||
<div id="outline-container-org454aab2" class="outline-4">
|
||||
<h4 id="org454aab2"><span class="section-number-4">1.4.1</span> Root Locus and Decentralized Loop gain</h4>
|
||||
<div class="outline-text-4" id="text-1-4-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% IFF Controller</span></span>
|
||||
@ -505,7 +512,7 @@ Kiff_g1 = (1<span class="org-type">/</span>(s <span class="org-type">+</span> 2<
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org605753e" class="figure">
|
||||
<div id="orgd9ca9de" class="figure">
|
||||
<p><img src="figs/enc_struts_iff_root_locus.png" alt="enc_struts_iff_root_locus.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Root Locus for the IFF control strategy</p>
|
||||
@ -521,7 +528,7 @@ Kiff = g<span class="org-type">*</span>Kiff_g1;
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgc1b7b46" class="figure">
|
||||
<div id="org428110f" class="figure">
|
||||
<p><img src="figs/enc_struts_iff_opt_loop_gain.png" alt="enc_struts_iff_opt_loop_gain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Bode plot of the “decentralized loop gain” \(G_\text{iff}(i,i) \times K_\text{iff}(i,i)\)</p>
|
||||
@ -529,8 +536,8 @@ Kiff = g<span class="org-type">*</span>Kiff_g1;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge5e9cea" class="outline-4">
|
||||
<h4 id="orge5e9cea"><span class="section-number-4">1.4.2</span> Multiple Gains - Simulation</h4>
|
||||
<div id="outline-container-orgf25396d" class="outline-4">
|
||||
<h4 id="orgf25396d"><span class="section-number-4">1.4.2</span> Multiple Gains - Simulation</h4>
|
||||
<div class="outline-text-4" id="text-1-4-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Tested IFF gains</span></span>
|
||||
@ -566,7 +573,7 @@ io(io_i) = linio([mdl, <span class="org-string">'/D'</span>], 1, <span class="o
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgb361d62" class="figure">
|
||||
<div id="orgf455f45" class="figure">
|
||||
<p><img src="figs/enc_struts_iff_gains_effect_dvf_plant.png" alt="enc_struts_iff_gains_effect_dvf_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Effect of the IFF gain \(g\) on the transfer function from \(\bm{\tau}\) to \(d\bm{\mathcal{L}}_m\)</p>
|
||||
@ -574,16 +581,16 @@ io(io_i) = linio([mdl, <span class="org-string">'/D'</span>], 1, <span class="o
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga581915" class="outline-4">
|
||||
<h4 id="orga581915"><span class="section-number-4">1.4.3</span> Experimental Results - Gains</h4>
|
||||
<div id="outline-container-org9e5a43a" class="outline-4">
|
||||
<h4 id="org9e5a43a"><span class="section-number-4">1.4.3</span> Experimental Results - Gains</h4>
|
||||
<div class="outline-text-4" id="text-1-4-3">
|
||||
<p>
|
||||
Let’s look at the damping introduced by IFF as a function of the IFF gain and compare that with the results obtained using the Simscape model.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7089ea1" class="outline-5">
|
||||
<h5 id="org7089ea1"><span class="section-number-5">1.4.3.1</span> Load Data</h5>
|
||||
<div id="outline-container-org7528195" class="outline-5">
|
||||
<h5 id="org7528195"><span class="section-number-5">1.4.3.1</span> Load Data</h5>
|
||||
<div class="outline-text-5" id="text-1-4-3-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Load Identification Data</span></span>
|
||||
@ -597,8 +604,8 @@ meas_iff_gains = {};
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org54efadb" class="outline-5">
|
||||
<h5 id="org54efadb"><span class="section-number-5">1.4.3.2</span> Spectral Analysis - Setup</h5>
|
||||
<div id="outline-container-org014c26e" class="outline-5">
|
||||
<h5 id="org014c26e"><span class="section-number-5">1.4.3.2</span> Spectral Analysis - Setup</h5>
|
||||
<div class="outline-text-5" id="text-1-4-3-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Setup useful variables</span></span>
|
||||
@ -618,8 +625,8 @@ win = hanning(ceil(1<span class="org-type">*</span>Fs));
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5262511" class="outline-5">
|
||||
<h5 id="org5262511"><span class="section-number-5">1.4.3.3</span> DVF Plant</h5>
|
||||
<div id="outline-container-orga410c78" class="outline-5">
|
||||
<h5 id="orga410c78"><span class="section-number-5">1.4.3.3</span> DVF Plant</h5>
|
||||
<div class="outline-text-5" id="text-1-4-3-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% DVF Plant (transfer function from u to dLm)</span></span>
|
||||
@ -632,20 +639,20 @@ G_iff_gains = {};
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgecf391c" class="figure">
|
||||
<div id="org4661cd1" class="figure">
|
||||
<p><img src="figs/comp_iff_gains_dvf_plant.png" alt="comp_iff_gains_dvf_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Transfer function from \(u\) to \(d\mathcal{L}_m\) for multiple values of the IFF gain</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgf79da15" class="figure">
|
||||
<div id="org106c1ed" class="figure">
|
||||
<p><img src="figs/comp_iff_gains_dvf_plant_zoom.png" alt="comp_iff_gains_dvf_plant_zoom.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 16: </span>Transfer function from \(u\) to \(d\mathcal{L}_m\) for multiple values of the IFF gain (Zoom)</p>
|
||||
</div>
|
||||
|
||||
<div class="important" id="orgbb44640">
|
||||
<div class="important" id="org2517529">
|
||||
<p>
|
||||
The IFF control strategy is very effective for the damping of the suspension modes.
|
||||
It however does not damp the modes at 200Hz, 300Hz and 400Hz (flexible modes of the APA).
|
||||
@ -660,11 +667,11 @@ Also, the experimental results and the models obtained from the Simscape model a
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org47db15b" class="outline-5">
|
||||
<h5 id="org47db15b"><span class="section-number-5">1.4.3.4</span> Experimental Results - Comparison of the un-damped and fully damped system</h5>
|
||||
<div id="outline-container-org97f2ad7" class="outline-5">
|
||||
<h5 id="org97f2ad7"><span class="section-number-5">1.4.3.4</span> Experimental Results - Comparison of the un-damped and fully damped system</h5>
|
||||
<div class="outline-text-5" id="text-1-4-3-4">
|
||||
|
||||
<div id="org4f580a8" class="figure">
|
||||
<div id="org58aadc4" class="figure">
|
||||
<p><img src="figs/comp_undamped_opt_iff_gain_diagonal.png" alt="comp_undamped_opt_iff_gain_diagonal.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 17: </span>Comparison of the diagonal elements of the tranfer function from \(\bm{u}\) to \(d\bm{\mathcal{L}}_m\) without active damping and with optimal IFF gain</p>
|
||||
@ -673,16 +680,16 @@ Also, the experimental results and the models obtained from the Simscape model a
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd48530e" class="outline-4">
|
||||
<h4 id="orgd48530e"><span class="section-number-4">1.4.4</span> Experimental Results - Damped Plant with Optimal gain</h4>
|
||||
<div id="outline-container-org38e77db" class="outline-4">
|
||||
<h4 id="org38e77db"><span class="section-number-4">1.4.4</span> Experimental Results - Damped Plant with Optimal gain</h4>
|
||||
<div class="outline-text-4" id="text-1-4-4">
|
||||
<p>
|
||||
Let’s now look at the \(6 \times 6\) damped plant with the optimal gain \(g = 400\).
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf0af7da" class="outline-5">
|
||||
<h5 id="orgf0af7da"><span class="section-number-5">1.4.4.1</span> Load Data</h5>
|
||||
<div id="outline-container-org5b64143" class="outline-5">
|
||||
<h5 id="org5b64143"><span class="section-number-5">1.4.4.1</span> Load Data</h5>
|
||||
<div class="outline-text-5" id="text-1-4-4-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Load Identification Data</span></span>
|
||||
@ -696,8 +703,8 @@ meas_iff_struts = {};
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1ce1b15" class="outline-5">
|
||||
<h5 id="org1ce1b15"><span class="section-number-5">1.4.4.2</span> Spectral Analysis - Setup</h5>
|
||||
<div id="outline-container-org9d60597" class="outline-5">
|
||||
<h5 id="org9d60597"><span class="section-number-5">1.4.4.2</span> Spectral Analysis - Setup</h5>
|
||||
<div class="outline-text-5" id="text-1-4-4-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Setup useful variables</span></span>
|
||||
@ -717,8 +724,8 @@ win = hanning(ceil(1<span class="org-type">*</span>Fs));
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgac97ace" class="outline-5">
|
||||
<h5 id="orgac97ace"><span class="section-number-5">1.4.4.3</span> DVF Plant</h5>
|
||||
<div id="outline-container-org5e16098" class="outline-5">
|
||||
<h5 id="org5e16098"><span class="section-number-5">1.4.4.3</span> DVF Plant</h5>
|
||||
<div class="outline-text-5" id="text-1-4-4-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% DVF Plant (transfer function from u to dLm)</span></span>
|
||||
@ -731,20 +738,20 @@ G_iff_opt = {};
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org50d06b6" class="figure">
|
||||
<div id="org863be1b" class="figure">
|
||||
<p><img src="figs/damped_iff_plant_comp_diagonal.png" alt="damped_iff_plant_comp_diagonal.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 18: </span>Comparison of the diagonal elements of the transfer functions from \(\bm{u}\) to \(d\bm{\mathcal{L}}_m\) with active damping (IFF) applied with an optimal gain \(g = 400\)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgc9f6f9f" class="figure">
|
||||
<div id="org071cb05" class="figure">
|
||||
<p><img src="figs/damped_iff_plant_comp_off_diagonal.png" alt="damped_iff_plant_comp_off_diagonal.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 19: </span>Comparison of the off-diagonal elements of the transfer functions from \(\bm{u}\) to \(d\bm{\mathcal{L}}_m\) with active damping (IFF) applied with an optimal gain \(g = 400\)</p>
|
||||
</div>
|
||||
|
||||
<div class="important" id="org067c4cc">
|
||||
<div class="important" id="org57eccf4">
|
||||
<p>
|
||||
With the IFF control strategy applied and the optimal gain used, the suspension modes are very well dapmed.
|
||||
Remains the undamped flexible modes of the APA, and the modes of the plates.
|
||||
@ -759,15 +766,215 @@ The Simscape model and the experimental results are in very good agreement.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcf93367" class="outline-3">
|
||||
<h3 id="orgcf93367"><span class="section-number-3">1.5</span> Modal Analysis</h3>
|
||||
<div class="outline-text-3" id="text-1-5">
|
||||
<p>
|
||||
Several 3-axis accelerometers are fixed on the top platform of the nano-hexapod as shown in Figure <a href="#orgbafa9c1">22</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org30849ed" class="figure">
|
||||
<p><img src="figs/accelerometers_nano_hexapod.jpg" alt="accelerometers_nano_hexapod.jpg" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 20: </span>Location of the accelerometers on top of the nano-hexapod</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgba38b08" class="outline-2">
|
||||
<h2 id="orgba38b08"><span class="section-number-2">2</span> Encoders fixed to the plates</h2>
|
||||
<p>
|
||||
The top platform is then excited using an instrumented hammer as shown in Figure <a href="#orge948ff2">21</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orge948ff2" class="figure">
|
||||
<p><img src="figs/hammer_excitation_compliance_meas.jpg" alt="hammer_excitation_compliance_meas.jpg" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 21: </span>Example of an excitation using an instrumented hammer</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4380b82" class="outline-4">
|
||||
<h4 id="org4380b82"><span class="section-number-4">1.5.1</span> Effectiveness of the IFF Strategy - Compliance</h4>
|
||||
<div class="outline-text-4" id="text-1-5-1">
|
||||
<p>
|
||||
In this section, we wish to estimated the effectiveness of the IFF strategy concerning the compliance.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The top plate is excited vertically using the instrumented hammer two times:
|
||||
</p>
|
||||
<ol class="org-ol">
|
||||
<li>no control loop is used</li>
|
||||
<li>decentralized IFF is used</li>
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
The data is loaded.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">frf_ol = load(<span class="org-string">'Measurement_Z_axis.mat'</span>); <span class="org-comment">% Open-Loop</span>
|
||||
frf_iff = load(<span class="org-string">'Measurement_Z_axis_damped.mat'</span>); <span class="org-comment">% IFF</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The mean vertical motion of the top platform is computed by averaging all 5 accelerometers.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Multiply by 10 (gain in m/s^2/V) and divide by 5 (number of accelerometers)</span></span>
|
||||
d_frf_ol = 10<span class="org-type">/</span>5<span class="org-type">*</span>(frf_ol.FFT1_H1_4_1_RMS_Y_Mod <span class="org-type">+</span> frf_ol.FFT1_H1_7_1_RMS_Y_Mod <span class="org-type">+</span> frf_ol.FFT1_H1_10_1_RMS_Y_Mod <span class="org-type">+</span> frf_ol.FFT1_H1_13_1_RMS_Y_Mod <span class="org-type">+</span> frf_ol.FFT1_H1_16_1_RMS_Y_Mod)<span class="org-type">./</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>frf_ol.FFT1_H1_16_1_RMS_X_Val)<span class="org-type">.^</span>2;
|
||||
d_frf_iff = 10<span class="org-type">/</span>5<span class="org-type">*</span>(frf_iff.FFT1_H1_4_1_RMS_Y_Mod <span class="org-type">+</span> frf_iff.FFT1_H1_7_1_RMS_Y_Mod <span class="org-type">+</span> frf_iff.FFT1_H1_10_1_RMS_Y_Mod <span class="org-type">+</span> frf_iff.FFT1_H1_13_1_RMS_Y_Mod <span class="org-type">+</span> frf_iff.FFT1_H1_16_1_RMS_Y_Mod)<span class="org-type">./</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>frf_iff.FFT1_H1_16_1_RMS_X_Val)<span class="org-type">.^</span>2;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The vertical compliance (magnitude of the transfer function from a vertical force applied on the top plate to the vertical motion of the top plate) is shown in Figure <a href="#orgbafa9c1">22</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgbafa9c1" class="figure">
|
||||
<p><img src="figs/compliance_vertical_comp_iff.png" alt="compliance_vertical_comp_iff.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 22: </span>Measured vertical compliance with and without IFF</p>
|
||||
</div>
|
||||
|
||||
<div class="important" id="orgada0906">
|
||||
<p>
|
||||
From Figure <a href="#orgbafa9c1">22</a>, it is clear that the IFF control strategy is very effective in damping the suspensions modes of the nano-hexapode.
|
||||
It also has the effect of degrading (slightly) the vertical compliance at low frequency.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org432b9c9" class="outline-4">
|
||||
<h4 id="org432b9c9"><span class="section-number-4">1.5.2</span> Comparison with the Simscape Model</h4>
|
||||
<div class="outline-text-4" id="text-1-5-2">
|
||||
<p>
|
||||
Let’s now compare the measured vertical compliance with the vertical compliance as estimated from the Simscape model.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The transfer function from a vertical external force to the absolute motion of the top platform is identified (with and without IFF) using the Simscape model.
|
||||
The comparison is done in Figure <a href="#org871a1cd">23</a>.
|
||||
Again, the model is quire accurate!
|
||||
</p>
|
||||
|
||||
<div id="org871a1cd" class="figure">
|
||||
<p><img src="figs/compliance_vertical_comp_model_iff.png" alt="compliance_vertical_comp_model_iff.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 23: </span>Measured vertical compliance with and without IFF</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9e1cc1a" class="outline-4">
|
||||
<h4 id="org9e1cc1a"><span class="section-number-4">1.5.3</span> Obtained Mode Shapes</h4>
|
||||
<div class="outline-text-4" id="text-1-5-3">
|
||||
<p>
|
||||
Then, several excitation are performed using the instrumented Hammer and the mode shapes are extracted.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We can observe the mode shapes of the first 6 modes that are the suspension modes (the plate is behaving as a solid body) in Figure <a href="#org46cb63b">24</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org46cb63b" class="figure">
|
||||
<p><img src="figs/mode_shapes_annotated.gif" alt="mode_shapes_annotated.gif" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 24: </span>Measured mode shapes for the first six modes</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Then, there is a mode at 692Hz which corresponds to a flexible mode of the top plate (Figure <a href="#org46cb63b">24</a>).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org04d65e3" class="figure">
|
||||
<p><img src="figs/ModeShapeFlex1_crop.gif" alt="ModeShapeFlex1_crop.gif" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 25: </span>First flexible mode at 692Hz</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained modes are summarized in Table <a href="#org3a99570">2</a>.
|
||||
</p>
|
||||
|
||||
<table id="org3a99570" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 2:</span> Description of the identified modes</caption>
|
||||
|
||||
<colgroup>
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-right">Mode Number</th>
|
||||
<th scope="col" class="org-right">Frequency [Hz]</th>
|
||||
<th scope="col" class="org-left">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-right">1</td>
|
||||
<td class="org-right">105</td>
|
||||
<td class="org-left">Suspension Mode: ~Y-translation</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">2</td>
|
||||
<td class="org-right">107</td>
|
||||
<td class="org-left">Suspension Mode: ~X-translation</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">3</td>
|
||||
<td class="org-right">131</td>
|
||||
<td class="org-left">Suspension Mode: Z-translation</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">4</td>
|
||||
<td class="org-right">161</td>
|
||||
<td class="org-left">Suspension Mode: ~Y-tilt</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">5</td>
|
||||
<td class="org-right">162</td>
|
||||
<td class="org-left">Suspension Mode: ~X-tilt</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">6</td>
|
||||
<td class="org-right">180</td>
|
||||
<td class="org-left">Suspension Mode: Z-rotation</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">7</td>
|
||||
<td class="org-right">692</td>
|
||||
<td class="org-left">(flexible) Membrane mode of the top platform</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6382ca3" class="outline-2">
|
||||
<h2 id="org6382ca3"><span class="section-number-2">2</span> Encoders fixed to the plates</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2021-06-10 jeu. 17:52</p>
|
||||
<p class="date">Created: 2021-06-14 lun. 17:24</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1441,5 +1441,164 @@ Remains the undamped flexible modes of the APA, and the modes of the plates.
|
||||
The Simscape model and the experimental results are in very good agreement.
|
||||
#+end_important
|
||||
|
||||
** Modal Analysis
|
||||
*** Introduction :ignore:
|
||||
Several 3-axis accelerometers are fixed on the top platform of the nano-hexapod as shown in Figure [[fig:compliance_vertical_comp_iff]].
|
||||
|
||||
#+name: fig:accelerometers_nano_hexapod
|
||||
#+caption: Location of the accelerometers on top of the nano-hexapod
|
||||
#+attr_latex: :width \linewidth
|
||||
[[file:figs/accelerometers_nano_hexapod.jpg]]
|
||||
|
||||
The top platform is then excited using an instrumented hammer as shown in Figure [[fig:hammer_excitation_compliance_meas]].
|
||||
|
||||
#+name: fig:hammer_excitation_compliance_meas
|
||||
#+caption: Example of an excitation using an instrumented hammer
|
||||
#+attr_latex: :width \linewidth
|
||||
[[file:figs/hammer_excitation_compliance_meas.jpg]]
|
||||
|
||||
*** Effectiveness of the IFF Strategy - Compliance
|
||||
In this section, we wish to estimated the effectiveness of the IFF strategy concerning the compliance.
|
||||
|
||||
The top plate is excited vertically using the instrumented hammer two times:
|
||||
1. no control loop is used
|
||||
2. decentralized IFF is used
|
||||
|
||||
The data is loaded.
|
||||
#+begin_src matlab
|
||||
frf_ol = load('Measurement_Z_axis.mat'); % Open-Loop
|
||||
frf_iff = load('Measurement_Z_axis_damped.mat'); % IFF
|
||||
#+end_src
|
||||
|
||||
The mean vertical motion of the top platform is computed by averaging all 5 accelerometers.
|
||||
#+begin_src matlab
|
||||
%% Multiply by 10 (gain in m/s^2/V) and divide by 5 (number of accelerometers)
|
||||
d_frf_ol = 10/5*(frf_ol.FFT1_H1_4_1_RMS_Y_Mod + frf_ol.FFT1_H1_7_1_RMS_Y_Mod + frf_ol.FFT1_H1_10_1_RMS_Y_Mod + frf_ol.FFT1_H1_13_1_RMS_Y_Mod + frf_ol.FFT1_H1_16_1_RMS_Y_Mod)./(2*pi*frf_ol.FFT1_H1_16_1_RMS_X_Val).^2;
|
||||
d_frf_iff = 10/5*(frf_iff.FFT1_H1_4_1_RMS_Y_Mod + frf_iff.FFT1_H1_7_1_RMS_Y_Mod + frf_iff.FFT1_H1_10_1_RMS_Y_Mod + frf_iff.FFT1_H1_13_1_RMS_Y_Mod + frf_iff.FFT1_H1_16_1_RMS_Y_Mod)./(2*pi*frf_iff.FFT1_H1_16_1_RMS_X_Val).^2;
|
||||
#+end_src
|
||||
|
||||
The vertical compliance (magnitude of the transfer function from a vertical force applied on the top plate to the vertical motion of the top plate) is shown in Figure [[fig:compliance_vertical_comp_iff]].
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
hold on;
|
||||
plot(frf_ol.FFT1_H1_16_1_RMS_X_Val, d_frf_ol, 'DisplayName', 'OL');
|
||||
plot(frf_iff.FFT1_H1_16_1_RMS_X_Val, d_frf_iff, 'DisplayName', 'IFF');
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Vertical Compliance [$m/N$]');
|
||||
xlim([20, 2e3]); ylim([2e-9, 2e-5]);
|
||||
legend('location', 'northeast');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/compliance_vertical_comp_iff.pdf', 'width', 'wide', 'height', 'normal');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:compliance_vertical_comp_iff
|
||||
#+caption: Measured vertical compliance with and without IFF
|
||||
#+RESULTS:
|
||||
[[file:figs/compliance_vertical_comp_iff.png]]
|
||||
|
||||
#+begin_important
|
||||
From Figure [[fig:compliance_vertical_comp_iff]], it is clear that the IFF control strategy is very effective in damping the suspensions modes of the nano-hexapode.
|
||||
It also has the effect of degrading (slightly) the vertical compliance at low frequency.
|
||||
#+end_important
|
||||
|
||||
*** Comparison with the Simscape Model
|
||||
Let's now compare the measured vertical compliance with the vertical compliance as estimated from the Simscape model.
|
||||
|
||||
The transfer function from a vertical external force to the absolute motion of the top platform is identified (with and without IFF) using the Simscape model.
|
||||
#+begin_src matlab :exports none
|
||||
%% Identify the IFF Plant (transfer function from u to taum)
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Fz_ext'], 1, 'openinput'); io_i = io_i + 1; % External - Vertical force
|
||||
io(io_i) = linio([mdl, '/Z_top_plat'], 1, 'openoutput'); io_i = io_i + 1; % Absolute vertical motion of top platform
|
||||
|
||||
%% Initialize Nano-Hexapod in Open Loop
|
||||
n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
||||
'flex_top_type', '4dof', ...
|
||||
'motion_sensor_type', 'struts', ...
|
||||
'actuator_type', '2dof');
|
||||
|
||||
G_compl_z_ol = linearize(mdl, io, 0.0, options);
|
||||
|
||||
%% Initialize Nano-Hexapod with IFF
|
||||
Kiff = 400*(1/(s + 2*pi*40))*... % Low pass filter (provides integral action above 40Hz)
|
||||
(s/(s + 2*pi*30))*... % High pass filter to limit low frequency gain
|
||||
(1/(1 + s/2/pi/500))*... % Low pass filter to be more robust to high frequency resonances
|
||||
eye(6); % Diagonal 6x6 controller
|
||||
|
||||
n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
||||
'flex_top_type', '4dof', ...
|
||||
'motion_sensor_type', 'struts', ...
|
||||
'actuator_type', '2dof', ...
|
||||
'controller_type', 'iff');
|
||||
|
||||
G_compl_z_iff = linearize(mdl, io, 0.0, options);
|
||||
#+end_src
|
||||
|
||||
The comparison is done in Figure [[fig:compliance_vertical_comp_model_iff]].
|
||||
Again, the model is quire accurate!
|
||||
#+begin_src matlab :exports none
|
||||
%% Comparison of the measured compliance and the one obtained from the model
|
||||
freqs = 2*logspace(1,3,1000);
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(frf_ol.FFT1_H1_16_1_RMS_X_Val, d_frf_ol, '-', 'DisplayName', 'OL - Meas.');
|
||||
plot(frf_iff.FFT1_H1_16_1_RMS_X_Val, d_frf_iff, '-', 'DisplayName', 'IFF - Meas.');
|
||||
set(gca,'ColorOrderIndex',1)
|
||||
plot(freqs, abs(squeeze(freqresp(G_compl_z_ol, freqs, 'Hz'))), '--', 'DisplayName', 'OL - Model')
|
||||
plot(freqs, abs(squeeze(freqresp(G_compl_z_iff, freqs, 'Hz'))), '--', 'DisplayName', 'IFF - Model')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
xlabel('Frequency [Hz]'); ylabel('Vertical Compliance [$m/N$]');
|
||||
xlim([20, 2e3]); ylim([2e-9, 2e-5]);
|
||||
legend('location', 'northeast', 'FontSize', 8);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/compliance_vertical_comp_model_iff.pdf', 'width', 'wide', 'height', 'normal');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:compliance_vertical_comp_model_iff
|
||||
#+caption: Measured vertical compliance with and without IFF
|
||||
#+RESULTS:
|
||||
[[file:figs/compliance_vertical_comp_model_iff.png]]
|
||||
|
||||
*** Obtained Mode Shapes
|
||||
Then, several excitation are performed using the instrumented Hammer and the mode shapes are extracted.
|
||||
|
||||
We can observe the mode shapes of the first 6 modes that are the suspension modes (the plate is behaving as a solid body) in Figure [[fig:mode_shapes_annotated]].
|
||||
|
||||
#+name: fig:mode_shapes_annotated
|
||||
#+caption: Measured mode shapes for the first six modes
|
||||
#+attr_latex: :width \linewidth
|
||||
[[file:figs/mode_shapes_annotated.gif]]
|
||||
|
||||
Then, there is a mode at 692Hz which corresponds to a flexible mode of the top plate (Figure [[fig:mode_shapes_annotated]]).
|
||||
|
||||
#+name: fig:mode_shapes_annotated
|
||||
#+caption: First flexible mode at 692Hz
|
||||
#+attr_latex: :width 0.3\linewidth
|
||||
[[file:figs/ModeShapeFlex1_crop.gif]]
|
||||
|
||||
The obtained modes are summarized in Table [[tab:description_modes]].
|
||||
|
||||
#+name: tab:description_modes
|
||||
#+caption: Description of the identified modes
|
||||
#+attr_latex: :environment tabularx :width 0.7\linewidth :align ccX
|
||||
#+attr_latex: :center t :booktabs t :float t
|
||||
| Mode | Freq. [Hz] | Description |
|
||||
|------+------------+----------------------------------------------|
|
||||
| 1 | 105 | Suspension Mode: Y-translation |
|
||||
| 2 | 107 | Suspension Mode: X-translation |
|
||||
| 3 | 131 | Suspension Mode: Z-translation |
|
||||
| 4 | 161 | Suspension Mode: Y-tilt |
|
||||
| 5 | 162 | Suspension Mode: X-tilt |
|
||||
| 6 | 180 | Suspension Mode: Z-rotation |
|
||||
| 7 | 692 | (flexible) Membrane mode of the top platform |
|
||||
|
||||
* Encoders fixed to the plates
|
||||
** Introduction :ignore:
|
||||
|