Update the disturbance analysis

This commit is contained in:
Thomas Dehaeze 2019-12-13 16:40:46 +01:00
parent 73a3735f19
commit 27055d8f24
16 changed files with 224 additions and 288 deletions

View 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>
<!-- 2019-12-11 mer. 17:19 -->
<!-- 2019-12-13 ven. 16:39 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Identification of the disturbances</title>
@ -283,14 +283,13 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org764c7a5">1. Identification</a></li>
<li><a href="#orgb1acef0">2. Sensitivity to Disturbances</a></li>
<li><a href="#orgf3d9a05">3. Power Spectral Density of the effect of the disturbances</a></li>
<li><a href="#org9f89ab8">4. Compute the Power Spectral Density of the disturbance force</a></li>
<li><a href="#org9815bee">5. Noise Budget</a></li>
<li><a href="#org926ae63">6. Approximation</a></li>
<li><a href="#orged7769c">7. Save</a></li>
<li><a href="#org5befdfe">8. Display Obtained Disturbances</a></li>
<li><a href="#org19fda9d">1. Simscape Model</a></li>
<li><a href="#org9e4d547">2. Identification</a></li>
<li><a href="#orgef77399">3. Sensitivity to Disturbances</a></li>
<li><a href="#org27e1b01">4. Power Spectral Density of the effect of the disturbances</a></li>
<li><a href="#orge82082e">5. Compute the Power Spectral Density of the disturbance force</a></li>
<li><a href="#org56c79b2">6. Noise Budget</a></li>
<li><a href="#org5d50476">7. Save</a></li>
</ul>
</div>
</div>
@ -300,7 +299,7 @@ The goal here is to extract the Power Spectral Density of the sources of perturb
</p>
<p>
The sources of perturbations are (schematically shown in figure <a href="#org41251c6">1</a>):
The sources of perturbations are (schematically shown in figure <a href="#orgf25aa60">1</a>):
</p>
<ul class="org-ul">
<li>\(D_w\): Ground Motion</li>
@ -309,12 +308,12 @@ These forces can be due to imperfect guiding for instance.</li>
</ul>
<p>
Because we cannot measure directly the perturbation forces, we have the measure the effect of those perturbations on the system (in terms of velocity for instance using geophones, \(D\) on figure <a href="#org41251c6">1</a>) and then, using a model, compute the forces that induced such velocity.
Because we cannot measure directly the perturbation forces, we have the measure the effect of those perturbations on the system (in terms of velocity for instance using geophones, \(D\) on figure <a href="#orgf25aa60">1</a>) and then, using a model, compute the forces that induced such velocity.
</p>
<div id="org41251c6" class="figure">
<div id="orgf25aa60" class="figure">
<p><img src="figs/uniaxial-model-micro-station.png" alt="uniaxial-model-micro-station.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Schematic of the Micro Station and the sources of disturbance</p>
@ -325,21 +324,69 @@ Because we cannot measure directly the perturbation forces, we have the measure
This file is divided in the following sections:
</p>
<ul class="org-ul">
<li>Section <a href="#org965ca14">1</a>: transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup</li>
<li>Section <a href="#orgeb1f8aa">2</a>: the bode plot of those transfer functions are shown</li>
<li>Section <a href="#org157daba">3</a>: the measured PSD of the effect of the disturbances are shown</li>
<li>Section <a href="#org052ae5a">4</a>: from the model and the measured PSD, the PSD of the disturbance forces are computed</li>
<li>Section <a href="#org2eab1f7">5</a>: with the computed PSD, the noise budget of the system is done</li>
<li>Section <a href="#org9123adf">1</a>: the simscape model used here is presented</li>
<li>Section <a href="#orgdd2d5a8">2</a>: transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup</li>
<li>Section <a href="#org35da589">3</a>: the bode plot of those transfer functions are shown</li>
<li>Section <a href="#orgec11822">4</a>: the measured PSD of the effect of the disturbances are shown</li>
<li>Section <a href="#org235ee96">5</a>: from the model and the measured PSD, the PSD of the disturbance forces are computed</li>
<li>Section <a href="#org44895f0">6</a>: with the computed PSD, the noise budget of the system is done</li>
</ul>
<div id="outline-container-org764c7a5" class="outline-2">
<h2 id="org764c7a5"><span class="section-number-2">1</span> Identification</h2>
<div id="outline-container-org19fda9d" class="outline-2">
<h2 id="org19fda9d"><span class="section-number-2">1</span> Simscape Model</h2>
<div class="outline-text-2" id="text-1">
<p>
<a id="org965ca14"></a>
<a id="org9123adf"></a>
</p>
<p>
The following Simscape model of the micro-station is the same model used for the dynamical analysis.
However, we here constrain all the stage to only move in the vertical direction.
</p>
<p>
We add disturbances forces in the vertical direction for the Translation Stage and the Spindle.
Also, we measure the absolute displacement of the granite and of the top platform of the Hexapod.
</p>
<div class="org-src-container">
<pre class="src src-matlab">open<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'disturbances/matlab/sim_micro_station_disturbances.slx'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<p>
We load the configuration and we set a small <code>StopTime</code>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/conf_simscape.mat'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
<span class="org-matlab-simulink-keyword">set_param</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">conf_simscape</span>, <span class="org-string">'StopTime'</span>, '<span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">5</span><span class="org-type">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<p>
We initialize all the stages.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeGround<span class="org-rainbow-delimiters-depth-1">()</span>;
initializeGranite<span class="org-rainbow-delimiters-depth-1">()</span>;
initializeTy<span class="org-rainbow-delimiters-depth-1">()</span>;
initializeRy<span class="org-rainbow-delimiters-depth-1">()</span>;
initializeRz<span class="org-rainbow-delimiters-depth-1">()</span>;
initializeMicroHexapod<span class="org-rainbow-delimiters-depth-1">()</span>;
initializeAxisc<span class="org-rainbow-delimiters-depth-1">()</span>;
initializeMirror<span class="org-rainbow-delimiters-depth-1">()</span>;
initializeNanoHexapod<span class="org-rainbow-delimiters-depth-1">(</span>struct<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
initializeSample<span class="org-rainbow-delimiters-depth-1">(</span>struct<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'mass'</span>, <span class="org-highlight-numbers-number">50</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
</div>
</div>
<div id="outline-container-org9e4d547" class="outline-2">
<h2 id="org9e4d547"><span class="section-number-2">2</span> Identification</h2>
<div class="outline-text-2" id="text-2">
<p>
<a id="orgdd2d5a8"></a>
The transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup with the code below.
</p>
@ -377,15 +424,15 @@ G.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span class=
</div>
</div>
<div id="outline-container-orgb1acef0" class="outline-2">
<h2 id="orgb1acef0"><span class="section-number-2">2</span> Sensitivity to Disturbances</h2>
<div class="outline-text-2" id="text-2">
<div id="outline-container-orgef77399" class="outline-2">
<h2 id="orgef77399"><span class="section-number-2">3</span> Sensitivity to Disturbances</h2>
<div class="outline-text-2" id="text-3">
<p>
<a id="orgeb1f8aa"></a>
<a id="org35da589"></a>
</p>
<div id="org18fe4f2" class="figure">
<div id="orgab7828d" class="figure">
<p><img src="figs/sensitivity_dist_gm.png" alt="sensitivity_dist_gm.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Sensitivity to Ground Motion (<a href="./figs/sensitivity_dist_gm.png">png</a>, <a href="./figs/sensitivity_dist_gm.pdf">pdf</a>)</p>
@ -393,7 +440,7 @@ G.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span class=
<div id="org03421a4" class="figure">
<div id="org1351421" class="figure">
<p><img src="figs/sensitivity_dist_fty.png" alt="sensitivity_dist_fty.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Sensitivity to vertical forces applied by the Ty stage (<a href="./figs/sensitivity_dist_fty.png">png</a>, <a href="./figs/sensitivity_dist_fty.pdf">pdf</a>)</p>
@ -401,7 +448,7 @@ G.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span class=
<div id="org6c556be" class="figure">
<div id="org667306c" class="figure">
<p><img src="figs/sensitivity_dist_frz.png" alt="sensitivity_dist_frz.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Sensitivity to vertical forces applied by the Rz stage (<a href="./figs/sensitivity_dist_frz.png">png</a>, <a href="./figs/sensitivity_dist_frz.pdf">pdf</a>)</p>
@ -409,11 +456,11 @@ G.OutputName = <span class="org-rainbow-delimiters-depth-1">{</span><span class=
</div>
</div>
<div id="outline-container-orgf3d9a05" class="outline-2">
<h2 id="orgf3d9a05"><span class="section-number-2">3</span> Power Spectral Density of the effect of the disturbances</h2>
<div class="outline-text-2" id="text-3">
<div id="outline-container-org27e1b01" class="outline-2">
<h2 id="org27e1b01"><span class="section-number-2">4</span> Power Spectral Density of the effect of the disturbances</h2>
<div class="outline-text-2" id="text-4">
<p>
<a id="org157daba"></a>
<a id="orgec11822"></a>
The PSD of the relative velocity between the hexapod and the marble in \([(m/s)^2/Hz]\) are loaded for the following sources of disturbance:
</p>
<ul class="org-ul">
@ -442,15 +489,15 @@ We now compute the relative velocity between the hexapod and the granite due to
</div>
<p>
The Power Spectral Density of the relative motion/velocity of the hexapod with respect to the granite are shown in figures <a href="#orga55547e">5</a> and <a href="#org7c4f520">6</a>.
The Power Spectral Density of the relative motion/velocity of the hexapod with respect to the granite are shown in figures <a href="#orge500b6c">5</a> and <a href="#orgd78766d">6</a>.
</p>
<p>
The Cumulative Amplitude Spectrum of the relative motion is shown in figure <a href="#org868ac30">7</a>.
The Cumulative Amplitude Spectrum of the relative motion is shown in figure <a href="#org8fa6982">7</a>.
</p>
<div id="orga55547e" class="figure">
<div id="orge500b6c" class="figure">
<p><img src="figs/dist_effect_relative_velocity.png" alt="dist_effect_relative_velocity.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Amplitude Spectral Density of the relative velocity of the hexapod with respect to the granite due to different sources of perturbation (<a href="./figs/dist_effect_relative_velocity.png">png</a>, <a href="./figs/dist_effect_relative_velocity.pdf">pdf</a>)</p>
@ -458,14 +505,14 @@ The Cumulative Amplitude Spectrum of the relative motion is shown in figure <a h
<div id="org7c4f520" class="figure">
<div id="orgd78766d" class="figure">
<p><img src="figs/dist_effect_relative_motion.png" alt="dist_effect_relative_motion.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Amplitude Spectral Density of the relative displacement of the hexapod with respect to the granite due to different sources of perturbation (<a href="./figs/dist_effect_relative_motion.png">png</a>, <a href="./figs/dist_effect_relative_motion.pdf">pdf</a>)</p>
</div>
<div id="org868ac30" class="figure">
<div id="org8fa6982" class="figure">
<p><img src="figs/dist_effect_relative_motion_cas.png" alt="dist_effect_relative_motion_cas.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Cumulative Amplitude Spectrum of the relative motion due to different sources of perturbation (<a href="./figs/dist_effect_relative_motion_cas.png">png</a>, <a href="./figs/dist_effect_relative_motion_cas.pdf">pdf</a>)</p>
@ -473,15 +520,15 @@ The Cumulative Amplitude Spectrum of the relative motion is shown in figure <a h
</div>
</div>
<div id="outline-container-org9f89ab8" class="outline-2">
<h2 id="org9f89ab8"><span class="section-number-2">4</span> Compute the Power Spectral Density of the disturbance force</h2>
<div class="outline-text-2" id="text-4">
<div id="outline-container-orge82082e" class="outline-2">
<h2 id="orge82082e"><span class="section-number-2">5</span> Compute the Power Spectral Density of the disturbance force</h2>
<div class="outline-text-2" id="text-5">
<p>
<a id="org052ae5a"></a>
<a id="org235ee96"></a>
</p>
<p>
Now, from the extracted transfer functions from the disturbance force to the relative motion of the hexapod with respect to the granite (section <a href="#orgeb1f8aa">2</a>) and from the measured PSD of the relative motion (section <a href="#org157daba">3</a>), we can compute the PSD of the disturbance force.
Now, from the extracted transfer functions from the disturbance force to the relative motion of the hexapod with respect to the granite (section <a href="#org35da589">3</a>) and from the measured PSD of the relative motion (section <a href="#orgec11822">4</a>), we can compute the PSD of the disturbance force.
</p>
<div class="org-src-container">
@ -491,7 +538,7 @@ tyz.psd_f = tyz.pxz_ty_r<span class="org-type">./</span>abs<span class="org-rain
</div>
<div id="org50e0621" class="figure">
<div id="org39f9337" class="figure">
<p><img src="figs/dist_force_psd.png" alt="dist_force_psd.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Amplitude Spectral Density of the disturbance force (<a href="./figs/dist_force_psd.png">png</a>, <a href="./figs/dist_force_psd.pdf">pdf</a>)</p>
@ -499,11 +546,11 @@ tyz.psd_f = tyz.pxz_ty_r<span class="org-type">./</span>abs<span class="org-rain
</div>
</div>
<div id="outline-container-org9815bee" class="outline-2">
<h2 id="org9815bee"><span class="section-number-2">5</span> Noise Budget</h2>
<div class="outline-text-2" id="text-5">
<div id="outline-container-org56c79b2" class="outline-2">
<h2 id="org56c79b2"><span class="section-number-2">6</span> Noise Budget</h2>
<div class="outline-text-2" id="text-6">
<p>
<a id="org2eab1f7"></a>
<a id="org44895f0"></a>
</p>
<p>
@ -512,7 +559,7 @@ We should verify that this is coherent with the measurements.
</p>
<div id="org82364a5" class="figure">
<div id="orga5608a0" class="figure">
<p><img src="figs/psd_effect_dist_verif.png" alt="psd_effect_dist_verif.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Computed Effect of the disturbances on the relative displacement hexapod/granite (<a href="./figs/psd_effect_dist_verif.png">png</a>, <a href="./figs/psd_effect_dist_verif.pdf">pdf</a>)</p>
@ -520,7 +567,7 @@ We should verify that this is coherent with the measurements.
<div id="org551988f" class="figure">
<div id="org96f239c" class="figure">
<p><img src="figs/cas_computed_relative_displacement.png" alt="cas_computed_relative_displacement.png" />
</p>
<p><span class="figure-number">Figure 10: </span>CAS of the total Relative Displacement due to all considered sources of perturbation (<a href="./figs/cas_computed_relative_displacement.png">png</a>, <a href="./figs/cas_computed_relative_displacement.pdf">pdf</a>)</p>
@ -528,43 +575,11 @@ We should verify that this is coherent with the measurements.
</div>
</div>
<div id="outline-container-org926ae63" class="outline-2">
<h2 id="org926ae63"><span class="section-number-2">6</span> Approximation</h2>
<div class="outline-text-2" id="text-6">
<p>
We approximate the PSD of the disturbance with the following transfer functions.
</p>
<div class="org-src-container">
<pre class="src src-matlab">G_ty = <span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">1</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-1">(</span>s<span class="org-type">+</span><span class="org-highlight-numbers-number">634</span>.<span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-1">(</span>s<span class="org-type">+</span><span class="org-highlight-numbers-number">283</span>.<span class="org-highlight-numbers-number">7</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">(</span>s<span class="org-type">+</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>s<span class="org-type">+</span><span class="org-highlight-numbers-number">2</span><span class="org-type">*</span><span class="org-constant">pi</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
G_rz = <span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">5</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-1">(</span>s<span class="org-type">+</span><span class="org-highlight-numbers-number">418</span>.<span class="org-highlight-numbers-number">8</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-1">(</span>s<span class="org-type">+</span><span class="org-highlight-numbers-number">36</span>.<span class="org-highlight-numbers-number">51</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-1">(</span>s<span class="org-type">^</span><span class="org-highlight-numbers-number">2</span> <span class="org-type">+</span> <span class="org-highlight-numbers-number">110</span>.<span class="org-highlight-numbers-number">9</span><span class="org-type">*</span>s <span class="org-type">+</span> <span class="org-highlight-numbers-number">3</span>.<span class="org-highlight-numbers-number">375e04</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">(</span>s<span class="org-type">+</span><span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">7324</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>s<span class="org-type">+</span><span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">546</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>s<span class="org-type">^</span><span class="org-highlight-numbers-number">2</span> <span class="org-type">+</span> <span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">6462</span><span class="org-type">*</span>s <span class="org-type">+</span> <span class="org-highlight-numbers-number">2</span>.<span class="org-highlight-numbers-number">391e04</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
G_gm = <span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">002</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-1">(</span>s<span class="org-type">^</span><span class="org-highlight-numbers-number">2</span> <span class="org-type">+</span> <span class="org-highlight-numbers-number">3</span>.<span class="org-highlight-numbers-number">169</span><span class="org-type">*</span>s <span class="org-type">+</span> <span class="org-highlight-numbers-number">27</span>.<span class="org-highlight-numbers-number">74</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">/</span><span class="org-rainbow-delimiters-depth-1">(</span>s<span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>s<span class="org-type">+</span><span class="org-highlight-numbers-number">32</span>.<span class="org-highlight-numbers-number">73</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>s<span class="org-type">+</span><span class="org-highlight-numbers-number">8</span>.<span class="org-highlight-numbers-number">829</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>s<span class="org-type">+</span><span class="org-highlight-numbers-number">7</span>.<span class="org-highlight-numbers-number">983</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">^</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<p>
We compute the effect of these approximate disturbances on \(D\).
</p>
<div id="orge066a98" class="figure">
<p><img src="figs/estimate_spectral_density_disturbances.png" alt="estimate_spectral_density_disturbances.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Estimated spectral density of the disturbances (<a href="./figs/estimate_spectral_density_disturbances.png">png</a>, <a href="./figs/estimate_spectral_density_disturbances.pdf">pdf</a>)</p>
</div>
<div id="orgce34474" class="figure">
<p><img src="figs/comp_estimation_cas_disturbances.png" alt="comp_estimation_cas_disturbances.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Comparison of the CAS of the disturbances with the approximate ones (<a href="./figs/comp_estimation_cas_disturbances.png">png</a>, <a href="./figs/comp_estimation_cas_disturbances.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-orged7769c" class="outline-2">
<h2 id="orged7769c"><span class="section-number-2">7</span> Save</h2>
<div id="outline-container-org5d50476" class="outline-2">
<h2 id="org5d50476"><span class="section-number-2">7</span> Save</h2>
<div class="outline-text-2" id="text-7">
<p>
The PSD of the disturbance force are now saved for further noise budgeting when control is applied (the mat file is accessible <a href="mat/dist_psd.mat">here</a>).
The PSD of the disturbance force are now saved for further analysis (the mat file is accessible <a href="mat/dist_psd.mat">here</a>).
</p>
<div class="org-src-container">
@ -576,54 +591,15 @@ dist_f.psd_gm = gm.psd_gm; % Power Spectral Density of the Ground Motion [m<span
dist_f.psd_ty = tyz.psd_f; % Power Spectral Density of the force induced by the Ty stage in the Z direction [N<span class="org-type">^</span><span class="org-highlight-numbers-number">2</span><span class="org-type">/</span>Hz]
dist_f.psd_rz = rz.psd_f; % Power Spectral Density of the force induced by the Rz stage in the Z direction [N<span class="org-type">^</span><span class="org-highlight-numbers-number">2</span><span class="org-type">/</span>Hz]
dist_f.G_gm = G_ty;
dist_f.G_ty = G_rz;
dist_f.G_rz = G_gm;
save<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'./disturbances/mat/dist_psd.mat'</span>, <span class="org-string">'dist_f'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
</div>
</div>
<div id="outline-container-org5befdfe" class="outline-2">
<h2 id="org5befdfe"><span class="section-number-2">8</span> Display Obtained Disturbances</h2>
<div class="outline-text-2" id="text-8">
<div class="org-src-container">
<pre class="src src-matlab">initDisturbances<span class="org-rainbow-delimiters-depth-1">()</span>;
load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'./mat/nass_disturbances.mat'</span>, <span class="org-string">'Dwx'</span>, <span class="org-string">'Dwy'</span>, <span class="org-string">'Dwz'</span>, <span class="org-string">'Fty_x'</span>, <span class="org-string">'Fty_z'</span>, <span class="org-string">'Frz_z'</span>, <span class="org-string">'Fd'</span>, <span class="org-string">'Ts'</span>, <span class="org-string">'t'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
plot<span class="org-rainbow-delimiters-depth-1">(</span>t, Dwx, <span class="org-string">'DisplayName'</span>, <span class="org-string">'Dw x'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>t, Dwy, <span class="org-string">'DisplayName'</span>, <span class="org-string">'Dw y'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>t, Dwz, <span class="org-string">'DisplayName'</span>, <span class="org-string">'Dw z'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
hold off;
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Time </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">s</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>; ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Amplitude </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">m</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
legend<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'location'</span>, <span class="org-string">'north east'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
plot<span class="org-rainbow-delimiters-depth-1">(</span>t, Fty_x, <span class="org-string">'DisplayName'</span>, <span class="org-string">'Ty x'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>t, Fty_z, <span class="org-string">'DisplayName'</span>, <span class="org-string">'Ty z'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
plot<span class="org-rainbow-delimiters-depth-1">(</span>t, Frz_z, <span class="org-string">'DisplayName'</span>, <span class="org-string">'Rz z'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
hold off;
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Time </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">s</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>; ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Force </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">N</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
legend<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'location'</span>, <span class="org-string">'north east'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
</pre>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2019-12-11 mer. 17:19</p>
<p class="date">Created: 2019-12-13 ven. 16:39</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>

View File

@ -164,6 +164,7 @@ Because we cannot measure directly the perturbation forces, we have the measure
This file is divided in the following sections:
- Section [[sec:simscape_model]]: the simscape model used here is presented
- Section [[sec:identification]]: transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup
- Section [[sec:sensitivity_disturbances]]: the bode plot of those transfer functions are shown
- Section [[sec:psd_dist]]: the measured PSD of the effect of the disturbances are shown
@ -187,9 +188,41 @@ This file is divided in the following sections:
open('disturbances/matlab/sim_micro_station_disturbances.slx')
#+end_src
* Simscape Model
<<sec:simscape_model>>
The following Simscape model of the micro-station is the same model used for the dynamical analysis.
However, we here constrain all the stage to only move in the vertical direction.
We add disturbances forces in the vertical direction for the Translation Stage and the Spindle.
Also, we measure the absolute displacement of the granite and of the top platform of the Hexapod.
#+begin_src matlab
open('disturbances/matlab/sim_micro_station_disturbances.slx');
#+end_src
We load the configuration and we set a small =StopTime=.
#+begin_src matlab
load('mat/conf_simscape.mat');
set_param(conf_simscape, 'StopTime', '0.5');
#+end_src
We initialize all the stages.
#+begin_src matlab
initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeNanoHexapod(struct('actuator', 'piezo'));
initializeSample(struct('mass', 50));
#+end_src
* Identification
<<sec:identification>>
The transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup with the code below.
#+begin_src matlab
@ -237,7 +270,7 @@ G.OutputName = {'Dgm', 'Dhm', 'Vm'};
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_dist_gm.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
#+begin_src matlab :var filepath="figs/sensitivity_dist_gm.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
@ -259,7 +292,7 @@ G.OutputName = {'Dgm', 'Dhm', 'Vm'};
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_dist_fty.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
#+begin_src matlab :var filepath="figs/sensitivity_dist_fty.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
@ -281,7 +314,7 @@ G.OutputName = {'Dgm', 'Dhm', 'Vm'};
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/sensitivity_dist_frz.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
#+begin_src matlab :var filepath="figs/sensitivity_dist_frz.pdf" :var figsize="wide-normal" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
@ -309,9 +342,7 @@ Also, the Ground Motion is measured.
rz.f = rz.f(2:end);
tyz.f = tyz.f(2:end);
tyx.f = tyx.f(2:end);
#+end_src
#+begin_src matlab :exports none
gm.psd_gm = gm.psd_gm(2:end); % PSD of Ground Motion [m^2/Hz]
gm.psd_gv = gm.psd_gv(2:end); % PSD of Ground Velocity [(m/s)^2/Hz]
rz.pxsp_r = rz.pxsp_r(2:end); % PSD of Relative Velocity [(m/s)^2/Hz]
@ -487,89 +518,8 @@ We should verify that this is coherent with the measurements.
#+CAPTION: CAS of the total Relative Displacement due to all considered sources of perturbation ([[./figs/cas_computed_relative_displacement.png][png]], [[./figs/cas_computed_relative_displacement.pdf][pdf]])
[[file:figs/cas_computed_relative_displacement.png]]
* Approximation
We approximate the PSD of the disturbance with the following transfer functions.
#+begin_src matlab
G_ty = 0.1*(s+634.3)*(s+283.7)/((s+2*pi)*(s+2*pi));
G_rz = 0.5*(s+418.8)*(s+36.51)*(s^2 + 110.9*s + 3.375e04)/((s+0.7324)*(s+0.546)*(s^2 + 0.6462*s + 2.391e04));
G_gm = 0.002*(s^2 + 3.169*s + 27.74)/(s*(s+32.73)*(s+8.829)*(s+7.983)^2);
#+end_src
We compute the effect of these approximate disturbances on $D$.
#+begin_src matlab :exports none
% Power Spectral Density of the relative Displacement
psd_gm_s = abs(squeeze(freqresp(G_gm*G('Vm', 'Dw')/s, gm.f, 'Hz'))).^2;
psd_ty_s = abs(squeeze(freqresp(G_ty*G('Vm', 'Fty')/s, gm.f, 'Hz'))).^2;
psd_rz_s = abs(squeeze(freqresp(G_rz*G('Vm', 'Frz')/s, gm.f, 'Hz'))).^2;
#+end_src
#+begin_src matlab :exports none
figure;
ax1 = subplot(1, 2, 1);
hold on;
set(gca,'ColorOrderIndex',2);
plot(gm.f, sqrt(psd_ty_d), 'DisplayName', 'F - Ty');
plot(gm.f, sqrt(psd_rz_d), 'DisplayName', 'F - Rz');
set(gca,'ColorOrderIndex',2);
plot(gm.f, sqrt(psd_ty_s), '--', 'HandleVisibility', 'off');
plot(gm.f, sqrt(psd_rz_s), '--', 'HandleVisibility', 'off');
hold off;
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('ASD of the disturbance force $\left[\frac{F}{\sqrt{Hz}}\right]$')
legend('Location', 'southwest');
xlim([2, 500]);
ax2 = subplot(1, 2, 2);
hold on;
plot(gm.f, sqrt(psd_gm_d), 'DisplayName', 'D - Gm');
set(gca,'ColorOrderIndex',1);
plot(gm.f, sqrt(psd_gm_s), '--', 'HandleVisibility', 'off');
hold off;
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('ASD of the ground displacement $\left[\frac{m}{\sqrt{Hz}}\right]$')
legend('Location', 'southwest');
xlim([2, 500]);
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/estimate_spectral_density_disturbances.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:estimate_spectral_density_disturbances
#+CAPTION: Estimated spectral density of the disturbances ([[./figs/estimate_spectral_density_disturbances.png][png]], [[./figs/estimate_spectral_density_disturbances.pdf][pdf]])
[[file:figs/estimate_spectral_density_disturbances.png]]
#+begin_src matlab :exports none
figure;
hold on;
plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_gm_d)))), 'DisplayName', 'Gm');
plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_ty_d)))), 'DisplayName', 'Ty');
plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_rz_d)))), 'DisplayName', 'Rz');
plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_gm_d + psd_ty_d + psd_rz_d)))), 'k-', 'DisplayName', 'tot');
set(gca,'ColorOrderIndex',1);
plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_gm_s)))), '--', 'HandleVisibility', 'off');
plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_ty_s)))), '--', 'HandleVisibility', 'off');
plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_rz_s)))), '--', 'HandleVisibility', 'off');
plot(gm.f, flip(sqrt(-cumtrapz(flip(gm.f), flip(psd_gm_s + psd_ty_s + psd_rz_s)))), 'k--', 'HandleVisibility', 'off');
hold off;
set(gca, 'xscale', 'log'); set(gca, 'yscale', 'log');
xlabel('Frequency [Hz]'); ylabel('Cumulative Amplitude Spectrum [m]')
legend('location', 'northeast');
xlim([2, 500]); ylim([1e-11, 1e-6]);
#+end_src
#+HEADER: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/comp_estimation_cas_disturbances.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+NAME: fig:comp_estimation_cas_disturbances
#+CAPTION: Comparison of the CAS of the disturbances with the approximate ones ([[./figs/comp_estimation_cas_disturbances.png][png]], [[./figs/comp_estimation_cas_disturbances.pdf][pdf]])
[[file:figs/comp_estimation_cas_disturbances.png]]
* Save
The PSD of the disturbance force are now saved for further noise budgeting when control is applied (the mat file is accessible [[file:mat/dist_psd.mat][here]]).
The PSD of the disturbance force are now saved for further analysis (the mat file is accessible [[file:mat/dist_psd.mat][here]]).
#+begin_src matlab
dist_f = struct();
@ -580,37 +530,5 @@ The PSD of the disturbance force are now saved for further noise budgeting when
dist_f.psd_ty = tyz.psd_f; % Power Spectral Density of the force induced by the Ty stage in the Z direction [N^2/Hz]
dist_f.psd_rz = rz.psd_f; % Power Spectral Density of the force induced by the Rz stage in the Z direction [N^2/Hz]
dist_f.G_gm = G_ty;
dist_f.G_ty = G_rz;
dist_f.G_rz = G_gm;
save('./disturbances/mat/dist_psd.mat', 'dist_f');
#+end_src
* Display Obtained Disturbances
#+begin_src matlab
initDisturbances();
load('./mat/nass_disturbances.mat', 'Dwx', 'Dwy', 'Dwz', 'Fty_x', 'Fty_z', 'Frz_z', 'Fd', 'Ts', 't');
#+end_src
#+begin_src matlab
figure;
hold on;
plot(t, Dwx, 'DisplayName', 'Dw x');
plot(t, Dwy, 'DisplayName', 'Dw y');
plot(t, Dwz, 'DisplayName', 'Dw z');
hold off;
xlabel('Time [s]'); ylabel('Amplitude [m]');
legend('location', 'north east');
#+end_src
#+begin_src matlab
figure;
hold on;
plot(t, Fty_x, 'DisplayName', 'Ty x');
plot(t, Fty_z, 'DisplayName', 'Ty z');
plot(t, Frz_z, 'DisplayName', 'Rz z');
hold off;
xlabel('Time [s]'); ylabel('Force [N]');
legend('location', 'north east');
#+end_src

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 KiB

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View 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>
<!-- 2019-12-13 ven. 15:53 -->
<!-- 2019-12-13 ven. 16:25 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Identification</title>
@ -283,17 +283,17 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgb8d5122">1. Some notes about the Simscape Model</a></li>
<li><a href="#orgc2a789d">2. Compare with measurements at the CoM of each element</a>
<li><a href="#orgb856d17">1. Some notes about the Simscape Model</a></li>
<li><a href="#orga0759cc">2. Compare with measurements at the CoM of each element</a>
<ul>
<li><a href="#orgf4fd5e0">2.1. Prepare the Simulation</a></li>
<li><a href="#org80db7e9">2.2. Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</a></li>
<li><a href="#org93dc35e">2.3. Create a frame at the CoM of each solid body</a></li>
<li><a href="#org7b8b6f1">2.4. Identification of the dynamics of the Simscape Model</a></li>
<li><a href="#org45a93e8">2.5. Compare with measurements</a></li>
<li><a href="#org276f402">2.1. Prepare the Simulation</a></li>
<li><a href="#org58d4a0b">2.2. Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</a></li>
<li><a href="#orgd1a401f">2.3. Create a frame at the CoM of each solid body</a></li>
<li><a href="#org938e5b4">2.4. Identification of the dynamics of the Simscape Model</a></li>
<li><a href="#org8b67645">2.5. Compare with measurements</a></li>
</ul>
</li>
<li><a href="#org75fd8be">3. Conclusion</a></li>
<li><a href="#org69d2afb">3. Conclusion</a></li>
</ul>
</div>
</div>
@ -314,8 +314,8 @@ We can then compare the measured Frequency Response Functions with the identifie
Finally, this should help to tune the parameters of the model such that the dynamics is closer to the measured FRF.
</p>
<div id="outline-container-orgb8d5122" class="outline-2">
<h2 id="orgb8d5122"><span class="section-number-2">1</span> Some notes about the Simscape Model</h2>
<div id="outline-container-orgb856d17" class="outline-2">
<h2 id="orgb856d17"><span class="section-number-2">1</span> Some notes about the Simscape Model</h2>
<div class="outline-text-2" id="text-1">
<p>
The Simscape Model of the micro-station consists of several solid bodies:
@ -341,17 +341,22 @@ Some of the springs and dampers values can be estimated from the joints/stages s
</div>
</div>
<div id="outline-container-orgc2a789d" class="outline-2">
<h2 id="orgc2a789d"><span class="section-number-2">2</span> Compare with measurements at the CoM of each element</h2>
<div id="outline-container-orga0759cc" class="outline-2">
<h2 id="orga0759cc"><span class="section-number-2">2</span> Compare with measurements at the CoM of each element</h2>
<div class="outline-text-2" id="text-2">
<p>
<a href="../../meas/modal-analysis/index.html">here</a>
</p>
</div>
<div id="outline-container-orgf4fd5e0" class="outline-3">
<h3 id="orgf4fd5e0"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
<div id="outline-container-org276f402" class="outline-3">
<h3 id="org276f402"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
<div class="outline-text-3" id="text-2-1">
<div class="org-src-container">
<pre class="src src-matlab">open<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'identification/matlab/sim_micro_station_com.slx'</span><span class="org-rainbow-delimiters-depth-1">)</span>
</pre>
</div>
<p>
We load the configuration.
</p>
@ -387,14 +392,9 @@ initializeSample<span class="org-rainbow-delimiters-depth-1">(</span>struct<span
</div>
</div>
<div id="outline-container-org80db7e9" class="outline-3">
<h3 id="org80db7e9"><span class="section-number-3">2.2</span> Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</h3>
<div id="outline-container-org58d4a0b" class="outline-3">
<h3 id="org58d4a0b"><span class="section-number-3">2.2</span> Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</h3>
<div class="outline-text-3" id="text-2-2">
<div class="org-src-container">
<pre class="src src-matlab">open<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'identification/matlab/sim_micro_station_com.slx'</span><span class="org-rainbow-delimiters-depth-1">)</span>
</pre>
</div>
<p>
Thanks to the <a href="https://fr.mathworks.com/help/physmod/sm/ref/inertiasensor.html">Inertia Sensor</a> simscape block, it is possible to estimate the position of the Center of Mass of a solid body with respect to a defined frame.
</p>
@ -405,10 +405,10 @@ Thanks to the <a href="https://fr.mathworks.com/help/physmod/sm/ref/inertiasenso
</div>
<p>
The results are shown in the table <a href="#orgb162423">1</a>.
The results are shown in the table <a href="#orga7b7bb1">1</a>.
</p>
<table id="orgb162423" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<table id="orga7b7bb1" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Center of Mass of each solid body as defined in Simscape</caption>
<colgroup>
@ -471,10 +471,10 @@ The results are shown in the table <a href="#orgb162423">1</a>.
</table>
<p>
We can compare the obtained center of mass (table <a href="#orgb162423">1</a>) with the one used for the Modal Analysis shown in table <a href="#org7f786a2">2</a>.
We can compare the obtained center of mass (table <a href="#orga7b7bb1">1</a>) with the one used for the Modal Analysis shown in table <a href="#org03ce6cf">2</a>.
</p>
<table id="org7f786a2" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<table id="org03ce6cf" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 2:</span> Estimated Center of Mass of each solid body using Solidworks</caption>
<colgroup>
@ -548,8 +548,8 @@ However, in SolidWorks, this has probably not be included with the top granite.
</div>
</div>
<div id="outline-container-org93dc35e" class="outline-3">
<h3 id="org93dc35e"><span class="section-number-3">2.3</span> Create a frame at the CoM of each solid body</h3>
<div id="outline-container-orgd1a401f" class="outline-3">
<h3 id="orgd1a401f"><span class="section-number-3">2.3</span> Create a frame at the CoM of each solid body</h3>
<div class="outline-text-3" id="text-2-3">
<p>
Now we use one <code>inertiasensor</code> block connected on each solid body that measured the center of mass of this solid with respect to the same connected frame.
@ -652,8 +652,8 @@ Then, we use the obtained results to add a <code>rigidTransform</code> block in
</div>
</div>
<div id="outline-container-org7b8b6f1" class="outline-3">
<h3 id="org7b8b6f1"><span class="section-number-3">2.4</span> Identification of the dynamics of the Simscape Model</h3>
<div id="outline-container-org938e5b4" class="outline-3">
<h3 id="org938e5b4"><span class="section-number-3">2.4</span> Identification of the dynamics of the Simscape Model</h3>
<div class="outline-text-3" id="text-2-4">
<p>
We now use a new Simscape Model where 6DoF inertial sensors are located at the Center of Mass of each solid body.
@ -720,8 +720,8 @@ In order to obtain a displacement, we divide the obtained transfer function by \
</div>
</div>
<div id="outline-container-org45a93e8" class="outline-3">
<h3 id="org45a93e8"><span class="section-number-3">2.5</span> Compare with measurements</h3>
<div id="outline-container-org8b67645" class="outline-3">
<h3 id="org8b67645"><span class="section-number-3">2.5</span> Compare with measurements</h3>
<div class="outline-text-3" id="text-2-5">
<p>
We now load the Frequency Response Functions measurements during the Modal Analysis (accessible <a href="../../meas/modal-analysis/index.html">here</a>).
@ -738,7 +738,7 @@ We then compare the measurements with the identified transfer functions using th
</p>
<div id="org6215dd8" class="figure">
<div id="org568eba5" class="figure">
<p><img src="figs/identification_comp_bot_stages.png" alt="identification_comp_bot_stages.png" />
</p>
<p><span class="figure-number">Figure 1: </span>caption (<a href="./figs/identification_comp_bot_stages.png">png</a>, <a href="./figs/identification_comp_bot_stages.pdf">pdf</a>)</p>
@ -746,7 +746,7 @@ We then compare the measurements with the identified transfer functions using th
<div id="org3a94e0d" class="figure">
<div id="orge5cc23c" class="figure">
<p><img src="figs/identification_comp_mid_stages.png" alt="identification_comp_mid_stages.png" />
</p>
<p><span class="figure-number">Figure 2: </span>caption (<a href="./figs/identification_comp_mid_stages.png">png</a>, <a href="./figs/identification_comp_mid_stages.pdf">pdf</a>)</p>
@ -754,7 +754,7 @@ We then compare the measurements with the identified transfer functions using th
<div id="orgaf6f4aa" class="figure">
<div id="org23612c0" class="figure">
<p><img src="figs/identification_comp_top_stages.png" alt="identification_comp_top_stages.png" />
</p>
<p><span class="figure-number">Figure 3: </span>caption (<a href="./figs/identification_comp_top_stages.png">png</a>, <a href="./figs/identification_comp_top_stages.pdf">pdf</a>)</p>
@ -764,8 +764,8 @@ We then compare the measurements with the identified transfer functions using th
</div>
<div id="outline-container-org75fd8be" class="outline-2">
<h2 id="org75fd8be"><span class="section-number-2">3</span> Conclusion</h2>
<div id="outline-container-org69d2afb" class="outline-2">
<h2 id="org69d2afb"><span class="section-number-2">3</span> Conclusion</h2>
<div class="outline-text-2" id="text-3">
<div class="important">
<p>
@ -778,7 +778,7 @@ For such a complex system, we believe that the Simscape Model represents the dyn
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2019-12-13 ven. 15:53</p>
<p class="date">Created: 2019-12-13 ven. 16:25</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
</body>

