Use online CSS and JS
This commit is contained in:
@@ -3,53 +3,58 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-09-01 mar. 13:47 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Identification</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Identification</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org2770d63">1. Some notes about the Simscape Model</a></li>
|
||||
<li><a href="#org66149fc">2. Compare with measurements at the CoM of each element</a>
|
||||
<li><a href="#org5582ea0">1. Some notes about the Simscape Model</a></li>
|
||||
<li><a href="#orgf85a160">2. Compare with measurements at the CoM of each element</a>
|
||||
<ul>
|
||||
<li><a href="#orgcfb741d">2.1. Prepare the Simulation</a></li>
|
||||
<li><a href="#orgec82ba2">2.2. Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</a></li>
|
||||
<li><a href="#org57b3870">2.3. Create a frame at the CoM of each solid body</a></li>
|
||||
<li><a href="#orgc263d1a">2.4. Identification of the dynamics of the Simscape Model</a></li>
|
||||
<li><a href="#org0c6ab2b">2.5. Compare with measurements</a></li>
|
||||
<li><a href="#orge69d679">2.1. Prepare the Simulation</a></li>
|
||||
<li><a href="#orgb9afb3f">2.2. Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</a></li>
|
||||
<li><a href="#org2138392">2.3. Create a frame at the CoM of each solid body</a></li>
|
||||
<li><a href="#orgd2f0b7f">2.4. Identification of the dynamics of the Simscape Model</a></li>
|
||||
<li><a href="#org46896c0">2.5. Compare with measurements</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org4704f01">3. Obtained Compliance of the Micro-Station</a>
|
||||
<li><a href="#org4b5f363">3. Obtained Compliance of the Micro-Station</a>
|
||||
<ul>
|
||||
<li><a href="#orge0c91d3">3.1. Initialization</a></li>
|
||||
<li><a href="#org177dd40">3.1. Initialization</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orga1de7a7">4. Conclusion</a></li>
|
||||
<li><a href="#orgba8bb2d">4. Conclusion</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -70,8 +75,8 @@ We can then compare the measured Frequency Response Functions with the identifie
|
||||
Finally, this should help to tune the parameters of the model such that the dynamics is closer to the measured FRF.
|
||||
</p>
|
||||
|
||||
<div id="outline-container-org2770d63" class="outline-2">
|
||||
<h2 id="org2770d63"><span class="section-number-2">1</span> Some notes about the Simscape Model</h2>
|
||||
<div id="outline-container-org5582ea0" class="outline-2">
|
||||
<h2 id="org5582ea0"><span class="section-number-2">1</span> Some notes about the Simscape Model</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
The Simscape Model of the micro-station consists of several solid bodies:
|
||||
@@ -97,18 +102,18 @@ Some of the springs and dampers values can be estimated from the joints/stages s
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org66149fc" class="outline-2">
|
||||
<h2 id="org66149fc"><span class="section-number-2">2</span> Compare with measurements at the CoM of each element</h2>
|
||||
<div id="outline-container-orgf85a160" class="outline-2">
|
||||
<h2 id="orgf85a160"><span class="section-number-2">2</span> Compare with measurements at the CoM of each element</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
</div>
|
||||
<div id="outline-container-orgcfb741d" class="outline-3">
|
||||
<h3 id="orgcfb741d"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
|
||||
<div id="outline-container-orge69d679" class="outline-3">
|
||||
<h3 id="orge69d679"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
We load the configuration.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('mat/conf_simulink.mat');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'mat/conf_simulink.mat'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -116,7 +121,7 @@ We load the configuration.
|
||||
We set a small <code>StopTime</code>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">set_param(conf_simulink, 'StopTime', '0.5');
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">set_param</span>(<span class="org-variable-name">conf_simulink</span>, <span class="org-string">'StopTime'</span>, <span class="org-string">'0.5'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -124,46 +129,46 @@ We set a small <code>StopTime</code>.
|
||||
We initialize all the stages.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround( 'type', 'rigid');
|
||||
initializeGranite( 'type', 'modal-analysis');
|
||||
initializeTy( 'type', 'modal-analysis');
|
||||
initializeRy( 'type', 'modal-analysis');
|
||||
initializeRz( 'type', 'modal-analysis');
|
||||
initializeMicroHexapod('type', 'modal-analysis');
|
||||
initializeAxisc( 'type', 'flexible');
|
||||
<pre class="src src-matlab"> initializeGround( <span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeGranite( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeTy( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeRy( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeRz( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeAxisc( <span class="org-string">'type'</span>, <span class="org-string">'flexible'</span>);
|
||||
|
||||
initializeMirror( 'type', 'none');
|
||||
initializeNanoHexapod( 'type', 'none');
|
||||
initializeSample( 'type', 'none');
|
||||
initializeMirror( <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeNanoHexapod( <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeSample( <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
|
||||
initializeController( 'type', 'open-loop');
|
||||
initializeController( <span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||
|
||||
initializeReferences();
|
||||
initializeDisturbances('enable', false);
|
||||
initializeReferences();
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgec82ba2" class="outline-3">
|
||||
<h3 id="orgec82ba2"><span class="section-number-3">2.2</span> Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</h3>
|
||||
<div id="outline-container-orgb9afb3f" class="outline-3">
|
||||
<h3 id="orgb9afb3f"><span class="section-number-3">2.2</span> Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
Thanks to the <a href="https://fr.mathworks.com/help/physmod/sm/ref/inertiasensor.html">Inertia Sensor</a> simscape block, it is possible to estimate the position of the Center of Mass of a solid body with respect to a defined frame.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">sim('nass_model')
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The results are shown in the table <a href="#org0a81dc1">1</a>.
|
||||
The results are shown in the table <a href="#orge10376e">1</a>.
|
||||
</p>
|
||||
|
||||
<table id="org0a81dc1" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="orge10376e" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 1:</span> Center of Mass of each solid body as defined in Simscape</caption>
|
||||
|
||||
<colgroup>
|
||||
@@ -226,10 +231,10 @@ The results are shown in the table <a href="#org0a81dc1">1</a>.
|
||||
</table>
|
||||
|
||||
<p>
|
||||
We can compare the obtained center of mass (table <a href="#org0a81dc1">1</a>) with the one used for the Modal Analysis shown in table <a href="#orgc7b8d3c">2</a>.
|
||||
We can compare the obtained center of mass (table <a href="#orge10376e">1</a>) with the one used for the Modal Analysis shown in table <a href="#orga804fe7">2</a>.
|
||||
</p>
|
||||
|
||||
<table id="orgc7b8d3c" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="orga804fe7" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 2:</span> Estimated Center of Mass of each solid body using Solidworks</caption>
|
||||
|
||||
<colgroup>
|
||||
@@ -303,8 +308,8 @@ However, in SolidWorks, this has probably not be included with the top granite.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org57b3870" class="outline-3">
|
||||
<h3 id="org57b3870"><span class="section-number-3">2.3</span> Create a frame at the CoM of each solid body</h3>
|
||||
<div id="outline-container-org2138392" class="outline-3">
|
||||
<h3 id="org2138392"><span class="section-number-3">2.3</span> Create a frame at the CoM of each solid body</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
Now we use one <code>inertiasensor</code> block connected on each solid body that measured the center of mass of this solid with respect to the same connected frame.
|
||||
@@ -315,12 +320,12 @@ We do that in order to position an accelerometer on the Simscape model at this p
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">open('identification/matlab/sim_micro_station_com_estimation.slx')
|
||||
<pre class="src src-matlab"> open(<span class="org-string">'identification/matlab/sim_micro_station_com_estimation.slx'</span>)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">sim('sim_micro_station_com_estimation')
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'sim_micro_station_com_estimation'</span>)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -390,14 +395,14 @@ We do that in order to position an accelerometer on the Simscape model at this p
|
||||
We now same this for further use:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">granite_bot_com = granite_bot_com.Data(end, :)';
|
||||
granite_top_com = granite_top_com.Data(end, :)';
|
||||
ty_com = ty_com.Data(end, :)';
|
||||
ry_com = ry_com.Data(end, :)';
|
||||
rz_com = rz_com.Data(end, :)';
|
||||
hexa_com = hexa_com.Data(end, :)';
|
||||
<pre class="src src-matlab"> granite_bot_com = granite_bot_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
granite_top_com = granite_top_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
ty_com = ty_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
ry_com = ry_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
rz_com = rz_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
hexa_com = hexa_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
|
||||
save('./mat/solids_com.mat', 'granite_bot_com', 'granite_top_com', 'ty_com', 'ry_com', 'rz_com', 'hexa_com');
|
||||
save(<span class="org-string">'./mat/solids_com.mat'</span>, <span class="org-string">'granite_bot_com'</span>, <span class="org-string">'granite_top_com'</span>, <span class="org-string">'ty_com'</span>, <span class="org-string">'ry_com'</span>, <span class="org-string">'rz_com'</span>, <span class="org-string">'hexa_com'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -407,20 +412,20 @@ Then, we use the obtained results to add a <code>rigidTransform</code> block in
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc263d1a" class="outline-3">
|
||||
<h3 id="orgc263d1a"><span class="section-number-3">2.4</span> Identification of the dynamics of the Simscape Model</h3>
|
||||
<div id="outline-container-orgd2f0b7f" class="outline-3">
|
||||
<h3 id="orgd2f0b7f"><span class="section-number-3">2.4</span> Identification of the dynamics of the Simscape Model</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<p>
|
||||
We now use a new Simscape Model where 6DoF inertial sensors are located at the Center of Mass of each solid body.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">% load('mat/solids_com.mat', 'granite_bot_com', 'granite_top_com', 'ty_com', 'ry_com', 'rz_com', 'hexa_com');
|
||||
<pre class="src src-matlab"> <span class="org-comment">% load('mat/solids_com.mat', 'granite_bot_com', 'granite_top_com', 'ty_com', 'ry_com', 'rz_com', 'hexa_com');</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">open('nass_model.slx')
|
||||
<pre class="src src-matlab"> open(<span class="org-string">'nass_model.slx'</span>)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -428,35 +433,35 @@ We now use a new Simscape Model where 6DoF inertial sensors are located at the C
|
||||
We use the <code>linearize</code> function in order to estimate the dynamics from forces applied on the Translation stage at the same position used for the real modal analysis to the inertial sensors.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Translation Stage/Modal Analysis/F_hammer'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Granite/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Translation Stage/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Tilt Stage/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Spindle/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Translation Stage/Modal Analysis/F_hammer'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Granite/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Translation Stage/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Tilt Stage/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Spindle/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">% Run the linearization
|
||||
G_ms = linearize(mdl, io, 0);
|
||||
<pre class="src src-matlab"> <span class="org-comment">% Run the linearization</span>
|
||||
G_ms = linearize(mdl, io, 0);
|
||||
|
||||
%% Input/Output definition
|
||||
G_ms.InputName = {'Fx', 'Fy', 'Fz'};
|
||||
G_ms.OutputName = {'gtop_x', 'gtop_y', 'gtop_z', 'gtop_rx', 'gtop_ry', 'gtop_rz', ...
|
||||
'ty_x', 'ty_y', 'ty_z', 'ty_rx', 'ty_ry', 'ty_rz', ...
|
||||
'ry_x', 'ry_y', 'ry_z', 'ry_rx', 'ry_ry', 'ry_rz', ...
|
||||
'rz_x', 'rz_y', 'rz_z', 'rz_rx', 'rz_ry', 'rz_rz', ...
|
||||
'hexa_x', 'hexa_y', 'hexa_z', 'hexa_rx', 'hexa_ry', 'hexa_rz'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
G_ms.InputName = {<span class="org-string">'Fx'</span>, <span class="org-string">'Fy'</span>, <span class="org-string">'Fz'</span>};
|
||||
G_ms.OutputName = {<span class="org-string">'gtop_x'</span>, <span class="org-string">'gtop_y'</span>, <span class="org-string">'gtop_z'</span>, <span class="org-string">'gtop_rx'</span>, <span class="org-string">'gtop_ry'</span>, <span class="org-string">'gtop_rz'</span>, ...
|
||||
<span class="org-string">'ty_x'</span>, <span class="org-string">'ty_y'</span>, <span class="org-string">'ty_z'</span>, <span class="org-string">'ty_rx'</span>, <span class="org-string">'ty_ry'</span>, <span class="org-string">'ty_rz'</span>, ...
|
||||
<span class="org-string">'ry_x'</span>, <span class="org-string">'ry_y'</span>, <span class="org-string">'ry_z'</span>, <span class="org-string">'ry_rx'</span>, <span class="org-string">'ry_ry'</span>, <span class="org-string">'ry_rz'</span>, ...
|
||||
<span class="org-string">'rz_x'</span>, <span class="org-string">'rz_y'</span>, <span class="org-string">'rz_z'</span>, <span class="org-string">'rz_rx'</span>, <span class="org-string">'rz_ry'</span>, <span class="org-string">'rz_rz'</span>, ...
|
||||
<span class="org-string">'hexa_x'</span>, <span class="org-string">'hexa_y'</span>, <span class="org-string">'hexa_z'</span>, <span class="org-string">'hexa_rx'</span>, <span class="org-string">'hexa_ry'</span>, <span class="org-string">'hexa_rz'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -465,22 +470,22 @@ The output of <code>G_ms</code> is the acceleration of each solid body.
|
||||
In order to obtain a displacement, we divide the obtained transfer function by \(1/s^{2}\);
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">G_ms = G_ms/s^2;
|
||||
<pre class="src src-matlab"> G_ms = G_ms<span class="org-type">/</span>s<span class="org-type">^</span>2;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0c6ab2b" class="outline-3">
|
||||
<h3 id="org0c6ab2b"><span class="section-number-3">2.5</span> Compare with measurements</h3>
|
||||
<div id="outline-container-org46896c0" class="outline-3">
|
||||
<h3 id="org46896c0"><span class="section-number-3">2.5</span> Compare with measurements</h3>
|
||||
<div class="outline-text-3" id="text-2-5">
|
||||
<p>
|
||||
We now load the Frequency Response Functions measurements during the Modal Analysis (accessible <a href="../../meas/modal-analysis/index.html">here</a>).
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('../meas/modal-analysis/mat/frf_coh_matrices.mat', 'freqs');
|
||||
load('../meas/modal-analysis/mat/frf_com.mat', 'FRFs_CoM');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'../meas/modal-analysis/mat/frf_coh_matrices.mat'</span>, <span class="org-string">'freqs'</span>);
|
||||
load(<span class="org-string">'../meas/modal-analysis/mat/frf_com.mat'</span>, <span class="org-string">'FRFs_CoM'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -489,7 +494,7 @@ We then compare the measurements with the identified transfer functions using th
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org8f7c1f8" class="figure">
|
||||
<div id="orge644ea5" class="figure">
|
||||
<p><img src="figs/identification_comp_bot_stages.png" alt="identification_comp_bot_stages.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>caption (<a href="./figs/identification_comp_bot_stages.png">png</a>, <a href="./figs/identification_comp_bot_stages.pdf">pdf</a>)</p>
|
||||
@@ -497,7 +502,7 @@ We then compare the measurements with the identified transfer functions using th
|
||||
|
||||
|
||||
|
||||
<div id="org6d3c678" class="figure">
|
||||
<div id="org4cb8073" class="figure">
|
||||
<p><img src="figs/identification_comp_mid_stages.png" alt="identification_comp_mid_stages.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>caption (<a href="./figs/identification_comp_mid_stages.png">png</a>, <a href="./figs/identification_comp_mid_stages.pdf">pdf</a>)</p>
|
||||
@@ -505,7 +510,7 @@ We then compare the measurements with the identified transfer functions using th
|
||||
|
||||
|
||||
|
||||
<div id="org15ca78e" class="figure">
|
||||
<div id="orgd70d4de" class="figure">
|
||||
<p><img src="figs/identification_comp_top_stages.png" alt="identification_comp_top_stages.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>caption (<a href="./figs/identification_comp_top_stages.png">png</a>, <a href="./figs/identification_comp_top_stages.pdf">pdf</a>)</p>
|
||||
@@ -515,23 +520,23 @@ We then compare the measurements with the identified transfer functions using th
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-org4704f01" class="outline-2">
|
||||
<h2 id="org4704f01"><span class="section-number-2">3</span> Obtained Compliance of the Micro-Station</h2>
|
||||
<div id="outline-container-org4b5f363" class="outline-2">
|
||||
<h2 id="org4b5f363"><span class="section-number-2">3</span> Obtained Compliance of the Micro-Station</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
</div>
|
||||
<div id="outline-container-orge0c91d3" class="outline-3">
|
||||
<h3 id="orge0c91d3"><span class="section-number-3">3.1</span> Initialization</h3>
|
||||
<div id="outline-container-org177dd40" class="outline-3">
|
||||
<h3 id="org177dd40"><span class="section-number-3">3.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
We initialize all the stages with the default parameters.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod('type', 'compliance');
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'compliance'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -539,19 +544,19 @@ initializeMicroHexapod('type', 'compliance');
|
||||
We put nothing on top of the micro-hexapod.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeAxisc('type', 'none');
|
||||
initializeMirror('type', 'none');
|
||||
initializeNanoHexapod('type', 'none');
|
||||
initializeSample('type', 'none');
|
||||
<pre class="src src-matlab"> initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences();
|
||||
initializeDisturbances();
|
||||
initializeController();
|
||||
initializeSimscapeConfiguration();
|
||||
initializeLoggingConfiguration();
|
||||
<pre class="src src-matlab"> initializeReferences();
|
||||
initializeDisturbances();
|
||||
initializeController();
|
||||
initializeSimscapeConfiguration();
|
||||
initializeLoggingConfiguration();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -560,31 +565,31 @@ And we identify the dynamics from forces/torques applied on the micro-hexapod to
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The obtained compliance is shown in Figure <a href="#org67dfd1a">4</a>.
|
||||
The obtained compliance is shown in Figure <a href="#org7ed55d1">4</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Compliance/Fm'], 1, 'openinput'); io_i = io_i + 1; % Direct Forces/Torques applied on the micro-hexapod top platform
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Compliance/Dm'], 1, 'output'); io_i = io_i + 1; % Absolute displacement of the top platform
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Micro Hexapod/Compliance/Fm'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Direct Forces/Torques applied on the micro-hexapod top platform</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Micro Hexapod/Compliance/Dm'</span>], 1, <span class="org-string">'output'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Absolute displacement of the top platform</span>
|
||||
|
||||
%% Run the linearization
|
||||
Gm = linearize(mdl, io, 0);
|
||||
Gm.InputName = {'Fmx', 'Fmy', 'Fmz', 'Mmx', 'Mmy', 'Mmz'};
|
||||
Gm.OutputName = {'Dx', 'Dy', 'Dz', 'Drx', 'Dry', 'Drz'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
Gm = linearize(mdl, io, 0);
|
||||
Gm.InputName = {<span class="org-string">'Fmx'</span>, <span class="org-string">'Fmy'</span>, <span class="org-string">'Fmz'</span>, <span class="org-string">'Mmx'</span>, <span class="org-string">'Mmy'</span>, <span class="org-string">'Mmz'</span>};
|
||||
Gm.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-string">'Dy'</span>, <span class="org-string">'Dz'</span>, <span class="org-string">'Drx'</span>, <span class="org-string">'Dry'</span>, <span class="org-string">'Drz'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">save('../meas/micro-station-compliance/mat/model.mat', 'Gm');
|
||||
<pre class="src src-matlab"> save(<span class="org-string">'../meas/micro-station-compliance/mat/model.mat'</span>, <span class="org-string">'Gm'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org67dfd1a" class="figure">
|
||||
<div id="org7ed55d1" class="figure">
|
||||
<p><img src="figs/compliance_micro_station.png" alt="compliance_micro_station.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Obtained compliance of the Micro-Station (<a href="./figs/compliance_micro_station.png">png</a>, <a href="./figs/compliance_micro_station.pdf">pdf</a>)</p>
|
||||
@@ -593,10 +598,10 @@ Gm.OutputName = {'Dx', 'Dy', 'Dz', 'Drx', 'Dry', 'Drz'};
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga1de7a7" class="outline-2">
|
||||
<h2 id="orga1de7a7"><span class="section-number-2">4</span> Conclusion</h2>
|
||||
<div id="outline-container-orgba8bb2d" class="outline-2">
|
||||
<h2 id="orgba8bb2d"><span class="section-number-2">4</span> Conclusion</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<div class="important">
|
||||
<div class="important" id="orgcfecb2d">
|
||||
<p>
|
||||
For such a complex system, we believe that the Simscape Model represents the dynamics of the system with enough fidelity.
|
||||
</p>
|
||||
@@ -607,7 +612,7 @@ For such a complex system, we believe that the Simscape Model represents the dyn
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-09-01 mar. 13:47</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
Reference in New Issue
Block a user