Work on Control (HAC-LAC) + Models

This commit is contained in:
2020-03-13 17:40:22 +01:00
parent 493268638b
commit fab78b6527
78 changed files with 5395 additions and 2475 deletions

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:20 -->
<!-- 2020-03-13 ven. 17:39 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Active Damping applied on the Simscape Model</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
<script>
MathJax = {
@@ -273,17 +251,17 @@ for the JavaScript code in this tag.
<ul>
<li><a href="#orga668d6d">1.1. Identification of the dynamics for Active Damping</a>
<ul>
<li><a href="#orgd1a656e">1.1.1. Identification</a></li>
<li><a href="#org4d53135">1.1.1. Identification</a></li>
<li><a href="#orge632d78">1.1.2. Obtained Plants for Active Damping</a></li>
</ul>
</li>
<li><a href="#orgacbac97">1.2. Identification of the dynamics for High Authority Control</a>
<ul>
<li><a href="#org9dde5ce">1.2.1. Identification</a></li>
<li><a href="#org71a0d47">1.2.1. Identification</a></li>
<li><a href="#org245ebc9">1.2.2. Obtained Plants</a></li>
</ul>
</li>
<li><a href="#orgc633a52">1.3. Tomography Experiment</a>
<li><a href="#org6dbda79">1.3. Tomography Experiment</a>
<ul>
<li><a href="#orgd2384a9">1.3.1. Simulation</a></li>
<li><a href="#orgd00d359">1.3.2. Results</a></li>
@@ -303,55 +281,55 @@ for the JavaScript code in this tag.
</li>
<li><a href="#org89179a2">2.4. Variation of the Tilt Angle</a></li>
<li><a href="#org701d7f3">2.5. Scans of the Translation Stage</a></li>
<li><a href="#org1b61fb2">2.6. Conclusion</a></li>
<li><a href="#org8edc6af">2.6. Conclusion</a></li>
</ul>
</li>
<li><a href="#org28bb8b8">3. Integral Force Feedback</a>
<ul>
<li><a href="#org8147539">3.1. Control Design</a>
<li><a href="#orgd40d19e">3.1. Control Design</a>
<ul>
<li><a href="#org7579fa1">3.1.1. Plant</a></li>
<li><a href="#org1069779">3.1.2. Control Design</a></li>
<li><a href="#org0929a5f">3.1.3. Diagonal Controller</a></li>
<li><a href="#orgae652a4">3.1.1. Plant</a></li>
<li><a href="#org3cc819b">3.1.2. Control Design</a></li>
<li><a href="#orgd4051da">3.1.3. Diagonal Controller</a></li>
</ul>
</li>
<li><a href="#org92b7e4a">3.2. Tomography Experiment</a>
<li><a href="#org394b3ba">3.2. Tomography Experiment</a>
<ul>
<li><a href="#orge827289">3.2.1. Simulation with IFF Controller</a></li>
<li><a href="#org34c04f2">3.2.2. Compare with Undamped system</a></li>
<li><a href="#orgeb184b2">3.2.2. Compare with Undamped system</a></li>
</ul>
</li>
<li><a href="#orge208898">3.3. Conclusion</a></li>
<li><a href="#org6b98a86">3.3. Conclusion</a></li>
</ul>
</li>
<li><a href="#orge2515a1">4. Direct Velocity Feedback</a>
<ul>
<li><a href="#org2454b5d">4.1. Control Design</a>
<li><a href="#orgac2118b">4.1. Control Design</a>
<ul>
<li><a href="#orgd36a459">4.1.1. Plant</a></li>
<li><a href="#orgf771969">4.1.2. Control Design</a></li>
<li><a href="#org1fa78ea">4.1.3. Diagonal Controller</a></li>
<li><a href="#orgb031bdb">4.1.1. Plant</a></li>
<li><a href="#orgd082061">4.1.2. Control Design</a></li>
<li><a href="#orgd3a0a62">4.1.3. Diagonal Controller</a></li>
</ul>
</li>
<li><a href="#orgdc2cc7d">4.2. Tomography Experiment</a>
<li><a href="#orge87de8b">4.2. Tomography Experiment</a>
<ul>
<li><a href="#org315e901">4.2.1. Initialize the Simulation</a></li>
<li><a href="#orgbe122b9">4.2.2. Compare with Undamped system</a></li>
<li><a href="#orge6278a1">4.2.1. Initialize the Simulation</a></li>
<li><a href="#orge7a0ad9">4.2.2. Compare with Undamped system</a></li>
</ul>
</li>
<li><a href="#org2edf5bd">4.3. Conclusion</a></li>
<li><a href="#orgc00cb88">4.3. Conclusion</a></li>
</ul>
</li>
<li><a href="#org5047e99">5. Inertial Control</a>
<ul>
<li><a href="#org5bec512">5.1. Control Design</a>
<li><a href="#org40e3ea7">5.1. Control Design</a>
<ul>
<li><a href="#org16795b0">5.1.1. Plant</a></li>
<li><a href="#org9ce4e10">5.1.2. Control Design</a></li>
<li><a href="#org132c666">5.1.3. Diagonal Controller</a></li>
<li><a href="#orgbceccd1">5.1.1. Plant</a></li>
<li><a href="#orgc8e27a6">5.1.2. Control Design</a></li>
<li><a href="#org165dd29">5.1.3. Diagonal Controller</a></li>
</ul>
</li>
<li><a href="#org408de58">5.2. Conclusion</a></li>
<li><a href="#org5587c6f">5.2. Conclusion</a></li>
</ul>
</li>
<li><a href="#orgd2a9c18">6. Comparison</a>
@@ -366,16 +344,16 @@ for the JavaScript code in this tag.
<ul>
<li><a href="#orgcf56890">7.1. prepareLinearizeIdentification</a>
<ul>
<li><a href="#org2b7c7da">Function Description</a></li>
<li><a href="#org6e16103">Optional Parameters</a></li>
<li><a href="#org552f1ca">Initialize the Simulation</a></li>
<li><a href="#orgbcbb56e">Function Description</a></li>
<li><a href="#orgb2bfb6d">Optional Parameters</a></li>
<li><a href="#org491e801">Initialize the Simulation</a></li>
</ul>
</li>
<li><a href="#orgc2b4408">7.2. prepareTomographyExperiment</a>
<ul>
<li><a href="#org6dacc19">Function Description</a></li>
<li><a href="#org65022a7">Optional Parameters</a></li>
<li><a href="#orga0e6a80">Initialize the Simulation</a></li>
<li><a href="#org8c658fc">Function Description</a></li>
<li><a href="#org80c975b">Optional Parameters</a></li>
<li><a href="#org65e26b7">Initialize the Simulation</a></li>
</ul>
</li>
</ul>
@@ -447,8 +425,8 @@ After that, a tomography experiment is simulation without any active damping tec
<h3 id="orga668d6d"><span class="section-number-3">1.1</span> Identification of the dynamics for Active Damping</h3>
<div class="outline-text-3" id="text-1-1">
</div>
<div id="outline-container-orgd1a656e" class="outline-4">
<h4 id="orgd1a656e"><span class="section-number-4">1.1.1</span> Identification</h4>
<div id="outline-container-org4d53135" class="outline-4">
<h4 id="org4d53135"><span class="section-number-4">1.1.1</span> Identification</h4>
<div class="outline-text-4" id="text-1-1-1">
<p>
We initialize all the stages with the default parameters.
@@ -499,7 +477,7 @@ G_ine = minreal(G({<span class="org-string">'Vnlm1'</span>, <span class="org-str
And we save them for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./active_damping/mat/undamped_plants.mat'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_dvf'</span>, <span class="org-string">'G_ine'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_undamped_plants.mat'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_dvf'</span>, <span class="org-string">'G_ine'</span>);
</pre>
</div>
</div>
@@ -509,7 +487,7 @@ And we save them for further analysis.
<h4 id="orge632d78"><span class="section-number-4">1.1.2</span> Obtained Plants for Active Damping</h4>
<div class="outline-text-4" id="text-1-1-2">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping/mat/undamped_plants.mat'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_dvf'</span>, <span class="org-string">'G_ine'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_undamped_plants.mat'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_dvf'</span>, <span class="org-string">'G_ine'</span>);
</pre>
</div>
@@ -541,8 +519,8 @@ And we save them for further analysis.
<h3 id="orgacbac97"><span class="section-number-3">1.2</span> Identification of the dynamics for High Authority Control</h3>
<div class="outline-text-3" id="text-1-2">
</div>
<div id="outline-container-org9dde5ce" class="outline-4">
<h4 id="org9dde5ce"><span class="section-number-4">1.2.1</span> Identification</h4>
<div id="outline-container-org71a0d47" class="outline-4">
<h4 id="org71a0d47"><span class="section-number-4">1.2.1</span> Identification</h4>
<div class="outline-text-4" id="text-1-2-1">
<p>
We initialize all the stages with the default parameters.
@@ -579,7 +557,7 @@ io(io_i) = linio([mdl, <span class="org-string">'/Tracking Error'</span>], 1, <s
And we save them for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./active_damping/mat/cart_plants.mat'</span>, <span class="org-string">'G_cart'</span>, <span class="org-string">'masses'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_cart_plants.mat'</span>, <span class="org-string">'G_cart'</span>, <span class="org-string">'masses'</span>);
</pre>
</div>
</div>
@@ -589,7 +567,7 @@ And we save them for further analysis.
<h4 id="org245ebc9"><span class="section-number-4">1.2.2</span> Obtained Plants</h4>
<div class="outline-text-4" id="text-1-2-2">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping/mat/cart_plants.mat'</span>, <span class="org-string">'G_cart'</span>, <span class="org-string">'masses'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_cart_plants.mat'</span>, <span class="org-string">'G_cart'</span>, <span class="org-string">'masses'</span>);
</pre>
</div>
@@ -611,8 +589,8 @@ And we save them for further analysis.
</div>
</div>
<div id="outline-container-orgc633a52" class="outline-3">
<h3 id="orgc633a52"><span class="section-number-3">1.3</span> Tomography Experiment</h3>
<div id="outline-container-org6dbda79" class="outline-3">
<h3 id="org6dbda79"><span class="section-number-3">1.3</span> Tomography Experiment</h3>
<div class="outline-text-3" id="text-1-3">
</div>
<div id="outline-container-orgd2384a9" class="outline-4">
@@ -647,7 +625,7 @@ And we simulate the system.
Finally, we save the simulation results for further analysis
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./active_damping/mat/tomo_exp.mat'</span>, <span class="org-string">'En'</span>, <span class="org-string">'Eg'</span>, <span class="org-string">'-append'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span class="org-string">'En'</span>, <span class="org-string">'Eg'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
@@ -660,7 +638,7 @@ Finally, we save the simulation results for further analysis
We load the results of tomography experiments.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping/mat/tomo_exp.mat'</span>, <span class="org-string">'En'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span class="org-string">'En'</span>);
Fs = 1e3; <span class="org-comment">% Sampling Frequency of the Data</span>
t = (1<span class="org-type">/</span>Fs)<span class="org-type">*</span>[0<span class="org-type">:</span>length(En(<span class="org-type">:</span>,1))<span class="org-type">-</span>1];
</pre>
@@ -1000,8 +978,8 @@ We identify the dynamics at different positions (times) when scanning with the T
</div>
</div>
<div id="outline-container-org1b61fb2" class="outline-3">
<h3 id="org1b61fb2"><span class="section-number-3">2.6</span> Conclusion</h3>
<div id="outline-container-org8edc6af" class="outline-3">
<h3 id="org8edc6af"><span class="section-number-3">2.6</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-6">
<table id="org664ed44" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Conclusion on the variability of the system dynamics for active damping</caption>
@@ -1092,19 +1070,19 @@ The control architecture is represented in figure <a href="#org03ecebf">29</a> w
</div>
</div>
<div id="outline-container-org8147539" class="outline-3">
<h3 id="org8147539"><span class="section-number-3">3.1</span> Control Design</h3>
<div id="outline-container-orgd40d19e" class="outline-3">
<h3 id="orgd40d19e"><span class="section-number-3">3.1</span> Control Design</h3>
<div class="outline-text-3" id="text-3-1">
</div>
<div id="outline-container-org7579fa1" class="outline-4">
<h4 id="org7579fa1"><span class="section-number-4">3.1.1</span> Plant</h4>
<div id="outline-container-orgae652a4" class="outline-4">
<h4 id="orgae652a4"><span class="section-number-4">3.1.1</span> Plant</h4>
<div class="outline-text-4" id="text-3-1-1">
<p>
Let&rsquo;s load the previously identified undamped plant:
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping/mat/undamped_plants.mat'</span>, <span class="org-string">'G_iff'</span>);
load(<span class="org-string">'./active_damping/mat/plants_variable.mat'</span>, <span class="org-string">'masses'</span>, <span class="org-string">'Gm_iff'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_undamped_plants.mat'</span>, <span class="org-string">'G_iff'</span>);
load(<span class="org-string">'./mat/active_damping_plants_variable.mat'</span>, <span class="org-string">'masses'</span>, <span class="org-string">'Gm_iff'</span>);
</pre>
</div>
@@ -1121,8 +1099,8 @@ Let&rsquo;s look at the transfer function from actuator forces in the nano-hexap
</div>
</div>
<div id="outline-container-org1069779" class="outline-4">
<h4 id="org1069779"><span class="section-number-4">3.1.2</span> Control Design</h4>
<div id="outline-container-org3cc819b" class="outline-4">
<h4 id="org3cc819b"><span class="section-number-4">3.1.2</span> Control Design</h4>
<div class="outline-text-4" id="text-3-1-2">
<p>
The controller for each pair of actuator/sensor is:
@@ -1146,8 +1124,8 @@ The corresponding loop gains are shown in figure <a href="#orge32c0c8">31</a>.
</div>
</div>
<div id="outline-container-org0929a5f" class="outline-4">
<h4 id="org0929a5f"><span class="section-number-4">3.1.3</span> Diagonal Controller</h4>
<div id="outline-container-orgd4051da" class="outline-4">
<h4 id="orgd4051da"><span class="section-number-4">3.1.3</span> Diagonal Controller</h4>
<div class="outline-text-4" id="text-3-1-3">
<p>
We create the diagonal controller and we add a minus sign as we have a positive
@@ -1162,15 +1140,15 @@ feedback architecture.
We save the controller for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./active_damping/mat/K_iff.mat'</span>, <span class="org-string">'K_iff'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_K_iff.mat'</span>, <span class="org-string">'K_iff'</span>);
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org92b7e4a" class="outline-3">
<h3 id="org92b7e4a"><span class="section-number-3">3.2</span> Tomography Experiment</h3>
<div id="outline-container-org394b3ba" class="outline-3">
<h3 id="org394b3ba"><span class="section-number-3">3.2</span> Tomography Experiment</h3>
<div class="outline-text-3" id="text-3-2">
</div>
<div id="outline-container-orge827289" class="outline-4">
@@ -1188,7 +1166,7 @@ We initialize elements for the tomography experiment.
We set the IFF controller.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping/mat/K_iff.mat'</span>, <span class="org-string">'K_iff'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_K_iff.mat'</span>, <span class="org-string">'K_iff'</span>);
initializeController(<span class="org-string">'type'</span>, <span class="org-string">'iff'</span>, <span class="org-string">'K'</span>, K_iff);
</pre>
</div>
@@ -1216,14 +1194,14 @@ Finally, we save the simulation results for further analysis
<div class="org-src-container">
<pre class="src src-matlab">En_iff = En;
Eg_iff = Eg;
save(<span class="org-string">'./active_damping/mat/tomo_exp.mat'</span>, <span class="org-string">'En_iff'</span>, <span class="org-string">'Eg_iff'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span class="org-string">'En_iff'</span>, <span class="org-string">'Eg_iff'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org34c04f2" class="outline-4">
<h4 id="org34c04f2"><span class="section-number-4">3.2.2</span> Compare with Undamped system</h4>
<div id="outline-container-orgeb184b2" class="outline-4">
<h4 id="orgeb184b2"><span class="section-number-4">3.2.2</span> Compare with Undamped system</h4>
<div class="outline-text-4" id="text-3-2-2">
<div id="orgc83ffab" class="figure">
@@ -1249,8 +1227,8 @@ save(<span class="org-string">'./active_damping/mat/tomo_exp.mat'</span>, <span
</div>
</div>
<div id="outline-container-orge208898" class="outline-3">
<h3 id="orge208898"><span class="section-number-3">3.3</span> Conclusion</h3>
<div id="outline-container-org6b98a86" class="outline-3">
<h3 id="org6b98a86"><span class="section-number-3">3.3</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-3">
<div class="important">
<p>
@@ -1285,19 +1263,19 @@ The actuator displacement can be measured with a capacitive sensor for instance.
</p>
</div>
<div id="outline-container-org2454b5d" class="outline-3">
<h3 id="org2454b5d"><span class="section-number-3">4.1</span> Control Design</h3>
<div id="outline-container-orgac2118b" class="outline-3">
<h3 id="orgac2118b"><span class="section-number-3">4.1</span> Control Design</h3>
<div class="outline-text-3" id="text-4-1">
</div>
<div id="outline-container-orgd36a459" class="outline-4">
<h4 id="orgd36a459"><span class="section-number-4">4.1.1</span> Plant</h4>
<div id="outline-container-orgb031bdb" class="outline-4">
<h4 id="orgb031bdb"><span class="section-number-4">4.1.1</span> Plant</h4>
<div class="outline-text-4" id="text-4-1-1">
<p>
Let&rsquo;s load the undamped plant:
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping/mat/undamped_plants.mat'</span>, <span class="org-string">'G_dvf'</span>);
load(<span class="org-string">'./active_damping/mat/plants_variable.mat'</span>, <span class="org-string">'masses'</span>, <span class="org-string">'Gm_dvf'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_undamped_plants.mat'</span>, <span class="org-string">'G_dvf'</span>);
load(<span class="org-string">'./mat/active_damping_plants_variable.mat'</span>, <span class="org-string">'masses'</span>, <span class="org-string">'Gm_dvf'</span>);
</pre>
</div>
@@ -1314,8 +1292,8 @@ Let&rsquo;s look at the transfer function from actuator forces in the nano-hexap
</div>
</div>
<div id="outline-container-orgf771969" class="outline-4">
<h4 id="orgf771969"><span class="section-number-4">4.1.2</span> Control Design</h4>
<div id="outline-container-orgd082061" class="outline-4">
<h4 id="orgd082061"><span class="section-number-4">4.1.2</span> Control Design</h4>
<div class="outline-text-4" id="text-4-1-2">
<p>
The Direct Velocity Feedback is defined below.
@@ -1339,8 +1317,8 @@ The obtained loop gains are shown in figure <a href="#org713f5d4">36</a>.
</div>
</div>
<div id="outline-container-org1fa78ea" class="outline-4">
<h4 id="org1fa78ea"><span class="section-number-4">4.1.3</span> Diagonal Controller</h4>
<div id="outline-container-orgd3a0a62" class="outline-4">
<h4 id="orgd3a0a62"><span class="section-number-4">4.1.3</span> Diagonal Controller</h4>
<div class="outline-text-4" id="text-4-1-3">
<p>
We create the diagonal controller and we add a minus sign as we have a positive feedback architecture.
@@ -1354,19 +1332,19 @@ We create the diagonal controller and we add a minus sign as we have a positive
We save the controller for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./active_damping/mat/K_dvf.mat'</span>, <span class="org-string">'K_dvf'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_K_dvf.mat'</span>, <span class="org-string">'K_dvf'</span>);
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-orgdc2cc7d" class="outline-3">
<h3 id="orgdc2cc7d"><span class="section-number-3">4.2</span> Tomography Experiment</h3>
<div id="outline-container-orge87de8b" class="outline-3">
<h3 id="orge87de8b"><span class="section-number-3">4.2</span> Tomography Experiment</h3>
<div class="outline-text-3" id="text-4-2">
</div>
<div id="outline-container-org315e901" class="outline-4">
<h4 id="org315e901"><span class="section-number-4">4.2.1</span> Initialize the Simulation</h4>
<div id="outline-container-orge6278a1" class="outline-4">
<h4 id="orge6278a1"><span class="section-number-4">4.2.1</span> Initialize the Simulation</h4>
<div class="outline-text-4" id="text-4-2-1">
<p>
We initialize elements for the tomography experiment.
@@ -1380,7 +1358,7 @@ We initialize elements for the tomography experiment.
We set the DVF controller.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping/mat/K_dvf.mat'</span>, <span class="org-string">'K_dvf'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_K_dvf.mat'</span>, <span class="org-string">'K_dvf'</span>);
initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>, <span class="org-string">'K'</span>, K_dvf);
</pre>
</div>
@@ -1408,14 +1386,14 @@ Finally, we save the simulation results for further analysis
<div class="org-src-container">
<pre class="src src-matlab">En_dvf = En;
Eg_dvf = Eg;
save(<span class="org-string">'./active_damping/mat/tomo_exp.mat'</span>, <span class="org-string">'En_dvf'</span>, <span class="org-string">'Eg_dvf'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span class="org-string">'En_dvf'</span>, <span class="org-string">'Eg_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgbe122b9" class="outline-4">
<h4 id="orgbe122b9"><span class="section-number-4">4.2.2</span> Compare with Undamped system</h4>
<div id="outline-container-orge7a0ad9" class="outline-4">
<h4 id="orge7a0ad9"><span class="section-number-4">4.2.2</span> Compare with Undamped system</h4>
<div class="outline-text-4" id="text-4-2-2">
<div id="orge2d1a4a" class="figure">
@@ -1441,8 +1419,8 @@ save(<span class="org-string">'./active_damping/mat/tomo_exp.mat'</span>, <span
</div>
</div>
<div id="outline-container-org2edf5bd" class="outline-3">
<h3 id="org2edf5bd"><span class="section-number-3">4.3</span> Conclusion</h3>
<div id="outline-container-orgc00cb88" class="outline-3">
<h3 id="orgc00cb88"><span class="section-number-3">4.3</span> Conclusion</h3>
<div class="outline-text-3" id="text-4-3">
<div class="important">
<p>
@@ -1474,19 +1452,19 @@ In Inertial Control, a feedback is applied between the measured <b>absolute</b>
</p>
</div>
<div id="outline-container-org5bec512" class="outline-3">
<h3 id="org5bec512"><span class="section-number-3">5.1</span> Control Design</h3>
<div id="outline-container-org40e3ea7" class="outline-3">
<h3 id="org40e3ea7"><span class="section-number-3">5.1</span> Control Design</h3>
<div class="outline-text-3" id="text-5-1">
</div>
<div id="outline-container-org16795b0" class="outline-4">
<h4 id="org16795b0"><span class="section-number-4">5.1.1</span> Plant</h4>
<div id="outline-container-orgbceccd1" class="outline-4">
<h4 id="orgbceccd1"><span class="section-number-4">5.1.1</span> Plant</h4>
<div class="outline-text-4" id="text-5-1-1">
<p>
Let&rsquo;s load the undamped plant:
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping/mat/undamped_plants.mat'</span>, <span class="org-string">'G_ine'</span>);
load(<span class="org-string">'./active_damping/mat/plants_variable.mat'</span>, <span class="org-string">'masses'</span>, <span class="org-string">'Gm_ine'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_undamped_plants.mat'</span>, <span class="org-string">'G_ine'</span>);
load(<span class="org-string">'./mat/active_damping_plants_variable.mat'</span>, <span class="org-string">'masses'</span>, <span class="org-string">'Gm_ine'</span>);
</pre>
</div>
@@ -1503,8 +1481,8 @@ Let&rsquo;s look at the transfer function from actuator forces in the nano-hexap
</div>
</div>
<div id="outline-container-org9ce4e10" class="outline-4">
<h4 id="org9ce4e10"><span class="section-number-4">5.1.2</span> Control Design</h4>
<div id="outline-container-orgc8e27a6" class="outline-4">
<h4 id="orgc8e27a6"><span class="section-number-4">5.1.2</span> Control Design</h4>
<div class="outline-text-4" id="text-5-1-2">
<p>
The controller is defined below and the obtained loop gain is shown in figure <a href="#org76d929a">41</a>.
@@ -1524,8 +1502,8 @@ The controller is defined below and the obtained loop gain is shown in figure <a
</div>
</div>
<div id="outline-container-org132c666" class="outline-4">
<h4 id="org132c666"><span class="section-number-4">5.1.3</span> Diagonal Controller</h4>
<div id="outline-container-org165dd29" class="outline-4">
<h4 id="org165dd29"><span class="section-number-4">5.1.3</span> Diagonal Controller</h4>
<div class="outline-text-4" id="text-5-1-3">
<p>
We create the diagonal controller and we add a minus sign as we have a positive feedback architecture.
@@ -1539,15 +1517,15 @@ We create the diagonal controller and we add a minus sign as we have a positive
We save the controller for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./active_damping/mat/K_ine.mat'</span>, <span class="org-string">'K_ine'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_K_ine.mat'</span>, <span class="org-string">'K_ine'</span>);
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org408de58" class="outline-3">
<h3 id="org408de58"><span class="section-number-3">5.2</span> Conclusion</h3>
<div id="outline-container-org5587c6f" class="outline-3">
<h3 id="org5587c6f"><span class="section-number-3">5.2</span> Conclusion</h3>
<div class="outline-text-3" id="text-5-2">
<div class="important">
<p>
@@ -1570,7 +1548,7 @@ Inertial Control should not be used.
<h3 id="org68994db"><span class="section-number-3">6.1</span> Load the plants</h3>
<div class="outline-text-3" id="text-6-1">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping/mat/plants.mat'</span>, <span class="org-string">'G'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_ine'</span>, <span class="org-string">'G_dvf'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_plants.mat'</span>, <span class="org-string">'G'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_ine'</span>, <span class="org-string">'G_dvf'</span>);
</pre>
</div>
</div>
@@ -1648,7 +1626,7 @@ Inertial Control should not be used.
<h3 id="orgd49b825"><span class="section-number-3">6.4</span> Tomography Experiment - Frequency Domain analysis</h3>
<div class="outline-text-3" id="text-6-4">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping/mat/tomo_exp.mat'</span>, <span class="org-string">'En'</span>, <span class="org-string">'En_iff'</span>, <span class="org-string">'En_dvf'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span class="org-string">'En'</span>, <span class="org-string">'En_iff'</span>, <span class="org-string">'En_dvf'</span>);
Fs = 1e3; <span class="org-comment">% Sampling Frequency of the Data</span>
t = (1<span class="org-type">/</span>Fs)<span class="org-type">*</span>[0<span class="org-type">:</span>length(En(<span class="org-type">:</span>,1))<span class="org-type">-</span>1];
</pre>
@@ -1723,9 +1701,9 @@ This Matlab function is accessible <a href="src/prepareLinearizeIdentification.m
</p>
</div>
<div id="outline-container-org2b7c7da" class="outline-4">
<h4 id="org2b7c7da">Function Description</h4>
<div class="outline-text-4" id="text-org2b7c7da">
<div id="outline-container-orgbcbb56e" class="outline-4">
<h4 id="orgbcbb56e">Function Description</h4>
<div class="outline-text-4" id="text-orgbcbb56e">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[]</span> = <span class="org-function-name">prepareLinearizeIdentification</span>(<span class="org-variable-name">args</span>)
</pre>
@@ -1733,9 +1711,9 @@ This Matlab function is accessible <a href="src/prepareLinearizeIdentification.m
</div>
</div>
<div id="outline-container-org6e16103" class="outline-4">
<h4 id="org6e16103">Optional Parameters</h4>
<div class="outline-text-4" id="text-org6e16103">
<div id="outline-container-orgb2bfb6d" class="outline-4">
<h4 id="orgb2bfb6d">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgb2bfb6d">
<div class="org-src-container">
<pre class="src src-matlab">arguments
args.nass_actuator char {mustBeMember(args.nass_actuator,{<span class="org-string">'piezo'</span>, <span class="org-string">'lorentz'</span>})} = <span class="org-string">'piezo'</span>
@@ -1746,9 +1724,9 @@ This Matlab function is accessible <a href="src/prepareLinearizeIdentification.m
</div>
</div>
<div id="outline-container-org552f1ca" class="outline-4">
<h4 id="org552f1ca">Initialize the Simulation</h4>
<div class="outline-text-4" id="text-org552f1ca">
<div id="outline-container-org491e801" class="outline-4">
<h4 id="org491e801">Initialize the Simulation</h4>
<div class="outline-text-4" id="text-org491e801">
<p>
We initialize all the stages with the default parameters.
</p>
@@ -1821,9 +1799,9 @@ This Matlab function is accessible <a href="src/prepareTomographyExperiment.m">h
</p>
</div>
<div id="outline-container-org6dacc19" class="outline-4">
<h4 id="org6dacc19">Function Description</h4>
<div class="outline-text-4" id="text-org6dacc19">
<div id="outline-container-org8c658fc" class="outline-4">
<h4 id="org8c658fc">Function Description</h4>
<div class="outline-text-4" id="text-org8c658fc">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[]</span> = <span class="org-function-name">prepareTomographyExperiment</span>(<span class="org-variable-name">args</span>)
</pre>
@@ -1831,9 +1809,9 @@ This Matlab function is accessible <a href="src/prepareTomographyExperiment.m">h
</div>
</div>
<div id="outline-container-org65022a7" class="outline-4">
<h4 id="org65022a7">Optional Parameters</h4>
<div class="outline-text-4" id="text-org65022a7">
<div id="outline-container-org80c975b" class="outline-4">
<h4 id="org80c975b">Optional Parameters</h4>
<div class="outline-text-4" id="text-org80c975b">
<div class="org-src-container">
<pre class="src src-matlab">arguments
args.nass_actuator char {mustBeMember(args.nass_actuator,{<span class="org-string">'piezo'</span>, <span class="org-string">'lorentz'</span>})} = <span class="org-string">'piezo'</span>
@@ -1845,9 +1823,9 @@ This Matlab function is accessible <a href="src/prepareTomographyExperiment.m">h
</div>
</div>
<div id="outline-container-orga0e6a80" class="outline-4">
<h4 id="orga0e6a80">Initialize the Simulation</h4>
<div class="outline-text-4" id="text-orga0e6a80">
<div id="outline-container-org65e26b7" class="outline-4">
<h4 id="org65e26b7">Initialize the Simulation</h4>
<div class="outline-text-4" id="text-org65e26b7">
<p>
We initialize all the stages with the default parameters.
</p>
@@ -1915,7 +1893,7 @@ We log the signals.
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:20</p>
<p class="date">Created: 2020-03-13 ven. 17:39</p>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:21 -->
<!-- 2020-03-13 ven. 17:39 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Active Damping with an uni-axial model</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
<script>
MathJax = {
@@ -273,63 +251,63 @@ for the JavaScript code in this tag.
<ul>
<li><a href="#org7409841">1.1. Init</a></li>
<li><a href="#org7514f31">1.2. Identification</a></li>
<li><a href="#orgbc3b2d2">1.3. Sensitivity to disturbances</a></li>
<li><a href="#org380e20f">1.3. Sensitivity to disturbances</a></li>
<li><a href="#orgdda82c0">1.4. Undamped Plant</a></li>
</ul>
</li>
<li><a href="#org5a3389e">2. Integral Force Feedback</a>
<ul>
<li><a href="#org8fee25f">2.1. One degree-of-freedom example</a>
<li><a href="#orgbaae6a1">2.1. One degree-of-freedom example</a>
<ul>
<li><a href="#orge4d9f41">2.1.1. Equations</a></li>
<li><a href="#org3305ce8">2.1.2. Matlab Example</a></li>
<li><a href="#orgc436f05">2.1.1. Equations</a></li>
<li><a href="#org238893b">2.1.2. Matlab Example</a></li>
</ul>
</li>
<li><a href="#orgc2ae0be">2.2. Control Design</a></li>
<li><a href="#org6eda033">2.3. Identification of the damped plant</a></li>
<li><a href="#orgae8bf4a">2.4. Sensitivity to disturbances</a></li>
<li><a href="#orgf8558bc">2.5. Damped Plant</a></li>
<li><a href="#org7146202">2.6. Conclusion</a></li>
<li><a href="#org824be47">2.2. Control Design</a></li>
<li><a href="#orgfdd4556">2.3. Identification of the damped plant</a></li>
<li><a href="#org4802ab9">2.4. Sensitivity to disturbances</a></li>
<li><a href="#org2cbe422">2.5. Damped Plant</a></li>
<li><a href="#orgdade398">2.6. Conclusion</a></li>
</ul>
</li>
<li><a href="#orgc4ca1b5">3. Relative Motion Control</a>
<ul>
<li><a href="#orgff968f4">3.1. One degree-of-freedom example</a>
<li><a href="#org39a3687">3.1. One degree-of-freedom example</a>
<ul>
<li><a href="#orgd5a2de5">3.1.1. Equations</a></li>
<li><a href="#orgfebe737">3.1.2. Matlab Example</a></li>
<li><a href="#org994b142">3.1.1. Equations</a></li>
<li><a href="#org6a1f411">3.1.2. Matlab Example</a></li>
</ul>
</li>
<li><a href="#orgf3a1477">3.2. Control Design</a></li>
<li><a href="#org0c94d61">3.3. Identification of the damped plant</a></li>
<li><a href="#orgae7a685">3.4. Sensitivity to disturbances</a></li>
<li><a href="#orgb0045d5">3.5. Damped Plant</a></li>
<li><a href="#orgeacd46f">3.6. Conclusion</a></li>
<li><a href="#org13a97a7">3.2. Control Design</a></li>
<li><a href="#orge00b37b">3.3. Identification of the damped plant</a></li>
<li><a href="#orgcd3874b">3.4. Sensitivity to disturbances</a></li>
<li><a href="#orgfcc3787">3.5. Damped Plant</a></li>
<li><a href="#org37ceb38">3.6. Conclusion</a></li>
</ul>
</li>
<li><a href="#org3cc03b0">4. Direct Velocity Feedback</a>
<ul>
<li><a href="#orgb2d2757">4.1. One degree-of-freedom example</a>
<li><a href="#org20ee26e">4.1. One degree-of-freedom example</a>
<ul>
<li><a href="#org0d13907">4.1.1. Equations</a></li>
<li><a href="#org5d7b09d">4.1.2. Matlab Example</a></li>
<li><a href="#org0d2ea8d">4.1.1. Equations</a></li>
<li><a href="#orgaddbb82">4.1.2. Matlab Example</a></li>
</ul>
</li>
<li><a href="#org1fe076f">4.2. Control Design</a></li>
<li><a href="#orgee6ab5a">4.3. Identification of the damped plant</a></li>
<li><a href="#org455bb51">4.4. Sensitivity to disturbances</a></li>
<li><a href="#org6d852f5">4.5. Damped Plant</a></li>
<li><a href="#org5d33a43">4.6. Conclusion</a></li>
<li><a href="#orgf1bd80b">4.2. Control Design</a></li>
<li><a href="#org54ebde8">4.3. Identification of the damped plant</a></li>
<li><a href="#org454c0c8">4.4. Sensitivity to disturbances</a></li>
<li><a href="#org5f21dd1">4.5. Damped Plant</a></li>
<li><a href="#org53572a3">4.6. Conclusion</a></li>
</ul>
</li>
<li><a href="#org21441bc">5. Comparison</a>
<ul>
<li><a href="#orgbe907b4">5.1. Load the plants</a></li>
<li><a href="#orgde6308d">5.2. Sensitivity to Disturbance</a></li>
<li><a href="#orgb849304">5.3. Damped Plant</a></li>
<li><a href="#orga1cf9f2">5.3. Damped Plant</a></li>
</ul>
</li>
<li><a href="#org333697a">6. Conclusion</a></li>
<li><a href="#org4d89cbd">6. Conclusion</a></li>
</ul>
</div>
</div>
@@ -410,13 +388,13 @@ All the controllers are set to 0.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
K_iff = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
K_rmc = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
K_dvf = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
@@ -437,14 +415,14 @@ We identify the various transfer functions of the system
And we save it for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./active_damping_uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>, <span class="org-string">'-append'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_uniaxial_plants.mat'</span>, <span class="org-string">'G'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgbc3b2d2" class="outline-3">
<h3 id="orgbc3b2d2"><span class="section-number-3">1.3</span> Sensitivity to disturbances</h3>
<div id="outline-container-org380e20f" class="outline-3">
<h3 id="org380e20f"><span class="section-number-3">1.3</span> Sensitivity to disturbances</h3>
<div class="outline-text-3" id="text-1-3">
<p>
The sensitivity to disturbances are shown on figure <a href="#orgcf7fa15">1</a>.
@@ -502,15 +480,15 @@ Then, it is applied on the simscape model.
</p>
</div>
<div id="outline-container-org8fee25f" class="outline-3">
<h3 id="org8fee25f"><span class="section-number-3">2.1</span> One degree-of-freedom example</h3>
<div id="outline-container-orgbaae6a1" class="outline-3">
<h3 id="orgbaae6a1"><span class="section-number-3">2.1</span> One degree-of-freedom example</h3>
<div class="outline-text-3" id="text-2-1">
<p>
<a id="org7f37ded"></a>
</p>
</div>
<div id="outline-container-orge4d9f41" class="outline-4">
<h4 id="orge4d9f41"><span class="section-number-4">2.1.1</span> Equations</h4>
<div id="outline-container-orgc436f05" class="outline-4">
<h4 id="orgc436f05"><span class="section-number-4">2.1.1</span> Equations</h4>
<div class="outline-text-4" id="text-2-1-1">
<div id="org1acdc30" class="figure">
@@ -576,8 +554,8 @@ This is attainable if we have:
</div>
</div>
<div id="outline-container-org3305ce8" class="outline-4">
<h4 id="org3305ce8"><span class="section-number-4">2.1.2</span> Matlab Example</h4>
<div id="outline-container-org238893b" class="outline-4">
<h4 id="org238893b"><span class="section-number-4">2.1.2</span> Matlab Example</h4>
<div class="outline-text-4" id="text-2-1-2">
<p>
Let define the system parameters.
@@ -640,14 +618,14 @@ And the closed loop system is computed below.
</div>
</div>
<div id="outline-container-orgc2ae0be" class="outline-3">
<h3 id="orgc2ae0be"><span class="section-number-3">2.2</span> Control Design</h3>
<div id="outline-container-org824be47" class="outline-3">
<h3 id="org824be47"><span class="section-number-3">2.2</span> Control Design</h3>
<div class="outline-text-3" id="text-2-2">
<p>
Let&rsquo;s load the undamped plant:
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping_uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_uniaxial_plants.mat'</span>, <span class="org-string">'G'</span>);
</pre>
</div>
@@ -683,8 +661,8 @@ The corresponding loop gains are shown in figure <a href="#org36e3a94">7</a>.
</div>
</div>
<div id="outline-container-org6eda033" class="outline-3">
<h3 id="org6eda033"><span class="section-number-3">2.3</span> Identification of the damped plant</h3>
<div id="outline-container-orgfdd4556" class="outline-3">
<h3 id="orgfdd4556"><span class="section-number-3">2.3</span> Identification of the damped plant</h3>
<div class="outline-text-3" id="text-2-3">
<p>
Let&rsquo;s initialize the system prior to identification.
@@ -709,13 +687,13 @@ All the controllers are set to 0.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
K_iff = <span class="org-type">-</span>K_iff<span class="org-type">*</span>eye(6);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
K_rmc = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
K_dvf = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
@@ -731,14 +709,14 @@ We identify the system dynamics now that the IFF controller is ON.
And we save the damped plant for further analysis
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./active_damping_uniaxial/mat/plants.mat'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'-append'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_uniaxial_plants.mat'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgae8bf4a" class="outline-3">
<h3 id="orgae8bf4a"><span class="section-number-3">2.4</span> Sensitivity to disturbances</h3>
<div id="outline-container-org4802ab9" class="outline-3">
<h3 id="org4802ab9"><span class="section-number-3">2.4</span> Sensitivity to disturbances</h3>
<div class="outline-text-3" id="text-2-4">
<p>
As shown on figure <a href="#org38217ee">8</a>:
@@ -774,8 +752,8 @@ For instance, the plots are not the same when using <code>minreal</code>.
</div>
</div>
<div id="outline-container-orgf8558bc" class="outline-3">
<h3 id="orgf8558bc"><span class="section-number-3">2.5</span> Damped Plant</h3>
<div id="outline-container-org2cbe422" class="outline-3">
<h3 id="org2cbe422"><span class="section-number-3">2.5</span> Damped Plant</h3>
<div class="outline-text-3" id="text-2-5">
<p>
Now, look at the new damped plant to control.
@@ -804,8 +782,8 @@ However, it increases coupling at low frequency (figure <a href="#org8017b2f">11
</div>
</div>
<div id="outline-container-org7146202" class="outline-3">
<h3 id="org7146202"><span class="section-number-3">2.6</span> Conclusion</h3>
<div id="outline-container-orgdade398" class="outline-3">
<h3 id="orgdade398"><span class="section-number-3">2.6</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-6">
<div class="important">
<p>
@@ -839,15 +817,15 @@ In the Relative Motion Control (RMC), a derivative feedback is applied between t
</p>
</div>
<div id="outline-container-orgff968f4" class="outline-3">
<h3 id="orgff968f4"><span class="section-number-3">3.1</span> One degree-of-freedom example</h3>
<div id="outline-container-org39a3687" class="outline-3">
<h3 id="org39a3687"><span class="section-number-3">3.1</span> One degree-of-freedom example</h3>
<div class="outline-text-3" id="text-3-1">
<p>
<a id="org6f16e09"></a>
</p>
</div>
<div id="outline-container-orgd5a2de5" class="outline-4">
<h4 id="orgd5a2de5"><span class="section-number-4">3.1.1</span> Equations</h4>
<div id="outline-container-org994b142" class="outline-4">
<h4 id="org994b142"><span class="section-number-4">3.1.1</span> Equations</h4>
<div class="outline-text-4" id="text-3-1-1">
<div id="org64900ec" class="figure">
@@ -906,8 +884,8 @@ This corresponds to a gain:
</div>
</div>
<div id="outline-container-orgfebe737" class="outline-4">
<h4 id="orgfebe737"><span class="section-number-4">3.1.2</span> Matlab Example</h4>
<div id="outline-container-org6a1f411" class="outline-4">
<h4 id="org6a1f411"><span class="section-number-4">3.1.2</span> Matlab Example</h4>
<div class="outline-text-4" id="text-3-1-2">
<p>
Let define the system parameters.
@@ -970,14 +948,14 @@ And the closed loop system is computed below.
</div>
</div>
<div id="outline-container-orgf3a1477" class="outline-3">
<h3 id="orgf3a1477"><span class="section-number-3">3.2</span> Control Design</h3>
<div id="outline-container-org13a97a7" class="outline-3">
<h3 id="org13a97a7"><span class="section-number-3">3.2</span> Control Design</h3>
<div class="outline-text-3" id="text-3-2">
<p>
Let&rsquo;s load the undamped plant:
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping_uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_uniaxial_plants.mat'</span>, <span class="org-string">'G'</span>);
</pre>
</div>
@@ -1014,8 +992,8 @@ The obtained loop gains are shown in figure <a href="#orga5b8f12">15</a>.
</div>
</div>
<div id="outline-container-org0c94d61" class="outline-3">
<h3 id="org0c94d61"><span class="section-number-3">3.3</span> Identification of the damped plant</h3>
<div id="outline-container-orge00b37b" class="outline-3">
<h3 id="orge00b37b"><span class="section-number-3">3.3</span> Identification of the damped plant</h3>
<div class="outline-text-3" id="text-3-3">
<p>
Let&rsquo;s initialize the system prior to identification.
@@ -1040,13 +1018,13 @@ And initialize the controllers.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
K_iff = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
K_rmc = <span class="org-type">-</span>K_rmc<span class="org-type">*</span>eye(6);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
K_dvf = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
@@ -1062,14 +1040,14 @@ We identify the system dynamics now that the RMC controller is ON.
And we save the damped plant for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./active_damping_uniaxial/mat/plants.mat'</span>, <span class="org-string">'G_rmc'</span>, <span class="org-string">'-append'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_uniaxial_plants.mat'</span>, <span class="org-string">'G_rmc'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgae7a685" class="outline-3">
<h3 id="orgae7a685"><span class="section-number-3">3.4</span> Sensitivity to disturbances</h3>
<div id="outline-container-orgcd3874b" class="outline-3">
<h3 id="orgcd3874b"><span class="section-number-3">3.4</span> Sensitivity to disturbances</h3>
<div class="outline-text-3" id="text-3-4">
<p>
As shown in figure <a href="#org58aec78">16</a>, RMC control succeed in lowering the sensitivity to disturbances near resonance of the system.
@@ -1091,8 +1069,8 @@ As shown in figure <a href="#org58aec78">16</a>, RMC control succeed in lowering
</div>
</div>
<div id="outline-container-orgb0045d5" class="outline-3">
<h3 id="orgb0045d5"><span class="section-number-3">3.5</span> Damped Plant</h3>
<div id="outline-container-orgfcc3787" class="outline-3">
<h3 id="orgfcc3787"><span class="section-number-3">3.5</span> Damped Plant</h3>
<div class="outline-text-3" id="text-3-5">
<div id="org2267bd4" class="figure">
@@ -1103,8 +1081,8 @@ As shown in figure <a href="#org58aec78">16</a>, RMC control succeed in lowering
</div>
</div>
<div id="outline-container-orgeacd46f" class="outline-3">
<h3 id="orgeacd46f"><span class="section-number-3">3.6</span> Conclusion</h3>
<div id="outline-container-org37ceb38" class="outline-3">
<h3 id="org37ceb38"><span class="section-number-3">3.6</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-6">
<div class="important">
<p>
@@ -1136,15 +1114,15 @@ In the Relative Motion Control (RMC), a feedback is applied between the measured
</p>
</div>
<div id="outline-container-orgb2d2757" class="outline-3">
<h3 id="orgb2d2757"><span class="section-number-3">4.1</span> One degree-of-freedom example</h3>
<div id="outline-container-org20ee26e" class="outline-3">
<h3 id="org20ee26e"><span class="section-number-3">4.1</span> One degree-of-freedom example</h3>
<div class="outline-text-3" id="text-4-1">
<p>
<a id="org3a699cb"></a>
</p>
</div>
<div id="outline-container-org0d13907" class="outline-4">
<h4 id="org0d13907"><span class="section-number-4">4.1.1</span> Equations</h4>
<div id="outline-container-org0d2ea8d" class="outline-4">
<h4 id="org0d2ea8d"><span class="section-number-4">4.1.1</span> Equations</h4>
<div class="outline-text-4" id="text-4-1-1">
<div id="org93ae6e4" class="figure">
@@ -1203,8 +1181,8 @@ This corresponds to a gain:
</div>
</div>
<div id="outline-container-org5d7b09d" class="outline-4">
<h4 id="org5d7b09d"><span class="section-number-4">4.1.2</span> Matlab Example</h4>
<div id="outline-container-orgaddbb82" class="outline-4">
<h4 id="orgaddbb82"><span class="section-number-4">4.1.2</span> Matlab Example</h4>
<div class="outline-text-4" id="text-4-1-2">
<p>
Let define the system parameters.
@@ -1291,14 +1269,14 @@ The obtained sensitivity to disturbances is shown in figure <a href="#org1c3277a
</div>
</div>
<div id="outline-container-org1fe076f" class="outline-3">
<h3 id="org1fe076f"><span class="section-number-3">4.2</span> Control Design</h3>
<div id="outline-container-orgf1bd80b" class="outline-3">
<h3 id="orgf1bd80b"><span class="section-number-3">4.2</span> Control Design</h3>
<div class="outline-text-3" id="text-4-2">
<p>
Let&rsquo;s load the undamped plant:
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping_uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_uniaxial_plants.mat'</span>, <span class="org-string">'G'</span>);
</pre>
</div>
@@ -1331,8 +1309,8 @@ The controller is defined below and the obtained loop gain is shown in figure <a
</div>
</div>
<div id="outline-container-orgee6ab5a" class="outline-3">
<h3 id="orgee6ab5a"><span class="section-number-3">4.3</span> Identification of the damped plant</h3>
<div id="outline-container-org54ebde8" class="outline-3">
<h3 id="org54ebde8"><span class="section-number-3">4.3</span> Identification of the damped plant</h3>
<div class="outline-text-3" id="text-4-3">
<p>
Let&rsquo;s initialize the system prior to identification.
@@ -1357,13 +1335,13 @@ And initialize the controllers.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
K_iff = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
K_rmc = tf(zeros(6));
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
K_dvf = <span class="org-type">-</span>K_dvf<span class="org-type">*</span>eye(6);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
@@ -1379,14 +1357,14 @@ We identify the system dynamics now that the RMC controller is ON.
And we save the damped plant for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./active_damping_uniaxial/mat/plants.mat'</span>, <span class="org-string">'G_dvf'</span>, <span class="org-string">'-append'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_uniaxial_plants.mat'</span>, <span class="org-string">'G_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org455bb51" class="outline-3">
<h3 id="org455bb51"><span class="section-number-3">4.4</span> Sensitivity to disturbances</h3>
<div id="outline-container-org454c0c8" class="outline-3">
<h3 id="org454c0c8"><span class="section-number-3">4.4</span> Sensitivity to disturbances</h3>
<div class="outline-text-3" id="text-4-4">
<div id="org2558226" class="figure">
@@ -1405,8 +1383,8 @@ And we save the damped plant for further analysis.
</div>
</div>
<div id="outline-container-org6d852f5" class="outline-3">
<h3 id="org6d852f5"><span class="section-number-3">4.5</span> Damped Plant</h3>
<div id="outline-container-org5f21dd1" class="outline-3">
<h3 id="org5f21dd1"><span class="section-number-3">4.5</span> Damped Plant</h3>
<div class="outline-text-3" id="text-4-5">
<div id="org2fa3671" class="figure">
@@ -1417,8 +1395,8 @@ And we save the damped plant for further analysis.
</div>
</div>
<div id="outline-container-org5d33a43" class="outline-3">
<h3 id="org5d33a43"><span class="section-number-3">4.6</span> Conclusion</h3>
<div id="outline-container-org53572a3" class="outline-3">
<h3 id="org53572a3"><span class="section-number-3">4.6</span> Conclusion</h3>
<div class="outline-text-3" id="text-4-6">
<div class="important">
<p>
@@ -1441,7 +1419,7 @@ Direct Velocity Feedback:
<h3 id="orgbe907b4"><span class="section-number-3">5.1</span> Load the plants</h3>
<div class="outline-text-3" id="text-5-1">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping_uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_rmc'</span>, <span class="org-string">'G_dvf'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_uniaxial_plants.mat'</span>, <span class="org-string">'G'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_rmc'</span>, <span class="org-string">'G_dvf'</span>);
</pre>
</div>
</div>
@@ -1489,8 +1467,8 @@ Direct Velocity Feedback:
</div>
</div>
<div id="outline-container-orgb849304" class="outline-3">
<h3 id="orgb849304"><span class="section-number-3">5.3</span> Damped Plant</h3>
<div id="outline-container-orga1cf9f2" class="outline-3">
<h3 id="orga1cf9f2"><span class="section-number-3">5.3</span> Damped Plant</h3>
<div class="outline-text-3" id="text-5-3">
<div id="org043ecf3" class="figure">
@@ -1516,8 +1494,8 @@ Direct Velocity Feedback:
</div>
</div>
<div id="outline-container-org333697a" class="outline-2">
<h2 id="org333697a"><span class="section-number-2">6</span> Conclusion</h2>
<div id="outline-container-org4d89cbd" class="outline-2">
<h2 id="org4d89cbd"><span class="section-number-2">6</span> Conclusion</h2>
<div class="outline-text-2" id="text-6">
<p>
<a id="org58549a4"></a>
@@ -1527,7 +1505,7 @@ Direct Velocity Feedback:
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:21</p>
<p class="date">Created: 2020-03-13 ven. 17:39</p>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:20 -->
<!-- 2020-03-06 ven. 15:09 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Control of the NASS</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
</head>
<body>
@@ -258,7 +236,7 @@ for the JavaScript code in this tag.
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:20</p>
<p class="date">Created: 2020-03-06 ven. 15:09</p>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:21 -->
<!-- 2020-03-13 ven. 17:39 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Identification of the disturbances</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
<script>
MathJax = {
@@ -276,6 +254,7 @@ for the JavaScript code in this tag.
<li><a href="#Compute-the-Power-Spectral-Density-of-the-disturbance-force">5. Compute the Power Spectral Density of the disturbance force</a></li>
<li><a href="#Noise-Budget">6. Noise Budget</a></li>
<li><a href="#Save">7. Save</a></li>
<li><a href="#org9a1d0a9">8. Error motion of the Sample without Control</a></li>
</ul>
</div>
</div>
@@ -318,7 +297,7 @@ This file is divided in the following sections:
<li>Section <a href="#org71da6bd">6</a>: with the computed PSD, the noise budget of the system is done</li>
</ul>
<div id="outline-container-orgd6383a2" class="outline-2">
<div id="outline-container-Simscape-Model" class="outline-2">
<h2 id="Simscape-Model"><span class="section-number-2">1</span> Simscape Model</h2>
<div class="outline-text-2" id="text-Simscape-Model">
<p>
@@ -363,7 +342,7 @@ initializeSample(<span class="org-string">'type'</span>, <span class="org-string
</div>
</div>
<div id="outline-container-orgab57d7a" class="outline-2">
<div id="outline-container-Identification" class="outline-2">
<h2 id="Identification"><span class="section-number-2">2</span> Identification</h2>
<div class="outline-text-2" id="text-Identification">
<p>
@@ -416,7 +395,7 @@ G.OutputName = {<span class="org-string">'Vm'</span>};
</div>
</div>
<div id="outline-container-org26913fc" class="outline-2">
<div id="outline-container-Sensitivity-to-Disturbances" class="outline-2">
<h2 id="Sensitivity-to-Disturbances"><span class="section-number-2">3</span> Sensitivity to Disturbances</h2>
<div class="outline-text-2" id="text-Sensitivity-to-Disturbances">
<p>
@@ -448,7 +427,7 @@ G.OutputName = {<span class="org-string">'Vm'</span>};
</div>
</div>
<div id="outline-container-org627e5cf" class="outline-2">
<div id="outline-container-Power-Spectral-Density-of-the-effect-of-the-disturbances" class="outline-2">
<h2 id="Power-Spectral-Density-of-the-effect-of-the-disturbances"><span class="section-number-2">4</span> Power Spectral Density of the effect of the disturbances</h2>
<div class="outline-text-2" id="text-Power-Spectral-Density-of-the-effect-of-the-disturbances">
<p>
@@ -465,10 +444,10 @@ Also, the Ground Motion is measured.
</p>
<div class="org-src-container">
<pre class="src src-matlab">gm = load(<span class="org-string">'./disturbances/mat/psd_gm.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'psd_gm'</span>, <span class="org-string">'psd_gv'</span>);
rz = load(<span class="org-string">'./disturbances/mat/pxsp_r.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'pxsp_r'</span>);
tyz = load(<span class="org-string">'./disturbances/mat/pxz_ty_r.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'pxz_ty_r'</span>);
tyx = load(<span class="org-string">'./disturbances/mat/pxe_ty_r.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'pxe_ty_r'</span>);
<pre class="src src-matlab">gm = load(<span class="org-string">'./mat/psd_gm.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'psd_gm'</span>);
rz = load(<span class="org-string">'./mat/pxsp_r.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'pxsp_r'</span>);
tyz = load(<span class="org-string">'./mat/pxz_ty_r.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'pxz_ty_r'</span>);
tyx = load(<span class="org-string">'./mat/pxe_ty_r.mat'</span>, <span class="org-string">'f'</span>, <span class="org-string">'pxe_ty_r'</span>);
</pre>
</div>
@@ -512,7 +491,7 @@ The Cumulative Amplitude Spectrum of the relative motion is shown in figure <a h
</div>
</div>
<div id="outline-container-orge27c71b" class="outline-2">
<div id="outline-container-Compute-the-Power-Spectral-Density-of-the-disturbance-force" class="outline-2">
<h2 id="Compute-the-Power-Spectral-Density-of-the-disturbance-force"><span class="section-number-2">5</span> Compute the Power Spectral Density of the disturbance force</h2>
<div class="outline-text-2" id="text-Compute-the-Power-Spectral-Density-of-the-disturbance-force">
<p>
@@ -538,7 +517,7 @@ tyz.psd_f = tyz.pxz_ty_r<span class="org-type">./</span>abs(squeeze(freqresp(G(<
</div>
</div>
<div id="outline-container-org844ca42" class="outline-2">
<div id="outline-container-Noise-Budget" class="outline-2">
<h2 id="Noise-Budget"><span class="section-number-2">6</span> Noise Budget</h2>
<div class="outline-text-2" id="text-Noise-Budget">
<p>
@@ -567,11 +546,11 @@ We should verify that this is coherent with the measurements.
</div>
</div>
<div id="outline-container-org800eaed" class="outline-2">
<div id="outline-container-Save" class="outline-2">
<h2 id="Save"><span class="section-number-2">7</span> Save</h2>
<div class="outline-text-2" id="text-Save">
<p>
The PSD of the disturbance force are now saved for further analysis (the mat file is accessible <a href="mat/dist_psd.mat">here</a>).
The PSD of the disturbance force are now saved for further analysis.
</p>
<div class="org-src-container">
@@ -583,7 +562,114 @@ dist_f.psd_gm = gm.psd_gm; <span class="org-comment">% Power Spectral Density of
dist_f.psd_ty = tyz.psd_f; <span class="org-comment">% Power Spectral Density of the force induced by the Ty stage in the Z direction [N^2/Hz]</span>
dist_f.psd_rz = rz.psd_f; <span class="org-comment">% Power Spectral Density of the force induced by the Rz stage in the Z direction [N^2/Hz]</span>
save(<span class="org-string">'./disturbances/mat/dist_psd.mat'</span>, <span class="org-string">'dist_f'</span>);
save(<span class="org-string">'./mat/dist_psd.mat'</span>, <span class="org-string">'dist_f'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org9a1d0a9" class="outline-2">
<h2 id="org9a1d0a9"><span class="section-number-2">8</span> Error motion of the Sample without Control</h2>
<div class="outline-text-2" id="text-8">
<div class="org-src-container">
<pre class="src src-matlab">initializeGround();
initializeGranite(<span class="org-string">'Foffset'</span>, <span class="org-constant">false</span>);
initializeTy(<span class="org-string">'Foffset'</span>, <span class="org-constant">false</span>);
initializeRy(<span class="org-string">'Foffset'</span>, <span class="org-constant">false</span>);
initializeRz(<span class="org-string">'Foffset'</span>, <span class="org-constant">false</span>);
initializeMicroHexapod(<span class="org-string">'Foffset'</span>, <span class="org-constant">false</span>);
initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
</pre>
</div>
<p>
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'mass'</span>, 50);
</pre>
</div>
<p>
We set the references and disturbances to zero.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeReferences();
initializeDisturbances();
</pre>
</div>
<p>
We set the controller type to Open-Loop.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
</pre>
</div>
<p>
And we put some gravity.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
</pre>
</div>
<p>
We do not need to log any signal.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">initializePosError(<span class="org-string">'error'</span>, <span class="org-constant">false</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simulink.mat'</span>);
<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">'1'</span>);
</pre>
</div>
<p>
We simulate the model.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
subplot(1, 2, 1);
hold on;
plot(simout.Em.Eg.Time, simout.Em.Eg.Data(<span class="org-type">:</span>, 1), <span class="org-string">'DisplayName'</span>, <span class="org-string">'X'</span>);
plot(simout.Em.Eg.Time, simout.Em.Eg.Data(<span class="org-type">:</span>, 2), <span class="org-string">'DisplayName'</span>, <span class="org-string">'Y'</span>);
plot(simout.Em.Eg.Time, simout.Em.Eg.Data(<span class="org-type">:</span>, 3), <span class="org-string">'DisplayName'</span>, <span class="org-string">'Z'</span>);
hold off;
xlabel(<span class="org-string">'Time [s]'</span>);
ylabel(<span class="org-string">'Position error [m]'</span>);
legend();
subplot(1, 2, 2);
hold on;
plot(simout.Em.Eg.Time, simout.Em.Eg.Data(<span class="org-type">:</span>, 4));
plot(simout.Em.Eg.Time, simout.Em.Eg.Data(<span class="org-type">:</span>, 5));
plot(simout.Em.Eg.Time, simout.Em.Eg.Data(<span class="org-type">:</span>, 6));
hold off;
xlabel(<span class="org-string">'Time [s]'</span>);
ylabel(<span class="org-string">'Orientation error [rad]'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Eg = simout.Em.Eg;
save(<span class="org-string">'./mat/motion_error_ol.mat'</span>, <span class="org-string">'Eg'</span>);
</pre>
</div>
</div>
@@ -591,7 +677,7 @@ save(<span class="org-string">'./disturbances/mat/dist_psd.mat'</span>, <span cl
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:21</p>
<p class="date">Created: 2020-03-13 ven. 17:39</p>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:21 -->
<!-- 2020-03-13 ven. 17:39 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Tomography Experiment</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
</head>
<body>
@@ -262,30 +240,30 @@ for the JavaScript code in this tag.
<li><a href="#org03b2a76">1. Simscape Model</a></li>
<li><a href="#org6ed78a0">2. Tomography Experiment with no disturbances</a>
<ul>
<li><a href="#org5778305">2.1. Simulation Setup</a></li>
<li><a href="#org3f73a44">2.2. Analysis</a></li>
<li><a href="#org67ff024">2.3. Conclusion</a></li>
<li><a href="#orgab2c05f">2.1. Simulation Setup</a></li>
<li><a href="#org7d6c417">2.2. Analysis</a></li>
<li><a href="#orgc8896a6">2.3. Conclusion</a></li>
</ul>
</li>
<li><a href="#org16d8e58">3. Tomography Experiment with included perturbations</a>
<ul>
<li><a href="#orgc064b4d">3.1. Simulation Setup</a></li>
<li><a href="#org35d72fe">3.2. Analysis</a></li>
<li><a href="#org1f14bc2">3.3. Conclusion</a></li>
<li><a href="#org89b64b9">3.1. Simulation Setup</a></li>
<li><a href="#orgd3d5cc3">3.2. Analysis</a></li>
<li><a href="#org744b6a3">3.3. Conclusion</a></li>
</ul>
</li>
<li><a href="#org72f01ab">4. Tomography when the micro-hexapod is not centered</a>
<ul>
<li><a href="#org0fe7352">4.1. Simulation Setup</a></li>
<li><a href="#org3fda1a5">4.2. Analysis</a></li>
<li><a href="#org5042570">4.3. Conclusion</a></li>
<li><a href="#org3c7fe25">4.1. Simulation Setup</a></li>
<li><a href="#orgbf003b8">4.2. Analysis</a></li>
<li><a href="#org0577a39">4.3. Conclusion</a></li>
</ul>
</li>
<li><a href="#org8fa1632">5. Raster Scans with the translation stage</a>
<ul>
<li><a href="#org8a2f4a2">5.1. Simulation Setup</a></li>
<li><a href="#org55d191f">5.2. Analysis</a></li>
<li><a href="#orgae2c5b3">5.3. Conclusion</a></li>
<li><a href="#org06c656a">5.1. Simulation Setup</a></li>
<li><a href="#orgc5cbe68">5.2. Analysis</a></li>
<li><a href="#org6c038f1">5.3. Conclusion</a></li>
</ul>
</li>
</ul>
@@ -372,8 +350,8 @@ All stage is set to its zero position except the Spindle which is rotating at 60
<a id="org3effbb8"></a>
</p>
</div>
<div id="outline-container-org5778305" class="outline-3">
<h3 id="org5778305"><span class="section-number-3">2.1</span> Simulation Setup</h3>
<div id="outline-container-orgab2c05f" class="outline-3">
<h3 id="orgab2c05f"><span class="section-number-3">2.1</span> Simulation Setup</h3>
<div class="outline-text-3" id="text-2-1">
<p>
And we initialize the disturbances to be equal to zero.
@@ -403,17 +381,17 @@ And we save the obtained data.
</p>
<div class="org-src-container">
<pre class="src src-matlab">tomo_align_no_dist = struct(<span class="org-string">'t'</span>, t, <span class="org-string">'MTr'</span>, MTr);
save(<span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_align_no_dist'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_no_dist'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org3f73a44" class="outline-3">
<h3 id="org3f73a44"><span class="section-number-3">2.2</span> Analysis</h3>
<div id="outline-container-org7d6c417" class="outline-3">
<h3 id="org7d6c417"><span class="section-number-3">2.2</span> Analysis</h3>
<div class="outline-text-3" id="text-2-2">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_align_no_dist'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_no_dist'</span>);
t = tomo_align_no_dist.t;
MTr = tomo_align_no_dist.MTr;
</pre>
@@ -446,8 +424,8 @@ Erz = atan2(<span class="org-type">-</span>squeeze(MTr(1, 2, <span class="org-ty
</div>
</div>
<div id="outline-container-org67ff024" class="outline-3">
<h3 id="org67ff024"><span class="section-number-3">2.3</span> Conclusion</h3>
<div id="outline-container-orgc8896a6" class="outline-3">
<h3 id="orgc8896a6"><span class="section-number-3">2.3</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-3">
<div class="important">
<p>
@@ -467,8 +445,8 @@ This residual error motion probably comes from a small misalignment somewhere.
<a id="org4e7f626"></a>
</p>
</div>
<div id="outline-container-orgc064b4d" class="outline-3">
<h3 id="orgc064b4d"><span class="section-number-3">3.1</span> Simulation Setup</h3>
<div id="outline-container-org89b64b9" class="outline-3">
<h3 id="org89b64b9"><span class="section-number-3">3.1</span> Simulation Setup</h3>
<div class="outline-text-3" id="text-3-1">
<p>
We now activate the disturbances.
@@ -498,17 +476,17 @@ And we save the obtained data.
</p>
<div class="org-src-container">
<pre class="src src-matlab">tomo_align_dist = struct(<span class="org-string">'t'</span>, t, <span class="org-string">'MTr'</span>, MTr);
save(<span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_align_dist'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_dist'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org35d72fe" class="outline-3">
<h3 id="org35d72fe"><span class="section-number-3">3.2</span> Analysis</h3>
<div id="outline-container-orgd3d5cc3" class="outline-3">
<h3 id="orgd3d5cc3"><span class="section-number-3">3.2</span> Analysis</h3>
<div class="outline-text-3" id="text-3-2">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_align_dist'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_dist'</span>);
t = tomo_align_dist.t;
MTr = tomo_align_dist.MTr;
</pre>
@@ -541,8 +519,8 @@ Erz = atan2(<span class="org-type">-</span>squeeze(MTr(1, 2, <span class="org-ty
</div>
</div>
<div id="outline-container-org1f14bc2" class="outline-3">
<h3 id="org1f14bc2"><span class="section-number-3">3.3</span> Conclusion</h3>
<div id="outline-container-org744b6a3" class="outline-3">
<h3 id="org744b6a3"><span class="section-number-3">3.3</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-3">
<div class="important">
<p>
@@ -561,8 +539,8 @@ Error motion is what expected from the disturbance measurements.
<a id="orgb31e3fb"></a>
</p>
</div>
<div id="outline-container-org0fe7352" class="outline-3">
<h3 id="org0fe7352"><span class="section-number-3">4.1</span> Simulation Setup</h3>
<div id="outline-container-org3c7fe25" class="outline-3">
<h3 id="org3c7fe25"><span class="section-number-3">4.1</span> Simulation Setup</h3>
<div class="outline-text-3" id="text-4-1">
<p>
We first set the wanted translation of the Micro Hexapod.
@@ -616,17 +594,17 @@ And we save the obtained data.
</p>
<div class="org-src-container">
<pre class="src src-matlab">tomo_not_align = struct(<span class="org-string">'t'</span>, t, <span class="org-string">'MTr'</span>, MTr);
save(<span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_not_align'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_not_align'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org3fda1a5" class="outline-3">
<h3 id="org3fda1a5"><span class="section-number-3">4.2</span> Analysis</h3>
<div id="outline-container-orgbf003b8" class="outline-3">
<h3 id="orgbf003b8"><span class="section-number-3">4.2</span> Analysis</h3>
<div class="outline-text-3" id="text-4-2">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'tomo_not_align'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_not_align'</span>);
t = tomo_not_align.t;
MTr = tomo_not_align.MTr;
</pre>
@@ -659,8 +637,8 @@ Erz = atan2(<span class="org-type">-</span>squeeze(MTr(1, 2, <span class="org-ty
</div>
</div>
<div id="outline-container-org5042570" class="outline-3">
<h3 id="org5042570"><span class="section-number-3">4.3</span> Conclusion</h3>
<div id="outline-container-org0577a39" class="outline-3">
<h3 id="org0577a39"><span class="section-number-3">4.3</span> Conclusion</h3>
<div class="outline-text-3" id="text-4-3">
<div class="important">
<p>
@@ -679,8 +657,8 @@ The main motions are translations in the X direction of the mobile platform (cor
<a id="org6aaeb53"></a>
</p>
</div>
<div id="outline-container-org8a2f4a2" class="outline-3">
<h3 id="org8a2f4a2"><span class="section-number-3">5.1</span> Simulation Setup</h3>
<div id="outline-container-org06c656a" class="outline-3">
<h3 id="org06c656a"><span class="section-number-3">5.1</span> Simulation Setup</h3>
<div class="outline-text-3" id="text-5-1">
<p>
We set the reference path.
@@ -735,17 +713,17 @@ And we save the obtained data.
</p>
<div class="org-src-container">
<pre class="src src-matlab">ty_scan = struct(<span class="org-string">'t'</span>, t, <span class="org-string">'MTr'</span>, MTr);
save(<span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'ty_scan'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'ty_scan'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org55d191f" class="outline-3">
<h3 id="org55d191f"><span class="section-number-3">5.2</span> Analysis</h3>
<div id="outline-container-orgc5cbe68" class="outline-3">
<h3 id="orgc5cbe68"><span class="section-number-3">5.2</span> Analysis</h3>
<div class="outline-text-3" id="text-5-2">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'experiment_tomography/mat/experiment.mat'</span>, <span class="org-string">'ty_scan'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'ty_scan'</span>);
t = ty_scan.t;
MTr = ty_scan.MTr;
</pre>
@@ -778,8 +756,8 @@ Erz = atan2(<span class="org-type">-</span>squeeze(MTr(1, 2, <span class="org-ty
</div>
</div>
<div id="outline-container-orgae2c5b3" class="outline-3">
<h3 id="orgae2c5b3"><span class="section-number-3">5.3</span> Conclusion</h3>
<div id="outline-container-org6c038f1" class="outline-3">
<h3 id="org6c038f1"><span class="section-number-3">5.3</span> Conclusion</h3>
<div class="outline-text-3" id="text-5-3">
<div class="important">
<p>
@@ -794,7 +772,7 @@ In order to reduce the errors, we can make a smoother reference path for the tra
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:21</p>
<p class="date">Created: 2020-03-13 ven. 17:39</p>
</div>
</body>
</html>

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:20 -->
<!-- 2020-03-06 ven. 15:09 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Matlab Functions used for the NASS Project</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
</head>
<body>
@@ -259,276 +237,15 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgea7e3d7">1. computePsdDispl</a></li>
<li><a href="#org5e769e7">2. computeSetpoint</a></li>
<li><a href="#org0239a56">3. converErrorBasis</a></li>
<li><a href="#orgdc168b9">4. computeReferencePose</a></li>
<li><a href="#org493ab7f">5. Compute the Sample Position Error w.r.t. the NASS</a></li>
<li><a href="#orgdc168b9">1. computeReferencePose</a></li>
<li><a href="#org493ab7f">2. Compute the Sample Position Error w.r.t. the NASS</a></li>
</ul>
</div>
</div>
<div id="outline-container-orgea7e3d7" class="outline-2">
<h2 id="orgea7e3d7"><span class="section-number-2">1</span> computePsdDispl</h2>
<div class="outline-text-2" id="text-1">
<p>
<a id="org2cc2589"></a>
</p>
<p>
This Matlab function is accessible <a href="../src/computePsdDispl.m">here</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[psd_object]</span> = <span class="org-function-name">computePsdDispl</span>(<span class="org-variable-name">sys_data</span>, <span class="org-variable-name">t_init</span>, <span class="org-variable-name">n_av</span>)
i_init = find(sys_data.time <span class="org-type">&gt;</span> t_init, 1);
han_win = hanning(ceil(length(sys_data.Dx(i_init<span class="org-type">:</span>end, <span class="org-type">:</span>))<span class="org-type">/</span>n_av));
Fs = 1<span class="org-type">/</span>sys_data.time(2);
[pdx, f] = pwelch(sys_data.Dx(i_init<span class="org-type">:</span>end, <span class="org-type">:</span>), han_win, [], [], Fs);
[pdy, <span class="org-type">~</span>] = pwelch(sys_data.Dy(i_init<span class="org-type">:</span>end, <span class="org-type">:</span>), han_win, [], [], Fs);
[pdz, <span class="org-type">~</span>] = pwelch(sys_data.Dz(i_init<span class="org-type">:</span>end, <span class="org-type">:</span>), han_win, [], [], Fs);
[prx, <span class="org-type">~</span>] = pwelch(sys_data.Rx(i_init<span class="org-type">:</span>end, <span class="org-type">:</span>), han_win, [], [], Fs);
[pry, <span class="org-type">~</span>] = pwelch(sys_data.Ry(i_init<span class="org-type">:</span>end, <span class="org-type">:</span>), han_win, [], [], Fs);
[prz, <span class="org-type">~</span>] = pwelch(sys_data.Rz(i_init<span class="org-type">:</span>end, <span class="org-type">:</span>), han_win, [], [], Fs);
psd_object = struct(...
<span class="org-string">'f'</span>, f, ...
<span class="org-string">'dx'</span>, pdx, ...
<span class="org-string">'dy'</span>, pdy, ...
<span class="org-string">'dz'</span>, pdz, ...
<span class="org-string">'rx'</span>, prx, ...
<span class="org-string">'ry'</span>, pry, ...
<span class="org-string">'rz'</span>, prz);
<span class="org-keyword">end</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org5e769e7" class="outline-2">
<h2 id="org5e769e7"><span class="section-number-2">2</span> computeSetpoint</h2>
<div class="outline-text-2" id="text-2">
<p>
<a id="orge6ebb0b"></a>
</p>
<p>
This Matlab function is accessible <a href="../src/computeSetpoint.m">here</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">setpoint</span> = <span class="org-function-name">computeSetpoint</span>(<span class="org-variable-name">ty</span>, <span class="org-variable-name">ry</span>, <span class="org-variable-name">rz</span>)
<span class="org-matlab-cellbreak"><span class="org-comment">%%</span></span>
setpoint = zeros(<span class="org-variable-name">6</span>, 1);
<span class="org-matlab-cellbreak"><span class="org-comment">%% Ty</span></span>
Ty = [1 0 0 0 ;
0 1 0 ty ;
0 0 1 0 ;
0 0 0 1 ];
<span class="org-comment">% Tyinv = [1 0 0 0 ;</span>
<span class="org-comment">% 0 1 0 -ty ;</span>
<span class="org-comment">% 0 0 1 0 ;</span>
<span class="org-comment">% 0 0 0 1 ];</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Ry</span></span>
Ry = [ cos(ry) 0 sin(ry) 0 ;
0 1 0 0 ;
<span class="org-type">-</span>sin(ry) 0 cos(ry) 0 ;
0 0 0 1 ];
<span class="org-comment">% TMry = Ty*Ry*Tyinv;</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Rz</span></span>
Rz = [cos(rz) <span class="org-type">-</span>sin(rz) 0 0 ;
sin(rz) cos(rz) 0 0 ;
0 0 1 0 ;
0 0 0 1 ];
<span class="org-comment">% TMrz = Ty*TMry*Rz*TMry'*Tyinv;</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% All stages</span></span>
<span class="org-comment">% </span><span class="org-comment"><span class="org-constant">TM </span></span><span class="org-comment">= TMrz*TMry*Ty;</span>
TM = Ty<span class="org-type">*</span>Ry<span class="org-type">*</span>Rz;
[thetax, thetay, thetaz] = RM2angle(TM(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3));
setpoint<span class="org-type">(1:3) </span>= TM(1<span class="org-type">:</span>3, 4);
setpoint<span class="org-type">(4:6) </span>= [thetax, thetay, thetaz];
<span class="org-matlab-cellbreak"><span class="org-comment">%% Custom Functions</span></span>
<span class="org-keyword">function</span> <span class="org-variable-name">[thetax, thetay, thetaz]</span> = <span class="org-function-name">RM2angle</span>(<span class="org-variable-name">R</span>)
<span class="org-keyword">if</span> abs(abs(R(3, 1)) <span class="org-type">-</span> 1) <span class="org-type">&gt;</span> 1e<span class="org-type">-</span>6 <span class="org-comment">% R31 != 1 and R31 != -1</span>
thetay = <span class="org-type">-</span>asin(R(3, 1));
thetax = atan2(R(3, 2)<span class="org-type">/</span>cos(thetay), R(3, 3)<span class="org-type">/</span>cos(thetay));
thetaz = atan2(R(2, 1)<span class="org-type">/</span>cos(thetay), R(1, 1)<span class="org-type">/</span>cos(thetay));
<span class="org-keyword">else</span>
thetaz = 0;
<span class="org-keyword">if</span> abs(R(3, 1)<span class="org-type">+</span>1) <span class="org-type">&lt;</span> 1e<span class="org-type">-</span>6 <span class="org-comment">% R31 = -1</span>
thetay = <span class="org-constant">pi</span><span class="org-type">/</span>2;
thetax = thetaz <span class="org-type">+</span> atan2(R(1, 2), R(1, 3));
<span class="org-keyword">else</span>
thetay = <span class="org-type">-</span><span class="org-constant">pi</span><span class="org-type">/</span>2;
thetax = <span class="org-type">-</span>thetaz <span class="org-type">+</span> atan2(<span class="org-type">-</span>R(1, 2), <span class="org-type">-</span>R(1, 3));
<span class="org-keyword">end</span>
<span class="org-keyword">end</span>
<span class="org-keyword">end</span>
<span class="org-keyword">end</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org0239a56" class="outline-2">
<h2 id="org0239a56"><span class="section-number-2">3</span> converErrorBasis</h2>
<div class="outline-text-2" id="text-3">
<p>
<a id="org8c2ffe5"></a>
</p>
<p>
This Matlab function is accessible <a href="../src/converErrorBasis.m">here</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">error_nass</span> = <span class="org-function-name">convertErrorBasis</span>(<span class="org-variable-name">pos</span>, <span class="org-variable-name">setpoint</span>, <span class="org-variable-name">ty</span>, <span class="org-variable-name">ry</span>, <span class="org-variable-name">rz</span>)
<span class="org-comment">% convertErrorBasis -</span>
<span class="org-comment">%</span>
<span class="org-comment">% Syntax: convertErrorBasis(p_error, ty, ry, rz)</span>
<span class="org-comment">%</span>
<span class="org-comment">% Inputs:</span>
<span class="org-comment">% - p_error - Position error of the sample w.r.t. the granite [m, rad]</span>
<span class="org-comment">% - ty - Measured translation of the Ty stage [m]</span>
<span class="org-comment">% - ry - Measured rotation of the Ry stage [rad]</span>
<span class="org-comment">% - rz - Measured rotation of the Rz stage [rad]</span>
<span class="org-comment">%</span>
<span class="org-comment">% Outputs:</span>
<span class="org-comment">% - P_nass - Position error of the sample w.r.t. the NASS base [m]</span>
<span class="org-comment">% - R_nass - Rotation error of the sample w.r.t. the NASS base [rad]</span>
<span class="org-comment">%</span>
<span class="org-comment">% Example:</span>
<span class="org-comment">%</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% If line vector =&gt; column vector</span></span>
<span class="org-keyword">if</span> size(pos, 2) <span class="org-type">==</span> 6
pos = pos<span class="org-type">'</span>;
<span class="org-keyword">end</span>
<span class="org-keyword">if</span> size(setpoint, 2) <span class="org-type">==</span> 6
setpoint = setpoint<span class="org-type">'</span>;
<span class="org-keyword">end</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Position of the sample in the frame fixed to the Granite</span></span>
P_granite = [pos(1<span class="org-type">:</span>3); 1]; <span class="org-comment">% Position [m]</span>
R_granite = [setpoint(1<span class="org-type">:</span>3); 1]; <span class="org-comment">% Reference [m]</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Transformation matrices of the stages</span></span>
<span class="org-comment">% T-y</span>
TMty = [1 0 0 0 ;
0 1 0 ty ;
0 0 1 0 ;
0 0 0 1 ];
<span class="org-comment">% R-y</span>
TMry = [ cos(ry) 0 sin(ry) 0 ;
0 1 0 0 ;
<span class="org-type">-</span>sin(ry) 0 cos(ry) 0 ;
0 0 0 1 ];
<span class="org-comment">% R-z</span>
TMrz = [cos(rz) <span class="org-type">-</span>sin(rz) 0 0 ;
sin(rz) cos(rz) 0 0 ;
0 0 1 0 ;
0 0 0 1 ];
<span class="org-matlab-cellbreak"><span class="org-comment">%% Compute Point coordinates in the new reference fixed to the NASS base</span></span>
<span class="org-comment">% P_nass = TMrz*TMry*TMty*P_granite;</span>
P_nass = TMrz<span class="org-type">\</span>TMry<span class="org-type">\</span>TMty<span class="org-type">\</span>P_granite;
R_nass = TMrz<span class="org-type">\</span>TMry<span class="org-type">\</span>TMty<span class="org-type">\</span>R_granite;
dx = R_nass(1)<span class="org-type">-</span>P_nass(1);
dy = R_nass(2)<span class="org-type">-</span>P_nass(2);
dz = R_nass(3)<span class="org-type">-</span>P_nass(3);
<span class="org-matlab-cellbreak"><span class="org-comment">%% Compute new basis vectors linked to the NASS base</span></span>
<span class="org-comment">% ux_nass = TMrz*TMry*TMty*[1; 0; 0; 0];</span>
<span class="org-comment">% ux_nass = ux_nass(1:3);</span>
<span class="org-comment">% uy_nass = TMrz*TMry*TMty*[0; 1; 0; 0];</span>
<span class="org-comment">% uy_nass = uy_nass(1:3);</span>
<span class="org-comment">% uz_nass = TMrz*TMry*TMty*[0; 0; 1; 0];</span>
<span class="org-comment">% uz_nass = uz_nass(1:3);</span>
ux_nass = TMrz<span class="org-type">\</span>TMry<span class="org-type">\</span>TMty<span class="org-type">\</span>[1; 0; 0; 0];
ux_nass = ux_nass(1<span class="org-type">:</span>3);
uy_nass = TMrz<span class="org-type">\</span>TMry<span class="org-type">\</span>TMty<span class="org-type">\</span>[0; 1; 0; 0];
uy_nass = uy_nass(1<span class="org-type">:</span>3);
uz_nass = TMrz<span class="org-type">\</span>TMry<span class="org-type">\</span>TMty<span class="org-type">\</span>[0; 0; 1; 0];
uz_nass = uz_nass(1<span class="org-type">:</span>3);
<span class="org-matlab-cellbreak"><span class="org-comment">%% Rotations error w.r.t. granite Frame</span></span>
<span class="org-comment">% Rotations error w.r.t. granite Frame</span>
rx_nass = pos(4);
ry_nass = pos(5);
rz_nass = pos(6);
<span class="org-comment">% Rotation matrices of the Sample w.r.t. the Granite</span>
Mrx_error = [1 0 0 ;
0 cos(<span class="org-type">-</span>rx_nass) <span class="org-type">-</span>sin(<span class="org-type">-</span>rx_nass) ;
0 sin(<span class="org-type">-</span>rx_nass) cos(<span class="org-type">-</span>rx_nass)];
Mry_error = [ cos(<span class="org-type">-</span>ry_nass) 0 sin(<span class="org-type">-</span>ry_nass) ;
0 1 0 ;
<span class="org-type">-</span>sin(<span class="org-type">-</span>ry_nass) 0 cos(<span class="org-type">-</span>ry_nass)];
Mrz_error = [cos(<span class="org-type">-</span>rz_nass) <span class="org-type">-</span>sin(<span class="org-type">-</span>rz_nass) 0 ;
sin(<span class="org-type">-</span>rz_nass) cos(<span class="org-type">-</span>rz_nass) 0 ;
0 0 1];
<span class="org-comment">% Rotation matrix of the Sample w.r.t. the Granite</span>
Mr_error = Mrz_error<span class="org-type">*</span>Mry_error<span class="org-type">*</span>Mrx_error;
<span class="org-matlab-cellbreak"><span class="org-comment">%% Use matrix to solve</span></span>
R = Mr_error<span class="org-type">/</span>[ux_nass, uy_nass, uz_nass]; <span class="org-comment">% Rotation matrix from NASS base to Sample</span>
[thetax, thetay, thetaz] = RM2angle(R);
error_nass = [dx; dy; dz; thetax; thetay; thetaz];
<span class="org-matlab-cellbreak"><span class="org-comment">%% Custom Functions</span></span>
<span class="org-keyword">function</span> <span class="org-variable-name">[thetax, thetay, thetaz]</span> = <span class="org-function-name">RM2angle</span>(<span class="org-variable-name">R</span>)
<span class="org-keyword">if</span> abs(abs(R(3, 1)) <span class="org-type">-</span> 1) <span class="org-type">&gt;</span> 1e<span class="org-type">-</span>6 <span class="org-comment">% R31 != 1 and R31 != -1</span>
thetay = <span class="org-type">-</span>asin(R(3, 1));
<span class="org-comment">% thetaybis = pi-thetay;</span>
thetax = atan2(R(3, 2)<span class="org-type">/</span>cos(thetay), R(3, 3)<span class="org-type">/</span>cos(thetay));
<span class="org-comment">% thetaxbis = atan2(R(3, 2)/cos(thetaybis), R(3, 3)/cos(thetaybis));</span>
thetaz = atan2(R(2, 1)<span class="org-type">/</span>cos(thetay), R(1, 1)<span class="org-type">/</span>cos(thetay));
<span class="org-comment">% thetazbis = atan2(R(2, 1)/cos(thetaybis), R(1, 1)/cos(thetaybis));</span>
<span class="org-keyword">else</span>
thetaz = 0;
<span class="org-keyword">if</span> abs(R(3, 1)<span class="org-type">+</span>1) <span class="org-type">&lt;</span> 1e<span class="org-type">-</span>6 <span class="org-comment">% R31 = -1</span>
thetay = <span class="org-constant">pi</span><span class="org-type">/</span>2;
thetax = thetaz <span class="org-type">+</span> atan2(R(1, 2), R(1, 3));
<span class="org-keyword">else</span>
thetay = <span class="org-type">-</span><span class="org-constant">pi</span><span class="org-type">/</span>2;
thetax = <span class="org-type">-</span>thetaz <span class="org-type">+</span> atan2(<span class="org-type">-</span>R(1, 2), <span class="org-type">-</span>R(1, 3));
<span class="org-keyword">end</span>
<span class="org-keyword">end</span>
<span class="org-keyword">end</span>
<span class="org-keyword">end</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgdc168b9" class="outline-2">
<h2 id="orgdc168b9"><span class="section-number-2">4</span> computeReferencePose</h2>
<div class="outline-text-2" id="text-4">
<h2 id="orgdc168b9"><span class="section-number-2">1</span> computeReferencePose</h2>
<div class="outline-text-2" id="text-1">
<p>
<a id="org98cbe6e"></a>
</p>
@@ -620,8 +337,8 @@ This Matlab function is accessible <a href="src/computeReferencePose.m">here</a>
</div>
</div>
<div id="outline-container-org493ab7f" class="outline-2">
<h2 id="org493ab7f"><span class="section-number-2">5</span> Compute the Sample Position Error w.r.t. the NASS</h2>
<div class="outline-text-2" id="text-5">
<h2 id="org493ab7f"><span class="section-number-2">2</span> Compute the Sample Position Error w.r.t. the NASS</h2>
<div class="outline-text-2" id="text-2">
<p>
<a id="org6dcd4fb"></a>
</p>
@@ -658,7 +375,7 @@ MTr = [WTm(1<span class="org-type">:</span>3,1<span class="org-type">:</span>3)<
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:20</p>
<p class="date">Created: 2020-03-06 ven. 15:09</p>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:20 -->
<!-- 2020-03-13 ven. 17:39 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>HAC-LAC applied on the Simscape Model</title>
@@ -202,51 +202,39 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
<script>
MathJax = {
tex: { 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">
@@ -259,51 +247,44 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org68eabc2">1. Undamped System</a>
<li><a href="#org9a782be">1. Initialization</a></li>
<li><a href="#org5f71356">2. Low Authority Control - Direct Velocity Feedback \(\bm{K}_\mathcal{L}\)</a>
<ul>
<li><a href="#org05b902d">1.1. Identification of the plant</a>
<ul>
<li><a href="#orga716982">1.1.1. Initialize the Simulation</a></li>
<li><a href="#org2a3d76d">1.1.2. Identification</a></li>
<li><a href="#org86a6b3a">1.1.3. Display TF</a></li>
<li><a href="#org51e23f6">1.1.4. Obtained Plants for Active Damping</a></li>
<li><a href="#orgd91db57">2.1. Identification</a></li>
<li><a href="#org09c8990">2.2. Plant</a></li>
<li><a href="#orgc21ad83">2.3. Root Locus</a></li>
<li><a href="#orgd18d476">2.4. Controller and Loop Gain</a></li>
</ul>
</li>
<li><a href="#orgaf40de5">1.2. Tomography Experiment</a>
<li><a href="#orgbba86f0">3. High Authority Control - \(\bm{K}_\mathcal{X}\)</a>
<ul>
<li><a href="#org5a1507e">1.2.1. Simulation</a></li>
<li><a href="#org9498b7b">1.2.2. Results</a></li>
</ul>
</li>
<li><a href="#orgdcbab01">1.3. Verification of the transfer function from nano hexapod to metrology</a>
<ul>
<li><a href="#org9edf24c">1.3.1. Initialize the Simulation</a></li>
<li><a href="#org9ff767e">1.3.2. Identification</a></li>
<li><a href="#org5c0b9bf">1.3.3. Display TF</a></li>
<li><a href="#org6288fb1">1.3.4. Obtained Plants for Active Damping</a></li>
</ul>
</li>
<li><a href="#orgdd75cdd">3.1. Identification of the damped plant</a></li>
<li><a href="#orgf70f020">3.2. Controller Design</a></li>
</ul>
</li>
<li><a href="#org5a1507e">4. Simulation</a></li>
<li><a href="#org9498b7b">5. Results</a></li>
</ul>
</div>
</div>
<div id="outline-container-org68eabc2" class="outline-2">
<h2 id="org68eabc2"><span class="section-number-2">1</span> Undamped System</h2>
<div class="outline-text-2" id="text-1">
<p>
<a id="org632e852"></a>
The position \(\bm{\mathcal{X}}\) of the Sample with respect to the granite is measured.
</p>
<p>
It is then compare to the wanted position of the Sample \(\bm{r}_\mathcal{X}\) in order to obtain the position error \(\bm{\epsilon}_\mathcal{X}\) of the Sample with respect to a frame attached to the Stewart top platform.
</p>
<div class="figure">
<p><img src="figs/hac_lac_control_schematic.png" alt="hac_lac_control_schematic.png" />
</p>
</div>
<div id="outline-container-org05b902d" class="outline-3">
<h3 id="org05b902d"><span class="section-number-3">1.1</span> Identification of the plant</h3>
<div class="outline-text-3" id="text-1-1">
</div>
<div id="outline-container-orga716982" class="outline-4">
<h4 id="orga716982"><span class="section-number-4">1.1.1</span> Initialize the Simulation</h4>
<div class="outline-text-4" id="text-1-1-1">
<div id="outline-container-org9a782be" class="outline-2">
<h2 id="org9a782be"><span class="section-number-2">1</span> Initialization</h2>
<div class="outline-text-2" id="text-1">
<p>
We initialize all the stages with the default parameters.
</p>
@@ -324,137 +305,199 @@ The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeNanoHexapod(<span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span>);
initializeSample(<span class="org-string">'mass'</span>, 50);
initializeSample(<span class="org-string">'mass'</span>, 1);
</pre>
</div>
<p>
No disturbances.
We set the references that corresponds to a tomography experiment.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
<pre class="src src-matlab">initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating'</span>, <span class="org-string">'Rz_period'</span>, 1);
</pre>
</div>
<p>
We set the references to zero.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeReferences();
<pre class="src src-matlab">initializeDisturbances();
</pre>
</div>
<p>
And all the controllers are set to 0.
Open Loop.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org2a3d76d" class="outline-4">
<h4 id="org2a3d76d"><span class="section-number-4">1.1.2</span> Identification</h4>
<div class="outline-text-4" id="text-1-1-2">
<p>
First, we identify the dynamics of the system using the <code>linearize</code> function.
And we put some gravity.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions;
options.SampleTime = 0;
<pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
</pre>
</div>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
<p>
We log the signals.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org5f71356" class="outline-2">
<h2 id="org5f71356"><span class="section-number-2">2</span> Low Authority Control - Direct Velocity Feedback \(\bm{K}_\mathcal{L}\)</h2>
<div class="outline-text-2" id="text-2">
<p>
The first loop closed corresponds to a direct velocity feedback loop.
</p>
<p>
The design of the associated decentralized controller is explained in <a href="active_damping.html">this</a> file.
</p>
</div>
<div id="outline-container-orgd91db57" class="outline-3">
<h3 id="orgd91db57"><span class="section-number-3">2.1</span> Identification</h3>
<div class="outline-text-3" id="text-2-1">
<div class="org-src-container">
<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>;
<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">'/Controller'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Inputs</span>
io(io_i) = linio([mdl, <span class="org-string">'/Tracking Error'</span>], 1, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'En'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Metrology Outputs</span>
io(io_i) = linio([mdl, <span class="org-string">'/Controller'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Inputs</span>
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station'</span>], 3, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'Dnlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Relative Motion Outputs</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
G = linearize(mdl, io, options);
G.InputName = {<span class="org-string">'Fnl1'</span>, <span class="org-string">'Fnl2'</span>, <span class="org-string">'Fnl3'</span>, <span class="org-string">'Fnl4'</span>, <span class="org-string">'Fnl5'</span>, <span class="org-string">'Fnl6'</span>};
G.OutputName = {<span class="org-string">'Edx'</span>, <span class="org-string">'Edy'</span>, <span class="org-string">'Edz'</span>, <span class="org-string">'Erx'</span>, <span class="org-string">'Ery'</span>, <span class="org-string">'Erz'</span>};
G_dvf = linearize(mdl, io, 0);
G_dvf.InputName = {<span class="org-string">'Fnl1'</span>, <span class="org-string">'Fnl2'</span>, <span class="org-string">'Fnl3'</span>, <span class="org-string">'Fnl4'</span>, <span class="org-string">'Fnl5'</span>, <span class="org-string">'Fnl6'</span>};
G_dvf.OutputName = {<span class="org-string">'Dnlm1'</span>, <span class="org-string">'Dnlm2'</span>, <span class="org-string">'Dnlm3'</span>, <span class="org-string">'Dnlm4'</span>, <span class="org-string">'Dnlm5'</span>, <span class="org-string">'Dnlm6'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-org09c8990" class="outline-3">
<h3 id="org09c8990"><span class="section-number-3">2.2</span> Plant</h3>
</div>
<div id="outline-container-orgc21ad83" class="outline-3">
<h3 id="orgc21ad83"><span class="section-number-3">2.3</span> Root Locus</h3>
</div>
<div id="outline-container-orgd18d476" class="outline-3">
<h3 id="orgd18d476"><span class="section-number-3">2.4</span> Controller and Loop Gain</h3>
<div class="outline-text-3" id="text-2-4">
<div class="org-src-container">
<pre class="src src-matlab">K_dvf = s<span class="org-type">*</span>15000<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span>10000);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">K_dvf = <span class="org-type">-</span>K_dvf<span class="org-type">*</span>eye(6);
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-orgbba86f0" class="outline-2">
<h2 id="orgbba86f0"><span class="section-number-2">3</span> High Authority Control - \(\bm{K}_\mathcal{X}\)</h2>
<div class="outline-text-2" id="text-3">
</div>
<div id="outline-container-orgdd75cdd" class="outline-3">
<h3 id="orgdd75cdd"><span class="section-number-3">3.1</span> Identification of the damped plant</h3>
<div class="outline-text-3" id="text-3-1">
<div class="org-src-container">
<pre class="src src-matlab">Kx = tf(zeros(6));
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'hac-dvf'</span>);
</pre>
</div>
<div class="org-src-container">
<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>;
<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">'/Controller'</span>], 1, <span class="org-string">'input'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Inputs</span>
io(io_i) = linio([mdl, <span class="org-string">'/Tracking Error'</span>], 1, <span class="org-string">'output'</span>, [], <span class="org-string">'En'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Position Errror</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
G = linearize(mdl, io, 0);
G.InputName = {<span class="org-string">'Fnl1'</span>, <span class="org-string">'Fnl2'</span>, <span class="org-string">'Fnl3'</span>, <span class="org-string">'Fnl4'</span>, <span class="org-string">'Fnl5'</span>, <span class="org-string">'Fnl6'</span>};
G.OutputName = {<span class="org-string">'Ex'</span>, <span class="org-string">'Ey'</span>, <span class="org-string">'Ez'</span>, <span class="org-string">'Erx'</span>, <span class="org-string">'Ery'</span>, <span class="org-string">'Erz'</span>};
</pre>
</div>
<p>
The minus sine is put here because there is already a minus sign included due to the computation of the position error.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'mat/stages.mat'</span>, <span class="org-string">'nano_hexapod'</span>);
G_cart = minreal(G<span class="org-type">*</span>inv(nano_hexapod.J<span class="org-type">'</span>));
G_cart.InputName = {<span class="org-string">'Fnx'</span>, <span class="org-string">'Fny'</span>, <span class="org-string">'Fnz'</span>, <span class="org-string">'Mnx'</span>, <span class="org-string">'Mny'</span>, <span class="org-string">'Mnz'</span>};
Gx = <span class="org-type">-</span>G<span class="org-type">*</span>inv(nano_hexapod.J<span class="org-type">'</span>);
Gx.InputName = {<span class="org-string">'Fx'</span>, <span class="org-string">'Fy'</span>, <span class="org-string">'Fz'</span>, <span class="org-string">'Mx'</span>, <span class="org-string">'My'</span>, <span class="org-string">'Mz'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-orgf70f020" class="outline-3">
<h3 id="orgf70f020"><span class="section-number-3">3.2</span> Controller Design</h3>
<div class="outline-text-3" id="text-3-2">
<p>
The controller consists of:
</p>
<ul class="org-ul">
<li>A pure integrator</li>
<li>A Second integrator up to half the wanted bandwidth</li>
<li>A Lead around the cross-over frequency</li>
<li>A low pass filter with a cut-off equal to two times the wanted bandwidth</li>
</ul>
<div class="org-src-container">
<pre class="src src-matlab">wc = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>15; <span class="org-comment">% Bandwidth Bandwidth [rad/s]</span>
h = 1.5; <span class="org-comment">% Lead parameter</span>
Kx = (1<span class="org-type">/</span>h) <span class="org-type">*</span> (1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">*</span>h)<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">/</span>h) <span class="org-type">*</span> wc<span class="org-type">/</span>s <span class="org-type">*</span> ((s<span class="org-type">/</span>wc<span class="org-type">*</span>2 <span class="org-type">+</span> 1)<span class="org-type">/</span>(s<span class="org-type">/</span>wc<span class="org-type">*</span>2)) <span class="org-type">*</span> (1<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">/</span>2));
<span class="org-comment">% Normalization of the gain of have a loop gain of 1 at frequency wc</span>
Kx = Kx<span class="org-type">.*</span>diag(1<span class="org-type">./</span>diag(abs(freqresp(Gx<span class="org-type">*</span>Kx, wc))));
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">G_legs = minreal(inv(nano_hexapod.J)<span class="org-type">*</span>G);
G_legs.OutputName = {<span class="org-string">'e1'</span>, <span class="org-string">'e2'</span>, <span class="org-string">'e3'</span>, <span class="org-string">'e4'</span>, <span class="org-string">'e5'</span>, <span class="org-string">'e6'</span>};
<pre class="src src-matlab">isstable(feedback(Gx<span class="org-type">*</span>Kx, eye(6), <span class="org-type">-</span>1))
</pre>
</div>
</div>
</div>
<div id="outline-container-org86a6b3a" class="outline-4">
<h4 id="org86a6b3a"><span class="section-number-4">1.1.3</span> Display TF</h4>
<div class="outline-text-4" id="text-1-1-3">
<div id="org37e58f3" class="figure">
<p><img src="figs/plant_G_cart.png" alt="plant_G_cart.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Transfer Function from forces applied by the nano-hexapod to position error (<a href="./figs/plant_G_cart.png">png</a>, <a href="./figs/plant_G_cart.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org51e23f6" class="outline-4">
<h4 id="org51e23f6"><span class="section-number-4">1.1.4</span> Obtained Plants for Active Damping</h4>
<div class="outline-text-4" id="text-1-1-4">
<div id="orga98bcf7" class="figure">
<p><img src="figs/nass_active_damping_iff_plant.png" alt="nass_active_damping_iff_plant.png" />
</p>
<p><span class="figure-number">Figure 2: </span><code>G_iff</code>: IFF Plant (<a href="./figs/nass_active_damping_iff_plant.png">png</a>, <a href="./figs/nass_active_damping_iff_plant.pdf">pdf</a>)</p>
</div>
<div id="orgf5e6d6e" class="figure">
<p><img src="figs/nass_active_damping_ine_plant.png" alt="nass_active_damping_ine_plant.png" />
</p>
<p><span class="figure-number">Figure 3: </span><code>G_dvf</code>: Plant for Direct Velocity Feedback (<a href="./figs/nass_active_damping_dvf_plant.png">png</a>, <a href="./figs/nass_active_damping_dvf_plant.pdf">pdf</a>)</p>
</div>
<div id="orgfe31dcc" class="figure">
<p><img src="figs/nass_active_damping_inertial_plant.png" alt="nass_active_damping_inertial_plant.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Inertial Feedback Plant (<a href="./figs/nass_active_damping_inertial_plant.png">png</a>, <a href="./figs/nass_active_damping_inertial_plant.pdf">pdf</a>)</p>
</div>
</div>
</div>
</div>
<div id="outline-container-orgaf40de5" class="outline-3">
<h3 id="orgaf40de5"><span class="section-number-3">1.2</span> Tomography Experiment</h3>
<div class="outline-text-3" id="text-1-2">
</div>
<div id="outline-container-org5a1507e" class="outline-4">
<h4 id="org5a1507e"><span class="section-number-4">1.2.1</span> Simulation</h4>
<div class="outline-text-4" id="text-1-2-1">
<p>
We initialize elements for the tomography experiment.
</p>
<div class="org-src-container">
<pre class="src src-matlab">prepareTomographyExperiment();
<pre class="src src-matlab">Kx = inv(nano_hexapod.J<span class="org-type">'</span>)<span class="org-type">*</span>Kx;
</pre>
</div>
<p>
We change the simulation stop time.
</p>
<div class="org-src-container">
<pre class="src src-matlab">isstable(feedback(G<span class="org-type">*</span>Kx, eye(6), 1))
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org5a1507e" class="outline-2">
<h2 id="org5a1507e"><span class="section-number-2">4</span> Simulation</h2>
<div class="outline-text-2" id="text-4">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simulink.mat'</span>);
<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">'3'</span>);
<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">'1.5'</span>);
</pre>
</div>
@@ -466,186 +509,26 @@ And we simulate the system.
</pre>
</div>
<p>
Finally, we save the simulation results for further analysis
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./active_damping/mat/tomo_exp.mat'</span>, <span class="org-string">'En'</span>, <span class="org-string">'Eg'</span>, <span class="org-string">'-append'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/tomo_exp_hac_lac.mat'</span>, <span class="org-string">'simout'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org9498b7b" class="outline-4">
<h4 id="org9498b7b"><span class="section-number-4">1.2.2</span> Results</h4>
<div class="outline-text-4" id="text-1-2-2">
<p>
We load the results of tomography experiments.
</p>
<div id="outline-container-org9498b7b" class="outline-2">
<h2 id="org9498b7b"><span class="section-number-2">5</span> Results</h2>
<div class="outline-text-2" id="text-5">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./active_damping/mat/tomo_exp.mat'</span>, <span class="org-string">'En'</span>);
t = linspace(0, 3, length(En(<span class="org-type">:</span>,1)));
<pre class="src src-matlab">load(<span class="org-string">'./mat/tomo_exp_hac_lac.mat'</span>, <span class="org-string">'simout'</span>);
</pre>
</div>
<div id="org5746ec3" class="figure">
<p><img src="figs/nass_act_damp_undamped_sim_tomo_trans.png" alt="nass_act_damp_undamped_sim_tomo_trans.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Position Error during tomography experiment - Translations (<a href="./figs/nass_act_damp_undamped_sim_tomo_trans.png">png</a>, <a href="./figs/nass_act_damp_undamped_sim_tomo_trans.pdf">pdf</a>)</p>
</div>
<div id="orgb29225c" class="figure">
<p><img src="figs/nass_act_damp_undamped_sim_tomo_rot.png" alt="nass_act_damp_undamped_sim_tomo_rot.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Position Error during tomography experiment - Rotations (<a href="./figs/nass_act_damp_undamped_sim_tomo_rot.png">png</a>, <a href="./figs/nass_act_damp_undamped_sim_tomo_rot.pdf">pdf</a>)</p>
</div>
</div>
</div>
</div>
<div id="outline-container-orgdcbab01" class="outline-3">
<h3 id="orgdcbab01"><span class="section-number-3">1.3</span> Verification of the transfer function from nano hexapod to metrology</h3>
<div class="outline-text-3" id="text-1-3">
</div>
<div id="outline-container-org9edf24c" class="outline-4">
<h4 id="org9edf24c"><span class="section-number-4">1.3.1</span> Initialize the Simulation</h4>
<div class="outline-text-4" id="text-1-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();
initializeAxisc();
initializeMirror();
</pre>
</div>
<p>
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeNanoHexapod(<span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span>);
initializeSample(<span class="org-string">'mass'</span>, 50);
</pre>
</div>
<p>
No disturbances.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
</pre>
</div>
<p>
We set the references to zero.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeReferences();
</pre>
</div>
<p>
And all the controllers are set to 0.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org9ff767e" class="outline-4">
<h4 id="org9ff767e"><span class="section-number-4">1.3.2</span> Identification</h4>
<div class="outline-text-4" id="text-1-3-2">
<p>
First, we identify the dynamics of the system using the <code>linearize</code> function.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions;
options.SampleTime = 0;
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'nass_model'</span>;
<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">'/Controller'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Inputs</span>
io(io_i) = linio([mdl, <span class="org-string">'/Tracking Error'</span>], 1, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'En'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Metrology Outputs</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
G = linearize(mdl, io, options);
G.InputName = {<span class="org-string">'Fnl1'</span>, <span class="org-string">'Fnl2'</span>, <span class="org-string">'Fnl3'</span>, <span class="org-string">'Fnl4'</span>, <span class="org-string">'Fnl5'</span>, <span class="org-string">'Fnl6'</span>};
G.OutputName = {<span class="org-string">'Edx'</span>, <span class="org-string">'Edy'</span>, <span class="org-string">'Edz'</span>, <span class="org-string">'Erx'</span>, <span class="org-string">'Ery'</span>, <span class="org-string">'Erz'</span>};
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'mat/stages.mat'</span>, <span class="org-string">'nano_hexapod'</span>);
G_cart = minreal(G<span class="org-type">*</span>inv(nano_hexapod.J<span class="org-type">'</span>));
G_cart.InputName = {<span class="org-string">'Fnx'</span>, <span class="org-string">'Fny'</span>, <span class="org-string">'Fnz'</span>, <span class="org-string">'Mnx'</span>, <span class="org-string">'Mny'</span>, <span class="org-string">'Mnz'</span>};
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">G_legs = minreal(inv(nano_hexapod.J)<span class="org-type">*</span>G);
G_legs.OutputName = {<span class="org-string">'e1'</span>, <span class="org-string">'e2'</span>, <span class="org-string">'e3'</span>, <span class="org-string">'e4'</span>, <span class="org-string">'e5'</span>, <span class="org-string">'e6'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-org5c0b9bf" class="outline-4">
<h4 id="org5c0b9bf"><span class="section-number-4">1.3.3</span> Display TF</h4>
<div class="outline-text-4" id="text-1-3-3">
<div id="org85c36b6" class="figure">
<p><img src="figs/plant_G_cart.png" alt="plant_G_cart.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Transfer Function from forces applied by the nano-hexapod to position error (<a href="./figs/plant_G_cart.png">png</a>, <a href="./figs/plant_G_cart.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org6288fb1" class="outline-4">
<h4 id="org6288fb1"><span class="section-number-4">1.3.4</span> Obtained Plants for Active Damping</h4>
<div class="outline-text-4" id="text-1-3-4">
<div id="org29fb6b2" class="figure">
<p><img src="figs/nass_active_damping_iff_plant.png" alt="nass_active_damping_iff_plant.png" />
</p>
<p><span class="figure-number">Figure 8: </span><code>G_iff</code>: IFF Plant (<a href="./figs/nass_active_damping_iff_plant.png">png</a>, <a href="./figs/nass_active_damping_iff_plant.pdf">pdf</a>)</p>
</div>
<div id="org9412773" class="figure">
<p><img src="figs/nass_active_damping_ine_plant.png" alt="nass_active_damping_ine_plant.png" />
</p>
<p><span class="figure-number">Figure 9: </span><code>G_dvf</code>: Plant for Direct Velocity Feedback (<a href="./figs/nass_active_damping_dvf_plant.png">png</a>, <a href="./figs/nass_active_damping_dvf_plant.pdf">pdf</a>)</p>
</div>
<div id="orgea280f2" class="figure">
<p><img src="figs/nass_active_damping_inertial_plant.png" alt="nass_active_damping_inertial_plant.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Inertial Feedback Plant (<a href="./figs/nass_active_damping_inertial_plant.png">png</a>, <a href="./figs/nass_active_damping_inertial_plant.pdf">pdf</a>)</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:20</p>
<p class="date">Created: 2020-03-13 ven. 17:39</p>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:20 -->
<!-- 2020-03-13 ven. 17:39 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Identification</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
<script>
MathJax = {
@@ -330,11 +308,7 @@ Some of the springs and dampers values can be estimated from the joints/stages s
<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 class="outline-text-2" id="text-2">
<p>
<a href="../../meas/modal-analysis/index.html">here</a>
</p>
</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 class="outline-text-3" id="text-2-1">
@@ -636,7 +610,7 @@ ry_com = ry_com.Data(end, <span class="org-type">:</span>)<span class="org-type"
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(<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>);
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>
@@ -690,7 +664,6 @@ io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Micro Hexapod/Mo
G_ms = linearize(mdl, io, 0);
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1;
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>, ...
@@ -769,7 +742,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-02-25 mar. 18:20</p>
<p class="date">Created: 2020-03-13 ven. 17:39</p>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:18 -->
<!-- 2020-03-06 ven. 15:09 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Simscape Model of the Nano-Active-Stabilization-System</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
</head>
<body>
@@ -411,7 +389,7 @@ These functions are all defined <a href="./functions.html">here</a>.
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:18</p>
<p class="date">Created: 2020-03-06 ven. 15:09</p>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:20 -->
<!-- 2020-03-06 ven. 15:09 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Kinematics of the station</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
<script>
MathJax = {
@@ -594,7 +572,7 @@ And we verify that we indeed succeed to go to the wanted position.
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:20</p>
<p class="date">Created: 2020-03-06 ven. 15:09</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,368 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<?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-03-13 ven. 17:39 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Motion and Force Requirements for the Nano-Hexapod</title>
<meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: visible;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
pre.src:hover:before { display: inline;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { width: 90%; }
/*]]>*/-->
</style>
<script type="text/javascript">
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
<script>
MathJax = {
tex: { 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">Motion and Force Requirements for the Nano-Hexapod</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org70e526c">1. Soft Hexapod</a>
<ul>
<li><a href="#org3326d69">1.1. Example</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-org70e526c" class="outline-2">
<h2 id="org70e526c"><span class="section-number-2">1</span> Soft Hexapod</h2>
<div class="outline-text-2" id="text-1">
<p>
As the nano-hexapod is in series with the other stages, it must apply all the force required to move the sample.
</p>
<p>
If the nano-hexapod is soft (voice coil), its actuator must apply all the force such that the sample has the wanted motion.
</p>
<p>
In some sense, it does not use the fact that the other stage are participating to the displacement of the sample.
</p>
<p>
Let&rsquo;s take two examples:
</p>
<ul class="org-ul">
<li>Sinus Ty translation at 1Hz with an amplitude of 5mm</li>
<li>Long stroke hexapod has an offset of 10mm in X and the spindle is rotating
Thus the wanted motion is a circle with a radius of 10mm
If the sample if light (30Kg) =&gt; 60rpm
If the sample if heavy (100Kg) =&gt; 1rpm</li>
</ul>
<p>
From the motion, we compute the required acceleration by derive the displacement two times.
Then from the Newton&rsquo;s second law: \(m \vec{a} = \sum \vec{F}\) we can compute the required force.
</p>
</div>
<div id="outline-container-org3326d69" class="outline-3">
<h3 id="org3326d69"><span class="section-number-3">1.1</span> Example</h3>
<div class="outline-text-3" id="text-1-1">
<p>
The wanted motion is:
</p>
\begin{align*}
x &= d \cos(\omega t) \\
y &= d \sin(\omega t)
\end{align*}
<p>
The corresponding acceleration is thus:
</p>
\begin{align*}
\ddot{x} &= - d \omega^2 \cos(\omega t) \\
\ddot{y} &= - d \omega^2 \sin(\omega t)
\end{align*}
<p>
From the Newton&rsquo;s second law:
</p>
\begin{align*}
m \ddot{x} &= F_x \\
m \ddot{y} &= F_y
\end{align*}
<p>
Thus the applied forces should be:
</p>
\begin{align*}
F_x &= - m d \omega^2 \cos(\omega t) \\
F_y &= - m d \omega^2 \sin(\omega t)
\end{align*}
<p>
And the norm of the force is:
\[ |F| = \sqrt{F_x^2 + F_y^2} = m d \omega^2 \ [N] \]
</p>
<p>
For a Light sample:
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 30;
d = 10e<span class="org-type">-</span>3;
w = 2<span class="org-type">*</span><span class="org-constant">pi</span>;
F = m<span class="org-type">*</span>d<span class="org-type">*</span>w<span class="org-type">^</span>2;
<span class="org-constant">ans</span> = F
</pre>
</div>
<pre class="example">
11.844
</pre>
<p>
For the Heavy sample:
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 80;
d = 10e<span class="org-type">-</span>3;
w = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>60;
F = m<span class="org-type">*</span>d<span class="org-type">*</span>w<span class="org-type">^</span>2
<span class="org-constant">ans</span> = F
</pre>
</div>
<pre class="example">
0.008773
</pre>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-03-13 ven. 17:39</p>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:20 -->
<!-- 2020-03-06 ven. 15:09 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Computation of the Positioning Error with respect to the nano-hexapod</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
<script>
MathJax = {
@@ -272,17 +250,17 @@ for the JavaScript code in this tag.
<li><a href="#orgf8376ef">1. How do we measure the position of the sample with respect to the granite</a></li>
<li><a href="#orgb3d760a">2. Verify that the function to compute the reference pose is correct</a>
<ul>
<li><a href="#org5c3ae81">2.1. Prepare the Simulation</a></li>
<li><a href="#org4efa9f2">2.1. Prepare the Simulation</a></li>
<li><a href="#orgd2fa379">2.2. Verify that the pose of the sample is the same as the computed one</a></li>
<li><a href="#org00066db">2.3. Conclusion</a></li>
<li><a href="#orga90edfe">2.3. Conclusion</a></li>
</ul>
</li>
<li><a href="#orgf6fa84d">3. Verify that the function to convert the position error in the frame fixed to the nano-hexapod is working</a>
<ul>
<li><a href="#org4efa9f2">3.1. Prepare the Simulation</a></li>
<li><a href="#orgcbcbd60">3.1. Prepare the Simulation</a></li>
<li><a href="#org4e6a2dc">3.2. Compute the wanted pose of the sample in the NASS Base from the metrology and the reference</a></li>
<li><a href="#orga048dbb">3.3. Verify that be imposing the error motion on the nano-hexapod, we indeed have zero error at the end</a></li>
<li><a href="#orga90edfe">3.4. Conclusion</a></li>
<li><a href="#orgc1b5b33">3.4. Conclusion</a></li>
</ul>
</li>
</ul>
@@ -370,8 +348,8 @@ We can then determine extract other orientation conventions such that Euler angl
The goal here is to perfectly move the station and verify that there is no mismatch between the metrology measurement and the computation of the reference pose.
</p>
</div>
<div id="outline-container-org5c3ae81" class="outline-3">
<h3 id="org5c3ae81"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
<div id="outline-container-org4efa9f2" class="outline-3">
<h3 id="org4efa9f2"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
<div class="outline-text-3" id="text-2-1">
<p>
We set a small <code>StopTime</code>.
@@ -541,8 +519,8 @@ ans =
</div>
</div>
<div id="outline-container-org00066db" class="outline-3">
<h3 id="org00066db"><span class="section-number-3">2.3</span> Conclusion</h3>
<div id="outline-container-orga90edfe" class="outline-3">
<h3 id="orga90edfe"><span class="section-number-3">2.3</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-3">
<div class="important">
<p>
@@ -570,8 +548,8 @@ This will induce a global positioning error of the sample with respect to the de
We want to verify that we are able to measure this positioning error and convert it in the frame attached to the Nano-hexapod.
</p>
</div>
<div id="outline-container-org4efa9f2" class="outline-3">
<h3 id="org4efa9f2"><span class="section-number-3">3.1</span> Prepare the Simulation</h3>
<div id="outline-container-orgcbcbd60" class="outline-3">
<h3 id="orgcbcbd60"><span class="section-number-3">3.1</span> Prepare the Simulation</h3>
<div class="outline-text-3" id="text-3-1">
<p>
We set a small <code>StopTime</code>.
@@ -895,8 +873,8 @@ Verify that the pose error is small.
</div>
</div>
<div id="outline-container-orga90edfe" class="outline-3">
<h3 id="orga90edfe"><span class="section-number-3">3.4</span> Conclusion</h3>
<div id="outline-container-orgc1b5b33" class="outline-3">
<h3 id="orgc1b5b33"><span class="section-number-3">3.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-4">
<div class="important">
<p>
@@ -910,7 +888,7 @@ Indeed, we are able to convert the position error in the frame of the NASS and t
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:20</p>
<p class="date">Created: 2020-03-06 ven. 15:09</p>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:20 -->
<!-- 2020-03-06 ven. 15:09 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Simscape Model</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
</head>
<body>
@@ -775,7 +753,7 @@ Internal force, acting reciprocally between base and following origins is implem
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:20</p>
<p class="date">Created: 2020-03-06 ven. 15:09</p>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:21 -->
<!-- 2020-03-06 ven. 15:10 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Simulink Project for the NASS</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
</head>
<body>
@@ -322,7 +300,7 @@ The project also permits to automatically add defined folder to the path when th
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:21</p>
<p class="date">Created: 2020-03-06 ven. 15:10</p>
</div>
</body>
</html>

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-25 mar. 18:20 -->
<!-- 2020-03-13 ven. 17:39 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Simscape Uniaxial Model</title>
@@ -202,50 +202,28 @@
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
<script type="text/javascript" src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
<script>
MathJax = {
@@ -272,69 +250,69 @@ for the JavaScript code in this tag.
<li><a href="#org227ba84">1. Simscape Model</a></li>
<li><a href="#org6bfb35d">2. Undamped System</a>
<ul>
<li><a href="#org5265d72">2.1. Init</a></li>
<li><a href="#org3b15675">2.2. Identification</a></li>
<li><a href="#org3492011">2.3. Sensitivity to Disturbances</a></li>
<li><a href="#orgd860077">2.4. Noise Budget</a></li>
<li><a href="#org006e24f">2.1. Init</a></li>
<li><a href="#org4fbbce9">2.2. Identification</a></li>
<li><a href="#org49ca9ab">2.3. Sensitivity to Disturbances</a></li>
<li><a href="#org346ebf3">2.4. Noise Budget</a></li>
<li><a href="#orgdb3535a">2.5. Plant</a></li>
</ul>
</li>
<li><a href="#org66a1e03">3. Integral Force Feedback</a>
<li><a href="#org33c3829">3. Integral Force Feedback</a>
<ul>
<li><a href="#org5d899b2">3.1. Control Design</a></li>
<li><a href="#orge386fb1">3.2. Identification</a></li>
<li><a href="#orgbd405f9">3.3. Sensitivity to Disturbance</a></li>
<li><a href="#orgbe8aa64">3.4. Damped Plant</a></li>
<li><a href="#orgfa342b9">3.5. Conclusion</a></li>
<li><a href="#org326d925">3.1. Control Design</a></li>
<li><a href="#org86f3473">3.2. Identification</a></li>
<li><a href="#org68c471e">3.3. Sensitivity to Disturbance</a></li>
<li><a href="#org5edf015">3.4. Damped Plant</a></li>
<li><a href="#orgfc93a1c">3.5. Conclusion</a></li>
</ul>
</li>
<li><a href="#org07ff58f">4. Relative Motion Control</a>
<ul>
<li><a href="#org971bdb9">4.1. Control Design</a></li>
<li><a href="#orgfce3b27">4.2. Identification</a></li>
<li><a href="#org2123e6c">4.3. Sensitivity to Disturbance</a></li>
<li><a href="#org7e3e638">4.4. Damped Plant</a></li>
<li><a href="#org0ec985e">4.5. Conclusion</a></li>
<li><a href="#org5704583">4.1. Control Design</a></li>
<li><a href="#orga436aa7">4.2. Identification</a></li>
<li><a href="#org133268a">4.3. Sensitivity to Disturbance</a></li>
<li><a href="#org2f974d4">4.4. Damped Plant</a></li>
<li><a href="#orgfdbd543">4.5. Conclusion</a></li>
</ul>
</li>
<li><a href="#orgc9b3622">5. Direct Velocity Feedback</a>
<ul>
<li><a href="#orgd5df5f2">5.1. Control Design</a></li>
<li><a href="#orgca551cb">5.2. Identification</a></li>
<li><a href="#orga45e582">5.3. Sensitivity to Disturbance</a></li>
<li><a href="#orgdbf551f">5.4. Damped Plant</a></li>
<li><a href="#orge883751">5.5. Conclusion</a></li>
<li><a href="#org2050b01">5.1. Control Design</a></li>
<li><a href="#orgc946d88">5.2. Identification</a></li>
<li><a href="#orgde4b14e">5.3. Sensitivity to Disturbance</a></li>
<li><a href="#org640c7d9">5.4. Damped Plant</a></li>
<li><a href="#org94e9d5f">5.5. Conclusion</a></li>
</ul>
</li>
<li><a href="#org5ac7dda">6. With Cedrat Piezo-electric Actuators</a>
<ul>
<li><a href="#orgddd7da8">6.1. Identification</a></li>
<li><a href="#orgb6ef594">6.2. Control Design</a></li>
<li><a href="#org5314588">6.3. Identification</a></li>
<li><a href="#orgd226771">6.4. Sensitivity to Disturbance</a></li>
<li><a href="#org294b781">6.5. Damped Plant</a></li>
<li><a href="#orga768e31">6.6. Conclusion</a></li>
<li><a href="#org1bfaed7">6.1. Identification</a></li>
<li><a href="#orgf32651c">6.2. Control Design</a></li>
<li><a href="#orgc7383cd">6.3. Identification</a></li>
<li><a href="#org34de1fd">6.4. Sensitivity to Disturbance</a></li>
<li><a href="#org609c873">6.5. Damped Plant</a></li>
<li><a href="#org3c4f6ff">6.6. Conclusion</a></li>
</ul>
</li>
<li><a href="#org77a79e6">7. Comparison of Active Damping Techniques</a>
<ul>
<li><a href="#orgb0afe4f">7.1. Load the plants</a></li>
<li><a href="#org948b91d">7.2. Sensitivity to Disturbance</a></li>
<li><a href="#org234479d">7.3. Noise Budget</a></li>
<li><a href="#orgf591690">7.4. Damped Plant</a></li>
<li><a href="#orgf332379">7.5. Conclusion</a></li>
<li><a href="#orge08556d">7.2. Sensitivity to Disturbance</a></li>
<li><a href="#orgfff33b9">7.3. Noise Budget</a></li>
<li><a href="#orgc582849">7.4. Damped Plant</a></li>
<li><a href="#orgde3c3e7">7.5. Conclusion</a></li>
</ul>
</li>
<li><a href="#org15965e0">8. Voice Coil</a>
<ul>
<li><a href="#orgefc326e">8.1. Init</a></li>
<li><a href="#orgae49d6e">8.2. Identification</a></li>
<li><a href="#org72047d5">8.3. Sensitivity to Disturbances</a></li>
<li><a href="#orgbcac95d">8.4. Noise Budget</a></li>
<li><a href="#org95b95ac">8.5. Integral Force Feedback</a></li>
<li><a href="#orge0ae68a">8.1. Init</a></li>
<li><a href="#orgd0cdd7a">8.2. Identification</a></li>
<li><a href="#orgea2fb03">8.3. Sensitivity to Disturbances</a></li>
<li><a href="#org88de5a5">8.4. Noise Budget</a></li>
<li><a href="#org241513b">8.5. Integral Force Feedback</a></li>
<li><a href="#org2a655f7">8.6. Identification of the Damped Plant</a></li>
<li><a href="#orgc8d2daf">8.7. Noise Budget</a></li>
<li><a href="#orgb885664">8.8. Conclusion</a></li>
<li><a href="#orgb7cef4c">8.7. Noise Budget</a></li>
<li><a href="#orga9d9dce">8.8. Conclusion</a></li>
</ul>
</li>
</ul>
@@ -432,8 +410,8 @@ Schematics of the active damping techniques are displayed in figure <a href="#or
Let&rsquo;s start by study the undamped system.
</p>
</div>
<div id="outline-container-org5265d72" class="outline-3">
<h3 id="org5265d72"><span class="section-number-3">2.1</span> Init</h3>
<div id="outline-container-org006e24f" class="outline-3">
<h3 id="org006e24f"><span class="section-number-3">2.1</span> Init</h3>
<div class="outline-text-3" id="text-2-1">
<p>
We initialize all the stages with the default parameters.
@@ -445,8 +423,8 @@ All the controllers are set to 0 (Open Loop).
</p>
</div>
</div>
<div id="outline-container-org3b15675" class="outline-3">
<h3 id="org3b15675"><span class="section-number-3">2.2</span> Identification</h3>
<div id="outline-container-org4fbbce9" class="outline-3">
<h3 id="org4fbbce9"><span class="section-number-3">2.2</span> Identification</h3>
<div class="outline-text-3" id="text-2-2">
<p>
We identify the dynamics of the system.
@@ -503,14 +481,14 @@ G.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-comm
Finally, we save the identified system dynamics for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/uniaxial_plants.mat'</span>, <span class="org-string">'G'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org3492011" class="outline-3">
<h3 id="org3492011"><span class="section-number-3">2.3</span> Sensitivity to Disturbances</h3>
<div id="outline-container-org49ca9ab" class="outline-3">
<h3 id="org49ca9ab"><span class="section-number-3">2.3</span> Sensitivity to Disturbances</h3>
<div class="outline-text-3" id="text-2-3">
<p>
We show several plots representing the sensitivity to disturbances:
@@ -537,14 +515,14 @@ We show several plots representing the sensitivity to disturbances:
</div>
</div>
<div id="outline-container-orgd860077" class="outline-3">
<h3 id="orgd860077"><span class="section-number-3">2.4</span> Noise Budget</h3>
<div id="outline-container-org346ebf3" class="outline-3">
<h3 id="org346ebf3"><span class="section-number-3">2.4</span> Noise Budget</h3>
<div class="outline-text-3" id="text-2-4">
<p>
We first load the measured PSD of the disturbance.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./disturbances/mat/dist_psd.mat'</span>, <span class="org-string">'dist_f'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/disturbances_dist_psd.mat'</span>, <span class="org-string">'dist_f'</span>);
</pre>
</div>
@@ -597,8 +575,8 @@ It corresponds to the plant to control.
</div>
</div>
<div id="outline-container-org66a1e03" class="outline-2">
<h2 id="org66a1e03"><span class="section-number-2">3</span> Integral Force Feedback</h2>
<div id="outline-container-org33c3829" class="outline-2">
<h2 id="org33c3829"><span class="section-number-2">3</span> Integral Force Feedback</h2>
<div class="outline-text-2" id="text-3">
<p>
<a id="org37f1b7d"></a>
@@ -610,11 +588,11 @@ It corresponds to the plant to control.
<p><span class="figure-number">Figure 8: </span>Uniaxial IFF Control Schematic</p>
</div>
</div>
<div id="outline-container-org5d899b2" class="outline-3">
<h3 id="org5d899b2"><span class="section-number-3">3.1</span> Control Design</h3>
<div id="outline-container-org326d925" class="outline-3">
<h3 id="org326d925"><span class="section-number-3">3.1</span> Control Design</h3>
<div class="outline-text-3" id="text-3-1">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/uniaxial_plants.mat'</span>, <span class="org-string">'G'</span>);
</pre>
</div>
@@ -646,8 +624,8 @@ The controller for each pair of actuator/sensor is:
</div>
</div>
<div id="outline-container-orge386fb1" class="outline-3">
<h3 id="orge386fb1"><span class="section-number-3">3.2</span> Identification</h3>
<div id="outline-container-org86f3473" class="outline-3">
<h3 id="org86f3473"><span class="section-number-3">3.2</span> Identification</h3>
<div class="outline-text-3" id="text-3-2">
<p>
Let&rsquo;s initialize the system prior to identification.
@@ -671,13 +649,13 @@ All the controllers are set to 0.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
K_iff = <span class="org-type">-</span>K_iff;
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
K_rmc = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
K_dvf = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
@@ -724,14 +702,14 @@ G_iff.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-
</div>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'-append'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/uniaxial_plants.mat'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgbd405f9" class="outline-3">
<h3 id="orgbd405f9"><span class="section-number-3">3.3</span> Sensitivity to Disturbance</h3>
<div id="outline-container-org68c471e" class="outline-3">
<h3 id="org68c471e"><span class="section-number-3">3.3</span> Sensitivity to Disturbance</h3>
<div class="outline-text-3" id="text-3-3">
<div id="orge528565" class="figure">
@@ -749,8 +727,8 @@ G_iff.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-
</div>
</div>
<div id="outline-container-orgbe8aa64" class="outline-3">
<h3 id="orgbe8aa64"><span class="section-number-3">3.4</span> Damped Plant</h3>
<div id="outline-container-org5edf015" class="outline-3">
<h3 id="org5edf015"><span class="section-number-3">3.4</span> Damped Plant</h3>
<div class="outline-text-3" id="text-3-4">
<div id="org57280cb" class="figure">
@@ -761,8 +739,8 @@ G_iff.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-
</div>
</div>
<div id="outline-container-orgfa342b9" class="outline-3">
<h3 id="orgfa342b9"><span class="section-number-3">3.5</span> Conclusion</h3>
<div id="outline-container-orgfc93a1c" class="outline-3">
<h3 id="orgfc93a1c"><span class="section-number-3">3.5</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-5">
<div class="important">
<p>
@@ -791,11 +769,11 @@ In the Relative Motion Control (RMC), a derivative feedback is applied between t
<p><span class="figure-number">Figure 14: </span>Uniaxial RMC Control Schematic</p>
</div>
</div>
<div id="outline-container-org971bdb9" class="outline-3">
<h3 id="org971bdb9"><span class="section-number-3">4.1</span> Control Design</h3>
<div id="outline-container-org5704583" class="outline-3">
<h3 id="org5704583"><span class="section-number-3">4.1</span> Control Design</h3>
<div class="outline-text-3" id="text-4-1">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/uniaxial_plants.mat'</span>, <span class="org-string">'G'</span>);
</pre>
</div>
@@ -828,8 +806,8 @@ A Low pass Filter is added to make the controller transfer function proper.
</div>
</div>
<div id="outline-container-orgfce3b27" class="outline-3">
<h3 id="orgfce3b27"><span class="section-number-3">4.2</span> Identification</h3>
<div id="outline-container-orga436aa7" class="outline-3">
<h3 id="orga436aa7"><span class="section-number-3">4.2</span> Identification</h3>
<div class="outline-text-3" id="text-4-2">
<p>
Let&rsquo;s initialize the system prior to identification.
@@ -853,13 +831,13 @@ And initialize the controllers.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
K_iff = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
K_rmc = <span class="org-type">-</span>K_rmc;
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
K_dvf = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
@@ -906,15 +884,15 @@ G_rmc.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-
</div>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G_rmc'</span>, <span class="org-string">'-append'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/uniaxial_plants.mat'</span>, <span class="org-string">'G_rmc'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org2123e6c" class="outline-3">
<h3 id="org2123e6c"><span class="section-number-3">4.3</span> Sensitivity to Disturbance</h3>
<div id="outline-container-org133268a" class="outline-3">
<h3 id="org133268a"><span class="section-number-3">4.3</span> Sensitivity to Disturbance</h3>
<div class="outline-text-3" id="text-4-3">
<div id="org9e0dde4" class="figure">
@@ -932,8 +910,8 @@ G_rmc.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-
</div>
</div>
<div id="outline-container-org7e3e638" class="outline-3">
<h3 id="org7e3e638"><span class="section-number-3">4.4</span> Damped Plant</h3>
<div id="outline-container-org2f974d4" class="outline-3">
<h3 id="org2f974d4"><span class="section-number-3">4.4</span> Damped Plant</h3>
<div class="outline-text-3" id="text-4-4">
<div id="org18786e8" class="figure">
@@ -944,8 +922,8 @@ G_rmc.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-
</div>
</div>
<div id="outline-container-org0ec985e" class="outline-3">
<h3 id="org0ec985e"><span class="section-number-3">4.5</span> Conclusion</h3>
<div id="outline-container-orgfdbd543" class="outline-3">
<h3 id="orgfdbd543"><span class="section-number-3">4.5</span> Conclusion</h3>
<div class="outline-text-3" id="text-4-5">
<div class="important">
<p>
@@ -974,11 +952,11 @@ In the Relative Motion Control (RMC), a feedback is applied between the measured
<p><span class="figure-number">Figure 20: </span>Uniaxial DVF Control Schematic</p>
</div>
</div>
<div id="outline-container-orgd5df5f2" class="outline-3">
<h3 id="orgd5df5f2"><span class="section-number-3">5.1</span> Control Design</h3>
<div id="outline-container-org2050b01" class="outline-3">
<h3 id="org2050b01"><span class="section-number-3">5.1</span> Control Design</h3>
<div class="outline-text-3" id="text-5-1">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/uniaxial_plants.mat'</span>, <span class="org-string">'G'</span>);
</pre>
</div>
@@ -1003,8 +981,8 @@ In the Relative Motion Control (RMC), a feedback is applied between the measured
</div>
</div>
<div id="outline-container-orgca551cb" class="outline-3">
<h3 id="orgca551cb"><span class="section-number-3">5.2</span> Identification</h3>
<div id="outline-container-orgc946d88" class="outline-3">
<h3 id="orgc946d88"><span class="section-number-3">5.2</span> Identification</h3>
<div class="outline-text-3" id="text-5-2">
<p>
Let&rsquo;s initialize the system prior to identification.
@@ -1028,13 +1006,13 @@ And initialize the controllers.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
K_iff = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
K_rmc = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
K_dvf = <span class="org-type">-</span>K_dvf;
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
@@ -1081,14 +1059,14 @@ G_dvf.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-
</div>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G_dvf'</span>, <span class="org-string">'-append'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/uniaxial_plants.mat'</span>, <span class="org-string">'G_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orga45e582" class="outline-3">
<h3 id="orga45e582"><span class="section-number-3">5.3</span> Sensitivity to Disturbance</h3>
<div id="outline-container-orgde4b14e" class="outline-3">
<h3 id="orgde4b14e"><span class="section-number-3">5.3</span> Sensitivity to Disturbance</h3>
<div class="outline-text-3" id="text-5-3">
<div id="orgf9d4052" class="figure">
@@ -1106,8 +1084,8 @@ G_dvf.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-
</div>
</div>
<div id="outline-container-orgdbf551f" class="outline-3">
<h3 id="orgdbf551f"><span class="section-number-3">5.4</span> Damped Plant</h3>
<div id="outline-container-org640c7d9" class="outline-3">
<h3 id="org640c7d9"><span class="section-number-3">5.4</span> Damped Plant</h3>
<div class="outline-text-3" id="text-5-4">
<div id="orgbc9c953" class="figure">
@@ -1118,8 +1096,8 @@ G_dvf.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-
</div>
</div>
<div id="outline-container-orge883751" class="outline-3">
<h3 id="orge883751"><span class="section-number-3">5.5</span> Conclusion</h3>
<div id="outline-container-org94e9d5f" class="outline-3">
<h3 id="org94e9d5f"><span class="section-number-3">5.5</span> Conclusion</h3>
<div class="outline-text-3" id="text-5-5">
<div class="important">
<p>
@@ -1147,8 +1125,8 @@ The model used for the Cedrat actuator is shown in figure <a href="#org83591fa">
<p><span class="figure-number">Figure 26: </span>Schematic of the model used for the Cedrat Actuator</p>
</div>
</div>
<div id="outline-container-orgddd7da8" class="outline-3">
<h3 id="orgddd7da8"><span class="section-number-3">6.1</span> Identification</h3>
<div id="outline-container-org1bfaed7" class="outline-3">
<h3 id="org1bfaed7"><span class="section-number-3">6.1</span> Identification</h3>
<div class="outline-text-3" id="text-6-1">
<p>
Let&rsquo;s initialize the system prior to identification.
@@ -1173,13 +1151,13 @@ And initialize the controllers.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
K_iff = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
K_rmc = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
K_dvf = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
@@ -1236,8 +1214,8 @@ G.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-comm
</div>
</div>
<div id="outline-container-orgb6ef594" class="outline-3">
<h3 id="orgb6ef594"><span class="section-number-3">6.2</span> Control Design</h3>
<div id="outline-container-orgf32651c" class="outline-3">
<h3 id="orgf32651c"><span class="section-number-3">6.2</span> Control Design</h3>
<div class="outline-text-3" id="text-6-2">
<p>
Let&rsquo;s look at the transfer function from actuator forces in the nano-hexapod to the force sensor in the nano-hexapod legs for all 6 pairs of actuator/sensor.
@@ -1267,8 +1245,8 @@ The controller for each pair of actuator/sensor is:
</div>
</div>
<div id="outline-container-org5314588" class="outline-3">
<h3 id="org5314588"><span class="section-number-3">6.3</span> Identification</h3>
<div id="outline-container-orgc7383cd" class="outline-3">
<h3 id="orgc7383cd"><span class="section-number-3">6.3</span> Identification</h3>
<div class="outline-text-3" id="text-6-3">
<p>
Let&rsquo;s initialize the system prior to identification.
@@ -1293,13 +1271,13 @@ All the controllers are set to 0.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
K_iff = <span class="org-type">-</span>K_cedrat;
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
K_rmc = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
K_dvf = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
@@ -1346,14 +1324,14 @@ G_cedrat.OutputName = {<span class="org-string">'D'</span>, ...<span class="o
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-comment">% save('./uniaxial/mat/plants.mat', 'G_cedrat', '-append');</span>
<pre class="src src-matlab"><span class="org-comment">% save('./mat/uniaxial_plants.mat', 'G_cedrat', '-append');</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgd226771" class="outline-3">
<h3 id="orgd226771"><span class="section-number-3">6.4</span> Sensitivity to Disturbance</h3>
<div id="outline-container-org34de1fd" class="outline-3">
<h3 id="org34de1fd"><span class="section-number-3">6.4</span> Sensitivity to Disturbance</h3>
<div class="outline-text-3" id="text-6-4">
<div id="org90f5c2b" class="figure">
@@ -1371,8 +1349,8 @@ G_cedrat.OutputName = {<span class="org-string">'D'</span>, ...<span class="o
</div>
</div>
<div id="outline-container-org294b781" class="outline-3">
<h3 id="org294b781"><span class="section-number-3">6.5</span> Damped Plant</h3>
<div id="outline-container-org609c873" class="outline-3">
<h3 id="org609c873"><span class="section-number-3">6.5</span> Damped Plant</h3>
<div class="outline-text-3" id="text-6-5">
<div id="org0c4e61a" class="figure">
@@ -1383,8 +1361,8 @@ G_cedrat.OutputName = {<span class="org-string">'D'</span>, ...<span class="o
</div>
</div>
<div id="outline-container-orga768e31" class="outline-3">
<h3 id="orga768e31"><span class="section-number-3">6.6</span> Conclusion</h3>
<div id="outline-container-org3c4f6ff" class="outline-3">
<h3 id="org3c4f6ff"><span class="section-number-3">6.6</span> Conclusion</h3>
<div class="outline-text-3" id="text-6-6">
<div class="important">
<p>
@@ -1407,14 +1385,14 @@ This gives similar results than with a classical force sensor.
<h3 id="orgb0afe4f"><span class="section-number-3">7.1</span> Load the plants</h3>
<div class="outline-text-3" id="text-7-1">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_rmc'</span>, <span class="org-string">'G_dvf'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/uniaxial_plants.mat'</span>, <span class="org-string">'G'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_rmc'</span>, <span class="org-string">'G_dvf'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org948b91d" class="outline-3">
<h3 id="org948b91d"><span class="section-number-3">7.2</span> Sensitivity to Disturbance</h3>
<div id="outline-container-orge08556d" class="outline-3">
<h3 id="orge08556d"><span class="section-number-3">7.2</span> Sensitivity to Disturbance</h3>
<div class="outline-text-3" id="text-7-2">
<div id="org8c59440" class="figure">
@@ -1447,14 +1425,14 @@ This gives similar results than with a classical force sensor.
</div>
</div>
<div id="outline-container-org234479d" class="outline-3">
<h3 id="org234479d"><span class="section-number-3">7.3</span> Noise Budget</h3>
<div id="outline-container-orgfff33b9" class="outline-3">
<h3 id="orgfff33b9"><span class="section-number-3">7.3</span> Noise Budget</h3>
<div class="outline-text-3" id="text-7-3">
<p>
We first load the measured PSD of the disturbance.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./disturbances/mat/dist_psd.mat'</span>, <span class="org-string">'dist_f'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/disturbances_dist_psd.mat'</span>, <span class="org-string">'dist_f'</span>);
</pre>
</div>
@@ -1515,8 +1493,8 @@ It is important to note that the effect of direct forces applied to the sample a
</div>
</div>
<div id="outline-container-orgf591690" class="outline-3">
<h3 id="orgf591690"><span class="section-number-3">7.4</span> Damped Plant</h3>
<div id="outline-container-orgc582849" class="outline-3">
<h3 id="orgc582849"><span class="section-number-3">7.4</span> Damped Plant</h3>
<div class="outline-text-3" id="text-7-4">
<div id="orga0c1298" class="figure">
@@ -1527,8 +1505,8 @@ It is important to note that the effect of direct forces applied to the sample a
</div>
</div>
<div id="outline-container-orgf332379" class="outline-3">
<h3 id="orgf332379"><span class="section-number-3">7.5</span> Conclusion</h3>
<div id="outline-container-orgde3c3e7" class="outline-3">
<h3 id="orgde3c3e7"><span class="section-number-3">7.5</span> Conclusion</h3>
<div class="outline-text-3" id="text-7-5">
<table id="org46e95c2" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 2:</span> Comparison of proposed active damping techniques</caption>
@@ -1604,8 +1582,8 @@ It is important to note that the effect of direct forces applied to the sample a
<a id="orgf9e9d51"></a>
</p>
</div>
<div id="outline-container-orgefc326e" class="outline-3">
<h3 id="orgefc326e"><span class="section-number-3">8.1</span> Init</h3>
<div id="outline-container-orge0ae68a" class="outline-3">
<h3 id="orge0ae68a"><span class="section-number-3">8.1</span> Init</h3>
<div class="outline-text-3" id="text-8-1">
<p>
We initialize all the stages with the default parameters.
@@ -1617,8 +1595,8 @@ All the controllers are set to 0 (Open Loop).
</p>
</div>
</div>
<div id="outline-container-orgae49d6e" class="outline-3">
<h3 id="orgae49d6e"><span class="section-number-3">8.2</span> Identification</h3>
<div id="outline-container-orgd0cdd7a" class="outline-3">
<h3 id="orgd0cdd7a"><span class="section-number-3">8.2</span> Identification</h3>
<div class="outline-text-3" id="text-8-2">
<p>
We identify the dynamics of the system.
@@ -1675,20 +1653,20 @@ G_vc.OutputName = {<span class="org-string">'D'</span>, ...<span class="org-c
Finally, we save the identified system dynamics for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G_vc'</span>, <span class="org-string">'-append'</span>);
<pre class="src src-matlab">save(<span class="org-string">'./mat/uniaxial_plants.mat'</span>, <span class="org-string">'G_vc'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org72047d5" class="outline-3">
<h3 id="org72047d5"><span class="section-number-3">8.3</span> Sensitivity to Disturbances</h3>
<div id="outline-container-orgea2fb03" class="outline-3">
<h3 id="orgea2fb03"><span class="section-number-3">8.3</span> Sensitivity to Disturbances</h3>
<div class="outline-text-3" id="text-8-3">
<p>
We load the dynamics when using a piezo-electric nano hexapod to compare the results.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./uniaxial/mat/plants.mat'</span>, <span class="org-string">'G'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/uniaxial_plants.mat'</span>, <span class="org-string">'G'</span>);
</pre>
</div>
@@ -1716,14 +1694,14 @@ We show several plots representing the sensitivity to disturbances:
</div>
</div>
<div id="outline-container-orgbcac95d" class="outline-3">
<h3 id="orgbcac95d"><span class="section-number-3">8.4</span> Noise Budget</h3>
<div id="outline-container-org88de5a5" class="outline-3">
<h3 id="org88de5a5"><span class="section-number-3">8.4</span> Noise Budget</h3>
<div class="outline-text-3" id="text-8-4">
<p>
We first load the measured PSD of the disturbance.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./disturbances/mat/dist_psd.mat'</span>, <span class="org-string">'dist_f'</span>);
<pre class="src src-matlab">load(<span class="org-string">'./mat/disturbances_dist_psd.mat'</span>, <span class="org-string">'dist_f'</span>);
</pre>
</div>
@@ -1766,8 +1744,8 @@ Thus, it may be desirable to use voice coil actuators.
</div>
</div>
</div>
<div id="outline-container-org95b95ac" class="outline-3">
<h3 id="org95b95ac"><span class="section-number-3">8.5</span> Integral Force Feedback</h3>
<div id="outline-container-org241513b" class="outline-3">
<h3 id="org241513b"><span class="section-number-3">8.5</span> Integral Force Feedback</h3>
<div class="outline-text-3" id="text-8-5">
<div class="org-src-container">
<pre class="src src-matlab">K_iff = <span class="org-type">-</span>20<span class="org-type">/</span>s;
@@ -1808,13 +1786,13 @@ All the controllers are set to 0.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K'</span>, <span class="org-string">'-append'</span>);
K_iff = <span class="org-type">-</span>K_iff;
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_iff'</span>, <span class="org-string">'-append'</span>);
K_rmc = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_rmc'</span>, <span class="org-string">'-append'</span>);
K_dvf = tf(0);
save(<span class="org-string">'./mat/controllers.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
save(<span class="org-string">'./mat/controllers_uniaxial.mat'</span>, <span class="org-string">'K_dvf'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
@@ -1862,8 +1840,8 @@ G_vc_iff.OutputName = {<span class="org-string">'D'</span>, ...<span class="o
</div>
</div>
<div id="outline-container-orgc8d2daf" class="outline-3">
<h3 id="orgc8d2daf"><span class="section-number-3">8.7</span> Noise Budget</h3>
<div id="outline-container-orgb7cef4c" class="outline-3">
<h3 id="orgb7cef4c"><span class="section-number-3">8.7</span> Noise Budget</h3>
<div class="outline-text-3" id="text-8-7">
<p>
We compute the obtain PSD of the displacement \(D\) when using IFF.
@@ -1877,8 +1855,8 @@ We compute the obtain PSD of the displacement \(D\) when using IFF.
</div>
</div>
<div id="outline-container-orgb885664" class="outline-3">
<h3 id="orgb885664"><span class="section-number-3">8.8</span> Conclusion</h3>
<div id="outline-container-orga9d9dce" class="outline-3">
<h3 id="orga9d9dce"><span class="section-number-3">8.8</span> Conclusion</h3>
<div class="outline-text-3" id="text-8-8">
<div class="important">
<p>
@@ -1896,7 +1874,7 @@ Similarly, it would require much lower bandwidth to attain the same level of dis
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-25 mar. 18:20</p>
<p class="date">Created: 2020-03-13 ven. 17:39</p>
</div>
</body>
</html>