Add many data analysis. Clean modal_extraction file
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. 11:49 -->
|
||||
<!-- 2019-07-10 mer. 15:36 -->
|
||||
<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,14 +280,26 @@ for the JavaScript code in this tag.
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org90f1199">1. Importation of measured FRF curves</a></li>
|
||||
<li><a href="#orgad5a590">2. From accelerometer DOFs to solid body DOFs - Mathematics</a></li>
|
||||
<li><a href="#org2cb14bf">3. What reference frame to choose?</a></li>
|
||||
<li><a href="#org6dc37dd">4. From accelerometer DOFs to solid body DOFs - Matlab Implementation</a></li>
|
||||
<li><a href="#org8ac4b88">5. Analysis of some FRF in the global coordinates</a></li>
|
||||
<li><a href="#orgaeb8895">6. Comparison of the relative motion of solid bodies</a></li>
|
||||
<li><a href="#orgfd3858f">7. Verify that we find the original FRF from the FRF in the global coordinates</a></li>
|
||||
<li><a href="#org98351d2">8. Saving of the FRF expressed in the global coordinates</a></li>
|
||||
<li><a href="#org8cc195e">1. Importation of measured FRF curves</a></li>
|
||||
<li><a href="#orge008f26">2. From accelerometer DOFs to solid body DOFs - Mathematics</a></li>
|
||||
<li><a href="#org542a5f3">3. What reference frame to choose?</a></li>
|
||||
<li><a href="#org8595ef7">4. FRF expressed in a common frame</a>
|
||||
<ul>
|
||||
<li><a href="#org23c660e">4.1. From accelerometer DOFs to solid body DOFs - Matlab Implementation</a></li>
|
||||
<li><a href="#orge7f0885">4.2. Analysis of some FRF in the global coordinates</a></li>
|
||||
<li><a href="#orgee41f84">4.3. Comparison of the relative motion of solid bodies</a></li>
|
||||
<li><a href="#org2a5f7b7">4.4. Verify that we find the original FRF from the FRF in the global coordinates</a></li>
|
||||
<li><a href="#org9323f41">4.5. Saving of the FRF expressed in the global coordinates</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org9a552f4">5. FRF expressed in a frame centered at the CoM of each solid body</a>
|
||||
<ul>
|
||||
<li><a href="#org5580afc">5.1. Center of Mass of each solid body</a></li>
|
||||
<li><a href="#org1128440">5.2. From accelerometer DOFs to solid body DOFs - Expressed at the CoM</a></li>
|
||||
<li><a href="#org0efe1de">5.3. Analysis of some FRF</a></li>
|
||||
<li><a href="#org1c6f529">5.4. Save the FRF</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -328,8 +340,8 @@ All the files (data and Matlab scripts) are accessible <a href="data/frf_process
|
||||
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org90f1199" class="outline-2">
|
||||
<h2 id="org90f1199"><span class="section-number-2">1</span> Importation of measured FRF curves</h2>
|
||||
<div id="outline-container-org8cc195e" class="outline-2">
|
||||
<h2 id="org8cc195e"><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.
|
||||
@@ -344,11 +356,11 @@ load<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-string
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgad5a590" class="outline-2">
|
||||
<h2 id="orgad5a590"><span class="section-number-2">2</span> From accelerometer DOFs to solid body DOFs - Mathematics</h2>
|
||||
<div id="outline-container-orge008f26" class="outline-2">
|
||||
<h2 id="orge008f26"><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="#org2e4472b">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="#org79eabe9">1</a> where we are measuring the motion of a (supposed) solid body at 4 distinct points in x-y-z.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -356,35 +368,35 @@ The goal here is to link these \(4 \times 3 = 12\) measurements to the 6 DOFs of
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org2e4472b" class="figure">
|
||||
<div id="org79eabe9" 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="#org2e4472b">1</a>, we can write:
|
||||
We consider the motion of the rigid body defined by its displacement \(\delta p\) and rotation \(\vec{\Omega}\) with respect to the reference frame \(\{O\}\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
From the figure <a href="#org79eabe9">1</a>, we can write:
|
||||
</p>
|
||||
\begin{align*}
|
||||
\vec{v}_1 &= \vec{v} + \Omega \vec{p}_1\\
|
||||
\vec{v}_2 &= \vec{v} + \Omega \vec{p}_2\\
|
||||
\vec{v}_3 &= \vec{v} + \Omega \vec{p}_3\\
|
||||
\vec{v}_4 &= \vec{v} + \Omega \vec{p}_4
|
||||
\delta p_1 &= \delta p + \delta\Omega p_1\\
|
||||
\delta p_2 &= \delta p + \delta\Omega p_2\\
|
||||
\delta p_3 &= \delta p + \delta\Omega p_3\\
|
||||
\delta p_4 &= \delta p + \delta\Omega p_4
|
||||
\end{align*}
|
||||
|
||||
<p>
|
||||
With
|
||||
</p>
|
||||
\begin{equation}
|
||||
\Omega = \begin{bmatrix}
|
||||
0 & -\Omega_z & \Omega_y \\
|
||||
\Omega_z & 0 & -\Omega_x \\
|
||||
-\Omega_y & \Omega_x & 0
|
||||
\delta\Omega = \begin{bmatrix}
|
||||
0 & -\delta\Omega_z & \delta\Omega_y \\
|
||||
\delta\Omega_z & 0 & -\delta\Omega_x \\
|
||||
-\delta\Omega_y & \delta\Omega_x & 0
|
||||
\end{bmatrix}
|
||||
\end{equation}
|
||||
<p>
|
||||
\(\vec{v}\) and \(\Omega\) represent to velocity and rotation of the solid expressed in the frame \(\{O\}\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We can rearrange the equations in a matrix form:
|
||||
@@ -400,9 +412,9 @@ We can rearrange the equations in a matrix form:
|
||||
0 & 1 & 0 & -p_{4z} & 0 & p_{4x} \\
|
||||
0 & 0 & 1 & p_{4y} & -p_{4x} & 0
|
||||
\end{array}\right] \begin{bmatrix}
|
||||
v_x \\ v_y \\ v_z \\ \hline \Omega_x \\ \Omega_y \\ \Omega_z
|
||||
\delta p_x \\ \delta p_y \\ \delta p_z \\ \hline \delta\Omega_x \\ \delta\Omega_y \\ \delta\Omega_z
|
||||
\end{bmatrix} = \begin{bmatrix}
|
||||
v_{1x} \\ v_{1y} \\ v_{1z} \\\hline \vdots \\\hline v_{4x} \\ v_{4y} \\ v_{4z}
|
||||
\delta p_{1x} \\ \delta p_{1y} \\ \delta p_{1z} \\\hline \vdots \\\hline \delta p_{4x} \\ \delta p_{4y} \\ \delta p_{4z}
|
||||
\end{bmatrix}
|
||||
\end{equation}
|
||||
|
||||
@@ -411,7 +423,7 @@ and then we obtain the velocity and rotation of the solid in the wanted frame \(
|
||||
</p>
|
||||
\begin{equation}
|
||||
\begin{bmatrix}
|
||||
v_x \\ v_y \\ v_z \\ \hline \Omega_x \\ \Omega_y \\ \Omega_z
|
||||
\delta p_x \\ \delta p_y \\ \delta p_z \\ \hline \delta\Omega_x \\ \delta\Omega_y \\ \delta\Omega_z
|
||||
\end{bmatrix} =
|
||||
\left[\begin{array}{ccc|ccc}
|
||||
1 & 0 & 0 & 0 & p_{1z} & -p_{1y} \\
|
||||
@@ -422,28 +434,27 @@ and then we obtain the velocity and rotation of the solid in the wanted frame \(
|
||||
0 & 1 & 0 & -p_{4z} & 0 & p_{4x} \\
|
||||
0 & 0 & 1 & p_{4y} & -p_{4x} & 0
|
||||
\end{array}\right]^{-1} \begin{bmatrix}
|
||||
v_{1x} \\ v_{1y} \\ v_{1z} \\\hline \vdots \\\hline v_{4x} \\ v_{4y} \\ v_{4z}
|
||||
\end{bmatrix}
|
||||
\delta p_{1x} \\ \delta p_{1y} \\ \delta p_{1z} \\\hline \vdots \\\hline \delta p_{4x} \\ \delta p_{4y} \\ \delta p_{4z}
|
||||
\end{bmatrix} \label{eq:determine_global_disp}
|
||||
\end{equation}
|
||||
|
||||
<div class="important">
|
||||
<p>
|
||||
This inversion is equivalent to resolving a mean square problem.
|
||||
Using equation \eqref{eq:determine_global_disp}, we can determine the motion of the solid body expressed in a chosen frame \(\{O\}\) using the accelerometers attached to it.
|
||||
The inversion is equivalent to resolving a mean square problem.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2cb14bf" class="outline-2">
|
||||
<h2 id="org2cb14bf"><span class="section-number-2">3</span> What reference frame to choose?</h2>
|
||||
<div id="outline-container-org542a5f3" class="outline-2">
|
||||
<h2 id="org542a5f3"><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.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The goal is to compare the motion of each solid body to see which relative DOFs between solid bodies can be neglected, that is to say, which joint between solid bodies can be regarded as perfect (and this in all the frequency range of interest).
|
||||
Ideally, we would like to have the same number of degrees of freedom than the number of identified modes.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The possibles choices are:
|
||||
</p>
|
||||
@@ -453,7 +464,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="org8ace9f4" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="orgc4f6c97" 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>
|
||||
@@ -492,14 +503,27 @@ The possibles choices are:
|
||||
</table>
|
||||
|
||||
<p>
|
||||
As the easiest choice is to choose a common frame, we start with that solution.
|
||||
The choice of the frame depends of what we want to do with the data.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
One of the goals is to compare the motion of each solid body to see which relative DOFs between solid bodies can be neglected, that is to say, which joint between solid bodies can be regarded as perfect (and this in all the frequency range of interest).
|
||||
Ideally, we would like to have the same number of degrees of freedom than the number of identified modes.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In the next sections, we will express the FRF matrix in the different frames.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6dc37dd" class="outline-2">
|
||||
<h2 id="org6dc37dd"><span class="section-number-2">4</span> From accelerometer DOFs to solid body DOFs - Matlab Implementation</h2>
|
||||
<div id="outline-container-org8595ef7" class="outline-2">
|
||||
<h2 id="org8595ef7"><span class="section-number-2">4</span> FRF expressed in a common frame</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
</div>
|
||||
<div id="outline-container-org23c660e" class="outline-3">
|
||||
<h3 id="org23c660e"><span class="section-number-3">4.1</span> From accelerometer DOFs to solid body DOFs - Matlab Implementation</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
First, we initialize a new FRF matrix <code>FRFs_O</code> which is an \(n \times p \times q\) with:
|
||||
</p>
|
||||
@@ -514,7 +538,7 @@ First, we initialize a new FRF matrix <code>FRFs_O</code> which is an \(n \times
|
||||
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}
|
||||
\text{FRF}_\text{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) \\
|
||||
@@ -527,21 +551,19 @@ For each frequency point \(\omega_i\), the FRF matrix <code>FRFs_O</code> is a \
|
||||
\end{bmatrix}
|
||||
\end{equation}
|
||||
<p>
|
||||
where 1, 2, …, 6 corresponds to the 6 solid bodies.
|
||||
where \(D_i\) corresponds to the solid body number i.
|
||||
</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>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Then, as we know the positions of the accelerometers on each solid body, and we have the response of those accelerometers, we can use the equations derived in the previous section to determine the response of each solid body expressed in the frame \(\{O\}\).
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-keyword">for</span> <span class="org-variable-name">solid_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-1">(</span></span><span class="org-constant">solid_names</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||
<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>;
|
||||
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">solid_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-1">(</span></span><span class="org-constant">solid_names</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||
solids_i = solids.<span class="org-rainbow-delimiters-depth-1">(</span>solid_names<span class="org-rainbow-delimiters-depth-2">{</span>solid_i<span class="org-rainbow-delimiters-depth-2">}</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
A = zeros<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span>length<span class="org-rainbow-delimiters-depth-2">(</span>solids_i<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-highlight-numbers-number">6</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
@@ -563,26 +585,26 @@ Then, as we know the positions of the accelerometers on each solid body, and we
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8ac4b88" class="outline-2">
|
||||
<h2 id="org8ac4b88"><span class="section-number-2">5</span> Analysis of some FRF in the global coordinates</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<div id="outline-container-orge7f0885" class="outline-3">
|
||||
<h3 id="orge7f0885"><span class="section-number-3">4.2</span> Analysis of some FRF in the global coordinates</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<p>
|
||||
First, we can compare the motions of the 6 solid bodies in one direction (figure <a href="#orgb6c91b7">2</a>)
|
||||
First, we can compare the motions of the 6 solid bodies in one direction (figure <a href="#org84991a7">2</a>)
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We can also compare all the DOFs of one solid body (figure <a href="#orgcc6b483">3</a>).
|
||||
We can also compare all the DOFs of one solid body (figure <a href="#org2f3da04">3</a>).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgb6c91b7" class="figure">
|
||||
<div id="org84991a7" 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="orgcc6b483" class="figure">
|
||||
<div id="org2f3da04" 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>
|
||||
@@ -590,9 +612,9 @@ We can also compare all the DOFs of one solid body (figure <a href="#orgcc6b483"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgaeb8895" class="outline-2">
|
||||
<h2 id="orgaeb8895"><span class="section-number-2">6</span> Comparison of the relative motion of solid bodies</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<div id="outline-container-orgee41f84" class="outline-3">
|
||||
<h3 id="orgee41f84"><span class="section-number-3">4.3</span> Comparison of the relative motion of solid bodies</h3>
|
||||
<div class="outline-text-3" id="text-4-3">
|
||||
<p>
|
||||
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.
|
||||
@@ -601,19 +623,19 @@ This could help reduce the order of the model and simplify the extraction of the
|
||||
|
||||
<p>
|
||||
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 \]
|
||||
\[ 0 < \Delta_{ij, x} = \frac{\left| |D_{i,x}| - |D_{j,x}| \right|}{|D_{i,x}| + |D_{j,x}|} < 1 \]
|
||||
</p>
|
||||
|
||||
<p>
|
||||
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\).
|
||||
Then, if \(\Delta_{ij,x} \ll 1\) 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>
|
||||
This normalized relative motion is shown on figure <a href="#orga181f24">4</a> for all the directions and for all the adjacent pair of solid bodies.
|
||||
This normalized relative motion is shown on figure <a href="#org0a58ea1">4</a> for all the directions and for all the adjacent pair of solid bodies.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orga181f24" class="figure">
|
||||
<div id="org0a58ea1" 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>
|
||||
@@ -629,15 +651,15 @@ The relative motion of two solid bodies may be negligible when exciting the stru
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfd3858f" class="outline-2">
|
||||
<h2 id="orgfd3858f"><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">
|
||||
<div id="outline-container-org2a5f7b7" class="outline-3">
|
||||
<h3 id="org2a5f7b7"><span class="section-number-3">4.4</span> Verify that we find the original FRF from the FRF in the global coordinates</h3>
|
||||
<div class="outline-text-3" id="text-4-4">
|
||||
<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.
|
||||
We have computed the Frequency Response Functions Matrix <code>FRFs_O</code> representing the response of the 6 solid bodies in their 6 DOFs with respect to the frame \(\{O\}\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
From the response of one body in its 6 DOFs, we should be able to compute the FRF of each of its accelerometer fixed to it during the measurement.
|
||||
From the response of one body in its 6 DOFs, we should be able to compute the FRF of each of its accelerometer fixed to it during the measurement, supposing that the stage is a solid body.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -649,8 +671,25 @@ This will help us to determine if:
|
||||
<li>the solid body assumption is correct in the frequency band of interest</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
From the translation \(\delta p\) and rotation \(\delta \Omega\) of a solid body and the positions \(p_i\) of the accelerometers attached to it, we can compute the response that would have been measured by the accelerometers using the following formula:
|
||||
</p>
|
||||
\begin{align*}
|
||||
\delta p_1 &= \delta p + \delta\Omega p_1\\
|
||||
\delta p_2 &= \delta p + \delta\Omega p_2\\
|
||||
\delta p_3 &= \delta p + \delta\Omega p_3\\
|
||||
\delta p_4 &= \delta p + \delta\Omega p_4
|
||||
\end{align*}
|
||||
|
||||
<p>
|
||||
Thus, we can obtain the FRF matrix <code>FRFs_A</code> that gives the responses of the accelerometers to the forces applied by the hammer.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
It is implemented in matlab as follow:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">FRF_recovered = zeros<span class="org-rainbow-delimiters-depth-1">(</span>size<span class="org-rainbow-delimiters-depth-2">(</span>FRFs<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<pre class="src src-matlab">FRFs_A = zeros<span class="org-rainbow-delimiters-depth-1">(</span>size<span class="org-rainbow-delimiters-depth-2">(</span>FRFs<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
<span class="org-comment">% For each excitation direction</span>
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">exc_dir</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:</span><span class="org-constant"><span class="org-highlight-numbers-number">3</span></span>
|
||||
@@ -665,7 +704,7 @@ This will help us to determine if:
|
||||
pos = acc_pos<span class="org-rainbow-delimiters-depth-1">(</span>acc_i, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-1">)</span>';
|
||||
posX = <span class="org-rainbow-delimiters-depth-1">[</span><span class="org-highlight-numbers-number">0</span> pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">-</span>pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span>; <span class="org-type">-</span>pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-highlight-numbers-number">0</span> pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span> ; pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">-</span>pos<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-highlight-numbers-number">0</span><span class="org-rainbow-delimiters-depth-1">]</span>;
|
||||
|
||||
FRF_recovered<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>acc_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>acc_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">3</span>, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-1">)</span> = v0 <span class="org-type">+</span> posX<span class="org-type">*</span>W0;
|
||||
FRFs_A<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>acc_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</span>acc_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">3</span>, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-1">)</span> = v0 <span class="org-type">+</span> posX<span class="org-type">*</span>W0;
|
||||
<span class="org-keyword">end</span>
|
||||
<span class="org-keyword">end</span>
|
||||
<span class="org-keyword">end</span>
|
||||
@@ -673,28 +712,28 @@ This will help us to determine if:
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We then compare the original FRF measured for each accelerometer with the recovered FRF from the global FRF matrix in the common frame.
|
||||
We then compare the original FRF measured for each accelerometer <code>FRFs</code> with the "recovered" FRF <code>FRFs_A</code> from the global FRF matrix in the common frame.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The FRF for the 4 accelerometers on the Hexapod are compared on figure <a href="#orgf852bb5">5</a>.
|
||||
The FRF for the 4 accelerometers on the Hexapod are compared on figure <a href="#org899c01d">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="#org9d0e673">6</a>.
|
||||
The FRF for accelerometers located on the translation stage are compared on figure <a href="#org0b7d156">6</a>.
|
||||
The FRF are matching well until 100Hz.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgf852bb5" class="figure">
|
||||
<div id="org899c01d" 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="org9d0e673" class="figure">
|
||||
<div id="org0b7d156" 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>
|
||||
@@ -715,9 +754,9 @@ This valid the fact that a multi-body model can be used to represent the dynamic
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org98351d2" class="outline-2">
|
||||
<h2 id="org98351d2"><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 id="outline-container-org9323f41" class="outline-3">
|
||||
<h3 id="org9323f41"><span class="section-number-3">4.5</span> Saving of the FRF expressed in the global coordinates</h3>
|
||||
<div class="outline-text-3" id="text-4-5">
|
||||
<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>
|
||||
@@ -725,9 +764,211 @@ This valid the fact that a multi-body model can be used to represent the dynamic
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9a552f4" class="outline-2">
|
||||
<h2 id="org9a552f4"><span class="section-number-2">5</span> FRF expressed in a frame centered at the CoM of each solid body</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
</div>
|
||||
<div id="outline-container-org5580afc" class="outline-3">
|
||||
<h3 id="org5580afc"><span class="section-number-3">5.1</span> Center of Mass of each solid body</h3>
|
||||
<div class="outline-text-3" id="text-5-1">
|
||||
<p>
|
||||
From solidworks, we can export the position of the center of mass of each solid body considered.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
For that, we have to suppose density of the materials.
|
||||
We then process the exported file.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-bash">sed -e <span class="org-string">'1,/^Center of mass/ d'</span> mat/1_granite_bot.txt | sed <span class="org-highlight-numbers-number">3q</span> | sed <span class="org-string">'s/^\s*\t*[XYZ] = \([-0-9.]*\)\r/\1/'</span> > mat/model_solidworks_com.txt
|
||||
sed -e <span class="org-string">'1,/^Center of mass/ d'</span> mat/2_granite_top.txt | sed <span class="org-highlight-numbers-number">3q</span> | sed <span class="org-string">'s/^\s*\t*[XYZ] = \([-0-9.]*\)\r/\1/'</span> >> mat/model_solidworks_com.txt
|
||||
sed -e <span class="org-string">'1,/^Center of mass/ d'</span> mat/3_ty.txt | sed <span class="org-highlight-numbers-number">3q</span> | sed <span class="org-string">'s/^\s*\t*[XYZ] = \([-0-9.]*\)\r/\1/'</span> >> mat/model_solidworks_com.txt
|
||||
sed -e <span class="org-string">'1,/^Center of mass/ d'</span> mat/4_ry.txt | sed <span class="org-highlight-numbers-number">3q</span> | sed <span class="org-string">'s/^\s*\t*[XYZ] = \([-0-9.]*\)\r/\1/'</span> >> mat/model_solidworks_com.txt
|
||||
sed -e <span class="org-string">'1,/^Center of mass/ d'</span> mat/5_rz.txt | sed <span class="org-highlight-numbers-number">3q</span> | sed <span class="org-string">'s/^\s*\t*[XYZ] = \([-0-9.]*\)\r/\1/'</span> >> mat/model_solidworks_com.txt
|
||||
sed -e <span class="org-string">'1,/^Center of mass/ d'</span> mat/6_hexa.txt | sed <span class="org-highlight-numbers-number">3q</span> | sed <span class="org-string">'s/^\s*\t*[XYZ] = \([-0-9.]*\)\r/\1/'</span> >> mat/model_solidworks_com.txt
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
And we import the Center of mass on Matlab.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">model_com = table2array<span class="org-rainbow-delimiters-depth-1">(</span>readtable<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-string">'mat/model_solidworks_com.txt', 'ReadVariableNames'</span>, false<span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">model_com = reshape<span class="org-rainbow-delimiters-depth-1">(</span>model_com , <span class="org-rainbow-delimiters-depth-2">[</span><span class="org-highlight-numbers-number">3</span>, <span class="org-highlight-numbers-number">6</span><span class="org-rainbow-delimiters-depth-2">]</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-right" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-left"> </th>
|
||||
<th scope="col" class="org-right">granite bot</th>
|
||||
<th scope="col" class="org-right">granite top</th>
|
||||
<th scope="col" class="org-right">ty</th>
|
||||
<th scope="col" class="org-right">ry</th>
|
||||
<th scope="col" class="org-right">rz</th>
|
||||
<th scope="col" class="org-right">hexa</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-left">X [mm]</td>
|
||||
<td class="org-right">45</td>
|
||||
<td class="org-right">52</td>
|
||||
<td class="org-right">0</td>
|
||||
<td class="org-right">0</td>
|
||||
<td class="org-right">0</td>
|
||||
<td class="org-right">-4</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Y [mm]</td>
|
||||
<td class="org-right">144</td>
|
||||
<td class="org-right">258</td>
|
||||
<td class="org-right">14</td>
|
||||
<td class="org-right">-5</td>
|
||||
<td class="org-right">0</td>
|
||||
<td class="org-right">6</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Z [mm]</td>
|
||||
<td class="org-right">-1251</td>
|
||||
<td class="org-right">-778</td>
|
||||
<td class="org-right">-600</td>
|
||||
<td class="org-right">-628</td>
|
||||
<td class="org-right">-580</td>
|
||||
<td class="org-right">-319</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1128440" class="outline-3">
|
||||
<h3 id="org1128440"><span class="section-number-3">5.2</span> From accelerometer DOFs to solid body DOFs - Expressed at the CoM</h3>
|
||||
<div class="outline-text-3" id="text-5-2">
|
||||
<p>
|
||||
First, we initialize a new FRF matrix <code>FRFs_CoM</code> which is an \(n \times p \times q\) with:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>\(n\) is the number of DOFs of the considered 6 solid-bodies: \(6 \times 6 = 36\)</li>
|
||||
<li>\(p\) is the number of excitation inputs: \(3\)</li>
|
||||
<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_CoM</code> is a \(n\times p\) matrix:
|
||||
</p>
|
||||
\begin{equation}
|
||||
\text{FRF}_\text{CoM}(\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_CoM = 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>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Then, as we know the positions of the accelerometers on each solid body, and we have the response of those accelerometers, we can use the equations derived in the previous section to determine the response of each solid body expressed in the frame \(\{O\}\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-keyword">for</span> <span class="org-variable-name">solid_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-1">(</span></span><span class="org-constant">solid_names</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||
solids_i = solids.<span class="org-rainbow-delimiters-depth-1">(</span>solid_names<span class="org-rainbow-delimiters-depth-2">{</span>solid_i<span class="org-rainbow-delimiters-depth-2">}</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
A = zeros<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span>length<span class="org-rainbow-delimiters-depth-2">(</span>solids_i<span class="org-rainbow-delimiters-depth-2">)</span>, <span class="org-highlight-numbers-number">6</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">i</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:length</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">(</span></span><span class="org-constant">solids_i</span><span class="org-constant"><span class="org-rainbow-delimiters-depth-1">)</span></span>
|
||||
acc_i = solids_i<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-constant">i</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
acc_pos_com = acc_pos<span class="org-rainbow-delimiters-depth-1">(</span>acc_i, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-1">)</span>' <span class="org-type">-</span> model_com<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-type">:</span>, solid_i<span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
|
||||
A<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</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-2">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-1">)</span> = eye<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
A<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-rainbow-delimiters-depth-2">(</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-2">)</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span><span class="org-highlight-numbers-number">3</span><span class="org-type">*</span><span class="org-constant">i</span>, <span class="org-highlight-numbers-number">4</span><span class="org-type">:</span><span class="org-highlight-numbers-number">6</span><span class="org-rainbow-delimiters-depth-1">)</span> = <span class="org-rainbow-delimiters-depth-1">[</span> <span class="org-highlight-numbers-number">0</span> acc_pos_com<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">-</span>acc_pos_com<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span> ;
|
||||
<span class="org-type">-</span>acc_pos_com<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">3</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-highlight-numbers-number">0</span> acc_pos_com<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span> ;
|
||||
acc_pos_com<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">2</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-type">-</span>acc_pos_com<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span> <span class="org-highlight-numbers-number">0</span><span class="org-rainbow-delimiters-depth-1">]</span>;
|
||||
<span class="org-keyword">end</span>
|
||||
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">exc_dir</span> = <span class="org-constant"><span class="org-highlight-numbers-number">1</span></span><span class="org-constant">:</span><span class="org-constant"><span class="org-highlight-numbers-number">3</span></span>
|
||||
FRFs_CoM<span class="org-rainbow-delimiters-depth-1">(</span><span class="org-rainbow-delimiters-depth-2">(</span>solid_i<span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">6</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>solid_i<span class="org-type">*</span><span class="org-highlight-numbers-number">6</span>, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-1">)</span> = A<span class="org-type">\</span>squeeze<span class="org-rainbow-delimiters-depth-1">(</span>FRFs<span class="org-rainbow-delimiters-depth-2">(</span><span class="org-rainbow-delimiters-depth-3">(</span>solids_i<span class="org-rainbow-delimiters-depth-4">(</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-4">)</span><span class="org-type">-</span><span class="org-highlight-numbers-number">1</span><span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">3</span><span class="org-type">+</span><span class="org-highlight-numbers-number">1</span><span class="org-type">:</span>solids_i<span class="org-rainbow-delimiters-depth-3">(</span>end<span class="org-rainbow-delimiters-depth-3">)</span><span class="org-type">*</span><span class="org-highlight-numbers-number">3</span>, exc_dir, <span class="org-type">:</span><span class="org-rainbow-delimiters-depth-2">)</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
<span class="org-keyword">end</span>
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0efe1de" class="outline-3">
|
||||
<h3 id="org0efe1de"><span class="section-number-3">5.3</span> Analysis of some FRF</h3>
|
||||
<div class="outline-text-3" id="text-5-3">
|
||||
|
||||
<div id="org5d7089d" class="figure">
|
||||
<p><img src="figs/frf_com_all_bodies_one_direction.png" alt="frf_com_all_bodies_one_direction.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>FRFs of all the 6 solid bodies in one direction</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgb9eb188" class="figure">
|
||||
<p><img src="figs/frf_com_one_body_all_directions.png" alt="frf_com_one_body_all_directions.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>FRFs of one solid body in all its DOFs (expressed with a frame centered with its center of mass)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1c6f529" class="outline-3">
|
||||
<h3 id="org1c6f529"><span class="section-number-3">5.4</span> Save the FRF</h3>
|
||||
<div class="outline-text-3" id="text-5-4">
|
||||
<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_com.mat', 'FRFs_CoM'</span><span class="org-rainbow-delimiters-depth-1">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2019-07-05 ven. 11:49</p>
|
||||
<p class="date">Created: 2019-07-10 mer. 15:36</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