Important change for the implementation of motion input
Now we provide the first and second derivatives. This permits to not have any motion error. Also, many experiments (tomography, ty-scans) are simulated
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2019-12-13 ven. 19:06 -->
|
||||
<!-- 2019-12-17 mar. 18:01 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Tomography Experiment</title>
|
||||
@@ -258,16 +258,70 @@ for the JavaScript code in this tag.
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org84a12d1">1. Simscape Model</a></li>
|
||||
<li><a href="#orgcb251b3">2. Tomography Experiment with no disturbances</a></li>
|
||||
<li><a href="#orgcc1bc22">3. With Perturbations</a></li>
|
||||
<li><a href="#org9876dd1">1. Simscape Model</a></li>
|
||||
<li><a href="#orge5e5b16">2. Tomography Experiment with no disturbances</a>
|
||||
<ul>
|
||||
<li><a href="#org5e4ce3d">2.1. Simulation Setup</a></li>
|
||||
<li><a href="#org8ae8a5d">2.2. Analysis</a></li>
|
||||
<li><a href="#orgc99de70">2.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org236226d">3. Tomography Experiment with included perturbations</a>
|
||||
<ul>
|
||||
<li><a href="#org8aa359d">3.1. Simulation Setup</a></li>
|
||||
<li><a href="#orgd63048b">3.2. Analysis</a></li>
|
||||
<li><a href="#org5328197">3.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgbcf3187">4. Tomography when the micro-hexapod is not centered</a>
|
||||
<ul>
|
||||
<li><a href="#orgb8fc603">4.1. Simulation Setup</a></li>
|
||||
<li><a href="#org22f9788">4.2. Analysis</a></li>
|
||||
<li><a href="#orga8287ac">4.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org9e0e5be">5. Raster Scans with the translation stage</a>
|
||||
<ul>
|
||||
<li><a href="#org0b48fba">5.1. Simulation Setup</a></li>
|
||||
<li><a href="#orge9df7a3">5.2. Analysis</a></li>
|
||||
<li><a href="#orgbdb4d14">5.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org84a12d1" class="outline-2">
|
||||
<h2 id="org84a12d1"><span class="section-number-2">1</span> Simscape Model</h2>
|
||||
<p>
|
||||
The goal here is to simulate some scientific experiments with the tuned Simscape model when no control is applied to the nano-hexapod.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This has several goals:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Validate the model</li>
|
||||
<li>Estimate the expected error motion for the experiments</li>
|
||||
<li>Estimate the stroke that we may need for the nano-hexapod</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The document in organized as follow:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>In section <a href="#orga91d1df">1</a> the Simscape model is initialized</li>
|
||||
<li>In section <a href="#org1018b85">2</a> a tomography experiment is performed where the sample is aligned with the rotation axis. No disturbance is included</li>
|
||||
<li>In section <a href="#org8c019e4">3</a>, the same is done but with disturbance included</li>
|
||||
<li>In section <a href="#org395e7ec">4</a> the micro-hexapod translate the sample such that its center of mass is no longer aligned with the rotation axis. No disturbance is included</li>
|
||||
<li>In section <a href="#orga1dc368">5</a>, scans with the translation stage are simulated with no perturbation included</li>
|
||||
</ul>
|
||||
|
||||
<div id="outline-container-org9876dd1" class="outline-2">
|
||||
<h2 id="org9876dd1"><span class="section-number-2">1</span> Simscape Model</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="orga91d1df"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The simulink file to do tomography experiments is <code>sim_nano_station_tomo.slx</code>.
|
||||
</p>
|
||||
@@ -277,11 +331,11 @@ The simulink file to do tomography experiments is <code>sim_nano_station_tomo.sl
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We load the shared simulink configuration and we set a small <code>StopTime</code>.
|
||||
We load the shared simulink configuration and we set the <code>StopTime</code>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/conf_simscape.mat'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-matlab-simulink-keyword">set_param</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">conf_simscape</span>, <span class="org-string">'StopTime'</span>, '<span class="org-highlight-numbers-number">10</span><span class="org-type">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-matlab-simulink-keyword">set_param</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">conf_simscape</span>, <span class="org-string">'StopTime'</span>, '<span class="org-highlight-numbers-number">5</span><span class="org-type">'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -313,9 +367,231 @@ All stage is set to its zero position except the Spindle which is rotating at 60
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcb251b3" class="outline-2">
|
||||
<h2 id="orgcb251b3"><span class="section-number-2">2</span> Tomography Experiment with no disturbances</h2>
|
||||
<div id="outline-container-orge5e5b16" class="outline-2">
|
||||
<h2 id="orge5e5b16"><span class="section-number-2">2</span> Tomography Experiment with no disturbances</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="org1018b85"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org5e4ce3d" class="outline-3">
|
||||
<h3 id="org5e4ce3d"><span class="section-number-3">2.1</span> Simulation Setup</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
And we initialize the disturbances to be equal to zero.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">opts = struct<span class="org-rainbow-delimiters-depth-1">(</span>...
|
||||
<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||
<span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||
<span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||
<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||
<span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||
<span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||
<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
initDisturbances<span class="org-rainbow-delimiters-depth-1">(</span>opts<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We simulate the model.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-simulink-keyword">sim</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'sim_nano_station_tomo'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
And we save the obtained data.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">tomo_align_no_dist = struct<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'t'</span>, t, <span class="org-string">'MTr'</span>, MTr<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
save<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_align_no_dist'</span>, <span class="org-string">'-append'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8ae8a5d" class="outline-3">
|
||||
<h3 id="org8ae8a5d"><span class="section-number-3">2.2</span> Analysis</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_align_no_dist'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
t = tomo_align_no_dist.t;
|
||||
MTr = tomo_align_no_dist.MTr;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Edx = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Edy = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Edz = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-comment">% The angles obtained are u-v-w Euler angles (rotations in the moving frame)</span>
|
||||
Ery = atan2<span class="org-rainbow-delimiters-depth-1">(</span> squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>sqrt<span class="org-rainbow-delimiters-depth-3">(</span>MTr<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">.^</span><span class="org-highlight-numbers-number">2</span> <span class="org-type">+</span> MTr<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</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-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Erx = atan2<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">-</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Erz = atan2<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">-</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgda4d10e" class="figure">
|
||||
<p><img src="figs/exp_tomo_without_dist_trans.png" alt="exp_tomo_without_dist_trans.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (<a href="./figs/exp_tomo_without_dist_trans.png">png</a>, <a href="./figs/exp_tomo_without_dist_trans.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgf194db1" class="figure">
|
||||
<p><img src="figs/exp_tomo_without_dist_rot.png" alt="exp_tomo_without_dist_rot.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>X-Y-Z rotations of the sample w.r.t. granite when performing tomography experiment with no disturbances (<a href="./figs/exp_tomo_without_dist_rot.png">png</a>, <a href="./figs/exp_tomo_without_dist_rot.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc99de70" class="outline-3">
|
||||
<h3 id="orgc99de70"><span class="section-number-3">2.3</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<div class="important">
|
||||
<p>
|
||||
When everything is aligned, the resulting error motion is very small (nm range) and is quite negligible with respect to the error when disturbances are included.
|
||||
This residual error motion probably comes from a small misalignment somewhere.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org236226d" class="outline-2">
|
||||
<h2 id="org236226d"><span class="section-number-2">3</span> Tomography Experiment with included perturbations</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="org8c019e4"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org8aa359d" class="outline-3">
|
||||
<h3 id="org8aa359d"><span class="section-number-3">3.1</span> Simulation Setup</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
We now activate the disturbances.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">opts = struct<span class="org-rainbow-delimiters-depth-1">(</span>...
|
||||
<span class="org-string">'Dwx'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||
<span class="org-string">'Dwy'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||
<span class="org-string">'Dwz'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||
<span class="org-string">'Fty_x'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||
<span class="org-string">'Fty_z'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||
<span class="org-string">'Frz_z'</span>, <span class="org-constant">true</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||
<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
initDisturbances<span class="org-rainbow-delimiters-depth-1">(</span>opts<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We simulate the model.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-simulink-keyword">sim</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'sim_nano_station_tomo'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
And we save the obtained data.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">tomo_align_dist = struct<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'t'</span>, t, <span class="org-string">'MTr'</span>, MTr<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
save<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_align_dist'</span>, <span class="org-string">'-append'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd63048b" class="outline-3">
|
||||
<h3 id="orgd63048b"><span class="section-number-3">3.2</span> Analysis</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_align_dist'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
t = tomo_align_dist.t;
|
||||
MTr = tomo_align_dist.MTr;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Edx = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Edy = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Edz = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-comment">% The angles obtained are u-v-w Euler angles (rotations in the moving frame)</span>
|
||||
Ery = atan2<span class="org-rainbow-delimiters-depth-1">(</span> squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>sqrt<span class="org-rainbow-delimiters-depth-3">(</span>MTr<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">.^</span><span class="org-highlight-numbers-number">2</span> <span class="org-type">+</span> MTr<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</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-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Erx = atan2<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">-</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Erz = atan2<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">-</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orge9cec44" class="figure">
|
||||
<p><img src="figs/exp_tomo_dist_trans.png" alt="exp_tomo_dist_trans.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>X-Y-Z translation of the sample w.r.t. the granite when performing tomography experiment with disturbances (<a href="./figs/exp_tomo_dist_trans.png">png</a>, <a href="./figs/exp_tomo_dist_trans.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org98cbd3c" class="figure">
|
||||
<p><img src="figs/exp_tomo_dist_rot.png" alt="exp_tomo_dist_rot.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>X-Y-Z rotations of the sample w.r.t. the granite when performing tomography experiment with disturbances (<a href="./figs/exp_tomo_dist_rot.png">png</a>, <a href="./figs/exp_tomo_dist_rot.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5328197" class="outline-3">
|
||||
<h3 id="org5328197"><span class="section-number-3">3.3</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<div class="important">
|
||||
<p>
|
||||
Error motion is what expected from the disturbance measurements.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbcf3187" class="outline-2">
|
||||
<h2 id="orgbcf3187"><span class="section-number-2">4</span> Tomography when the micro-hexapod is not centered</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
<a id="org395e7ec"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-orgb8fc603" class="outline-3">
|
||||
<h3 id="orgb8fc603"><span class="section-number-3">4.1</span> Simulation Setup</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
We first set the wanted translation of the Micro Hexapod.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">P_micro_hexapod = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">0</span>.<span class="org-highlight-numbers-number">01</span>; <span class="org-highlight-numbers-number">0</span>; <span class="org-highlight-numbers-number">0</span><span class="org-rainbow-delimiters-depth-1">]</span>; <span class="org-comment">% [m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We initialize the reference path.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences<span class="org-rainbow-delimiters-depth-1">(</span>struct<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'Dh_pos'</span>, <span class="org-rainbow-delimiters-depth-3">[</span>P_micro_hexapod; <span class="org-highlight-numbers-number">0</span>; <span class="org-highlight-numbers-number">0</span>; <span class="org-highlight-numbers-number">0</span><span class="org-rainbow-delimiters-depth-3">]</span>, <span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating'</span>, <span class="org-string">'Rz_period'</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We initialize the stages.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeMicroHexapod<span class="org-rainbow-delimiters-depth-1">(</span>struct<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'AP'</span>, P_micro_hexapod<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
And we initialize the disturbances to zero.
|
||||
</p>
|
||||
@@ -332,88 +608,199 @@ initDisturbances<span class="org-rainbow-delimiters-depth-1">(</span>opts<span c
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-simulink-keyword">sim</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'sim_nano_station_tomo'</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Dsm_without_dist = Dsm;
|
||||
</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>Dsm_without_dist.x.Time, Dsm_without_dist.x.Data, <span class="org-string">'DisplayName'</span>, <span class="org-string">'x'</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>Dsm_without_dist.y.Time, Dsm_without_dist.y.Data, <span class="org-string">'DisplayName'</span>, <span class="org-string">'y'</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>Dsm_without_dist.z.Time, Dsm_without_dist.z.Data, <span class="org-string">'DisplayName'</span>, <span class="org-string">'z'</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
hold off;
|
||||
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">2</span>, <span class="org-constant">inf</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
legend<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'location'</span>, <span class="org-string">'northeast'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org8e9717d" class="figure">
|
||||
<p><img src="figs/exp_tomo_without_dist_trans.png" alt="exp_tomo_without_dist_trans.png" />
|
||||
<p>
|
||||
We simulate the model.
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (<a href="./figs/exp_tomo_without_dist_trans.png">png</a>, <a href="./figs/exp_tomo_without_dist_trans.pdf">pdf</a>)</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-simulink-keyword">sim</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'sim_nano_station_tomo'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<p>
|
||||
Rotations.
|
||||
Think of the good way to plot these rotations with respect to time.
|
||||
And we save the obtained data.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">tomo_not_align = struct<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'t'</span>, t, <span class="org-string">'MTr'</span>, MTr<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
save<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_not_align'</span>, <span class="org-string">'-append'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcc1bc22" class="outline-2">
|
||||
<h2 id="orgcc1bc22"><span class="section-number-2">3</span> With Perturbations</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<div id="outline-container-org22f9788" class="outline-3">
|
||||
<h3 id="org22f9788"><span class="section-number-3">4.2</span> Analysis</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_not_align'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
t = tomo_not_align.t;
|
||||
MTr = tomo_not_align.MTr;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Edx = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Edy = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Edz = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-comment">% The angles obtained are u-v-w Euler angles (rotations in the moving frame)</span>
|
||||
Ery = atan2<span class="org-rainbow-delimiters-depth-1">(</span> squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>sqrt<span class="org-rainbow-delimiters-depth-3">(</span>MTr<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">.^</span><span class="org-highlight-numbers-number">2</span> <span class="org-type">+</span> MTr<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</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-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Erx = atan2<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">-</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Erz = atan2<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">-</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org7fb9a86" class="figure">
|
||||
<p><img src="figs/exp_tomo_offset_trans.png" alt="exp_tomo_offset_trans.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (<a href="./figs/exp_tomo_offset_trans.png">png</a>, <a href="./figs/exp_tomo_offset_trans.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgbe8a23e" class="figure">
|
||||
<p><img src="figs/exp_tomo_offset_rot.png" alt="exp_tomo_offset_rot.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>X-Y-Z rotations of the sample w.r.t. granite when performing tomography experiment with no disturbances (<a href="./figs/exp_tomo_offset_rot.png">png</a>, <a href="./figs/exp_tomo_offset_rot.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga8287ac" class="outline-3">
|
||||
<h3 id="orga8287ac"><span class="section-number-3">4.3</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-4-3">
|
||||
<div class="important">
|
||||
<p>
|
||||
The main motions are translations in the X direction of the mobile platform (corresponds to the eccentricity of the micro-hexapod) and rotations along the rotating Y axis.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9e0e5be" class="outline-2">
|
||||
<h2 id="org9e0e5be"><span class="section-number-2">5</span> Raster Scans with the translation stage</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
<a id="orga1dc368"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org0b48fba" class="outline-3">
|
||||
<h3 id="org0b48fba"><span class="section-number-3">5.1</span> Simulation Setup</h3>
|
||||
<div class="outline-text-3" id="text-5-1">
|
||||
<p>
|
||||
We set the reference path.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences<span class="org-rainbow-delimiters-depth-1">(</span>struct<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'Dy_type'</span>, <span class="org-string">'triangular'</span>, <span class="org-string">'Dy_amplitude'</span>, <span class="org-highlight-numbers-number">10e</span><span class="org-type">-</span><span class="org-highlight-numbers-number">3</span>, <span class="org-string">'Dy_period'</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We initialize the stages.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround<span class="org-rainbow-delimiters-depth-1">()</span>;
|
||||
initializeGranite<span class="org-rainbow-delimiters-depth-1">()</span>;
|
||||
initializeTy<span class="org-rainbow-delimiters-depth-1">()</span>;
|
||||
initializeRy<span class="org-rainbow-delimiters-depth-1">()</span>;
|
||||
initializeRz<span class="org-rainbow-delimiters-depth-1">()</span>;
|
||||
initializeMicroHexapod<span class="org-rainbow-delimiters-depth-1">()</span>;
|
||||
initializeAxisc<span class="org-rainbow-delimiters-depth-1">()</span>;
|
||||
initializeMirror<span class="org-rainbow-delimiters-depth-1">()</span>;
|
||||
initializeNanoHexapod<span class="org-rainbow-delimiters-depth-1">(</span>struct<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
initializeSample<span class="org-rainbow-delimiters-depth-1">(</span>struct<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'mass'</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
And we initialize the disturbances to zero.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">opts = struct<span class="org-rainbow-delimiters-depth-1">(</span>...
|
||||
<span class="org-string">'Dwx'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||
<span class="org-string">'Dwy'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||
<span class="org-string">'Dwz'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||
<span class="org-string">'Fty_x'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||
<span class="org-string">'Fty_z'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||
<span class="org-string">'Frz_z'</span>, <span class="org-constant">true</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||
<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||
<span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||
<span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||
<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||
<span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||
<span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||
<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
initDisturbances<span class="org-rainbow-delimiters-depth-1">(</span>opts<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-simulink-keyword">sim</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'sim_nano_station_tomo'</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>Dsm.x.Time, Dsm.x.Data, <span class="org-string">'DisplayName'</span>, <span class="org-string">'x'</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>Dsm.y.Time, Dsm.y.Data, <span class="org-string">'DisplayName'</span>, <span class="org-string">'y'</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>Dsm.z.Time, Dsm.z.Data, <span class="org-string">'DisplayName'</span>, <span class="org-string">'z'</span><span class="org-rainbow-delimiters-depth-1">)</span>
|
||||
hold off;
|
||||
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">2</span>, <span class="org-constant">inf</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
legend<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'location'</span>, <span class="org-string">'northeast'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org230990b" class="figure">
|
||||
<p><img src="figs/exp_tomo_dist_trans.png" alt="exp_tomo_dist_trans.png" />
|
||||
<p>
|
||||
We simulate the model.
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>X-Y-Z translation of the sample w.r.t. the granite when performing tomography experiment with disturbances (<a href="./figs/exp_tomo_dist_trans.png">png</a>, <a href="./figs/exp_tomo_dist_trans.pdf">pdf</a>)</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-simulink-keyword">sim</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'sim_nano_station_tomo'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
And we save the obtained data.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ty_scan = struct<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'t'</span>, t, <span class="org-string">'MTr'</span>, MTr<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
save<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'ty_scan'</span>, <span class="org-string">'-append'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge9df7a3" class="outline-3">
|
||||
<h3 id="orge9df7a3"><span class="section-number-3">5.2</span> Analysis</h3>
|
||||
<div class="outline-text-3" id="text-5-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'ty_scan'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
t = ty_scan.t;
|
||||
MTr = ty_scan.MTr;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Edx = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Edy = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Edz = squeeze<span class="org-rainbow-delimiters-depth-1">(</span>MTr<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">4</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-comment">% The angles obtained are u-v-w Euler angles (rotations in the moving frame)</span>
|
||||
Ery = atan2<span class="org-rainbow-delimiters-depth-1">(</span> squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>sqrt<span class="org-rainbow-delimiters-depth-3">(</span>MTr<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">.^</span><span class="org-highlight-numbers-number">2</span> <span class="org-type">+</span> MTr<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</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-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Erx = atan2<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">-</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
Erz = atan2<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">-</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span>, squeeze<span class="org-rainbow-delimiters-depth-2">(</span>MTr<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">./</span>cos<span class="org-rainbow-delimiters-depth-2">(</span>Ery<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org3533d00" class="figure">
|
||||
<p><img src="figs/exp_ty_scan_trans.png" alt="exp_ty_scan_trans.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (<a href="./figs/exp_ty_scan_trans.png">png</a>, <a href="./figs/exp_ty_scan_trans.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgcf32c40" class="figure">
|
||||
<p><img src="figs/exp_ty_scan_rot.png" alt="exp_ty_scan_rot.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>X-Y-Z rotations of the sample w.r.t. granite when performing tomography experiment with no disturbances (<a href="./figs/exp_ty_scan_rot.png">png</a>, <a href="./figs/exp_ty_scan_rot.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbdb4d14" class="outline-3">
|
||||
<h3 id="orgbdb4d14"><span class="section-number-3">5.3</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-5-3">
|
||||
<div class="important">
|
||||
<p>
|
||||
This is logic that the main error moving is translation along the Y axis and rotation along the X axis.
|
||||
In order to reduce the errors, we can make a smoother reference path for the translation stage.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2019-12-13 ven. 19:06</p>
|
||||
<p class="date">Created: 2019-12-17 mar. 18:01</p>
|
||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||
</div>
|
||||
</body>
|
||||
|
Reference in New Issue
Block a user