Reworked analysis on the static measurements
@ -10,23 +10,3 @@ Every stage is powered on.
|
||||
|--------------+----------------------------|
|
||||
| data_001.mat | nothing is turning |
|
||||
| data_002.mat | spindle is turning at 1rpm |
|
||||
|
||||
* Mesures Dynamiques Rotation Slip-Ring
|
||||
All the stages are OFF
|
||||
|
||||
One geophone on the marble (Col 1)
|
||||
One geophone at the sample location (Col 2)
|
||||
|
||||
Voltage amplifier setup:
|
||||
60dB
|
||||
AC
|
||||
1kHz
|
||||
|
||||
LPF added at the input of the voltage amplifiers
|
||||
|
||||
Goal:
|
||||
- Identifify the vibration induced by the rotation of the Slip-Ring and Spindle
|
||||
|
||||
- meas24: All OFF
|
||||
- meas25: 6RPM: only the slip-ring is ON and rotating (spindle OFF)
|
||||
- meas26: 6RPMZ; Slip-ring and Spindle ON
|
||||
|
15
index.org
@ -75,6 +75,8 @@ The station is identified again.
|
||||
* Measurements of perturbations
|
||||
- [[file:slip-ring-spindle-vibrations/index.org][Measurement of the vibrations induced by the rotation of the slip-ring and spindle]]
|
||||
- [[file:slip-ring-electrical-noise/index.org][Measurement of the electrical noise induced by the slip-ring]]
|
||||
- [[file:ground-motion/index.org][Ground motion measurements]]
|
||||
- [[file:static-to-dynamic/index.org][Static guiding errors]]
|
||||
|
||||
** Noise coming from the control loop of each stage
|
||||
[[file:2018-10-15%20-%20Marc/index.org][Link to the analysis]]
|
||||
@ -113,19 +115,6 @@ The goal is to estimate the guiding errors of each stage.
|
||||
|
||||
*** Results
|
||||
|
||||
** Ground motion measurements
|
||||
[[file:Ground%20Motion/index.org][Link to the analysis]]
|
||||
|
||||
*** Notes
|
||||
| *Date* | 2014-10 |
|
||||
| *Sensors* | Geophone |
|
||||
| *Location* | ID31 Floor |
|
||||
|
||||
*** Goal
|
||||
The objective is to obtain the Power Spectral Density of the ground motion at the ID31 floor.
|
||||
|
||||
*** Results
|
||||
|
||||
** Spindle Measurements
|
||||
[[file:Spindle/index.org][Link to the analysis]]
|
||||
|
||||
|
BIN
static-to-dynamic/figs/guiding_error.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 104 KiB |
BIN
static-to-dynamic/figs/processed_data_tyz.png
Normal file
After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 80 KiB |
BIN
static-to-dynamic/figs/psd_tyz.png
Normal file
After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 27 KiB |
BIN
static-to-dynamic/figs/raw_data_tyz.png
Normal file
After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
@ -3,12 +3,12 @@
|
||||
"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-03-15 ven. 11:43 -->
|
||||
<!-- 2019-05-14 mar. 09:52 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Static Measurements</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Thomas Dehaeze" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<style type="text/css">
|
||||
<!--/*--><![CDATA[/*><!--*/
|
||||
.title { text-align: center;
|
||||
@ -195,10 +195,11 @@
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
<script src="../js/jquery.min.js"></script>
|
||||
<script src="../js/bootstrap.min.js"></script>
|
||||
<script src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="../js/readtheorg.js"></script>
|
||||
<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">
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
@ -245,31 +246,73 @@ for the JavaScript code in this tag.
|
||||
}
|
||||
/*]]>*///-->
|
||||
</script>
|
||||
<script type="text/x-mathjax-config">
|
||||
MathJax.Hub.Config({
|
||||
displayAlign: "center",
|
||||
displayIndent: "0em",
|
||||
|
||||
"HTML-CSS": { scale: 100,
|
||||
linebreaks: { automatic: "false" },
|
||||
webFont: "TeX"
|
||||
},
|
||||
SVG: {scale: 100,
|
||||
linebreaks: { automatic: "false" },
|
||||
font: "TeX"},
|
||||
NativeMML: {scale: 100},
|
||||
TeX: { equationNumbers: {autoNumber: "AMS"},
|
||||
MultLineWidth: "85%",
|
||||
TagSide: "right",
|
||||
TagIndent: ".8em"
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript"
|
||||
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content">
|
||||
<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">Static Measurements</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgceaa13e">1. Notes</a></li>
|
||||
<li><a href="#org8d8d266">2. Data Pre-processing</a></li>
|
||||
<li><a href="#orgc36603f">3. Matlab - Data Import</a></li>
|
||||
<li><a href="#orgf7ebbe2">4. Data - Plot</a></li>
|
||||
<li><a href="#orgd305b40">5. Translate to time domain</a></li>
|
||||
<li><a href="#orgbc4466d">6. Compute the PSD</a></li>
|
||||
<li><a href="#org9dbeefe">1. Ty Stage</a>
|
||||
<ul>
|
||||
<li><a href="#org98becb2">1.1. Notes</a></li>
|
||||
<li><a href="#orgbab4f4e">1.2. Data Pre-processing</a></li>
|
||||
<li><a href="#orgbb084a6">1.3. Matlab - Data Import</a></li>
|
||||
<li><a href="#orgb7b2129">1.4. Data - Plot</a></li>
|
||||
<li><a href="#org01e23ef">1.5. Translate to time domain</a></li>
|
||||
<li><a href="#org13bc3d4">1.6. Compute the PSD</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgc7af6bd">2. <span class="todo TODO">TODO</span> Spindle</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9dbeefe" class="outline-2">
|
||||
<h2 id="org9dbeefe"><span class="section-number-2">1</span> Ty Stage</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a href="../index.html">Back to main page</a>.
|
||||
<a id="org0ab6482"></a>
|
||||
</p>
|
||||
|
||||
<div id="outline-container-orgceaa13e" class="outline-2">
|
||||
<h2 id="orgceaa13e"><span class="section-number-2">1</span> Notes</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<div class="note">
|
||||
<p>
|
||||
All the files (data and Matlab scripts) are accessible <a href="data/static_ty.zip">here</a>.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org98becb2" class="outline-3">
|
||||
<h3 id="org98becb2"><span class="section-number-3">1.1</span> Notes</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<ul class="org-ul">
|
||||
<li><b>5530</b>: Straightness Plot: Yz</li>
|
||||
<li><b>Filename</b>: <code>r:\home\PDMU\PEL\Measurement_library\ID31\ID31_u_station\TY\12_12_2018\linear deviation _tyz_401_points.txt</code></li>
|
||||
@ -348,19 +391,36 @@ for the JavaScript code in this tag.
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
In a very schematic way, the measurement is explained on figure <a href="#orgb91392e">1</a>.
|
||||
The positioning error \(d\) is measure as a function of \(x\).
|
||||
Because the measurement is done in a static way, the dynamics of the station (represented by the mass-spring-damper system on the schematic) does not play a role in the measure.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The obtained data corresponds to the guiding errors.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgb91392e" class="figure">
|
||||
<p><img src="./figs/guiding_errors.png" alt="guiding_errors.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Schematic of the measurement</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8d8d266" class="outline-2">
|
||||
<h2 id="org8d8d266"><span class="section-number-2">2</span> Data Pre-processing</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<div id="outline-container-orgbab4f4e" class="outline-3">
|
||||
<h3 id="orgbab4f4e"><span class="section-number-3">1.2</span> Data Pre-processing</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-shell">sed <span style="color: #CC9393;">'s/\t/ /g;s/\,/./g'</span> <span style="color: #CC9393;">"data/linear deviation _tyz_401_points.txt"</span> > data/data.txt
|
||||
<pre class="src src-shell">sed <span class="org-string">'s/\t/ /g;s/\,/./g'</span> <span class="org-string">"mat/linear_deviation_tyz_401_points.txt"</span> > data/data_tyz.txt
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-shell">head <span style="color: #CC9393;">"data/data.txt"</span>
|
||||
<pre class="src src-shell">head <span class="org-string">"mat/data_tyz.txt"</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -452,143 +512,182 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc36603f" class="outline-2">
|
||||
<h2 id="orgc36603f"><span class="section-number-2">3</span> Matlab - Data Import</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<div id="outline-container-orgbb084a6" class="outline-3">
|
||||
<h3 id="orgbb084a6"><span class="section-number-3">1.3</span> Matlab - Data Import</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">filename = <span style="color: #CC9393;">'data/data.txt'</span>;
|
||||
fileID = fopen<span style="color: #DCDCCC;">(</span>filename<span style="color: #DCDCCC;">)</span>;
|
||||
data = cell2mat<span style="color: #DCDCCC;">(</span>textscan<span style="color: #BFEBBF;">(</span>fileID,'<span style="color: #7F9F7F;">%f %f %f </span>%f', 'collectoutput', <span style="color: #BFEBBF;">1</span>,'headerlines',<span style="color: #BFEBBF;">1</span>));
|
||||
fclose<span style="color: #D0BF8F;">(</span>fileID<span style="color: #D0BF8F;">)</span>;
|
||||
<pre class="src src-matlab">filename = <span class="org-string">'mat/data_tyz.txt'</span>;
|
||||
fileID = fopen<span class="org-rainbow-delimiters-depth-1">(</span>filename<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
data = cell2mat<span class="org-rainbow-delimiters-depth-1">(</span>textscan<span class="org-rainbow-delimiters-depth-2">(</span>fileID,'<span class="org-comment">%f %f %f </span>%f', 'collectoutput', <span class="org-highlight-numbers-number">1</span>,'headerlines',<span class="org-highlight-numbers-number">1</span>));
|
||||
fclose<span class="org-rainbow-delimiters-depth-3">(</span>fileID<span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf7ebbe2" class="outline-2">
|
||||
<h2 id="orgf7ebbe2"><span class="section-number-2">4</span> Data - Plot</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span style="color: #7CB8BB;">figure</span>;
|
||||
hold on;
|
||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span>=<span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:data</span><span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">end, </span><span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">)</span>
|
||||
plot<span style="color: #DCDCCC;">(</span>data<span style="color: #BFEBBF;">(</span>data<span style="color: #D0BF8F;">(</span><span style="color: #7CB8BB;">:</span>, <span style="color: #BFEBBF;">1</span><span style="color: #D0BF8F;">)</span> <span style="color: #7CB8BB;">==</span> <span style="color: #BFEBBF;">i</span>, <span style="color: #BFEBBF;">3</span><span style="color: #BFEBBF;">)</span>, data<span style="color: #BFEBBF;">(</span>data<span style="color: #D0BF8F;">(</span><span style="color: #7CB8BB;">:</span>, <span style="color: #BFEBBF;">1</span><span style="color: #D0BF8F;">)</span> <span style="color: #7CB8BB;">==</span> <span style="color: #BFEBBF;">i</span>, <span style="color: #BFEBBF;">4</span><span style="color: #BFEBBF;">)</span>, <span style="color: #CC9393;">'-k'</span><span style="color: #DCDCCC;">)</span>;
|
||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||
hold off;
|
||||
xlabel<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'Target Value </span><span style="color: #BFEBBF;">[</span><span style="color: #CC9393;">mm</span><span style="color: #BFEBBF;">]</span><span style="color: #CC9393;">'</span><span style="color: #DCDCCC;">)</span><span style="color: #CC9393;">; ylabel</span><span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'Error Value </span><span style="color: #BFEBBF;">[</span><span style="color: #CC9393;">um</span><span style="color: #BFEBBF;">]</span><span style="color: #CC9393;">'</span><span style="color: #DCDCCC;">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgd8a6bbb" class="figure">
|
||||
<p><img src="figs/raw_data.png" alt="raw_data.png" />
|
||||
<div id="outline-container-orgb7b2129" class="outline-3">
|
||||
<h3 id="orgb7b2129"><span class="section-number-3">1.4</span> Data - Plot</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<p>
|
||||
First, we plot the straightness error as a function of the position (figure <a href="#orge60d823">2</a>).
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Time domain Data</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">i</span>=<span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:data</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">end, </span><span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>data<span class="org-rainbow-delimiters-depth-2">(</span>data<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span> <span class="org-type">==</span> <span class="org-constant">i</span>, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span>, data<span class="org-rainbow-delimiters-depth-2">(</span>data<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span> <span class="org-type">==</span> <span class="org-constant">i</span>, <span class="org-highlight-numbers-number">4</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'-k'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-keyword">end</span>
|
||||
hold off;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Target Value </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">mm</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'</span>Error Value <span class="org-rainbow-delimiters-depth-2">[</span>$<span class="org-type">\</span>mu m$<span class="org-rainbow-delimiters-depth-2">]</span>'<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orge60d823" class="figure">
|
||||
<p><img src="figs/raw_data_tyz.png" alt="raw_data_tyz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Time domain Data</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Compute mean value of each position
|
||||
Then, we compute mean value of each position, and we remove this mean value from the data.
|
||||
The results are shown on figure <a href="#org6b6ea44">3</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">mean_pos = zeros<span style="color: #DCDCCC;">(</span>sum<span style="color: #BFEBBF;">(</span>data<span style="color: #D0BF8F;">(</span><span style="color: #7CB8BB;">:</span>, <span style="color: #BFEBBF;">1</span><span style="color: #D0BF8F;">)</span><span style="color: #7CB8BB;">==</span><span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">)</span>, <span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">)</span>;
|
||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span>=<span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:sum</span><span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">data</span><span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">:, </span><span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">)</span><span style="color: #BFEBBF;">==</span><span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">)</span>
|
||||
mean_pos<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">i</span><span style="color: #DCDCCC;">)</span> = mean<span style="color: #DCDCCC;">(</span>data<span style="color: #BFEBBF;">(</span>data<span style="color: #D0BF8F;">(</span><span style="color: #7CB8BB;">:</span>, <span style="color: #BFEBBF;">2</span><span style="color: #D0BF8F;">)</span><span style="color: #7CB8BB;">==</span><span style="color: #BFEBBF;">i</span>, <span style="color: #BFEBBF;">4</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||
<pre class="src src-matlab">mean_pos = zeros<span class="org-rainbow-delimiters-depth-1">(</span>sum<span class="org-rainbow-delimiters-depth-2">(</span>data<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">==</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">i</span>=<span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:sum</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">data</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-2">(</span></span><span class="org-constant">:, </span><span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant"><span class="org-rainbow-delimiters-depth-2">)</span></span><span class="org-constant">==</span><span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||
mean_pos<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span> = mean<span class="org-rainbow-delimiters-depth-1">(</span>data<span class="org-rainbow-delimiters-depth-2">(</span>data<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">==</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">4</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span style="color: #7CB8BB;">figure</span>;
|
||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
||||
hold on;
|
||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span>=<span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:data</span><span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">end, </span><span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">)</span>
|
||||
filt = data<span style="color: #DCDCCC;">(</span><span style="color: #7CB8BB;">:</span>, <span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">)</span> <span style="color: #7CB8BB;">==</span> <span style="color: #BFEBBF;">i</span>;
|
||||
plot<span style="color: #DCDCCC;">(</span>data<span style="color: #BFEBBF;">(</span>filt, <span style="color: #BFEBBF;">3</span><span style="color: #BFEBBF;">)</span>, data<span style="color: #BFEBBF;">(</span>filt, <span style="color: #BFEBBF;">4</span><span style="color: #BFEBBF;">)</span> <span style="color: #7CB8BB;">-</span> mean_pos, <span style="color: #CC9393;">'-k'</span><span style="color: #DCDCCC;">)</span>;
|
||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">i</span>=<span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:data</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">end, </span><span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||
filt = data<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span> <span class="org-type">==</span> <span class="org-constant">i</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>data<span class="org-rainbow-delimiters-depth-2">(</span>filt, <span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span>, data<span class="org-rainbow-delimiters-depth-2">(</span>filt, <span class="org-highlight-numbers-number">4</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">-</span> mean_pos, <span class="org-string">'-k'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-keyword">end</span>
|
||||
hold off;
|
||||
xlabel<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'Target Value </span><span style="color: #BFEBBF;">[</span><span style="color: #CC9393;">mm</span><span style="color: #BFEBBF;">]</span><span style="color: #CC9393;">'</span><span style="color: #DCDCCC;">)</span><span style="color: #CC9393;">; ylabel</span><span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'Error Value </span><span style="color: #BFEBBF;">[</span><span style="color: #CC9393;">um</span><span style="color: #BFEBBF;">]</span><span style="color: #CC9393;">'</span><span style="color: #DCDCCC;">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Target Value </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">mm</span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'</span>Error Value <span class="org-rainbow-delimiters-depth-2">[</span>$<span class="org-type">\</span>mu m$<span class="org-rainbow-delimiters-depth-2">]</span>'<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org4555ce3" class="figure">
|
||||
<p><img src="figs/processed_data.png" alt="processed_data.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>caption</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd305b40" class="outline-2">
|
||||
<h2 id="orgd305b40"><span class="section-number-2">5</span> Translate to time domain</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">t = linspace<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">1</span>, length<span style="color: #BFEBBF;">(</span>data<span style="color: #D0BF8F;">(</span>data<span style="color: #93E0E3;">(</span><span style="color: #7CB8BB;">:</span>, <span style="color: #BFEBBF;">1</span><span style="color: #93E0E3;">)</span><span style="color: #7CB8BB;">==</span><span style="color: #BFEBBF;">1</span>, <span style="color: #BFEBBF;">4</span><span style="color: #D0BF8F;">)</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span style="color: #7CB8BB;">figure</span>;
|
||||
hold on;
|
||||
plot<span style="color: #DCDCCC;">(</span>t, data<span style="color: #BFEBBF;">(</span>data<span style="color: #D0BF8F;">(</span><span style="color: #7CB8BB;">:</span>, <span style="color: #BFEBBF;">1</span><span style="color: #D0BF8F;">)</span> <span style="color: #7CB8BB;">==</span> <span style="color: #BFEBBF;">1</span>, <span style="color: #BFEBBF;">4</span><span style="color: #BFEBBF;">)</span> <span style="color: #7CB8BB;">-</span> mean_pos, <span style="color: #CC9393;">'-k'</span><span style="color: #DCDCCC;">)</span>;
|
||||
hold off;
|
||||
xlabel<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'Time </span><span style="color: #BFEBBF;">[</span><span style="color: #CC9393;">s</span><span style="color: #BFEBBF;">]</span><span style="color: #CC9393;">'</span><span style="color: #DCDCCC;">)</span><span style="color: #CC9393;">; ylabel</span><span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'Error Value </span><span style="color: #BFEBBF;">[</span><span style="color: #CC9393;">um</span><span style="color: #BFEBBF;">]</span><span style="color: #CC9393;">'</span><span style="color: #DCDCCC;">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org1cc3634" class="figure">
|
||||
<p><img src="figs/time_domain.png" alt="time_domain.png" />
|
||||
<div id="org6b6ea44" class="figure">
|
||||
<p><img src="figs/processed_data_tyz.png" alt="processed_data_tyz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>caption</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbc4466d" class="outline-2">
|
||||
<h2 id="orgbc4466d"><span class="section-number-2">6</span> Compute the PSD</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">n_av = <span style="color: #BFEBBF;">5</span>;
|
||||
Fs = <span style="color: #BFEBBF;">1</span><span style="color: #7CB8BB;">/</span>t<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">2</span><span style="color: #DCDCCC;">)</span>;
|
||||
|
||||
x = data<span style="color: #DCDCCC;">(</span>data<span style="color: #BFEBBF;">(</span><span style="color: #7CB8BB;">:</span>, <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">)</span> <span style="color: #7CB8BB;">==</span> <span style="color: #BFEBBF;">1</span>, <span style="color: #BFEBBF;">4</span><span style="color: #DCDCCC;">)</span> <span style="color: #7CB8BB;">-</span> mean_pos;
|
||||
<span style="color: #DCDCCC;">[</span>pxx, f<span style="color: #DCDCCC;">]</span> = pwelch<span style="color: #DCDCCC;">(</span>x, hanning<span style="color: #BFEBBF;">(</span>ceil<span style="color: #D0BF8F;">(</span>length<span style="color: #93E0E3;">(</span>x<span style="color: #93E0E3;">)</span><span style="color: #7CB8BB;">/</span>n_av<span style="color: #D0BF8F;">)</span><span style="color: #BFEBBF;">)</span>, <span style="color: #BFEBBF;">[]</span>, <span style="color: #BFEBBF;">[]</span>, Fs<span style="color: #DCDCCC;">)</span>;
|
||||
|
||||
pxx_t = zeros<span style="color: #DCDCCC;">(</span>length<span style="color: #BFEBBF;">(</span>pxx<span style="color: #BFEBBF;">)</span>, data<span style="color: #BFEBBF;">(</span>end, <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
||||
|
||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">i</span>=<span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">:data</span><span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">end, </span><span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">)</span>
|
||||
x = data<span style="color: #DCDCCC;">(</span>data<span style="color: #BFEBBF;">(</span><span style="color: #7CB8BB;">:</span>, <span style="color: #BFEBBF;">1</span><span style="color: #BFEBBF;">)</span> <span style="color: #7CB8BB;">==</span> <span style="color: #BFEBBF;">i</span>, <span style="color: #BFEBBF;">4</span><span style="color: #DCDCCC;">)</span> <span style="color: #7CB8BB;">-</span> mean_pos;
|
||||
<span style="color: #DCDCCC;">[</span>pxx, f<span style="color: #DCDCCC;">]</span> = pwelch<span style="color: #DCDCCC;">(</span>x, hanning<span style="color: #BFEBBF;">(</span>ceil<span style="color: #D0BF8F;">(</span>length<span style="color: #93E0E3;">(</span>x<span style="color: #93E0E3;">)</span><span style="color: #7CB8BB;">/</span>n_av<span style="color: #D0BF8F;">)</span><span style="color: #BFEBBF;">)</span>, <span style="color: #BFEBBF;">[]</span>, <span style="color: #BFEBBF;">[]</span>, Fs<span style="color: #DCDCCC;">)</span>;
|
||||
pxx_t<span style="color: #DCDCCC;">(</span><span style="color: #7CB8BB;">:</span>, <span style="color: #BFEBBF;">i</span><span style="color: #DCDCCC;">)</span> = pxx;
|
||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span style="color: #7CB8BB;">figure</span>;
|
||||
hold on;
|
||||
plot<span style="color: #DCDCCC;">(</span>f, mean<span style="color: #BFEBBF;">(</span>pxx_t, <span style="color: #BFEBBF;">2</span><span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
||||
hold off;
|
||||
xlabel<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'Frequency </span><span style="color: #BFEBBF;">(</span><span style="color: #CC9393;">Hz</span><span style="color: #BFEBBF;">)</span><span style="color: #CC9393;">'</span><span style="color: #DCDCCC;">)</span>;
|
||||
ylabel<span style="color: #DCDCCC;">(</span>'PSD <span style="color: #BFEBBF;">(</span>$m<span style="color: #7CB8BB;">^</span><span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">/</span>Hz$<span style="color: #BFEBBF;">)</span>'<span style="color: #DCDCCC;">)</span>;
|
||||
<span style="color: #7CB8BB;">set</span><span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">gca</span>, <span style="color: #CC9393;">'XScale', 'log'</span><span style="color: #DCDCCC;">)</span><span style="color: #CC9393;">; set</span><span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">gca, 'YScale', 'log'</span><span style="color: #DCDCCC;">)</span>;
|
||||
legend<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">{</span><span style="color: #CC9393;">'PSD - x', 'PSD - y', 'PSD - z'</span><span style="color: #BFEBBF;">}</span><span style="color: #DCDCCC;">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org30d047a" class="figure">
|
||||
<p><img src="figs/psd.png" alt="psd.png" />
|
||||
<div id="outline-container-org01e23ef" class="outline-3">
|
||||
<h3 id="org01e23ef"><span class="section-number-3">1.5</span> Translate to time domain</h3>
|
||||
<div class="outline-text-3" id="text-1-5">
|
||||
<p>
|
||||
We here make the assumptions that, during a scan with the translation stage, the Z motion of the translation stage will follow the guiding error measured.
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>PSD of the Z motion when scanning with Ty at 1Hz</p>
|
||||
|
||||
<p>
|
||||
We then create a time vector \(t\) from 0 to 1 second that corresponds to a typical scan, and we plot the guiding error as a function of the time on figure <a href="#orgb3c2727">4</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">t = linspace<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">0</span>, <span class="org-highlight-numbers-number">1</span>, length<span class="org-rainbow-delimiters-depth-2">(</span>data<span class="org-rainbow-delimiters-depth-3">(</span>data<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">==</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">4</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</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, data<span class="org-rainbow-delimiters-depth-2">(</span>data<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span> <span class="org-type">==</span> <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">4</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">-</span> mean_pos, <span class="org-string">'-k'</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-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">'Error Value </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">[</span></span><span class="org-string">um</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>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgb3c2727" class="figure">
|
||||
<p><img src="figs/time_domain_tyz.png" alt="time_domain_tyz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>caption</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org13bc3d4" class="outline-3">
|
||||
<h3 id="org13bc3d4"><span class="section-number-3">1.6</span> Compute the PSD</h3>
|
||||
<div class="outline-text-3" id="text-1-6">
|
||||
<p>
|
||||
We first compute some parameters that will be used for the PSD computation.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">dt = t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-1">)</span><span class="org-type">-</span>t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
Fs = <span class="org-highlight-numbers-number">1</span><span class="org-type">/</span>dt; <span class="org-comment">% [Hz]</span>
|
||||
|
||||
win = hanning<span class="org-rainbow-delimiters-depth-1">(</span>ceil<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span><span class="org-type">*</span>Fs<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We remove the mean position from the data.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">x = data<span class="org-rainbow-delimiters-depth-1">(</span>data<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">==</span> <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">4</span><span class="org-rainbow-delimiters-depth-1">)</span> <span class="org-type">-</span> mean_pos;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
And finally, we compute the power spectral density of the displacement obtained in the time domain.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The result is shown on figure <a href="#org7446cbb">5</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-rainbow-delimiters-depth-1">[</span>pxx, f<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
pxx_t = zeros<span class="org-rainbow-delimiters-depth-1">(</span>length<span class="org-rainbow-delimiters-depth-2">(</span>pxx<span class="org-rainbow-delimiters-depth-2">)</span>, data<span class="org-rainbow-delimiters-depth-2">(</span>end, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">i</span>=<span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:data</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">end, </span><span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||
x = data<span class="org-rainbow-delimiters-depth-1">(</span>data<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-type">:</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">==</span> <span class="org-constant">i</span>, <span class="org-highlight-numbers-number">4</span><span class="org-rainbow-delimiters-depth-1">)</span> <span class="org-type">-</span> mean_pos;
|
||||
<span class="org-rainbow-delimiters-depth-1">[</span>pxx, f<span class="org-rainbow-delimiters-depth-1">]</span> = pwelch<span class="org-rainbow-delimiters-depth-1">(</span>x, win, <span class="org-rainbow-delimiters-depth-2">[]</span>, <span class="org-rainbow-delimiters-depth-2">[]</span>, Fs<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
pxx_t<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">:</span>, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span> = pxx;
|
||||
<span class="org-keyword">end</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>f, sqrt<span class="org-rainbow-delimiters-depth-2">(</span>mean<span class="org-rainbow-delimiters-depth-3">(</span>pxx_t, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'k-'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-2">(</span></span><span class="org-string">Hz</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>'Amplitude Spectral Density $<span class="org-type">\</span>left<span class="org-rainbow-delimiters-depth-2">[</span><span class="org-type">\</span>frac<span class="org-rainbow-delimiters-depth-3">{</span>m<span class="org-rainbow-delimiters-depth-3">}{</span><span class="org-type">\</span>sqrt<span class="org-rainbow-delimiters-depth-4">{</span>Hz<span class="org-rainbow-delimiters-depth-4">}</span><span class="org-rainbow-delimiters-depth-3">}</span><span class="org-type">\</span>right<span class="org-rainbow-delimiters-depth-2">]</span>$'<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XScale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'YScale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org7446cbb" class="figure">
|
||||
<p><img src="figs/psd_tyz.png" alt="psd_tyz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>PSD of the Z motion when scanning with Ty at 1Hz</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc7af6bd" class="outline-2">
|
||||
<h2 id="orgc7af6bd"><span class="section-number-2">2</span> <span class="todo TODO">TODO</span> Spindle</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Thomas Dehaeze</p>
|
||||
<p class="date">Created: 2019-03-15 ven. 11:43</p>
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2019-05-14 mar. 09:52</p>
|
||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||
</div>
|
||||
</body>
|
||||
|
@ -1,7 +1,60 @@
|
||||
#+TITLE:Static Measurements
|
||||
#+SETUPFILE: ../config.org
|
||||
:DRAWER:
|
||||
#+STARTUP: overview
|
||||
|
||||
* Notes
|
||||
#+LANGUAGE: en
|
||||
#+EMAIL: dehaeze.thomas@gmail.com
|
||||
#+AUTHOR: Dehaeze Thomas
|
||||
|
||||
#+HTML_LINK_HOME: ../index.html
|
||||
#+HTML_LINK_UP: ../index.html
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/zenburn.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/readtheorg.js"></script>
|
||||
|
||||
#+HTML_MATHJAX: align: center tagside: right font: TeX
|
||||
|
||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||
#+PROPERTY: header-args:matlab+ :comments org
|
||||
#+PROPERTY: header-args:matlab+ :results none
|
||||
#+PROPERTY: header-args:matlab+ :exports both
|
||||
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||
|
||||
#+PROPERTY: header-args:shell :eval no-export
|
||||
:END:
|
||||
|
||||
The goal here is to analyze the static measurement on the station (guiding error of each stage) and convert them to dynamic disturbances that can be use in the model of the micro-station.
|
||||
|
||||
The report by H-P van der Kleij on the static measurement of the ID31 station is available [[file:data/ID31_report_static_meas.pdf][here]].
|
||||
|
||||
* Static measurement of the translation stage
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle matlab/static_ty.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
<<sec:static_ty>>
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ matlab/static_ty.m -nt data/static_ty.zip ]; then
|
||||
cp matlab/static_ty.m static_ty.m;
|
||||
zip data/static_ty \
|
||||
mat/data_tyz.txt \
|
||||
static_ty.m
|
||||
rm static_ty.m;
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
#+begin_note
|
||||
All the files (data and Matlab scripts) are accessible [[file:data/static_ty.zip][here]].
|
||||
#+end_note
|
||||
|
||||
** Notes
|
||||
- *5530*: Straightness Plot: Yz
|
||||
- *Filename*: =r:\home\PDMU\PEL\Measurement_library\ID31\ID31_u_station\TY\12_12_2018\linear deviation _tyz_401_points.txt=
|
||||
- *Acquisition date*: 09/01/2019 13:49:42
|
||||
@ -23,13 +76,23 @@
|
||||
| MT2 Temp (C) | 024,40 | 024,44 | 024,42 |
|
||||
| MT3 Temp (C) | 024,32 | 024,36 | 024,34 |
|
||||
|
||||
* Data Pre-processing
|
||||
In a very schematic way, the measurement is explained on figure [[fig:guiding_error]].
|
||||
The positioning error $d$ is measure as a function of $x$.
|
||||
Because the measurement is done in a static way, the dynamics of the station (represented by the mass-spring-damper system on the schematic) does not play a role in the measure.
|
||||
|
||||
The obtained data corresponds to the guiding errors.
|
||||
|
||||
#+name: fig:guiding_error
|
||||
#+caption: Schematic of the measurement
|
||||
[[file:./figs/guiding_error.png]]
|
||||
|
||||
** Data Pre-processing
|
||||
#+begin_src shell :results silent
|
||||
sed 's/\t/ /g;s/\,/./g' "data/linear deviation _tyz_401_points.txt" > data/data.txt
|
||||
sed 's/\t/ /g;s/\,/./g' "mat/linear_deviation_tyz_401_points.txt" > mat/data_tyz.txt
|
||||
#+end_src
|
||||
|
||||
#+begin_src shell :exports both :post addhdr(*this*)
|
||||
head "data/data.txt"
|
||||
head "mat/data_tyz.txt"
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
@ -45,38 +108,50 @@
|
||||
| 1 | 8 | -4.3425E+00 | 7.3937387E+00 |
|
||||
| 1 | 9 | -4.32E+00 | 7.3287468E+00 |
|
||||
|
||||
* Matlab - Data Import
|
||||
#+begin_src matlab :results silent
|
||||
filename = 'data/data.txt';
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Matlab - Data Import
|
||||
#+begin_src matlab :tangle no
|
||||
filename = 'mat/data_tyz.txt';
|
||||
fileID = fopen(filename);
|
||||
data = cell2mat(textscan(fileID,'%f %f %f %f', 'collectoutput', 1,'headerlines',1));
|
||||
fclose(fileID);
|
||||
#+end_src
|
||||
|
||||
* Data - Plot
|
||||
#+begin_src matlab :results silent
|
||||
** Data - Plot
|
||||
|
||||
First, we plot the straightness error as a function of the position (figure [[fig:raw_data_tyz]]).
|
||||
|
||||
#+begin_src matlab
|
||||
figure;
|
||||
hold on;
|
||||
for i=1:data(end, 1)
|
||||
plot(data(data(:, 1) == i, 3), data(data(:, 1) == i, 4), '-k');
|
||||
end
|
||||
hold off;
|
||||
xlabel('Target Value [mm]'); ylabel('Error Value [um]');
|
||||
xlabel('Target Value [mm]'); ylabel('Error Value [$\mu m$]');
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:raw_data
|
||||
#+NAME: fig:raw_data_tyz
|
||||
#+HEADER: :tangle no :exports results :results raw :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/raw_data.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
#+begin_src matlab :var filepath="figs/raw_data_tyz.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:raw_data
|
||||
#+NAME: fig:raw_data_tyz
|
||||
#+CAPTION: Time domain Data
|
||||
#+RESULTS: fig:raw_data
|
||||
[[file:figs/raw_data.png]]
|
||||
#+RESULTS: fig:raw_data_tyz
|
||||
[[file:figs/raw_data_tyz.png]]
|
||||
|
||||
|
||||
Compute mean value of each position
|
||||
Then, we compute mean value of each position, and we remove this mean value from the data.
|
||||
The results are shown on figure [[fig:processed_data_tyz]].
|
||||
#+begin_src matlab :results silent
|
||||
mean_pos = zeros(sum(data(:, 1)==1), 1);
|
||||
for i=1:sum(data(:, 1)==1)
|
||||
@ -92,21 +167,25 @@ Compute mean value of each position
|
||||
plot(data(filt, 3), data(filt, 4) - mean_pos, '-k');
|
||||
end
|
||||
hold off;
|
||||
xlabel('Target Value [mm]'); ylabel('Error Value [um]');
|
||||
xlabel('Target Value [mm]'); ylabel('Error Value [$\mu m$]');
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:processed_data
|
||||
#+NAME: fig:processed_data_tyz
|
||||
#+HEADER: :tangle no :exports results :results raw :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/processed_data.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
#+begin_src matlab :var filepath="figs/processed_data_tyz.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:processed_data
|
||||
#+NAME: fig:processed_data_tyz
|
||||
#+CAPTION: caption
|
||||
#+RESULTS: fig:processed_data
|
||||
[[file:figs/processed_data.png]]
|
||||
#+RESULTS: fig:processed_data_tyz
|
||||
[[file:figs/processed_data_tyz.png]]
|
||||
|
||||
** Translate to time domain
|
||||
We here make the assumptions that, during a scan with the translation stage, the Z motion of the translation stage will follow the guiding error measured.
|
||||
|
||||
We then create a time vector $t$ from 0 to 1 second that corresponds to a typical scan, and we plot the guiding error as a function of the time on figure [[fig:time_domain_tyz]].
|
||||
|
||||
* Translate to time domain
|
||||
#+begin_src matlab :results none
|
||||
t = linspace(0, 1, length(data(data(:, 1)==1, 4)));
|
||||
#+end_src
|
||||
@ -119,30 +198,44 @@ Compute mean value of each position
|
||||
xlabel('Time [s]'); ylabel('Error Value [um]');
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:time_domain
|
||||
#+NAME: fig:time_domain_tyz
|
||||
#+HEADER: :tangle no :exports results :results raw :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/time_domain.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
#+begin_src matlab :var filepath="figs/time_domain_tyz.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:time_domain
|
||||
#+NAME: fig:time_domain_tyz
|
||||
#+CAPTION: caption
|
||||
#+RESULTS: fig:time_domain
|
||||
[[file:figs/time_domain.png]]
|
||||
#+RESULTS: fig:time_domain_tyz
|
||||
[[file:figs/time_domain_tyz.png]]
|
||||
|
||||
* Compute the PSD
|
||||
#+begin_src matlab :results none
|
||||
n_av = 5;
|
||||
Fs = 1/t(2);
|
||||
** Compute the PSD
|
||||
|
||||
We first compute some parameters that will be used for the PSD computation.
|
||||
#+begin_src matlab
|
||||
dt = t(2)-t(1);
|
||||
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(1*Fs));
|
||||
#+end_src
|
||||
|
||||
We remove the mean position from the data.
|
||||
#+begin_src matlab
|
||||
x = data(data(:, 1) == 1, 4) - mean_pos;
|
||||
[pxx, f] = pwelch(x, hanning(ceil(length(x)/n_av)), [], [], Fs);
|
||||
#+end_src
|
||||
|
||||
And finally, we compute the power spectral density of the displacement obtained in the time domain.
|
||||
|
||||
The result is shown on figure [[fig:psd_tyz]].
|
||||
#+begin_src matlab :results none
|
||||
[pxx, f] = pwelch(x, win, [], [], Fs);
|
||||
|
||||
pxx_t = zeros(length(pxx), data(end, 1));
|
||||
|
||||
for i=1:data(end, 1)
|
||||
x = data(data(:, 1) == i, 4) - mean_pos;
|
||||
[pxx, f] = pwelch(x, hanning(ceil(length(x)/n_av)), [], [], Fs);
|
||||
[pxx, f] = pwelch(x, win, [], [], Fs);
|
||||
pxx_t(:, i) = pxx;
|
||||
end
|
||||
#+end_src
|
||||
@ -150,21 +243,41 @@ Compute mean value of each position
|
||||
#+begin_src matlab :results none
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, mean(pxx_t, 2));
|
||||
plot(f, sqrt(mean(pxx_t, 2)), 'k-');
|
||||
hold off;
|
||||
xlabel('Frequency (Hz)');
|
||||
ylabel('PSD ($m^2/Hz$)');
|
||||
ylabel('Amplitude Spectral Density $\left[\frac{m}{\sqrt{Hz}}\right]$');
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
legend({'PSD - x', 'PSD - y', 'PSD - z'});
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:psd
|
||||
#+NAME: fig:psd_tyz
|
||||
#+HEADER: :tangle no :exports results :results raw :noweb yes
|
||||
#+begin_src matlab :var filepath="figs/psd.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
#+begin_src matlab :var filepath="figs/psd_tyz.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
|
||||
<<plt-matlab>>
|
||||
#+end_src
|
||||
|
||||
#+NAME: fig:psd
|
||||
#+NAME: fig:psd_tyz
|
||||
#+CAPTION: PSD of the Z motion when scanning with Ty at 1Hz
|
||||
#+RESULTS: fig:psd
|
||||
[[file:figs/psd.png]]
|
||||
#+RESULTS: fig:psd_tyz
|
||||
[[file:figs/psd_tyz.png]]
|
||||
|
||||
* TODO Static Measurement of the spindle
|
||||
:PROPERTIES:
|
||||
:header-args:matlab+: :tangle matlab/spindle_static.m
|
||||
:header-args:matlab+: :comments org :mkdirp yes
|
||||
:END:
|
||||
<<sec:spindle_static>>
|
||||
|
||||
#+begin_src bash :exports none :results none
|
||||
if [ matlab/spindle_static.m -nt data/spindle_static.zip ]; then
|
||||
cp matlab/spindle_static.m spindle_static.m;
|
||||
zip data/spindle_static \
|
||||
mat/data.mat \
|
||||
spindle_static.m
|
||||
rm spindle_static.m;
|
||||
fi
|
||||
#+end_src
|
||||
|
||||
#+begin_note
|
||||
All the files (data and Matlab scripts) are accessible [[file:data/spindle_static.zip][here]].
|
||||
#+end_note
|
||||
|
2407
static-to-dynamic/mat/data_tyz.txt
Normal file
2407
static-to-dynamic/mat/linear_deviation_tyz_401_points.txt
Normal file
96
static-to-dynamic/matlab/static_ty.m
Normal file
@ -0,0 +1,96 @@
|
||||
%% Clear Workspace and Close figures
|
||||
clear; close all; clc;
|
||||
|
||||
%% Intialize Laplace variable
|
||||
s = zpk('s');
|
||||
|
||||
% Data - Plot
|
||||
|
||||
% First, we plot the straightness error as a function of the position (figure [[fig:raw_data_tyz]]).
|
||||
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
for i=1:data(end, 1)
|
||||
plot(data(data(:, 1) == i, 3), data(data(:, 1) == i, 4), '-k');
|
||||
end
|
||||
hold off;
|
||||
xlabel('Target Value [mm]'); ylabel('Error Value [$\mu m$]');
|
||||
|
||||
|
||||
|
||||
% #+NAME: fig:raw_data_tyz
|
||||
% #+CAPTION: Time domain Data
|
||||
% #+RESULTS: fig:raw_data_tyz
|
||||
% [[file:figs/raw_data_tyz.png]]
|
||||
|
||||
% Then, we compute mean value of each position, and we remove this mean value from the data.
|
||||
% The results are shown on figure [[fig:processed_data_tyz]].
|
||||
|
||||
mean_pos = zeros(sum(data(:, 1)==1), 1);
|
||||
for i=1:sum(data(:, 1)==1)
|
||||
mean_pos(i) = mean(data(data(:, 2)==i, 4));
|
||||
end
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
for i=1:data(end, 1)
|
||||
filt = data(:, 1) == i;
|
||||
plot(data(filt, 3), data(filt, 4) - mean_pos, '-k');
|
||||
end
|
||||
hold off;
|
||||
xlabel('Target Value [mm]'); ylabel('Error Value [$\mu m$]');
|
||||
|
||||
% Translate to time domain
|
||||
% We here make the assumptions that, during a scan with the translation stage, the Z motion of the translation stage will follow the guiding error measured.
|
||||
|
||||
% We then create a time vector $t$ from 0 to 1 second that corresponds to a typical scan, and we plot the guiding error as a function of the time on figure [[fig:time_domain_tyz]].
|
||||
|
||||
|
||||
t = linspace(0, 1, length(data(data(:, 1)==1, 4)));
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(t, data(data(:, 1) == 1, 4) - mean_pos, '-k');
|
||||
hold off;
|
||||
xlabel('Time [s]'); ylabel('Error Value [um]');
|
||||
|
||||
% Compute the PSD
|
||||
|
||||
% We first compute some parameters that will be used for the PSD computation.
|
||||
|
||||
dt = t(2)-t(1);
|
||||
|
||||
Fs = 1/dt; % [Hz]
|
||||
|
||||
win = hanning(ceil(1*Fs));
|
||||
|
||||
|
||||
|
||||
% We remove the mean position from the data.
|
||||
|
||||
x = data(data(:, 1) == 1, 4) - mean_pos;
|
||||
|
||||
|
||||
|
||||
% And finally, we compute the power spectral density of the displacement obtained in the time domain.
|
||||
|
||||
% The result is shown on figure [[fig:psd_tyz]].
|
||||
|
||||
[pxx, f] = pwelch(x, win, [], [], Fs);
|
||||
|
||||
pxx_t = zeros(length(pxx), data(end, 1));
|
||||
|
||||
for i=1:data(end, 1)
|
||||
x = data(data(:, 1) == i, 4) - mean_pos;
|
||||
[pxx, f] = pwelch(x, win, [], [], Fs);
|
||||
pxx_t(:, i) = pxx;
|
||||
end
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
plot(f, sqrt(mean(pxx_t, 2)), 'k-');
|
||||
hold off;
|
||||
xlabel('Frequency (Hz)');
|
||||
ylabel('Amplitude Spectral Density $\left[\frac{m}{\sqrt{Hz}}\right]$');
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|