View File

@ -66,14 +66,34 @@ Finally, this should help to tune the parameters of the model such that the dyna
simulinkproject('../');
#+end_src
** Compute the transfer functions
We first define some parameters for the identification.
** Simscape Model
The simulink file for the identification is =sim_micro_station_id.slx=.
#+begin_src matlab
open('identification/matlab/sim_micro_station_id.slx')
#+end_src
We load the configuration and we set a small =StopTime=.
#+begin_src matlab
load('mat/conf_simscape.mat');
set_param(conf_simscape, 'StopTime', '0.5');
#+end_src
We initialize all the stages.
#+begin_src matlab
initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeNanoHexapod(struct('actuator', 'piezo'));
initializeSample(struct('mass', 50));
#+end_src
** Compute the transfer functions
We first define some parameters for the identification.
#+begin_src matlab
%% Options for Linearized
options = linearizeOptions;
@ -132,10 +152,32 @@ save('./mat/id_micro_station.mat', 'G_ms');
#+end_src
** Simscape Model
The simulink file for the analysis is =sim_micro_station_modal_analysis.slx=.
#+begin_src matlab
open('identification/matlab/sim_micro_station_modal_analysis.slx')
#+end_src
We load the configuration and we set a small =StopTime=.
#+begin_src matlab
load('mat/conf_simscape.mat');
set_param(conf_simscape, 'StopTime', '0.5');
#+end_src
We initialize all the stages.
#+begin_src matlab
initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeNanoHexapod(struct('actuator', 'piezo'));
initializeSample(struct('mass', 50));
#+end_src
** Identification
#+begin_src matlab
%% Options for Linearized
options = linearizeOptions;
@ -231,6 +273,10 @@ Some of the springs and dampers values can be estimated from the joints/stages s
#+end_src
** Prepare the Simulation
#+begin_src matlab
open('identification/matlab/sim_micro_station_com.slx')
#+end_src
We load the configuration.
#+begin_src matlab
load('mat/conf_simscape.mat');
@ -256,10 +302,6 @@ We initialize all the stages.
#+end_src
** Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis
#+begin_src matlab
open('identification/matlab/sim_micro_station_com.slx')
#+end_src
Thanks to the [[https://fr.mathworks.com/help/physmod/sm/ref/inertiasensor.html][Inertia Sensor]] simscape block, it is possible to estimate the position of the Center of Mass of a solid body with respect to a defined frame.
#+begin_src matlab

Binary file not shown.

Binary file not shown.