Update modal analysis, add .zip files (data and matlab files)
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-07-05 ven. 10:16 -->
|
||||
<!-- 2019-07-05 ven. 11:06 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Modal Analysis - Processing of FRF</title>
|
||||
@@ -280,15 +280,14 @@ for the JavaScript code in this tag.
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgd95e287">1. Importation of measured FRF curves</a></li>
|
||||
<li><a href="#org0649187">2. From accelerometer DOFs to solid body DOFs - Mathematics</a></li>
|
||||
<li><a href="#orgbfc68dd">3. What reference frame to choose?</a></li>
|
||||
<li><a href="#org5d9a38b">4. From accelerometer DOFs to solid body DOFs - Matlab Implementation</a></li>
|
||||
<li><a href="#orgbb81ded">5. Analysis of some FRF in the global coordinates</a></li>
|
||||
<li><a href="#orgb0c1df8">6. <span class="todo TODO">TODO</span> How to compare the relative motion of solid bodies</a></li>
|
||||
<li><a href="#org9c93ccf">7. Relative Motion in the global coordinates</a></li>
|
||||
<li><a href="#org7803dae">8. <span class="todo TODO">TODO</span> Compare original FRF measurements to transformed FRF in the global frame</a></li>
|
||||
<li><a href="#org45fdd6c">9. Verify that we find the original FRF from the FRF in the global coordinates</a></li>
|
||||
<li><a href="#org2cad1ec">1. Importation of measured FRF curves</a></li>
|
||||
<li><a href="#orga573b16">2. From accelerometer DOFs to solid body DOFs - Mathematics</a></li>
|
||||
<li><a href="#org93fc25e">3. What reference frame to choose?</a></li>
|
||||
<li><a href="#org15d9437">4. From accelerometer DOFs to solid body DOFs - Matlab Implementation</a></li>
|
||||
<li><a href="#org1d2db9a">5. Analysis of some FRF in the global coordinates</a></li>
|
||||
<li><a href="#org26b8f8f">6. Comparison of the relative motion of solid bodies</a></li>
|
||||
<li><a href="#org1f7f9fb">7. Verify that we find the original FRF from the FRF in the global coordinates</a></li>
|
||||
<li><a href="#org2cd1928">8. Saving of the FRF expressed in the global coordinates</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -322,8 +321,15 @@ Thus, we are only interested in \(6 \times 6 = 36\) degrees of freedom.
|
||||
We here process the FRF matrix to go from the 69 measured DOFs to the wanted 36 DOFs.
|
||||
</p>
|
||||
|
||||
<div id="outline-container-orgd95e287" class="outline-2">
|
||||
<h2 id="orgd95e287"><span class="section-number-2">1</span> Importation of measured FRF curves</h2>
|
||||
<div class="note">
|
||||
<p>
|
||||
All the files (data and Matlab scripts) are accessible <a href="data/frf_processing.zip">here</a>.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2cad1ec" class="outline-2">
|
||||
<h2 id="org2cad1ec"><span class="section-number-2">1</span> Importation of measured FRF curves</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
We load the measured FRF and Coherence matrices.
|
||||
@@ -331,18 +337,18 @@ We also load the geometric parameters of the station: solid bodies considered an
|
||||
</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/frf_coh_matrices.mat', 'FRFs', 'COHs', 'freqs'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<pre class="src src-matlab">load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/frf_coh_matrices.mat', 'FRFs', 'COHs', 'freqs'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/geometry.mat', 'solids', 'solid_names', 'acc_pos'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0649187" class="outline-2">
|
||||
<h2 id="org0649187"><span class="section-number-2">2</span> From accelerometer DOFs to solid body DOFs - Mathematics</h2>
|
||||
<div id="outline-container-orga573b16" class="outline-2">
|
||||
<h2 id="orga573b16"><span class="section-number-2">2</span> From accelerometer DOFs to solid body DOFs - Mathematics</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
Let's consider the schematic shown on figure <a href="#org0345801">1</a> where we are measuring the motion of a (supposed) solid body at 4 distinct points in x-y-z.
|
||||
Let's consider the schematic shown on figure <a href="#org9f883a5">1</a> where we are measuring the motion of a (supposed) solid body at 4 distinct points in x-y-z.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -350,14 +356,14 @@ The goal here is to link these \(4 \times 3 = 12\) measurements to the 6 DOFs of
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org0345801" class="figure">
|
||||
<div id="org9f883a5" class="figure">
|
||||
<p><img src="figs/local_to_global_coordinates.png" alt="local_to_global_coordinates.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Schematic of the measured motions of a solid body</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
From the figure <a href="#org0345801">1</a>, we can write:
|
||||
From the figure <a href="#org9f883a5">1</a>, we can write:
|
||||
</p>
|
||||
\begin{align*}
|
||||
\vec{v}_1 &= \vec{v} + \Omega \vec{p}_1\\
|
||||
@@ -426,8 +432,8 @@ This inversion is equivalent to resolving a mean square problem.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbfc68dd" class="outline-2">
|
||||
<h2 id="orgbfc68dd"><span class="section-number-2">3</span> What reference frame to choose?</h2>
|
||||
<div id="outline-container-org93fc25e" class="outline-2">
|
||||
<h2 id="org93fc25e"><span class="section-number-2">3</span> What reference frame to choose?</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
The question we wish here to answer is how to choose the reference frame \(\{O\}\) in which the DOFs of the solid bodies are defined.
|
||||
@@ -447,7 +453,7 @@ The possibles choices are:
|
||||
<li><b>Base located at the joint position</b>: this is where we want to see the motion and estimate stiffness</li>
|
||||
</ul>
|
||||
|
||||
<table id="org6509a46" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="orgd8f2173" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 1:</span> Advantages and disadvantages for the choice of reference frame</caption>
|
||||
|
||||
<colgroup>
|
||||
@@ -491,8 +497,8 @@ As the easiest choice is to choose a common frame, we start with that solution.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5d9a38b" class="outline-2">
|
||||
<h2 id="org5d9a38b"><span class="section-number-2">4</span> From accelerometer DOFs to solid body DOFs - Matlab Implementation</h2>
|
||||
<div id="outline-container-org15d9437" class="outline-2">
|
||||
<h2 id="org15d9437"><span class="section-number-2">4</span> From accelerometer DOFs to solid body DOFs - Matlab Implementation</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
First, we initialize a new FRF matrix <code>FRFs_O</code> which is an \(n \times p \times q\) with:
|
||||
@@ -503,6 +509,29 @@ First, we initialize a new FRF matrix <code>FRFs_O</code> which is an \(n \times
|
||||
<li>\(q\) is the number of frequency points \(\omega_i\)</li>
|
||||
</ul>
|
||||
|
||||
<div class="important">
|
||||
<p>
|
||||
For each frequency point \(\omega_i\), the FRF matrix <code>FRFs_O</code> is a \(n\times p\) matrix:
|
||||
</p>
|
||||
\begin{equation}
|
||||
\text{FRF}_O(\omega_i) = \begin{bmatrix}
|
||||
\frac{D_{1,T_x}}{F_x}(\omega_i) & \frac{D_{1,T_x}}{F_y}(\omega_i) & \frac{D_{1,T_x}}{F_z}(\omega_i) \\
|
||||
\frac{D_{1,T_y}}{F_x}(\omega_i) & \frac{D_{1,T_y}}{F_y}(\omega_i) & \frac{D_{1,T_y}}{F_z}(\omega_i) \\
|
||||
\frac{D_{1,T_z}}{F_x}(\omega_i) & \frac{D_{1,T_z}}{F_y}(\omega_i) & \frac{D_{1,T_z}}{F_z}(\omega_i) \\
|
||||
\frac{D_{1,R_x}}{F_x}(\omega_i) & \frac{D_{1,R_x}}{F_y}(\omega_i) & \frac{D_{1,R_x}}{F_z}(\omega_i) \\
|
||||
\frac{D_{1,R_y}}{F_x}(\omega_i) & \frac{D_{1,R_y}}{F_y}(\omega_i) & \frac{D_{1,R_y}}{F_z}(\omega_i) \\
|
||||
\frac{D_{1,R_z}}{F_x}(\omega_i) & \frac{D_{1,R_z}}{F_y}(\omega_i) & \frac{D_{1,R_z}}{F_z}(\omega_i) \\
|
||||
\frac{D_{2,T_x}}{F_x}(\omega_i) & \frac{D_{2,T_x}}{F_y}(\omega_i) & \frac{D_{2,T_x}}{F_z}(\omega_i) \\
|
||||
\vdots & \vdots & \vdots \\
|
||||
\frac{D_{6,R_z}}{F_x}(\omega_i) & \frac{D_{6,R_z}}{F_y}(\omega_i) & \frac{D_{6,R_z}}{F_z}(\omega_i)
|
||||
\end{bmatrix}
|
||||
\end{equation}
|
||||
<p>
|
||||
where 1, 2, …, 6 corresponds to the 6 solid bodies.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">FRFs_O = zeros<span class="org-rainbow-delimiters-depth-1">(</span>length<span class="org-rainbow-delimiters-depth-2">(</span>solid_names<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span>, <span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">801</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
@@ -534,26 +563,26 @@ Then, as we know the positions of the accelerometers on each solid body, and we
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbb81ded" class="outline-2">
|
||||
<h2 id="orgbb81ded"><span class="section-number-2">5</span> Analysis of some FRF in the global coordinates</h2>
|
||||
<div id="outline-container-org1d2db9a" class="outline-2">
|
||||
<h2 id="org1d2db9a"><span class="section-number-2">5</span> Analysis of some FRF in the global coordinates</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
First, we can compare the motions of the 6 solid bodies in one direction (figure <a href="#orgc2878f8">2</a>)
|
||||
First, we can compare the motions of the 6 solid bodies in one direction (figure <a href="#org1dcf9e5">2</a>)
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We can also compare all the DOFs of one solid body (figure <a href="#orgfd0203f">3</a>).
|
||||
We can also compare all the DOFs of one solid body (figure <a href="#org4750235">3</a>).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgc2878f8" class="figure">
|
||||
<div id="org1dcf9e5" class="figure">
|
||||
<p><img src="figs/frf_all_bodies_one_direction.png" alt="frf_all_bodies_one_direction.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>FRFs of all the 6 solid bodies in one direction</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgfd0203f" class="figure">
|
||||
<div id="org4750235" class="figure">
|
||||
<p><img src="figs/frf_one_body_all_directions.png" alt="frf_one_body_all_directions.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>FRFs of one solid body in all its DOFs</p>
|
||||
@@ -561,136 +590,48 @@ We can also compare all the DOFs of one solid body (figure <a href="#orgfd0203f"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb0c1df8" class="outline-2">
|
||||
<h2 id="orgb0c1df8"><span class="section-number-2">6</span> <span class="todo TODO">TODO</span> How to compare the relative motion of solid bodies</h2>
|
||||
<div id="outline-container-org26b8f8f" class="outline-2">
|
||||
<h2 id="org26b8f8f"><span class="section-number-2">6</span> Comparison of the relative motion of solid bodies</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<p>
|
||||
We have some of elements of the full FRF matrix:
|
||||
\[ \frac{D_{1x}}{F_x},\ \frac{D_{1y}}{F_x},\ \frac{D_{1z}}{F_x},\ \frac{D_{2x}}{F_x},\ \dots \]
|
||||
Now that the motion of all the solid bodies are expressed in the same frame, we should be able to <b>compare them</b>.
|
||||
This can be used to determine what joints direction between two solid bodies is stiff enough that we can fix this DoF.
|
||||
This could help reduce the order of the model and simplify the extraction of the model parameters from the measurements.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
\[ \frac{D_{1x}}{D_{2x}} = \frac{\frac{D_{1x}}{F_x}}{\frac{D_{2x}}{F_x}} \]
|
||||
Then, if \(\left| \frac{D_{1x}}{D_{2x}} \right| \approx 1\) in all the frequency band of interest, we can block the \(x\) motion between the solids 1 and 2.
|
||||
We decide to plot the "normalized relative motion" between solid bodies \(i\) and \(j\):
|
||||
\[ 0 < \Delta_{ij, x} = \frac{\left| D_{i,x} - D_{j,x} \right|}{|D_{i,x}| + |D_{j,x}|} < 1 \]
|
||||
</p>
|
||||
|
||||
<p>
|
||||
\[ \frac{D_{2x} - D_{1x}}{D_{1x} + D_{2x}} = \frac{\frac{D_{2x}}{F_x} - \frac{D_{1x}}{F_x}}{\frac{D_{1x}}{F_x} + \frac{D_{2x}}{F_x}} \]
|
||||
Then, if \(\Delta_{ij,x} \ll 0\) in the frequency band of interest, we have that \(D_{ix} \approx D_{jx}\) and we can neglect that DOF between the two solid bodies \(i\) and \(j\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Then if \(\left| \frac{D_{2x} - D_{1x}}{D_{1x} + D_{2x}} \right| \ll 1\) in all the frequency band of interest, we can block the \(x\) motion between the solids 1 and 2.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9c93ccf" class="outline-2">
|
||||
<h2 id="org9c93ccf"><span class="section-number-2">7</span> Relative Motion in the global coordinates</h2>
|
||||
<div class="outline-text-2" id="text-7">
|
||||
<p>
|
||||
Below we plot the normalized relative motion between each stage:
|
||||
\[ 0 < \frac{\left| D_{ix} - D_{jx} \right|}{|D_{ix}| + |D_{jx}|} < 1 \]
|
||||
This normalized relative motion is shown on figure <a href="#org74b537d">4</a> for all the directions and for all the adjacent pair of solid bodies.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">DOFs = <span class="org-rainbow-delimiters-depth-1">{</span><span class="org-string">'$T_x$', '$T_y$', '$T_z$', '</span>$<span class="org-type">\</span>theta_x$', '$<span class="org-type">\</span>theta_y$', '$<span class="org-type">\</span>theta_z$'<span class="org-rainbow-delimiters-depth-1">}</span>
|
||||
|
||||
dirs_i = <span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">6</span>;
|
||||
exc_dir = <span class="org-highlight-numbers-number">1</span>;
|
||||
|
||||
<span class="org-type">figure</span>;
|
||||
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">2</span></span><span class="org-constant">:</span><span class="org-constant"><span class="org-highlight-numbers-number">6</span></span>
|
||||
subaxis<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold on;
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">dir_i</span> = <span class="org-constant">dirs_i</span>
|
||||
H = <span class="org-rainbow-delimiters-depth-1">(</span>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>FRFs_O<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span>dir_i, exc_dir, <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>squeeze<span class="org-rainbow-delimiters-depth-2">(</span>FRFs_O<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span>dir_i, exc_dir, <span class="org-type">:</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><span class="org-type">./</span><span class="org-rainbow-delimiters-depth-1">(</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>squeeze<span class="org-rainbow-delimiters-depth-3">(</span>FRFs_O<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span>dir_i, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">+</span>abs<span class="org-rainbow-delimiters-depth-2">(</span>squeeze<span class="org-rainbow-delimiters-depth-3">(</span>FRFs_O<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span>dir_i, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>H<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-keyword">end</span>
|
||||
hold off;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XScale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'YScale', 'lin'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
xlim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">200</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>; ylim<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">0</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>;
|
||||
<span class="org-comment">% xlabel('Frequency [Hz]'); ylabel('Relative Motion');</span>
|
||||
title<span class="org-rainbow-delimiters-depth-1">(</span>sprintf<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'Normalized motion %s - %s'</span>, solid_names{<span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span>}, solid_names{<span class="org-constant">i</span>}));
|
||||
<span class="org-keyword">if</span> <span class="org-constant">i</span> <span class="org-type">></span> <span class="org-highlight-numbers-number">4</span>
|
||||
xlabel<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
<span class="org-keyword">else</span>
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-3">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,<span class="org-rainbow-delimiters-depth-4">[]</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
<span class="org-keyword">end</span>
|
||||
<span class="org-keyword">end</span>
|
||||
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-3">(</span></span><span class="org-constant">dirs_i</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-3">)</span></span>
|
||||
legend_names<span class="org-rainbow-delimiters-depth-3">{</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-3">}</span> = DOFs<span class="org-rainbow-delimiters-depth-3">{</span>dirs_i<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">}</span>;
|
||||
<span class="org-keyword">end</span>
|
||||
lgd = legend<span class="org-rainbow-delimiters-depth-3">(</span>legend_names<span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
|
||||
hL = subplot<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
poshL = <span class="org-type">get</span><span class="org-rainbow-delimiters-depth-3">(</span><span class="org-variable-name">hL</span>,<span class="org-string">'position'</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-3">(</span><span class="org-variable-name">lgd</span>,<span class="org-string">'position'</span>, poshL<span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
<span class="org-type">axis</span><span class="org-rainbow-delimiters-depth-3">(</span>hL, <span class="org-string">'off'</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org1cd90a2" class="figure">
|
||||
<div id="org74b537d" class="figure">
|
||||
<p><img src="figs/relative_motion_comparison.png" alt="relative_motion_comparison.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Relative motion between each stage</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7803dae" class="outline-2">
|
||||
<h2 id="org7803dae"><span class="section-number-2">8</span> <span class="todo TODO">TODO</span> Compare original FRF measurements to transformed FRF in the global frame</h2>
|
||||
<div class="outline-text-2" id="text-8">
|
||||
<div class="warning">
|
||||
<p>
|
||||
We wish here to compare the FRF in order to verify if there is any mistake.
|
||||
Can we really compare the motion of two solid bodies from Frequency Response Functions that clearly depends on the excitation point and direction?
|
||||
The relative motion of two solid bodies may be negligible when exciting the structure at on point and but at another point.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">dir_names = <span class="org-rainbow-delimiters-depth-1">{</span><span class="org-string">'X', 'Y', 'Z', '</span>$<span class="org-type">\</span>theta_X$', '$<span class="org-type">\</span>theta_Y$', '$<span class="org-type">\</span>theta_Z$'<span class="org-rainbow-delimiters-depth-1">}</span>;
|
||||
|
||||
solid_i = <span class="org-highlight-numbers-number">6</span>;
|
||||
acc_dir_O = <span class="org-highlight-numbers-number">1</span>;
|
||||
acc_dir = <span class="org-highlight-numbers-number">1</span>;
|
||||
exc_dir = <span class="org-highlight-numbers-number">1</span>;
|
||||
|
||||
<span class="org-type">figure</span>;
|
||||
|
||||
ax1 = subplot<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold on;
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant">solids.</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">solid_names</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-2">{</span></span><span class="org-constant">solid_i</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-2">}</span></span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>squeeze<span class="org-rainbow-delimiters-depth-3">(</span>FRFs<span class="org-rainbow-delimiters-depth-4">(</span>acc_dir<span class="org-type">+</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-5">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-5">)</span>, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-keyword">end</span>
|
||||
plot<span class="org-rainbow-delimiters-depth-1">(</span>freqs, abs<span class="org-rainbow-delimiters-depth-2">(</span>squeeze<span class="org-rainbow-delimiters-depth-3">(</span>FRFs_O<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-rainbow-delimiters-depth-5">(</span>solid_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-5">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span>acc_dir_O, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-string">'-k'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
hold off;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XScale', 'log'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">)</span></span><span class="org-string">; set</span><span class="org-string"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-string">gca, 'YScale', 'log'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-1">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,<span class="org-rainbow-delimiters-depth-2">[]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
ylabel<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'Amplitude'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
title<span class="org-rainbow-delimiters-depth-1">(</span>sprintf<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'%s motion measured by the Acc. vs %s motion computed in the common frame - %s'</span>, dir_names{acc_dir}, dir_names{acc_dir_O}, solid_names{solid_i}));
|
||||
|
||||
ax2 = subplot<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-highlight-numbers-number">2</span>, <span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
hold on;
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant">solids.</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-3">(</span></span><span class="org-constant">solid_names</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-4">{</span></span><span class="org-constant">solid_i</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-4">}</span></span><span class="org-constant"><span class="org-rainbow-delimiters-depth-3">)</span></span>
|
||||
plot<span class="org-rainbow-delimiters-depth-3">(</span>freqs, mod<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">180</span><span class="org-type">+</span><span class="org-highlight-numbers-number">180</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>phase<span class="org-rainbow-delimiters-depth-5">(</span>squeeze<span class="org-rainbow-delimiters-depth-6">(</span>FRFs<span class="org-rainbow-delimiters-depth-7">(</span>acc_dir<span class="org-type">+</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-8">(</span><span class="org-constant">i</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-8">)</span>, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span>, <span class="org-highlight-numbers-number">360</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
<span class="org-keyword">end</span>
|
||||
plot<span class="org-rainbow-delimiters-depth-3">(</span>freqs, mod<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">180</span><span class="org-type">+</span><span class="org-highlight-numbers-number">180</span><span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>phase<span class="org-rainbow-delimiters-depth-5">(</span>squeeze<span class="org-rainbow-delimiters-depth-6">(</span>FRFs_O<span class="org-rainbow-delimiters-depth-7">(</span><span class="org-rainbow-delimiters-depth-8">(</span>solid_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-8">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span>acc_dir_O, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-7">)</span><span class="org-rainbow-delimiters-depth-6">)</span><span class="org-rainbow-delimiters-depth-5">)</span>, <span class="org-highlight-numbers-number">360</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span>, <span class="org-string">'-k'</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
hold off;
|
||||
ylim<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">[</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span>, <span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-4">]</span><span class="org-rainbow-delimiters-depth-3">)</span>; yticks<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-type">-</span><span class="org-highlight-numbers-number">180</span><span class="org-type">:</span><span class="org-highlight-numbers-number">90</span><span class="org-type">:</span><span class="org-highlight-numbers-number">180</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
xlabel<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-string">'Frequency </span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">[</span></span><span class="org-string">Hz</span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">]</span></span><span class="org-string">'</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">)</span></span><span class="org-string">; ylabel</span><span class="org-string"><span class="org-rainbow-delimiters-depth-3">(</span></span><span class="org-string">'Phase </span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">[</span></span><span class="org-string">deg</span><span class="org-string"><span class="org-rainbow-delimiters-depth-4">]</span></span><span class="org-string">'</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
<span class="org-type">set</span><span class="org-rainbow-delimiters-depth-3">(</span><span class="org-variable-name">gca</span>, <span class="org-string">'xscale', 'log'</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
|
||||
linkaxes<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">[</span>ax1,ax2<span class="org-rainbow-delimiters-depth-4">]</span>,<span class="org-string">'x'</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
xlim<span class="org-rainbow-delimiters-depth-3">(</span><span class="org-rainbow-delimiters-depth-4">[</span><span class="org-highlight-numbers-number">1</span>, <span class="org-highlight-numbers-number">200</span><span class="org-rainbow-delimiters-depth-4">]</span><span class="org-rainbow-delimiters-depth-3">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org45fdd6c" class="outline-2">
|
||||
<h2 id="org45fdd6c"><span class="section-number-2">9</span> Verify that we find the original FRF from the FRF in the global coordinates</h2>
|
||||
<div class="outline-text-2" id="text-9">
|
||||
<div id="outline-container-org1f7f9fb" class="outline-2">
|
||||
<h2 id="org1f7f9fb"><span class="section-number-2">7</span> Verify that we find the original FRF from the FRF in the global coordinates</h2>
|
||||
<div class="outline-text-2" id="text-7">
|
||||
<p>
|
||||
We have computed the Frequency Response Functions Matrix <code>FRFs_O</code> representing the response of the 6 solid bodies in their 6 DOFs.
|
||||
</p>
|
||||
@@ -737,24 +678,24 @@ We then compare the original FRF measured for each accelerometer with the recove
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The FRF for the 4 accelerometers on the Hexapod are compared on figure <a href="#orgdf7e1b1">5</a>.
|
||||
The FRF for the 4 accelerometers on the Hexapod are compared on figure <a href="#orgacee11c">5</a>.
|
||||
All the FRF are matching very well in all the frequency range displayed.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The FRF for accelerometers located on the translation stage are compared on figure <a href="#orgc07a0c4">6</a>.
|
||||
The FRF for accelerometers located on the translation stage are compared on figure <a href="#orgeff91f2">6</a>.
|
||||
The FRF are matching well until 100Hz.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgdf7e1b1" class="figure">
|
||||
<div id="orgacee11c" class="figure">
|
||||
<p><img src="figs/recovered_frf_comparison_hexa.png" alt="recovered_frf_comparison_hexa.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Comparison of the original FRF with the recovered ones - Hexapod</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgc07a0c4" class="figure">
|
||||
<div id="orgeff91f2" class="figure">
|
||||
<p><img src="figs/recovered_frf_comparison_ty.png" alt="recovered_frf_comparison_ty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Comparison of the original FRF with the recovered ones - Ty</p>
|
||||
@@ -771,13 +712,23 @@ This confirms the fact that the stages are indeed behaving as a solid body in th
|
||||
This valid the fact that a multi-body model can be used to represent the dynamics of the micro-station.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2cd1928" class="outline-2">
|
||||
<h2 id="org2cd1928"><span class="section-number-2">8</span> Saving of the FRF expressed in the global coordinates</h2>
|
||||
<div class="outline-text-2" id="text-8">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">save<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string">'mat/frf_o.mat', 'FRFs_O'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2019-07-05 ven. 10:16</p>
|
||||
<p class="date">Created: 2019-07-05 ven. 11:06</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