Work on Control (HAC-LAC) + Models
@@ -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’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’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’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’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’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’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>
|
||||
|
@@ -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’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’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’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’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’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’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>
|
||||
|
@@ -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>
|
||||
|
1251
docs/control_requirements.html
Normal 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>
|
||||
|
@@ -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>
|
||||
|
BIN
docs/figs/comp_iff_dvf_simplified.pdf
Normal file
BIN
docs/figs/comp_iff_dvf_simplified.png
Normal file
After Width: | Height: | Size: 215 KiB |
BIN
docs/figs/hac_lac_control_schematic.pdf
Normal file
BIN
docs/figs/hac_lac_control_schematic.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
docs/figs/nano_station_control_2dof_x.pdf
Normal file
BIN
docs/figs/nano_station_control_2dof_x.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
docs/figs/nano_station_control_Fm.pdf
Normal file
BIN
docs/figs/nano_station_control_Fm.png
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
docs/figs/nano_station_control_d.pdf
Normal file
BIN
docs/figs/nano_station_control_d.png
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
docs/figs/nano_station_control_x.pdf
Normal file
BIN
docs/figs/nano_station_control_x.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
docs/figs/nano_station_ground_motion.pdf
Normal file
BIN
docs/figs/nano_station_ground_motion.png
Normal file
After Width: | Height: | Size: 15 KiB |
BIN
docs/figs/nano_station_inputs_outputs.pdf
Normal file
BIN
docs/figs/nano_station_inputs_outputs.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
docs/figs/nano_station_inputs_outputs_ground_motion.pdf
Normal file
BIN
docs/figs/nano_station_inputs_outputs_ground_motion.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
docs/figs/nass_simple_model.pdf
Normal file
BIN
docs/figs/nass_simple_model.png
Normal file
After Width: | Height: | Size: 6.8 KiB |
BIN
docs/figs/simple_comp_vc_pz.pdf
Normal file
BIN
docs/figs/simple_comp_vc_pz.png
Normal file
After Width: | Height: | Size: 190 KiB |
BIN
docs/figs/simple_hac_lac_results.pdf
Normal file
BIN
docs/figs/simple_hac_lac_results.png
Normal file
After Width: | Height: | Size: 197 KiB |
BIN
docs/figs/simple_hac_lac_results_soft.pdf
Normal file
BIN
docs/figs/simple_hac_lac_results_soft.png
Normal file
After Width: | Height: | Size: 186 KiB |
BIN
docs/figs/simple_loop_gain_pz.pdf
Normal file
BIN
docs/figs/simple_loop_gain_pz.png
Normal file
After Width: | Height: | Size: 99 KiB |
@@ -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">></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">></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"><</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 => 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">></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"><</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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
368
docs/motion_force_requirements.html
Normal 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’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) => 60rpm
|
||||
If the sample if heavy (100Kg) => 1rpm</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
From the motion, we compute the required acceleration by derive the displacement two times.
|
||||
Then from the Newton’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’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>
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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’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’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’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’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’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’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’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>
|
||||
|