Add estimation of mass and stiffness

This commit is contained in:
Thomas Dehaeze 2020-11-03 09:34:55 +01:00
parent 5f59f13f9a
commit 5089f5b2ab
2 changed files with 300 additions and 269 deletions

View File

@ -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>
<!-- 2020-08-18 mar. 12:57 -->
<!-- 2020-11-03 mar. 09:32 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Compliance Measurement of the Micro Station</title>
<meta name="generator" content="Org mode" />
@ -35,31 +35,32 @@
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org0f99e70">1. Setup</a>
<li><a href="#orgaec7e8e">1. Setup</a>
<ul>
<li><a href="#org3071865">1.1. Position of inertial sensors on top of the micro-hexapod</a></li>
<li><a href="#org93c276c">1.2. Hammer blow position/orientation</a></li>
<li><a href="#org43be1a2">1.1. Position of inertial sensors on top of the micro-hexapod</a></li>
<li><a href="#org095d116">1.2. Hammer blow position/orientation</a></li>
</ul>
</li>
<li><a href="#org945c638">2. Results</a>
<li><a href="#org7140136">2. Results</a>
<ul>
<li><a href="#org36b19fa">2.1. Load Data</a></li>
<li><a href="#orgb64ed09">2.2. Compute Transfer Functions</a></li>
<li><a href="#orgc4d6849">2.3. Diagonal Dynamics</a></li>
<li><a href="#org87be1fb">2.4. Compare with Model</a></li>
<li><a href="#orgaa2c58a">2.5. Coupling Dynamics</a></li>
<li><a href="#org6082142">2.1. Load Data</a></li>
<li><a href="#orgd4012ad">2.2. Compute Transfer Functions</a></li>
<li><a href="#org7af3187">2.3. Diagonal Dynamics</a></li>
<li><a href="#org23b9749">2.4. Equivalent Stiffness and Mass Estimation</a></li>
<li><a href="#org208dda9">2.5. Compare with Model</a></li>
<li><a href="#org94eb6da">2.6. Coupling Dynamics</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-org0f99e70" class="outline-2">
<h2 id="org0f99e70"><span class="section-number-2">1</span> Setup</h2>
<div id="outline-container-orgaec7e8e" class="outline-2">
<h2 id="orgaec7e8e"><span class="section-number-2">1</span> Setup</h2>
<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-org3071865" class="outline-3">
<h3 id="org3071865"><span class="section-number-3">1.1</span> Position of inertial sensors on top of the micro-hexapod</h3>
<div id="outline-container-org43be1a2" class="outline-3">
<h3 id="org43be1a2"><span class="section-number-3">1.1</span> Position of inertial sensors on top of the micro-hexapod</h3>
<div class="outline-text-3" id="text-1-1">
<p>
Orientation is relative to the frame determined by the X-ray
@ -328,8 +329,8 @@ From the acceleration measurement of the 4 accelerometers, we can compute the tr
</div>
</div>
<div id="outline-container-org93c276c" class="outline-3">
<h3 id="org93c276c"><span class="section-number-3">1.2</span> Hammer blow position/orientation</h3>
<div id="outline-container-org095d116" class="outline-3">
<h3 id="org095d116"><span class="section-number-3">1.2</span> Hammer blow position/orientation</h3>
<div class="outline-text-3" id="text-1-2">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -473,35 +474,35 @@ From hammer blows to pure forces / torques:
</div>
</div>
<div id="outline-container-org945c638" class="outline-2">
<h2 id="org945c638"><span class="section-number-2">2</span> Results</h2>
<div id="outline-container-org7140136" class="outline-2">
<h2 id="org7140136"><span class="section-number-2">2</span> Results</h2>
<div class="outline-text-2" id="text-2">
</div>
<div id="outline-container-org36b19fa" class="outline-3">
<h3 id="org36b19fa"><span class="section-number-3">2.1</span> Load Data</h3>
<div id="outline-container-org6082142" class="outline-3">
<h3 id="org6082142"><span class="section-number-3">2.1</span> Load Data</h3>
<div class="outline-text-3" id="text-2-1">
<div class="org-src-container">
<pre class="src src-matlab">m1 = load('data/Measurement1.mat');
m2 = load('data/Measurement2.mat');
m3 = load('data/Measurement3.mat');
m4 = load('data/Measurement4.mat');
m5 = load('data/Measurement5.mat');
m6 = load('data/Measurement6.mat');
m7 = load('data/Measurement7.mat');
m8 = load('data/Measurement8.mat');
m9 = load('data/Measurement9.mat');
m10 = load('data/Measurement10.mat');
<pre class="src src-matlab">m1 = load(<span class="org-string">'data/Measurement1.mat'</span>);
m2 = load(<span class="org-string">'data/Measurement2.mat'</span>);
m3 = load(<span class="org-string">'data/Measurement3.mat'</span>);
m4 = load(<span class="org-string">'data/Measurement4.mat'</span>);
m5 = load(<span class="org-string">'data/Measurement5.mat'</span>);
m6 = load(<span class="org-string">'data/Measurement6.mat'</span>);
m7 = load(<span class="org-string">'data/Measurement7.mat'</span>);
m8 = load(<span class="org-string">'data/Measurement8.mat'</span>);
m9 = load(<span class="org-string">'data/Measurement9.mat'</span>);
m10 = load(<span class="org-string">'data/Measurement10.mat'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgb64ed09" class="outline-3">
<h3 id="orgb64ed09"><span class="section-number-3">2.2</span> Compute Transfer Functions</h3>
<div id="outline-container-orgd4012ad" class="outline-3">
<h3 id="orgd4012ad"><span class="section-number-3">2.2</span> Compute Transfer Functions</h3>
<div class="outline-text-3" id="text-2-2">
<div class="org-src-container">
<pre class="src src-matlab">freqs = m3.FFT1_H1_1_13_X_Val;
w = 2*pi*freqs';
w = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>freqs<span class="org-type">'</span>;
A = 0.14;
B = 0.14;
@ -511,158 +512,178 @@ B = 0.14;
<div class="org-src-container">
<pre class="src src-matlab">G = zeros(6,6,length(freqs));
% Fx
G(1,1,:) = (m3.FFT1_H1_1_13_Y_ReIm + m3.FFT1_H1_4_13_Y_ReIm + m3.FFT1_H1_7_13_Y_ReIm + m3.FFT1_H1_10_13_Y_ReIm)./4;
G(2,1,:) = (m3.FFT1_H1_2_13_Y_ReIm + m3.FFT1_H1_5_13_Y_ReIm + m3.FFT1_H1_8_13_Y_ReIm + m3.FFT1_H1_11_13_Y_ReIm)./4;
G(3,1,:) = (m3.FFT1_H1_3_13_Y_ReIm + m3.FFT1_H1_6_13_Y_ReIm + m3.FFT1_H1_9_13_Y_ReIm + m3.FFT1_H1_12_13_Y_ReIm)./4;
G(4,1,:) = (m3.FFT1_H1_1_13_Y_ReIm - m3.FFT1_H1_9_13_Y_ReIm )./A;
G(5,1,:) = (m3.FFT1_H1_6_13_Y_ReIm - m3.FFT1_H1_12_13_Y_ReIm)./B;
G(6,1,:) = (m3.FFT1_H1_7_13_Y_ReIm - m3.FFT1_H1_1_13_Y_ReIm )./A;
<span class="org-comment">% Fx</span>
G<span class="org-type">(1,1,:) </span>= (m3.FFT1_H1_1_13_Y_ReIm <span class="org-type">+</span> m3.FFT1_H1_4_13_Y_ReIm <span class="org-type">+</span> m3.FFT1_H1_7_13_Y_ReIm <span class="org-type">+</span> m3.FFT1_H1_10_13_Y_ReIm)<span class="org-type">./</span>4;
G<span class="org-type">(2,1,:) </span>= (m3.FFT1_H1_2_13_Y_ReIm <span class="org-type">+</span> m3.FFT1_H1_5_13_Y_ReIm <span class="org-type">+</span> m3.FFT1_H1_8_13_Y_ReIm <span class="org-type">+</span> m3.FFT1_H1_11_13_Y_ReIm)<span class="org-type">./</span>4;
G<span class="org-type">(3,1,:) </span>= (m3.FFT1_H1_3_13_Y_ReIm <span class="org-type">+</span> m3.FFT1_H1_6_13_Y_ReIm <span class="org-type">+</span> m3.FFT1_H1_9_13_Y_ReIm <span class="org-type">+</span> m3.FFT1_H1_12_13_Y_ReIm)<span class="org-type">./</span>4;
G<span class="org-type">(4,1,:) </span>= (m3.FFT1_H1_1_13_Y_ReIm <span class="org-type">-</span> m3.FFT1_H1_9_13_Y_ReIm )<span class="org-type">./</span>A;
G<span class="org-type">(5,1,:) </span>= (m3.FFT1_H1_6_13_Y_ReIm <span class="org-type">-</span> m3.FFT1_H1_12_13_Y_ReIm)<span class="org-type">./</span>B;
G<span class="org-type">(6,1,:) </span>= (m3.FFT1_H1_7_13_Y_ReIm <span class="org-type">-</span> m3.FFT1_H1_1_13_Y_ReIm )<span class="org-type">./</span>A;
% Fy
G(1,2,:) = -(m1.FFT1_H1_2_13_Y_ReIm + m1.FFT1_H1_5_13_Y_ReIm + m1.FFT1_H1_8_13_Y_ReIm + m1.FFT1_H1_11_13_Y_ReIm)./4;
G(2,2,:) = -(m1.FFT1_H1_2_13_Y_ReIm + m1.FFT1_H1_5_13_Y_ReIm + m1.FFT1_H1_8_13_Y_ReIm + m1.FFT1_H1_11_13_Y_ReIm)./4;
G(3,2,:) = -(m1.FFT1_H1_3_13_Y_ReIm + m1.FFT1_H1_6_13_Y_ReIm + m1.FFT1_H1_9_13_Y_ReIm + m1.FFT1_H1_12_13_Y_ReIm)./4;
G(4,2,:) = -(m1.FFT1_H1_1_13_Y_ReIm - m1.FFT1_H1_9_13_Y_ReIm )./A;
G(5,2,:) = -(m1.FFT1_H1_6_13_Y_ReIm - m1.FFT1_H1_12_13_Y_ReIm)./B;
G(6,2,:) = -(m1.FFT1_H1_7_13_Y_ReIm - m1.FFT1_H1_1_13_Y_ReIm )./A;
<span class="org-comment">% Fy</span>
G<span class="org-type">(1,2,:) </span>= <span class="org-type">-</span>(m1.FFT1_H1_2_13_Y_ReIm <span class="org-type">+</span> m1.FFT1_H1_5_13_Y_ReIm <span class="org-type">+</span> m1.FFT1_H1_8_13_Y_ReIm <span class="org-type">+</span> m1.FFT1_H1_11_13_Y_ReIm)<span class="org-type">./</span>4;
G<span class="org-type">(2,2,:) </span>= <span class="org-type">-</span>(m1.FFT1_H1_2_13_Y_ReIm <span class="org-type">+</span> m1.FFT1_H1_5_13_Y_ReIm <span class="org-type">+</span> m1.FFT1_H1_8_13_Y_ReIm <span class="org-type">+</span> m1.FFT1_H1_11_13_Y_ReIm)<span class="org-type">./</span>4;
G<span class="org-type">(3,2,:) </span>= <span class="org-type">-</span>(m1.FFT1_H1_3_13_Y_ReIm <span class="org-type">+</span> m1.FFT1_H1_6_13_Y_ReIm <span class="org-type">+</span> m1.FFT1_H1_9_13_Y_ReIm <span class="org-type">+</span> m1.FFT1_H1_12_13_Y_ReIm)<span class="org-type">./</span>4;
G<span class="org-type">(4,2,:) </span>= <span class="org-type">-</span>(m1.FFT1_H1_1_13_Y_ReIm <span class="org-type">-</span> m1.FFT1_H1_9_13_Y_ReIm )<span class="org-type">./</span>A;
G<span class="org-type">(5,2,:) </span>= <span class="org-type">-</span>(m1.FFT1_H1_6_13_Y_ReIm <span class="org-type">-</span> m1.FFT1_H1_12_13_Y_ReIm)<span class="org-type">./</span>B;
G<span class="org-type">(6,2,:) </span>= <span class="org-type">-</span>(m1.FFT1_H1_7_13_Y_ReIm <span class="org-type">-</span> m1.FFT1_H1_1_13_Y_ReIm )<span class="org-type">./</span>A;
% Fz
G(1,3,:) = -1/2./(1./(m2.FFT1_H1_1_13_Y_ReIm + m2.FFT1_H1_4_13_Y_ReIm + m2.FFT1_H1_7_13_Y_ReIm + m2.FFT1_H1_10_13_Y_ReIm) + ...
1./(m6.FFT1_H1_1_13_Y_ReIm + m6.FFT1_H1_4_13_Y_ReIm + m6.FFT1_H1_7_13_Y_ReIm + m6.FFT1_H1_10_13_Y_ReIm));
G(2,3,:) = -1/2./(1./(m2.FFT1_H1_2_13_Y_ReIm + m2.FFT1_H1_5_13_Y_ReIm + m2.FFT1_H1_8_13_Y_ReIm + m2.FFT1_H1_11_13_Y_ReIm) + ...
1./(m6.FFT1_H1_2_13_Y_ReIm + m6.FFT1_H1_5_13_Y_ReIm + m6.FFT1_H1_8_13_Y_ReIm + m6.FFT1_H1_11_13_Y_ReIm));
G(3,3,:) = -1/2./(1./(m2.FFT1_H1_3_13_Y_ReIm + m2.FFT1_H1_6_13_Y_ReIm + m2.FFT1_H1_9_13_Y_ReIm + m2.FFT1_H1_12_13_Y_ReIm) + ...
1./(m6.FFT1_H1_3_13_Y_ReIm + m6.FFT1_H1_6_13_Y_ReIm + m6.FFT1_H1_9_13_Y_ReIm + m6.FFT1_H1_12_13_Y_ReIm));
G(4,3,:) = -2/A./(1./(m2.FFT1_H1_1_13_Y_ReIm - m2.FFT1_H1_9_13_Y_ReIm) + ...
1./(m6.FFT1_H1_1_13_Y_ReIm - m6.FFT1_H1_9_13_Y_ReIm));
G(5,3,:) = -2/B./(1./(m2.FFT1_H1_6_13_Y_ReIm - m2.FFT1_H1_12_13_Y_ReIm) + ...
1./(m6.FFT1_H1_6_13_Y_ReIm - m6.FFT1_H1_12_13_Y_ReIm));
G(6,3,:) = -2/A./(1./(m2.FFT1_H1_7_13_Y_ReIm - m2.FFT1_H1_1_13_Y_ReIm) + ...
1./(m6.FFT1_H1_7_13_Y_ReIm - m6.FFT1_H1_1_13_Y_ReIm));
<span class="org-comment">% Fz</span>
G<span class="org-type">(1,3,:) </span>= <span class="org-type">-</span>1<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_1_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_4_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_7_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_10_13_Y_ReIm) <span class="org-type">+</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_1_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_4_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_7_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_10_13_Y_ReIm));
G<span class="org-type">(2,3,:) </span>= <span class="org-type">-</span>1<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_2_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_5_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_8_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_11_13_Y_ReIm) <span class="org-type">+</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_2_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_5_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_8_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_11_13_Y_ReIm));
G<span class="org-type">(3,3,:) </span>= <span class="org-type">-</span>1<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_3_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_6_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_9_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_12_13_Y_ReIm) <span class="org-type">+</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_3_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_6_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_9_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_12_13_Y_ReIm));
G<span class="org-type">(4,3,:) </span>= <span class="org-type">-</span>2<span class="org-type">/</span>A<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_1_13_Y_ReIm <span class="org-type">-</span> m2.FFT1_H1_9_13_Y_ReIm) <span class="org-type">+</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_1_13_Y_ReIm <span class="org-type">-</span> m6.FFT1_H1_9_13_Y_ReIm));
G<span class="org-type">(5,3,:) </span>= <span class="org-type">-</span>2<span class="org-type">/</span>B<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_6_13_Y_ReIm <span class="org-type">-</span> m2.FFT1_H1_12_13_Y_ReIm) <span class="org-type">+</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_6_13_Y_ReIm <span class="org-type">-</span> m6.FFT1_H1_12_13_Y_ReIm));
G<span class="org-type">(6,3,:) </span>= <span class="org-type">-</span>2<span class="org-type">/</span>A<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_7_13_Y_ReIm <span class="org-type">-</span> m2.FFT1_H1_1_13_Y_ReIm) <span class="org-type">+</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_7_13_Y_ReIm <span class="org-type">-</span> m6.FFT1_H1_1_13_Y_ReIm));
% Mx
G(1,4,:) = 1/A/2./(1./(m2.FFT1_H1_1_13_Y_ReIm + m2.FFT1_H1_4_13_Y_ReIm + m2.FFT1_H1_7_13_Y_ReIm + m2.FFT1_H1_10_13_Y_ReIm) - ...
1./(m6.FFT1_H1_1_13_Y_ReIm + m6.FFT1_H1_4_13_Y_ReIm + m6.FFT1_H1_7_13_Y_ReIm + m6.FFT1_H1_10_13_Y_ReIm));
G(2,4,:) = 1/A/2./(1./(m2.FFT1_H1_2_13_Y_ReIm + m2.FFT1_H1_5_13_Y_ReIm + m2.FFT1_H1_8_13_Y_ReIm + m2.FFT1_H1_11_13_Y_ReIm) - ...
1./(m6.FFT1_H1_2_13_Y_ReIm + m6.FFT1_H1_5_13_Y_ReIm + m6.FFT1_H1_8_13_Y_ReIm + m6.FFT1_H1_11_13_Y_ReIm));
G(3,4,:) = 1/A/2./(1./(m2.FFT1_H1_3_13_Y_ReIm + m2.FFT1_H1_6_13_Y_ReIm + m2.FFT1_H1_9_13_Y_ReIm + m2.FFT1_H1_12_13_Y_ReIm) - ...
1./(m6.FFT1_H1_3_13_Y_ReIm + m6.FFT1_H1_6_13_Y_ReIm + m6.FFT1_H1_9_13_Y_ReIm + m6.FFT1_H1_12_13_Y_ReIm));
G(4,4,:) = 1/A^2*2./(1./(m2.FFT1_H1_1_13_Y_ReIm - m2.FFT1_H1_9_13_Y_ReIm) - ...
1./(m6.FFT1_H1_1_13_Y_ReIm - m6.FFT1_H1_9_13_Y_ReIm));
G(5,4,:) = 2/A/B./(1./(m2.FFT1_H1_6_13_Y_ReIm - m2.FFT1_H1_12_13_Y_ReIm) - ...
1./(m6.FFT1_H1_6_13_Y_ReIm - m6.FFT1_H1_12_13_Y_ReIm));
G(6,4,:) = 1/A^2*2./(1./(m2.FFT1_H1_7_13_Y_ReIm - m2.FFT1_H1_1_13_Y_ReIm) - ...
1./(m6.FFT1_H1_7_13_Y_ReIm - m6.FFT1_H1_1_13_Y_ReIm));
<span class="org-comment">% Mx</span>
G<span class="org-type">(1,4,:) </span>= 1<span class="org-type">/</span>A<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_1_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_4_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_7_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_10_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_1_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_4_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_7_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_10_13_Y_ReIm));
G<span class="org-type">(2,4,:) </span>= 1<span class="org-type">/</span>A<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_2_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_5_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_8_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_11_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_2_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_5_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_8_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_11_13_Y_ReIm));
G<span class="org-type">(3,4,:) </span>= 1<span class="org-type">/</span>A<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_3_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_6_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_9_13_Y_ReIm <span class="org-type">+</span> m2.FFT1_H1_12_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_3_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_6_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_9_13_Y_ReIm <span class="org-type">+</span> m6.FFT1_H1_12_13_Y_ReIm));
G<span class="org-type">(4,4,:) </span>= 1<span class="org-type">/</span>A<span class="org-type">^</span>2<span class="org-type">*</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_1_13_Y_ReIm <span class="org-type">-</span> m2.FFT1_H1_9_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_1_13_Y_ReIm <span class="org-type">-</span> m6.FFT1_H1_9_13_Y_ReIm));
G<span class="org-type">(5,4,:) </span>= 2<span class="org-type">/</span>A<span class="org-type">/</span>B<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_6_13_Y_ReIm <span class="org-type">-</span> m2.FFT1_H1_12_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_6_13_Y_ReIm <span class="org-type">-</span> m6.FFT1_H1_12_13_Y_ReIm));
G<span class="org-type">(6,4,:) </span>= 1<span class="org-type">/</span>A<span class="org-type">^</span>2<span class="org-type">*</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m2.FFT1_H1_7_13_Y_ReIm <span class="org-type">-</span> m2.FFT1_H1_1_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m6.FFT1_H1_7_13_Y_ReIm <span class="org-type">-</span> m6.FFT1_H1_1_13_Y_ReIm));
% My
G(1,5,:) = 1/B/2./(1./(m8.FFT1_H1_1_13_Y_ReIm + m8.FFT1_H1_4_13_Y_ReIm + m8.FFT1_H1_7_13_Y_ReIm + m8.FFT1_H1_10_13_Y_ReIm) - ...
1./(m4.FFT1_H1_1_13_Y_ReIm + m4.FFT1_H1_4_13_Y_ReIm + m4.FFT1_H1_7_13_Y_ReIm + m4.FFT1_H1_10_13_Y_ReIm));
G(2,5,:) = 1/B/2./(1./(m8.FFT1_H1_2_13_Y_ReIm + m8.FFT1_H1_5_13_Y_ReIm + m8.FFT1_H1_8_13_Y_ReIm + m8.FFT1_H1_11_13_Y_ReIm) - ...
1./(m4.FFT1_H1_2_13_Y_ReIm + m4.FFT1_H1_5_13_Y_ReIm + m4.FFT1_H1_8_13_Y_ReIm + m4.FFT1_H1_11_13_Y_ReIm));
G(3,5,:) = 1/B/2./(1./(m8.FFT1_H1_3_13_Y_ReIm + m8.FFT1_H1_6_13_Y_ReIm + m8.FFT1_H1_9_13_Y_ReIm + m8.FFT1_H1_12_13_Y_ReIm) - ...
1./(m4.FFT1_H1_3_13_Y_ReIm + m4.FFT1_H1_6_13_Y_ReIm + m4.FFT1_H1_9_13_Y_ReIm + m4.FFT1_H1_12_13_Y_ReIm));
G(4,5,:) = 2/B/A./(1./(m8.FFT1_H1_1_13_Y_ReIm - m8.FFT1_H1_9_13_Y_ReIm) - ...
1./(m4.FFT1_H1_1_13_Y_ReIm - m4.FFT1_H1_9_13_Y_ReIm));
G(5,5,:) = 1/B^2*2./(1./(m8.FFT1_H1_6_13_Y_ReIm - m8.FFT1_H1_12_13_Y_ReIm) - ...
1./(m4.FFT1_H1_6_13_Y_ReIm - m4.FFT1_H1_12_13_Y_ReIm));
G(6,5,:) = 2/B/A./(1./(m8.FFT1_H1_7_13_Y_ReIm - m8.FFT1_H1_1_13_Y_ReIm) - ...
1./(m4.FFT1_H1_7_13_Y_ReIm - m4.FFT1_H1_1_13_Y_ReIm));
<span class="org-comment">% My</span>
G<span class="org-type">(1,5,:) </span>= 1<span class="org-type">/</span>B<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m8.FFT1_H1_1_13_Y_ReIm <span class="org-type">+</span> m8.FFT1_H1_4_13_Y_ReIm <span class="org-type">+</span> m8.FFT1_H1_7_13_Y_ReIm <span class="org-type">+</span> m8.FFT1_H1_10_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m4.FFT1_H1_1_13_Y_ReIm <span class="org-type">+</span> m4.FFT1_H1_4_13_Y_ReIm <span class="org-type">+</span> m4.FFT1_H1_7_13_Y_ReIm <span class="org-type">+</span> m4.FFT1_H1_10_13_Y_ReIm));
G<span class="org-type">(2,5,:) </span>= 1<span class="org-type">/</span>B<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m8.FFT1_H1_2_13_Y_ReIm <span class="org-type">+</span> m8.FFT1_H1_5_13_Y_ReIm <span class="org-type">+</span> m8.FFT1_H1_8_13_Y_ReIm <span class="org-type">+</span> m8.FFT1_H1_11_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m4.FFT1_H1_2_13_Y_ReIm <span class="org-type">+</span> m4.FFT1_H1_5_13_Y_ReIm <span class="org-type">+</span> m4.FFT1_H1_8_13_Y_ReIm <span class="org-type">+</span> m4.FFT1_H1_11_13_Y_ReIm));
G<span class="org-type">(3,5,:) </span>= 1<span class="org-type">/</span>B<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m8.FFT1_H1_3_13_Y_ReIm <span class="org-type">+</span> m8.FFT1_H1_6_13_Y_ReIm <span class="org-type">+</span> m8.FFT1_H1_9_13_Y_ReIm <span class="org-type">+</span> m8.FFT1_H1_12_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m4.FFT1_H1_3_13_Y_ReIm <span class="org-type">+</span> m4.FFT1_H1_6_13_Y_ReIm <span class="org-type">+</span> m4.FFT1_H1_9_13_Y_ReIm <span class="org-type">+</span> m4.FFT1_H1_12_13_Y_ReIm));
G<span class="org-type">(4,5,:) </span>= 2<span class="org-type">/</span>B<span class="org-type">/</span>A<span class="org-type">./</span>(1<span class="org-type">./</span>(m8.FFT1_H1_1_13_Y_ReIm <span class="org-type">-</span> m8.FFT1_H1_9_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m4.FFT1_H1_1_13_Y_ReIm <span class="org-type">-</span> m4.FFT1_H1_9_13_Y_ReIm));
G<span class="org-type">(5,5,:) </span>= 1<span class="org-type">/</span>B<span class="org-type">^</span>2<span class="org-type">*</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m8.FFT1_H1_6_13_Y_ReIm <span class="org-type">-</span> m8.FFT1_H1_12_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m4.FFT1_H1_6_13_Y_ReIm <span class="org-type">-</span> m4.FFT1_H1_12_13_Y_ReIm));
G<span class="org-type">(6,5,:) </span>= 2<span class="org-type">/</span>B<span class="org-type">/</span>A<span class="org-type">./</span>(1<span class="org-type">./</span>(m8.FFT1_H1_7_13_Y_ReIm <span class="org-type">-</span> m8.FFT1_H1_1_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m4.FFT1_H1_7_13_Y_ReIm <span class="org-type">-</span> m4.FFT1_H1_1_13_Y_ReIm));
% Mz
G(1,6,:) = 1/A/2./(1./(m10.FFT1_H1_1_13_Y_ReIm + m10.FFT1_H1_4_13_Y_ReIm + m10.FFT1_H1_7_13_Y_ReIm + m10.FFT1_H1_10_13_Y_ReIm) - ...
1./(m9.FFT1_H1_1_13_Y_ReIm + m9.FFT1_H1_4_13_Y_ReIm + m9.FFT1_H1_7_13_Y_ReIm + m9.FFT1_H1_10_13_Y_ReIm));
G(2,6,:) = 1/A/2./(1./(m10.FFT1_H1_2_13_Y_ReIm + m10.FFT1_H1_5_13_Y_ReIm + m10.FFT1_H1_8_13_Y_ReIm + m10.FFT1_H1_11_13_Y_ReIm) - ...
1./(m9.FFT1_H1_2_13_Y_ReIm + m9.FFT1_H1_5_13_Y_ReIm + m9.FFT1_H1_8_13_Y_ReIm + m9.FFT1_H1_11_13_Y_ReIm));
G(3,6,:) = 1/A/2./(1./(m10.FFT1_H1_3_13_Y_ReIm + m10.FFT1_H1_6_13_Y_ReIm + m10.FFT1_H1_9_13_Y_ReIm + m10.FFT1_H1_12_13_Y_ReIm) - ...
1./(m9.FFT1_H1_3_13_Y_ReIm + m9.FFT1_H1_6_13_Y_ReIm + m9.FFT1_H1_9_13_Y_ReIm + m9.FFT1_H1_12_13_Y_ReIm));
G(4,6,:) = 1/A^2*2./(1./(m10.FFT1_H1_1_13_Y_ReIm - m10.FFT1_H1_9_13_Y_ReIm) - ...
1./(m9.FFT1_H1_1_13_Y_ReIm - m9.FFT1_H1_9_13_Y_ReIm));
G(5,6,:) = 2*A/B./(1./(m10.FFT1_H1_6_13_Y_ReIm - m10.FFT1_H1_12_13_Y_ReIm) - ...
1./(m9.FFT1_H1_6_13_Y_ReIm - m9.FFT1_H1_12_13_Y_ReIm));
G(6,6,:) = 1/A^2*2./(1./(m10.FFT1_H1_7_13_Y_ReIm - m10.FFT1_H1_1_13_Y_ReIm) - ...
1./(m9.FFT1_H1_7_13_Y_ReIm - m9.FFT1_H1_1_13_Y_ReIm));
<span class="org-comment">% Mz</span>
G<span class="org-type">(1,6,:) </span>= 1<span class="org-type">/</span>A<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m10.FFT1_H1_1_13_Y_ReIm <span class="org-type">+</span> m10.FFT1_H1_4_13_Y_ReIm <span class="org-type">+</span> m10.FFT1_H1_7_13_Y_ReIm <span class="org-type">+</span> m10.FFT1_H1_10_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m9.FFT1_H1_1_13_Y_ReIm <span class="org-type">+</span> m9.FFT1_H1_4_13_Y_ReIm <span class="org-type">+</span> m9.FFT1_H1_7_13_Y_ReIm <span class="org-type">+</span> m9.FFT1_H1_10_13_Y_ReIm));
G<span class="org-type">(2,6,:) </span>= 1<span class="org-type">/</span>A<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m10.FFT1_H1_2_13_Y_ReIm <span class="org-type">+</span> m10.FFT1_H1_5_13_Y_ReIm <span class="org-type">+</span> m10.FFT1_H1_8_13_Y_ReIm <span class="org-type">+</span> m10.FFT1_H1_11_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m9.FFT1_H1_2_13_Y_ReIm <span class="org-type">+</span> m9.FFT1_H1_5_13_Y_ReIm <span class="org-type">+</span> m9.FFT1_H1_8_13_Y_ReIm <span class="org-type">+</span> m9.FFT1_H1_11_13_Y_ReIm));
G<span class="org-type">(3,6,:) </span>= 1<span class="org-type">/</span>A<span class="org-type">/</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m10.FFT1_H1_3_13_Y_ReIm <span class="org-type">+</span> m10.FFT1_H1_6_13_Y_ReIm <span class="org-type">+</span> m10.FFT1_H1_9_13_Y_ReIm <span class="org-type">+</span> m10.FFT1_H1_12_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m9.FFT1_H1_3_13_Y_ReIm <span class="org-type">+</span> m9.FFT1_H1_6_13_Y_ReIm <span class="org-type">+</span> m9.FFT1_H1_9_13_Y_ReIm <span class="org-type">+</span> m9.FFT1_H1_12_13_Y_ReIm));
G<span class="org-type">(4,6,:) </span>= 1<span class="org-type">/</span>A<span class="org-type">^</span>2<span class="org-type">*</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m10.FFT1_H1_1_13_Y_ReIm <span class="org-type">-</span> m10.FFT1_H1_9_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m9.FFT1_H1_1_13_Y_ReIm <span class="org-type">-</span> m9.FFT1_H1_9_13_Y_ReIm));
G<span class="org-type">(5,6,:) </span>= 2<span class="org-type">*</span>A<span class="org-type">/</span>B<span class="org-type">./</span>(1<span class="org-type">./</span>(m10.FFT1_H1_6_13_Y_ReIm <span class="org-type">-</span> m10.FFT1_H1_12_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m9.FFT1_H1_6_13_Y_ReIm <span class="org-type">-</span> m9.FFT1_H1_12_13_Y_ReIm));
G<span class="org-type">(6,6,:) </span>= 1<span class="org-type">/</span>A<span class="org-type">^</span>2<span class="org-type">*</span>2<span class="org-type">./</span>(1<span class="org-type">./</span>(m10.FFT1_H1_7_13_Y_ReIm <span class="org-type">-</span> m10.FFT1_H1_1_13_Y_ReIm) <span class="org-type">-</span> ...
1<span class="org-type">./</span>(m9.FFT1_H1_7_13_Y_ReIm <span class="org-type">-</span> m9.FFT1_H1_1_13_Y_ReIm));
</pre>
</div>
</div>
</div>
<div id="outline-container-orgc4d6849" class="outline-3">
<h3 id="orgc4d6849"><span class="section-number-3">2.3</span> Diagonal Dynamics</h3>
<div id="outline-container-org7af3187" class="outline-3">
<h3 id="org7af3187"><span class="section-number-3">2.3</span> Diagonal Dynamics</h3>
<div class="outline-text-3" id="text-2-3">
<div class="org-src-container">
<pre class="src src-matlab">figure;
<pre class="src src-matlab"><span class="org-type">figure</span>;
ax1 = subplot(2,1,1);
hold on;
plot(freqs, abs(squeeze(G(1,1,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(2,2,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(3,3,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(1,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
plot(freqs, abs(squeeze(G(2,2,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
plot(freqs, abs(squeeze(G(3,3,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
ylim([1e-9, 2e-6]);
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'log'</span>);
ylabel(<span class="org-string">'Magnitude [m/N]'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,[]);
ylim([1e<span class="org-type">-</span>9, 2e<span class="org-type">-</span>6]);
ax2 = subplot(2,1,2);
hold on;
plot(freqs, 180/pi*angle(squeeze(G(1,1,:))./(-w.^2)), '.', 'DisplayName', '$D_x/F_x$')
plot(freqs, 180/pi*angle(squeeze(G(2,2,:))./(-w.^2)), '.', 'DisplayName', '$D_y/F_y$')
plot(freqs, 180/pi*angle(squeeze(G(3,3,:))./(-w.^2)), '.', 'DisplayName', '$D_z/F_z$')
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(1,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$D_x/F_x$'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(2,2,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$D_y/F_y$'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(3,3,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$D_z/F_z$'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'southwest');
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'lin'</span>);
xlabel(<span class="org-string">'Freqency [Hz]'</span>); ylabel(<span class="org-string">'Phase [deg]'</span>);
ylim([<span class="org-type">-</span>180, 180]);
yticks([<span class="org-type">-</span>180, <span class="org-type">-</span>90, 0, 90, 180]);
legend(<span class="org-string">'location'</span>, <span class="org-string">'southwest'</span>);
linkaxes([ax1,ax2],'x');
linkaxes([ax1,ax2],<span class="org-string">'x'</span>);
xlim([30, 300]);
</pre>
</div>
<div id="org7d6f1be" class="figure">
<div id="orgf9adbb6" class="figure">
<p><img src="figs/compliance_diagonal_translations.png" alt="compliance_diagonal_translations.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Dynamics from Forces to Translations</p>
</div>
<div class="org-src-container">
<pre class="src src-matlab">figure;
<pre class="src src-matlab"><span class="org-type">figure</span>;
ax1 = subplot(2,1,1);
hold on;
plot(freqs, abs(squeeze(G(4,4,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(5,5,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(6,6,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(4,4,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
plot(freqs, abs(squeeze(G(5,5,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
plot(freqs, abs(squeeze(G(6,6,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude [rad/Nm]'); set(gca, 'XTickLabel',[]);
ylim([1e-9, 2e-6]);
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'log'</span>);
ylabel(<span class="org-string">'Magnitude [rad/Nm]'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,[]);
ylim([1e<span class="org-type">-</span>7, 2e<span class="org-type">-</span>4]);
ax2 = subplot(2,1,2);
hold on;
plot(freqs, 180/pi*angle(squeeze(G(4,4,:))./(-w.^2)), '.', 'DisplayName', '$R_x/M_x$')
plot(freqs, 180/pi*angle(squeeze(G(5,5,:))./(-w.^2)), '.', 'DisplayName', '$R_y/M_y$')
plot(freqs, 180/pi*angle(squeeze(G(6,6,:))./(-w.^2)), '.', 'DisplayName', '$R_z/M_z$')
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(4,4,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$R_x/M_x$'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(5,5,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$R_y/M_y$'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(6,6,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$R_z/M_z$'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'southwest');
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'lin'</span>);
xlabel(<span class="org-string">'Freqency [Hz]'</span>); ylabel(<span class="org-string">'Phase [deg]'</span>);
ylim([<span class="org-type">-</span>180, 180]);
yticks([<span class="org-type">-</span>180, <span class="org-type">-</span>90, 0, 90, 180]);
legend(<span class="org-string">'location'</span>, <span class="org-string">'southwest'</span>);
linkaxes([ax1,ax2],'x');
linkaxes([ax1,ax2],<span class="org-string">'x'</span>);
xlim([30, 300]);
</pre>
</div>
<div id="org445a1e9" class="figure">
<div id="org1468ca5" class="figure">
<p><img src="figs/compliance_diagonal_rotations.png" alt="compliance_diagonal_rotations.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Dynamics from Torques to Rotations</p>
</div>
</div>
</div>
<div id="outline-container-org23b9749" class="outline-3">
<h3 id="org23b9749"><span class="section-number-3">2.4</span> Equivalent Stiffness and Mass Estimation</h3>
<div class="outline-text-3" id="text-2-4">
<div class="org-src-container">
<pre class="src src-matlab">K = [1e7, 1e7, 2e8, 5e7, 3e7, 2e7];
f_res = [125, 135, 390, 335, 335, 160];
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">M = [20, 20, 20, 11, 7, 20];
f_res_est = sqrt(K<span class="org-type">./</span>M)<span class="org-type">./</span>(2<span class="org-type">*</span><span class="org-constant">pi</span>);
</pre>
</div>
<p>
Here is the inertia / stiffness to the granite that can represent the micro-station compliance dynamics:
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -670,148 +691,139 @@ xlim([30, 300]);
<col class="org-left" />
<col class="org-right" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-right">Stiffness</th>
<th scope="col" class="org-left">Unit</th>
<th scope="col" class="org-left">Stiffness</th>
<th scope="col" class="org-right">Inertia</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">\(K_x\)</td>
<td class="org-right">1e7</td>
<td class="org-left">[N/m]</td>
<td class="org-left">x</td>
<td class="org-right">10000000.0</td>
</tr>
<tr>
<td class="org-left">\(K_y\)</td>
<td class="org-right">1e7</td>
<td class="org-left">[N/m]</td>
<td class="org-left">y</td>
<td class="org-right">10000000.0</td>
</tr>
<tr>
<td class="org-left">\(K_z\)</td>
<td class="org-right">2e8</td>
<td class="org-left">[N/m]</td>
<td class="org-left">z</td>
<td class="org-right">200000000.0</td>
</tr>
<tr>
<td class="org-left">\(K_{R_x}\)</td>
<td class="org-right">?</td>
<td class="org-left">[Nm/rad]</td>
<td class="org-left">Rx</td>
<td class="org-right">50000000.0</td>
</tr>
<tr>
<td class="org-left">\(K_{R_y}\)</td>
<td class="org-right">1.8e7</td>
<td class="org-left">[Nm/rad]</td>
<td class="org-left">Ry</td>
<td class="org-right">30000000.0</td>
</tr>
<tr>
<td class="org-left">\(K_{R_z}\)</td>
<td class="org-right">1e7</td>
<td class="org-left">[Nm/rad]</td>
<td class="org-left">Rz</td>
<td class="org-right">20000000.0</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org87be1fb" class="outline-3">
<h3 id="org87be1fb"><span class="section-number-3">2.4</span> Compare with Model</h3>
<div class="outline-text-3" id="text-2-4">
<div id="outline-container-org208dda9" class="outline-3">
<h3 id="org208dda9"><span class="section-number-3">2.5</span> Compare with Model</h3>
<div class="outline-text-3" id="text-2-5">
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/model.mat', 'Gm');
<pre class="src src-matlab">load(<span class="org-string">'./mat/model.mat'</span>, <span class="org-string">'Gm'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">figure;
<pre class="src src-matlab"><span class="org-type">figure</span>;
ax1 = subplot(2,1,1);
hold on;
plot(freqs, abs(squeeze(G(1,1,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(2,2,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(3,3,:))./(-w.^2)), '.')
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(Gm(1,1,:), freqs, 'Hz'))), '-')
plot(freqs, abs(squeeze(freqresp(Gm(2,2,:), freqs, 'Hz'))), '-')
plot(freqs, abs(squeeze(freqresp(Gm(3,3,:), freqs, 'Hz'))), '-')
plot(freqs, abs(squeeze(G(1,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
plot(freqs, abs(squeeze(G(2,2,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
plot(freqs, abs(squeeze(G(3,3,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>,<span class="org-string">'ColorOrderIndex'</span>,1);
plot(freqs, abs(squeeze(freqresp(Gm(1,1,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>)
plot(freqs, abs(squeeze(freqresp(Gm(2,2,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>)
plot(freqs, abs(squeeze(freqresp(Gm(3,3,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
ylim([1e-9, 2e-6]);
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'log'</span>);
ylabel(<span class="org-string">'Magnitude [m/N]'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,[]);
ylim([1e<span class="org-type">-</span>9, 2e<span class="org-type">-</span>6]);
ax2 = subplot(2,1,2);
hold on;
plot(freqs, 180/pi*angle(squeeze(G(1,1,:))./(-w.^2)), '.', 'DisplayName', '$D_x/F_x$')
plot(freqs, 180/pi*angle(squeeze(G(2,2,:))./(-w.^2)), '.', 'DisplayName', '$D_y/F_y$')
plot(freqs, 180/pi*angle(squeeze(G(3,3,:))./(-w.^2)), '.', 'DisplayName', '$D_z/F_z$')
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(1,1,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(2,2,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(3,3,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(1,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$D_x/F_x$'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(2,2,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$D_y/F_y$'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(3,3,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$D_z/F_z$'</span>)
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>,<span class="org-string">'ColorOrderIndex'</span>,1);
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(freqresp(Gm(1,1,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(freqresp(Gm(2,2,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(freqresp(Gm(3,3,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'southwest');
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'lin'</span>);
xlabel(<span class="org-string">'Freqency [Hz]'</span>); ylabel(<span class="org-string">'Phase [deg]'</span>);
ylim([<span class="org-type">-</span>180, 180]);
yticks([<span class="org-type">-</span>180, <span class="org-type">-</span>90, 0, 90, 180]);
legend(<span class="org-string">'location'</span>, <span class="org-string">'southwest'</span>);
linkaxes([ax1,ax2],'x');
linkaxes([ax1,ax2],<span class="org-string">'x'</span>);
xlim([30, 300]);
</pre>
</div>
<div id="org40c0b41" class="figure">
<div id="orgbdba037" class="figure">
<p><img src="figs/compliance_diagonal_translations_comp_model.png" alt="compliance_diagonal_translations_comp_model.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Dynamics from Forces to Translations</p>
</div>
<div class="org-src-container">
<pre class="src src-matlab">figure;
<pre class="src src-matlab"><span class="org-type">figure</span>;
ax1 = subplot(2,1,1);
hold on;
plot(freqs, abs(squeeze(G(4,4,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(5,5,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(6,6,:))./(-w.^2)), '.')
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(Gm(4,4,:), freqs, 'Hz'))), '-')
plot(freqs, abs(squeeze(freqresp(Gm(5,5,:), freqs, 'Hz'))), '-')
plot(freqs, abs(squeeze(freqresp(Gm(6,6,:), freqs, 'Hz'))), '-')
plot(freqs, abs(squeeze(G(4,4,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
plot(freqs, abs(squeeze(G(5,5,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
plot(freqs, abs(squeeze(G(6,6,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>,<span class="org-string">'ColorOrderIndex'</span>,1);
plot(freqs, abs(squeeze(freqresp(Gm(4,4,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>)
plot(freqs, abs(squeeze(freqresp(Gm(5,5,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>)
plot(freqs, abs(squeeze(freqresp(Gm(6,6,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude [rad/Nm]'); set(gca, 'XTickLabel',[]);
% ylim([1e-9, 2e-6]);
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'log'</span>);
ylabel(<span class="org-string">'Magnitude [rad/Nm]'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,[]);
<span class="org-comment">% ylim([1e-9, 2e-6]);</span>
ax2 = subplot(2,1,2);
hold on;
plot(freqs, 180/pi*angle(squeeze(G(4,4,:))./(-w.^2)), '.', 'DisplayName', '$R_x/M_x$')
plot(freqs, 180/pi*angle(squeeze(G(5,5,:))./(-w.^2)), '.', 'DisplayName', '$R_y/M_y$')
plot(freqs, 180/pi*angle(squeeze(G(6,6,:))./(-w.^2)), '.', 'DisplayName', '$R_z/M_z$')
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(4,4,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(5,5,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(6,6,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(4,4,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$R_x/M_x$'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(5,5,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$R_y/M_y$'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(6,6,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$R_z/M_z$'</span>)
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>,<span class="org-string">'ColorOrderIndex'</span>,1);
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(freqresp(Gm(4,4,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(freqresp(Gm(5,5,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(freqresp(Gm(6,6,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'southwest');
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'lin'</span>);
xlabel(<span class="org-string">'Freqency [Hz]'</span>); ylabel(<span class="org-string">'Phase [deg]'</span>);
ylim([<span class="org-type">-</span>180, 180]);
yticks([<span class="org-type">-</span>180, <span class="org-type">-</span>90, 0, 90, 180]);
legend(<span class="org-string">'location'</span>, <span class="org-string">'southwest'</span>);
linkaxes([ax1,ax2],'x');
linkaxes([ax1,ax2],<span class="org-string">'x'</span>);
xlim([30, 300]);
</pre>
</div>
<div id="org644f661" class="figure">
<div id="org3c85450" class="figure">
<p><img src="figs/compliance_diagonal_rotations_comp_model.png" alt="compliance_diagonal_rotations_comp_model.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Dynamics from Torques to Rotations</p>
@ -875,75 +887,75 @@ xlim([30, 300]);
</div>
</div>
<div id="outline-container-orgaa2c58a" class="outline-3">
<h3 id="orgaa2c58a"><span class="section-number-3">2.5</span> Coupling Dynamics</h3>
<div class="outline-text-3" id="text-2-5">
<div id="outline-container-org94eb6da" class="outline-3">
<h3 id="org94eb6da"><span class="section-number-3">2.6</span> Coupling Dynamics</h3>
<div class="outline-text-3" id="text-2-6">
<div class="org-src-container">
<pre class="src src-matlab">figure;
<pre class="src src-matlab"><span class="org-type">figure</span>;
ax1 = subplot(2,1,1);
hold on;
plot(freqs, abs(squeeze(G(1,1,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(2,1,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(3,1,:))./(-w.^2)), '.')
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(Gm(1,1,:), freqs, 'Hz'))), '-')
plot(freqs, abs(squeeze(freqresp(Gm(2,1,:), freqs, 'Hz'))), '-')
plot(freqs, abs(squeeze(freqresp(Gm(3,1,:), freqs, 'Hz'))), '-')
plot(freqs, abs(squeeze(G(1,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
plot(freqs, abs(squeeze(G(2,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
plot(freqs, abs(squeeze(G(3,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>,<span class="org-string">'ColorOrderIndex'</span>,1);
plot(freqs, abs(squeeze(freqresp(Gm(1,1,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>)
plot(freqs, abs(squeeze(freqresp(Gm(2,1,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>)
plot(freqs, abs(squeeze(freqresp(Gm(3,1,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
ylim([1e-9, 2e-6]);
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'log'</span>);
ylabel(<span class="org-string">'Magnitude [m/N]'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,[]);
ylim([1e<span class="org-type">-</span>9, 2e<span class="org-type">-</span>6]);
ax2 = subplot(2,1,2);
hold on;
plot(freqs, 180/pi*angle(squeeze(G(1,1,:))./(-w.^2)), '.', 'DisplayName', '$D_x/F_x$')
plot(freqs, 180/pi*angle(squeeze(G(2,1,:))./(-w.^2)), '.', 'DisplayName', '$D_y/F_x$')
plot(freqs, 180/pi*angle(squeeze(G(3,1,:))./(-w.^2)), '.', 'DisplayName', '$D_z/F_x$')
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(1,1,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(2,1,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(3,1,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(1,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$D_x/F_x$'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(2,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$D_y/F_x$'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(3,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$D_z/F_x$'</span>)
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>,<span class="org-string">'ColorOrderIndex'</span>,1);
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(freqresp(Gm(1,1,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(freqresp(Gm(2,1,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(freqresp(Gm(3,1,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'southwest');
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'lin'</span>);
xlabel(<span class="org-string">'Freqency [Hz]'</span>); ylabel(<span class="org-string">'Phase [deg]'</span>);
ylim([<span class="org-type">-</span>180, 180]);
yticks([<span class="org-type">-</span>180, <span class="org-type">-</span>90, 0, 90, 180]);
legend(<span class="org-string">'location'</span>, <span class="org-string">'southwest'</span>);
linkaxes([ax1,ax2],'x');
linkaxes([ax1,ax2],<span class="org-string">'x'</span>);
xlim([30, 300]);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">figure;
<pre class="src src-matlab"><span class="org-type">figure</span>;
ax1 = subplot(2,1,1);
hold on;
plot(freqs, abs(squeeze(G(5,1,:))./(-w.^2)), '.')
plot(freqs, abs(squeeze(G(4,2,:))./(-w.^2)), '.')
set(gca,'ColorOrderIndex',1);
plot(freqs, abs(squeeze(freqresp(Gm(5,1,:), freqs, 'Hz'))), '-')
plot(freqs, abs(squeeze(freqresp(Gm(4,2,:), freqs, 'Hz'))), '-')
plot(freqs, abs(squeeze(G(5,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
plot(freqs, abs(squeeze(G(4,2,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>)
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>,<span class="org-string">'ColorOrderIndex'</span>,1);
plot(freqs, abs(squeeze(freqresp(Gm(5,1,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>)
plot(freqs, abs(squeeze(freqresp(Gm(4,2,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
ylim([1e-9, 2e-6]);
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'log'</span>);
ylabel(<span class="org-string">'Magnitude [m/N]'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XTickLabel'</span>,[]);
ylim([1e<span class="org-type">-</span>9, 2e<span class="org-type">-</span>6]);
ax2 = subplot(2,1,2);
hold on;
plot(freqs, 180/pi*angle(squeeze(G(5,1,:))./(-w.^2)), '.', 'DisplayName', '$R_y/F_x$')
plot(freqs, 180/pi*angle(squeeze(G(4,2,:))./(-w.^2)), '.', 'DisplayName', '$R_x/F_y$')
set(gca,'ColorOrderIndex',1);
plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(5,1,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(4,2,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(5,1,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$R_y/F_x$'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(G(4,2,<span class="org-type">:</span>))<span class="org-type">./</span>(<span class="org-type">-</span>w<span class="org-type">.^</span>2)), <span class="org-string">'.'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'$R_x/F_y$'</span>)
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>,<span class="org-string">'ColorOrderIndex'</span>,1);
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(freqresp(Gm(5,1,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>)
plot(freqs, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>angle(squeeze(freqresp(Gm(4,2,<span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'HandleVisibility'</span>, <span class="org-string">'off'</span>)
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'southwest');
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'lin'</span>);
xlabel(<span class="org-string">'Freqency [Hz]'</span>); ylabel(<span class="org-string">'Phase [deg]'</span>);
ylim([<span class="org-type">-</span>180, 180]);
yticks([<span class="org-type">-</span>180, <span class="org-type">-</span>90, 0, 90, 180]);
legend(<span class="org-string">'location'</span>, <span class="org-string">'southwest'</span>);
linkaxes([ax1,ax2],'x');
linkaxes([ax1,ax2],<span class="org-string">'x'</span>);
xlim([30, 300]);
</pre>
</div>
@ -953,7 +965,7 @@ xlim([30, 300]);
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-08-18 mar. 12:57</p>
<p class="date">Created: 2020-11-03 mar. 09:32</p>
</div>
</body>
</html>

View File

@ -262,7 +262,7 @@ From hammer blows to pure forces / torques:
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Magnitude [rad/Nm]'); set(gca, 'XTickLabel',[]);
ylim([1e-9, 2e-6]);
ylim([1e-7, 2e-4]);
ax2 = subplot(2,1,2);
hold on;
@ -289,14 +289,33 @@ From hammer blows to pure forces / torques:
#+RESULTS:
[[file:figs/compliance_diagonal_rotations.png]]
| | Stiffness | Unit |
|-----------+-----------+----------|
| $K_x$ | 1e7 | [N/m] |
| $K_y$ | 1e7 | [N/m] |
| $K_z$ | 2e8 | [N/m] |
| $K_{R_x}$ | ? | [Nm/rad] |
| $K_{R_y}$ | 1.8e7 | [Nm/rad] |
| $K_{R_z}$ | 1e7 | [Nm/rad] |
** Equivalent Stiffness and Mass Estimation
#+begin_src matlab
K = [1e7, 1e7, 2e8, 5e7, 3e7, 2e7];
f_res = [125, 135, 390, 335, 335, 160];
#+end_src
#+begin_src matlab
M = [20, 20, 20, 11, 7, 20];
f_res_est = sqrt(K./M)./(2*pi);
#+end_src
Here is the inertia / stiffness to the granite that can represent the micro-station compliance dynamics:
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable([K'], {'x', 'y', 'z', 'Rx', 'Ry', 'Rz'}, {'Stiffness', 'Inertia'}, ' %.1g ');
#+end_src
#+RESULTS:
| Stiffness | Inertia |
|-----------+-------------|
| x | 10000000.0 |
| y | 10000000.0 |
| z | 200000000.0 |
| Rx | 50000000.0 |
| Ry | 30000000.0 |
| Rz | 20000000.0 |
** Compare with Model
#+begin_src matlab