Use online CSS and JS
This commit is contained in:
@@ -3,31 +3,36 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-09-01 mar. 13:48 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Identification of the disturbances</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<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>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Identification of the disturbances</h1>
|
||||
<div id="table-of-contents">
|
||||
@@ -41,12 +46,12 @@
|
||||
<li><a href="#Compute-the-Power-Spectral-Density-of-the-disturbance-force">5. Compute the Power Spectral Density of the disturbance force</a></li>
|
||||
<li><a href="#Noise-Budget">6. Noise Budget</a></li>
|
||||
<li><a href="#Save">7. Save</a></li>
|
||||
<li><a href="#orgd564a58">8. Time Domain Disturbances</a></li>
|
||||
<li><a href="#org8212830">9. Time Domain Effect of Disturbances</a>
|
||||
<li><a href="#orgca3331b">8. Time Domain Disturbances</a></li>
|
||||
<li><a href="#orgbbaf1e8">9. Time Domain Effect of Disturbances</a>
|
||||
<ul>
|
||||
<li><a href="#org76c96f4">9.1. Initialization of the Experiment</a></li>
|
||||
<li><a href="#orgf9c1ad9">9.2. Simulations</a></li>
|
||||
<li><a href="#org8107e0b">9.3. Comparison</a></li>
|
||||
<li><a href="#org44ce5e0">9.1. Initialization of the Experiment</a></li>
|
||||
<li><a href="#org6eb944e">9.2. Simulations</a></li>
|
||||
<li><a href="#org0e0c592">9.3. Comparison</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -58,7 +63,7 @@ The goal here is to extract the Power Spectral Density of the sources of perturb
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The sources of perturbations are (schematically shown in figure <a href="#org3b8025c">1</a>):
|
||||
The sources of perturbations are (schematically shown in figure <a href="#orgd508b9c">1</a>):
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>\(D_w\): Ground Motion</li>
|
||||
@@ -67,11 +72,11 @@ These forces can be due to imperfect guiding for instance.</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
Because we cannot measure directly the perturbation forces, we have the measure the effect of those perturbations on the system (in terms of velocity for instance using geophones, \(D\) on figure <a href="#org3b8025c">1</a>) and then, using a model, compute the forces that induced such velocity.
|
||||
Because we cannot measure directly the perturbation forces, we have the measure the effect of those perturbations on the system (in terms of velocity for instance using geophones, \(D\) on figure <a href="#orgd508b9c">1</a>) and then, using a model, compute the forces that induced such velocity.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org3b8025c" class="figure">
|
||||
<div id="orgd508b9c" class="figure">
|
||||
<p><img src="figs/uniaxial-model-micro-station.png" alt="uniaxial-model-micro-station.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Schematic of the Micro Station and the sources of disturbance</p>
|
||||
@@ -82,19 +87,19 @@ Because we cannot measure directly the perturbation forces, we have the measure
|
||||
This file is divided in the following sections:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Section <a href="#org7cdab70">1</a>: the simscape model used here is presented</li>
|
||||
<li>Section <a href="#org43ec76b">2</a>: transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup</li>
|
||||
<li>Section <a href="#org5636fee">3</a>: the bode plot of those transfer functions are shown</li>
|
||||
<li>Section <a href="#org40a7e4e">4</a>: the measured PSD of the effect of the disturbances are shown</li>
|
||||
<li>Section <a href="#orgd113ba5">5</a>: from the model and the measured PSD, the PSD of the disturbance forces are computed</li>
|
||||
<li>Section <a href="#org71da6bd">6</a>: with the computed PSD, the noise budget of the system is done</li>
|
||||
<li>Section <a href="#orga31fad3">1</a>: the simscape model used here is presented</li>
|
||||
<li>Section <a href="#org6a358d2">2</a>: transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup</li>
|
||||
<li>Section <a href="#orgaf4acdc">3</a>: the bode plot of those transfer functions are shown</li>
|
||||
<li>Section <a href="#org01aa3d0">4</a>: the measured PSD of the effect of the disturbances are shown</li>
|
||||
<li>Section <a href="#org5b257d4">5</a>: from the model and the measured PSD, the PSD of the disturbance forces are computed</li>
|
||||
<li>Section <a href="#org0e0f7ed">6</a>: with the computed PSD, the noise budget of the system is done</li>
|
||||
</ul>
|
||||
|
||||
<div id="outline-container-Simscape-Model" class="outline-2">
|
||||
<h2 id="Simscape-Model"><span class="section-number-2">1</span> Simscape Model</h2>
|
||||
<div class="outline-text-2" id="text-Simscape-Model">
|
||||
<p>
|
||||
<a id="org7cdab70"></a>
|
||||
<a id="orga31fad3"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -111,8 +116,8 @@ Also, we measure the absolute displacement of the granite and of the top platfor
|
||||
We load the configuration and we set a small <code>StopTime</code>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '0.5');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'mat/conf_simulink.mat'</span>);
|
||||
<span class="org-matlab-simulink-keyword">set_param</span>(<span class="org-variable-name">conf_simulink</span>, <span class="org-string">'StopTime'</span>, <span class="org-string">'0.5'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -121,16 +126,16 @@ We initialize all the stages without the sample nor the nano-hexapod.
|
||||
The obtained system corresponds to the status micro-station when the vibration measurements were conducted.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite('type', 'modal-analysis');
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod('type', 'modal-analysis');
|
||||
initializeAxisc('type', 'none');
|
||||
initializeMirror('type', 'none');
|
||||
initializeNanoHexapod('type', 'none');
|
||||
initializeSample('type', 'none');
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite(<span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -138,7 +143,7 @@ initializeSample('type', 'none');
|
||||
Open Loop Control.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController('type', 'open-loop');
|
||||
<pre class="src src-matlab"> initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -146,7 +151,7 @@ Open Loop Control.
|
||||
We don’t need gravity here.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration('gravity', false);
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -154,7 +159,7 @@ We don’t need gravity here.
|
||||
We log the signals.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeLoggingConfiguration('log', 'all');
|
||||
<pre class="src src-matlab"> initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -164,25 +169,25 @@ We log the signals.
|
||||
<h2 id="Identification"><span class="section-number-2">2</span> Identification</h2>
|
||||
<div class="outline-text-2" id="text-Identification">
|
||||
<p>
|
||||
<a id="org43ec76b"></a>
|
||||
<a id="org6a358d2"></a>
|
||||
The transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup with the code below.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
|
||||
%% Micro-Hexapod
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Dwz'); io_i = io_i + 1; % Vertical Ground Motion
|
||||
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Fty_z'); io_i = io_i + 1; % Parasitic force Ty
|
||||
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Frz_z'); io_i = io_i + 1; % Parasitic force Rz
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Micro-Hexapod</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Dwz'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Vertical Ground Motion</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Fty_z'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Parasitic force Ty</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Frz_z'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Parasitic force Rz</span>
|
||||
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Granite/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1; % Absolute motion - Granite
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1; % Absolute Motion - Hexapod
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Granite/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Absolute motion - Granite</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Absolute Motion - Hexapod</span>
|
||||
|
||||
% Run the linearization
|
||||
G = linearize(mdl, io, 0);
|
||||
<span class="org-comment">% Run the linearization</span>
|
||||
G = linearize(mdl, io, 0);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -190,11 +195,11 @@ G = linearize(mdl, io, 0);
|
||||
We Take only the outputs corresponding to the vertical acceleration.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">G = G([3,9], :);
|
||||
<pre class="src src-matlab"> G = G([3,9], <span class="org-type">:</span>);
|
||||
|
||||
% Input/Output names
|
||||
G.InputName = {'Dw', 'Fty', 'Frz'};
|
||||
G.OutputName = {'Agm', 'Ahm'};
|
||||
<span class="org-comment">% Input/Output names</span>
|
||||
G.InputName = {<span class="org-string">'Dw'</span>, <span class="org-string">'Fty'</span>, <span class="org-string">'Frz'</span>};
|
||||
G.OutputName = {<span class="org-string">'Agm'</span>, <span class="org-string">'Ahm'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -202,11 +207,11 @@ G.OutputName = {'Agm', 'Ahm'};
|
||||
We integrate 1 time the output to have the velocity and we substract the absolute velocities to have the relative velocity.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">G = (1/s)*tf([-1, 1])*G;
|
||||
<pre class="src src-matlab"> G = (1<span class="org-type">/</span>s)<span class="org-type">*</span>tf([<span class="org-type">-</span>1, 1])<span class="org-type">*</span>G;
|
||||
|
||||
% Input/Output names
|
||||
G.InputName = {'Dw', 'Fty', 'Frz'};
|
||||
G.OutputName = {'Vm'};
|
||||
<span class="org-comment">% Input/Output names</span>
|
||||
G.InputName = {<span class="org-string">'Dw'</span>, <span class="org-string">'Fty'</span>, <span class="org-string">'Frz'</span>};
|
||||
G.OutputName = {<span class="org-string">'Vm'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -216,19 +221,19 @@ G.OutputName = {'Vm'};
|
||||
<h2 id="Sensitivity-to-Disturbances"><span class="section-number-2">3</span> Sensitivity to Disturbances</h2>
|
||||
<div class="outline-text-2" id="text-Sensitivity-to-Disturbances">
|
||||
<p>
|
||||
<a id="org5636fee"></a>
|
||||
<a id="orgaf4acdc"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The obtained sensitivity to disturbances are shown bellow:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>The transfer function from vertical ground motion \(D_w\) to the vertical relative displacement from the micro-hexapod to the granite \(D\) is shown in Figure <a href="#org7fe296c">2</a></li>
|
||||
<li>The sensitive from vertical forces applied in the Translation stage is shown in Figure <a href="#orgce9715c">3</a></li>
|
||||
<li>The transfer function from vertical ground motion \(D_w\) to the vertical relative displacement from the micro-hexapod to the granite \(D\) is shown in Figure <a href="#org0ff7b6f">2</a></li>
|
||||
<li>The sensitive from vertical forces applied in the Translation stage is shown in Figure <a href="#org6cdcb5f">3</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org7fe296c" class="figure">
|
||||
<div id="org0ff7b6f" class="figure">
|
||||
<p><img src="figs/sensitivity_dist_gm.png" alt="sensitivity_dist_gm.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Sensitivity to Ground Motion (<a href="./figs/sensitivity_dist_gm.png">png</a>, <a href="./figs/sensitivity_dist_gm.pdf">pdf</a>)</p>
|
||||
@@ -236,7 +241,7 @@ The obtained sensitivity to disturbances are shown bellow:
|
||||
|
||||
|
||||
|
||||
<div id="orgce9715c" class="figure">
|
||||
<div id="org6cdcb5f" class="figure">
|
||||
<p><img src="figs/sensitivity_dist_fty.png" alt="sensitivity_dist_fty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Sensitivity to vertical forces applied by the Ty stage (<a href="./figs/sensitivity_dist_fty.png">png</a>, <a href="./figs/sensitivity_dist_fty.pdf">pdf</a>)</p>
|
||||
@@ -244,7 +249,7 @@ The obtained sensitivity to disturbances are shown bellow:
|
||||
|
||||
|
||||
|
||||
<div id="orga3e6fbc" class="figure">
|
||||
<div id="orgef9814b" class="figure">
|
||||
<p><img src="figs/sensitivity_dist_frz.png" alt="sensitivity_dist_frz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Sensitivity to vertical forces applied by the Rz stage (<a href="./figs/sensitivity_dist_frz.png">png</a>, <a href="./figs/sensitivity_dist_frz.pdf">pdf</a>)</p>
|
||||
@@ -256,7 +261,7 @@ The obtained sensitivity to disturbances are shown bellow:
|
||||
<h2 id="Power-Spectral-Density-of-the-effect-of-the-disturbances"><span class="section-number-2">4</span> Power Spectral Density of the effect of the disturbances</h2>
|
||||
<div class="outline-text-2" id="text-Power-Spectral-Density-of-the-effect-of-the-disturbances">
|
||||
<p>
|
||||
<a id="org40a7e4e"></a>
|
||||
<a id="org01aa3d0"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -272,10 +277,10 @@ Also, the Ground Motion is measured.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">gm = load('./mat/psd_gm.mat', 'f', 'psd_gm');
|
||||
rz = load('./mat/pxsp_r.mat', 'f', 'pxsp_r');
|
||||
tyz = load('./mat/pxz_ty_r.mat', 'f', 'pxz_ty_r');
|
||||
tyx = load('./mat/pxe_ty_r.mat', 'f', 'pxe_ty_r');
|
||||
<pre class="src src-matlab"> gm = load(<span class="org-string">'./mat/psd_gm.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'psd_gm'</span>);
|
||||
rz = load(<span class="org-string">'./mat/pxsp_r.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'pxsp_r'</span>);
|
||||
tyz = load(<span class="org-string">'./mat/pxz_ty_r.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'pxz_ty_r'</span>);
|
||||
tyx = load(<span class="org-string">'./mat/pxe_ty_r.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'pxe_ty_r'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -283,11 +288,11 @@ tyx = load('./mat/pxe_ty_r.mat', 'f', 'pxe_ty_r');
|
||||
Because some 50Hz and harmonics were present in the ground motion measurement, we remove these peaks with the following code:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">f0s = [50, 100, 150, 200, 250, 350, 450];
|
||||
for f0 = f0s
|
||||
i = find(gm.f > f0-0.5 & gm.f < f0+0.5);
|
||||
gm.psd_gm(i) = linspace(gm.psd_gm(i(1)), gm.psd_gm(i(end)), length(i));
|
||||
end
|
||||
<pre class="src src-matlab"> f0s = [50, 100, 150, 200, 250, 350, 450];
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">f0</span> = <span class="org-constant">f0s</span>
|
||||
<span class="org-constant">i</span> = find(gm.f <span class="org-type">></span> f0<span class="org-type">-</span>0.5 <span class="org-type">&</span> gm.f <span class="org-type"><</span> f0<span class="org-type">+</span>0.5);
|
||||
gm.psd_gm(<span class="org-constant">i</span>) = linspace(gm.psd_gm(<span class="org-constant">i</span>(1)), gm.psd_gm(<span class="org-constant">i</span>(end)), length(<span class="org-constant">i</span>));
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -295,20 +300,20 @@ end
|
||||
We now compute the relative velocity between the hexapod and the granite due to ground motion.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">gm.psd_rv = gm.psd_gm.*abs(squeeze(freqresp(G('Vm', 'Dw'), gm.f, 'Hz'))).^2;
|
||||
<pre class="src src-matlab"> gm.psd_rv = gm.psd_gm<span class="org-type">.*</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Dw'</span>), gm.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The Power Spectral Density of the relative motion and velocity of the hexapod with respect to the granite are shown in figures <a href="#orgb815ef2">5</a> and <a href="#org4c2c215">6</a>.
|
||||
The Power Spectral Density of the relative motion and velocity of the hexapod with respect to the granite are shown in figures <a href="#orge9a5c6c">5</a> and <a href="#org179679e">6</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The Cumulative Amplitude Spectrum of the relative motion is shown in figure <a href="#orgaf910f1">7</a>.
|
||||
The Cumulative Amplitude Spectrum of the relative motion is shown in figure <a href="#orgdd992d9">7</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgb815ef2" class="figure">
|
||||
<div id="orge9a5c6c" class="figure">
|
||||
<p><img src="figs/dist_effect_relative_velocity.png" alt="dist_effect_relative_velocity.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Amplitude Spectral Density of the relative velocity of the hexapod with respect to the granite due to different sources of perturbation (<a href="./figs/dist_effect_relative_velocity.png">png</a>, <a href="./figs/dist_effect_relative_velocity.pdf">pdf</a>)</p>
|
||||
@@ -316,22 +321,22 @@ The Cumulative Amplitude Spectrum of the relative motion is shown in figure <a h
|
||||
|
||||
|
||||
|
||||
<div id="org4c2c215" class="figure">
|
||||
<div id="org179679e" class="figure">
|
||||
<p><img src="figs/dist_effect_relative_motion.png" alt="dist_effect_relative_motion.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Amplitude Spectral Density of the relative displacement of the hexapod with respect to the granite due to different sources of perturbation (<a href="./figs/dist_effect_relative_motion.png">png</a>, <a href="./figs/dist_effect_relative_motion.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgaf910f1" class="figure">
|
||||
<div id="orgdd992d9" class="figure">
|
||||
<p><img src="figs/dist_effect_relative_motion_cas.png" alt="dist_effect_relative_motion_cas.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Cumulative Amplitude Spectrum of the relative motion due to different sources of perturbation (<a href="./figs/dist_effect_relative_motion_cas.png">png</a>, <a href="./figs/dist_effect_relative_motion_cas.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
<div class="important">
|
||||
<div class="important" id="org211b9ec">
|
||||
<p>
|
||||
From Figure <a href="#orgaf910f1">7</a>, we can see that the translation stage and the rotation stage have almost the same effect on the position error.
|
||||
From Figure <a href="#orgdd992d9">7</a>, we can see that the translation stage and the rotation stage have almost the same effect on the position error.
|
||||
Also, the ground motion has a relatively negligible effect on the position error.
|
||||
</p>
|
||||
|
||||
@@ -343,28 +348,28 @@ Also, the ground motion has a relatively negligible effect on the position error
|
||||
<h2 id="Compute-the-Power-Spectral-Density-of-the-disturbance-force"><span class="section-number-2">5</span> Compute the Power Spectral Density of the disturbance force</h2>
|
||||
<div class="outline-text-2" id="text-Compute-the-Power-Spectral-Density-of-the-disturbance-force">
|
||||
<p>
|
||||
<a id="orgd113ba5"></a>
|
||||
<a id="org5b257d4"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Using the extracted transfer functions from the disturbance force to the relative motion of the hexapod with respect to the granite (section <a href="#org5636fee">3</a>) and using the measured PSD of the relative motion (section <a href="#org40a7e4e">4</a>), we can compute the PSD of the disturbance force.
|
||||
Using the extracted transfer functions from the disturbance force to the relative motion of the hexapod with respect to the granite (section <a href="#orgaf4acdc">3</a>) and using the measured PSD of the relative motion (section <a href="#org01aa3d0">4</a>), we can compute the PSD of the disturbance force.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This is done below.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">rz.psd_f = rz.pxsp_r./abs(squeeze(freqresp(G('Vm', 'Frz'), rz.f, 'Hz'))).^2;
|
||||
tyz.psd_f = tyz.pxz_ty_r./abs(squeeze(freqresp(G('Vm', 'Fty'), tyz.f, 'Hz'))).^2;
|
||||
<pre class="src src-matlab"> rz.psd_f = rz.pxsp_r<span class="org-type">./</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Frz'</span>), rz.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
tyz.psd_f = tyz.pxz_ty_r<span class="org-type">./</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Fty'</span>), tyz.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained amplitude spectral densities of the disturbance forces are shown in Figure <a href="#org45cf35c">8</a>.
|
||||
The obtained amplitude spectral densities of the disturbance forces are shown in Figure <a href="#org7843e80">8</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org45cf35c" class="figure">
|
||||
<div id="org7843e80" class="figure">
|
||||
<p><img src="figs/dist_force_psd.png" alt="dist_force_psd.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Amplitude Spectral Density of the disturbance force (<a href="./figs/dist_force_psd.png">png</a>, <a href="./figs/dist_force_psd.pdf">pdf</a>)</p>
|
||||
@@ -376,7 +381,7 @@ The obtained amplitude spectral densities of the disturbance forces are shown in
|
||||
<h2 id="Noise-Budget"><span class="section-number-2">6</span> Noise Budget</h2>
|
||||
<div class="outline-text-2" id="text-Noise-Budget">
|
||||
<p>
|
||||
<a id="org71da6bd"></a>
|
||||
<a id="org0e0f7ed"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -389,18 +394,18 @@ This is done in order to verify that this is coherent with the measurements.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The power spectral density of the relative motion is computed below and the result is shown in Figure <a href="#orgcacf809">9</a>.
|
||||
We can see that this is exactly the same as the Figure <a href="#org4c2c215">6</a>.
|
||||
The power spectral density of the relative motion is computed below and the result is shown in Figure <a href="#orga081bb2">9</a>.
|
||||
We can see that this is exactly the same as the Figure <a href="#org179679e">6</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">psd_gm_d = gm.psd_gm.*abs(squeeze(freqresp(G('Vm', 'Dw')/s, gm.f, 'Hz'))).^2;
|
||||
psd_ty_d = tyz.psd_f.*abs(squeeze(freqresp(G('Vm', 'Fty')/s, tyz.f, 'Hz'))).^2;
|
||||
psd_rz_d = rz.psd_f.*abs(squeeze(freqresp(G('Vm', 'Frz')/s, rz.f, 'Hz'))).^2;
|
||||
<pre class="src src-matlab"> psd_gm_d = gm.psd_gm<span class="org-type">.*</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Dw'</span>)<span class="org-type">/</span>s, gm.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
psd_ty_d = tyz.psd_f<span class="org-type">.*</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Fty'</span>)<span class="org-type">/</span>s, tyz.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
psd_rz_d = rz.psd_f<span class="org-type">.*</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Frz'</span>)<span class="org-type">/</span>s, rz.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgcacf809" class="figure">
|
||||
<div id="orga081bb2" class="figure">
|
||||
<p><img src="figs/psd_effect_dist_verif.png" alt="psd_effect_dist_verif.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Computed Effect of the disturbances on the relative displacement hexapod/granite (<a href="./figs/psd_effect_dist_verif.png">png</a>, <a href="./figs/psd_effect_dist_verif.pdf">pdf</a>)</p>
|
||||
@@ -416,38 +421,38 @@ The PSD of the disturbance force are now saved for further analysis.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">dist_f = struct();
|
||||
<pre class="src src-matlab"> dist_f = struct();
|
||||
|
||||
dist_f.f = gm.f; % Frequency Vector [Hz]
|
||||
dist_f.f = gm.f; <span class="org-comment">% Frequency Vector [Hz]</span>
|
||||
|
||||
dist_f.psd_gm = gm.psd_gm; % Power Spectral Density of the Ground Motion [m^2/Hz]
|
||||
dist_f.psd_ty = tyz.psd_f; % Power Spectral Density of the force induced by the Ty stage in the Z direction [N^2/Hz]
|
||||
dist_f.psd_rz = rz.psd_f; % Power Spectral Density of the force induced by the Rz stage in the Z direction [N^2/Hz]
|
||||
dist_f.psd_gm = gm.psd_gm; <span class="org-comment">% Power Spectral Density of the Ground Motion [m^2/Hz]</span>
|
||||
dist_f.psd_ty = tyz.psd_f; <span class="org-comment">% Power Spectral Density of the force induced by the Ty stage in the Z direction [N^2/Hz]</span>
|
||||
dist_f.psd_rz = rz.psd_f; <span class="org-comment">% Power Spectral Density of the force induced by the Rz stage in the Z direction [N^2/Hz]</span>
|
||||
|
||||
save('./mat/dist_psd.mat', 'dist_f');
|
||||
save(<span class="org-string">'./mat/dist_psd.mat'</span>, <span class="org-string">'dist_f'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd564a58" class="outline-2">
|
||||
<h2 id="orgd564a58"><span class="section-number-2">8</span> Time Domain Disturbances</h2>
|
||||
<div id="outline-container-orgca3331b" class="outline-2">
|
||||
<h2 id="orgca3331b"><span class="section-number-2">8</span> Time Domain Disturbances</h2>
|
||||
<div class="outline-text-2" id="text-8">
|
||||
<p>
|
||||
Let’s initialize the time domain disturbances and load them.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances();
|
||||
dist = load('nass_disturbances.mat');
|
||||
<pre class="src src-matlab"> initializeDisturbances();
|
||||
dist = load(<span class="org-string">'nass_disturbances.mat'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The time domain disturbance signals are shown in Figure <a href="#org3ff859b">10</a>.
|
||||
The time domain disturbance signals are shown in Figure <a href="#orgc58b665">10</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org3ff859b" class="figure">
|
||||
<div id="orgc58b665" class="figure">
|
||||
<p><img src="figs/disturbances_time_domain.png" alt="disturbances_time_domain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Disturbances in the Time Domain (<a href="./figs/disturbances_time_domain.png">png</a>, <a href="./figs/disturbances_time_domain.pdf">pdf</a>)</p>
|
||||
@@ -455,25 +460,25 @@ The time domain disturbance signals are shown in Figure <a href="#org3ff859b">10
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8212830" class="outline-2">
|
||||
<h2 id="org8212830"><span class="section-number-2">9</span> Time Domain Effect of Disturbances</h2>
|
||||
<div id="outline-container-orgbbaf1e8" class="outline-2">
|
||||
<h2 id="orgbbaf1e8"><span class="section-number-2">9</span> Time Domain Effect of Disturbances</h2>
|
||||
<div class="outline-text-2" id="text-9">
|
||||
</div>
|
||||
<div id="outline-container-org76c96f4" class="outline-3">
|
||||
<h3 id="org76c96f4"><span class="section-number-3">9.1</span> Initialization of the Experiment</h3>
|
||||
<div id="outline-container-org44ce5e0" class="outline-3">
|
||||
<h3 id="org44ce5e0"><span class="section-number-3">9.1</span> Initialization of the Experiment</h3>
|
||||
<div class="outline-text-3" id="text-9-1">
|
||||
<p>
|
||||
We initialize all the stages with the default parameters.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -481,37 +486,37 @@ initializeMirror();
|
||||
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeNanoHexapod('type', 'rigid');
|
||||
initializeSample('mass', 1);
|
||||
<pre class="src src-matlab"> initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences();
|
||||
initializeController('type', 'open-loop');
|
||||
initializeSimscapeConfiguration('gravity', false);
|
||||
initializeLoggingConfiguration('log', 'all');
|
||||
<pre class="src src-matlab"> initializeReferences();
|
||||
initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '2');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'mat/conf_simulink.mat'</span>);
|
||||
<span class="org-matlab-simulink-keyword">set_param</span>(<span class="org-variable-name">conf_simulink</span>, <span class="org-string">'StopTime'</span>, <span class="org-string">'2'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf9c1ad9" class="outline-3">
|
||||
<h3 id="orgf9c1ad9"><span class="section-number-3">9.2</span> Simulations</h3>
|
||||
<div id="outline-container-org6eb944e" class="outline-3">
|
||||
<h3 id="org6eb944e"><span class="section-number-3">9.2</span> Simulations</h3>
|
||||
<div class="outline-text-3" id="text-9-2">
|
||||
<p>
|
||||
No disturbances:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances('enable', false);
|
||||
sim('nass_model');
|
||||
sim_no = simout;
|
||||
<pre class="src src-matlab"> initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
sim_no = simout;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -519,9 +524,9 @@ sim_no = simout;
|
||||
Ground Motion:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances('Fty_x', false, 'Fty_z', false, 'Frz_z', false);
|
||||
sim('nass_model');
|
||||
sim_gm = simout;
|
||||
<pre class="src src-matlab"> initializeDisturbances(<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, <span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, <span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span>);
|
||||
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
sim_gm = simout;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -529,9 +534,9 @@ sim_gm = simout;
|
||||
Translation Stage Vibrations:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances('Dwx', false, 'Dwy', false, 'Dwz', false, 'Frz_z', false);
|
||||
sim('nass_model');
|
||||
sim_ty = simout;
|
||||
<pre class="src src-matlab"> initializeDisturbances(<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, <span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, <span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, <span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span>);
|
||||
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
sim_ty = simout;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -539,23 +544,23 @@ sim_ty = simout;
|
||||
Rotation Stage Vibrations:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances('Dwx', false, 'Dwy', false, 'Dwz', false, 'Fty_x', false, 'Fty_z', false);
|
||||
sim('nass_model');
|
||||
sim_rz = simout;
|
||||
<pre class="src src-matlab"> initializeDisturbances(<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, <span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, <span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, <span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, <span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>);
|
||||
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
sim_rz = simout;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8107e0b" class="outline-3">
|
||||
<h3 id="org8107e0b"><span class="section-number-3">9.3</span> Comparison</h3>
|
||||
<div id="outline-container-org0e0c592" class="outline-3">
|
||||
<h3 id="org0e0c592"><span class="section-number-3">9.3</span> Comparison</h3>
|
||||
<div class="outline-text-3" id="text-9-3">
|
||||
<p>
|
||||
Let’s now compare the effect of those perturbations on the position error of the sample (Figure <a href="#orgee898d4">11</a>)
|
||||
Let’s now compare the effect of those perturbations on the position error of the sample (Figure <a href="#orgfbe77be">11</a>)
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgee898d4" class="figure">
|
||||
<div id="orgfbe77be" class="figure">
|
||||
<p><img src="figs/effect_disturbances_position_error.png" alt="effect_disturbances_position_error.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Effect of Perturbations on the position error (<a href="./figs/effect_disturbances_position_error.png">png</a>, <a href="./figs/effect_disturbances_position_error.pdf">pdf</a>)</p>
|
||||
@@ -566,7 +571,7 @@ Let’s now compare the effect of those perturbations on the position error
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-09-01 mar. 13:48</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
Reference in New Issue
Block a user