nass-simscape/docs/optimal_stiffness_disturbances.html

1038 lines
42 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-04-08 mer. 12:17 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<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>
<meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: visible;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
pre.src:hover:before { display: inline;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { width: 90%; }
/*]]>*/-->
</style>
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
<link rel="stylesheet" type="text/css" href="./css/zenburn.css"/>
<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/bootstrap.min.js"></script>
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&amp;dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
<script>
MathJax = {
tex: {
tags: 'ams',
macros: {
bm: ["\\boldsymbol{#1}",1],
}
}
};
</script>
<script type="text/javascript"
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<body>
<div id="org-div-home-and-up">
<a accesskey="h" href="index.html"> UP </a>
|
<a accesskey="H" href="index.html"> HOME </a>
</div><div id="content">
<h1 class="title">Determination of the optimal nano-hexapod&rsquo;s stiffness for reducing the effect of disturbances</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org9e9f810">1. Disturbances</a></li>
<li><a href="#orgc44cf7e">2. Effect of disturbances on the position error</a>
<ul>
<li><a href="#org524df41">2.1. Initialization</a></li>
<li><a href="#orgaf88c9f">2.2. Identification</a></li>
<li><a href="#org78dd34d">2.3. Sensitivity to Stages vibration (Filtering)</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="#org6791692">2.6. Conclusion</a></li>
</ul>
</li>
<li><a href="#org6527e58">3. Effect of granite stiffness</a>
<ul>
<li><a href="#orgd3e5fe1">3.1. Analytical Analysis</a>
<ul>
<li><a href="#orgbc34a65">3.1.1. Simple mass-spring-damper model</a></li>
<li><a href="#org4ddec32">3.1.2. General Case</a></li>
</ul>
</li>
<li><a href="#org9215f81">3.2. Soft Granite</a></li>
<li><a href="#org8878556">3.3. Effect of the Granite transfer function</a></li>
<li><a href="#orga001da4">3.4. Conclusion</a></li>
</ul>
</li>
<li><a href="#org8a88fb0">4. Open Loop Budget Error</a>
<ul>
<li><a href="#org6bd588f">4.1. Noise Budgeting - Theory</a></li>
<li><a href="#orgcc86f59">4.2. Power Spectral Densities</a></li>
<li><a href="#orgef96b89">4.3. Cumulative Amplitude Spectrum</a></li>
<li><a href="#org4352c0d">4.4. Conclusion</a></li>
</ul>
</li>
<li><a href="#org34c0f38">5. Closed Loop Budget Error</a>
<ul>
<li><a href="#orgdfef0eb">5.1. Approximation of the effect of feedback on the motion error</a></li>
<li><a href="#orgf2d36a1">5.2. Reduction thanks to feedback - Required bandwidth</a></li>
</ul>
</li>
<li><a href="#org08f24cd">6. Conclusion</a></li>
</ul>
</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">
<li>Section <a href="#org17d3d6a">1</a>: the disturbances are listed and their Power Spectral Densities (PSD) are shown</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>Section <a href="#orgd4105b6">3</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>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>
<div id="outline-container-org9e9f810" class="outline-2">
<h2 id="org9e9f810"><span class="section-number-2">1</span> Disturbances</h2>
<div class="outline-text-2" id="text-1">
<p>
<a id="org17d3d6a"></a>
</p>
<p>
The main disturbances considered here are:
</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 id="orgb7b8e77" class="figure">
<p><img src="figs/opt_stiff_dist_fty_frz.png" alt="opt_stiff_dist_fty_frz.png" />
</p>
<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 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>
<div class="outline-text-2" id="text-2">
<p>
<a id="orgf9e4300"></a>
</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 id="outline-container-org524df41" class="outline-3">
<h3 id="org524df41"><span class="section-number-3">2.1</span> Initialization</h3>
<div class="outline-text-3" id="text-2-1">
<p>
We initialize all the stages with the default parameters.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
</pre>
</div>
<p>
We use a sample mass of 10kg.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeSample(<span class="org-string">'mass'</span>, 10);
</pre>
</div>
<p>
We include gravity, and we use no controller.
</p>
<div class="org-src-container">
<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>);
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgaf88c9f" class="outline-3">
<h3 id="orgaf88c9f"><span class="section-number-3">2.2</span> Identification</h3>
<div class="outline-text-3" id="text-2-2">
<p>
The considered inputs are:
</p>
<ul class="org-ul">
<li><code>Dwx</code>: Ground displacement in the \(x\) direction</li>
<li><code>Dwy</code>: Ground displacement in the \(y\) direction</li>
<li><code>Dwz</code>: Ground displacement in the \(z\) direction</li>
<li><code>Fty_x</code>: Forces applied by the Translation stage in the \(x\) direction</li>
<li><code>Fty_z</code>: Forces applied by the Translation stage in the \(z\) direction</li>
<li><code>Frz_z</code>: Forces applied by the Spindle in the \(z\) direction</li>
<li><code>Fd</code>: Direct forces applied at the center of mass of the Payload</li>
</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">
<pre class="src src-matlab">Ks = logspace(3,9,7); <span class="org-comment">% [N/m]</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org78dd34d" class="outline-3">
<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">
<p>
The sensitivity the stage vibrations are displayed:
</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 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">
<p>
The effect of Ground motion on the position error of the sample is shown in Figure <a href="#org212587b">6</a>.
</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-org6791692" class="outline-3">
<h3 id="org6791692"><span class="section-number-3">2.6</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-6">
<div class="important">
<p>
Reducing the nano-hexapod stiffness generally lowers the sensitivity to stages vibration but increases the sensitivity to ground motion and direct forces.
</p>
<p>
In order to conclude on the optimal stiffness that will yield the smallest sample vibration, one has to include the level of disturbances. This is done in Section <a href="#org5d05990">4</a>.
</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org6527e58" class="outline-2">
<h2 id="org6527e58"><span class="section-number-2">3</span> Effect of granite stiffness</h2>
<div class="outline-text-2" id="text-3">
<p>
<a id="orgd4105b6"></a>
</p>
<p>
In this section, we wish to see if a soft granite suspension could help in reducing the effect of disturbances on the position error of the sample.
</p>
</div>
<div id="outline-container-orgd3e5fe1" class="outline-3">
<h3 id="orgd3e5fe1"><span class="section-number-3">3.1</span> Analytical Analysis</h3>
<div class="outline-text-3" id="text-3-1">
</div>
<div id="outline-container-orgbc34a65" class="outline-4">
<h4 id="orgbc34a65"><span class="section-number-4">3.1.1</span> Simple mass-spring-damper model</h4>
<div class="outline-text-4" id="text-3-1-1">
<p>
Let&rsquo;s consider the system shown in Figure <a href="#org8fb9606">8</a> consisting of two stacked mass-spring-damper systems.
The bottom one represents the granite, and the top one all the positioning stages.
We want the smallest stage &ldquo;deformation&rdquo; \(d = x^\prime - x\) due to ground motion \(w\).
</p>
<div id="org8fb9606" class="figure">
<p><img src="figs/2dof_system_granite_stiffness.png" alt="2dof_system_granite_stiffness.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Mass Spring Damper system consisting of a granite and a positioning stage</p>
</div>
<p>
If we write the equation of motion of the system in Figure <a href="#org8fb9606">8</a>, we obtain:
</p>
\begin{align}
m^\prime s^2 x^\prime &= (c^\prime s + k^\prime) (x - x^\prime) \\
ms^2 x &= (c^\prime s + k^\prime) (x^\prime - x) + (cs + k) (w - x)
\end{align}
<p>
If we note \(d = x^\prime - x\), we obtain:
</p>
\begin{equation}
\frac{d}{w} = \frac{-m^\prime s^2 (cs + k)}{ (m^\prime s^2 + c^\prime s + k^\prime) (ms^2 + cs + k) + m^\prime s^2(c^\prime s + k^\prime)}
\end{equation}
</div>
</div>
<div id="outline-container-org4ddec32" class="outline-4">
<h4 id="org4ddec32"><span class="section-number-4">3.1.2</span> General Case</h4>
<div class="outline-text-4" id="text-3-1-2">
<p>
Let&rsquo;s now considering a general positioning stage defined by:
</p>
<ul class="org-ul">
<li>\(G^\prime(s) = \frac{F}{x}\): its mechanical &ldquo;impedance&rdquo;</li>
<li>\(D^\prime(s) = \frac{d}{x}\): its &ldquo;deformation&rdquo; transfer function</li>
</ul>
<div id="org9702e0f" class="figure">
<p><img src="figs/general_system_granite_stiffness.png" alt="general_system_granite_stiffness.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Mass Spring Damper representing the granite and a general representation of positioning stages</p>
</div>
<p>
The equation of motion are:
</p>
\begin{align}
ms^2 x &= (cs + k) (x - w) - F \\
F &= G^\prime(s) x \\
d &= D^\prime(s) x
\end{align}
<p>
where:
</p>
<ul class="org-ul">
<li>\(F\) is the force applied by the position stages on the granite mass</li>
</ul>
<div class="important">
<p>
We can express \(d\) as a function of \(w\):
</p>
\begin{equation}
\frac{d}{w} = \frac{D^\prime(s) (cs + k)}{ms^2 + cs + k + G^\prime(s)}
\end{equation}
<p>
This is the transfer function that we would like to minimize.
</p>
</div>
<p>
Let&rsquo;s verify this formula for a simple mass/spring/damper positioning stage.
In that case, we have:
</p>
\begin{align*}
D^\prime(s) &= \frac{d}{x} = \frac{- m^\prime s^2}{m^\prime s^2 + c^\prime s + k^\prime} \\
G^\prime(s) &= \frac{F}{x} = \frac{m^\prime s^2(c^\prime s + k)}{m^\prime s^2 + c^\prime s + k^\prime}
\end{align*}
<p>
And finally:
</p>
\begin{equation}
\frac{d}{w} = \frac{-m^\prime s^2 (cs + k)}{ (m^\prime s^2 + c^\prime s + k^\prime) (ms^2 + cs + k) + m^\prime s^2(c^\prime s + k^\prime)}
\end{equation}
<p>
which is the same as the previously derived equation.
</p>
</div>
</div>
</div>
<div id="outline-container-org9215f81" class="outline-3">
<h3 id="org9215f81"><span class="section-number-3">3.2</span> Soft Granite</h3>
<div class="outline-text-3" id="text-3-2">
<p>
Let&rsquo;s initialize a soft granite and see how the sensitivity to disturbances will change.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeGranite(<span class="org-string">'K'</span>, 5e5<span class="org-type">*</span>ones(3,1), <span class="org-string">'C'</span>, 5e3<span class="org-type">*</span>ones(3,1));
</pre>
</div>
</div>
</div>
<div id="outline-container-org8878556" class="outline-3">
<h3 id="org8878556"><span class="section-number-3">3.3</span> Effect of the Granite transfer function</h3>
<div class="outline-text-3" id="text-3-3">
<p>
From Figure <a href="#org38146da">10</a>, we can see that having a &ldquo;soft&rdquo; granite suspension greatly lowers the sensitivity to ground motion.
The sensitivity is indeed lowered starting from the resonance of the granite on its soft suspension (few Hz here).
</p>
<p>
From Figures <a href="#orgc4c14fb">11</a> and <a href="#org533cc4b">12</a>, we see that the change of granite suspension does not change a lot the sensitivity to both direct forces and stage vibrations.
</p>
<div id="org38146da" class="figure">
<p><img src="figs/opt_stiff_soft_granite_Dw.png" alt="opt_stiff_soft_granite_Dw.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Change of sensibility to Ground motion when using a stiff Granite (solid curves) and a soft Granite (dashed curves) (<a href="./figs/opt_stiff_soft_granite_Dw.png">png</a>, <a href="./figs/opt_stiff_soft_granite_Dw.pdf">pdf</a>)</p>
</div>
<div id="orgc4c14fb" class="figure">
<p><img src="figs/opt_stiff_soft_granite_Frz.png" alt="opt_stiff_soft_granite_Frz.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Change of sensibility to Spindle vibrations when using a stiff Granite (solid curves) and a soft Granite (dashed curves) (<a href="./figs/opt_stiff_soft_granite_Frz.png">png</a>, <a href="./figs/opt_stiff_soft_granite_Frz.pdf">pdf</a>)</p>
</div>
<div id="org533cc4b" class="figure">
<p><img src="figs/opt_stiff_soft_granite_Fd.png" alt="opt_stiff_soft_granite_Fd.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Change of sensibility to direct forces when using a stiff Granite (solid curves) and a soft Granite (dashed curves) (<a href="./figs/opt_stiff_soft_granite_Fd.png">png</a>, <a href="./figs/opt_stiff_soft_granite_Fd.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-orga001da4" class="outline-3">
<h3 id="orga001da4"><span class="section-number-3">3.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-4">
<div class="important">
<p>
Having a soft granite suspension greatly decreases the sensitivity the ground motion.
Also, it does not affect much the sensitivity to stage vibration and direct forces.
Thus the level of sample vibration can be reduced by using a soft granite suspension if it is found that ground motion is the limiting factor.
</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org8a88fb0" class="outline-2">
<h2 id="org8a88fb0"><span class="section-number-2">4</span> Open Loop Budget Error</h2>
<div class="outline-text-2" id="text-4">
<p>
<a id="org5d05990"></a>
</p>
<p>
Now that the frequency content of disturbances have been estimated (Section <a href="#org17d3d6a">1</a>) and the transfer functions from disturbances to the position error of the sample have been identified (Section <a href="#orgf9e4300">2</a>), we can compute the level of sample vibration due to the disturbances.
</p>
<p>
We then can conclude and the nano-hexapod stiffness that will lower the sample position error.
</p>
</div>
<div id="outline-container-org6bd588f" class="outline-3">
<h3 id="org6bd588f"><span class="section-number-3">4.1</span> Noise Budgeting - Theory</h3>
<div class="outline-text-3" id="text-4-1">
<p>
Let&rsquo;s consider Figure <a href="#org7ff50a0">13</a> there \(G_d(s)\) is the transfer function from a signal \(d\) (the perturbation) to a signal \(y\) (the sample&rsquo;s position error).
</p>
<div id="org7ff50a0" class="figure">
<p><img src="figs/psd_change_tf.png" alt="psd_change_tf.png" />
</p>
<p><span class="figure-number">Figure 13: </span>Signal \(d\) going through and LTI transfer function \(G_d(s)\) to give a signal \(y\)</p>
</div>
<p>
We can compute the Power Spectral Density (PSD) of signal \(y\) from the PSD of \(d\) and the norm of \(G_d(s)\):
</p>
\begin{equation}
S_{y}(\omega) = \left|G_d(j\omega)\right|^2 S_{d}(\omega) \label{eq:psd_transfer_function}
\end{equation}
<p>
If we now consider multiple disturbances \(d_1, \dots, d_n\) as shown in Figure <a href="#orgc24bdf6">14</a>, we have that:
</p>
\begin{equation}
S_{y}(\omega) = \left|G_{d_1}(j\omega)\right|^2 S_{d_1}(\omega) + \dots + \left|G_{d_n}(j\omega)\right|^2 S_{d_n}(\omega) \label{eq:sum_psd}
\end{equation}
<p>
Sometimes, we prefer to compute the <b>Amplitude</b> Spectral Density (ASD) which is related to the PSD by:
\[ \Gamma_y(\omega) = \sqrt{S_y(\omega)} \]
</p>
<div id="orgc24bdf6" class="figure">
<p><img src="figs/psd_change_tf_multiple_pert.png" alt="psd_change_tf_multiple_pert.png" />
</p>
<p><span class="figure-number">Figure 14: </span>Block diagram showing and output \(y\) resulting from the addition of multiple perturbations \(d_i\)</p>
</div>
<p>
The Cumulative Power Spectrum (CPS) is here defined as:
</p>
\begin{equation}
\Phi_y(\omega) = \int_\omega^\infty S_y(\nu) d\nu
\end{equation}
<p>
And the Cumulative Amplitude Spectrum (CAS):
</p>
\begin{equation}
\Psi(\omega) = \sqrt{\Phi(\omega)} = \sqrt{\int_\omega^\infty S_y(\nu) d\nu}
\end{equation}
<p>
The CAS evaluation for all frequency corresponds to the rms value of the considered quantity:
\[ y_{\text{rms}} = \Psi(\omega = 0) = \sqrt{\int_0^\infty S_y(\nu) d\nu} \]
</p>
</div>
</div>
<div id="outline-container-orgcc86f59" class="outline-3">
<h3 id="orgcc86f59"><span class="section-number-3">4.2</span> Power Spectral Densities</h3>
<div class="outline-text-3" id="text-4-2">
<p>
We compute the effect of perturbations on the motion error thanks to Eq. \eqref{eq:psd_transfer_function}.
</p>
<p>
The result is shown in:
</p>
<ul class="org-ul">
<li>Figure <a href="#orgd3d7b28">15</a>: PSD of the vertical sample&rsquo;s motion error due to vertical ground motion</li>
<li>Figure <a href="#orgd8e87cd">16</a>: PSD of the vertical sample&rsquo;s motion error due to vertical vibrations of the Spindle</li>
</ul>
<div id="orgd3d7b28" class="figure">
<p><img src="figs/opt_stiff_psd_dz_gm.png" alt="opt_stiff_psd_dz_gm.png" />
</p>
<p><span class="figure-number">Figure 15: </span>Amplitude Spectral Density of the Sample vertical position error due to Ground motion for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_psd_dz_gm.png">png</a>, <a href="./figs/opt_stiff_psd_dz_gm.pdf">pdf</a>)</p>
</div>
<div id="orgd8e87cd" class="figure">
<p><img src="figs/opt_stiff_psd_dz_rz.png" alt="opt_stiff_psd_dz_rz.png" />
</p>
<p><span class="figure-number">Figure 16: </span>Amplitude Spectral Density of the Sample vertical position error due to Vertical vibration of the Spindle for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_psd_dz_rz.png">png</a>, <a href="./figs/opt_stiff_psd_dz_rz.pdf">pdf</a>)</p>
</div>
<p>
We compute the effect of all perturbations on the vertical position error using Eq. \eqref{eq:sum_psd} and the resulting PSD is shown in Figure <a href="#orgdbfb5e0">17</a>.
</p>
<div id="orgdbfb5e0" class="figure">
<p><img src="figs/opt_stiff_psd_dz_tot.png" alt="opt_stiff_psd_dz_tot.png" />
</p>
<p><span class="figure-number">Figure 17: </span>Amplitude Spectral Density of the Sample vertical position error due to all considered perturbations for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_psd_dz_tot.png">png</a>, <a href="./figs/opt_stiff_psd_dz_tot.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-orgef96b89" class="outline-3">
<h3 id="orgef96b89"><span class="section-number-3">4.3</span> Cumulative Amplitude Spectrum</h3>
<div class="outline-text-3" id="text-4-3">
<p>
Similarly, the Cumulative Amplitude Spectrum of the sample vibrations are shown:
</p>
<ul class="org-ul">
<li>Figure <a href="#org488d65f">18</a>: due to vertical ground motion</li>
<li>Figure <a href="#orge5458c6">19</a>: due to vertical vibrations of the Spindle</li>
<li>Figure <a href="#orgf6888f0">20</a>: due to all considered perturbations</li>
</ul>
<p>
The black dashed line corresponds to the performance objective of a sample vibration equal to \(10\ nm [rms]\).
</p>
<div id="org488d65f" class="figure">
<p><img src="figs/opt_stiff_cas_dz_gm.png" alt="opt_stiff_cas_dz_gm.png" />
</p>
<p><span class="figure-number">Figure 18: </span>Cumulative Amplitude Spectrum of the Sample vertical position error due to Ground motion for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_cas_dz_gm.png">png</a>, <a href="./figs/opt_stiff_cas_dz_gm.pdf">pdf</a>)</p>
</div>
<div id="orge5458c6" class="figure">
<p><img src="figs/opt_stiff_cas_dz_rz.png" alt="opt_stiff_cas_dz_rz.png" />
</p>
<p><span class="figure-number">Figure 19: </span>Cumulative Amplitude Spectrum of the Sample vertical position error due to Vertical vibration of the Spindle for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_cas_dz_rz.png">png</a>, <a href="./figs/opt_stiff_cas_dz_rz.pdf">pdf</a>)</p>
</div>
<div id="orgf6888f0" class="figure">
<p><img src="figs/opt_stiff_cas_dz_tot.png" alt="opt_stiff_cas_dz_tot.png" />
</p>
<p><span class="figure-number">Figure 20: </span>Cumulative Amplitude Spectrum of the Sample vertical position error due to all considered perturbations for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_cas_dz_tot.png">png</a>, <a href="./figs/opt_stiff_cas_dz_tot.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org4352c0d" class="outline-3">
<h3 id="org4352c0d"><span class="section-number-3">4.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-4-4">
<div class="important">
<p>
From Figure <a href="#orgf6888f0">20</a>, we can see that a soft nano-hexapod \(k<10^6\ [N/m]\) significantly reduces the effect of perturbations from 20Hz to 300Hz.
</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org34c0f38" class="outline-2">
<h2 id="org34c0f38"><span class="section-number-2">5</span> Closed Loop Budget Error</h2>
<div class="outline-text-2" id="text-5">
<p>
<a id="orgd3503fb"></a>
</p>
<p>
From the total open-loop power spectral density of the sample&rsquo;s motion error, we can estimate what is the required control bandwidth for the sample&rsquo;s motion error to be reduced down to \(10nm\).
</p>
</div>
<div id="outline-container-orgdfef0eb" class="outline-3">
<h3 id="orgdfef0eb"><span class="section-number-3">5.1</span> Approximation of the effect of feedback on the motion error</h3>
<div class="outline-text-3" id="text-5-1">
<p>
Let&rsquo;s consider Figure <a href="#org6308d80">21</a> where a controller \(K\) is used to reduce the effect of the disturbance \(d\) on the position error \(y\).
</p>
<div id="org6308d80" class="figure">
<p><img src="figs/effect_feedback_disturbance_diagram.png" alt="effect_feedback_disturbance_diagram.png" />
</p>
<p><span class="figure-number">Figure 21: </span>Feedback System</p>
</div>
<p>
The reduction of the impact of \(d\) on \(y\) thanks to feedback is described by the following equation:
</p>
\begin{equation}
\frac{y}{d} = \frac{G_d}{1 + KG}
\end{equation}
<p>
The transfer functions corresponding to \(G_d\) are those identified in Section <a href="#orgf9e4300">2</a>.
</p>
<p>
As a first approximation, we can consider that the controller \(K\) is designed in such a way that the loop gain \(KG\) is a pure integrator:
\[ L_1(s) = K_1(s) G(s) = \frac{\omega_c}{s} \]
where \(\omega_c\) is the crossover frequency.
</p>
<p>
We may then consider another controller in such a way that the loop gain corresponds to a double integrator with a lead centered with the crossover frequency \(\omega_c\):
\[ L_2(s) = K_2(s) G(s) = \left( \frac{\omega_c}{s} \right)^2 \cdot \frac{1 + \frac{s}{\omega_c/2}}{1 + \frac{s}{2\omega_c}} \]
</p>
<p>
In the next section, we see how the power spectral density of \(y\) is reduced as a function of the control bandwidth \(\omega_c\).
This will help to determine what is the approximate control bandwidth required such that the rms value of \(y\) is below \(10nm\).
</p>
</div>
</div>
<div id="outline-container-orgf2d36a1" class="outline-3">
<h3 id="orgf2d36a1"><span class="section-number-3">5.2</span> Reduction thanks to feedback - Required bandwidth</h3>
<div class="outline-text-3" id="text-5-2">
<p>
Let&rsquo;s first see how does the Cumulative Amplitude Spectrum of the sample&rsquo;s motion error is modified by the control.
</p>
<p>
In Figure <a href="#orgcbef465">22</a> is shown the Cumulative Amplitude Spectrum of the sample&rsquo;s motion error in Open-Loop and in Closed Loop for several control bandwidth (from 1Hz to 200Hz) and 4 different nano-hexapod stiffnesses.
The controller used in this simulation is \(K_1\). The loop gain is then a pure integrator.
</p>
<p>
In Figure <a href="#orgd677910">23</a> is shown the expected RMS value of the sample&rsquo;s position error as a function of the control bandwidth, both for \(K_1\) (left plot) and \(K_2\) (right plot).
As expected, it is shown that \(K_2\) performs better than \(K_1\).
This Figure tells us how much control bandwidth is required to attain a certain level of performance, and that for all the considered nano-hexapod stiffnesses.
</p>
<p>
The obtained required bandwidth (approximate upper and lower bounds) to obtained a sample&rsquo;s motion error less than 10nm rms are gathered in Table <a href="#org5ab4860">1</a>.
</p>
<div id="orgcbef465" class="figure">
<p><img src="figs/opt_stiff_cas_closed_loop.png" alt="opt_stiff_cas_closed_loop.png" />
</p>
<p><span class="figure-number">Figure 22: </span>Cumulative Amplitude Spectrum of the sample&rsquo;s motion error in Open-Loop and in Closed Loop for several control bandwidth and 4 different nano-hexapod stiffnesses (<a href="./figs/opt_stiff_cas_closed_loop.png">png</a>, <a href="./figs/opt_stiff_cas_closed_loop.pdf">pdf</a>)</p>
</div>
<div id="orgd677910" class="figure">
<p><img src="figs/opt_stiff_req_bandwidth_K1_K2.png" alt="opt_stiff_req_bandwidth_K1_K2.png" />
</p>
<p><span class="figure-number">Figure 23: </span>Expected RMS value of the sample&rsquo;s motion error \(E_z\) as a function of the control bandwidth when using \(K_1\) and \(K_2\) (<a href="./figs/opt_stiff_req_bandwidth_K1_K2.png">png</a>, <a href="./figs/opt_stiff_req_bandwidth_K1_K2.pdf">pdf</a>)</p>
</div>
<table id="org5ab4860" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Approximate required control bandwidth such that the motion error is below \(10nm\)</caption>
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Nano-Hexapod stiffness [N/m]</th>
<th scope="col" class="org-right">10<sup>3</sup></th>
<th scope="col" class="org-right">10<sup>4</sup></th>
<th scope="col" class="org-right">10<sup>5</sup></th>
<th scope="col" class="org-right">10<sup>6</sup></th>
<th scope="col" class="org-right">10<sup>7</sup></th>
<th scope="col" class="org-right">10<sup>8</sup></th>
<th scope="col" class="org-right">10<sup>9</sup></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Required wc with L1 [Hz]</td>
<td class="org-right">152</td>
<td class="org-right">305</td>
<td class="org-right">1000</td>
<td class="org-right">870</td>
<td class="org-right">933</td>
<td class="org-right">870</td>
<td class="org-right">870</td>
</tr>
<tr>
<td class="org-left">Required wc with L2 [Hz]</td>
<td class="org-right">57</td>
<td class="org-right">66</td>
<td class="org-right">152</td>
<td class="org-right">152</td>
<td class="org-right">248</td>
<td class="org-right">266</td>
<td class="org-right">248</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="outline-container-org08f24cd" class="outline-2">
<h2 id="org08f24cd"><span class="section-number-2">6</span> Conclusion</h2>
<div class="outline-text-2" id="text-6">
<div class="important">
<p>
From Figure <a href="#orgd677910">23</a> and Table <a href="#org5ab4860">1</a>, we can clearly see three different results depending on the nano-hexapod stiffness:
</p>
<ul class="org-ul">
<li>For a soft nano-hexapod (\(k < 10^4\ [N/m]\)), the required bandwidth is \(\omega_c \approx 50-100\ Hz\)</li>
<li>For a nano-hexapods with \(10^5 < k < 10^6\ [N/m]\)), the required bandwidth is \(\omega_c \approx 150-300\ Hz\)</li>
<li>For a stiff nano-hexapods (\(k > 10^7\ [N/m]\)), the required bandwidth is \(\omega_c \approx 250-500\ Hz\)</li>
</ul>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-04-08 mer. 12:17</p>
</div>
</body>
</html>