Dist. sensitivity / optimal stiffness analysis

This commit is contained in:
Thomas Dehaeze 2020-04-07 15:58:26 +02:00
parent ae89d0ea19
commit ca42338fe3
12 changed files with 269 additions and 118 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-04-07 mar. 14:57 --> <!-- 2020-04-07 mar. 15:57 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Determination of the optimal nano-hexapod&rsquo;s stiffness for reducing the effect of disturbances</title> <title>Determination of the optimal nano-hexapod&rsquo;s stiffness for reducing the effect of disturbances</title>
@ -247,18 +247,15 @@
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#org72be3da">1. Spectral Density of Disturbances label:sec:psd_disturbances</a> <li><a href="#org9e9f810">1. Disturbances</a></li>
<ul>
<li><a href="#orge84ae10">1.1. Load of the identified disturbances</a></li>
<li><a href="#org0bec7fc">1.2. Plots</a></li>
</ul>
</li>
<li><a href="#orgc44cf7e">2. Effect of disturbances on the position error</a> <li><a href="#orgc44cf7e">2. Effect of disturbances on the position error</a>
<ul> <ul>
<li><a href="#org524df41">2.1. Initialization</a></li> <li><a href="#org524df41">2.1. Initialization</a></li>
<li><a href="#orgaf88c9f">2.2. Identification</a></li> <li><a href="#orgaf88c9f">2.2. Identification</a></li>
<li><a href="#org2b8e5e0">2.3. Plots</a></li> <li><a href="#org78dd34d">2.3. Sensitivity to Stages vibration (Filtering)</a></li>
<li><a href="#org71f73c5">2.4. Save</a></li> <li><a href="#orgd4ea2f4">2.4. Effect of Ground motion (Transmissibility).</a></li>
<li><a href="#org0448746">2.5. Direct Forces (Compliance).</a></li>
<li><a href="#orgea74617">2.6. Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org6527e58">3. Effect of granite stiffness</a> <li><a href="#org6527e58">3. Effect of granite stiffness</a>
@ -281,59 +278,79 @@
<li><a href="#orgf2d36a1">5.1. Reduction thanks to feedback - Required bandwidth</a></li> <li><a href="#orgf2d36a1">5.1. Reduction thanks to feedback - Required bandwidth</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgea74617">6. Conclusion</a></li> <li><a href="#org0953c03">6. Conclusion</a></li>
</ul> </ul>
</div> </div>
</div> </div>
<p>
In this document is studied how the stiffness of the nano-hexapod will impact the effect of disturbances on the position error of the sample.
</p>
<p>
It is divided in the following sections:
</p>
<ul class="org-ul"> <ul class="org-ul">
<li><a href="#org17d3d6a">1</a></li> <li>Section <a href="#org17d3d6a">1</a>: the disturbances are listed and their Power Spectral Densities (PSD) are shown</li>
<li><a href="#orgf9e4300">2</a></li> <li>Section <a href="#orgf9e4300">2</a>: the transfer functions from disturbances to the position error of the sample are computed for a wide range of nano-hexapod stiffnesses</li>
<li><a href="#orgd4105b6">3</a></li> <li>Section <a href="#orgd4105b6">3</a>:</li>
<li><a href="#org5d05990">4</a></li> <li>Section <a href="#org5d05990">4</a>: from both the PSD of the disturbances and the transfer function from disturbances to sample&rsquo;s position errors, we compute the resulting PSD and Cumulative Amplitude Spectrum (CAS)</li>
<li><a href="#orgd3503fb">5</a></li> <li>Section <a href="#orgd3503fb">5</a>: from a simplistic model is computed the required control bandwidth to reduce the position error to acceptable values</li>
</ul> </ul>
<div id="outline-container-org9e9f810" class="outline-2">
<ul class="org-ul"> <h2 id="org9e9f810"><span class="section-number-2">1</span> Disturbances</h2>
<li><a href="#sec:psd_disturbances">sec:psd_disturbances</a></li>
<li><a href="#sec:effect_disturbances">sec:effect_disturbances</a></li>
<li><a href="#sec:granite_stiffness">sec:granite_stiffness</a></li>
<li><a href="#sec:open_loop_budget_error">sec:open_loop_budget_error</a></li>
<li><a href="#sec:closed_loop_budget_error">sec:closed_loop_budget_error</a></li>
</ul>
<div id="outline-container-org72be3da" class="outline-2">
<h2 id="org72be3da"><span class="section-number-2">1</span> Spectral Density of Disturbances <div id="sec:psd_disturbances"></div></h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
<p> <p>
<a id="org17d3d6a"></a> <a id="org17d3d6a"></a>
</p> </p>
<p> <p>
The level of disturbances has been identified form experiments. The main disturbances considered here are:
This is detailed in <a href="disturbances.html">this</a> document.
</p> </p>
<ul class="org-ul">
<li>\(D_w\): Ground displacement in the \(x\), \(y\) and \(z\) directions</li>
<li>\(F_{ty}\): Forces applied by the Translation stage in the \(x\) and \(z\) directions</li>
<li>\(F_{rz}\): Forces applied by the Spindle in the \(z\) direction</li>
<li>\(F_d\): Direct forces applied at the center of mass of the Payload</li>
</ul>
<p>
The level of these disturbances has been identified form experiments which are detailed in <a href="disturbances.html">this</a> document.
</p>
<p>
The measured Amplitude Spectral Densities (ASD) of these forces are shown in Figures <a href="#org6b4e47c">1</a> and <a href="#orgb7b8e77">2</a>.
</p>
<p>
In this study, the expected frequency content of the direct forces applied to the payload is not considered.
</p>
<div id="org6b4e47c" class="figure">
<p><img src="figs/opt_stiff_dist_gm.png" alt="opt_stiff_dist_gm.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Amplitude Spectral Density of the Ground Displacement (<a href="./figs/opt_stiff_dist_gm.png">png</a>, <a href="./figs/opt_stiff_dist_gm.pdf">pdf</a>)</p>
</div> </div>
<div id="outline-container-orge84ae10" class="outline-3">
<h3 id="orge84ae10"><span class="section-number-3">1.1</span> Load of the identified disturbances</h3>
<div class="outline-text-3" id="text-1-1"> <div id="orgb7b8e77" class="figure">
<div class="org-src-container"> <p><img src="figs/opt_stiff_dist_fty_frz.png" alt="opt_stiff_dist_fty_frz.png" />
<pre class="src src-matlab">load(<span class="org-string">'./mat/dist_psd.mat'</span>, <span class="org-string">'dist_f'</span>); </p>
</pre> <p><span class="figure-number">Figure 2: </span>Amplitude Spectral Density of the &ldquo;parasitic&rdquo; forces comming from the Translation stage and the spindle (<a href="./figs/opt_stiff_dist_fty_frz.png">png</a>, <a href="./figs/opt_stiff_dist_fty_frz.pdf">pdf</a>)</p>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org0bec7fc" class="outline-3">
<h3 id="org0bec7fc"><span class="section-number-3">1.2</span> Plots</h3>
</div>
</div>
<div id="outline-container-orgc44cf7e" class="outline-2"> <div id="outline-container-orgc44cf7e" class="outline-2">
<h2 id="orgc44cf7e"><span class="section-number-2">2</span> Effect of disturbances on the position error</h2> <h2 id="orgc44cf7e"><span class="section-number-2">2</span> Effect of disturbances on the position error</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
<p> <p>
<a id="orgf9e4300"></a> <a id="orgf9e4300"></a>
</p> </p>
<p>
In this section, we use the Simscape model to identify the transfer function from disturbances to the position error of the sample.
We do that for a wide range of nano-hexapod stiffnesses and we compare the obtained results.
</p>
</div> </div>
<div id="outline-container-org524df41" class="outline-3"> <div id="outline-container-org524df41" class="outline-3">
<h3 id="org524df41"><span class="section-number-3">2.1</span> Initialization</h3> <h3 id="org524df41"><span class="section-number-3">2.1</span> Initialization</h3>
@ -361,22 +378,24 @@ We use a sample mass of 10kg.
</pre> </pre>
</div> </div>
<p>
We include gravity, and we use no controller.
</p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>); <pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
initializeController();
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>); initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>); initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
initializeController();
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgaf88c9f" class="outline-3"> <div id="outline-container-orgaf88c9f" class="outline-3">
<h3 id="orgaf88c9f"><span class="section-number-3">2.2</span> Identification</h3> <h3 id="orgaf88c9f"><span class="section-number-3">2.2</span> Identification</h3>
<div class="outline-text-3" id="text-2-2"> <div class="outline-text-3" id="text-2-2">
<p> <p>
Inputs: The considered inputs are:
</p> </p>
<ul class="org-ul"> <ul class="org-ul">
<li><code>Dwx</code>: Ground displacement in the \(x\) direction</li> <li><code>Dwx</code>: Ground displacement in the \(x\) direction</li>
@ -388,60 +407,95 @@ Inputs:
<li><code>Fd</code>: Direct forces applied at the center of mass of the Payload</li> <li><code>Fd</code>: Direct forces applied at the center of mass of the Payload</li>
</ul> </ul>
<p>
The outputs are <code>Ex</code>, <code>Ey</code>, <code>Ez</code>, <code>Erx</code>, <code>Ery</code>, <code>Erz</code> which are the 3 positions and 3 orientations errors of the sample.
</p>
<p>
We initialize the set of the nano-hexapod stiffnesses, and for each of them, we identify the dynamics from defined inputs to defined outputs.
</p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">Ks = logspace(3,9,7); <span class="org-comment">% [N/m]</span> <pre class="src src-matlab">Ks = logspace(3,9,7); <span class="org-comment">% [N/m]</span>
</pre> </pre>
</div> </div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'nass_model'</span>;
<span class="org-matlab-cellbreak"><span class="org-comment">%% Micro-Hexapod</span></span>
clear io; io_i = 1;
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Dwx'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% X Ground motion</span>
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Dwy'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Y Ground motion</span>
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Dwz'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Z Ground motion</span>
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Fty_x'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Parasitic force Ty - X</span>
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Fty_z'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Parasitic force Ty - Z</span>
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Frz_z'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Parasitic force Rz - Z</span>
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Fd'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Direct forces</span>
io(io_i) = linio([mdl, <span class="org-string">'/Tracking Error'</span>], 1, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'En'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Position Error</span>
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(Ks)</span>
initializeNanoHexapod(<span class="org-string">'k'</span>, Ks(<span class="org-constant">i</span>));
<span class="org-comment">% Run the linearization</span>
G = linearize(mdl, io);
G.InputName = {<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">'Fdx'</span>, <span class="org-string">'Fdy'</span>, <span class="org-string">'Fdz'</span>, <span class="org-string">'Mdx'</span>, <span class="org-string">'Mdy'</span>, <span class="org-string">'Mdz'</span>};
G.OutputName = {<span class="org-string">'Ex'</span>, <span class="org-string">'Ey'</span>, <span class="org-string">'Ez'</span>, <span class="org-string">'Erx'</span>, <span class="org-string">'Ery'</span>, <span class="org-string">'Erz'</span>};
Gd(<span class="org-constant">i</span>) = {minreal(G)};
<span class="org-keyword">end</span>
</pre>
</div>
</div> </div>
</div> </div>
<div id="outline-container-org2b8e5e0" class="outline-3"> <div id="outline-container-org78dd34d" class="outline-3">
<h3 id="org2b8e5e0"><span class="section-number-3">2.3</span> Plots</h3> <h3 id="org78dd34d"><span class="section-number-3">2.3</span> Sensitivity to Stages vibration (Filtering)</h3>
<div class="outline-text-3" id="text-2-3"> <div class="outline-text-3" id="text-2-3">
<p> <p>
Effect of Stages vibration (Filtering). The sensitivity the stage vibrations are displayed:
Effect of Ground motion (Transmissibility).
Direct Forces (Compliance).
</p> </p>
<ul class="org-ul">
<li>Figure <a href="#orgf55ba1b">3</a>: sensitivity to vertical spindle vibrations</li>
<li>Figure <a href="#orgce1ac2c">4</a>: sensitivity to vertical translation stage vibrations</li>
<li>Figure <a href="#org1a24ee2">5</a>: sensitivity to horizontal (x) translation stage vibrations</li>
</ul>
<div id="orgf55ba1b" class="figure">
<p><img src="figs/opt_stiff_sensitivity_Frz.png" alt="opt_stiff_sensitivity_Frz.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Sensitivity to Spindle vertical motion error (\(F_{rz}\)) to the vertical error position of the sample (\(E_z\)) (<a href="./figs/opt_stiff_sensitivity_Frz.png">png</a>, <a href="./figs/opt_stiff_sensitivity_Frz.pdf">pdf</a>)</p>
</div>
<div id="orgce1ac2c" class="figure">
<p><img src="figs/opt_stiff_sensitivity_Fty_z.png" alt="opt_stiff_sensitivity_Fty_z.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Sensitivity to Translation stage vertical motion error (\(F_{ty,z}\)) to the vertical error position of the sample (\(E_z\)) (<a href="./figs/opt_stiff_sensitivity_Fty_z.png">png</a>, <a href="./figs/opt_stiff_sensitivity_Fty_z.pdf">pdf</a>)</p>
</div>
<div id="org1a24ee2" class="figure">
<p><img src="figs/opt_stiff_sensitivity_Fty_x.png" alt="opt_stiff_sensitivity_Fty_x.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Sensitivity to Translation stage \(x\) motion error (\(F_{ty,x}\)) to the error position of the sample in the \(x\) direction (\(E_x\)) (<a href="./figs/opt_stiff_sensitivity_Fty_x.png">png</a>, <a href="./figs/opt_stiff_sensitivity_Fty_x.pdf">pdf</a>)</p>
</div> </div>
</div> </div>
<div id="outline-container-org71f73c5" class="outline-3"> </div>
<h3 id="org71f73c5"><span class="section-number-3">2.4</span> Save</h3>
<div id="outline-container-orgd4ea2f4" class="outline-3">
<h3 id="orgd4ea2f4"><span class="section-number-3">2.4</span> Effect of Ground motion (Transmissibility).</h3>
<div class="outline-text-3" id="text-2-4"> <div class="outline-text-3" id="text-2-4">
<div class="org-src-container"> <p>
<pre class="src src-matlab">save(<span class="org-string">'./mat/opt_stiffness_disturbances.mat'</span>, <span class="org-string">'Gd'</span>) The effect of Ground motion on the position error of the sample is shown in Figure <a href="#org212587b">6</a>.
</pre> </p>
<div id="org212587b" class="figure">
<p><img src="figs/opt_stiff_sensitivity_Dw.png" alt="opt_stiff_sensitivity_Dw.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Sensitivity to Ground motion (\(D_{w}\)) to the position error of the sample (\(E_y\) and \(E_z\)) (<a href="./figs/opt_stiff_sensitivity_Dw.png">png</a>, <a href="./figs/opt_stiff_sensitivity_Dw.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org0448746" class="outline-3">
<h3 id="org0448746"><span class="section-number-3">2.5</span> Direct Forces (Compliance).</h3>
<div class="outline-text-3" id="text-2-5">
<p>
The effect of direct forces/torques applied on the sample (cable forces for instance) on the position error of the sample is shown in Figure <a href="#orga33395f">7</a>.
</p>
<div id="orga33395f" class="figure">
<p><img src="figs/opt_stiff_sensitivity_Fd.png" alt="opt_stiff_sensitivity_Fd.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Sensitivity to Direct forces and torques applied to the sample (\(F_d\), \(M_d\)) to the position error of the sample (<a href="./figs/opt_stiff_sensitivity_Fd.png">png</a>, <a href="./figs/opt_stiff_sensitivity_Fd.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-orgea74617" class="outline-3">
<h3 id="orgea74617"><span class="section-number-3">2.6</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-6">
<div class="important">
<p>
</p>
</div> </div>
</div> </div>
</div> </div>
@ -461,11 +515,11 @@ Direct Forces (Compliance).
<div id="org8fb9606" class="figure"> <div id="org8fb9606" class="figure">
<p><img src="figs/2dof_system_granite_stiffness.png" alt="2dof_system_granite_stiffness.png" /> <p><img src="figs/2dof_system_granite_stiffness.png" alt="2dof_system_granite_stiffness.png" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Figure caption</p> <p><span class="figure-number">Figure 8: </span>Figure caption</p>
</div> </div>
<p> <p>
If we write the equation of motion of the system in Figure <a href="#org8fb9606">1</a>, we obtain: If we write the equation of motion of the system in Figure <a href="#org8fb9606">8</a>, we obtain:
</p> </p>
\begin{align} \begin{align}
m^\prime s^2 x^\prime &= (c^\prime s + k^\prime) (x - x^\prime) \\ m^\prime s^2 x^\prime &= (c^\prime s + k^\prime) (x - x^\prime) \\
@ -792,13 +846,13 @@ xlim([1, 500]);
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgea74617" class="outline-2"> <div id="outline-container-org0953c03" class="outline-2">
<h2 id="orgea74617"><span class="section-number-2">6</span> Conclusion</h2> <h2 id="org0953c03"><span class="section-number-2">6</span> Conclusion</h2>
</div> </div>
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-04-07 mar. 14:57</p> <p class="date">Created: 2020-04-07 mar. 15:57</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -131,6 +131,9 @@ In this study, the expected frequency content of the direct forces applied to th
* Effect of disturbances on the position error * Effect of disturbances on the position error
<<sec:effect_disturbances>> <<sec:effect_disturbances>>
** Introduction :ignore: ** Introduction :ignore:
In this section, we use the Simscape model to identify the transfer function from disturbances to the position error of the sample.
We do that for a wide range of nano-hexapod stiffnesses and we compare the obtained results.
** Matlab Init :noexport:ignore: ** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>> <<matlab-dir>>
@ -167,16 +170,16 @@ We use a sample mass of 10kg.
initializeSample('mass', 10); initializeSample('mass', 10);
#+end_src #+end_src
We include gravity, and we use no controller.
#+begin_src matlab #+begin_src matlab
initializeSimscapeConfiguration('gravity', true); initializeSimscapeConfiguration('gravity', true);
initializeController();
initializeDisturbances('enable', false); initializeDisturbances('enable', false);
initializeLoggingConfiguration('log', 'none'); initializeLoggingConfiguration('log', 'none');
initializeController();
#+end_src #+end_src
** Identification ** Identification
Inputs: The considered inputs are:
- =Dwx=: Ground displacement in the $x$ direction - =Dwx=: Ground displacement in the $x$ direction
- =Dwy=: Ground displacement in the $y$ direction - =Dwy=: Ground displacement in the $y$ direction
- =Dwz=: Ground displacement in the $z$ direction - =Dwz=: Ground displacement in the $z$ direction
@ -185,15 +188,14 @@ Inputs:
- =Frz_z=: Forces applied by the Spindle in the $z$ direction - =Frz_z=: Forces applied by the Spindle in the $z$ direction
- =Fd=: Direct forces applied at the center of mass of the Payload - =Fd=: Direct forces applied at the center of mass of the Payload
The outputs are =Ex=, =Ey=, =Ez=, =Erx=, =Ery=, =Erz= which are the 3 positions and 3 orientations errors of the sample.
We initialize the set of the nano-hexapod stiffnesses, and for each of them, we identify the dynamics from defined inputs to defined outputs.
#+begin_src matlab #+begin_src matlab
Ks = logspace(3,9,7); % [N/m] Ks = logspace(3,9,7); % [N/m]
#+end_src #+end_src
#+begin_src matlab :exports none #+begin_src matlab :exports none
Gd = {zeros(length(Ks), 1)};
#+end_src
#+begin_src matlab
%% Name of the Simulink File %% Name of the Simulink File
mdl = 'nass_model'; mdl = 'nass_model';
@ -210,7 +212,9 @@ Inputs:
io(io_i) = linio([mdl, '/Tracking Error'], 1, 'openoutput', [], 'En'); io_i = io_i + 1; % Position Error io(io_i) = linio([mdl, '/Tracking Error'], 1, 'openoutput', [], 'En'); io_i = io_i + 1; % Position Error
#+end_src #+end_src
#+begin_src matlab #+begin_src matlab :exports none
Gd = {zeros(length(Ks), 1)};
for i = 1:length(Ks) for i = 1:length(Ks)
initializeNanoHexapod('k', Ks(i)); initializeNanoHexapod('k', Ks(i));
@ -222,8 +226,12 @@ Inputs:
end end
#+end_src #+end_src
** Plots ** Sensitivity to Stages vibration (Filtering)
Effect of Stages vibration (Filtering). The sensitivity the stage vibrations are displayed:
- Figure [[fig:opt_stiff_sensitivity_Frz]]: sensitivity to vertical spindle vibrations
- Figure [[fig:opt_stiff_sensitivity_Fty_z]]: sensitivity to vertical translation stage vibrations
- Figure [[fig:opt_stiff_sensitivity_Fty_x]]: sensitivity to horizontal (x) translation stage vibrations
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(0, 3, 1000); freqs = logspace(0, 3, 1000);
@ -235,26 +243,76 @@ Effect of Stages vibration (Filtering).
end end
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]'); ylabel('Effect of $F_{rz}$ on $E_z$ [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'southwest');
#+end_src #+end_src
Effect of Ground motion (Transmissibility). #+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/opt_stiff_sensitivity_Frz.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:opt_stiff_sensitivity_Frz
#+caption: Sensitivity to Spindle vertical motion error ($F_{rz}$) to the vertical error position of the sample ($E_z$) ([[./figs/opt_stiff_sensitivity_Frz.png][png]], [[./figs/opt_stiff_sensitivity_Frz.pdf][pdf]])
[[file:figs/opt_stiff_sensitivity_Frz.png]]
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
hold on;
for i = 1:length(Ks)
plot(freqs, abs(squeeze(freqresp(Gd{i}('Ez', 'Fty_z'), freqs, 'Hz'))), '-', ...
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Effect of $F_{ty}$ on $E_z$ [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'southwest');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/opt_stiff_sensitivity_Fty_z.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:opt_stiff_sensitivity_Fty_z
#+caption: Sensitivity to Translation stage vertical motion error ($F_{ty,z}$) to the vertical error position of the sample ($E_z$) ([[./figs/opt_stiff_sensitivity_Fty_z.png][png]], [[./figs/opt_stiff_sensitivity_Fty_z.pdf][pdf]])
[[file:figs/opt_stiff_sensitivity_Fty_z.png]]
#+begin_src matlab :exports none
freqs = logspace(0, 3, 1000);
figure;
hold on;
for i = 1:length(Ks)
plot(freqs, abs(squeeze(freqresp(Gd{i}('Ex', 'Fty_x'), freqs, 'Hz'))), '-', ...
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Effect of $F_{ty}$ on $E_x$ [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/opt_stiff_sensitivity_Fty_x.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:opt_stiff_sensitivity_Fty_x
#+caption: Sensitivity to Translation stage $x$ motion error ($F_{ty,x}$) to the error position of the sample in the $x$ direction ($E_x$) ([[./figs/opt_stiff_sensitivity_Fty_x.png][png]], [[./figs/opt_stiff_sensitivity_Fty_x.pdf][pdf]])
[[file:figs/opt_stiff_sensitivity_Fty_x.png]]
** Effect of Ground motion (Transmissibility).
The effect of Ground motion on the position error of the sample is shown in Figure [[fig:opt_stiff_sensitivity_Dw]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(0, 3, 1000); freqs = logspace(0, 3, 1000);
figure; figure;
ax1 = subplot(3, 1, 1); ax1 = subplot(1, 2, 1);
hold on;
for i = 1:length(Ks)
plot(freqs, abs(squeeze(freqresp(Gd{i}('Ex', 'Dwx'), freqs, 'Hz'))), '-', ...
'DisplayName', sprintf('$k = %.0g$ [N/m]', Ks(i)));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/m]');
ax1 = subplot(3, 1, 2);
hold on; hold on;
for i = 1:length(Ks) for i = 1:length(Ks)
plot(freqs, abs(squeeze(freqresp(Gd{i}('Ey', 'Dwy'), freqs, 'Hz'))), '-', ... plot(freqs, abs(squeeze(freqresp(Gd{i}('Ey', 'Dwy'), freqs, 'Hz'))), '-', ...
@ -262,9 +320,9 @@ Effect of Ground motion (Transmissibility).
end end
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/m]'); ylabel('$E_y/D_{wy}$ [m/m]'); xlabel('Frequency [Hz]');
ax1 = subplot(3, 1, 3); ax2 = subplot(1, 2, 2);
hold on; hold on;
for i = 1:length(Ks) for i = 1:length(Ks)
plot(freqs, abs(squeeze(freqresp(Gd{i}('Ez', 'Dwz'), freqs, 'Hz'))), '-', ... plot(freqs, abs(squeeze(freqresp(Gd{i}('Ez', 'Dwz'), freqs, 'Hz'))), '-', ...
@ -272,14 +330,36 @@ Effect of Ground motion (Transmissibility).
end end
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/m]'); xlabel('Frequency [Hz]'); ylabel('$E_z/D_{wz}$ [m/m]'); xlabel('Frequency [Hz]');
#+end_src #+end_src
Direct Forces (Compliance). #+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/opt_stiff_sensitivity_Dw.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:opt_stiff_sensitivity_Dw
#+caption: Sensitivity to Ground motion ($D_{w}$) to the position error of the sample ($E_y$ and $E_z$) ([[./figs/opt_stiff_sensitivity_Dw.png][png]], [[./figs/opt_stiff_sensitivity_Dw.pdf][pdf]])
[[file:figs/opt_stiff_sensitivity_Dw.png]]
** Direct Forces (Compliance).
The effect of direct forces/torques applied on the sample (cable forces for instance) on the position error of the sample is shown in Figure [[fig:opt_stiff_sensitivity_Fd]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(0, 3, 1000); freqs = logspace(0, 3, 1000);
figure; figure;
ax1 = subplot(1, 2, 1);
hold on;
for i = 1:length(Ks)
plot(freqs, abs(squeeze(freqresp(Gd{i}('Ery', 'Mdy'), freqs, 'Hz'))), '-');
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('$E_{ry}/M_{d,y}\ \left[\frac{rad}{N m}\right]$'); xlabel('Frequency [Hz]');
ax2 = subplot(1, 2, 2);
hold on; hold on;
for i = 1:length(Ks) for i = 1:length(Ks)
plot(freqs, abs(squeeze(freqresp(Gd{i}('Ez', 'Fdz'), freqs, 'Hz'))), '-', ... plot(freqs, abs(squeeze(freqresp(Gd{i}('Ez', 'Fdz'), freqs, 'Hz'))), '-', ...
@ -287,14 +367,31 @@ Direct Forces (Compliance).
end end
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); xlabel('Frequency [Hz]'); ylabel('$E_{z}/F_{d,z}$ [m/N]'); xlabel('Frequency [Hz]');
legend('location', 'northeast');
linkaxes([ax1 ax2], 'xy')
#+end_src #+end_src
** Save #+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab #+begin_src matlab :var filepath="figs/opt_stiff_sensitivity_Fd.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
save('./mat/opt_stiffness_disturbances.mat', 'Gd') <<plt-matlab>>
#+end_src #+end_src
#+name: fig:opt_stiff_sensitivity_Fd
#+caption: Sensitivity to Direct forces and torques applied to the sample ($F_d$, $M_d$) to the position error of the sample ([[./figs/opt_stiff_sensitivity_Fd.png][png]], [[./figs/opt_stiff_sensitivity_Fd.pdf][pdf]])
[[file:figs/opt_stiff_sensitivity_Fd.png]]
** Save :noexport:
#+begin_src matlab
save('./mat/opt_stiffness_disturbances.mat', 'Ks', 'Gd')
#+end_src
** Conclusion
#+begin_important
#+end_important
* Effect of granite stiffness * Effect of granite stiffness
<<sec:granite_stiffness>> <<sec:granite_stiffness>>
** Analytical Analysis ** Analytical Analysis