Add micro-station compliance measurement/analysis
This commit is contained in:
parent
4838b6e026
commit
e687a92f7e
BIN
micro-station-compliance/data/Measurement1.mat
Executable file
BIN
micro-station-compliance/data/Measurement1.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/Measurement10.mat
Executable file
BIN
micro-station-compliance/data/Measurement10.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/Measurement2.mat
Executable file
BIN
micro-station-compliance/data/Measurement2.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/Measurement3.mat
Executable file
BIN
micro-station-compliance/data/Measurement3.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/Measurement4.mat
Executable file
BIN
micro-station-compliance/data/Measurement4.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/Measurement5.mat
Executable file
BIN
micro-station-compliance/data/Measurement5.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/Measurement6.mat
Executable file
BIN
micro-station-compliance/data/Measurement6.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/Measurement7.mat
Executable file
BIN
micro-station-compliance/data/Measurement7.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/Measurement8.mat
Executable file
BIN
micro-station-compliance/data/Measurement8.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/Measurement9.mat
Executable file
BIN
micro-station-compliance/data/Measurement9.mat
Executable file
Binary file not shown.
49
micro-station-compliance/data/id31_nass_11august2020.m
Executable file
49
micro-station-compliance/data/id31_nass_11august2020.m
Executable file
@ -0,0 +1,49 @@
|
||||
ID31 NASS - 11/08/2020
|
||||
|
||||
ch1 to 3: acc 3D 1v/g
|
||||
ch4 to 6: acc 3D 1v/g
|
||||
ch7 to 9: acc 3D 100m/g
|
||||
ch10 to 12: acc 3D 1v/g
|
||||
Ch13: hammer 230uV/N
|
||||
|
||||
|
||||
|
||||
%% 12/08/2020
|
||||
% change hammer tip to red
|
||||
% Bandwidth changed to 400Hz
|
||||
|
||||
excitation capteur 1 Y
|
||||
Meas1
|
||||
|
||||
excitation capteur 1 -Z
|
||||
Meas2
|
||||
|
||||
excitation capteur 2 X
|
||||
Meas3
|
||||
|
||||
excitation capteur 2 -Z
|
||||
Meas4
|
||||
|
||||
excitation capteur 3 -Y
|
||||
Meas5
|
||||
|
||||
|
||||
excitation capteur 3 -Z
|
||||
Meas6
|
||||
|
||||
excitation capteur 4 -X
|
||||
Meas7
|
||||
|
||||
excitation capteur 4 -Z
|
||||
Meas8
|
||||
|
||||
excitation capteur 3 -X on black block RZ
|
||||
Meas9
|
||||
|
||||
excitation capteur 1 -X on black block RZ
|
||||
Meas10
|
||||
|
||||
% ---------------------------
|
||||
%% vibrometre on TY 0.2mm/s/V
|
||||
excitation -Y
|
||||
Meas2
|
BIN
micro-station-compliance/data/id31_nass_ty_12august2020/Measurement2.mat
Executable file
BIN
micro-station-compliance/data/id31_nass_ty_12august2020/Measurement2.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/id31_nass_ty_12august2020/record/Measurement2.mat
Executable file
BIN
micro-station-compliance/data/id31_nass_ty_12august2020/record/Measurement2.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/record/Measurement1.mat
Executable file
BIN
micro-station-compliance/data/record/Measurement1.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/record/Measurement10.mat
Executable file
BIN
micro-station-compliance/data/record/Measurement10.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/record/Measurement2.mat
Executable file
BIN
micro-station-compliance/data/record/Measurement2.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/record/Measurement3.mat
Executable file
BIN
micro-station-compliance/data/record/Measurement3.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/record/Measurement4.mat
Executable file
BIN
micro-station-compliance/data/record/Measurement4.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/record/Measurement5.mat
Executable file
BIN
micro-station-compliance/data/record/Measurement5.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/record/Measurement6.mat
Executable file
BIN
micro-station-compliance/data/record/Measurement6.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/record/Measurement7.mat
Executable file
BIN
micro-station-compliance/data/record/Measurement7.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/record/Measurement8.mat
Executable file
BIN
micro-station-compliance/data/record/Measurement8.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/data/record/Measurement9.mat
Executable file
BIN
micro-station-compliance/data/record/Measurement9.mat
Executable file
Binary file not shown.
BIN
micro-station-compliance/figs/compliance_diagonal_rotations.png
Normal file
BIN
micro-station-compliance/figs/compliance_diagonal_rotations.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 181 KiB |
Binary file not shown.
After Width: | Height: | Size: 189 KiB |
Binary file not shown.
After Width: | Height: | Size: 188 KiB |
Binary file not shown.
After Width: | Height: | Size: 207 KiB |
959
micro-station-compliance/index.html
Normal file
959
micro-station-compliance/index.html
Normal file
@ -0,0 +1,959 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"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 -->
|
||||
<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" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="../css/zenburn.css"/>
|
||||
<script type="text/javascript" src="../js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="../js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
<script type="text/javascript" src="../js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="../index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Compliance Measurement of the Micro Station</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org0f99e70">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>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org945c638">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>
|
||||
</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 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 class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
Orientation is relative to the frame determined by the X-ray
|
||||
</p>
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-right" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-right"><b>Num</b></th>
|
||||
<th scope="col" class="org-left"><b>Position</b></th>
|
||||
<th scope="col" class="org-left"><b>Orientation</b></th>
|
||||
<th scope="col" class="org-left"><b>Sensibility</b></th>
|
||||
<th scope="col" class="org-right"><b>Channels</b></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-right">1</td>
|
||||
<td class="org-left">[0, +A, 0]</td>
|
||||
<td class="org-left">[x, y, z]</td>
|
||||
<td class="org-left">1V/g</td>
|
||||
<td class="org-right">1-3</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">2</td>
|
||||
<td class="org-left">[-B, 0, 0]</td>
|
||||
<td class="org-left">[x, y, z]</td>
|
||||
<td class="org-left">1V/g</td>
|
||||
<td class="org-right">4-6</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">3</td>
|
||||
<td class="org-left">[0, -A, 0]</td>
|
||||
<td class="org-left">[x, y, z]</td>
|
||||
<td class="org-left">0.1V/g</td>
|
||||
<td class="org-right">7-9</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">4</td>
|
||||
<td class="org-left">[+B, 0, 0]</td>
|
||||
<td class="org-left">[x, y, z]</td>
|
||||
<td class="org-left">1V/g</td>
|
||||
<td class="org-right">10-12</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Instrumented Hammer:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Channel 13</li>
|
||||
<li>Sensibility: 230 uV/N</li>
|
||||
</ul>
|
||||
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-right" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-right">Acc Number</th>
|
||||
<th scope="col" class="org-left">Dir</th>
|
||||
<th scope="col" class="org-right">Channel Number</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-right">1</td>
|
||||
<td class="org-left">x</td>
|
||||
<td class="org-right">1</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">1</td>
|
||||
<td class="org-left">y</td>
|
||||
<td class="org-right">2</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">1</td>
|
||||
<td class="org-left">z</td>
|
||||
<td class="org-right">3</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">2</td>
|
||||
<td class="org-left">x</td>
|
||||
<td class="org-right">4</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">2</td>
|
||||
<td class="org-left">y</td>
|
||||
<td class="org-right">5</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">2</td>
|
||||
<td class="org-left">z</td>
|
||||
<td class="org-right">6</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">3</td>
|
||||
<td class="org-left">x</td>
|
||||
<td class="org-right">7</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">3</td>
|
||||
<td class="org-left">y</td>
|
||||
<td class="org-right">8</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">3</td>
|
||||
<td class="org-left">z</td>
|
||||
<td class="org-right">9</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">4</td>
|
||||
<td class="org-left">x</td>
|
||||
<td class="org-right">10</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">4</td>
|
||||
<td class="org-left">y</td>
|
||||
<td class="org-right">11</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">4</td>
|
||||
<td class="org-left">z</td>
|
||||
<td class="org-right">12</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">Hammer</td>
|
||||
<td class="org-left"> </td>
|
||||
<td class="org-right">13</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
From the acceleration measurement of the 4 accelerometers, we can compute the translations and rotations:
|
||||
</p>
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-left"> </th>
|
||||
<th scope="col" class="org-left"><b>Formula</b></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-left">\(D_x\)</td>
|
||||
<td class="org-left">(1x + 2x + 3x + 4x)/4</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(D_y\)</td>
|
||||
<td class="org-left">(1y + 2y + 3y + 4y)/4</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(D_z\)</td>
|
||||
<td class="org-left">(1z + 2z + 3z + 4z)/4</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(R_x\)</td>
|
||||
<td class="org-left">(1z - 3z)/A</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(R_y\)</td>
|
||||
<td class="org-left">(2z - 4z)/B</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(R_z\)</td>
|
||||
<td class="org-left">(3x - 1x)/A, (4y - 2y)/B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-left"> </th>
|
||||
<th scope="col" class="org-left"><b>Formula</b></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-left">\(D_x\)</td>
|
||||
<td class="org-left">(1 + 4 + 7 + 10)/4</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(D_y\)</td>
|
||||
<td class="org-left">(2 + 5 + 8 + 11)/4</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(D_z\)</td>
|
||||
<td class="org-left">(3 + 6 + 9 + 12)/4</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(R_x\)</td>
|
||||
<td class="org-left">(1 - 9)/A</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(R_y\)</td>
|
||||
<td class="org-left">(6 - 12)/B</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(R_z\)</td>
|
||||
<td class="org-left">(7 - 1)/A, (11 - 5)/B</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</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 class="outline-text-3" id="text-1-2">
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-right"><b>Num</b></th>
|
||||
<th scope="col" class="org-left"><b>Direction</b></th>
|
||||
<th scope="col" class="org-left"><b>Position</b></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-right">1</td>
|
||||
<td class="org-left">-Y</td>
|
||||
<td class="org-left">[0, +A, 0]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">2</td>
|
||||
<td class="org-left">-Z</td>
|
||||
<td class="org-left">[0, +A, 0]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">3</td>
|
||||
<td class="org-left">X</td>
|
||||
<td class="org-left">[-B, 0, 0]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">4</td>
|
||||
<td class="org-left">-Z</td>
|
||||
<td class="org-left">[-B, 0, 0]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">5</td>
|
||||
<td class="org-left">Y</td>
|
||||
<td class="org-left">[0, -A, 0]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">6</td>
|
||||
<td class="org-left">-Z</td>
|
||||
<td class="org-left">[0, -A, 0]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">7</td>
|
||||
<td class="org-left">-X</td>
|
||||
<td class="org-left">[+B, 0, 0]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">8</td>
|
||||
<td class="org-left">-Z</td>
|
||||
<td class="org-left">[+B, 0, 0]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">9</td>
|
||||
<td class="org-left">-X</td>
|
||||
<td class="org-left">[0, -A, 0]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">10</td>
|
||||
<td class="org-left">-X</td>
|
||||
<td class="org-left">[0, +A, 0]</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
From hammer blows to pure forces / torques:
|
||||
</p>
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-left"> </th>
|
||||
<th scope="col" class="org-left"><b>Formula</b></th>
|
||||
<th scope="col" class="org-left">Alternative</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-left">\(F_x\)</td>
|
||||
<td class="org-left">+3</td>
|
||||
<td class="org-left">-7</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(F_y\)</td>
|
||||
<td class="org-left">-1</td>
|
||||
<td class="org-left">+5</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(F_z\)</td>
|
||||
<td class="org-left">-(2 + 6)/2</td>
|
||||
<td class="org-left">-(4 + 8)/2</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(M_x\)</td>
|
||||
<td class="org-left">A/2*(2 - 6)</td>
|
||||
<td class="org-left"> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(M_y\)</td>
|
||||
<td class="org-left">B/2*(8 - 4)</td>
|
||||
<td class="org-left"> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(M_z\)</td>
|
||||
<td class="org-left">A/2*(10 - 9)</td>
|
||||
<td class="org-left"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org945c638" class="outline-2">
|
||||
<h2 id="org945c638"><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 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>
|
||||
</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 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';
|
||||
|
||||
A = 0.14;
|
||||
B = 0.14;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<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;
|
||||
|
||||
% 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;
|
||||
|
||||
|
||||
% 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));
|
||||
|
||||
% 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));
|
||||
|
||||
% 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));
|
||||
|
||||
% 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));
|
||||
</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 class="outline-text-3" id="text-2-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">figure;
|
||||
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)), '.')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-9, 2e-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$')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org7d6f1be" 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;
|
||||
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)), '.')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [rad/Nm]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-9, 2e-6]);
|
||||
|
||||
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$')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org445a1e9" 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>
|
||||
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-left"> </th>
|
||||
<th scope="col" class="org-right">Stiffness</th>
|
||||
<th scope="col" class="org-left">Unit</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>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(K_y\)</td>
|
||||
<td class="org-right">1e7</td>
|
||||
<td class="org-left">[N/m]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(K_z\)</td>
|
||||
<td class="org-right">2e8</td>
|
||||
<td class="org-left">[N/m]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(K_{R_x}\)</td>
|
||||
<td class="org-right">?</td>
|
||||
<td class="org-left">[Nm/rad]</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>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(K_{R_z}\)</td>
|
||||
<td class="org-right">1e7</td>
|
||||
<td class="org-left">[Nm/rad]</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 class="org-src-container">
|
||||
<pre class="src src-matlab">load('./mat/model.mat', 'Gm');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">figure;
|
||||
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'))), '-')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-9, 2e-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')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org40c0b41" 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;
|
||||
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'))), '-')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [rad/Nm]'); set(gca, 'XTickLabel',[]);
|
||||
% ylim([1e-9, 2e-6]);
|
||||
|
||||
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')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org644f661" 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>
|
||||
</div>
|
||||
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-right" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-left"> </th>
|
||||
<th scope="col" class="org-right">Stiffness</th>
|
||||
<th scope="col" class="org-left">Unit</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>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(K_y\)</td>
|
||||
<td class="org-right">1e7</td>
|
||||
<td class="org-left">[N/m]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(K_z\)</td>
|
||||
<td class="org-right">2e8</td>
|
||||
<td class="org-left">[N/m]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(K_{R_x}\)</td>
|
||||
<td class="org-right">5e7</td>
|
||||
<td class="org-left">[Nm/rad]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(K_{R_y}\)</td>
|
||||
<td class="org-right">3e7</td>
|
||||
<td class="org-left">[Nm/rad]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(K_{R_z}\)</td>
|
||||
<td class="org-right">2e7</td>
|
||||
<td class="org-left">[Nm/rad]</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</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 class="org-src-container">
|
||||
<pre class="src src-matlab">figure;
|
||||
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'))), '-')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-9, 2e-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')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">figure;
|
||||
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'))), '-')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-9, 2e-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')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-08-18 mar. 12:57</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
473
micro-station-compliance/index.org
Normal file
473
micro-station-compliance/index.org
Normal file
@ -0,0 +1,473 @@
|
||||
#+TITLE: Compliance Measurement of the Micro Station
|
||||
:DRAWER:
|
||||
#+STARTUP: overview
|
||||
|
||||
#+LANGUAGE: en
|
||||
#+EMAIL: dehaeze.thomas@gmail.com
|
||||
#+AUTHOR: Dehaeze Thomas
|
||||
|
||||
#+HTML_LINK_HOME: ../index.html
|
||||
#+HTML_LINK_UP: ../index.html
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="../css/zenburn.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="../js/readtheorg.js"></script>
|
||||
|
||||
#+HTML_MATHJAX: align: center tagside: right font: TeX
|
||||
|
||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||
#+PROPERTY: header-args:matlab+ :comments org
|
||||
#+PROPERTY: header-args:matlab+ :results none
|
||||
#+PROPERTY: header-args:matlab+ :exports both
|
||||
#+PROPERTY: header-args:matlab+ :eval no-export
|
||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||
|
||||
#+PROPERTY: header-args:shell :eval no-export
|
||||
:END:
|
||||
|
||||
* Setup
|
||||
** Position of inertial sensors on top of the micro-hexapod
|
||||
Orientation is relative to the frame determined by the X-ray
|
||||
| *Num* | *Position* | *Orientation* | *Sensibility* | *Channels* |
|
||||
|-------+------------+---------------+---------------+------------|
|
||||
| 1 | [0, +A, 0] | [x, y, z] | 1V/g | 1-3 |
|
||||
| 2 | [-B, 0, 0] | [x, y, z] | 1V/g | 4-6 |
|
||||
| 3 | [0, -A, 0] | [x, y, z] | 0.1V/g | 7-9 |
|
||||
| 4 | [+B, 0, 0] | [x, y, z] | 1V/g | 10-12 |
|
||||
|
||||
Instrumented Hammer:
|
||||
- Channel 13
|
||||
- Sensibility: 230 uV/N
|
||||
|
||||
| Acc Number | Dir | Channel Number |
|
||||
|------------+-----+----------------|
|
||||
| 1 | x | 1 |
|
||||
| 1 | y | 2 |
|
||||
| 1 | z | 3 |
|
||||
| 2 | x | 4 |
|
||||
| 2 | y | 5 |
|
||||
| 2 | z | 6 |
|
||||
| 3 | x | 7 |
|
||||
| 3 | y | 8 |
|
||||
| 3 | z | 9 |
|
||||
| 4 | x | 10 |
|
||||
| 4 | y | 11 |
|
||||
| 4 | z | 12 |
|
||||
| Hammer | | 13 |
|
||||
|
||||
From the acceleration measurement of the 4 accelerometers, we can compute the translations and rotations:
|
||||
| | *Formula* |
|
||||
|-------+--------------------------|
|
||||
| $D_x$ | (1x + 2x + 3x + 4x)/4 |
|
||||
| $D_y$ | (1y + 2y + 3y + 4y)/4 |
|
||||
| $D_z$ | (1z + 2z + 3z + 4z)/4 |
|
||||
| $R_x$ | (1z - 3z)/A |
|
||||
| $R_y$ | (2z - 4z)/B |
|
||||
| $R_z$ | (3x - 1x)/A, (4y - 2y)/B |
|
||||
|
||||
|
||||
| | *Formula* |
|
||||
|-------+-----------------------|
|
||||
| $D_x$ | (1 + 4 + 7 + 10)/4 |
|
||||
| $D_y$ | (2 + 5 + 8 + 11)/4 |
|
||||
| $D_z$ | (3 + 6 + 9 + 12)/4 |
|
||||
| $R_x$ | (1 - 9)/A |
|
||||
| $R_y$ | (6 - 12)/B |
|
||||
| $R_z$ | (7 - 1)/A, (11 - 5)/B |
|
||||
|
||||
** Hammer blow position/orientation
|
||||
|
||||
| *Num* | *Direction* | *Position* |
|
||||
|-------+-------------+------------|
|
||||
| 1 | -Y | [0, +A, 0] |
|
||||
| 2 | -Z | [0, +A, 0] |
|
||||
| 3 | X | [-B, 0, 0] |
|
||||
| 4 | -Z | [-B, 0, 0] |
|
||||
| 5 | Y | [0, -A, 0] |
|
||||
| 6 | -Z | [0, -A, 0] |
|
||||
| 7 | -X | [+B, 0, 0] |
|
||||
| 8 | -Z | [+B, 0, 0] |
|
||||
| 9 | -X | [0, -A, 0] |
|
||||
| 10 | -X | [0, +A, 0] |
|
||||
|
||||
From hammer blows to pure forces / torques:
|
||||
| | *Formula* | Alternative |
|
||||
|-------+--------------+-------------|
|
||||
| $F_x$ | +3 | -7 |
|
||||
| $F_y$ | -1 | +5 |
|
||||
| $F_z$ | -(2 + 6)/2 | -(4 + 8)/2 |
|
||||
| $M_x$ | A/2*(2 - 6) | |
|
||||
| $M_y$ | B/2*(8 - 4) | |
|
||||
| $M_z$ | A/2*(10 - 9) | |
|
||||
|
||||
* Results
|
||||
** Matlab Init :noexport:ignore:
|
||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
#+end_src
|
||||
|
||||
** Load Data
|
||||
#+begin_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');
|
||||
#+end_src
|
||||
|
||||
** Compute Transfer Functions
|
||||
#+begin_src matlab
|
||||
freqs = m3.FFT1_H1_1_13_X_Val;
|
||||
w = 2*pi*freqs';
|
||||
|
||||
A = 0.14;
|
||||
B = 0.14;
|
||||
#+end_src
|
||||
|
||||
#+begin_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;
|
||||
|
||||
% 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;
|
||||
|
||||
|
||||
% 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));
|
||||
|
||||
% 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));
|
||||
|
||||
% 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));
|
||||
|
||||
% 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));
|
||||
#+end_src
|
||||
|
||||
** Diagonal Dynamics
|
||||
#+begin_src matlab
|
||||
figure;
|
||||
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)), '.')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-9, 2e-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$')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/compliance_diagonal_translations.pdf', 'width', 'full', 'height', 'full');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:compliance_diagonal_translations
|
||||
#+caption: Dynamics from Forces to Translations
|
||||
#+RESULTS:
|
||||
[[file:figs/compliance_diagonal_translations.png]]
|
||||
|
||||
#+begin_src matlab
|
||||
figure;
|
||||
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)), '.')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [rad/Nm]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-9, 2e-6]);
|
||||
|
||||
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$')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/compliance_diagonal_rotations.pdf', 'width', 'full', 'height', 'full');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:compliance_diagonal_rotations
|
||||
#+caption: Dynamics from Torques to Rotations
|
||||
#+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] |
|
||||
|
||||
** Compare with Model
|
||||
#+begin_src matlab
|
||||
load('./mat/model.mat', 'Gm');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
figure;
|
||||
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'))), '-')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-9, 2e-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')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/compliance_diagonal_translations_comp_model.pdf', 'width', 'full', 'height', 'full');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:compliance_diagonal_translations_comp_model
|
||||
#+caption: Dynamics from Forces to Translations
|
||||
#+RESULTS:
|
||||
[[file:figs/compliance_diagonal_translations_comp_model.png]]
|
||||
|
||||
#+begin_src matlab
|
||||
figure;
|
||||
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'))), '-')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [rad/Nm]'); set(gca, 'XTickLabel',[]);
|
||||
% ylim([1e-9, 2e-6]);
|
||||
|
||||
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')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/compliance_diagonal_rotations_comp_model.pdf', 'width', 'full', 'height', 'full');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:compliance_diagonal_rotations_comp_model
|
||||
#+caption: Dynamics from Torques to Rotations
|
||||
#+RESULTS:
|
||||
[[file:figs/compliance_diagonal_rotations_comp_model.png]]
|
||||
|
||||
| | Stiffness | Unit |
|
||||
|-----------+-----------+----------|
|
||||
| $K_x$ | 1e7 | [N/m] |
|
||||
| $K_y$ | 1e7 | [N/m] |
|
||||
| $K_z$ | 2e8 | [N/m] |
|
||||
| $K_{R_x}$ | 5e7 | [Nm/rad] |
|
||||
| $K_{R_y}$ | 3e7 | [Nm/rad] |
|
||||
| $K_{R_z}$ | 2e7 | [Nm/rad] |
|
||||
|
||||
** Coupling Dynamics
|
||||
#+begin_src matlab
|
||||
figure;
|
||||
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'))), '-')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-9, 2e-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')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab
|
||||
figure;
|
||||
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'))), '-')
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-9, 2e-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')
|
||||
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');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
xlim([30, 300]);
|
||||
#+end_src
|
||||
|
BIN
micro-station-compliance/mat/model.mat
Normal file
BIN
micro-station-compliance/mat/model.mat
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user