Use online CSS and JS
This commit is contained in:
parent
bd054638b2
commit
36181282b6
File diff suppressed because it is too large
Load Diff
@ -1,45 +1,39 @@
|
||||
<?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-05-07 jeu. 14:04 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Alternative Micro-Station Architecture</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Alternative Micro-Station Architecture</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgfc342c6">1. Current Micro-Station Architecture</a></li>
|
||||
<li><a href="#orgc09ec50">2. Alternative Micro-Station Architecture</a></li>
|
||||
<li><a href="#org247d72d">3. Alternative Metrology Architecture</a></li>
|
||||
<li><a href="#orge88a434">4. First rough specification of the stages - Maneuverability</a></li>
|
||||
<li><a href="#org44e1330">5. Advantages</a></li>
|
||||
<li><a href="#org62007a3">6. Disadvantages</a></li>
|
||||
<li><a href="#org0cd332b">1. Current Micro-Station Architecture</a></li>
|
||||
<li><a href="#orgd7cf2e3">2. Alternative Micro-Station Architecture</a></li>
|
||||
<li><a href="#org824aa14">3. Alternative Metrology Architecture</a></li>
|
||||
<li><a href="#org107818e">4. First rough specification of the stages - Maneuverability</a></li>
|
||||
<li><a href="#org5a1297a">5. Advantages</a></li>
|
||||
<li><a href="#org880bc68">6. Disadvantages</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfc342c6" class="outline-2">
|
||||
<h2 id="orgfc342c6"><span class="section-number-2">1</span> Current Micro-Station Architecture</h2>
|
||||
<div id="outline-container-org0cd332b" class="outline-2">
|
||||
<h2 id="org0cd332b"><span class="section-number-2">1</span> Current Micro-Station Architecture</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<b>Motion Requirements</b>:
|
||||
@ -62,11 +56,11 @@ For each of these motion requirements, a position stage is associated:
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
The architecture is shown in Figure <a href="#org41ed0af">1</a>.
|
||||
The architecture is shown in Figure <a href="#org8583068">1</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org41ed0af" class="figure">
|
||||
<div id="org8583068" class="figure">
|
||||
<p><img src="figs/nass_schematic.png" alt="nass_schematic.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Architecture of the Micro-Station</p>
|
||||
@ -92,8 +86,8 @@ Requirements on Tx an Rx motions are not specified.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc09ec50" class="outline-2">
|
||||
<h2 id="orgc09ec50"><span class="section-number-2">2</span> Alternative Micro-Station Architecture</h2>
|
||||
<div id="outline-container-orgd7cf2e3" class="outline-2">
|
||||
<h2 id="orgd7cf2e3"><span class="section-number-2">2</span> Alternative Micro-Station Architecture</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
If we remove the requirement of having to control each motion with an independent position stage, we can think of other mechanical architectures.
|
||||
@ -118,7 +112,7 @@ A short stroke hexapod with flexible hinges can be used to compensate the positi
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The mechanical architecture can then be composed of (see Figures <a href="#orgac922d2">2</a> and <a href="#org4c0d31a">3</a>):
|
||||
The mechanical architecture can then be composed of (see Figures <a href="#org8000986">2</a> and <a href="#org9b0e1ac">3</a>):
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>One long stroke hexapod for position</li>
|
||||
@ -127,14 +121,14 @@ The mechanical architecture can then be composed of (see Figures <a href="#orgac
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="orgac922d2" class="figure">
|
||||
<div id="org8000986" class="figure">
|
||||
<p><img src="figs/nass_concept.png" alt="nass_concept.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Alternative Micro-Station Architecture</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org4c0d31a" class="figure">
|
||||
<div id="org9b0e1ac" class="figure">
|
||||
<p><img src="figs/alternative_nass_concept.jpg" alt="alternative_nass_concept.jpg" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Alternative Micro-Station Architecture</p>
|
||||
@ -142,8 +136,8 @@ The mechanical architecture can then be composed of (see Figures <a href="#orgac
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org247d72d" class="outline-2">
|
||||
<h2 id="org247d72d"><span class="section-number-2">3</span> Alternative Metrology Architecture</h2>
|
||||
<div id="outline-container-org824aa14" class="outline-2">
|
||||
<h2 id="org824aa14"><span class="section-number-2">3</span> Alternative Metrology Architecture</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
As the motion of the sample does not change, the metrology could be the same as the one planned for the current micro-station architecture.
|
||||
@ -172,8 +166,8 @@ Kinematic mount of the metrology frame supporting both the spherical mirrors and
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge88a434" class="outline-2">
|
||||
<h2 id="orge88a434"><span class="section-number-2">4</span> First rough specification of the stages - Maneuverability</h2>
|
||||
<div id="outline-container-org107818e" class="outline-2">
|
||||
<h2 id="org107818e"><span class="section-number-2">4</span> First rough specification of the stages - Maneuverability</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
The required maneuverability of the <b>long stroke hexapod</b> corresponds to the wanted 6d pose of the sample (except the Rz rotation done by the Spindle):
|
||||
@ -201,8 +195,8 @@ Moreover the dynamical errors of each stage are very difficult to estimate, thus
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org44e1330" class="outline-2">
|
||||
<h2 id="org44e1330"><span class="section-number-2">5</span> Advantages</h2>
|
||||
<div id="outline-container-org5a1297a" class="outline-2">
|
||||
<h2 id="org5a1297a"><span class="section-number-2">5</span> Advantages</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
<b>Mechanics</b>:
|
||||
@ -252,8 +246,8 @@ Also Tx scans and Rx scans can be performed.</li>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org62007a3" class="outline-2">
|
||||
<h2 id="org62007a3"><span class="section-number-2">6</span> Disadvantages</h2>
|
||||
<div id="outline-container-org880bc68" class="outline-2">
|
||||
<h2 id="org880bc68"><span class="section-number-2">6</span> Disadvantages</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<ul class="org-ul">
|
||||
<li>Possible singularities in the required maneuverability for the Long stroke Hexapod?
|
||||
@ -273,7 +267,7 @@ The require displacement of each leg of the hexapod can be computed with the inv
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-07 jeu. 14:04</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,44 +1,48 @@
|
||||
<?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-05-07 jeu. 14:05 -->
|
||||
<!-- 2021-02-20 sam. 23:09 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Centrifugal Forces</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Centrifugal Forces</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org49834ed">1. Parameters</a></li>
|
||||
<li><a href="#org4b7747e">2. Centrifugal forces for light and heavy sample</a></li>
|
||||
<li><a href="#org92c9f54">3. Centrifugal forces as a function of the rotation speed</a></li>
|
||||
<li><a href="#orgb7f1acf">4. Maximum rotation speed as a function of the mass</a></li>
|
||||
<li><a href="#org5199302">1. Parameters</a></li>
|
||||
<li><a href="#orga2ea10d">2. Centrifugal forces for light and heavy sample</a></li>
|
||||
<li><a href="#orgf375b50">3. Centrifugal forces as a function of the rotation speed</a></li>
|
||||
<li><a href="#orge7fb13d">4. Maximum rotation speed as a function of the mass</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -52,7 +56,7 @@ This is the case then the sample is moved by the micro-hexapod.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The centrifugal forces are defined as represented Figure <a href="#orgd84fe6e">1</a> where:
|
||||
The centrifugal forces are defined as represented Figure <a href="#org91ed599">1</a> where:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>\(M\) is the total mass of the rotating elements in \([kg]\)</li>
|
||||
@ -61,14 +65,14 @@ The centrifugal forces are defined as represented Figure <a href="#orgd84fe6e">1
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="orgd84fe6e" class="figure">
|
||||
<div id="org91ed599" class="figure">
|
||||
<p><img src="./figs/centrifugal.png" alt="centrifugal.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Centrifugal forces</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org49834ed" class="outline-2">
|
||||
<h2 id="org49834ed"><span class="section-number-2">1</span> Parameters</h2>
|
||||
<div id="outline-container-org5199302" class="outline-2">
|
||||
<h2 id="org5199302"><span class="section-number-2">1</span> Parameters</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
We define some parameters for the computation.
|
||||
@ -79,8 +83,8 @@ The mass of the sample can vary from \(1\,kg\) to \(50\,kg\) to which is added t
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">M_light = 16; % mass of excentred parts mooving [kg]
|
||||
M_heavy = 65; % [kg]
|
||||
<pre class="src src-matlab"> M_light = 16; <span class="org-comment">% mass of excentred parts mooving [kg]</span>
|
||||
M_heavy = 65; <span class="org-comment">% [kg]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -88,8 +92,8 @@ M_heavy = 65; % [kg]
|
||||
For the light mass, the rotation speed is 60rpm whereas for the heavy mass, it is equal to 1rpm.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">w_light = 2*pi; % rotational speed [rad/s]
|
||||
w_heavy = 2*pi/60; % rotational speed [rad/s]
|
||||
<pre class="src src-matlab"> w_light = 2<span class="org-type">*</span><span class="org-constant">pi</span>; <span class="org-comment">% rotational speed [rad/s]</span>
|
||||
w_heavy = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>60; <span class="org-comment">% rotational speed [rad/s]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -97,14 +101,14 @@ w_heavy = 2*pi/60; % rotational speed [rad/s]
|
||||
Finally, we consider a mass eccentricity of \(10\,mm\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">R = 0.01; % Excentricity [m]
|
||||
<pre class="src src-matlab"> R = 0.01; <span class="org-comment">% Excentricity [m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4b7747e" class="outline-2">
|
||||
<h2 id="org4b7747e"><span class="section-number-2">2</span> Centrifugal forces for light and heavy sample</h2>
|
||||
<div id="outline-container-orga2ea10d" class="outline-2">
|
||||
<h2 id="orga2ea10d"><span class="section-number-2">2</span> Centrifugal forces for light and heavy sample</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
From the formula \(F_c = m \omega^2 r\), we obtain the values shown below.
|
||||
@ -139,15 +143,15 @@ From the formula \(F_c = m \omega^2 r\), we obtain the values shown below.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org92c9f54" class="outline-2">
|
||||
<h2 id="org92c9f54"><span class="section-number-2">3</span> Centrifugal forces as a function of the rotation speed</h2>
|
||||
<div id="outline-container-orgf375b50" class="outline-2">
|
||||
<h2 id="orgf375b50"><span class="section-number-2">3</span> Centrifugal forces as a function of the rotation speed</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
The centrifugal forces as a function of the rotation speed for light and heavy sample is shown on Figure <a href="#orgfaf795f">2</a>.
|
||||
The centrifugal forces as a function of the rotation speed for light and heavy sample is shown on Figure <a href="#org87b7644">2</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgfaf795f" class="figure">
|
||||
<div id="org87b7644" class="figure">
|
||||
<p><img src="figs/centrifugal_forces_rpm.png" alt="centrifugal_forces_rpm.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Centrifugal forces function of the rotation speed</p>
|
||||
@ -155,29 +159,29 @@ The centrifugal forces as a function of the rotation speed for light and heavy s
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb7f1acf" class="outline-2">
|
||||
<h2 id="orgb7f1acf"><span class="section-number-2">4</span> Maximum rotation speed as a function of the mass</h2>
|
||||
<div id="outline-container-orge7fb13d" class="outline-2">
|
||||
<h2 id="orge7fb13d"><span class="section-number-2">4</span> Maximum rotation speed as a function of the mass</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
We plot the maximum rotation speed as a function of the mass for different maximum force that we can use to counteract the centrifugal forces (Figure <a href="#org6ee8f38">3</a>).
|
||||
We plot the maximum rotation speed as a function of the mass for different maximum force that we can use to counteract the centrifugal forces (Figure <a href="#org8fe6a07">3</a>).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
From a specified maximum allowed centrifugal force (here set to \(10\,[N]\)), the maximum rotation speed as a function of the sample’s mass is shown in Figure <a href="#org6ee8f38">3</a>.
|
||||
From a specified maximum allowed centrifugal force (here set to \(10\,[N]\)), the maximum rotation speed as a function of the sample’s mass is shown in Figure <a href="#org8fe6a07">3</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">F_max = 10; % Maximum accepted centrifugal forces [N]
|
||||
<pre class="src src-matlab"> F_max = 10; <span class="org-comment">% Maximum accepted centrifugal forces [N]</span>
|
||||
|
||||
R = 0.01;
|
||||
R = 0.01;
|
||||
|
||||
M_sample = 0:1:100;
|
||||
M_reflector = 15;
|
||||
M_sample = 0<span class="org-type">:</span>1<span class="org-type">:</span>100;
|
||||
M_reflector = 15;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org6ee8f38" class="figure">
|
||||
<div id="org8fe6a07" class="figure">
|
||||
<p><img src="figs/max_force_rpm.png" alt="max_force_rpm.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Maximum rotation speed as a function of the sample mass for an allowed centrifugal force of \(100\,[N]\)</p>
|
||||
@ -187,7 +191,7 @@ M_reflector = 15;
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-07 jeu. 14:05</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:09</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,37 +1,32 @@
|
||||
<?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-04-17 ven. 09:34 -->
|
||||
<!-- 2021-02-20 sam. 23:07 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Compensating the gravity forces to start at steady state</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Compensating the gravity forces to start at steady state</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org356e04b">1. Initialization of the Experimental Conditions</a></li>
|
||||
<li><a href="#org263e5db">2. Without compensation</a></li>
|
||||
<li><a href="#orgfd6d9e9">3. Simulation to compute the required force in each joint</a></li>
|
||||
<li><a href="#org44bde7a">4. New simulation with compensation of gravity forces</a></li>
|
||||
<li><a href="#orgb714922">5. Conclusion</a></li>
|
||||
<li><a href="#orgb5e305a">1. Initialization of the Experimental Conditions</a></li>
|
||||
<li><a href="#org96a269f">2. Without compensation</a></li>
|
||||
<li><a href="#orged240b5">3. Simulation to compute the required force in each joint</a></li>
|
||||
<li><a href="#org25738bf">4. New simulation with compensation of gravity forces</a></li>
|
||||
<li><a href="#orgb003af1">5. Conclusion</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -41,19 +36,19 @@ In this file is shown a technique used to compensate the gravity forces at t=0.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The problem is that in presence of gravity, the system does not start at steady state and experience a transient phase (section <a href="#org4bc70b2">2</a>).
|
||||
The problem is that in presence of gravity, the system does not start at steady state and experience a transient phase (section <a href="#orgf3b9673">2</a>).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In order to start the simulation at steady state in presence of gravity:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>section <a href="#org2de8ac1">3</a>: first the stages are initialize in such a way that they are rigid, and the forces/torques applied at the location of their joints is measured</li>
|
||||
<li>section <a href="#org5364ea3">4</a>: Then, the equilibrium position of each joint is modified in such a way that at t=0, the forces in each joints exactly compensate the forces due to gravity forces</li>
|
||||
<li>section <a href="#orgaf044de">3</a>: first the stages are initialize in such a way that they are rigid, and the forces/torques applied at the location of their joints is measured</li>
|
||||
<li>section <a href="#orga475c79">4</a>: Then, the equilibrium position of each joint is modified in such a way that at t=0, the forces in each joints exactly compensate the forces due to gravity forces</li>
|
||||
</ul>
|
||||
|
||||
<div id="outline-container-org356e04b" class="outline-2">
|
||||
<h2 id="org356e04b"><span class="section-number-2">1</span> Initialization of the Experimental Conditions</h2>
|
||||
<div id="outline-container-orgb5e305a" class="outline-2">
|
||||
<h2 id="orgb5e305a"><span class="section-number-2">1</span> Initialization of the Experimental Conditions</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
We don’t inject any perturbations and no reference tracking.
|
||||
@ -76,11 +71,11 @@ initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span clas
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org263e5db" class="outline-2">
|
||||
<h2 id="org263e5db"><span class="section-number-2">2</span> Without compensation</h2>
|
||||
<div id="outline-container-org96a269f" class="outline-2">
|
||||
<h2 id="org96a269f"><span class="section-number-2">2</span> Without compensation</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="org4bc70b2"></a>
|
||||
<a id="orgf3b9673"></a>
|
||||
Let’s simulate the system without any compensation of gravity forces.
|
||||
</p>
|
||||
|
||||
@ -111,10 +106,10 @@ sim_no_compensation = simout;
|
||||
</div>
|
||||
|
||||
<p>
|
||||
And we can observe on Figure <a href="#org0568928">1</a> that there are some motion in the system.
|
||||
And we can observe on Figure <a href="#org3568468">1</a> that there are some motion in the system.
|
||||
</p>
|
||||
|
||||
<div id="org0568928" class="figure">
|
||||
<div id="org3568468" class="figure">
|
||||
<p><img src="figs/transient_phase_gravity_no_compensation.png" alt="transient_phase_gravity_no_compensation.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Motion of the sample at the start of the simulation in presence of gravity (<a href="./figs/transient_phase_gravity_no_compensation.png">png</a>, <a href="./figs/transient_phase_gravity_no_compensation.pdf">pdf</a>)</p>
|
||||
@ -122,11 +117,11 @@ And we can observe on Figure <a href="#org0568928">1</a> that there are some mot
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfd6d9e9" class="outline-2">
|
||||
<h2 id="orgfd6d9e9"><span class="section-number-2">3</span> Simulation to compute the required force in each joint</h2>
|
||||
<div id="outline-container-orged240b5" class="outline-2">
|
||||
<h2 id="orged240b5"><span class="section-number-2">3</span> Simulation to compute the required force in each joint</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="org2de8ac1"></a>
|
||||
<a id="orgaf044de"></a>
|
||||
We here wish to simulate the system in order to compute the required force in each joint to compensate the gravity forces.
|
||||
</p>
|
||||
|
||||
@ -318,11 +313,11 @@ We save these forces in <code>Foffset.mat</code>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org44bde7a" class="outline-2">
|
||||
<h2 id="org44bde7a"><span class="section-number-2">4</span> New simulation with compensation of gravity forces</h2>
|
||||
<div id="outline-container-org25738bf" class="outline-2">
|
||||
<h2 id="org25738bf"><span class="section-number-2">4</span> New simulation with compensation of gravity forces</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
<a id="org5364ea3"></a>
|
||||
<a id="orga475c79"></a>
|
||||
We now initialize the stages with the option <code>Foffset</code>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
@ -358,17 +353,17 @@ sim_compensation = simout;
|
||||
Verification that nothing is moving
|
||||
</p>
|
||||
|
||||
<div id="orgc677acf" class="figure">
|
||||
<div id="org2b3d436" class="figure">
|
||||
<p><img src="figs/transient_phase_gravity_compensation.png" alt="transient_phase_gravity_compensation.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Motion of the sample at the start of the simulation in presence of gravity when compensating the gravity forces (<a href="./figs/transient_phase_gravity_compensation.png">png</a>, <a href="./figs/transient_phase_gravity_compensation.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgb714922" class="outline-2">
|
||||
<h2 id="orgb714922"><span class="section-number-2">5</span> Conclusion</h2>
|
||||
<div id="outline-container-orgb003af1" class="outline-2">
|
||||
<h2 id="orgb003af1"><span class="section-number-2">5</span> Conclusion</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<div class="important">
|
||||
<div class="important" id="org3329ee9">
|
||||
<p>
|
||||
This initialization technique permits to compute the required forces/torques to be applied in each joint in order to compensate for gravity forces.
|
||||
This initialization should be redone for each configuration (change of sample mass, change of tilt angle), but not when changing the stiffness of joints, for instant when changing from lorentz based nano-hexapod or piezo based.
|
||||
@ -380,7 +375,7 @@ This initialization should be redone for each configuration (change of sample ma
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-04-17 ven. 09:34</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:07</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,73 +1,77 @@
|
||||
<?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-04-17 ven. 09:35 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Control of the Nano-Active-Stabilization-System</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Control of the Nano-Active-Stabilization-System</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org15699e9">1. Control Configuration - Introduction</a></li>
|
||||
<li><a href="#org2be3166">2. Tracking Control in the Frame of the Nano-Hexapod - Basic Architectures</a>
|
||||
<li><a href="#org25c471e">1. Control Configuration - Introduction</a></li>
|
||||
<li><a href="#orgcd0731f">2. Tracking Control in the Frame of the Nano-Hexapod - Basic Architectures</a>
|
||||
<ul>
|
||||
<li><a href="#org970ab39">2.1. Control in the frame of the Legs</a></li>
|
||||
<li><a href="#org82193fb">2.2. Control in the Cartesian frame</a></li>
|
||||
<li><a href="#orgbc69eea">2.1. Control in the frame of the Legs</a></li>
|
||||
<li><a href="#org65bc213">2.2. Control in the Cartesian frame</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org7d7b7f4">3. Active Damping Architecture - Collocated Control (link)</a>
|
||||
<li><a href="#org9ef6b25">3. Active Damping Architecture - Collocated Control (link)</a>
|
||||
<ul>
|
||||
<li><a href="#org3546873">3.1. Integral Force Feedback</a></li>
|
||||
<li><a href="#org722b371">3.2. Direct Relative Velocity Feedback</a></li>
|
||||
<li><a href="#orge25231e">3.1. Integral Force Feedback</a></li>
|
||||
<li><a href="#org66ad123">3.2. Direct Relative Velocity Feedback</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgca70c79">4. HAC-LAC Architectures (link)</a>
|
||||
<li><a href="#orgf83465a">4. HAC-LAC Architectures (link)</a>
|
||||
<ul>
|
||||
<li><a href="#orgd9c84f0">4.1. HAC-LAC using IFF and Tracking control in the frame of the Legs</a></li>
|
||||
<li><a href="#orgeb80da1">4.2. HAC-LAC using IFF and Tracking control in the Cartesian frame</a></li>
|
||||
<li><a href="#org8b2b21e">4.3. HAC-LAC using IFF - the HAC controller is positioning the sample w.r.t. the granite in the task space</a></li>
|
||||
<li><a href="#org1c04b26">4.4. HAC-LAC using IFF - the HAC controller is positioning the sample w.r.t. the granite in the space of the legs</a></li>
|
||||
<li><a href="#org83b9480">4.5. HAC-LAC using DVF - the HAC controller is positioning the sample w.r.t. the granite in the task space</a></li>
|
||||
<li><a href="#orgdbdd7d4">4.6. HAC-LAC using DVF - the HAC controller is positioning the sample w.r.t. the granite in the space of the legs</a></li>
|
||||
<li><a href="#org3a2dfa2">4.1. HAC-LAC using IFF and Tracking control in the frame of the Legs</a></li>
|
||||
<li><a href="#org27fd54b">4.2. HAC-LAC using IFF and Tracking control in the Cartesian frame</a></li>
|
||||
<li><a href="#org8454531">4.3. HAC-LAC using IFF - the HAC controller is positioning the sample w.r.t. the granite in the task space</a></li>
|
||||
<li><a href="#org89a2695">4.4. HAC-LAC using IFF - the HAC controller is positioning the sample w.r.t. the granite in the space of the legs</a></li>
|
||||
<li><a href="#orgac21cc9">4.5. HAC-LAC using DVF - the HAC controller is positioning the sample w.r.t. the granite in the task space</a></li>
|
||||
<li><a href="#org6676bde">4.6. HAC-LAC using DVF - the HAC controller is positioning the sample w.r.t. the granite in the space of the legs</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgab73896">5. Cascade Architectures (link)</a>
|
||||
<li><a href="#orge5dd5fd">5. Cascade Architectures (link)</a>
|
||||
<ul>
|
||||
<li><a href="#org3e5154f">5.1. Cascade Control with HAC-LAC Inner Loop and Primary Controller in the task space</a></li>
|
||||
<li><a href="#org4353aca">5.2. Cascade Control with HAC-LAC Inner Loop and Primary Controller in the joint space</a></li>
|
||||
<li><a href="#org9b331a4">5.1. Cascade Control with HAC-LAC Inner Loop and Primary Controller in the task space</a></li>
|
||||
<li><a href="#org2f8d9f9">5.2. Cascade Control with HAC-LAC Inner Loop and Primary Controller in the joint space</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org4ac6d11">6. Force Control (link)</a></li>
|
||||
<li><a href="#org5840a0b">7. Other Control Architectures</a>
|
||||
<li><a href="#org3a980c5">6. Force Control (link)</a></li>
|
||||
<li><a href="#org73661f1">7. Other Control Architectures</a>
|
||||
<ul>
|
||||
<li><a href="#org5be51f2">7.1. Control to force the nano-hexapod to not do any vertical rotation</a></li>
|
||||
<li><a href="#org26f61ba">7.1. Control to force the nano-hexapod to not do any vertical rotation</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -75,7 +79,7 @@
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The system consist of the following inputs and outputs (Figure <a href="#org2d9f6d0">1</a>):
|
||||
The system consist of the following inputs and outputs (Figure <a href="#org37cd4b0">1</a>):
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>\(\bm{\tau}\): Forces applied in each leg</li>
|
||||
@ -85,7 +89,7 @@ The system consist of the following inputs and outputs (Figure <a href="#org2d9f
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org2d9f6d0" class="figure">
|
||||
<div id="org37cd4b0" class="figure">
|
||||
<p><img src="figs/control_architecture_plant.png" alt="control_architecture_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Block diagram with the inputs and outputs of the system</p>
|
||||
@ -94,7 +98,7 @@ The system consist of the following inputs and outputs (Figure <a href="#org2d9f
|
||||
<p>
|
||||
In order to position the Sample with respect to the granite, we must use the measurement \(\bm{\mathcal{X}}\) in the control loop.
|
||||
The wanted position of the sample with respect to the granite is represented by \(\bm{r}_\mathcal{X}\).
|
||||
From \(\bm{r}_\mathcal{X}\) and \(\bm{\mathcal{X}}\), we can compute the required small change of pose of the nano-hexapod’s top platform expressed in the frame of the nano-hexapod’s base as shown in Figure <a href="#orgc4acef7">2</a>.
|
||||
From \(\bm{r}_\mathcal{X}\) and \(\bm{\mathcal{X}}\), we can compute the required small change of pose of the nano-hexapod’s top platform expressed in the frame of the nano-hexapod’s base as shown in Figure <a href="#orgb843e60">2</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -106,7 +110,7 @@ This can we considered as:
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="orgc4acef7" class="figure">
|
||||
<div id="orgb843e60" class="figure">
|
||||
<p><img src="figs/control_architecture_pos_error.png" alt="control_architecture_pos_error.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Block diagram corresponding to the computation of the position error in the frame of the nano-hexapod</p>
|
||||
@ -116,15 +120,15 @@ This can we considered as:
|
||||
In this document, we see how the different outputs of the system can be used to control of position \(\bm{\mathcal{X}}\).
|
||||
</p>
|
||||
|
||||
<div id="outline-container-org15699e9" class="outline-2">
|
||||
<h2 id="org15699e9"><span class="section-number-2">1</span> Control Configuration - Introduction</h2>
|
||||
<div id="outline-container-org25c471e" class="outline-2">
|
||||
<h2 id="org25c471e"><span class="section-number-2">1</span> Control Configuration - Introduction</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
In this section, we discuss the control configuration for the NASS.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
From <a class='org-ref-reference' href="#skogestad07_multiv_feedb_contr">skogestad07_multiv_feedb_contr</a>:
|
||||
From (<a href="#citeproc_bib_item_2">Skogestad and Postlethwaite 2007</a>):
|
||||
</p>
|
||||
<blockquote>
|
||||
<p>
|
||||
@ -149,24 +153,24 @@ Decoupling elements will be used to convert quantities from the joint space to t
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Decentralized controllers will be largely used both for Tracking control (Section <a href="#org251e3c9">2</a>) and for Active Damping techniques (Section <a href="#org1b3cc21">3</a>)
|
||||
Decentralized controllers will be largely used both for Tracking control (Section <a href="#orga1c5122">2</a>) and for Active Damping techniques (Section <a href="#orgaf5a850">3</a>)
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Combining both can be done in an HAC-LAC topology presented in Section <a href="#org31fa800">4</a>.
|
||||
Combining both can be done in an HAC-LAC topology presented in Section <a href="#org4b1b4af">4</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The use of decentralized controllers is proposed in Section <a href="#orga038762">5</a>.
|
||||
The use of decentralized controllers is proposed in Section <a href="#org697801a">5</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2be3166" class="outline-2">
|
||||
<h2 id="org2be3166"><span class="section-number-2">2</span> Tracking Control in the Frame of the Nano-Hexapod - Basic Architectures</h2>
|
||||
<div id="outline-container-orgcd0731f" class="outline-2">
|
||||
<h2 id="orgcd0731f"><span class="section-number-2">2</span> Tracking Control in the Frame of the Nano-Hexapod - Basic Architectures</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="org251e3c9"></a>
|
||||
<a id="orga1c5122"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, we suppose that we want to track some reference position \(\bm{r}_{\mathcal{X}_n}\) corresponding to the pose of the nano-hexapod’s mobile platform with respect to its fixed base.
|
||||
@ -184,11 +188,11 @@ However, thanks to the forward and inverse kinematics, the controller can either
|
||||
These to configuration are described in the next two sections.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org970ab39" class="outline-3">
|
||||
<h3 id="org970ab39"><span class="section-number-3">2.1</span> Control in the frame of the Legs</h3>
|
||||
<div id="outline-container-orgbc69eea" class="outline-3">
|
||||
<h3 id="orgbc69eea"><span class="section-number-3">2.1</span> Control in the frame of the Legs</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
<a id="org8583193"></a>
|
||||
<a id="org92ab294"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -198,7 +202,7 @@ Finally, a diagonal (Decentralized) controller \(\bm{K}_\mathcal{L}\) can be use
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org3211e10" class="figure">
|
||||
<div id="org6c88afe" class="figure">
|
||||
<p><img src="figs/control_architecture_leg_frame.png" alt="control_architecture_leg_frame.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Control in the frame of the legs</p>
|
||||
@ -206,11 +210,11 @@ Finally, a diagonal (Decentralized) controller \(\bm{K}_\mathcal{L}\) can be use
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org82193fb" class="outline-3">
|
||||
<h3 id="org82193fb"><span class="section-number-3">2.2</span> Control in the Cartesian frame</h3>
|
||||
<div id="outline-container-org65bc213" class="outline-3">
|
||||
<h3 id="org65bc213"><span class="section-number-3">2.2</span> Control in the Cartesian frame</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
<a id="orgbd7e263"></a>
|
||||
<a id="orgd4d12e5"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -221,7 +225,7 @@ These forces are then converted to forces applied in each of the nano-hexapod&rs
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org81b6823" class="figure">
|
||||
<div id="orga34a56c" class="figure">
|
||||
<p><img src="figs/control_architecture_cartesian_frame.png" alt="control_architecture_cartesian_frame.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Control in the cartesian Frame (rotating frame attached to the nano-hexapod’s base)</p>
|
||||
@ -230,14 +234,14 @@ These forces are then converted to forces applied in each of the nano-hexapod&rs
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7d7b7f4" class="outline-2">
|
||||
<h2 id="org7d7b7f4"><span class="section-number-2">3</span> Active Damping Architecture - Collocated Control (<a href="control_active_damping.html">link</a>)</h2>
|
||||
<div id="outline-container-org9ef6b25" class="outline-2">
|
||||
<h2 id="org9ef6b25"><span class="section-number-2">3</span> Active Damping Architecture - Collocated Control (<a href="control_active_damping.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="org1b3cc21"></a>
|
||||
<a id="orgaf5a850"></a>
|
||||
</p>
|
||||
<p>
|
||||
From <a class='org-ref-reference' href="#preumont18_vibrat_contr_activ_struc_fourt_edition">preumont18_vibrat_contr_activ_struc_fourt_edition</a>:
|
||||
From (<a href="#citeproc_bib_item_1">Preumont 2018</a>):
|
||||
</p>
|
||||
<blockquote>
|
||||
<p>
|
||||
@ -258,11 +262,11 @@ These two active damping techniques are collocated control techniques.
|
||||
The active damping techniques are studied in <a href="control_active_damping.html">this</a> document.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org3546873" class="outline-3">
|
||||
<h3 id="org3546873"><span class="section-number-3">3.1</span> Integral Force Feedback</h3>
|
||||
<div id="outline-container-orge25231e" class="outline-3">
|
||||
<h3 id="orge25231e"><span class="section-number-3">3.1</span> Integral Force Feedback</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
<a id="orgb398117"></a>
|
||||
<a id="org71c8197"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -286,7 +290,7 @@ A lead-lag can also be used instead of a pure integrator.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org19b5f2d" class="figure">
|
||||
<div id="orga842725" class="figure">
|
||||
<p><img src="figs/control_architecture_iff.png" alt="control_architecture_iff.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Integral Force Feedback</p>
|
||||
@ -294,11 +298,11 @@ A lead-lag can also be used instead of a pure integrator.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org722b371" class="outline-3">
|
||||
<h3 id="org722b371"><span class="section-number-3">3.2</span> Direct Relative Velocity Feedback</h3>
|
||||
<div id="outline-container-org66ad123" class="outline-3">
|
||||
<h3 id="org66ad123"><span class="section-number-3">3.2</span> Direct Relative Velocity Feedback</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<p>
|
||||
<a id="orgfaf575b"></a>
|
||||
<a id="org4acc137"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -315,7 +319,7 @@ Each diagonal element consists of:
|
||||
\end{equation}
|
||||
|
||||
|
||||
<div id="org402f972" class="figure">
|
||||
<div id="org76615cc" class="figure">
|
||||
<p><img src="figs/control_architecture_dvf.png" alt="control_architecture_dvf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Direct Velocity Feedback</p>
|
||||
@ -324,11 +328,11 @@ Each diagonal element consists of:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgca70c79" class="outline-2">
|
||||
<h2 id="orgca70c79"><span class="section-number-2">4</span> HAC-LAC Architectures (<a href="control_hac_lac.html">link</a>)</h2>
|
||||
<div id="outline-container-orgf83465a" class="outline-2">
|
||||
<h2 id="orgf83465a"><span class="section-number-2">4</span> HAC-LAC Architectures (<a href="control_hac_lac.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
<a id="org31fa800"></a>
|
||||
<a id="org4b1b4af"></a>
|
||||
</p>
|
||||
<p>
|
||||
Here we can combine Active Damping Techniques (Low authority control) with a tracking controller (high authority control).
|
||||
@ -336,11 +340,11 @@ Usually, the low authority controller is designed first, and the high authority
|
||||
</p>
|
||||
|
||||
<p>
|
||||
From <a class='org-ref-reference' href="#preumont18_vibrat_contr_activ_struc_fourt_edition">preumont18_vibrat_contr_activ_struc_fourt_edition</a>:
|
||||
From (<a href="#citeproc_bib_item_1">Preumont 2018</a>):
|
||||
</p>
|
||||
<blockquote>
|
||||
<p>
|
||||
The HAC/LAC approach consist of combining the two approached in a dual-loop control as shown in Figure <a href="#org1b2c5c7">7</a>.
|
||||
The HAC/LAC approach consist of combining the two approached in a dual-loop control as shown in Figure <a href="#orgfe203dc">7</a>.
|
||||
The inner loop uses a set of collocated actuator/sensor pairs for decentralized active damping with guaranteed stability ; the outer loop consists of a non-collocated HAC based on a model of the actively damped structure.
|
||||
This approach has the following advantages:
|
||||
</p>
|
||||
@ -352,29 +356,29 @@ This approach has the following advantages:
|
||||
</blockquote>
|
||||
|
||||
|
||||
<div id="org1b2c5c7" class="figure">
|
||||
<div id="orgfe203dc" class="figure">
|
||||
<p><img src="figs/control_architecture_hac_lac.png" alt="control_architecture_hac_lac.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>HAC-LAC Control Architecture</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
If there is only one input to the system, the HAC-LAC topology can be represented as depicted in Figure <a href="#org91828a2">8</a>.
|
||||
If there is only one input to the system, the HAC-LAC topology can be represented as depicted in Figure <a href="#org8e5c9da">8</a>.
|
||||
Usually, the Low Authority Controller is first design, and then the High Authority Controller is designed based on the damped plant.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org91828a2" class="figure">
|
||||
<div id="org8e5c9da" class="figure">
|
||||
<p><img src="figs/control_architecture_hac_lac_one_input.png" alt="control_architecture_hac_lac_one_input.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>HAC-LAC Architecture with a system having only one input</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgd9c84f0" class="outline-3">
|
||||
<h3 id="orgd9c84f0"><span class="section-number-3">4.1</span> HAC-LAC using IFF and Tracking control in the frame of the Legs</h3>
|
||||
<div id="outline-container-org3a2dfa2" class="outline-3">
|
||||
<h3 id="org3a2dfa2"><span class="section-number-3">4.1</span> HAC-LAC using IFF and Tracking control in the frame of the Legs</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
|
||||
<div id="orgd235561" class="figure">
|
||||
<div id="org259b2b4" class="figure">
|
||||
<p><img src="figs/control_architecture_hac_iff_L.png" alt="control_architecture_hac_iff_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>IFF + Control in the frame of the legs</p>
|
||||
@ -382,11 +386,11 @@ Usually, the Low Authority Controller is first design, and then the High Authori
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgeb80da1" class="outline-3">
|
||||
<h3 id="orgeb80da1"><span class="section-number-3">4.2</span> HAC-LAC using IFF and Tracking control in the Cartesian frame</h3>
|
||||
<div id="outline-container-org27fd54b" class="outline-3">
|
||||
<h3 id="org27fd54b"><span class="section-number-3">4.2</span> HAC-LAC using IFF and Tracking control in the Cartesian frame</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
|
||||
<div id="orgb89bca0" class="figure">
|
||||
<div id="org0bde593" class="figure">
|
||||
<p><img src="figs/control_architecture_hac_iff_X.png" alt="control_architecture_hac_iff_X.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>IFF + Control in the cartesian frame</p>
|
||||
@ -394,44 +398,44 @@ Usually, the Low Authority Controller is first design, and then the High Authori
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8b2b21e" class="outline-3">
|
||||
<h3 id="org8b2b21e"><span class="section-number-3">4.3</span> HAC-LAC using IFF - the HAC controller is positioning the sample w.r.t. the granite in the task space</h3>
|
||||
<div id="outline-container-org8454531" class="outline-3">
|
||||
<h3 id="org8454531"><span class="section-number-3">4.3</span> HAC-LAC using IFF - the HAC controller is positioning the sample w.r.t. the granite in the task space</h3>
|
||||
<div class="outline-text-3" id="text-4-3">
|
||||
|
||||
<div class="figure">
|
||||
<div id="orgd88bdcb" class="figure">
|
||||
<p><img src="figs/control_architecture_hac_iff_pos_X.png" alt="control_architecture_hac_iff_pos_X.png" />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1c04b26" class="outline-3">
|
||||
<h3 id="org1c04b26"><span class="section-number-3">4.4</span> HAC-LAC using IFF - the HAC controller is positioning the sample w.r.t. the granite in the space of the legs</h3>
|
||||
<div id="outline-container-org89a2695" class="outline-3">
|
||||
<h3 id="org89a2695"><span class="section-number-3">4.4</span> HAC-LAC using IFF - the HAC controller is positioning the sample w.r.t. the granite in the space of the legs</h3>
|
||||
<div class="outline-text-3" id="text-4-4">
|
||||
|
||||
<div class="figure">
|
||||
<div id="orgc4e63e2" class="figure">
|
||||
<p><img src="figs/control_architecture_hac_iff_pos_L.png" alt="control_architecture_hac_iff_pos_L.png" />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org83b9480" class="outline-3">
|
||||
<h3 id="org83b9480"><span class="section-number-3">4.5</span> HAC-LAC using DVF - the HAC controller is positioning the sample w.r.t. the granite in the task space</h3>
|
||||
<div id="outline-container-orgac21cc9" class="outline-3">
|
||||
<h3 id="orgac21cc9"><span class="section-number-3">4.5</span> HAC-LAC using DVF - the HAC controller is positioning the sample w.r.t. the granite in the task space</h3>
|
||||
<div class="outline-text-3" id="text-4-5">
|
||||
|
||||
<div class="figure">
|
||||
<div id="org4e63dc4" class="figure">
|
||||
<p><img src="figs/control_architecture_hac_dvf_pos_X.png" alt="control_architecture_hac_dvf_pos_X.png" />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdbdd7d4" class="outline-3">
|
||||
<h3 id="orgdbdd7d4"><span class="section-number-3">4.6</span> HAC-LAC using DVF - the HAC controller is positioning the sample w.r.t. the granite in the space of the legs</h3>
|
||||
<div id="outline-container-org6676bde" class="outline-3">
|
||||
<h3 id="org6676bde"><span class="section-number-3">4.6</span> HAC-LAC using DVF - the HAC controller is positioning the sample w.r.t. the granite in the space of the legs</h3>
|
||||
<div class="outline-text-3" id="text-4-6">
|
||||
|
||||
<div class="figure">
|
||||
<div id="org2cc76e1" class="figure">
|
||||
<p><img src="figs/control_architecture_hac_dvf_pos_L.png" alt="control_architecture_hac_dvf_pos_L.png" />
|
||||
</p>
|
||||
</div>
|
||||
@ -439,26 +443,26 @@ Usually, the Low Authority Controller is first design, and then the High Authori
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgab73896" class="outline-2">
|
||||
<h2 id="orgab73896"><span class="section-number-2">5</span> Cascade Architectures (<a href="control_cascade.html">link</a>)</h2>
|
||||
<div id="outline-container-orge5dd5fd" class="outline-2">
|
||||
<h2 id="orge5dd5fd"><span class="section-number-2">5</span> Cascade Architectures (<a href="control_cascade.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
<a id="orga038762"></a>
|
||||
<a id="org697801a"></a>
|
||||
</p>
|
||||
<p>
|
||||
The principle of Cascade control is shown in Figure <a href="#org03ef231">15</a> and explained as follow:
|
||||
The principle of Cascade control is shown in Figure <a href="#org8e45511">15</a> and explained as follow:
|
||||
</p>
|
||||
<blockquote>
|
||||
<p>
|
||||
To follow <b>two objectives</b> with different properties in one control system, usually a <b>hierarchy</b> of two feedback loops is used in practice.
|
||||
This kind of control topology is called <b>cascade control</b>, which is used when there are <b>several measurements and one prime control variable</b>.
|
||||
Cascade control is implemented by <b>nesting</b> the control loops, as shown in Figure <a href="#org03ef231">15</a>.
|
||||
The output control loop is called the <b>primary loop</b>, while the inner loop is called the secondary loop and is used to fulfill a secondary objective in the closed-loop system. – <a class='org-ref-reference' href="#taghirad13_paral">taghirad13_paral</a>
|
||||
Cascade control is implemented by <b>nesting</b> the control loops, as shown in Figure <a href="#org8e45511">15</a>.
|
||||
The output control loop is called the <b>primary loop</b>, while the inner loop is called the secondary loop and is used to fulfill a secondary objective in the closed-loop system. – (<a href="#citeproc_bib_item_3">Taghirad 2013</a>)
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
|
||||
<div id="org03ef231" class="figure">
|
||||
<div id="org8e45511" class="figure">
|
||||
<p><img src="figs/control_architecture_cascade_control.png" alt="control_architecture_cascade_control.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Cascade Control Architecture</p>
|
||||
@ -479,11 +483,11 @@ In the NASS’s case:
|
||||
The inner loop can be composed of the system controlled with the HAC-LAC topology.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org3e5154f" class="outline-3">
|
||||
<h3 id="org3e5154f"><span class="section-number-3">5.1</span> Cascade Control with HAC-LAC Inner Loop and Primary Controller in the task space</h3>
|
||||
<div id="outline-container-org9b331a4" class="outline-3">
|
||||
<h3 id="org9b331a4"><span class="section-number-3">5.1</span> Cascade Control with HAC-LAC Inner Loop and Primary Controller in the task space</h3>
|
||||
<div class="outline-text-3" id="text-5-1">
|
||||
|
||||
<div id="orgff7dfc6" class="figure">
|
||||
<div id="orge54ab8a" class="figure">
|
||||
<p><img src="figs/control_architecture_cascade_L.png" alt="control_architecture_cascade_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 16: </span>Cascaded Control consisting of (from inner to outer loop): IFF, Linearization Loop, Tracking Control in the frame of the Legs</p>
|
||||
@ -491,11 +495,11 @@ The inner loop can be composed of the system controlled with the HAC-LAC topolog
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4353aca" class="outline-3">
|
||||
<h3 id="org4353aca"><span class="section-number-3">5.2</span> Cascade Control with HAC-LAC Inner Loop and Primary Controller in the joint space</h3>
|
||||
<div id="outline-container-org2f8d9f9" class="outline-3">
|
||||
<h3 id="org2f8d9f9"><span class="section-number-3">5.2</span> Cascade Control with HAC-LAC Inner Loop and Primary Controller in the joint space</h3>
|
||||
<div class="outline-text-3" id="text-5-2">
|
||||
|
||||
<div id="org4bc4c4c" class="figure">
|
||||
<div id="orgdb3211a" class="figure">
|
||||
<p><img src="figs/control_architecture_cascade_X.png" alt="control_architecture_cascade_X.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 17: </span>Cascaded Control consisting of (from inner to outer loop): IFF, Linearization Loop, Tracking Control in the Cartesian Frame</p>
|
||||
@ -504,8 +508,8 @@ The inner loop can be composed of the system controlled with the HAC-LAC topolog
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4ac6d11" class="outline-2">
|
||||
<h2 id="org4ac6d11"><span class="section-number-2">6</span> Force Control (<a href="control_force.html">link</a>)</h2>
|
||||
<div id="outline-container-org3a980c5" class="outline-2">
|
||||
<h2 id="org3a980c5"><span class="section-number-2">6</span> Force Control (<a href="control_force.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<p>
|
||||
Signals:
|
||||
@ -517,41 +521,41 @@ Signals:
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="figure">
|
||||
<div id="org17f57fd" class="figure">
|
||||
<p><img src="figs/control_architecture_force.png" alt="control_architecture_force.png" />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5840a0b" class="outline-2">
|
||||
<h2 id="org5840a0b"><span class="section-number-2">7</span> Other Control Architectures</h2>
|
||||
<div id="outline-container-org73661f1" class="outline-2">
|
||||
<h2 id="org73661f1"><span class="section-number-2">7</span> Other Control Architectures</h2>
|
||||
<div class="outline-text-2" id="text-7">
|
||||
</div>
|
||||
<div id="outline-container-org5be51f2" class="outline-3">
|
||||
<h3 id="org5be51f2"><span class="section-number-3">7.1</span> Control to force the nano-hexapod to not do any vertical rotation</h3>
|
||||
<div id="outline-container-org26f61ba" class="outline-3">
|
||||
<h3 id="org26f61ba"><span class="section-number-3">7.1</span> Control to force the nano-hexapod to not do any vertical rotation</h3>
|
||||
<div class="outline-text-3" id="text-7-1">
|
||||
<p>
|
||||
As the sample rotation around the vertical axis is not measure, the best we can do with the nano-hexapod is to not rotate around this same axis.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
One way to do it is shown in Figure <a href="#orga8781eb">19</a>.
|
||||
One way to do it is shown in Figure <a href="#org6559cc5">19</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The controller \(\bm{K}_{R_z}\) is decomposed as shown in Figure <a href="#org2f0522c">20</a>.
|
||||
The controller \(\bm{K}_{R_z}\) is decomposed as shown in Figure <a href="#org1d551e2">20</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orga8781eb" class="figure">
|
||||
<div id="org6559cc5" class="figure">
|
||||
<p><img src="figs/control_architecture_fixed_rz.png" alt="control_architecture_fixed_rz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 19: </span>Figure caption</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org2f0522c" class="figure">
|
||||
<div id="org1d551e2" class="figure">
|
||||
<p><img src="figs/control_architecture_fixed_Krz.png" alt="control_architecture_fixed_Krz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 20: </span>Figure caption</p>
|
||||
@ -563,16 +567,18 @@ The controller \(\bm{K}_{R_z}\) is decomposed as shown in Figure <a href="#org2f
|
||||
|
||||
<p>
|
||||
|
||||
<h1 class='org-ref-bib-h1'>Bibliography</h1>
|
||||
<ul class='org-ref-bib'><li><a id="skogestad07_multiv_feedb_contr">[skogestad07_multiv_feedb_contr]</a> <a name="skogestad07_multiv_feedb_contr"></a>Skogestad & Postlethwaite, Multivariable Feedback Control: Analysis and Design, John Wiley (2007).</li>
|
||||
<li><a id="preumont18_vibrat_contr_activ_struc_fourt_edition">[preumont18_vibrat_contr_activ_struc_fourt_edition]</a> <a name="preumont18_vibrat_contr_activ_struc_fourt_edition"></a>Andre Preumont, Vibration Control of Active Structures - Fourth Edition, Springer International Publishing (2018).</li>
|
||||
<li><a id="taghirad13_paral">[taghirad13_paral]</a> <a name="taghirad13_paral"></a>Taghirad, Parallel robots : mechanics and control, CRC Press (2013).</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><h2 class='citeproc-org-bib-h2'>Bibliography</h2>
|
||||
<div class="csl-bib-body">
|
||||
<div class="csl-entry"><a name="citeproc_bib_item_1"></a>Preumont, Andre. 2018. <i>Vibration Control of Active Structures - Fourth Edition</i>. Solid Mechanics and Its Applications. Springer International Publishing. <a href="https://doi.org/10.1007/978-3-319-72296-2">https://doi.org/10.1007/978-3-319-72296-2</a>.</div>
|
||||
<div class="csl-entry"><a name="citeproc_bib_item_2"></a>Skogestad, Sigurd, and Ian Postlethwaite. 2007. <i>Multivariable Feedback Control: Analysis and Design</i>. John Wiley.</div>
|
||||
<div class="csl-entry"><a name="citeproc_bib_item_3"></a>Taghirad, Hamid. 2013. <i>Parallel Robots : Mechanics and Control</i>. Boca Raton, FL: CRC Press.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-04-17 ven. 09:35</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,75 +1,79 @@
|
||||
<?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-04-17 ven. 09:35 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Cascade Control applied on the Simscape Model</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Cascade Control applied on the Simscape Model</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org143e6e7">1. Initialization</a></li>
|
||||
<li><a href="#orga3bd04c">2. Low Authority Control - Integral Force Feedback \(\bm{K}_\text{IFF}\)</a>
|
||||
<li><a href="#org61c020f">1. Initialization</a></li>
|
||||
<li><a href="#orgabcff63">2. Low Authority Control - Integral Force Feedback \(\bm{K}_\text{IFF}\)</a>
|
||||
<ul>
|
||||
<li><a href="#org702c612">2.1. Identification</a></li>
|
||||
<li><a href="#org1eda739">2.2. Plant</a></li>
|
||||
<li><a href="#orgf33a40f">2.3. Root Locus</a></li>
|
||||
<li><a href="#orgd895b21">2.4. Controller and Loop Gain</a></li>
|
||||
<li><a href="#org340d5c4">2.1. Identification</a></li>
|
||||
<li><a href="#orga3a6bfe">2.2. Plant</a></li>
|
||||
<li><a href="#org08443b2">2.3. Root Locus</a></li>
|
||||
<li><a href="#orgfcc764a">2.4. Controller and Loop Gain</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org101bfbc">3. High Authority Control in the joint space - \(\bm{K}_\mathcal{L}\)</a>
|
||||
<li><a href="#org5f8f119">3. High Authority Control in the joint space - \(\bm{K}_\mathcal{L}\)</a>
|
||||
<ul>
|
||||
<li><a href="#org259240d">3.1. Identification of the damped plant</a></li>
|
||||
<li><a href="#orgfc86b4c">3.2. Obtained Plant</a></li>
|
||||
<li><a href="#orgdea5e17">3.3. Controller Design and Loop Gain</a></li>
|
||||
<li><a href="#org4c8cb18">3.1. Identification of the damped plant</a></li>
|
||||
<li><a href="#org8ad1542">3.2. Obtained Plant</a></li>
|
||||
<li><a href="#orge39ae16">3.3. Controller Design and Loop Gain</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org58f9f32">4. Primary Controller in the task space - \(\bm{K}_\mathcal{X}\)</a>
|
||||
<li><a href="#org11a22c2">4. Primary Controller in the task space - \(\bm{K}_\mathcal{X}\)</a>
|
||||
<ul>
|
||||
<li><a href="#org82ca884">4.1. Identification of the linearized plant</a></li>
|
||||
<li><a href="#org6f5b22e">4.2. Obtained Plant</a></li>
|
||||
<li><a href="#org839cdb3">4.3. Controller Design</a></li>
|
||||
<li><a href="#orgfc45f6f">4.1. Identification of the linearized plant</a></li>
|
||||
<li><a href="#org170c73f">4.2. Obtained Plant</a></li>
|
||||
<li><a href="#orge97b630">4.3. Controller Design</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org3300911">5. Simulation</a></li>
|
||||
<li><a href="#org2943496">6. Results</a></li>
|
||||
<li><a href="#org07fbc52">5. Simulation</a></li>
|
||||
<li><a href="#org3e9cd70">6. Results</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The control architecture we wish here to study is shown in Figure <a href="#org19741db">1</a>.
|
||||
The control architecture we wish here to study is shown in Figure <a href="#orga0c68cb">1</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org19741db" class="figure">
|
||||
<div id="orga0c68cb" class="figure">
|
||||
<p><img src="figs/cascade_control_architecture.png" alt="cascade_control_architecture.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Cascaded Control consisting of (from inner to outer loop): IFF, Linearization Loop, Tracking Control in the frame of the Legs</p>
|
||||
@ -79,28 +83,28 @@ The control architecture we wish here to study is shown in Figure <a href="#org1
|
||||
This cascade control is designed in three steps:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>In section <a href="#orga20c211">2</a>: an active damping controller is designed.
|
||||
<li>In section <a href="#orgbc2e2fd">2</a>: an active damping controller is designed.
|
||||
This is based on the Integral Force Feedback and applied in a decentralized way</li>
|
||||
<li>In section <a href="#org9367d49">3</a>: a decentralized tracking control is designed in the frame of the legs.
|
||||
<li>In section <a href="#orgd16580b">3</a>: a decentralized tracking control is designed in the frame of the legs.
|
||||
This controller is based on the displacement of each of the legs</li>
|
||||
<li>In section <a href="#orgdd883a0">4</a>: a controller is designed in the task space in order to follow the wanted reference path corresponding to the sample position with respect to the granite</li>
|
||||
<li>In section <a href="#org20bc645">4</a>: a controller is designed in the task space in order to follow the wanted reference path corresponding to the sample position with respect to the granite</li>
|
||||
</ul>
|
||||
|
||||
<div id="outline-container-org143e6e7" class="outline-2">
|
||||
<h2 id="org143e6e7"><span class="section-number-2">1</span> Initialization</h2>
|
||||
<div id="outline-container-org61c020f" class="outline-2">
|
||||
<h2 id="org61c020f"><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>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -108,8 +112,8 @@ initializeMirror();
|
||||
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>, 1);
|
||||
<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>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -117,12 +121,12 @@ initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||
We set the references that corresponds to a tomography experiment.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<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 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>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances();
|
||||
<pre class="src src-matlab"> initializeDisturbances();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -130,7 +134,7 @@ We set the references that corresponds to a tomography experiment.
|
||||
Open Loop.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'cascade-hac-lac'</span>);
|
||||
<pre class="src src-matlab"> initializeController(<span class="org-string">'type'</span>, <span class="org-string">'cascade-hac-lac'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -138,7 +142,7 @@ Open Loop.
|
||||
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">true</span>);
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -146,55 +150,55 @@ And we put some gravity.
|
||||
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 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">Kp = tf(zeros(6));
|
||||
Kl = tf(zeros(6));
|
||||
Kiff = tf(zeros(6));
|
||||
<pre class="src src-matlab"> Kp = tf(zeros(6));
|
||||
Kl = tf(zeros(6));
|
||||
Kiff = tf(zeros(6));
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga3bd04c" class="outline-2">
|
||||
<h2 id="orga3bd04c"><span class="section-number-2">2</span> Low Authority Control - Integral Force Feedback \(\bm{K}_\text{IFF}\)</h2>
|
||||
<div id="outline-container-orgabcff63" class="outline-2">
|
||||
<h2 id="orgabcff63"><span class="section-number-2">2</span> Low Authority Control - Integral Force Feedback \(\bm{K}_\text{IFF}\)</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="orga20c211"></a>
|
||||
<a id="orgbc2e2fd"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org702c612" class="outline-3">
|
||||
<h3 id="org702c612"><span class="section-number-3">2.1</span> Identification</h3>
|
||||
<div id="outline-container-org340d5c4" class="outline-3">
|
||||
<h3 id="org340d5c4"><span class="section-number-3">2.1</span> Identification</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
Let’s first identify the plant for the IFF controller.
|
||||
</p>
|
||||
<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>;
|
||||
<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">'/Micro-Station'</span>], 3, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'Fnlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Force Sensors</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">'/Micro-Station'</span>], 3, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'Fnlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Force Sensors</span>
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G_iff = linearize(mdl, io, 0);
|
||||
G_iff.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_iff.OutputName = {<span class="org-string">'Fnlm1'</span>, <span class="org-string">'Fnlm2'</span>, <span class="org-string">'Fnlm3'</span>, <span class="org-string">'Fnlm4'</span>, <span class="org-string">'Fnlm5'</span>, <span class="org-string">'Fnlm6'</span>};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G_iff = linearize(mdl, io, 0);
|
||||
G_iff.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_iff.OutputName = {<span class="org-string">'Fnlm1'</span>, <span class="org-string">'Fnlm2'</span>, <span class="org-string">'Fnlm3'</span>, <span class="org-string">'Fnlm4'</span>, <span class="org-string">'Fnlm5'</span>, <span class="org-string">'Fnlm6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1eda739" class="outline-3">
|
||||
<h3 id="org1eda739"><span class="section-number-3">2.2</span> Plant</h3>
|
||||
<div id="outline-container-orga3a6bfe" class="outline-3">
|
||||
<h3 id="orga3a6bfe"><span class="section-number-3">2.2</span> Plant</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
|
||||
<div id="org366ff26" class="figure">
|
||||
<div id="orgdfa60cc" class="figure">
|
||||
<p><img src="figs/cascade_iff_plant.png" alt="cascade_iff_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>IFF Plant (<a href="./figs/cascade_iff_plant.png">png</a>, <a href="./figs/cascade_iff_plant.pdf">pdf</a>)</p>
|
||||
@ -202,11 +206,11 @@ G_iff.OutputName = {<span class="org-string">'Fnlm1'</span>, <span class="org-st
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf33a40f" class="outline-3">
|
||||
<h3 id="orgf33a40f"><span class="section-number-3">2.3</span> Root Locus</h3>
|
||||
<div id="outline-container-org08443b2" class="outline-3">
|
||||
<h3 id="org08443b2"><span class="section-number-3">2.3</span> Root Locus</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
|
||||
<div id="orgdf7a93e" class="figure">
|
||||
<div id="org6320a7a" class="figure">
|
||||
<p><img src="figs/cascade_iff_root_locus.png" alt="cascade_iff_root_locus.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Root Locus for the IFF control (<a href="./figs/cascade_iff_root_locus.png">png</a>, <a href="./figs/cascade_iff_root_locus.pdf">pdf</a>)</p>
|
||||
@ -218,21 +222,21 @@ The maximum damping is obtained for a control gain of \(\approx 3000\).
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd895b21" class="outline-3">
|
||||
<h3 id="orgd895b21"><span class="section-number-3">2.4</span> Controller and Loop Gain</h3>
|
||||
<div id="outline-container-orgfcc764a" class="outline-3">
|
||||
<h3 id="orgfcc764a"><span class="section-number-3">2.4</span> Controller and Loop Gain</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<p>
|
||||
We create the \(6 \times 6\) diagonal Integral Force Feedback controller.
|
||||
The obtained loop gain is shown in Figure <a href="#org7aaed92">4</a>.
|
||||
The obtained loop gain is shown in Figure <a href="#org59e605f">4</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>50;
|
||||
Kiff = <span class="org-type">-</span>3000<span class="org-type">/</span>s<span class="org-type">*</span>eye(6);
|
||||
<pre class="src src-matlab"> w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>50;
|
||||
Kiff = <span class="org-type">-</span>3000<span class="org-type">/</span>s<span class="org-type">*</span>eye(6);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org7aaed92" class="figure">
|
||||
<div id="org59e605f" class="figure">
|
||||
<p><img src="figs/cascade_iff_loop_gain.png" alt="cascade_iff_loop_gain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Obtained Loop gain the IFF Control (<a href="./figs/cascade_iff_loop_gain.png">png</a>, <a href="./figs/cascade_iff_loop_gain.pdf">pdf</a>)</p>
|
||||
@ -241,32 +245,32 @@ Kiff = <span class="org-type">-</span>3000<span class="org-type">/</span>s<span
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org101bfbc" class="outline-2">
|
||||
<h2 id="org101bfbc"><span class="section-number-2">3</span> High Authority Control in the joint space - \(\bm{K}_\mathcal{L}\)</h2>
|
||||
<div id="outline-container-org5f8f119" class="outline-2">
|
||||
<h2 id="org5f8f119"><span class="section-number-2">3</span> High Authority Control in the joint space - \(\bm{K}_\mathcal{L}\)</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="org9367d49"></a>
|
||||
<a id="orgd16580b"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org259240d" class="outline-3">
|
||||
<h3 id="org259240d"><span class="section-number-3">3.1</span> Identification of the damped plant</h3>
|
||||
<div id="outline-container-org4c8cb18" class="outline-3">
|
||||
<h3 id="org4c8cb18"><span class="section-number-3">3.1</span> Identification of the damped plant</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
We now identify the transfer function from \(\tau^\prime\) to \(d\bm{\mathcal{L}}\) as shown in Figure <a href="#org19741db">1</a>.
|
||||
We now identify the transfer function from \(\tau^\prime\) to \(d\bm{\mathcal{L}}\) as shown in Figure <a href="#orga0c68cb">1</a>.
|
||||
</p>
|
||||
<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>;
|
||||
<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">'/Micro-Station'</span>], 3, <span class="org-string">'output'</span>, [], <span class="org-string">'Dnlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Leg Displacement</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">'/Micro-Station'</span>], 3, <span class="org-string">'output'</span>, [], <span class="org-string">'Dnlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Leg Displacement</span>
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
Gl = linearize(mdl, io, 0);
|
||||
Gl.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>};
|
||||
Gl.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>};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
Gl = linearize(mdl, io, 0);
|
||||
Gl.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>};
|
||||
Gl.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>
|
||||
|
||||
@ -275,19 +279,19 @@ There are some unstable poles in the Plant with very small imaginary parts.
|
||||
These unstable poles are probably not physical, and they disappear when taking the minimum realization of the plant.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">isstable(Gl)
|
||||
Gl = minreal(Gl);
|
||||
isstable(Gl)
|
||||
<pre class="src src-matlab"> isstable(Gl)
|
||||
Gl = minreal(Gl);
|
||||
isstable(Gl)
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfc86b4c" class="outline-3">
|
||||
<h3 id="orgfc86b4c"><span class="section-number-3">3.2</span> Obtained Plant</h3>
|
||||
<div id="outline-container-org8ad1542" class="outline-3">
|
||||
<h3 id="org8ad1542"><span class="section-number-3">3.2</span> Obtained Plant</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<p>
|
||||
The obtain plant is shown in Figure <a href="#org455eb07">5</a>.
|
||||
The obtain plant is shown in Figure <a href="#org5030d6d">5</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -295,7 +299,7 @@ We can see that the plant is quite well decoupled.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org455eb07" class="figure">
|
||||
<div id="org5030d6d" class="figure">
|
||||
<p><img src="figs/cascade_hac_joint_plant.png" alt="cascade_hac_joint_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Plant for the High Authority Control in the Joint Space (<a href="./figs/cascade_hac_joint_plant.png">png</a>, <a href="./figs/cascade_hac_joint_plant.pdf">pdf</a>)</p>
|
||||
@ -304,8 +308,8 @@ We can see that the plant is quite well decoupled.
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-orgdea5e17" class="outline-3">
|
||||
<h3 id="orgdea5e17"><span class="section-number-3">3.3</span> Controller Design and Loop Gain</h3>
|
||||
<div id="outline-container-orge39ae16" class="outline-3">
|
||||
<h3 id="orge39ae16"><span class="section-number-3">3.3</span> Controller Design and Loop Gain</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<p>
|
||||
The controller consists of:
|
||||
@ -318,20 +322,20 @@ The controller consists of:
|
||||
</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>400; <span class="org-comment">% Bandwidth Bandwidth [rad/s]</span>
|
||||
<pre class="src src-matlab"> wc = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>400; <span class="org-comment">% Bandwidth Bandwidth [rad/s]</span>
|
||||
|
||||
h = 2; <span class="org-comment">% Lead parameter</span>
|
||||
h = 2; <span class="org-comment">% Lead parameter</span>
|
||||
|
||||
<span class="org-comment">% Kl = (1/h) * (1 + s/wc*h)/(1 + s/wc/h) * wc/s * ((s/wc*2 + 1)/(s/wc*2)) * (1/(1 + s/wc/2));</span>
|
||||
Kl = (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> (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-comment">% Kl = (1/h) * (1 + s/wc*h)/(1 + s/wc/h) * wc/s * ((s/wc*2 + 1)/(s/wc*2)) * (1/(1 + s/wc/2));</span>
|
||||
Kl = (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> (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-comment">% Normalization of the gain of have a loop gain of 1 at frequency wc</span>
|
||||
Kl = Kl<span class="org-type">.*</span>diag(1<span class="org-type">./</span>diag(abs(freqresp(Gl<span class="org-type">*</span>Kl, wc))));
|
||||
<span class="org-comment">% Normalization of the gain of have a loop gain of 1 at frequency wc</span>
|
||||
Kl = Kl<span class="org-type">.*</span>diag(1<span class="org-type">./</span>diag(abs(freqresp(Gl<span class="org-type">*</span>Kl, wc))));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org3dd0142" class="figure">
|
||||
<div id="org3b106c4" class="figure">
|
||||
<p><img src="figs/cascade_hac_joint_loop_gain.png" alt="cascade_hac_joint_loop_gain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Loop Gain for the High Autority Control in the joint space (<a href="./figs/cascade_hac_joint_loop_gain.png">png</a>, <a href="./figs/cascade_hac_joint_loop_gain.pdf">pdf</a>)</p>
|
||||
@ -340,32 +344,32 @@ Kl = Kl<span class="org-type">.*</span>diag(1<span class="org-type">./</span>dia
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org58f9f32" class="outline-2">
|
||||
<h2 id="org58f9f32"><span class="section-number-2">4</span> Primary Controller in the task space - \(\bm{K}_\mathcal{X}\)</h2>
|
||||
<div id="outline-container-org11a22c2" class="outline-2">
|
||||
<h2 id="org11a22c2"><span class="section-number-2">4</span> Primary Controller in the task space - \(\bm{K}_\mathcal{X}\)</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
<a id="orgdd883a0"></a>
|
||||
<a id="org20bc645"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org82ca884" class="outline-3">
|
||||
<h3 id="org82ca884"><span class="section-number-3">4.1</span> Identification of the linearized plant</h3>
|
||||
<div id="outline-container-orgfc45f6f" class="outline-3">
|
||||
<h3 id="orgfc45f6f"><span class="section-number-3">4.1</span> Identification of the linearized plant</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
We know identify the dynamics between \(\bm{r}_{\mathcal{X}_n}\) and \(\bm{r}_\mathcal{X}\).
|
||||
</p>
|
||||
<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>;
|
||||
<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/Cascade-HAC-LAC/Kp'</span>], 1, <span class="org-string">'input'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
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">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Controller/Cascade-HAC-LAC/Kp'</span>], 1, <span class="org-string">'input'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
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>
|
||||
Gx = linearize(mdl, io, 0);
|
||||
Gx.InputName = {<span class="org-string">'rL1'</span>, <span class="org-string">'rL2'</span>, <span class="org-string">'rL3'</span>, <span class="org-string">'rL4'</span>, <span class="org-string">'rL5'</span>, <span class="org-string">'rL6'</span>};
|
||||
Gx.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>};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
Gx = linearize(mdl, io, 0);
|
||||
Gx.InputName = {<span class="org-string">'rL1'</span>, <span class="org-string">'rL2'</span>, <span class="org-string">'rL3'</span>, <span class="org-string">'rL4'</span>, <span class="org-string">'rL5'</span>, <span class="org-string">'rL6'</span>};
|
||||
Gx.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>
|
||||
|
||||
@ -373,19 +377,19 @@ Gx.OutputName = {<span class="org-string">'Ex'</span>, <span class="org-string">
|
||||
As before, we take the minimum realization.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">isstable(Gx)
|
||||
Gx = minreal(Gx);
|
||||
isstable(Gx)
|
||||
<pre class="src src-matlab"> isstable(Gx)
|
||||
Gx = minreal(Gx);
|
||||
isstable(Gx)
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6f5b22e" class="outline-3">
|
||||
<h3 id="org6f5b22e"><span class="section-number-3">4.2</span> Obtained Plant</h3>
|
||||
<div id="outline-container-org170c73f" class="outline-3">
|
||||
<h3 id="org170c73f"><span class="section-number-3">4.2</span> Obtained Plant</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
|
||||
<div id="orge364e46" class="figure">
|
||||
<div id="org9c2e85a" class="figure">
|
||||
<p><img src="figs/cascade_primary_plant.png" alt="cascade_primary_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Plant for the Primary Controller (<a href="./figs/cascade_primary_plant.png">png</a>, <a href="./figs/cascade_primary_plant.pdf">pdf</a>)</p>
|
||||
@ -393,23 +397,23 @@ isstable(Gx)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org839cdb3" class="outline-3">
|
||||
<h3 id="org839cdb3"><span class="section-number-3">4.3</span> Controller Design</h3>
|
||||
<div id="outline-container-orge97b630" class="outline-3">
|
||||
<h3 id="orge97b630"><span class="section-number-3">4.3</span> Controller Design</h3>
|
||||
<div class="outline-text-3" id="text-4-3">
|
||||
<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>10; <span class="org-comment">% Bandwidth Bandwidth [rad/s]</span>
|
||||
<pre class="src src-matlab"> wc = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>10; <span class="org-comment">% Bandwidth Bandwidth [rad/s]</span>
|
||||
|
||||
h = 2; <span class="org-comment">% Lead parameter</span>
|
||||
h = 2; <span class="org-comment">% Lead parameter</span>
|
||||
|
||||
Kp = (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> 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>5)<span class="org-type">/</span>s <span class="org-type">*</span> 1<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>20);
|
||||
Kp = (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> 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>5)<span class="org-type">/</span>s <span class="org-type">*</span> 1<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>20);
|
||||
|
||||
<span class="org-comment">% Normalization of the gain of have a loop gain of 1 at frequency wc</span>
|
||||
Kp = Kp<span class="org-type">.*</span>diag(1<span class="org-type">./</span>diag(abs(freqresp(Gx<span class="org-type">*</span>Kp, wc))));
|
||||
<span class="org-comment">% Normalization of the gain of have a loop gain of 1 at frequency wc</span>
|
||||
Kp = Kp<span class="org-type">.*</span>diag(1<span class="org-type">./</span>diag(abs(freqresp(Gx<span class="org-type">*</span>Kp, wc))));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgb9d3971" class="figure">
|
||||
<div id="org37a2534" class="figure">
|
||||
<p><img src="figs/cascade_primary_loop_gain.png" alt="cascade_primary_loop_gain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Loop Gain for the primary controller (outer loop) (<a href="./figs/cascade_primary_loop_gain.png">png</a>, <a href="./figs/cascade_primary_loop_gain.pdf">pdf</a>)</p>
|
||||
@ -418,12 +422,12 @@ Kp = Kp<span class="org-type">.*</span>diag(1<span class="org-type">./</span>dia
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3300911" class="outline-2">
|
||||
<h2 id="org3300911"><span class="section-number-2">5</span> Simulation</h2>
|
||||
<div id="outline-container-org07fbc52" class="outline-2">
|
||||
<h2 id="org07fbc52"><span class="section-number-2">5</span> Simulation</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<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">'2'</span>);
|
||||
<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">'2'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -431,58 +435,58 @@ Kp = Kp<span class="org-type">.*</span>diag(1<span class="org-type">./</span>dia
|
||||
And we simulate the system.
|
||||
</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 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">cascade_hac_lac = simout;
|
||||
save(<span class="org-string">'./mat/cascade_hac_lac.mat'</span>, <span class="org-string">'cascade_hac_lac'</span>);
|
||||
<pre class="src src-matlab"> cascade_hac_lac = simout;
|
||||
save(<span class="org-string">'./mat/cascade_hac_lac.mat'</span>, <span class="org-string">'cascade_hac_lac'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2943496" class="outline-2">
|
||||
<h2 id="org2943496"><span class="section-number-2">6</span> Results</h2>
|
||||
<div id="outline-container-org3e9cd70" class="outline-2">
|
||||
<h2 id="org3e9cd70"><span class="section-number-2">6</span> Results</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_dist'</span>);
|
||||
load(<span class="org-string">'./mat/cascade_hac_lac.mat'</span>, <span class="org-string">'cascade_hac_lac'</span>);
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_dist'</span>);
|
||||
load(<span class="org-string">'./mat/cascade_hac_lac.mat'</span>, <span class="org-string">'cascade_hac_lac'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">n_av = 4;
|
||||
han_win = hanning(ceil(length(cascade_hac_lac.Em.En.Data(<span class="org-type">:</span>,1))<span class="org-type">/</span>n_av));
|
||||
<pre class="src src-matlab"> n_av = 4;
|
||||
han_win = hanning(ceil(length(cascade_hac_lac.Em.En.Data(<span class="org-type">:</span>,1))<span class="org-type">/</span>n_av));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">t = cascade_hac_lac.Em.En.Time;
|
||||
Ts = t(2)<span class="org-type">-</span>t(1);
|
||||
<pre class="src src-matlab"> t = cascade_hac_lac.Em.En.Time;
|
||||
Ts = t(2)<span class="org-type">-</span>t(1);
|
||||
|
||||
[pxx_ol, f] = pwelch(tomo_align_dist.Em.En.Data, han_win, [], [], 1<span class="org-type">/</span>Ts);
|
||||
[pxx_ca, <span class="org-type">~</span>] = pwelch(cascade_hac_lac.Em.En.Data, han_win, [], [], 1<span class="org-type">/</span>Ts);
|
||||
[pxx_ol, f] = pwelch(tomo_align_dist.Em.En.Data, han_win, [], [], 1<span class="org-type">/</span>Ts);
|
||||
[pxx_ca, <span class="org-type">~</span>] = pwelch(cascade_hac_lac.Em.En.Data, han_win, [], [], 1<span class="org-type">/</span>Ts);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org11aa945" class="figure">
|
||||
<div id="orgb068123" class="figure">
|
||||
<p><img src="figs/cascade_hac_lac_tomography_psd.png" alt="cascade_hac_lac_tomography_psd.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>ASD of the position error (<a href="./figs/cascade_hac_lac_tomography_psd.png">png</a>, <a href="./figs/cascade_hac_lac_tomography_psd.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org845b982" class="figure">
|
||||
<div id="orgb10044c" class="figure">
|
||||
<p><img src="figs/cascade_hac_lac_tomography_cas.png" alt="cascade_hac_lac_tomography_cas.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Cumulative Amplitude Spectrum of the position error (<a href="./figs/cascade_hac_lac_tomography_cas.png">png</a>, <a href="./figs/cascade_hac_lac_tomography_cas.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org0151895" class="figure">
|
||||
<div id="orgd639abb" class="figure">
|
||||
<p><img src="figs/cascade_hac_lac_tomography.png" alt="cascade_hac_lac_tomography.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Results of the Tomography Experiment (<a href="./figs/cascade_hac_lac_tomography.png">png</a>, <a href="./figs/cascade_hac_lac_tomography.pdf">pdf</a>)</p>
|
||||
@ -492,7 +496,7 @@ Ts = t(2)<span class="org-type">-</span>t(1);
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-04-17 ven. 09:35</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,65 +1,69 @@
|
||||
<?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-04-17 ven. 09:35 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Control in the Frame of the Legs applied on the Simscape Model</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Control in the Frame of the Legs applied on the Simscape Model</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org1f22cdb">1. Decentralized Control</a>
|
||||
<li><a href="#org1a08332">1. Decentralized Control</a>
|
||||
<ul>
|
||||
<li><a href="#org01937c0">1.1. Control Schematic</a></li>
|
||||
<li><a href="#orgc9e3b66">1.2. Initialize the Simscape Model</a></li>
|
||||
<li><a href="#org42afc36">1.3. Identification of the plant</a></li>
|
||||
<li><a href="#org871560e">1.4. Plant Analysis</a></li>
|
||||
<li><a href="#org296e3de">1.5. Controller Design</a></li>
|
||||
<li><a href="#orgb7afa1e">1.6. Simulation</a></li>
|
||||
<li><a href="#orgbb1dc16">1.7. Results</a></li>
|
||||
<li><a href="#org88b6ca3">1.1. Control Schematic</a></li>
|
||||
<li><a href="#org9041934">1.2. Initialize the Simscape Model</a></li>
|
||||
<li><a href="#org78bce32">1.3. Identification of the plant</a></li>
|
||||
<li><a href="#org3a56a98">1.4. Plant Analysis</a></li>
|
||||
<li><a href="#org36df689">1.5. Controller Design</a></li>
|
||||
<li><a href="#orgac5ea1c">1.6. Simulation</a></li>
|
||||
<li><a href="#orga044079">1.7. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgfa4be92">2. HAC-LAC (IFF) Decentralized Control</a>
|
||||
<li><a href="#orgeeaa041">2. HAC-LAC (IFF) Decentralized Control</a>
|
||||
<ul>
|
||||
<li><a href="#orgbc4af09">2.1. Control Schematic</a></li>
|
||||
<li><a href="#org5ac6c37">2.2. Initialize the Simscape Model</a></li>
|
||||
<li><a href="#org0903106">2.3. Initialization</a></li>
|
||||
<li><a href="#orge739f61">2.4. Identification for IFF</a></li>
|
||||
<li><a href="#org08b6a99">2.5. Integral Force Feedback Controller</a></li>
|
||||
<li><a href="#org06b5c75">2.6. Identification of the damped plant</a></li>
|
||||
<li><a href="#org85a0730">2.7. Controller Design</a></li>
|
||||
<li><a href="#org58ffd80">2.8. Simulation</a></li>
|
||||
<li><a href="#orga01ccc6">2.9. Results</a></li>
|
||||
<li><a href="#orge42dfda">2.1. Control Schematic</a></li>
|
||||
<li><a href="#org790d1db">2.2. Initialize the Simscape Model</a></li>
|
||||
<li><a href="#org110a4e9">2.3. Initialization</a></li>
|
||||
<li><a href="#org8f68ab2">2.4. Identification for IFF</a></li>
|
||||
<li><a href="#orgbe68cd0">2.5. Integral Force Feedback Controller</a></li>
|
||||
<li><a href="#orgca29231">2.6. Identification of the damped plant</a></li>
|
||||
<li><a href="#org95df29b">2.7. Controller Design</a></li>
|
||||
<li><a href="#org8b5710f">2.8. Simulation</a></li>
|
||||
<li><a href="#org791c2a5">2.9. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org21a9294">3. Conclusion</a></li>
|
||||
<li><a href="#orgf9b95b3">3. Conclusion</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -68,15 +72,15 @@
|
||||
In this document, we apply some decentralized control to the NASS and see what level of performance can be obtained.
|
||||
</p>
|
||||
|
||||
<div id="outline-container-org1f22cdb" class="outline-2">
|
||||
<h2 id="org1f22cdb"><span class="section-number-2">1</span> Decentralized Control</h2>
|
||||
<div id="outline-container-org1a08332" class="outline-2">
|
||||
<h2 id="org1a08332"><span class="section-number-2">1</span> Decentralized Control</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
</div>
|
||||
<div id="outline-container-org01937c0" class="outline-3">
|
||||
<h3 id="org01937c0"><span class="section-number-3">1.1</span> Control Schematic</h3>
|
||||
<div id="outline-container-org88b6ca3" class="outline-3">
|
||||
<h3 id="org88b6ca3"><span class="section-number-3">1.1</span> Control Schematic</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
The control architecture is shown in Figure <a href="#org5b9133f">1</a>.
|
||||
The control architecture is shown in Figure <a href="#orgd4d73cb">1</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -92,7 +96,7 @@ The signals are:
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org5b9133f" class="figure">
|
||||
<div id="orgd4d73cb" class="figure">
|
||||
<p><img src="figs/decentralized_reference_tracking_L.png" alt="decentralized_reference_tracking_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Decentralized control for reference tracking</p>
|
||||
@ -100,21 +104,21 @@ The signals are:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc9e3b66" class="outline-3">
|
||||
<h3 id="orgc9e3b66"><span class="section-number-3">1.2</span> Initialize the Simscape Model</h3>
|
||||
<div id="outline-container-org9041934" class="outline-3">
|
||||
<h3 id="org9041934"><span class="section-number-3">1.2</span> Initialize the Simscape Model</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<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 class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -122,8 +126,8 @@ initializeMirror();
|
||||
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>, 1);
|
||||
<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>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -131,12 +135,12 @@ initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||
We set the references that corresponds to a tomography experiment.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<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 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>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances();
|
||||
<pre class="src src-matlab"> initializeDisturbances();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -144,8 +148,8 @@ We set the references that corresponds to a tomography experiment.
|
||||
Open Loop.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'ref-track-L'</span>);
|
||||
Kl = tf(zeros(6));
|
||||
<pre class="src src-matlab"> initializeController(<span class="org-string">'type'</span>, <span class="org-string">'ref-track-L'</span>);
|
||||
Kl = tf(zeros(6));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -153,7 +157,7 @@ Kl = tf(zeros(6));
|
||||
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">true</span>);
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -161,41 +165,41 @@ And we put some gravity.
|
||||
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 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-org42afc36" class="outline-3">
|
||||
<h3 id="org42afc36"><span class="section-number-3">1.3</span> Identification of the plant</h3>
|
||||
<div id="outline-container-org78bce32" class="outline-3">
|
||||
<h3 id="org78bce32"><span class="section-number-3">1.3</span> Identification of the plant</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
Let’s identify the transfer function from \(\bm{\tau}\) to \(\bm{\mathcal{L}}\).
|
||||
</p>
|
||||
<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>;
|
||||
<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">'/Controller/Reference-Tracking-L/Sum'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Leg length error</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">'/Controller/Reference-Tracking-L/Sum'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Leg length error</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">'El1'</span>, <span class="org-string">'El2'</span>, <span class="org-string">'El3'</span>, <span class="org-string">'El4'</span>, <span class="org-string">'El5'</span>, <span class="org-string">'El6'</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">'El1'</span>, <span class="org-string">'El2'</span>, <span class="org-string">'El3'</span>, <span class="org-string">'El4'</span>, <span class="org-string">'El5'</span>, <span class="org-string">'El6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org871560e" class="outline-3">
|
||||
<h3 id="org871560e"><span class="section-number-3">1.4</span> Plant Analysis</h3>
|
||||
<div id="outline-container-org3a56a98" class="outline-3">
|
||||
<h3 id="org3a56a98"><span class="section-number-3">1.4</span> Plant Analysis</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<p>
|
||||
The diagonal and off-diagonal terms of the plant are shown in Figure <a href="#org68ea839">2</a>.
|
||||
The diagonal and off-diagonal terms of the plant are shown in Figure <a href="#orgbc5977b">2</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -207,7 +211,7 @@ We can see that:
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org68ea839" class="figure">
|
||||
<div id="orgbc5977b" class="figure">
|
||||
<p><img src="figs/decentralized_control_plant_L.png" alt="decentralized_control_plant_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Transfer Functions from forces applied in each actuator \(\tau_i\) to the relative motion of each leg \(d\mathcal{L}_i\) (<a href="./figs/decentralized_control_plant_L.png">png</a>, <a href="./figs/decentralized_control_plant_L.pdf">pdf</a>)</p>
|
||||
@ -215,8 +219,8 @@ We can see that:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org296e3de" class="outline-3">
|
||||
<h3 id="org296e3de"><span class="section-number-3">1.5</span> Controller Design</h3>
|
||||
<div id="outline-container-org36df689" class="outline-3">
|
||||
<h3 id="org36df689"><span class="section-number-3">1.5</span> Controller Design</h3>
|
||||
<div class="outline-text-3" id="text-1-5">
|
||||
<p>
|
||||
The controller consists of:
|
||||
@ -229,24 +233,24 @@ The controller consists of:
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The obtained loop gains corresponding to the diagonal elements are shown in Figure <a href="#org3bd29d4">3</a>.
|
||||
The obtained loop gains corresponding to the diagonal elements are shown in Figure <a href="#org0e9c3e8">3</a>.
|
||||
</p>
|
||||
|
||||
<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>20;
|
||||
h = 1.5;
|
||||
<pre class="src src-matlab"> wc = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>20;
|
||||
h = 1.5;
|
||||
|
||||
Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(G, wc)))) <span class="org-type">*</span> ...
|
||||
wc<span class="org-type">/</span>s <span class="org-type">*</span> ...<span class="org-comment"> % Pure Integrator</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> ...<span class="org-comment"> % Integrator up to wc/2</span>
|
||||
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> ...<span class="org-comment"> % Lead</span>
|
||||
1<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>3<span class="org-type">/</span>wc) <span class="org-type">*</span> ...<span class="org-comment"> % Low pass Filter</span>
|
||||
1<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>3<span class="org-type">/</span>wc);
|
||||
Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(G, wc)))) <span class="org-type">*</span> ...
|
||||
wc<span class="org-type">/</span>s <span class="org-type">*</span> ...<span class="org-comment"> % Pure Integrator</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> ...<span class="org-comment"> % Integrator up to wc/2</span>
|
||||
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> ...<span class="org-comment"> % Lead</span>
|
||||
1<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>3<span class="org-type">/</span>wc) <span class="org-type">*</span> ...<span class="org-comment"> % Low pass Filter</span>
|
||||
1<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>3<span class="org-type">/</span>wc);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org3bd29d4" class="figure">
|
||||
<div id="org0e9c3e8" class="figure">
|
||||
<p><img src="figs/decentralized_control_L_loop_gain.png" alt="decentralized_control_L_loop_gain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Obtained Loop Gain (<a href="./figs/decentralized_control_L_loop_gain.png">png</a>, <a href="./figs/decentralized_control_L_loop_gain.pdf">pdf</a>)</p>
|
||||
@ -256,54 +260,54 @@ Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(G, wc)))) <span cla
|
||||
We add a minus sign to the controller as it is not included in the Simscape model.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kl = <span class="org-type">-</span>Kl;
|
||||
<pre class="src src-matlab"> Kl = <span class="org-type">-</span>Kl;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb7afa1e" class="outline-3">
|
||||
<h3 id="orgb7afa1e"><span class="section-number-3">1.6</span> Simulation</h3>
|
||||
<div id="outline-container-orgac5ea1c" class="outline-3">
|
||||
<h3 id="orgac5ea1c"><span class="section-number-3">1.6</span> Simulation</h3>
|
||||
<div class="outline-text-3" id="text-1-6">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'ref-track-L'</span>);
|
||||
<pre class="src src-matlab"> initializeController(<span class="org-string">'type'</span>, <span class="org-string">'ref-track-L'</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">'2'</span>);
|
||||
<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">'2'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<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 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">decentralized_L = simout;
|
||||
save(<span class="org-string">'./mat/tomo_exp_decentalized.mat'</span>, <span class="org-string">'decentralized_L'</span>, <span class="org-string">'-append'</span>);
|
||||
<pre class="src src-matlab"> decentralized_L = simout;
|
||||
save(<span class="org-string">'./mat/tomo_exp_decentalized.mat'</span>, <span class="org-string">'decentralized_L'</span>, <span class="org-string">'-append'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbb1dc16" class="outline-3">
|
||||
<h3 id="orgbb1dc16"><span class="section-number-3">1.7</span> Results</h3>
|
||||
<div id="outline-container-orga044079" class="outline-3">
|
||||
<h3 id="orga044079"><span class="section-number-3">1.7</span> Results</h3>
|
||||
<div class="outline-text-3" id="text-1-7">
|
||||
<p>
|
||||
The reference path and the position of the mobile platform are shown in Figure <a href="#org247b3a0">4</a>.
|
||||
The reference path and the position of the mobile platform are shown in Figure <a href="#org5b1621d">4</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_dist'</span>);
|
||||
load(<span class="org-string">'./mat/tomo_exp_decentalized.mat'</span>, <span class="org-string">'decentralized_L'</span>);
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_dist'</span>);
|
||||
load(<span class="org-string">'./mat/tomo_exp_decentalized.mat'</span>, <span class="org-string">'decentralized_L'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org247b3a0" class="figure">
|
||||
<div id="org5b1621d" class="figure">
|
||||
<p><img src="figs/decentralized_L_position_errors.png" alt="decentralized_L_position_errors.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Position Errors when using the Decentralized Control Architecture (<a href="./figs/decentralized_L_position_errors.png">png</a>, <a href="./figs/decentralized_L_position_errors.pdf">pdf</a>)</p>
|
||||
@ -312,19 +316,19 @@ load(<span class="org-string">'./mat/tomo_exp_decentalized.mat'</span>, <span cl
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfa4be92" class="outline-2">
|
||||
<h2 id="orgfa4be92"><span class="section-number-2">2</span> HAC-LAC (IFF) Decentralized Control</h2>
|
||||
<div id="outline-container-orgeeaa041" class="outline-2">
|
||||
<h2 id="orgeeaa041"><span class="section-number-2">2</span> HAC-LAC (IFF) Decentralized Control</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
We here add an Active Damping Loop (Integral Force Feedback) prior to using the Decentralized control architecture using \(\bm{\mathcal{L}}\).
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbc4af09" class="outline-3">
|
||||
<h3 id="orgbc4af09"><span class="section-number-3">2.1</span> Control Schematic</h3>
|
||||
<div id="outline-container-orge42dfda" class="outline-3">
|
||||
<h3 id="orge42dfda"><span class="section-number-3">2.1</span> Control Schematic</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
The control architecture is shown in Figure <a href="#org5b9133f">1</a>.
|
||||
The control architecture is shown in Figure <a href="#orgd4d73cb">1</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -340,7 +344,7 @@ The signals are:
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org657383b" class="figure">
|
||||
<div id="org9b33c60" class="figure">
|
||||
<p><img src="figs/decentralized_reference_tracking_L.png" alt="decentralized_reference_tracking_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Decentralized control for reference tracking</p>
|
||||
@ -348,21 +352,21 @@ The signals are:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5ac6c37" class="outline-3">
|
||||
<h3 id="org5ac6c37"><span class="section-number-3">2.2</span> Initialize the Simscape Model</h3>
|
||||
<div id="outline-container-org790d1db" class="outline-3">
|
||||
<h3 id="org790d1db"><span class="section-number-3">2.2</span> Initialize the Simscape Model</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<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 class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -370,8 +374,8 @@ initializeMirror();
|
||||
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>, 1);
|
||||
<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>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -379,12 +383,12 @@ initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||
We set the references that corresponds to a tomography experiment.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<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 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>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances();
|
||||
<pre class="src src-matlab"> initializeDisturbances();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -392,8 +396,8 @@ We set the references that corresponds to a tomography experiment.
|
||||
Open Loop.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'ref-track-L'</span>);
|
||||
Kl = tf(zeros(6));
|
||||
<pre class="src src-matlab"> initializeController(<span class="org-string">'type'</span>, <span class="org-string">'ref-track-L'</span>);
|
||||
Kl = tf(zeros(6));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -401,7 +405,7 @@ Kl = tf(zeros(6));
|
||||
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">true</span>);
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -409,149 +413,149 @@ And we put some gravity.
|
||||
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 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-org0903106" class="outline-3">
|
||||
<h3 id="org0903106"><span class="section-number-3">2.3</span> Initialization</h3>
|
||||
<div id="outline-container-org110a4e9" class="outline-3">
|
||||
<h3 id="org110a4e9"><span class="section-number-3">2.3</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'ref-track-iff-L'</span>);
|
||||
K_iff = tf(zeros(6));
|
||||
Kl = tf(zeros(6));
|
||||
<pre class="src src-matlab"> initializeController(<span class="org-string">'type'</span>, <span class="org-string">'ref-track-iff-L'</span>);
|
||||
K_iff = tf(zeros(6));
|
||||
Kl = tf(zeros(6));
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge739f61" class="outline-3">
|
||||
<h3 id="orge739f61"><span class="section-number-3">2.4</span> Identification for IFF</h3>
|
||||
<div id="outline-container-org8f68ab2" class="outline-3">
|
||||
<h3 id="org8f68ab2"><span class="section-number-3">2.4</span> Identification for IFF</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<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>;
|
||||
<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">'/Micro-Station'</span>], 3, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'Fnlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Force Sensors</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">'/Micro-Station'</span>], 3, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'Fnlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Force Sensors</span>
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G_iff = linearize(mdl, io, 0);
|
||||
G_iff.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_iff.OutputName = {<span class="org-string">'Fnlm1'</span>, <span class="org-string">'Fnlm2'</span>, <span class="org-string">'Fnlm3'</span>, <span class="org-string">'Fnlm4'</span>, <span class="org-string">'Fnlm5'</span>, <span class="org-string">'Fnlm6'</span>};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G_iff = linearize(mdl, io, 0);
|
||||
G_iff.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_iff.OutputName = {<span class="org-string">'Fnlm1'</span>, <span class="org-string">'Fnlm2'</span>, <span class="org-string">'Fnlm3'</span>, <span class="org-string">'Fnlm4'</span>, <span class="org-string">'Fnlm5'</span>, <span class="org-string">'Fnlm6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org08b6a99" class="outline-3">
|
||||
<h3 id="org08b6a99"><span class="section-number-3">2.5</span> Integral Force Feedback Controller</h3>
|
||||
<div id="outline-container-orgbe68cd0" class="outline-3">
|
||||
<h3 id="orgbe68cd0"><span class="section-number-3">2.5</span> Integral Force Feedback Controller</h3>
|
||||
<div class="outline-text-3" id="text-2-5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>50;
|
||||
K_iff = <span class="org-type">-</span>5000<span class="org-type">/</span>s <span class="org-type">*</span> (s<span class="org-type">/</span>w0)<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>w0) <span class="org-type">*</span> eye(6);
|
||||
<pre class="src src-matlab"> w0 = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>50;
|
||||
K_iff = <span class="org-type">-</span>5000<span class="org-type">/</span>s <span class="org-type">*</span> (s<span class="org-type">/</span>w0)<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>w0) <span class="org-type">*</span> eye(6);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">K_iff = <span class="org-type">-</span>K_iff;
|
||||
<pre class="src src-matlab"> K_iff = <span class="org-type">-</span>K_iff;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org06b5c75" class="outline-3">
|
||||
<h3 id="org06b5c75"><span class="section-number-3">2.6</span> Identification of the damped plant</h3>
|
||||
<div id="outline-container-orgca29231" class="outline-3">
|
||||
<h3 id="orgca29231"><span class="section-number-3">2.6</span> Identification of the damped plant</h3>
|
||||
<div class="outline-text-3" id="text-2-6">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink DehaezeFile</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink DehaezeFile</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">'/Controller/Reference-Tracking-IFF-L/Sum'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Leg length error</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">'/Controller/Reference-Tracking-IFF-L/Sum'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Leg length error</span>
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
Gd = linearize(mdl, io, 0);
|
||||
Gd.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>};
|
||||
Gd.OutputName = {<span class="org-string">'El1'</span>, <span class="org-string">'El2'</span>, <span class="org-string">'El3'</span>, <span class="org-string">'El4'</span>, <span class="org-string">'El5'</span>, <span class="org-string">'El6'</span>};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
Gd = linearize(mdl, io, 0);
|
||||
Gd.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>};
|
||||
Gd.OutputName = {<span class="org-string">'El1'</span>, <span class="org-string">'El2'</span>, <span class="org-string">'El3'</span>, <span class="org-string">'El4'</span>, <span class="org-string">'El5'</span>, <span class="org-string">'El6'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org85a0730" class="outline-3">
|
||||
<h3 id="org85a0730"><span class="section-number-3">2.7</span> Controller Design</h3>
|
||||
<div id="outline-container-org95df29b" class="outline-3">
|
||||
<h3 id="org95df29b"><span class="section-number-3">2.7</span> Controller Design</h3>
|
||||
<div class="outline-text-3" id="text-2-7">
|
||||
<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>300;
|
||||
h = 3;
|
||||
<pre class="src src-matlab"> wc = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>300;
|
||||
h = 3;
|
||||
|
||||
Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(Gd, wc)))) <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>20) <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>20))) <span class="org-type">*</span> ...<span class="org-comment"> % Pure Integrator</span>
|
||||
((s<span class="org-type">/</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>50) <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>50))) <span class="org-type">*</span> ...<span class="org-comment"> % Integrator up to wc/2</span>
|
||||
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> ...
|
||||
1<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>(2<span class="org-type">*</span>wc)) <span class="org-type">*</span> ...
|
||||
1<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>(3<span class="org-type">*</span>wc));
|
||||
Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(Gd, wc)))) <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>20) <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>20))) <span class="org-type">*</span> ...<span class="org-comment"> % Pure Integrator</span>
|
||||
((s<span class="org-type">/</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>50) <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>50))) <span class="org-type">*</span> ...<span class="org-comment"> % Integrator up to wc/2</span>
|
||||
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> ...
|
||||
1<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>(2<span class="org-type">*</span>wc)) <span class="org-type">*</span> ...
|
||||
1<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>(3<span class="org-type">*</span>wc));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">isstable(feedback(Gd<span class="org-type">*</span>Kl, eye(6), <span class="org-type">-</span>1))
|
||||
<pre class="src src-matlab"> isstable(feedback(Gd<span class="org-type">*</span>Kl, eye(6), <span class="org-type">-</span>1))
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kl = <span class="org-type">-</span>Kl;
|
||||
<pre class="src src-matlab"> Kl = <span class="org-type">-</span>Kl;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-org58ffd80" class="outline-3">
|
||||
<h3 id="org58ffd80"><span class="section-number-3">2.8</span> Simulation</h3>
|
||||
<div id="outline-container-org8b5710f" class="outline-3">
|
||||
<h3 id="org8b5710f"><span class="section-number-3">2.8</span> Simulation</h3>
|
||||
<div class="outline-text-3" id="text-2-8">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'ref-track-iff-L'</span>);
|
||||
<pre class="src src-matlab"> initializeController(<span class="org-string">'type'</span>, <span class="org-string">'ref-track-iff-L'</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">'2'</span>);
|
||||
<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">'2'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<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 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">decentralized_iff_L = simout;
|
||||
save(<span class="org-string">'./mat/tomo_exp_decentalized.mat'</span>, <span class="org-string">'decentralized_iff_L'</span>, <span class="org-string">'-append'</span>);
|
||||
<pre class="src src-matlab"> decentralized_iff_L = simout;
|
||||
save(<span class="org-string">'./mat/tomo_exp_decentalized.mat'</span>, <span class="org-string">'decentralized_iff_L'</span>, <span class="org-string">'-append'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga01ccc6" class="outline-3">
|
||||
<h3 id="orga01ccc6"><span class="section-number-3">2.9</span> Results</h3>
|
||||
<div id="outline-container-org791c2a5" class="outline-3">
|
||||
<h3 id="org791c2a5"><span class="section-number-3">2.9</span> Results</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org21a9294" class="outline-2">
|
||||
<h2 id="org21a9294"><span class="section-number-2">3</span> Conclusion</h2>
|
||||
<div id="outline-container-orgf9b95b3" class="outline-2">
|
||||
<h2 id="orgf9b95b3"><span class="section-number-2">3</span> Conclusion</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-04-17 ven. 09:35</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,34 +1,38 @@
|
||||
<?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-04-17 ven. 09:35 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Force Control applied on the Simscape Model</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Force Control applied on the Simscape Model</h1>
|
||||
<p>
|
||||
@ -47,20 +51,20 @@ Ideas:
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="figure">
|
||||
<div id="org517d735" class="figure">
|
||||
<p><img src="figs/control_cascade_force_F.png" alt="control_cascade_force_F.png" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="figure">
|
||||
<div id="org05e43e1" class="figure">
|
||||
<p><img src="figs/control_cascade_force_tau.png" alt="control_cascade_force_tau.png" />
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-04-17 ven. 09:35</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,58 +1,62 @@
|
||||
<?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-05-05 mar. 10:34 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>HAC-LAC applied on the Simscape Model</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">HAC-LAC applied on the Simscape Model</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org1fe8594">1. Initialization</a></li>
|
||||
<li><a href="#orgfd54447">2. Low Authority Control - Direct Velocity Feedback \(\bm{K}_\mathcal{L}\)</a>
|
||||
<li><a href="#org689cb19">1. Initialization</a></li>
|
||||
<li><a href="#org24d1d7f">2. Low Authority Control - Direct Velocity Feedback \(\bm{K}_\mathcal{L}\)</a>
|
||||
<ul>
|
||||
<li><a href="#orga860160">2.1. Identification</a></li>
|
||||
<li><a href="#org7a2c131">2.2. Plant</a></li>
|
||||
<li><a href="#org46eb79b">2.3. Root Locus</a></li>
|
||||
<li><a href="#orgafbd7d0">2.4. Controller and Loop Gain</a></li>
|
||||
<li><a href="#org68cbbe7">2.1. Identification</a></li>
|
||||
<li><a href="#org7c1c629">2.2. Plant</a></li>
|
||||
<li><a href="#org719e252">2.3. Root Locus</a></li>
|
||||
<li><a href="#org2c42b90">2.4. Controller and Loop Gain</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org73445c2">3. Uncertainty Improvements thanks to the LAC control</a></li>
|
||||
<li><a href="#orged12a17">4. High Authority Control - \(\bm{K}_\mathcal{X}\)</a>
|
||||
<li><a href="#org195a29c">3. Uncertainty Improvements thanks to the LAC control</a></li>
|
||||
<li><a href="#org81738ac">4. High Authority Control - \(\bm{K}_\mathcal{X}\)</a>
|
||||
<ul>
|
||||
<li><a href="#orgc22e2f2">4.1. Identification of the damped plant</a></li>
|
||||
<li><a href="#org6bca8e2">4.2. Controller Design</a></li>
|
||||
<li><a href="#org94cb2c9">4.1. Identification of the damped plant</a></li>
|
||||
<li><a href="#org2a269d5">4.2. Controller Design</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgb7ffa65">5. Simulation</a></li>
|
||||
<li><a href="#org448f335">6. Results</a></li>
|
||||
<li><a href="#org1171960">5. Simulation</a></li>
|
||||
<li><a href="#orgad3e1c7">6. Results</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -66,27 +70,27 @@ It is then compare to the wanted position of the Sample \(\bm{r}_\mathcal{X}\) i
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgb987aa6" class="figure">
|
||||
<div id="org270f668" class="figure">
|
||||
<p><img src="figs/hac_lac_control_schematic.png" alt="hac_lac_control_schematic.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>HAC-LAC Control Architecture used for the Control of the NASS</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1fe8594" class="outline-2">
|
||||
<h2 id="org1fe8594"><span class="section-number-2">1</span> Initialization</h2>
|
||||
<div id="outline-container-org689cb19" class="outline-2">
|
||||
<h2 id="org689cb19"><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>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -94,8 +98,8 @@ initializeMirror();
|
||||
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('actuator', 'piezo');
|
||||
initializeSample('mass', 1);
|
||||
<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>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -103,12 +107,12 @@ initializeSample('mass', 1);
|
||||
We set the references that corresponds to a tomography experiment.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences('Rz_type', 'rotating', 'Rz_period', 1);
|
||||
<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>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances();
|
||||
<pre class="src src-matlab"> initializeDisturbances();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -116,7 +120,7 @@ We set the references that corresponds to a tomography experiment.
|
||||
Open Loop.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController('type', 'open-loop');
|
||||
<pre class="src src-matlab"> initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -124,7 +128,7 @@ Open Loop.
|
||||
And we put some gravity.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration('gravity', true);
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -132,14 +136,14 @@ And we put some gravity.
|
||||
We log the signals.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeLoggingConfiguration('log', 'all');
|
||||
<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-orgfd54447" class="outline-2">
|
||||
<h2 id="orgfd54447"><span class="section-number-2">2</span> Low Authority Control - Direct Velocity Feedback \(\bm{K}_\mathcal{L}\)</h2>
|
||||
<div id="outline-container-org24d1d7f" class="outline-2">
|
||||
<h2 id="org24d1d7f"><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.
|
||||
@ -150,106 +154,106 @@ The design of the associated decentralized controller is explained in <a href="c
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga860160" class="outline-3">
|
||||
<h3 id="orga860160"><span class="section-number-3">2.1</span> Identification</h3>
|
||||
<div id="outline-container-org68cbbe7" class="outline-3">
|
||||
<h3 id="org68cbbe7"><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">%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs
|
||||
io(io_i) = linio([mdl, '/Micro-Station'], 3, 'openoutput', [], 'Dnlm'); io_i = io_i + 1; % Relative Motion Outputs
|
||||
<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">'/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>
|
||||
|
||||
%% Run the linearization
|
||||
G_dvf = linearize(mdl, io, 0);
|
||||
G_dvf.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
|
||||
G_dvf.OutputName = {'Dnlm1', 'Dnlm2', 'Dnlm3', 'Dnlm4', 'Dnlm5', 'Dnlm6'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></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-org7a2c131" class="outline-3">
|
||||
<h3 id="org7a2c131"><span class="section-number-3">2.2</span> Plant</h3>
|
||||
<div id="outline-container-org7c1c629" class="outline-3">
|
||||
<h3 id="org7c1c629"><span class="section-number-3">2.2</span> Plant</h3>
|
||||
</div>
|
||||
<div id="outline-container-org46eb79b" class="outline-3">
|
||||
<h3 id="org46eb79b"><span class="section-number-3">2.3</span> Root Locus</h3>
|
||||
<div id="outline-container-org719e252" class="outline-3">
|
||||
<h3 id="org719e252"><span class="section-number-3">2.3</span> Root Locus</h3>
|
||||
</div>
|
||||
<div id="outline-container-orgafbd7d0" class="outline-3">
|
||||
<h3 id="orgafbd7d0"><span class="section-number-3">2.4</span> Controller and Loop Gain</h3>
|
||||
<div id="outline-container-org2c42b90" class="outline-3">
|
||||
<h3 id="org2c42b90"><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*15000/(1 + s/2/pi/10000);
|
||||
<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 = -K_dvf*eye(6);
|
||||
<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-org73445c2" class="outline-2">
|
||||
<h2 id="org73445c2"><span class="section-number-2">3</span> Uncertainty Improvements thanks to the LAC control</h2>
|
||||
<div id="outline-container-org195a29c" class="outline-2">
|
||||
<h2 id="org195a29c"><span class="section-number-2">3</span> Uncertainty Improvements thanks to the LAC control</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">K_dvf_backup = K_dvf;
|
||||
initializeController('type', 'hac-dvf');
|
||||
<pre class="src src-matlab"> K_dvf_backup = K_dvf;
|
||||
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">masses = [1, 10, 50]; % [kg]
|
||||
<pre class="src src-matlab"> masses = [1, 10, 50]; <span class="org-comment">% [kg]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Controller'], 1, 'input'); io_i = io_i + 1; % Actuator Inputs
|
||||
io(io_i) = linio([mdl, '/Tracking Error'], 1, 'output', [], 'En'); io_i = io_i + 1; % Position Errror
|
||||
<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>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orged12a17" class="outline-2">
|
||||
<h2 id="orged12a17"><span class="section-number-2">4</span> High Authority Control - \(\bm{K}_\mathcal{X}\)</h2>
|
||||
<div id="outline-container-org81738ac" class="outline-2">
|
||||
<h2 id="org81738ac"><span class="section-number-2">4</span> High Authority Control - \(\bm{K}_\mathcal{X}\)</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
</div>
|
||||
<div id="outline-container-orgc22e2f2" class="outline-3">
|
||||
<h3 id="orgc22e2f2"><span class="section-number-3">4.1</span> Identification of the damped plant</h3>
|
||||
<div id="outline-container-org94cb2c9" class="outline-3">
|
||||
<h3 id="org94cb2c9"><span class="section-number-3">4.1</span> Identification of the damped plant</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kx = tf(zeros(6));
|
||||
<pre class="src src-matlab"> Kx = tf(zeros(6));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController('type', 'hac-dvf');
|
||||
<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">%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Controller'], 1, 'input'); io_i = io_i + 1; % Actuator Inputs
|
||||
io(io_i) = linio([mdl, '/Tracking Error'], 1, 'output', [], 'En'); io_i = io_i + 1; % Position Errror
|
||||
<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>
|
||||
|
||||
%% Run the linearization
|
||||
G = linearize(mdl, io, 0);
|
||||
G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
|
||||
G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'};
|
||||
<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>
|
||||
|
||||
@ -257,17 +261,17 @@ G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'};
|
||||
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('mat/stages.mat', 'nano_hexapod');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'mat/stages.mat'</span>, <span class="org-string">'nano_hexapod'</span>);
|
||||
|
||||
Gx = -G*inv(nano_hexapod.kinematics.J');
|
||||
Gx.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'};
|
||||
Gx = <span class="org-type">-</span>G<span class="org-type">*</span>inv(nano_hexapod.kinematics.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-org6bca8e2" class="outline-3">
|
||||
<h3 id="org6bca8e2"><span class="section-number-3">4.2</span> Controller Design</h3>
|
||||
<div id="outline-container-org2a269d5" class="outline-3">
|
||||
<h3 id="org2a269d5"><span class="section-number-3">4.2</span> Controller Design</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<p>
|
||||
The controller consists of:
|
||||
@ -280,41 +284,41 @@ The controller consists of:
|
||||
</ul>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">wc = 2*pi*15; % Bandwidth Bandwidth [rad/s]
|
||||
<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; % Lead parameter
|
||||
h = 1.5; <span class="org-comment">% Lead parameter</span>
|
||||
|
||||
Kx = (1/h) * (1 + s/wc*h)/(1 + s/wc/h) * wc/s * ((s/wc*2 + 1)/(s/wc*2)) * (1/(1 + s/wc/2));
|
||||
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));
|
||||
|
||||
% Normalization of the gain of have a loop gain of 1 at frequency wc
|
||||
Kx = Kx.*diag(1./diag(abs(freqresp(Gx*Kx, wc))));
|
||||
<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">isstable(feedback(Gx*Kx, eye(6), -1))
|
||||
<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 class="org-src-container">
|
||||
<pre class="src src-matlab">Kx = inv(nano_hexapod.kinematics.J')*Kx;
|
||||
<pre class="src src-matlab"> Kx = inv(nano_hexapod.kinematics.J<span class="org-type">'</span>)<span class="org-type">*</span>Kx;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">isstable(feedback(G*Kx, eye(6), 1))
|
||||
<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-orgb7ffa65" class="outline-2">
|
||||
<h2 id="orgb7ffa65"><span class="section-number-2">5</span> Simulation</h2>
|
||||
<div id="outline-container-org1171960" class="outline-2">
|
||||
<h2 id="org1171960"><span class="section-number-2">5</span> Simulation</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '2');
|
||||
<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">'2'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -322,27 +326,27 @@ set_param(conf_simulink, 'StopTime', '2');
|
||||
And we simulate the system.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">sim('nass_model');
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">hac_dvf = simout;
|
||||
save('./mat/tomo_exp_hac_lac.mat', 'hac_dvf');
|
||||
<pre class="src src-matlab"> hac_dvf = simout;
|
||||
save(<span class="org-string">'./mat/tomo_exp_hac_lac.mat'</span>, <span class="org-string">'hac_dvf'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org448f335" class="outline-2">
|
||||
<h2 id="org448f335"><span class="section-number-2">6</span> Results</h2>
|
||||
<div id="outline-container-orgad3e1c7" class="outline-2">
|
||||
<h2 id="orgad3e1c7"><span class="section-number-2">6</span> Results</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<p>
|
||||
Let’s load the simulation when no control is applied.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('./mat/experiment_tomography.mat', 'tomo_align_dist');
|
||||
load('./mat/tomo_exp_hac_lac.mat', 'hac_dvf');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_dist'</span>);
|
||||
load(<span class="org-string">'./mat/tomo_exp_hac_lac.mat'</span>, <span class="org-string">'hac_dvf'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -350,7 +354,7 @@ load('./mat/tomo_exp_hac_lac.mat', 'hac_dvf');
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-05 mar. 10:34</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,78 +1,82 @@
|
||||
<?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-05-05 mar. 10:34 -->
|
||||
<!-- 2021-02-20 sam. 23:09 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Decentralize control to add virtual mass</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Decentralize control to add virtual mass</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org982b263">1. Initialization</a></li>
|
||||
<li><a href="#org35a3822">2. Identification</a></li>
|
||||
<li><a href="#orgd6fc719">3. Adding Virtual Mass in the Leg’s Space</a>
|
||||
<li><a href="#org48b52bd">1. Initialization</a></li>
|
||||
<li><a href="#org157dc5d">2. Identification</a></li>
|
||||
<li><a href="#orgd072386">3. Adding Virtual Mass in the Leg’s Space</a>
|
||||
<ul>
|
||||
<li><a href="#orga27c9a0">3.1. Plant</a></li>
|
||||
<li><a href="#orgcbce41a">3.2. Controller Design</a></li>
|
||||
<li><a href="#orgca1f525">3.3. Identification of the Primary Plant</a></li>
|
||||
<li><a href="#org147b003">3.1. Plant</a></li>
|
||||
<li><a href="#orgacd4421">3.2. Controller Design</a></li>
|
||||
<li><a href="#org4c460cf">3.3. Identification of the Primary Plant</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgc9131d0">4. Adding Virtual Mass in the Task Space</a>
|
||||
<li><a href="#org3c74924">4. Adding Virtual Mass in the Task Space</a>
|
||||
<ul>
|
||||
<li><a href="#orgdbe6a25">4.1. Plant</a></li>
|
||||
<li><a href="#org571922f">4.2. Controller Design</a></li>
|
||||
<li><a href="#org4960701">4.3. Identification of the Primary Plant</a></li>
|
||||
<li><a href="#org3b61568">4.1. Plant</a></li>
|
||||
<li><a href="#orgf37b1c0">4.2. Controller Design</a></li>
|
||||
<li><a href="#orgcd22c9f">4.3. Identification of the Primary Plant</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org982b263" class="outline-2">
|
||||
<h2 id="org982b263"><span class="section-number-2">1</span> Initialization</h2>
|
||||
<div id="outline-container-org48b52bd" class="outline-2">
|
||||
<h2 id="org48b52bd"><span class="section-number-2">1</span> Initialization</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
|
||||
initializeSimscapeConfiguration();
|
||||
initializeDisturbances('enable', false);
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
initializeSimscapeConfiguration();
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||
|
||||
initializeController('type', 'hac-dvf');
|
||||
initializeController(<span class="org-string">'type'</span>, <span class="org-string">'hac-dvf'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -80,7 +84,7 @@ initializeController('type', 'hac-dvf');
|
||||
The nano-hexapod has the following leg’s stiffness and damping.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeNanoHexapod('k', 1e5, 'c', 2e2);
|
||||
<pre class="src src-matlab"> initializeNanoHexapod(<span class="org-string">'k'</span>, 1e5, <span class="org-string">'c'</span>, 2e2);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -88,20 +92,20 @@ The nano-hexapod has the following leg’s stiffness and damping.
|
||||
We set the stiffness of the payload fixation:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kp = 1e8; % [N/m]
|
||||
<pre class="src src-matlab"> Kp = 1e8; <span class="org-comment">% [N/m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org35a3822" class="outline-2">
|
||||
<h2 id="org35a3822"><span class="section-number-2">2</span> Identification</h2>
|
||||
<div id="outline-container-org157dc5d" class="outline-2">
|
||||
<h2 id="org157dc5d"><span class="section-number-2">2</span> Identification</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
We identify the system for the following payload masses:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ms = [1, 10, 50];
|
||||
<pre class="src src-matlab"> Ms = [1, 10, 50];
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -111,15 +115,15 @@ Identification of the Primary plant without virtual add of mass
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgd6fc719" class="outline-2">
|
||||
<h2 id="orgd6fc719"><span class="section-number-2">3</span> Adding Virtual Mass in the Leg’s Space</h2>
|
||||
<div id="outline-container-orgd072386" class="outline-2">
|
||||
<h2 id="orgd072386"><span class="section-number-2">3</span> Adding Virtual Mass in the Leg’s Space</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
</div>
|
||||
<div id="outline-container-orga27c9a0" class="outline-3">
|
||||
<h3 id="orga27c9a0"><span class="section-number-3">3.1</span> Plant</h3>
|
||||
<div id="outline-container-org147b003" class="outline-3">
|
||||
<h3 id="org147b003"><span class="section-number-3">3.1</span> Plant</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
|
||||
<div id="org98e7ba8" class="figure">
|
||||
<div id="org74dce28" class="figure">
|
||||
<p><img src="figs/virtual_mass_plant_L.png" alt="virtual_mass_plant_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Transfer function from \(\tau_i\) to \(d\mathcal{L}_i\) for three payload masses</p>
|
||||
@ -127,16 +131,16 @@ Identification of the Primary plant without virtual add of mass
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcbce41a" class="outline-3">
|
||||
<h3 id="orgcbce41a"><span class="section-number-3">3.2</span> Controller Design</h3>
|
||||
<div id="outline-container-orgacd4421" class="outline-3">
|
||||
<h3 id="orgacd4421"><span class="section-number-3">3.2</span> Controller Design</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kdvf = 10*s^2/(1+s/2/pi/500)^2*eye(6);
|
||||
<pre class="src src-matlab"> Kdvf = 10<span class="org-type">*</span>s<span class="org-type">^</span>2<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>500)<span class="org-type">^</span>2<span class="org-type">*</span>eye(6);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgccb3b9e" class="figure">
|
||||
<div id="orgdf2df59" class="figure">
|
||||
<p><img src="figs/virtual_mass_loop_gain_L.png" alt="virtual_mass_loop_gain_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Loop Gain for the addition of virtual mass in the leg’s space</p>
|
||||
@ -144,18 +148,18 @@ Identification of the Primary plant without virtual add of mass
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgca1f525" class="outline-3">
|
||||
<h3 id="orgca1f525"><span class="section-number-3">3.3</span> Identification of the Primary Plant</h3>
|
||||
<div id="outline-container-org4c460cf" class="outline-3">
|
||||
<h3 id="org4c460cf"><span class="section-number-3">3.3</span> Identification of the Primary Plant</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
|
||||
<div id="orgd49505e" class="figure">
|
||||
<div id="org29e9333" class="figure">
|
||||
<p><img src="figs/virtual_mass_L_primary_plant_X.png" alt="virtual_mass_L_primary_plant_X.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Comparison of the transfer function from \(\mathcal{F}_{x,y,z}\) to \(\mathcal{X}_{x,y,z}\) with and without the virtual addition of mass in the leg’s space</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org2281744" class="figure">
|
||||
<div id="orgd96256a" class="figure">
|
||||
<p><img src="figs/virtual_mass_L_primary_plant_L.png" alt="virtual_mass_L_primary_plant_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Comparison of the transfer function from \(\tau_i\) to \(\mathcal{L}_{i}\) with and without the virtual addition of mass in the leg’s space</p>
|
||||
@ -164,12 +168,12 @@ Identification of the Primary plant without virtual add of mass
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc9131d0" class="outline-2">
|
||||
<h2 id="orgc9131d0"><span class="section-number-2">4</span> Adding Virtual Mass in the Task Space</h2>
|
||||
<div id="outline-container-org3c74924" class="outline-2">
|
||||
<h2 id="org3c74924"><span class="section-number-2">4</span> Adding Virtual Mass in the Task Space</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
</div>
|
||||
<div id="outline-container-orgdbe6a25" class="outline-3">
|
||||
<h3 id="orgdbe6a25"><span class="section-number-3">4.1</span> Plant</h3>
|
||||
<div id="outline-container-org3b61568" class="outline-3">
|
||||
<h3 id="org3b61568"><span class="section-number-3">4.1</span> Plant</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
Let’s look at the transfer function from \(\bm{\mathcal{F}}\) to \(d\bm{\mathcal{X}}\):
|
||||
@ -177,7 +181,7 @@ Let’s look at the transfer function from \(\bm{\mathcal{F}}\) to \(d\bm{\m
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org6488b4c" class="figure">
|
||||
<div id="orgb509352" class="figure">
|
||||
<p><img src="figs/virtual_mass_plant_X.png" alt="virtual_mass_plant_X.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Dynamics from \(\mathcal{F}_{x,y,z}\) to \(\mathcal{X}_{x,y,z}\) used for virtual mass addition in the task space</p>
|
||||
@ -185,40 +189,40 @@ Let’s look at the transfer function from \(\bm{\mathcal{F}}\) to \(d\bm{\m
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org571922f" class="outline-3">
|
||||
<h3 id="org571922f"><span class="section-number-3">4.2</span> Controller Design</h3>
|
||||
<div id="outline-container-orgf37b1c0" class="outline-3">
|
||||
<h3 id="orgf37b1c0"><span class="section-number-3">4.2</span> Controller Design</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">KmX = (s^2*1/(1+s/2/pi/500)^2*diag([1 1 50 0 0 0]));
|
||||
<pre class="src src-matlab"> KmX = (s<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>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span>500)<span class="org-type">^</span>2<span class="org-type">*</span>diag([1 1 50 0 0 0]));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgf411330" class="figure">
|
||||
<div id="org18b3b14" class="figure">
|
||||
<p><img src="figs/virtual_mass_loop_gain_X.png" alt="virtual_mass_loop_gain_X.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Loop gain for virtual mass addition in the task space</p>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kdvf = inv(nano_hexapod.kinematics.J')*KmX*inv(nano_hexapod.kinematics.J);
|
||||
<pre class="src src-matlab"> Kdvf = inv(nano_hexapod.kinematics.J<span class="org-type">'</span>)<span class="org-type">*</span>KmX<span class="org-type">*</span>inv(nano_hexapod.kinematics.J);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4960701" class="outline-3">
|
||||
<h3 id="org4960701"><span class="section-number-3">4.3</span> Identification of the Primary Plant</h3>
|
||||
<div id="outline-container-orgcd22c9f" class="outline-3">
|
||||
<h3 id="orgcd22c9f"><span class="section-number-3">4.3</span> Identification of the Primary Plant</h3>
|
||||
<div class="outline-text-3" id="text-4-3">
|
||||
|
||||
<div id="orge1df87b" class="figure">
|
||||
<div id="orgfde1133" class="figure">
|
||||
<p><img src="figs/virtual_mass_X_primary_plant_X.png" alt="virtual_mass_X_primary_plant_X.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Comparison of the transfer function from \(\mathcal{F}_{x,y,z}\) to \(\mathcal{X}_{x,y,z}\) with and without the virtual addition of mass in the task space</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org647b748" class="figure">
|
||||
<div id="org095b9cd" class="figure">
|
||||
<p><img src="figs/virtual_mass_X_primary_plant_L.png" alt="virtual_mass_X_primary_plant_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Comparison of the transfer function from \(\tau_i\) to \(\mathcal{L}_{i}\) with and without the virtual addition of mass in the task space</p>
|
||||
@ -229,7 +233,7 @@ Let’s look at the transfer function from \(\bm{\mathcal{F}}\) to \(d\bm{\m
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-05 mar. 10:34</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:09</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -3,31 +3,36 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-09-01 mar. 13:48 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Identification of the disturbances</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Identification of the disturbances</h1>
|
||||
<div id="table-of-contents">
|
||||
@ -41,12 +46,12 @@
|
||||
<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="#orgd564a58">8. Time Domain Disturbances</a></li>
|
||||
<li><a href="#org8212830">9. Time Domain Effect of Disturbances</a>
|
||||
<li><a href="#orgca3331b">8. Time Domain Disturbances</a></li>
|
||||
<li><a href="#orgbbaf1e8">9. Time Domain Effect of Disturbances</a>
|
||||
<ul>
|
||||
<li><a href="#org76c96f4">9.1. Initialization of the Experiment</a></li>
|
||||
<li><a href="#orgf9c1ad9">9.2. Simulations</a></li>
|
||||
<li><a href="#org8107e0b">9.3. Comparison</a></li>
|
||||
<li><a href="#org44ce5e0">9.1. Initialization of the Experiment</a></li>
|
||||
<li><a href="#org6eb944e">9.2. Simulations</a></li>
|
||||
<li><a href="#org0e0c592">9.3. Comparison</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -58,7 +63,7 @@ The goal here is to extract the Power Spectral Density of the sources of perturb
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The sources of perturbations are (schematically shown in figure <a href="#org3b8025c">1</a>):
|
||||
The sources of perturbations are (schematically shown in figure <a href="#orgd508b9c">1</a>):
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>\(D_w\): Ground Motion</li>
|
||||
@ -67,11 +72,11 @@ These forces can be due to imperfect guiding for instance.</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
Because we cannot measure directly the perturbation forces, we have the measure the effect of those perturbations on the system (in terms of velocity for instance using geophones, \(D\) on figure <a href="#org3b8025c">1</a>) and then, using a model, compute the forces that induced such velocity.
|
||||
Because we cannot measure directly the perturbation forces, we have the measure the effect of those perturbations on the system (in terms of velocity for instance using geophones, \(D\) on figure <a href="#orgd508b9c">1</a>) and then, using a model, compute the forces that induced such velocity.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org3b8025c" class="figure">
|
||||
<div id="orgd508b9c" class="figure">
|
||||
<p><img src="figs/uniaxial-model-micro-station.png" alt="uniaxial-model-micro-station.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Schematic of the Micro Station and the sources of disturbance</p>
|
||||
@ -82,19 +87,19 @@ Because we cannot measure directly the perturbation forces, we have the measure
|
||||
This file is divided in the following sections:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Section <a href="#org7cdab70">1</a>: the simscape model used here is presented</li>
|
||||
<li>Section <a href="#org43ec76b">2</a>: transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup</li>
|
||||
<li>Section <a href="#org5636fee">3</a>: the bode plot of those transfer functions are shown</li>
|
||||
<li>Section <a href="#org40a7e4e">4</a>: the measured PSD of the effect of the disturbances are shown</li>
|
||||
<li>Section <a href="#orgd113ba5">5</a>: from the model and the measured PSD, the PSD of the disturbance forces are computed</li>
|
||||
<li>Section <a href="#org71da6bd">6</a>: with the computed PSD, the noise budget of the system is done</li>
|
||||
<li>Section <a href="#orga31fad3">1</a>: the simscape model used here is presented</li>
|
||||
<li>Section <a href="#org6a358d2">2</a>: transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup</li>
|
||||
<li>Section <a href="#orgaf4acdc">3</a>: the bode plot of those transfer functions are shown</li>
|
||||
<li>Section <a href="#org01aa3d0">4</a>: the measured PSD of the effect of the disturbances are shown</li>
|
||||
<li>Section <a href="#org5b257d4">5</a>: from the model and the measured PSD, the PSD of the disturbance forces are computed</li>
|
||||
<li>Section <a href="#org0e0f7ed">6</a>: with the computed PSD, the noise budget of the system is done</li>
|
||||
</ul>
|
||||
|
||||
<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>
|
||||
<a id="org7cdab70"></a>
|
||||
<a id="orga31fad3"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -111,8 +116,8 @@ Also, we measure the absolute displacement of the granite and of the top platfor
|
||||
We load the configuration and we set a small <code>StopTime</code>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '0.5');
|
||||
<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">'0.5'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -121,16 +126,16 @@ We initialize all the stages without the sample nor the nano-hexapod.
|
||||
The obtained system corresponds to the status micro-station when the vibration measurements were conducted.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite('type', 'modal-analysis');
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod('type', 'modal-analysis');
|
||||
initializeAxisc('type', 'none');
|
||||
initializeMirror('type', 'none');
|
||||
initializeNanoHexapod('type', 'none');
|
||||
initializeSample('type', 'none');
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite(<span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -138,7 +143,7 @@ initializeSample('type', 'none');
|
||||
Open Loop Control.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController('type', 'open-loop');
|
||||
<pre class="src src-matlab"> initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -146,7 +151,7 @@ Open Loop Control.
|
||||
We don’t need gravity here.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration('gravity', false);
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -154,7 +159,7 @@ We don’t need gravity here.
|
||||
We log the signals.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeLoggingConfiguration('log', 'all');
|
||||
<pre class="src src-matlab"> initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -164,25 +169,25 @@ We log the signals.
|
||||
<h2 id="Identification"><span class="section-number-2">2</span> Identification</h2>
|
||||
<div class="outline-text-2" id="text-Identification">
|
||||
<p>
|
||||
<a id="org43ec76b"></a>
|
||||
<a id="org6a358d2"></a>
|
||||
The transfer functions from the disturbance forces to the relative velocity of the hexapod with respect to the granite are computed using the Simscape Model representing the experimental setup with the code below.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
|
||||
%% Micro-Hexapod
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Dwz'); io_i = io_i + 1; % Vertical Ground Motion
|
||||
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Fty_z'); io_i = io_i + 1; % Parasitic force Ty
|
||||
io(io_i) = linio([mdl, '/Disturbances'], 1, 'openinput', [], 'Frz_z'); io_i = io_i + 1; % Parasitic force Rz
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Micro-Hexapod</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Dwz'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Vertical Ground Motion</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Fty_z'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Parasitic force Ty</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Disturbances'</span>], 1, <span class="org-string">'openinput'</span>, [], <span class="org-string">'Frz_z'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Parasitic force Rz</span>
|
||||
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Granite/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1; % Absolute motion - Granite
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1; % Absolute Motion - Hexapod
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Granite/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Absolute motion - Granite</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Absolute Motion - Hexapod</span>
|
||||
|
||||
% Run the linearization
|
||||
G = linearize(mdl, io, 0);
|
||||
<span class="org-comment">% Run the linearization</span>
|
||||
G = linearize(mdl, io, 0);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -190,11 +195,11 @@ G = linearize(mdl, io, 0);
|
||||
We Take only the outputs corresponding to the vertical acceleration.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">G = G([3,9], :);
|
||||
<pre class="src src-matlab"> G = G([3,9], <span class="org-type">:</span>);
|
||||
|
||||
% Input/Output names
|
||||
G.InputName = {'Dw', 'Fty', 'Frz'};
|
||||
G.OutputName = {'Agm', 'Ahm'};
|
||||
<span class="org-comment">% Input/Output names</span>
|
||||
G.InputName = {<span class="org-string">'Dw'</span>, <span class="org-string">'Fty'</span>, <span class="org-string">'Frz'</span>};
|
||||
G.OutputName = {<span class="org-string">'Agm'</span>, <span class="org-string">'Ahm'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -202,11 +207,11 @@ G.OutputName = {'Agm', 'Ahm'};
|
||||
We integrate 1 time the output to have the velocity and we substract the absolute velocities to have the relative velocity.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">G = (1/s)*tf([-1, 1])*G;
|
||||
<pre class="src src-matlab"> G = (1<span class="org-type">/</span>s)<span class="org-type">*</span>tf([<span class="org-type">-</span>1, 1])<span class="org-type">*</span>G;
|
||||
|
||||
% Input/Output names
|
||||
G.InputName = {'Dw', 'Fty', 'Frz'};
|
||||
G.OutputName = {'Vm'};
|
||||
<span class="org-comment">% Input/Output names</span>
|
||||
G.InputName = {<span class="org-string">'Dw'</span>, <span class="org-string">'Fty'</span>, <span class="org-string">'Frz'</span>};
|
||||
G.OutputName = {<span class="org-string">'Vm'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -216,19 +221,19 @@ G.OutputName = {'Vm'};
|
||||
<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>
|
||||
<a id="org5636fee"></a>
|
||||
<a id="orgaf4acdc"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The obtained sensitivity to disturbances are shown bellow:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>The transfer function from vertical ground motion \(D_w\) to the vertical relative displacement from the micro-hexapod to the granite \(D\) is shown in Figure <a href="#org7fe296c">2</a></li>
|
||||
<li>The sensitive from vertical forces applied in the Translation stage is shown in Figure <a href="#orgce9715c">3</a></li>
|
||||
<li>The transfer function from vertical ground motion \(D_w\) to the vertical relative displacement from the micro-hexapod to the granite \(D\) is shown in Figure <a href="#org0ff7b6f">2</a></li>
|
||||
<li>The sensitive from vertical forces applied in the Translation stage is shown in Figure <a href="#org6cdcb5f">3</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org7fe296c" class="figure">
|
||||
<div id="org0ff7b6f" class="figure">
|
||||
<p><img src="figs/sensitivity_dist_gm.png" alt="sensitivity_dist_gm.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Sensitivity to Ground Motion (<a href="./figs/sensitivity_dist_gm.png">png</a>, <a href="./figs/sensitivity_dist_gm.pdf">pdf</a>)</p>
|
||||
@ -236,7 +241,7 @@ The obtained sensitivity to disturbances are shown bellow:
|
||||
|
||||
|
||||
|
||||
<div id="orgce9715c" class="figure">
|
||||
<div id="org6cdcb5f" class="figure">
|
||||
<p><img src="figs/sensitivity_dist_fty.png" alt="sensitivity_dist_fty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Sensitivity to vertical forces applied by the Ty stage (<a href="./figs/sensitivity_dist_fty.png">png</a>, <a href="./figs/sensitivity_dist_fty.pdf">pdf</a>)</p>
|
||||
@ -244,7 +249,7 @@ The obtained sensitivity to disturbances are shown bellow:
|
||||
|
||||
|
||||
|
||||
<div id="orga3e6fbc" class="figure">
|
||||
<div id="orgef9814b" class="figure">
|
||||
<p><img src="figs/sensitivity_dist_frz.png" alt="sensitivity_dist_frz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Sensitivity to vertical forces applied by the Rz stage (<a href="./figs/sensitivity_dist_frz.png">png</a>, <a href="./figs/sensitivity_dist_frz.pdf">pdf</a>)</p>
|
||||
@ -256,7 +261,7 @@ The obtained sensitivity to disturbances are shown bellow:
|
||||
<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>
|
||||
<a id="org40a7e4e"></a>
|
||||
<a id="org01aa3d0"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -272,10 +277,10 @@ Also, the Ground Motion is measured.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">gm = load('./mat/psd_gm.mat', 'f', 'psd_gm');
|
||||
rz = load('./mat/pxsp_r.mat', 'f', 'pxsp_r');
|
||||
tyz = load('./mat/pxz_ty_r.mat', 'f', 'pxz_ty_r');
|
||||
tyx = load('./mat/pxe_ty_r.mat', 'f', 'pxe_ty_r');
|
||||
<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>
|
||||
|
||||
@ -283,11 +288,11 @@ tyx = load('./mat/pxe_ty_r.mat', 'f', 'pxe_ty_r');
|
||||
Because some 50Hz and harmonics were present in the ground motion measurement, we remove these peaks with the following code:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">f0s = [50, 100, 150, 200, 250, 350, 450];
|
||||
for f0 = f0s
|
||||
i = find(gm.f > f0-0.5 & gm.f < f0+0.5);
|
||||
gm.psd_gm(i) = linspace(gm.psd_gm(i(1)), gm.psd_gm(i(end)), length(i));
|
||||
end
|
||||
<pre class="src src-matlab"> f0s = [50, 100, 150, 200, 250, 350, 450];
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">f0</span> = <span class="org-constant">f0s</span>
|
||||
<span class="org-constant">i</span> = find(gm.f <span class="org-type">></span> f0<span class="org-type">-</span>0.5 <span class="org-type">&</span> gm.f <span class="org-type"><</span> f0<span class="org-type">+</span>0.5);
|
||||
gm.psd_gm(<span class="org-constant">i</span>) = linspace(gm.psd_gm(<span class="org-constant">i</span>(1)), gm.psd_gm(<span class="org-constant">i</span>(end)), length(<span class="org-constant">i</span>));
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -295,20 +300,20 @@ end
|
||||
We now compute the relative velocity between the hexapod and the granite due to ground motion.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">gm.psd_rv = gm.psd_gm.*abs(squeeze(freqresp(G('Vm', 'Dw'), gm.f, 'Hz'))).^2;
|
||||
<pre class="src src-matlab"> gm.psd_rv = gm.psd_gm<span class="org-type">.*</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Dw'</span>), gm.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The Power Spectral Density of the relative motion and velocity of the hexapod with respect to the granite are shown in figures <a href="#orgb815ef2">5</a> and <a href="#org4c2c215">6</a>.
|
||||
The Power Spectral Density of the relative motion and velocity of the hexapod with respect to the granite are shown in figures <a href="#orge9a5c6c">5</a> and <a href="#org179679e">6</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The Cumulative Amplitude Spectrum of the relative motion is shown in figure <a href="#orgaf910f1">7</a>.
|
||||
The Cumulative Amplitude Spectrum of the relative motion is shown in figure <a href="#orgdd992d9">7</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgb815ef2" class="figure">
|
||||
<div id="orge9a5c6c" class="figure">
|
||||
<p><img src="figs/dist_effect_relative_velocity.png" alt="dist_effect_relative_velocity.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Amplitude Spectral Density of the relative velocity of the hexapod with respect to the granite due to different sources of perturbation (<a href="./figs/dist_effect_relative_velocity.png">png</a>, <a href="./figs/dist_effect_relative_velocity.pdf">pdf</a>)</p>
|
||||
@ -316,22 +321,22 @@ The Cumulative Amplitude Spectrum of the relative motion is shown in figure <a h
|
||||
|
||||
|
||||
|
||||
<div id="org4c2c215" class="figure">
|
||||
<div id="org179679e" class="figure">
|
||||
<p><img src="figs/dist_effect_relative_motion.png" alt="dist_effect_relative_motion.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Amplitude Spectral Density of the relative displacement of the hexapod with respect to the granite due to different sources of perturbation (<a href="./figs/dist_effect_relative_motion.png">png</a>, <a href="./figs/dist_effect_relative_motion.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgaf910f1" class="figure">
|
||||
<div id="orgdd992d9" class="figure">
|
||||
<p><img src="figs/dist_effect_relative_motion_cas.png" alt="dist_effect_relative_motion_cas.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Cumulative Amplitude Spectrum of the relative motion due to different sources of perturbation (<a href="./figs/dist_effect_relative_motion_cas.png">png</a>, <a href="./figs/dist_effect_relative_motion_cas.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
<div class="important">
|
||||
<div class="important" id="org211b9ec">
|
||||
<p>
|
||||
From Figure <a href="#orgaf910f1">7</a>, we can see that the translation stage and the rotation stage have almost the same effect on the position error.
|
||||
From Figure <a href="#orgdd992d9">7</a>, we can see that the translation stage and the rotation stage have almost the same effect on the position error.
|
||||
Also, the ground motion has a relatively negligible effect on the position error.
|
||||
</p>
|
||||
|
||||
@ -343,28 +348,28 @@ Also, the ground motion has a relatively negligible effect on the position error
|
||||
<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>
|
||||
<a id="orgd113ba5"></a>
|
||||
<a id="org5b257d4"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Using the extracted transfer functions from the disturbance force to the relative motion of the hexapod with respect to the granite (section <a href="#org5636fee">3</a>) and using the measured PSD of the relative motion (section <a href="#org40a7e4e">4</a>), we can compute the PSD of the disturbance force.
|
||||
Using the extracted transfer functions from the disturbance force to the relative motion of the hexapod with respect to the granite (section <a href="#orgaf4acdc">3</a>) and using the measured PSD of the relative motion (section <a href="#org01aa3d0">4</a>), we can compute the PSD of the disturbance force.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This is done below.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">rz.psd_f = rz.pxsp_r./abs(squeeze(freqresp(G('Vm', 'Frz'), rz.f, 'Hz'))).^2;
|
||||
tyz.psd_f = tyz.pxz_ty_r./abs(squeeze(freqresp(G('Vm', 'Fty'), tyz.f, 'Hz'))).^2;
|
||||
<pre class="src src-matlab"> rz.psd_f = rz.pxsp_r<span class="org-type">./</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Frz'</span>), rz.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
tyz.psd_f = tyz.pxz_ty_r<span class="org-type">./</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Fty'</span>), tyz.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained amplitude spectral densities of the disturbance forces are shown in Figure <a href="#org45cf35c">8</a>.
|
||||
The obtained amplitude spectral densities of the disturbance forces are shown in Figure <a href="#org7843e80">8</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org45cf35c" class="figure">
|
||||
<div id="org7843e80" class="figure">
|
||||
<p><img src="figs/dist_force_psd.png" alt="dist_force_psd.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Amplitude Spectral Density of the disturbance force (<a href="./figs/dist_force_psd.png">png</a>, <a href="./figs/dist_force_psd.pdf">pdf</a>)</p>
|
||||
@ -376,7 +381,7 @@ The obtained amplitude spectral densities of the disturbance forces are shown in
|
||||
<h2 id="Noise-Budget"><span class="section-number-2">6</span> Noise Budget</h2>
|
||||
<div class="outline-text-2" id="text-Noise-Budget">
|
||||
<p>
|
||||
<a id="org71da6bd"></a>
|
||||
<a id="org0e0f7ed"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -389,18 +394,18 @@ This is done in order to verify that this is coherent with the measurements.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The power spectral density of the relative motion is computed below and the result is shown in Figure <a href="#orgcacf809">9</a>.
|
||||
We can see that this is exactly the same as the Figure <a href="#org4c2c215">6</a>.
|
||||
The power spectral density of the relative motion is computed below and the result is shown in Figure <a href="#orga081bb2">9</a>.
|
||||
We can see that this is exactly the same as the Figure <a href="#org179679e">6</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">psd_gm_d = gm.psd_gm.*abs(squeeze(freqresp(G('Vm', 'Dw')/s, gm.f, 'Hz'))).^2;
|
||||
psd_ty_d = tyz.psd_f.*abs(squeeze(freqresp(G('Vm', 'Fty')/s, tyz.f, 'Hz'))).^2;
|
||||
psd_rz_d = rz.psd_f.*abs(squeeze(freqresp(G('Vm', 'Frz')/s, rz.f, 'Hz'))).^2;
|
||||
<pre class="src src-matlab"> psd_gm_d = gm.psd_gm<span class="org-type">.*</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Dw'</span>)<span class="org-type">/</span>s, gm.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
psd_ty_d = tyz.psd_f<span class="org-type">.*</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Fty'</span>)<span class="org-type">/</span>s, tyz.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
psd_rz_d = rz.psd_f<span class="org-type">.*</span>abs(squeeze(freqresp(G(<span class="org-string">'Vm'</span>, <span class="org-string">'Frz'</span>)<span class="org-type">/</span>s, rz.f, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgcacf809" class="figure">
|
||||
<div id="orga081bb2" class="figure">
|
||||
<p><img src="figs/psd_effect_dist_verif.png" alt="psd_effect_dist_verif.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Computed Effect of the disturbances on the relative displacement hexapod/granite (<a href="./figs/psd_effect_dist_verif.png">png</a>, <a href="./figs/psd_effect_dist_verif.pdf">pdf</a>)</p>
|
||||
@ -416,38 +421,38 @@ The PSD of the disturbance force are now saved for further analysis.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">dist_f = struct();
|
||||
<pre class="src src-matlab"> dist_f = struct();
|
||||
|
||||
dist_f.f = gm.f; % Frequency Vector [Hz]
|
||||
dist_f.f = gm.f; <span class="org-comment">% Frequency Vector [Hz]</span>
|
||||
|
||||
dist_f.psd_gm = gm.psd_gm; % Power Spectral Density of the Ground Motion [m^2/Hz]
|
||||
dist_f.psd_ty = tyz.psd_f; % Power Spectral Density of the force induced by the Ty stage in the Z direction [N^2/Hz]
|
||||
dist_f.psd_rz = rz.psd_f; % Power Spectral Density of the force induced by the Rz stage in the Z direction [N^2/Hz]
|
||||
dist_f.psd_gm = gm.psd_gm; <span class="org-comment">% Power Spectral Density of the Ground Motion [m^2/Hz]</span>
|
||||
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('./mat/dist_psd.mat', 'dist_f');
|
||||
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-orgd564a58" class="outline-2">
|
||||
<h2 id="orgd564a58"><span class="section-number-2">8</span> Time Domain Disturbances</h2>
|
||||
<div id="outline-container-orgca3331b" class="outline-2">
|
||||
<h2 id="orgca3331b"><span class="section-number-2">8</span> Time Domain Disturbances</h2>
|
||||
<div class="outline-text-2" id="text-8">
|
||||
<p>
|
||||
Let’s initialize the time domain disturbances and load them.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances();
|
||||
dist = load('nass_disturbances.mat');
|
||||
<pre class="src src-matlab"> initializeDisturbances();
|
||||
dist = load(<span class="org-string">'nass_disturbances.mat'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The time domain disturbance signals are shown in Figure <a href="#org3ff859b">10</a>.
|
||||
The time domain disturbance signals are shown in Figure <a href="#orgc58b665">10</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org3ff859b" class="figure">
|
||||
<div id="orgc58b665" class="figure">
|
||||
<p><img src="figs/disturbances_time_domain.png" alt="disturbances_time_domain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Disturbances in the Time Domain (<a href="./figs/disturbances_time_domain.png">png</a>, <a href="./figs/disturbances_time_domain.pdf">pdf</a>)</p>
|
||||
@ -455,25 +460,25 @@ The time domain disturbance signals are shown in Figure <a href="#org3ff859b">10
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8212830" class="outline-2">
|
||||
<h2 id="org8212830"><span class="section-number-2">9</span> Time Domain Effect of Disturbances</h2>
|
||||
<div id="outline-container-orgbbaf1e8" class="outline-2">
|
||||
<h2 id="orgbbaf1e8"><span class="section-number-2">9</span> Time Domain Effect of Disturbances</h2>
|
||||
<div class="outline-text-2" id="text-9">
|
||||
</div>
|
||||
<div id="outline-container-org76c96f4" class="outline-3">
|
||||
<h3 id="org76c96f4"><span class="section-number-3">9.1</span> Initialization of the Experiment</h3>
|
||||
<div id="outline-container-org44ce5e0" class="outline-3">
|
||||
<h3 id="org44ce5e0"><span class="section-number-3">9.1</span> Initialization of the Experiment</h3>
|
||||
<div class="outline-text-3" id="text-9-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 class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -481,37 +486,37 @@ initializeMirror();
|
||||
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('type', 'rigid');
|
||||
initializeSample('mass', 1);
|
||||
<pre class="src src-matlab"> initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences();
|
||||
initializeController('type', 'open-loop');
|
||||
initializeSimscapeConfiguration('gravity', false);
|
||||
initializeLoggingConfiguration('log', 'all');
|
||||
<pre class="src src-matlab"> initializeReferences();
|
||||
initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
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">load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '2');
|
||||
<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">'2'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf9c1ad9" class="outline-3">
|
||||
<h3 id="orgf9c1ad9"><span class="section-number-3">9.2</span> Simulations</h3>
|
||||
<div id="outline-container-org6eb944e" class="outline-3">
|
||||
<h3 id="org6eb944e"><span class="section-number-3">9.2</span> Simulations</h3>
|
||||
<div class="outline-text-3" id="text-9-2">
|
||||
<p>
|
||||
No disturbances:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances('enable', false);
|
||||
sim('nass_model');
|
||||
sim_no = simout;
|
||||
<pre class="src src-matlab"> initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
sim_no = simout;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -519,9 +524,9 @@ sim_no = simout;
|
||||
Ground Motion:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances('Fty_x', false, 'Fty_z', false, 'Frz_z', false);
|
||||
sim('nass_model');
|
||||
sim_gm = simout;
|
||||
<pre class="src src-matlab"> initializeDisturbances(<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, <span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, <span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span>);
|
||||
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
sim_gm = simout;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -529,9 +534,9 @@ sim_gm = simout;
|
||||
Translation Stage Vibrations:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances('Dwx', false, 'Dwy', false, 'Dwz', false, 'Frz_z', false);
|
||||
sim('nass_model');
|
||||
sim_ty = simout;
|
||||
<pre class="src src-matlab"> initializeDisturbances(<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, <span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, <span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, <span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span>);
|
||||
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
sim_ty = simout;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -539,23 +544,23 @@ sim_ty = simout;
|
||||
Rotation Stage Vibrations:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances('Dwx', false, 'Dwy', false, 'Dwz', false, 'Fty_x', false, 'Fty_z', false);
|
||||
sim('nass_model');
|
||||
sim_rz = simout;
|
||||
<pre class="src src-matlab"> initializeDisturbances(<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, <span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, <span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, <span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, <span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>);
|
||||
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
sim_rz = simout;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8107e0b" class="outline-3">
|
||||
<h3 id="org8107e0b"><span class="section-number-3">9.3</span> Comparison</h3>
|
||||
<div id="outline-container-org0e0c592" class="outline-3">
|
||||
<h3 id="org0e0c592"><span class="section-number-3">9.3</span> Comparison</h3>
|
||||
<div class="outline-text-3" id="text-9-3">
|
||||
<p>
|
||||
Let’s now compare the effect of those perturbations on the position error of the sample (Figure <a href="#orgee898d4">11</a>)
|
||||
Let’s now compare the effect of those perturbations on the position error of the sample (Figure <a href="#orgfbe77be">11</a>)
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgee898d4" class="figure">
|
||||
<div id="orgfbe77be" class="figure">
|
||||
<p><img src="figs/effect_disturbances_position_error.png" alt="effect_disturbances_position_error.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Effect of Perturbations on the position error (<a href="./figs/effect_disturbances_position_error.png">png</a>, <a href="./figs/effect_disturbances_position_error.pdf">pdf</a>)</p>
|
||||
@ -566,7 +571,7 @@ Let’s now compare the effect of those perturbations on the position error
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-09-01 mar. 13:48</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,66 +1,61 @@
|
||||
<?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-05-05 mar. 10:34 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Simulation of Scientific Experiments</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Simulation of Scientific Experiments</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org03b2a76">1. Simscape Model</a></li>
|
||||
<li><a href="#org6ed78a0">2. Tomography Experiment with no disturbances</a>
|
||||
<li><a href="#org5e41cbf">1. Simscape Model</a></li>
|
||||
<li><a href="#orge687eef">2. Tomography Experiment with no disturbances</a>
|
||||
<ul>
|
||||
<li><a href="#orge3f0741">2.1. Simulation Setup</a></li>
|
||||
<li><a href="#org1836f98">2.2. Analysis</a></li>
|
||||
<li><a href="#org8cf54cb">2.3. Conclusion</a></li>
|
||||
<li><a href="#orgd7be9f9">2.1. Simulation Setup</a></li>
|
||||
<li><a href="#org3cc37e4">2.2. Analysis</a></li>
|
||||
<li><a href="#org635d5aa">2.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org16d8e58">3. Tomography Experiment with included perturbations</a>
|
||||
<li><a href="#orgbaff4a2">3. Tomography Experiment with included perturbations</a>
|
||||
<ul>
|
||||
<li><a href="#org9d04c8b">3.1. Simulation Setup</a></li>
|
||||
<li><a href="#org746ee08">3.2. Analysis</a></li>
|
||||
<li><a href="#org42ba456">3.3. Conclusion</a></li>
|
||||
<li><a href="#org2adb412">3.1. Simulation Setup</a></li>
|
||||
<li><a href="#org0574e3b">3.2. Analysis</a></li>
|
||||
<li><a href="#orga01299f">3.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org7202245">4. Tomography Experiment with Ty raster scans</a>
|
||||
<li><a href="#org2e6a61c">4. Tomography Experiment with Ty raster scans</a>
|
||||
<ul>
|
||||
<li><a href="#org0b606be">4.1. Simulation Setup</a></li>
|
||||
<li><a href="#org2e0557a">4.2. Analysis</a></li>
|
||||
<li><a href="#org6c8cc28">4.3. Conclusion</a></li>
|
||||
<li><a href="#orgea8ee40">4.1. Simulation Setup</a></li>
|
||||
<li><a href="#org10c7f76">4.2. Analysis</a></li>
|
||||
<li><a href="#org9121d09">4.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org72f01ab">5. Tomography when the micro-hexapod is not centered</a>
|
||||
<li><a href="#orgfc40faa">5. Tomography when the micro-hexapod is not centered</a>
|
||||
<ul>
|
||||
<li><a href="#org98d14be">5.1. Simulation Setup</a></li>
|
||||
<li><a href="#org6dc8ae4">5.2. Analysis</a></li>
|
||||
<li><a href="#orgb632268">5.3. Conclusion</a></li>
|
||||
<li><a href="#orgbab9ef9">5.1. Simulation Setup</a></li>
|
||||
<li><a href="#org012e268">5.2. Analysis</a></li>
|
||||
<li><a href="#org75b29bc">5.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org8fa1632">6. Raster Scans with the translation stage</a>
|
||||
<li><a href="#org3ba6838">6. Raster Scans with the translation stage</a>
|
||||
<ul>
|
||||
<li><a href="#orgdd9a5de">6.1. Simulation Setup</a></li>
|
||||
<li><a href="#orgad49d2c">6.2. Analysis</a></li>
|
||||
<li><a href="#org57c774f">6.3. Conclusion</a></li>
|
||||
<li><a href="#org5f4e508">6.1. Simulation Setup</a></li>
|
||||
<li><a href="#orgf069548">6.2. Analysis</a></li>
|
||||
<li><a href="#org3446ba0">6.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -85,26 +80,26 @@ This has several goals:
|
||||
The document in organized as follow:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>In section <a href="#orgfc7d050">1</a> the Simscape model is initialized</li>
|
||||
<li>In section <a href="#org3effbb8">2</a> a tomography experiment is performed where the sample is aligned with the rotation axis. No disturbance is included</li>
|
||||
<li>In section <a href="#org4e7f626">3</a>, the same is done but with disturbance included</li>
|
||||
<li>In section <a href="#orgb31e3fb">5</a> the micro-hexapod translate the sample such that its center of mass is no longer aligned with the rotation axis. No disturbance is included</li>
|
||||
<li>In section <a href="#org6aaeb53">6</a>, scans with the translation stage are simulated with no perturbation included</li>
|
||||
<li>In section <a href="#org5180d92">1</a> the Simscape model is initialized</li>
|
||||
<li>In section <a href="#org141b5a6">2</a> a tomography experiment is performed where the sample is aligned with the rotation axis. No disturbance is included</li>
|
||||
<li>In section <a href="#org95498dc">3</a>, the same is done but with disturbance included</li>
|
||||
<li>In section <a href="#orgd1d4e24">5</a> the micro-hexapod translate the sample such that its center of mass is no longer aligned with the rotation axis. No disturbance is included</li>
|
||||
<li>In section <a href="#orgeec7f3c">6</a>, scans with the translation stage are simulated with no perturbation included</li>
|
||||
</ul>
|
||||
|
||||
<div id="outline-container-org03b2a76" class="outline-2">
|
||||
<h2 id="org03b2a76"><span class="section-number-2">1</span> Simscape Model</h2>
|
||||
<div id="outline-container-org5e41cbf" class="outline-2">
|
||||
<h2 id="org5e41cbf"><span class="section-number-2">1</span> Simscape Model</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="orgfc7d050"></a>
|
||||
<a id="org5180d92"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We load the shared simulink configuration and we set the <code>StopTime</code>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '2');
|
||||
<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">'2'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -113,16 +108,16 @@ We first initialize all the stages.
|
||||
The nano-hexapod is considered to be a rigid body.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
initializeNanoHexapod('type', 'rigid');
|
||||
initializeSample('mass', 1);
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -130,7 +125,7 @@ initializeSample('mass', 1);
|
||||
No controller is used (Open Loop).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController('type', 'open-loop');
|
||||
<pre class="src src-matlab"> initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -138,7 +133,7 @@ No controller is used (Open Loop).
|
||||
We don’t gravity.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration('gravity', false);
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -146,38 +141,38 @@ We don’t gravity.
|
||||
We log the signals for further analysis.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeLoggingConfiguration('log', 'all');
|
||||
<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-org6ed78a0" class="outline-2">
|
||||
<h2 id="org6ed78a0"><span class="section-number-2">2</span> Tomography Experiment with no disturbances</h2>
|
||||
<div id="outline-container-orge687eef" class="outline-2">
|
||||
<h2 id="orge687eef"><span class="section-number-2">2</span> Tomography Experiment with no disturbances</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="org3effbb8"></a>
|
||||
<a id="org141b5a6"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, a tomography experiment is performed with the sample aligned with the rotation axis.
|
||||
No disturbance is included.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-orge3f0741" class="outline-3">
|
||||
<h3 id="orge3f0741"><span class="section-number-3">2.1</span> Simulation Setup</h3>
|
||||
<div id="outline-container-orgd7be9f9" class="outline-3">
|
||||
<h3 id="orgd7be9f9"><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.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances(...
|
||||
'Dwx', false, ... % Ground Motion - X direction
|
||||
'Dwy', false, ... % Ground Motion - Y direction
|
||||
'Dwz', false, ... % Ground Motion - Z direction
|
||||
'Fty_x', false, ... % Translation Stage - X direction
|
||||
'Fty_z', false, ... % Translation Stage - Z direction
|
||||
'Frz_z', false ... % Spindle - Z direction
|
||||
);
|
||||
<pre class="src src-matlab"> initializeDisturbances(...
|
||||
<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||
<span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||
<span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||
<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||
<span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||
<span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||
);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -186,7 +181,7 @@ We initialize the reference path for all the stages.
|
||||
All stage is set to its zero position except the Spindle which is rotating at 60rpm.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences('Rz_type', 'rotating', 'Rz_period', 1);
|
||||
<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>
|
||||
|
||||
@ -194,7 +189,7 @@ All stage is set to its zero position except the Spindle which is rotating at 60
|
||||
We simulate the model.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">sim('nass_model');
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -202,23 +197,23 @@ We simulate the model.
|
||||
And we save the obtained data.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">tomo_align_no_dist = simout;
|
||||
save('./mat/experiment_tomography.mat', 'tomo_align_no_dist', '-append');
|
||||
<pre class="src src-matlab"> tomo_align_no_dist = simout;
|
||||
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-org1836f98" class="outline-3">
|
||||
<h3 id="org1836f98"><span class="section-number-3">2.2</span> Analysis</h3>
|
||||
<div id="outline-container-org3cc37e4" class="outline-3">
|
||||
<h3 id="org3cc37e4"><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('./mat/experiment_tomography.mat', 'tomo_align_no_dist');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_no_dist'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgfcc6055" class="figure">
|
||||
<div id="org3dd3ed3" class="figure">
|
||||
<p><img src="figs/exp_tomo_without_dist.png" alt="exp_tomo_without_dist.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (<a href="./figs/exp_tomo_without_dist.png">png</a>, <a href="./figs/exp_tomo_without_dist.pdf">pdf</a>)</p>
|
||||
@ -226,10 +221,10 @@ save('./mat/experiment_tomography.mat', 'tomo_align_no_dist', '-append');
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8cf54cb" class="outline-3">
|
||||
<h3 id="org8cf54cb"><span class="section-number-3">2.3</span> Conclusion</h3>
|
||||
<div id="outline-container-org635d5aa" class="outline-3">
|
||||
<h3 id="org635d5aa"><span class="section-number-3">2.3</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<div class="important">
|
||||
<div class="important" id="orgbee0f3e">
|
||||
<p>
|
||||
When everything is aligned, the resulting error motion is very small (nm range) and is quite negligible with respect to the error when disturbances are included.
|
||||
This residual error motion probably comes from a small misalignment somewhere.
|
||||
@ -240,32 +235,32 @@ This residual error motion probably comes from a small misalignment somewhere.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org16d8e58" class="outline-2">
|
||||
<h2 id="org16d8e58"><span class="section-number-2">3</span> Tomography Experiment with included perturbations</h2>
|
||||
<div id="outline-container-orgbaff4a2" class="outline-2">
|
||||
<h2 id="orgbaff4a2"><span class="section-number-2">3</span> Tomography Experiment with included perturbations</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="org4e7f626"></a>
|
||||
<a id="org95498dc"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, we also perform a tomography experiment with the sample’s center of mass aligned with the rotation axis.
|
||||
However this time, we include perturbations such as ground motion and stage vibrations.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org9d04c8b" class="outline-3">
|
||||
<h3 id="org9d04c8b"><span class="section-number-3">3.1</span> Simulation Setup</h3>
|
||||
<div id="outline-container-org2adb412" class="outline-3">
|
||||
<h3 id="org2adb412"><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.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances(...
|
||||
'Dwx', true, ... % Ground Motion - X direction
|
||||
'Dwy', true, ... % Ground Motion - Y direction
|
||||
'Dwz', true, ... % Ground Motion - Z direction
|
||||
'Fty_x', false, ... % Translation Stage - X direction
|
||||
'Fty_z', false, ... % Translation Stage - Z direction
|
||||
'Frz_z', true ... % Spindle - Z direction
|
||||
);
|
||||
<pre class="src src-matlab"> initializeDisturbances(...
|
||||
<span class="org-string">'Dwx'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||
<span class="org-string">'Dwy'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||
<span class="org-string">'Dwz'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||
<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||
<span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||
<span class="org-string">'Frz_z'</span>, <span class="org-constant">true</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||
);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -274,7 +269,7 @@ We initialize the reference path for all the stages.
|
||||
All stage is set to its zero position except the Spindle which is rotating at 60rpm.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences('Rz_type', 'rotating', 'Rz_period', 1);
|
||||
<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>
|
||||
|
||||
@ -282,7 +277,7 @@ All stage is set to its zero position except the Spindle which is rotating at 60
|
||||
We simulate the model.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">sim('nass_model');
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -290,23 +285,23 @@ We simulate the model.
|
||||
And we save the obtained data.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">tomo_align_dist = simout;
|
||||
save('./mat/experiment_tomography.mat', 'tomo_align_dist', '-append');
|
||||
<pre class="src src-matlab"> tomo_align_dist = simout;
|
||||
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-org746ee08" class="outline-3">
|
||||
<h3 id="org746ee08"><span class="section-number-3">3.2</span> Analysis</h3>
|
||||
<div id="outline-container-org0574e3b" class="outline-3">
|
||||
<h3 id="org0574e3b"><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('./mat/experiment_tomography.mat', 'tomo_align_dist', 'tomo_align_no_dist');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_dist'</span>, <span class="org-string">'tomo_align_no_dist'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org8030dba" class="figure">
|
||||
<div id="org7188a2d" class="figure">
|
||||
<p><img src="figs/exp_tomo_dist.png" alt="exp_tomo_dist.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>X-Y-Z translations and rotations of the sample w.r.t. the granite when performing tomography experiment with disturbances (<a href="./figs/exp_tomo_dist.png">png</a>, <a href="./figs/exp_tomo_dist.pdf">pdf</a>)</p>
|
||||
@ -314,10 +309,10 @@ save('./mat/experiment_tomography.mat', 'tomo_align_dist', '-append');
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org42ba456" class="outline-3">
|
||||
<h3 id="org42ba456"><span class="section-number-3">3.3</span> Conclusion</h3>
|
||||
<div id="outline-container-orga01299f" class="outline-3">
|
||||
<h3 id="orga01299f"><span class="section-number-3">3.3</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<div class="important">
|
||||
<div class="important" id="org2449de1">
|
||||
<p>
|
||||
Here, no vibration is included in the X and Y directions.
|
||||
</p>
|
||||
@ -327,32 +322,32 @@ Here, no vibration is included in the X and Y directions.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7202245" class="outline-2">
|
||||
<h2 id="org7202245"><span class="section-number-2">4</span> Tomography Experiment with Ty raster scans</h2>
|
||||
<div id="outline-container-org2e6a61c" class="outline-2">
|
||||
<h2 id="org2e6a61c"><span class="section-number-2">4</span> Tomography Experiment with Ty raster scans</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
<a id="orgd4f0240"></a>
|
||||
<a id="org4907e7b"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, we also perform a tomography experiment with scans of the Translation stage.
|
||||
All the perturbations are included.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org0b606be" class="outline-3">
|
||||
<h3 id="org0b606be"><span class="section-number-3">4.1</span> Simulation Setup</h3>
|
||||
<div id="outline-container-orgea8ee40" class="outline-3">
|
||||
<h3 id="orgea8ee40"><span class="section-number-3">4.1</span> Simulation Setup</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
We now activate the disturbances.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances(...
|
||||
'Dwx', true, ... % Ground Motion - X direction
|
||||
'Dwy', true, ... % Ground Motion - Y direction
|
||||
'Dwz', true, ... % Ground Motion - Z direction
|
||||
'Fty_x', true, ... % Translation Stage - X direction
|
||||
'Fty_z', true, ... % Translation Stage - Z direction
|
||||
'Frz_z', true ... % Spindle - Z direction
|
||||
);
|
||||
<pre class="src src-matlab"> initializeDisturbances(...
|
||||
<span class="org-string">'Dwx'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||
<span class="org-string">'Dwy'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||
<span class="org-string">'Dwz'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||
<span class="org-string">'Fty_x'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||
<span class="org-string">'Fty_z'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||
<span class="org-string">'Frz_z'</span>, <span class="org-constant">true</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||
);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -362,7 +357,7 @@ The Spindle which is rotating at 60rpm and the translation stage not moving as i
|
||||
However, vibrations of the Ty stage are included.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences('Rz_type', 'rotating', 'Rz_period', 1);
|
||||
<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>
|
||||
|
||||
@ -370,7 +365,7 @@ However, vibrations of the Ty stage are included.
|
||||
We simulate the model.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">sim('nass_model');
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -378,23 +373,23 @@ We simulate the model.
|
||||
And we save the obtained data.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">scans_rz_align_dist = simout;
|
||||
save('./mat/experiment_tomography.mat', 'scans_rz_align_dist', '-append');
|
||||
<pre class="src src-matlab"> scans_rz_align_dist = simout;
|
||||
save(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'scans_rz_align_dist'</span>, <span class="org-string">'-append'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2e0557a" class="outline-3">
|
||||
<h3 id="org2e0557a"><span class="section-number-3">4.2</span> Analysis</h3>
|
||||
<div id="outline-container-org10c7f76" class="outline-3">
|
||||
<h3 id="org10c7f76"><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('./mat/experiment_tomography.mat', 'scans_rz_align_dist');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'scans_rz_align_dist'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org38e229c" class="figure">
|
||||
<div id="org125e802" class="figure">
|
||||
<p><img src="figs/exp_scans_rz_dist.png" alt="exp_scans_rz_dist.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>X-Y-Z translations and rotations of the sample w.r.t. the granite when performing tomography experiment and scans with the translation stage at the same time</p>
|
||||
@ -402,16 +397,16 @@ save('./mat/experiment_tomography.mat', 'scans_rz_align_dist', '-append');
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6c8cc28" class="outline-3">
|
||||
<h3 id="org6c8cc28"><span class="section-number-3">4.3</span> Conclusion</h3>
|
||||
<div id="outline-container-org9121d09" class="outline-3">
|
||||
<h3 id="org9121d09"><span class="section-number-3">4.3</span> Conclusion</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org72f01ab" class="outline-2">
|
||||
<h2 id="org72f01ab"><span class="section-number-2">5</span> Tomography when the micro-hexapod is not centered</h2>
|
||||
<div id="outline-container-orgfc40faa" class="outline-2">
|
||||
<h2 id="orgfc40faa"><span class="section-number-2">5</span> Tomography when the micro-hexapod is not centered</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
<a id="orgb31e3fb"></a>
|
||||
<a id="orgd1d4e24"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, the sample’s center of mass is not aligned with the rotation axis anymore.
|
||||
@ -422,14 +417,14 @@ This is due to the fact that the micro-hexapod has performed some displacement.
|
||||
No disturbances are included.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org98d14be" class="outline-3">
|
||||
<h3 id="org98d14be"><span class="section-number-3">5.1</span> Simulation Setup</h3>
|
||||
<div id="outline-container-orgbab9ef9" class="outline-3">
|
||||
<h3 id="orgbab9ef9"><span class="section-number-3">5.1</span> Simulation Setup</h3>
|
||||
<div class="outline-text-3" id="text-5-1">
|
||||
<p>
|
||||
We first set the wanted translation of the Micro Hexapod.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">P_micro_hexapod = [0.01; 0; 0]; % [m]
|
||||
<pre class="src src-matlab"> P_micro_hexapod = [0.01; 0; 0]; <span class="org-comment">% [m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -437,7 +432,7 @@ We first set the wanted translation of the Micro Hexapod.
|
||||
We initialize the reference path.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences('Dh_pos', [P_micro_hexapod; 0; 0; 0], 'Rz_type', 'rotating', 'Rz_period', 1);
|
||||
<pre class="src src-matlab"> initializeReferences(<span class="org-string">'Dh_pos'</span>, [P_micro_hexapod; 0; 0; 0], <span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating'</span>, <span class="org-string">'Rz_period'</span>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -445,7 +440,7 @@ We initialize the reference path.
|
||||
We initialize the stages.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeMicroHexapod('AP', P_micro_hexapod);
|
||||
<pre class="src src-matlab"> initializeMicroHexapod(<span class="org-string">'AP'</span>, P_micro_hexapod);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -453,14 +448,14 @@ We initialize the stages.
|
||||
And we initialize the disturbances to zero.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances(...
|
||||
'Dwx', false, ... % Ground Motion - X direction
|
||||
'Dwy', false, ... % Ground Motion - Y direction
|
||||
'Dwz', false, ... % Ground Motion - Z direction
|
||||
'Fty_x', false, ... % Translation Stage - X direction
|
||||
'Fty_z', false, ... % Translation Stage - Z direction
|
||||
'Frz_z', false ... % Spindle - Z direction
|
||||
);
|
||||
<pre class="src src-matlab"> initializeDisturbances(...
|
||||
<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||
<span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||
<span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||
<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||
<span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||
<span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||
);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -468,7 +463,7 @@ And we initialize the disturbances to zero.
|
||||
We simulate the model.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">sim('nass_model');
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -476,23 +471,23 @@ We simulate the model.
|
||||
And we save the obtained data.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">tomo_not_align = simout;
|
||||
save('./mat/experiment_tomography.mat', 'tomo_not_align', '-append');
|
||||
<pre class="src src-matlab"> tomo_not_align = simout;
|
||||
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-org6dc8ae4" class="outline-3">
|
||||
<h3 id="org6dc8ae4"><span class="section-number-3">5.2</span> Analysis</h3>
|
||||
<div id="outline-container-org012e268" class="outline-3">
|
||||
<h3 id="org012e268"><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('./mat/experiment_tomography.mat', 'tomo_not_align', 'tomo_align_no_dist');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_not_align'</span>, <span class="org-string">'tomo_align_no_dist'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgb824a01" class="figure">
|
||||
<div id="orge17b520" class="figure">
|
||||
<p><img src="figs/exp_tomo_offset.png" alt="exp_tomo_offset.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (<a href="./figs/exp_tomo_offset.png">png</a>, <a href="./figs/exp_tomo_offset.pdf">pdf</a>)</p>
|
||||
@ -500,10 +495,10 @@ save('./mat/experiment_tomography.mat', 'tomo_not_align', '-append');
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb632268" class="outline-3">
|
||||
<h3 id="orgb632268"><span class="section-number-3">5.3</span> Conclusion</h3>
|
||||
<div id="outline-container-org75b29bc" class="outline-3">
|
||||
<h3 id="org75b29bc"><span class="section-number-3">5.3</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-5-3">
|
||||
<div class="important">
|
||||
<div class="important" id="org970013d">
|
||||
<p>
|
||||
The main motion error are 1Hz X-Y translations and constant Ry error.
|
||||
This is mainly due to finite stiffness of the elements.
|
||||
@ -514,33 +509,33 @@ This is mainly due to finite stiffness of the elements.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8fa1632" class="outline-2">
|
||||
<h2 id="org8fa1632"><span class="section-number-2">6</span> Raster Scans with the translation stage</h2>
|
||||
<div id="outline-container-org3ba6838" class="outline-2">
|
||||
<h2 id="org3ba6838"><span class="section-number-2">6</span> Raster Scans with the translation stage</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<p>
|
||||
<a id="org6aaeb53"></a>
|
||||
<a id="orgeec7f3c"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, scans with the translation stage are performed.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-orgdd9a5de" class="outline-3">
|
||||
<h3 id="orgdd9a5de"><span class="section-number-3">6.1</span> Simulation Setup</h3>
|
||||
<div id="outline-container-org5f4e508" class="outline-3">
|
||||
<h3 id="org5f4e508"><span class="section-number-3">6.1</span> Simulation Setup</h3>
|
||||
<div class="outline-text-3" id="text-6-1">
|
||||
<p>
|
||||
We initialize the stages.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
initializeNanoHexapod('type', 'rigid');
|
||||
initializeSample('mass', 1);
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -548,14 +543,14 @@ initializeSample('mass', 1);
|
||||
And we initialize the disturbances to zero.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances(...
|
||||
'Dwx', false, ... % Ground Motion - X direction
|
||||
'Dwy', false, ... % Ground Motion - Y direction
|
||||
'Dwz', false, ... % Ground Motion - Z direction
|
||||
'Fty_x', false, ... % Translation Stage - X direction
|
||||
'Fty_z', false, ... % Translation Stage - Z direction
|
||||
'Frz_z', false ... % Spindle - Z direction
|
||||
);
|
||||
<pre class="src src-matlab"> initializeDisturbances(...
|
||||
<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||
<span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||
<span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||
<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||
<span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||
<span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||
);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -563,7 +558,7 @@ And we initialize the disturbances to zero.
|
||||
We set the reference path to be a triangular signal for the Translation Stage.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences('Dy_type', 'triangular', 'Dy_amplitude', 10e-3, 'Dy_period', 1);
|
||||
<pre class="src src-matlab"> initializeReferences(<span class="org-string">'Dy_type'</span>, <span class="org-string">'triangular'</span>, <span class="org-string">'Dy_amplitude'</span>, 10e<span class="org-type">-</span>3, <span class="org-string">'Dy_period'</span>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -571,7 +566,7 @@ We set the reference path to be a triangular signal for the Translation Stage.
|
||||
We simulate the model.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">sim('nass_model');
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -579,8 +574,8 @@ We simulate the model.
|
||||
And we save the obtained data.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ty_scan_triangle = simout;
|
||||
save('./mat/experiment_tomography.mat', 'ty_scan_triangle', '-append');
|
||||
<pre class="src src-matlab"> ty_scan_triangle = simout;
|
||||
save(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'ty_scan_triangle'</span>, <span class="org-string">'-append'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -588,7 +583,7 @@ save('./mat/experiment_tomography.mat', 'ty_scan_triangle', '-append');
|
||||
We now set the reference path to be a sinusoidal signal for the Translation Stage.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences('Dy_type', 'sinusoidal', 'Dy_amplitude', 10e-3, 'Dy_period', 1);
|
||||
<pre class="src src-matlab"> initializeReferences(<span class="org-string">'Dy_type'</span>, <span class="org-string">'sinusoidal'</span>, <span class="org-string">'Dy_amplitude'</span>, 10e<span class="org-type">-</span>3, <span class="org-string">'Dy_period'</span>, 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -596,7 +591,7 @@ We now set the reference path to be a sinusoidal signal for the Translation Stag
|
||||
We simulate the model.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">sim('nass_model');
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -604,23 +599,23 @@ We simulate the model.
|
||||
And we save the obtained data.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ty_scan_sinus = simout;
|
||||
save('./mat/experiment_tomography.mat', 'ty_scan_sinus', '-append');
|
||||
<pre class="src src-matlab"> ty_scan_sinus = simout;
|
||||
save(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'ty_scan_sinus'</span>, <span class="org-string">'-append'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgad49d2c" class="outline-3">
|
||||
<h3 id="orgad49d2c"><span class="section-number-3">6.2</span> Analysis</h3>
|
||||
<div id="outline-container-orgf069548" class="outline-3">
|
||||
<h3 id="orgf069548"><span class="section-number-3">6.2</span> Analysis</h3>
|
||||
<div class="outline-text-3" id="text-6-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('./mat/experiment_tomography.mat', 'ty_scan_triangle', 'ty_scan_sinus');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'ty_scan_triangle'</span>, <span class="org-string">'ty_scan_sinus'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org888f0bf" class="figure">
|
||||
<div id="orgebbbb99" class="figure">
|
||||
<p><img src="figs/exp_ty_scan.png" alt="exp_ty_scan.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>X-Y-Z translation of the sample w.r.t. granite when performing tomography experiment with no disturbances (<a href="./figs/exp_ty_scan.png">png</a>, <a href="./figs/exp_ty_scan.pdf">pdf</a>)</p>
|
||||
@ -628,10 +623,10 @@ save('./mat/experiment_tomography.mat', 'ty_scan_sinus', '-append');
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org57c774f" class="outline-3">
|
||||
<h3 id="org57c774f"><span class="section-number-3">6.3</span> Conclusion</h3>
|
||||
<div id="outline-container-org3446ba0" class="outline-3">
|
||||
<h3 id="org3446ba0"><span class="section-number-3">6.3</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-6-3">
|
||||
<div class="important">
|
||||
<div class="important" id="orgf5f4292">
|
||||
<p>
|
||||
Scans with the translation stage induces some errors in the Y direction and Rx translations.
|
||||
</p>
|
||||
@ -648,7 +643,7 @@ Thus, this should be preferred.
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-05 mar. 10:34</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,81 +3,86 @@
|
||||
"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-11-03 mar. 09:45 -->
|
||||
<!-- 2021-02-20 sam. 23:09 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Study of the Flexible Joints</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Study of the Flexible Joints</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orge032d30">1. Bending and Torsional Stiffness</a>
|
||||
<li><a href="#org157c72f">1. Bending and Torsional Stiffness</a>
|
||||
<ul>
|
||||
<li><a href="#orge82a7c2">1.1. Initialization</a></li>
|
||||
<li><a href="#orgde60939">1.2. Realistic Bending Stiffness Values</a>
|
||||
<li><a href="#org19fa00c">1.1. Initialization</a></li>
|
||||
<li><a href="#orgc66d5ef">1.2. Realistic Bending Stiffness Values</a>
|
||||
<ul>
|
||||
<li><a href="#orge13b41c">1.2.1. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#orgd5fd59b">1.2.2. Primary Plant</a></li>
|
||||
<li><a href="#org865157e">1.2.3. Conclusion</a></li>
|
||||
<li><a href="#org7f86aa6">1.2.1. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#orgd763ab8">1.2.2. Primary Plant</a></li>
|
||||
<li><a href="#org34d48fd">1.2.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org8ad3f34">1.3. Parametric Study</a>
|
||||
<li><a href="#org2383b0a">1.3. Parametric Study</a>
|
||||
<ul>
|
||||
<li><a href="#orgc98ee7c">1.3.1. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#org15c2c08">1.3.2. Primary Control</a></li>
|
||||
<li><a href="#org5322ecd">1.3.3. Conclusion</a></li>
|
||||
<li><a href="#org0b2ea81">1.3.1. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#org4bcbd52">1.3.2. Primary Control</a></li>
|
||||
<li><a href="#orgd481cbd">1.3.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgdaf7b6c">2. Axial Stiffness</a>
|
||||
<li><a href="#org122af58">2. Axial Stiffness</a>
|
||||
<ul>
|
||||
<li><a href="#org969d9e7">2.1. Realistic Translation Stiffness Values</a>
|
||||
<li><a href="#orgbd421fd">2.1. Realistic Translation Stiffness Values</a>
|
||||
<ul>
|
||||
<li><a href="#org7dd21d5">2.1.1. Initialization</a></li>
|
||||
<li><a href="#org47be52b">2.1.2. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#org15105f5">2.1.3. Primary Plant</a></li>
|
||||
<li><a href="#org2098f1e">2.1.4. Conclusion</a></li>
|
||||
<li><a href="#org7e915de">2.1.1. Initialization</a></li>
|
||||
<li><a href="#org484b32d">2.1.2. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#org4c02123">2.1.3. Primary Plant</a></li>
|
||||
<li><a href="#org8aa50f5">2.1.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org0275632">2.2. Parametric study</a>
|
||||
<li><a href="#orge0a9c34">2.2. Parametric study</a>
|
||||
<ul>
|
||||
<li><a href="#orgd87b94b">2.2.1. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#orge5d1c12">2.2.2. Primary Control</a></li>
|
||||
<li><a href="#org564cc95">2.2.1. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#orgc1721b8">2.2.2. Primary Control</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org382b3cb">2.3. Conclusion</a></li>
|
||||
<li><a href="#org13f48c9">2.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgb6f6c0a">3. Conclusion</a></li>
|
||||
<li><a href="#orgdf2870d">4. Designed Flexible Joints</a>
|
||||
<li><a href="#org5519f74">3. Conclusion</a></li>
|
||||
<li><a href="#org358d063">4. Designed Flexible Joints</a>
|
||||
<ul>
|
||||
<li><a href="#orgd355fcb">4.1. Initialization</a></li>
|
||||
<li><a href="#org43c7d3c">4.2. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#org056a1de">4.3. Integral Force Feedback</a></li>
|
||||
<li><a href="#org1148778">4.1. Initialization</a></li>
|
||||
<li><a href="#orgd889755">4.2. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#org12972b2">4.3. Integral Force Feedback</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -93,40 +98,40 @@ Ideally, we want the x and y rotations to be free and all the translations to be
|
||||
However, this is never the case and be have to consider:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Finite bending stiffnesses (Section <a href="#org3eb4121">1</a>)</li>
|
||||
<li>Axial stiffness in the direction of the legs (Section <a href="#org8f4d83b">2</a>)</li>
|
||||
<li>Finite bending stiffnesses (Section <a href="#org27b9411">1</a>)</li>
|
||||
<li>Axial stiffness in the direction of the legs (Section <a href="#org7789cf6">2</a>)</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
This may impose some limitations, also, the goal is to specify the required joints stiffnesses (summarized in Section <a href="#org6614f42">3</a>).
|
||||
This may impose some limitations, also, the goal is to specify the required joints stiffnesses (summarized in Section <a href="#org8e0b118">3</a>).
|
||||
</p>
|
||||
|
||||
<div id="outline-container-orge032d30" class="outline-2">
|
||||
<h2 id="orge032d30"><span class="section-number-2">1</span> Bending and Torsional Stiffness</h2>
|
||||
<div id="outline-container-org157c72f" class="outline-2">
|
||||
<h2 id="org157c72f"><span class="section-number-2">1</span> Bending and Torsional Stiffness</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="org3eb4121"></a>
|
||||
<a id="org27b9411"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, we wish to study the effect of the rotation flexibility of the nano-hexapod joints.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge82a7c2" class="outline-3">
|
||||
<h3 id="orge82a7c2"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||
<div id="outline-container-org19fa00c" class="outline-3">
|
||||
<h3 id="org19fa00c"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
Let’s initialize all the stages with default parameters.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -134,15 +139,15 @@ initializeMirror();
|
||||
Let’s consider the heaviest mass which should we the most problematic with it comes to the flexible joints.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSample(<span class="org-string">'mass'</span>, 50, <span class="org-string">'freq'</span>, 200<span class="org-type">*</span>ones(6,1));
|
||||
initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating-not-filtered'</span>, <span class="org-string">'Rz_period'</span>, 60);
|
||||
<pre class="src src-matlab"> initializeSample(<span class="org-string">'mass'</span>, 50, <span class="org-string">'freq'</span>, 200<span class="org-type">*</span>ones(6,1));
|
||||
initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating-not-filtered'</span>, <span class="org-string">'Rz_period'</span>, 60);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgde60939" class="outline-3">
|
||||
<h3 id="orgde60939"><span class="section-number-3">1.2</span> Realistic Bending Stiffness Values</h3>
|
||||
<div id="outline-container-orgc66d5ef" class="outline-3">
|
||||
<h3 id="orgc66d5ef"><span class="section-number-3">1.2</span> Realistic Bending Stiffness Values</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
Let’s compare the ideal case (zero stiffness in rotation and infinite stiffness in translation) with a more realistic case:
|
||||
@ -153,10 +158,10 @@ Let’s compare the ideal case (zero stiffness in rotation and infinite stif
|
||||
</ul>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kf_M = 15<span class="org-type">*</span>ones(6,1);
|
||||
Kf_F = 15<span class="org-type">*</span>ones(6,1);
|
||||
Kt_M = 20<span class="org-type">*</span>ones(6,1);
|
||||
Kt_F = 20<span class="org-type">*</span>ones(6,1);
|
||||
<pre class="src src-matlab"> Kf_M = 15<span class="org-type">*</span>ones(6,1);
|
||||
Kf_F = 15<span class="org-type">*</span>ones(6,1);
|
||||
Kt_M = 20<span class="org-type">*</span>ones(6,1);
|
||||
Kt_F = 20<span class="org-type">*</span>ones(6,1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -164,8 +169,8 @@ Kt_F = 20<span class="org-type">*</span>ones(6,1);
|
||||
The stiffness and damping of the nano-hexapod’s legs are:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">k_opt = 1e5; <span class="org-comment">% [N/m]</span>
|
||||
c_opt = 2e2; <span class="org-comment">% [N/(m/s)]</span>
|
||||
<pre class="src src-matlab"> k_opt = 1e5; <span class="org-comment">% [N/m]</span>
|
||||
c_opt = 2e2; <span class="org-comment">% [N/(m/s)]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -174,20 +179,20 @@ This corresponds to the optimal identified stiffness.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge13b41c" class="outline-4">
|
||||
<h4 id="orge13b41c"><span class="section-number-4">1.2.1</span> Direct Velocity Feedback</h4>
|
||||
<div id="outline-container-org7f86aa6" class="outline-4">
|
||||
<h4 id="org7f86aa6"><span class="section-number-4">1.2.1</span> Direct Velocity Feedback</h4>
|
||||
<div class="outline-text-4" id="text-1-2-1">
|
||||
<p>
|
||||
We identify the dynamics from actuators force \(\tau_i\) to relative motion sensors \(d\mathcal{L}_i\) with and without considering the flexible joint stiffness.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The obtained dynamics are shown in Figure <a href="#org656fd1c">1</a>.
|
||||
The obtained dynamics are shown in Figure <a href="#orgc127d0f">1</a>.
|
||||
It is shown that the adding of stiffness for the flexible joints does increase a little bit the frequencies of the mass suspension modes. It stiffen the structure.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org656fd1c" class="figure">
|
||||
<div id="orgc127d0f" class="figure">
|
||||
<p><img src="figs/flex_joint_rot_dvf.png" alt="flex_joint_rot_dvf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Dynamics from actuators force \(\tau_i\) to relative motion sensors \(d\mathcal{L}_i\) with (blue) and without (red) considering the flexible joint stiffness</p>
|
||||
@ -195,20 +200,20 @@ It is shown that the adding of stiffness for the flexible joints does increase a
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd5fd59b" class="outline-4">
|
||||
<h4 id="orgd5fd59b"><span class="section-number-4">1.2.2</span> Primary Plant</h4>
|
||||
<div id="outline-container-orgd763ab8" class="outline-4">
|
||||
<h4 id="orgd763ab8"><span class="section-number-4">1.2.2</span> Primary Plant</h4>
|
||||
<div class="outline-text-4" id="text-1-2-2">
|
||||
<p>
|
||||
Let’s now identify the dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) (for the primary controller designed in the frame of the legs).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The dynamics is compare with and without the joint flexibility in Figure <a href="#org4322feb">2</a>.
|
||||
The dynamics is compare with and without the joint flexibility in Figure <a href="#orgbca1f59">2</a>.
|
||||
The plant dynamics is not found to be changing significantly.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org4322feb" class="figure">
|
||||
<div id="orgbca1f59" class="figure">
|
||||
<p><img src="figs/flex_joints_rot_primary_plant_L.png" alt="flex_joints_rot_primary_plant_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Dynamics from \(\bm{\tau}^\prime_i\) to \(\bm{\epsilon}_{\mathcal{X}_n,i}\) with perfect joints and with flexible joints</p>
|
||||
@ -216,10 +221,10 @@ The plant dynamics is not found to be changing significantly.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org865157e" class="outline-4">
|
||||
<h4 id="org865157e"><span class="section-number-4">1.2.3</span> Conclusion</h4>
|
||||
<div id="outline-container-org34d48fd" class="outline-4">
|
||||
<h4 id="org34d48fd"><span class="section-number-4">1.2.3</span> Conclusion</h4>
|
||||
<div class="outline-text-4" id="text-1-2-3">
|
||||
<div class="important" id="org69f9617">
|
||||
<div class="important" id="org5365e9f">
|
||||
<p>
|
||||
Considering realistic flexible joint bending stiffness for the nano-hexapod does not seems to impose any limitation on the DVF control nor on the primary control.
|
||||
</p>
|
||||
@ -233,8 +238,8 @@ It only increases a little bit the suspension modes of the sample on top of the
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8ad3f34" class="outline-3">
|
||||
<h3 id="org8ad3f34"><span class="section-number-3">1.3</span> Parametric Study</h3>
|
||||
<div id="outline-container-org2383b0a" class="outline-3">
|
||||
<h3 id="org2383b0a"><span class="section-number-3">1.3</span> Parametric Study</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
We wish now to see what is the impact of the rotation stiffness of the flexible joints on the dynamics.
|
||||
@ -245,7 +250,7 @@ This will help to determine the requirements on the joint’s stiffness.
|
||||
Let’s consider the following bending stiffness of the flexible joints:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ks = [1, 5, 10, 50, 100]; <span class="org-comment">% [Nm/rad]</span>
|
||||
<pre class="src src-matlab"> Ks = [1, 5, 10, 50, 100]; <span class="org-comment">% [Nm/rad]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -254,15 +259,15 @@ We also consider here a nano-hexapod with the identified optimal actuator stiffn
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc98ee7c" class="outline-4">
|
||||
<h4 id="orgc98ee7c"><span class="section-number-4">1.3.1</span> Direct Velocity Feedback</h4>
|
||||
<div id="outline-container-org0b2ea81" class="outline-4">
|
||||
<h4 id="org0b2ea81"><span class="section-number-4">1.3.1</span> Direct Velocity Feedback</h4>
|
||||
<div class="outline-text-4" id="text-1-3-1">
|
||||
<p>
|
||||
The dynamics from the actuators to the relative displacement sensor in each leg is identified and shown in Figure <a href="#org8fbbf9d">3</a>.
|
||||
The dynamics from the actuators to the relative displacement sensor in each leg is identified and shown in Figure <a href="#org849b1d6">3</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The corresponding Root Locus plot is shown in Figure <a href="#orgb9f3389">4</a>.
|
||||
The corresponding Root Locus plot is shown in Figure <a href="#org311fafc">4</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -270,14 +275,14 @@ It is shown that the bending stiffness of the flexible joints does indeed change
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org8fbbf9d" class="figure">
|
||||
<div id="org849b1d6" class="figure">
|
||||
<p><img src="figs/flex_joints_rot_study_dvf.png" alt="flex_joints_rot_study_dvf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Dynamics from \(\tau_i\) to \(d\mathcal{L}_i\) for all the considered Rotation Stiffnesses</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgb9f3389" class="figure">
|
||||
<div id="org311fafc" class="figure">
|
||||
<p><img src="figs/flex_joints_rot_study_dvf_root_locus.png" alt="flex_joints_rot_study_dvf_root_locus.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Root Locus for all the considered Rotation Stiffnesses</p>
|
||||
@ -285,11 +290,11 @@ It is shown that the bending stiffness of the flexible joints does indeed change
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org15c2c08" class="outline-4">
|
||||
<h4 id="org15c2c08"><span class="section-number-4">1.3.2</span> Primary Control</h4>
|
||||
<div id="outline-container-org4bcbd52" class="outline-4">
|
||||
<h4 id="org4bcbd52"><span class="section-number-4">1.3.2</span> Primary Control</h4>
|
||||
<div class="outline-text-4" id="text-1-3-2">
|
||||
<p>
|
||||
The dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) (for the primary controller designed in the frame of the legs) is shown in Figure <a href="#orgb739560">5</a>.
|
||||
The dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) (for the primary controller designed in the frame of the legs) is shown in Figure <a href="#orgaed64b5">5</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -297,7 +302,7 @@ It is shown that the bending stiffness of the flexible joints have very little i
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgb739560" class="figure">
|
||||
<div id="orgaed64b5" class="figure">
|
||||
<p><img src="figs/flex_joints_rot_study_primary_plant.png" alt="flex_joints_rot_study_primary_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the considered bending stiffnesses</p>
|
||||
@ -305,10 +310,10 @@ It is shown that the bending stiffness of the flexible joints have very little i
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5322ecd" class="outline-4">
|
||||
<h4 id="org5322ecd"><span class="section-number-4">1.3.3</span> Conclusion</h4>
|
||||
<div id="outline-container-orgd481cbd" class="outline-4">
|
||||
<h4 id="orgd481cbd"><span class="section-number-4">1.3.3</span> Conclusion</h4>
|
||||
<div class="outline-text-4" id="text-1-3-3">
|
||||
<div class="important" id="orga223c1a">
|
||||
<div class="important" id="org98dc84f">
|
||||
<p>
|
||||
The bending stiffness of the flexible joint does not significantly change the dynamics.
|
||||
</p>
|
||||
@ -319,19 +324,19 @@ The bending stiffness of the flexible joint does not significantly change the dy
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdaf7b6c" class="outline-2">
|
||||
<h2 id="orgdaf7b6c"><span class="section-number-2">2</span> Axial Stiffness</h2>
|
||||
<div id="outline-container-org122af58" class="outline-2">
|
||||
<h2 id="org122af58"><span class="section-number-2">2</span> Axial Stiffness</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="org8f4d83b"></a>
|
||||
<a id="org7789cf6"></a>
|
||||
</p>
|
||||
<p>
|
||||
Let’s know consider a flexibility in translation of the flexible joint, in the axis of the legs.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org969d9e7" class="outline-3">
|
||||
<h3 id="org969d9e7"><span class="section-number-3">2.1</span> Realistic Translation Stiffness Values</h3>
|
||||
<div id="outline-container-orgbd421fd" class="outline-3">
|
||||
<h3 id="orgbd421fd"><span class="section-number-3">2.1</span> Realistic Translation Stiffness Values</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
We choose realistic values of the axial stiffness of the joints:
|
||||
@ -339,29 +344,29 @@ We choose realistic values of the axial stiffness of the joints:
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ka_F = 60e6<span class="org-type">*</span>ones(6,1); <span class="org-comment">% [N/m]</span>
|
||||
Ka_M = 60e6<span class="org-type">*</span>ones(6,1); <span class="org-comment">% [N/m]</span>
|
||||
Ca_F = 1<span class="org-type">*</span>ones(6,1); <span class="org-comment">% [N/(m/s)]</span>
|
||||
Ca_M = 1<span class="org-type">*</span>ones(6,1); <span class="org-comment">% [N/(m/s)]</span>
|
||||
<pre class="src src-matlab"> Ka_F = 60e6<span class="org-type">*</span>ones(6,1); <span class="org-comment">% [N/m]</span>
|
||||
Ka_M = 60e6<span class="org-type">*</span>ones(6,1); <span class="org-comment">% [N/m]</span>
|
||||
Ca_F = 1<span class="org-type">*</span>ones(6,1); <span class="org-comment">% [N/(m/s)]</span>
|
||||
Ca_M = 1<span class="org-type">*</span>ones(6,1); <span class="org-comment">% [N/(m/s)]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7dd21d5" class="outline-4">
|
||||
<h4 id="org7dd21d5"><span class="section-number-4">2.1.1</span> Initialization</h4>
|
||||
<div id="outline-container-org7e915de" class="outline-4">
|
||||
<h4 id="org7e915de"><span class="section-number-4">2.1.1</span> Initialization</h4>
|
||||
<div class="outline-text-4" id="text-2-1-1">
|
||||
<p>
|
||||
Let’s initialize all the stages with default parameters.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -369,26 +374,26 @@ initializeMirror();
|
||||
Let’s consider the heaviest mass which should we the most problematic with it comes to the flexible joints.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSample(<span class="org-string">'mass'</span>, 50, <span class="org-string">'freq'</span>, 200<span class="org-type">*</span>ones(6,1));
|
||||
initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating-not-filtered'</span>, <span class="org-string">'Rz_period'</span>, 60);
|
||||
<pre class="src src-matlab"> initializeSample(<span class="org-string">'mass'</span>, 50, <span class="org-string">'freq'</span>, 200<span class="org-type">*</span>ones(6,1));
|
||||
initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating-not-filtered'</span>, <span class="org-string">'Rz_period'</span>, 60);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org47be52b" class="outline-4">
|
||||
<h4 id="org47be52b"><span class="section-number-4">2.1.2</span> Direct Velocity Feedback</h4>
|
||||
<div id="outline-container-org484b32d" class="outline-4">
|
||||
<h4 id="org484b32d"><span class="section-number-4">2.1.2</span> Direct Velocity Feedback</h4>
|
||||
<div class="outline-text-4" id="text-2-1-2">
|
||||
<p>
|
||||
The dynamics from actuators force \(\tau_i\) to relative motion sensors \(d\mathcal{L}_i\) with and without considering the flexible joint stiffness are identified.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The obtained dynamics are shown in Figure <a href="#org78dd87a">6</a>.
|
||||
The obtained dynamics are shown in Figure <a href="#org90e79ad">6</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org78dd87a" class="figure">
|
||||
<div id="org90e79ad" class="figure">
|
||||
<p><img src="figs/flex_joint_trans_dvf.png" alt="flex_joint_trans_dvf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Dynamics from actuators force \(\tau_i\) to relative motion sensors \(d\mathcal{L}_i\) with (blue) and without (red) considering the flexible joint axis stiffness</p>
|
||||
@ -396,11 +401,11 @@ The obtained dynamics are shown in Figure <a href="#org78dd87a">6</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org15105f5" class="outline-4">
|
||||
<h4 id="org15105f5"><span class="section-number-4">2.1.3</span> Primary Plant</h4>
|
||||
<div id="outline-container-org4c02123" class="outline-4">
|
||||
<h4 id="org4c02123"><span class="section-number-4">2.1.3</span> Primary Plant</h4>
|
||||
<div class="outline-text-4" id="text-2-1-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kdvf = 5e3<span class="org-type">*</span>s<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>1e3)<span class="org-type">*</span>eye(6);
|
||||
<pre class="src src-matlab"> Kdvf = 5e3<span class="org-type">*</span>s<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>1e3)<span class="org-type">*</span>eye(6);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -409,11 +414,11 @@ Let’s now identify the dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilo
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The dynamics is compare with and without the joint flexibility in Figure <a href="#org9bd0791">7</a>.
|
||||
The dynamics is compare with and without the joint flexibility in Figure <a href="#org98bb072">7</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org9bd0791" class="figure">
|
||||
<div id="org98bb072" class="figure">
|
||||
<p><img src="figs/flex_joints_trans_primary_plant_L.png" alt="flex_joints_trans_primary_plant_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Dynamics from \(\bm{\tau}^\prime_i\) to \(\bm{\epsilon}_{\mathcal{X}_n,i}\) with infinite axis stiffnes (solid) and with realistic axial stiffness (dashed)</p>
|
||||
@ -421,10 +426,10 @@ The dynamics is compare with and without the joint flexibility in Figure <a href
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2098f1e" class="outline-4">
|
||||
<h4 id="org2098f1e"><span class="section-number-4">2.1.4</span> Conclusion</h4>
|
||||
<div id="outline-container-org8aa50f5" class="outline-4">
|
||||
<h4 id="org8aa50f5"><span class="section-number-4">2.1.4</span> Conclusion</h4>
|
||||
<div class="outline-text-4" id="text-2-1-4">
|
||||
<div class="important" id="org3a7d9f4">
|
||||
<div class="important" id="org2e8394a">
|
||||
<p>
|
||||
For the realistic value of the flexible joint axial stiffness, the dynamics is not much impact, and this should not be a problem for control.
|
||||
</p>
|
||||
@ -434,8 +439,8 @@ For the realistic value of the flexible joint axial stiffness, the dynamics is n
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0275632" class="outline-3">
|
||||
<h3 id="org0275632"><span class="section-number-3">2.2</span> Parametric study</h3>
|
||||
<div id="outline-container-orge0a9c34" class="outline-3">
|
||||
<h3 id="orge0a9c34"><span class="section-number-3">2.2</span> Parametric study</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
We wish now to see what is the impact of the <b>axial</b> stiffness of the flexible joints on the dynamics.
|
||||
@ -445,7 +450,7 @@ We wish now to see what is the impact of the <b>axial</b> stiffness of the flexi
|
||||
Let’s consider the following values for the axial stiffness:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kas = [1e4, 1e5, 1e6, 1e7, 1e8, 1e9]; <span class="org-comment">% [N/m]</span>
|
||||
<pre class="src src-matlab"> Kas = [1e4, 1e5, 1e6, 1e7, 1e8, 1e9]; <span class="org-comment">% [N/m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -454,11 +459,11 @@ We also consider here a nano-hexapod with the identified optimal actuator stiffn
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd87b94b" class="outline-4">
|
||||
<h4 id="orgd87b94b"><span class="section-number-4">2.2.1</span> Direct Velocity Feedback</h4>
|
||||
<div id="outline-container-org564cc95" class="outline-4">
|
||||
<h4 id="org564cc95"><span class="section-number-4">2.2.1</span> Direct Velocity Feedback</h4>
|
||||
<div class="outline-text-4" id="text-2-2-1">
|
||||
<p>
|
||||
The dynamics from the actuators to the relative displacement sensor in each leg is identified and shown in Figure <a href="#orgab9ab86">8</a>.
|
||||
The dynamics from the actuators to the relative displacement sensor in each leg is identified and shown in Figure <a href="#orgeed898e">8</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -470,26 +475,26 @@ If the axial stiffness of the flexible joints is \(K_a > 10^7\,[N/m]\) (here \(1
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This is more clear by looking at the root locus (Figures <a href="#org9d43966">9</a> and <a href="#org987d98e">10</a>).
|
||||
This is more clear by looking at the root locus (Figures <a href="#org399589b">9</a> and <a href="#org5154002">10</a>).
|
||||
It can be seen that very little active damping can be achieve for axial stiffnesses below \(10^7\,[N/m]\).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgab9ab86" class="figure">
|
||||
<div id="orgeed898e" class="figure">
|
||||
<p><img src="figs/flex_joints_trans_study_dvf.png" alt="flex_joints_trans_study_dvf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Dynamics from \(\tau_i\) to \(d\mathcal{L}_i\) for all the considered axis Stiffnesses</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org9d43966" class="figure">
|
||||
<div id="org399589b" class="figure">
|
||||
<p><img src="figs/flex_joints_trans_study_dvf_root_locus.png" alt="flex_joints_trans_study_dvf_root_locus.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Root Locus for all the considered axial Stiffnesses</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org987d98e" class="figure">
|
||||
<div id="org5154002" class="figure">
|
||||
<p><img src="figs/flex_joints_trans_study_root_locus_unzoom.png" alt="flex_joints_trans_study_root_locus_unzoom.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Root Locus (unzoom) for all the considered axial Stiffnesses</p>
|
||||
@ -497,15 +502,15 @@ It can be seen that very little active damping can be achieve for axial stiffnes
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge5d1c12" class="outline-4">
|
||||
<h4 id="orge5d1c12"><span class="section-number-4">2.2.2</span> Primary Control</h4>
|
||||
<div id="outline-container-orgc1721b8" class="outline-4">
|
||||
<h4 id="orgc1721b8"><span class="section-number-4">2.2.2</span> Primary Control</h4>
|
||||
<div class="outline-text-4" id="text-2-2-2">
|
||||
<p>
|
||||
The dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) (for the primary controller designed in the frame of the legs) is shown in Figure <a href="#org6070692">11</a>.
|
||||
The dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) (for the primary controller designed in the frame of the legs) is shown in Figure <a href="#orgcab6267">11</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org6070692" class="figure">
|
||||
<div id="orgcab6267" class="figure">
|
||||
<p><img src="figs/flex_joints_trans_study_primary_plant.png" alt="flex_joints_trans_study_primary_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the considered axial stiffnesses</p>
|
||||
@ -514,10 +519,10 @@ The dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) (for
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org382b3cb" class="outline-3">
|
||||
<h3 id="org382b3cb"><span class="section-number-3">2.3</span> Conclusion</h3>
|
||||
<div id="outline-container-org13f48c9" class="outline-3">
|
||||
<h3 id="org13f48c9"><span class="section-number-3">2.3</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<div class="important" id="org422e802">
|
||||
<div class="important" id="org4a497ad">
|
||||
<p>
|
||||
The axial stiffness of the flexible joints should be maximized.
|
||||
</p>
|
||||
@ -539,14 +544,14 @@ We may interpolate the results and say that the axial joint stiffness should be
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb6f6c0a" class="outline-2">
|
||||
<h2 id="orgb6f6c0a"><span class="section-number-2">3</span> Conclusion</h2>
|
||||
<div id="outline-container-org5519f74" class="outline-2">
|
||||
<h2 id="org5519f74"><span class="section-number-2">3</span> Conclusion</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="org6614f42"></a>
|
||||
<a id="org8e0b118"></a>
|
||||
</p>
|
||||
|
||||
<div class="important" id="org3cbf243">
|
||||
<div class="important" id="org3aeae4e">
|
||||
<p>
|
||||
In this study we considered the bending, torsional and axial stiffnesses of the flexible joints used for the nano-hexapod.
|
||||
</p>
|
||||
@ -583,26 +588,26 @@ As there is generally a trade-off between bending stiffness and axial stiffness,
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-orgdf2870d" class="outline-2">
|
||||
<h2 id="orgdf2870d"><span class="section-number-2">4</span> Designed Flexible Joints</h2>
|
||||
<div id="outline-container-org358d063" class="outline-2">
|
||||
<h2 id="org358d063"><span class="section-number-2">4</span> Designed Flexible Joints</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
</div>
|
||||
<div id="outline-container-orgd355fcb" class="outline-3">
|
||||
<h3 id="orgd355fcb"><span class="section-number-3">4.1</span> Initialization</h3>
|
||||
<div id="outline-container-org1148778" class="outline-3">
|
||||
<h3 id="org1148778"><span class="section-number-3">4.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
Let’s initialize all the stages with default parameters.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMirror();
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMirror();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -610,51 +615,51 @@ initializeMirror();
|
||||
Let’s consider the heaviest mass which should we the most problematic with it comes to the flexible joints.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSample(<span class="org-string">'mass'</span>, 50, <span class="org-string">'freq'</span>, 200<span class="org-type">*</span>ones(6,1));
|
||||
initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating-not-filtered'</span>, <span class="org-string">'Rz_period'</span>, 60);
|
||||
<pre class="src src-matlab"> initializeSample(<span class="org-string">'mass'</span>, 50, <span class="org-string">'freq'</span>, 200<span class="org-type">*</span>ones(6,1));
|
||||
initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating-not-filtered'</span>, <span class="org-string">'Rz_period'</span>, 60);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">flex_joint = load(<span class="org-string">'./mat/flexor_025.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
|
||||
apa = load(<span class="org-string">'./mat/APA300ML_simplified_model.mat'</span>);
|
||||
<pre class="src src-matlab"> flex_joint = load(<span class="org-string">'./mat/flexor_025.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
|
||||
apa = load(<span class="org-string">'./mat/APA300ML_simplified_model.mat'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeNanoHexapod(<span class="org-string">'actuator'</span>, <span class="org-string">'amplified'</span>, ...
|
||||
<span class="org-string">'ke'</span>, apa.ke, <span class="org-string">'ka'</span>, apa.ka, <span class="org-string">'k1'</span>, apa.k1, <span class="org-string">'c1'</span>, apa.c1, <span class="org-string">'F_gain'</span>, apa.F_gain, ...
|
||||
<span class="org-string">'type_M'</span>, <span class="org-string">'spherical_3dof'</span>, ...
|
||||
<span class="org-string">'Kr_M'</span>, flex_joint.K(1,1)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Ka_M'</span>, flex_joint.K(3,3)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Kf_M'</span>, flex_joint.K(4,4)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Kt_M'</span>, flex_joint.K(6,6)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'type_F'</span>, <span class="org-string">'spherical_3dof'</span>, ...
|
||||
<span class="org-string">'Kr_F'</span>, flex_joint.K(1,1)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Ka_F'</span>, flex_joint.K(3,3)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Kf_F'</span>, flex_joint.K(4,4)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Kt_F'</span>, flex_joint.K(6,6)<span class="org-type">*</span>ones(6,1));
|
||||
<pre class="src src-matlab"> initializeNanoHexapod(<span class="org-string">'actuator'</span>, <span class="org-string">'amplified'</span>, ...
|
||||
<span class="org-string">'ke'</span>, apa.ke, <span class="org-string">'ka'</span>, apa.ka, <span class="org-string">'k1'</span>, apa.k1, <span class="org-string">'c1'</span>, apa.c1, <span class="org-string">'F_gain'</span>, apa.F_gain, ...
|
||||
<span class="org-string">'type_M'</span>, <span class="org-string">'spherical_3dof'</span>, ...
|
||||
<span class="org-string">'Kr_M'</span>, flex_joint.K(1,1)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Ka_M'</span>, flex_joint.K(3,3)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Kf_M'</span>, flex_joint.K(4,4)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Kt_M'</span>, flex_joint.K(6,6)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'type_F'</span>, <span class="org-string">'spherical_3dof'</span>, ...
|
||||
<span class="org-string">'Kr_F'</span>, flex_joint.K(1,1)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Ka_F'</span>, flex_joint.K(3,3)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Kf_F'</span>, flex_joint.K(4,4)<span class="org-type">*</span>ones(6,1), ...
|
||||
<span class="org-string">'Kt_F'</span>, flex_joint.K(6,6)<span class="org-type">*</span>ones(6,1));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeNanoHexapod();
|
||||
<pre class="src src-matlab"> initializeNanoHexapod();
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org43c7d3c" class="outline-3">
|
||||
<h3 id="org43c7d3c"><span class="section-number-3">4.2</span> Direct Velocity Feedback</h3>
|
||||
<div id="outline-container-orgd889755" class="outline-3">
|
||||
<h3 id="orgd889755"><span class="section-number-3">4.2</span> Direct Velocity Feedback</h3>
|
||||
</div>
|
||||
<div id="outline-container-org056a1de" class="outline-3">
|
||||
<h3 id="org056a1de"><span class="section-number-3">4.3</span> Integral Force Feedback</h3>
|
||||
<div id="outline-container-org12972b2" class="outline-3">
|
||||
<h3 id="org12972b2"><span class="section-number-3">4.3</span> Integral Force Feedback</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-11-03 mar. 09:45</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:09</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,359 +1,354 @@
|
||||
<?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-05-05 mar. 10:33 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Matlab Functions used for the NASS Project</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Matlab Functions used for the NASS Project</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org3fa0f20">1. describeNassSetup</a>
|
||||
<li><a href="#org4210488">1. describeNassSetup</a>
|
||||
<ul>
|
||||
<li><a href="#org3615302">Function description</a></li>
|
||||
<li><a href="#org3b8c4f7">Simscape Configuration</a></li>
|
||||
<li><a href="#org5b65749">Disturbances</a></li>
|
||||
<li><a href="#org59f7825">References</a></li>
|
||||
<li><a href="#org90b1ac8">Controller</a></li>
|
||||
<li><a href="#orgdd5b7a5">Micro-Station</a></li>
|
||||
<li><a href="#org1687c05">Metrology</a></li>
|
||||
<li><a href="#orgee5944e">Nano Hexapod</a></li>
|
||||
<li><a href="#orga499c17">Sample</a></li>
|
||||
<li><a href="#org048d120">Function description</a></li>
|
||||
<li><a href="#orgf678c44">Simscape Configuration</a></li>
|
||||
<li><a href="#org09d336f">Disturbances</a></li>
|
||||
<li><a href="#orgf4f5d8b">References</a></li>
|
||||
<li><a href="#orga131750">Controller</a></li>
|
||||
<li><a href="#org58ad578">Micro-Station</a></li>
|
||||
<li><a href="#org0d8c061">Metrology</a></li>
|
||||
<li><a href="#org61bb891">Nano Hexapod</a></li>
|
||||
<li><a href="#org4eba4ef">Sample</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgdc168b9">2. computeReferencePose</a></li>
|
||||
<li><a href="#org493ab7f">3. Compute the Sample Position Error w.r.t. the NASS</a></li>
|
||||
<li><a href="#org6008c77">2. computeReferencePose</a></li>
|
||||
<li><a href="#org5693f09">3. Compute the Sample Position Error w.r.t. the NASS</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3fa0f20" class="outline-2">
|
||||
<h2 id="org3fa0f20"><span class="section-number-2">1</span> describeNassSetup</h2>
|
||||
<div id="outline-container-org4210488" class="outline-2">
|
||||
<h2 id="org4210488"><span class="section-number-2">1</span> describeNassSetup</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="org0b9cc9d"></a>
|
||||
<a id="org0b45d8b"></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-org3615302" class="outline-3">
|
||||
<h3 id="org3615302">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org3615302">
|
||||
<div id="outline-container-org048d120" class="outline-3">
|
||||
<h3 id="org048d120">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org048d120">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [] = describeNassSetup()
|
||||
% describeNassSetup -
|
||||
%
|
||||
% Syntax: [] = describeNassSetup()
|
||||
%
|
||||
% Inputs:
|
||||
% - -
|
||||
%
|
||||
% Outputs:
|
||||
% - -
|
||||
<pre class="src src-matlab"> <span class="org-keyword">function</span> <span class="org-variable-name">[]</span> = <span class="org-function-name">describeNassSetup</span>()
|
||||
<span class="org-comment">% describeNassSetup -</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Syntax: [] = describeNassSetup()</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Inputs:</span>
|
||||
<span class="org-comment">% - -</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Outputs:</span>
|
||||
<span class="org-comment">% - -</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3b8c4f7" class="outline-3">
|
||||
<h3 id="org3b8c4f7">Simscape Configuration</h3>
|
||||
<div class="outline-text-3" id="text-org3b8c4f7">
|
||||
<div id="outline-container-orgf678c44" class="outline-3">
|
||||
<h3 id="orgf678c44">Simscape Configuration</h3>
|
||||
<div class="outline-text-3" id="text-orgf678c44">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('./mat/conf_simscape.mat', 'conf_simscape');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/conf_simscape.mat'</span>, <span class="org-string">'conf_simscape'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">fprintf('Simscape Configuration:\n');
|
||||
<pre class="src src-matlab"> fprintf(<span class="org-string">'Simscape Configuration:\n'</span>);
|
||||
|
||||
if conf_simscape.type == 1
|
||||
fprintf('- Gravity is included\n');
|
||||
else
|
||||
fprintf('- Gravity is not included\n');
|
||||
end
|
||||
<span class="org-keyword">if</span> conf_simscape.type <span class="org-type">==</span> 1
|
||||
fprintf(<span class="org-string">'- Gravity is included\n'</span>);
|
||||
<span class="org-keyword">else</span>
|
||||
fprintf(<span class="org-string">'- Gravity is not included\n'</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
|
||||
fprintf('\n');
|
||||
fprintf(<span class="org-string">'\n'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5b65749" class="outline-3">
|
||||
<h3 id="org5b65749">Disturbances</h3>
|
||||
<div class="outline-text-3" id="text-org5b65749">
|
||||
<div id="outline-container-org09d336f" class="outline-3">
|
||||
<h3 id="org09d336f">Disturbances</h3>
|
||||
<div class="outline-text-3" id="text-org09d336f">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('./mat/nass_disturbances.mat', 'args');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/nass_disturbances.mat'</span>, <span class="org-string">'args'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">fprintf('Disturbances:\n');
|
||||
if ~args.enable
|
||||
fprintf('- No disturbance is included\n');
|
||||
else
|
||||
if args.Dwx && args.Dwy && args.Dwz
|
||||
fprintf('- Ground motion\n');
|
||||
end
|
||||
if args.Fty_x && args.Fty_z
|
||||
fprintf('- Vibrations of the Translation Stage\n');
|
||||
end
|
||||
if args.Frz_z
|
||||
fprintf('- Vibrations of the Spindle\n');
|
||||
end
|
||||
end
|
||||
fprintf('\n');
|
||||
<pre class="src src-matlab"> fprintf(<span class="org-string">'Disturbances:\n'</span>);
|
||||
<span class="org-keyword">if</span> <span class="org-type">~</span>args.enable
|
||||
fprintf(<span class="org-string">'- No disturbance is included\n'</span>);
|
||||
<span class="org-keyword">else</span>
|
||||
<span class="org-keyword">if</span> args.Dwx <span class="org-type">&&</span> args.Dwy <span class="org-type">&&</span> args.Dwz
|
||||
fprintf(<span class="org-string">'- Ground motion\n'</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
<span class="org-keyword">if</span> args.Fty_x <span class="org-type">&&</span> args.Fty_z
|
||||
fprintf(<span class="org-string">'- Vibrations of the Translation Stage\n'</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
<span class="org-keyword">if</span> args.Frz_z
|
||||
fprintf(<span class="org-string">'- Vibrations of the Spindle\n'</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
<span class="org-keyword">end</span>
|
||||
fprintf(<span class="org-string">'\n'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org59f7825" class="outline-3">
|
||||
<h3 id="org59f7825">References</h3>
|
||||
<div class="outline-text-3" id="text-org59f7825">
|
||||
<div id="outline-container-orgf4f5d8b" class="outline-3">
|
||||
<h3 id="orgf4f5d8b">References</h3>
|
||||
<div class="outline-text-3" id="text-orgf4f5d8b">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('./mat/nass_references.mat', 'args');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/nass_references.mat'</span>, <span class="org-string">'args'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">fprintf('Reference Tracking:\n');
|
||||
fprintf('- Translation Stage:\n');
|
||||
switch args.Dy_type
|
||||
case 'constant'
|
||||
fprintf(' - Constant Position\n');
|
||||
fprintf(' - Dy = %.0f [mm]\n', args.Dy_amplitude*1e3);
|
||||
case 'triangular'
|
||||
fprintf(' - Triangular Path\n');
|
||||
fprintf(' - Amplitude = %.0f [mm]\n', args.Dy_amplitude*1e3);
|
||||
fprintf(' - Period = %.0f [s]\n', args.Dy_period);
|
||||
case 'sinusoidal'
|
||||
fprintf(' - Sinusoidal Path\n');
|
||||
fprintf(' - Amplitude = %.0f [mm]\n', args.Dy_amplitude*1e3);
|
||||
fprintf(' - Period = %.0f [s]\n', args.Dy_period);
|
||||
end
|
||||
<pre class="src src-matlab"> fprintf(<span class="org-string">'Reference Tracking:\n'</span>);
|
||||
fprintf(<span class="org-string">'- Translation Stage:\n'</span>);
|
||||
<span class="org-keyword">switch</span> <span class="org-constant">args.Dy_type</span>
|
||||
<span class="org-keyword">case</span> <span class="org-string">'constant'</span>
|
||||
fprintf(<span class="org-string">' - Constant Position\n'</span>);
|
||||
fprintf(<span class="org-string">' - Dy = %.0f [mm]\n'</span>, args.Dy_amplitude<span class="org-type">*</span>1e3);
|
||||
<span class="org-keyword">case</span> <span class="org-string">'triangular'</span>
|
||||
fprintf(<span class="org-string">' - Triangular Path\n'</span>);
|
||||
fprintf(<span class="org-string">' - Amplitude = %.0f [mm]\n'</span>, args.Dy_amplitude<span class="org-type">*</span>1e3);
|
||||
fprintf(<span class="org-string">' - Period = %.0f [s]\n'</span>, args.Dy_period);
|
||||
<span class="org-keyword">case</span> <span class="org-string">'sinusoidal'</span>
|
||||
fprintf(<span class="org-string">' - Sinusoidal Path\n'</span>);
|
||||
fprintf(<span class="org-string">' - Amplitude = %.0f [mm]\n'</span>, args.Dy_amplitude<span class="org-type">*</span>1e3);
|
||||
fprintf(<span class="org-string">' - Period = %.0f [s]\n'</span>, args.Dy_period);
|
||||
<span class="org-keyword">end</span>
|
||||
|
||||
fprintf('- Tilt Stage:\n');
|
||||
switch args.Ry_type
|
||||
case 'constant'
|
||||
fprintf(' - Constant Position\n');
|
||||
fprintf(' - Ry = %.0f [mm]\n', args.Ry_amplitude*1e3);
|
||||
case 'triangular'
|
||||
fprintf(' - Triangular Path\n');
|
||||
fprintf(' - Amplitude = %.0f [mm]\n', args.Ry_amplitude*1e3);
|
||||
fprintf(' - Period = %.0f [s]\n', args.Ry_period);
|
||||
case 'sinusoidal'
|
||||
fprintf(' - Sinusoidal Path\n');
|
||||
fprintf(' - Amplitude = %.0f [mm]\n', args.Ry_amplitude*1e3);
|
||||
fprintf(' - Period = %.0f [s]\n', args.Ry_period);
|
||||
end
|
||||
fprintf(<span class="org-string">'- Tilt Stage:\n'</span>);
|
||||
<span class="org-keyword">switch</span> <span class="org-constant">args.Ry_type</span>
|
||||
<span class="org-keyword">case</span> <span class="org-string">'constant'</span>
|
||||
fprintf(<span class="org-string">' - Constant Position\n'</span>);
|
||||
fprintf(<span class="org-string">' - Ry = %.0f [mm]\n'</span>, args.Ry_amplitude<span class="org-type">*</span>1e3);
|
||||
<span class="org-keyword">case</span> <span class="org-string">'triangular'</span>
|
||||
fprintf(<span class="org-string">' - Triangular Path\n'</span>);
|
||||
fprintf(<span class="org-string">' - Amplitude = %.0f [mm]\n'</span>, args.Ry_amplitude<span class="org-type">*</span>1e3);
|
||||
fprintf(<span class="org-string">' - Period = %.0f [s]\n'</span>, args.Ry_period);
|
||||
<span class="org-keyword">case</span> <span class="org-string">'sinusoidal'</span>
|
||||
fprintf(<span class="org-string">' - Sinusoidal Path\n'</span>);
|
||||
fprintf(<span class="org-string">' - Amplitude = %.0f [mm]\n'</span>, args.Ry_amplitude<span class="org-type">*</span>1e3);
|
||||
fprintf(<span class="org-string">' - Period = %.0f [s]\n'</span>, args.Ry_period);
|
||||
<span class="org-keyword">end</span>
|
||||
|
||||
fprintf('- Spindle:\n');
|
||||
switch args.Rz_type
|
||||
case 'constant'
|
||||
fprintf(' - Constant Position\n');
|
||||
fprintf(' - Rz = %.0f [deg]\n', 180/pi*args.Rz_amplitude);
|
||||
case { 'rotating', 'rotating-not-filtered' }
|
||||
fprintf(' - Rotating\n');
|
||||
fprintf(' - Speed = %.0f [rpm]\n', 60/args.Rz_period);
|
||||
end
|
||||
fprintf(<span class="org-string">'- Spindle:\n'</span>);
|
||||
<span class="org-keyword">switch</span> <span class="org-constant">args.Rz_type</span>
|
||||
<span class="org-keyword">case</span> <span class="org-string">'constant'</span>
|
||||
fprintf(<span class="org-string">' - Constant Position\n'</span>);
|
||||
fprintf(<span class="org-string">' - Rz = %.0f [deg]\n'</span>, 180<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>args.Rz_amplitude);
|
||||
<span class="org-keyword">case</span> { <span class="org-string">'rotating'</span>, <span class="org-string">'rotating-not-filtered'</span> }
|
||||
fprintf(<span class="org-string">' - Rotating\n'</span>);
|
||||
fprintf(<span class="org-string">' - Speed = %.0f [rpm]\n'</span>, 60<span class="org-type">/</span>args.Rz_period);
|
||||
<span class="org-keyword">end</span>
|
||||
|
||||
|
||||
fprintf('- Micro Hexapod:\n');
|
||||
switch args.Dh_type
|
||||
case 'constant'
|
||||
fprintf(' - Constant Position\n');
|
||||
fprintf(' - Dh = %.0f, %.0f, %.0f [mm]\n', args.Dh_pos(1), args.Dh_pos(2), args.Dh_pos(3));
|
||||
fprintf(' - Rh = %.0f, %.0f, %.0f [deg]\n', args.Dh_pos(4), args.Dh_pos(5), args.Dh_pos(6));
|
||||
end
|
||||
fprintf(<span class="org-string">'- Micro Hexapod:\n'</span>);
|
||||
<span class="org-keyword">switch</span> <span class="org-constant">args.Dh_type</span>
|
||||
<span class="org-keyword">case</span> <span class="org-string">'constant'</span>
|
||||
fprintf(<span class="org-string">' - Constant Position\n'</span>);
|
||||
fprintf(<span class="org-string">' - Dh = %.0f, %.0f, %.0f [mm]\n'</span>, args.Dh_pos(1), args.Dh_pos(2), args.Dh_pos(3));
|
||||
fprintf(<span class="org-string">' - Rh = %.0f, %.0f, %.0f [deg]\n'</span>, args.Dh_pos(4), args.Dh_pos(5), args.Dh_pos(6));
|
||||
<span class="org-keyword">end</span>
|
||||
|
||||
fprintf('\n');
|
||||
fprintf(<span class="org-string">'\n'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org90b1ac8" class="outline-3">
|
||||
<h3 id="org90b1ac8">Controller</h3>
|
||||
<div class="outline-text-3" id="text-org90b1ac8">
|
||||
<div id="outline-container-orga131750" class="outline-3">
|
||||
<h3 id="orga131750">Controller</h3>
|
||||
<div class="outline-text-3" id="text-orga131750">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('./mat/controller.mat', 'controller');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/controller.mat'</span>, <span class="org-string">'controller'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">fprintf('Controller:\n');
|
||||
fprintf('- %s\n', controller.name);
|
||||
fprintf('\n');
|
||||
<pre class="src src-matlab"> fprintf(<span class="org-string">'Controller:\n'</span>);
|
||||
fprintf(<span class="org-string">'- %s\n'</span>, controller.name);
|
||||
fprintf(<span class="org-string">'\n'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdd5b7a5" class="outline-3">
|
||||
<h3 id="orgdd5b7a5">Micro-Station</h3>
|
||||
<div class="outline-text-3" id="text-orgdd5b7a5">
|
||||
<div id="outline-container-org58ad578" class="outline-3">
|
||||
<h3 id="org58ad578">Micro-Station</h3>
|
||||
<div class="outline-text-3" id="text-org58ad578">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('./mat/stages.mat', 'ground', 'granite', 'ty', 'ry', 'rz', 'micro_hexapod', 'axisc');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/stages.mat'</span>, <span class="org-string">'ground'</span>, <span class="org-string">'granite'</span>, <span class="org-string">'ty'</span>, <span class="org-string">'ry'</span>, <span class="org-string">'rz'</span>, <span class="org-string">'micro_hexapod'</span>, <span class="org-string">'axisc'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">fprintf('Micro Station:\n');
|
||||
<pre class="src src-matlab"> fprintf(<span class="org-string">'Micro Station:\n'</span>);
|
||||
|
||||
if granite.type == 1 && ...
|
||||
ty.type == 1 && ...
|
||||
ry.type == 1 && ...
|
||||
rz.type == 1 && ...
|
||||
micro_hexapod.type == 1;
|
||||
fprintf('- All stages are rigid\n');
|
||||
elseif granite.type == 2 && ...
|
||||
ty.type == 2 && ...
|
||||
ry.type == 2 && ...
|
||||
rz.type == 2 && ...
|
||||
micro_hexapod.type == 2;
|
||||
fprintf('- All stages are flexible\n');
|
||||
else
|
||||
if granite.type == 1 || granite.type == 4
|
||||
fprintf('- Granite is rigid\n');
|
||||
else
|
||||
fprintf('- Granite is flexible\n');
|
||||
end
|
||||
if ty.type == 1 || ty.type == 4
|
||||
fprintf('- Translation Stage is rigid\n');
|
||||
else
|
||||
fprintf('- Translation Stage is flexible\n');
|
||||
end
|
||||
if ry.type == 1 || ry.type == 4
|
||||
fprintf('- Tilt Stage is rigid\n');
|
||||
else
|
||||
fprintf('- Tilt Stage is flexible\n');
|
||||
end
|
||||
if rz.type == 1 || rz.type == 4
|
||||
fprintf('- Spindle is rigid\n');
|
||||
else
|
||||
fprintf('- Spindle is flexible\n');
|
||||
end
|
||||
if micro_hexapod.type == 1 || micro_hexapod.type == 4
|
||||
fprintf('- Micro Hexapod is rigid\n');
|
||||
else
|
||||
fprintf('- Micro Hexapod is flexible\n');
|
||||
end
|
||||
<span class="org-keyword">if</span> granite.type <span class="org-type">==</span> 1 <span class="org-type">&&</span> ...
|
||||
ty.type <span class="org-type">==</span> 1 <span class="org-type">&&</span> ...
|
||||
ry.type <span class="org-type">==</span> 1 <span class="org-type">&&</span> ...
|
||||
rz.type <span class="org-type">==</span> 1 <span class="org-type">&&</span> ...
|
||||
micro_hexapod.type <span class="org-type">==</span> 1;
|
||||
fprintf(<span class="org-string">'- All stages are rigid\n'</span>);
|
||||
<span class="org-keyword">elseif</span> granite.type <span class="org-type">==</span> 2 <span class="org-type">&&</span> ...
|
||||
ty.type <span class="org-type">==</span> 2 <span class="org-type">&&</span> ...
|
||||
ry.type <span class="org-type">==</span> 2 <span class="org-type">&&</span> ...
|
||||
rz.type <span class="org-type">==</span> 2 <span class="org-type">&&</span> ...
|
||||
micro_hexapod.type <span class="org-type">==</span> 2;
|
||||
fprintf(<span class="org-string">'- All stages are flexible\n'</span>);
|
||||
<span class="org-keyword">else</span>
|
||||
<span class="org-keyword">if</span> granite.type <span class="org-type">==</span> 1 <span class="org-type">||</span> granite.type <span class="org-type">==</span> 4
|
||||
fprintf(<span class="org-string">'- Granite is rigid\n'</span>);
|
||||
<span class="org-keyword">else</span>
|
||||
fprintf(<span class="org-string">'- Granite is flexible\n'</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
<span class="org-keyword">if</span> ty.type <span class="org-type">==</span> 1 <span class="org-type">||</span> ty.type <span class="org-type">==</span> 4
|
||||
fprintf(<span class="org-string">'- Translation Stage is rigid\n'</span>);
|
||||
<span class="org-keyword">else</span>
|
||||
fprintf(<span class="org-string">'- Translation Stage is flexible\n'</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
<span class="org-keyword">if</span> ry.type <span class="org-type">==</span> 1 <span class="org-type">||</span> ry.type <span class="org-type">==</span> 4
|
||||
fprintf(<span class="org-string">'- Tilt Stage is rigid\n'</span>);
|
||||
<span class="org-keyword">else</span>
|
||||
fprintf(<span class="org-string">'- Tilt Stage is flexible\n'</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
<span class="org-keyword">if</span> rz.type <span class="org-type">==</span> 1 <span class="org-type">||</span> rz.type <span class="org-type">==</span> 4
|
||||
fprintf(<span class="org-string">'- Spindle is rigid\n'</span>);
|
||||
<span class="org-keyword">else</span>
|
||||
fprintf(<span class="org-string">'- Spindle is flexible\n'</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
<span class="org-keyword">if</span> micro_hexapod.type <span class="org-type">==</span> 1 <span class="org-type">||</span> micro_hexapod.type <span class="org-type">==</span> 4
|
||||
fprintf(<span class="org-string">'- Micro Hexapod is rigid\n'</span>);
|
||||
<span class="org-keyword">else</span>
|
||||
fprintf(<span class="org-string">'- Micro Hexapod is flexible\n'</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
|
||||
end
|
||||
<span class="org-keyword">end</span>
|
||||
|
||||
fprintf('\n');
|
||||
fprintf(<span class="org-string">'\n'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1687c05" class="outline-3">
|
||||
<h3 id="org1687c05">Metrology</h3>
|
||||
<div class="outline-text-3" id="text-org1687c05">
|
||||
<div id="outline-container-org0d8c061" class="outline-3">
|
||||
<h3 id="org0d8c061">Metrology</h3>
|
||||
<div class="outline-text-3" id="text-org0d8c061">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('./mat/stages.mat', 'mirror');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/stages.mat'</span>, <span class="org-string">'mirror'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">fprintf('Reference Mirror:\n');
|
||||
<pre class="src src-matlab"> fprintf(<span class="org-string">'Reference Mirror:\n'</span>);
|
||||
|
||||
if mirror.type == 2;
|
||||
fprintf('- flexible fixation\n');
|
||||
fprintf('- w = %.0f [Hz]\n', mirror.freq(1));
|
||||
else
|
||||
fprintf('- rigidly attached to the nano-hexapod\n');
|
||||
end
|
||||
fprintf('- m = %.0f [kg]\n', mirror.mass);
|
||||
fprintf('\n');
|
||||
<span class="org-keyword">if</span> mirror.type <span class="org-type">==</span> 2;
|
||||
fprintf(<span class="org-string">'- flexible fixation\n'</span>);
|
||||
fprintf(<span class="org-string">'- w = %.0f [Hz]\n'</span>, mirror.freq(1));
|
||||
<span class="org-keyword">else</span>
|
||||
fprintf(<span class="org-string">'- rigidly attached to the nano-hexapod\n'</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
fprintf(<span class="org-string">'- m = %.0f [kg]\n'</span>, mirror.mass);
|
||||
fprintf(<span class="org-string">'\n'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgee5944e" class="outline-3">
|
||||
<h3 id="orgee5944e">Nano Hexapod</h3>
|
||||
<div class="outline-text-3" id="text-orgee5944e">
|
||||
<div id="outline-container-org61bb891" class="outline-3">
|
||||
<h3 id="org61bb891">Nano Hexapod</h3>
|
||||
<div class="outline-text-3" id="text-org61bb891">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('./mat/stages.mat', 'nano_hexapod');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/stages.mat'</span>, <span class="org-string">'nano_hexapod'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">fprintf('Nano Hexapod:\n');
|
||||
<pre class="src src-matlab"> fprintf(<span class="org-string">'Nano Hexapod:\n'</span>);
|
||||
|
||||
if nano_hexapod.type == 0;
|
||||
fprintf('- no included\n');
|
||||
elseif nano_hexapod.type == 1 || nano_hexapod.type == 3;
|
||||
fprintf('- rigid\n');
|
||||
elseif nano_hexapod.type == 2;
|
||||
fprintf('- flexible\n');
|
||||
fprintf('- Ki = %.0g [N/m]\n', nano_hexapod.actuators.K(1));
|
||||
end
|
||||
<span class="org-keyword">if</span> nano_hexapod.type <span class="org-type">==</span> 0;
|
||||
fprintf(<span class="org-string">'- no included\n'</span>);
|
||||
<span class="org-keyword">elseif</span> nano_hexapod.type <span class="org-type">==</span> 1 <span class="org-type">||</span> nano_hexapod.type <span class="org-type">==</span> 3;
|
||||
fprintf(<span class="org-string">'- rigid\n'</span>);
|
||||
<span class="org-keyword">elseif</span> nano_hexapod.type <span class="org-type">==</span> 2;
|
||||
fprintf(<span class="org-string">'- flexible\n'</span>);
|
||||
fprintf(<span class="org-string">'- Ki = %.0g [N/m]\n'</span>, nano_hexapod.actuators.K(1));
|
||||
<span class="org-keyword">end</span>
|
||||
|
||||
fprintf('\n');
|
||||
fprintf(<span class="org-string">'\n'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga499c17" class="outline-3">
|
||||
<h3 id="orga499c17">Sample</h3>
|
||||
<div class="outline-text-3" id="text-orga499c17">
|
||||
<div id="outline-container-org4eba4ef" class="outline-3">
|
||||
<h3 id="org4eba4ef">Sample</h3>
|
||||
<div class="outline-text-3" id="text-org4eba4ef">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('./mat/stages.mat', 'sample');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'./mat/stages.mat'</span>, <span class="org-string">'sample'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">fprintf('Sample:\n');
|
||||
<pre class="src src-matlab"> fprintf(<span class="org-string">'Sample:\n'</span>);
|
||||
|
||||
if sample.type == 0;
|
||||
fprintf('- no included\n');
|
||||
elseif sample.type == 1 || sample.type == 3;
|
||||
fprintf('- rigid\n');
|
||||
fprintf('- mass = %.0f [kg]\n', sample.mass);
|
||||
fprintf('- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n', sample.inertia(1), sample.inertia(2), sample.inertia(3));
|
||||
elseif sample.type == 2;
|
||||
fprintf('- flexible\n');
|
||||
fprintf('- mass = %.0f [kg]\n', sample.mass);
|
||||
fprintf('- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n', sample.inertia(1), sample.inertia(2), sample.inertia(3));
|
||||
% fprintf('- Kt = %.0g, %.0g, %.0g [N/m]\n', sample.K(1), sample.K(2), sample.K(3));
|
||||
% fprintf('- Kr = %.0g, %.0g, %.0g [Nm/rad]\n', sample.K(4), sample.K(5), sample.K(6));
|
||||
fprintf('- wt(x,y,z) = %.0f, %.0f, %.0f [Hz]\n', 1/2/pi*sqrt(sample.K(1)/sample.mass), 1/2/pi*sqrt(sample.K(1)/sample.mass), 1/2/pi*sqrt(sample.K(1)/sample.mass));
|
||||
fprintf('- wr(x,y,z) = %.0f, %.0f, %.0f [Hz]\n', 1/2/pi*sqrt(sample.K(4)/sample.inertia(1)), 1/2/pi*sqrt(sample.K(5)/sample.inertia(2)), 1/2/pi*sqrt(sample.K(6)/sample.inertia(3)));
|
||||
end
|
||||
fprintf('\n');
|
||||
<span class="org-keyword">if</span> sample.type <span class="org-type">==</span> 0;
|
||||
fprintf(<span class="org-string">'- no included\n'</span>);
|
||||
<span class="org-keyword">elseif</span> sample.type <span class="org-type">==</span> 1 <span class="org-type">||</span> sample.type <span class="org-type">==</span> 3;
|
||||
fprintf(<span class="org-string">'- rigid\n'</span>);
|
||||
fprintf(<span class="org-string">'- mass = %.0f [kg]\n'</span>, sample.mass);
|
||||
fprintf(<span class="org-string">'- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n'</span>, sample.inertia(1), sample.inertia(2), sample.inertia(3));
|
||||
<span class="org-keyword">elseif</span> sample.type <span class="org-type">==</span> 2;
|
||||
fprintf(<span class="org-string">'- flexible\n'</span>);
|
||||
fprintf(<span class="org-string">'- mass = %.0f [kg]\n'</span>, sample.mass);
|
||||
fprintf(<span class="org-string">'- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n'</span>, sample.inertia(1), sample.inertia(2), sample.inertia(3));
|
||||
<span class="org-comment">% fprintf('- Kt = %.0g, %.0g, %.0g [N/m]\n', sample.K(1), sample.K(2), sample.K(3));</span>
|
||||
<span class="org-comment">% fprintf('- Kr = %.0g, %.0g, %.0g [Nm/rad]\n', sample.K(4), sample.K(5), sample.K(6));</span>
|
||||
fprintf(<span class="org-string">'- wt(x,y,z) = %.0f, %.0f, %.0f [Hz]\n'</span>, 1<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>sqrt(sample.K(1)<span class="org-type">/</span>sample.mass), 1<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>sqrt(sample.K(1)<span class="org-type">/</span>sample.mass), 1<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>sqrt(sample.K(1)<span class="org-type">/</span>sample.mass));
|
||||
fprintf(<span class="org-string">'- wr(x,y,z) = %.0f, %.0f, %.0f [Hz]\n'</span>, 1<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>sqrt(sample.K(4)<span class="org-type">/</span>sample.inertia(1)), 1<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>sqrt(sample.K(5)<span class="org-type">/</span>sample.inertia(2)), 1<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>sqrt(sample.K(6)<span class="org-type">/</span>sample.inertia(3)));
|
||||
<span class="org-keyword">end</span>
|
||||
fprintf(<span class="org-string">'\n'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdc168b9" class="outline-2">
|
||||
<h2 id="orgdc168b9"><span class="section-number-2">2</span> computeReferencePose</h2>
|
||||
<div id="outline-container-org6008c77" class="outline-2">
|
||||
<h2 id="org6008c77"><span class="section-number-2">2</span> computeReferencePose</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="org98cbe6e"></a>
|
||||
<a id="orgdaeb489"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -361,93 +356,93 @@ This Matlab function is accessible <a href="..//src/computeReferencePose.m">here
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [WTr] = computeReferencePose(Dy, Ry, Rz, Dh, Dn)
|
||||
% computeReferencePose - Compute the homogeneous transformation matrix corresponding to the wanted pose of the sample
|
||||
%
|
||||
% Syntax: [WTr] = computeReferencePose(Dy, Ry, Rz, Dh, Dn)
|
||||
%
|
||||
% Inputs:
|
||||
% - Dy - Reference of the Translation Stage [m]
|
||||
% - Ry - Reference of the Tilt Stage [rad]
|
||||
% - Rz - Reference of the Spindle [rad]
|
||||
% - Dh - Reference of the Micro Hexapod (Pitch, Roll, Yaw angles) [m, m, m, rad, rad, rad]
|
||||
% - Dn - Reference of the Nano Hexapod [m, m, m, rad, rad, rad]
|
||||
%
|
||||
% Outputs:
|
||||
% - WTr -
|
||||
<pre class="src src-matlab"> <span class="org-keyword">function</span> <span class="org-variable-name">[WTr]</span> = <span class="org-function-name">computeReferencePose</span>(<span class="org-variable-name">Dy</span>, <span class="org-variable-name">Ry</span>, <span class="org-variable-name">Rz</span>, <span class="org-variable-name">Dh</span>, <span class="org-variable-name">Dn</span>)
|
||||
<span class="org-comment">% computeReferencePose - Compute the homogeneous transformation matrix corresponding to the wanted pose of the sample</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Syntax: [WTr] = computeReferencePose(Dy, Ry, Rz, Dh, Dn)</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Inputs:</span>
|
||||
<span class="org-comment">% - Dy - Reference of the Translation Stage [m]</span>
|
||||
<span class="org-comment">% - Ry - Reference of the Tilt Stage [rad]</span>
|
||||
<span class="org-comment">% - Rz - Reference of the Spindle [rad]</span>
|
||||
<span class="org-comment">% - Dh - Reference of the Micro Hexapod (Pitch, Roll, Yaw angles) [m, m, m, rad, rad, rad]</span>
|
||||
<span class="org-comment">% - Dn - Reference of the Nano Hexapod [m, m, m, rad, rad, rad]</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Outputs:</span>
|
||||
<span class="org-comment">% - WTr -</span>
|
||||
|
||||
%% Translation Stage
|
||||
Rty = [1 0 0 0;
|
||||
0 1 0 Dy;
|
||||
0 0 1 0;
|
||||
0 0 0 1];
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Translation Stage</span></span>
|
||||
Rty = [1 0 0 0;
|
||||
0 1 0 Dy;
|
||||
0 0 1 0;
|
||||
0 0 0 1];
|
||||
|
||||
%% Tilt Stage - Pure rotating aligned with Ob
|
||||
Rry = [ cos(Ry) 0 sin(Ry) 0;
|
||||
0 1 0 0;
|
||||
-sin(Ry) 0 cos(Ry) 0;
|
||||
0 0 0 1];
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Tilt Stage - Pure rotating aligned with Ob</span></span>
|
||||
Rry = [ 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];
|
||||
|
||||
%% Spindle - Rotation along the Z axis
|
||||
Rrz = [cos(Rz) -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">%% Spindle - Rotation along the Z axis</span></span>
|
||||
Rrz = [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 ];
|
||||
|
||||
|
||||
%% Micro-Hexapod
|
||||
Rhx = [1 0 0;
|
||||
0 cos(Dh(4)) -sin(Dh(4));
|
||||
0 sin(Dh(4)) cos(Dh(4))];
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Micro-Hexapod</span></span>
|
||||
Rhx = [1 0 0;
|
||||
0 cos(Dh(4)) <span class="org-type">-</span>sin(Dh(4));
|
||||
0 sin(Dh(4)) cos(Dh(4))];
|
||||
|
||||
Rhy = [ cos(Dh(5)) 0 sin(Dh(5));
|
||||
0 1 0;
|
||||
-sin(Dh(5)) 0 cos(Dh(5))];
|
||||
Rhy = [ cos(Dh(5)) 0 sin(Dh(5));
|
||||
0 1 0;
|
||||
<span class="org-type">-</span>sin(Dh(5)) 0 cos(Dh(5))];
|
||||
|
||||
Rhz = [cos(Dh(6)) -sin(Dh(6)) 0;
|
||||
sin(Dh(6)) cos(Dh(6)) 0;
|
||||
0 0 1];
|
||||
Rhz = [cos(Dh(6)) <span class="org-type">-</span>sin(Dh(6)) 0;
|
||||
sin(Dh(6)) cos(Dh(6)) 0;
|
||||
0 0 1];
|
||||
|
||||
Rh = [1 0 0 Dh(1) ;
|
||||
0 1 0 Dh(2) ;
|
||||
0 0 1 Dh(3) ;
|
||||
0 0 0 1 ];
|
||||
Rh = [1 0 0 Dh(1) ;
|
||||
0 1 0 Dh(2) ;
|
||||
0 0 1 Dh(3) ;
|
||||
0 0 0 1 ];
|
||||
|
||||
Rh(1:3, 1:3) = Rhz*Rhy*Rhx;
|
||||
Rh(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3) = Rhz<span class="org-type">*</span>Rhy<span class="org-type">*</span>Rhx;
|
||||
|
||||
%% Nano-Hexapod
|
||||
Rnx = [1 0 0;
|
||||
0 cos(Dn(4)) -sin(Dn(4));
|
||||
0 sin(Dn(4)) cos(Dn(4))];
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Nano-Hexapod</span></span>
|
||||
Rnx = [1 0 0;
|
||||
0 cos(Dn(4)) <span class="org-type">-</span>sin(Dn(4));
|
||||
0 sin(Dn(4)) cos(Dn(4))];
|
||||
|
||||
Rny = [ cos(Dn(5)) 0 sin(Dn(5));
|
||||
0 1 0;
|
||||
-sin(Dn(5)) 0 cos(Dn(5))];
|
||||
Rny = [ cos(Dn(5)) 0 sin(Dn(5));
|
||||
0 1 0;
|
||||
<span class="org-type">-</span>sin(Dn(5)) 0 cos(Dn(5))];
|
||||
|
||||
Rnz = [cos(Dn(6)) -sin(Dn(6)) 0;
|
||||
sin(Dn(6)) cos(Dn(6)) 0;
|
||||
0 0 1];
|
||||
Rnz = [cos(Dn(6)) <span class="org-type">-</span>sin(Dn(6)) 0;
|
||||
sin(Dn(6)) cos(Dn(6)) 0;
|
||||
0 0 1];
|
||||
|
||||
Rn = [1 0 0 Dn(1) ;
|
||||
0 1 0 Dn(2) ;
|
||||
0 0 1 Dn(3) ;
|
||||
0 0 0 1 ];
|
||||
Rn = [1 0 0 Dn(1) ;
|
||||
0 1 0 Dn(2) ;
|
||||
0 0 1 Dn(3) ;
|
||||
0 0 0 1 ];
|
||||
|
||||
Rn(1:3, 1:3) = Rnz*Rny*Rnx;
|
||||
Rn(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3) = Rnz<span class="org-type">*</span>Rny<span class="org-type">*</span>Rnx;
|
||||
|
||||
%% Total Homogeneous transformation
|
||||
WTr = Rty*Rry*Rrz*Rh*Rn;
|
||||
end
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Total Homogeneous transformation</span></span>
|
||||
WTr = Rty<span class="org-type">*</span>Rry<span class="org-type">*</span>Rrz<span class="org-type">*</span>Rh<span class="org-type">*</span>Rn;
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org493ab7f" class="outline-2">
|
||||
<h2 id="org493ab7f"><span class="section-number-2">3</span> Compute the Sample Position Error w.r.t. the NASS</h2>
|
||||
<div id="outline-container-org5693f09" class="outline-2">
|
||||
<h2 id="org5693f09"><span class="section-number-2">3</span> Compute the Sample Position Error w.r.t. the NASS</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="org6dcd4fb"></a>
|
||||
<a id="org7e4ab10"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -455,26 +450,26 @@ This Matlab function is accessible <a href="..//src/computeSampleError.m">here</
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [MTr] = computeSampleError(WTm, WTr)
|
||||
% computeSampleError -
|
||||
%
|
||||
% Syntax: [MTr] = computeSampleError(WTm, WTr)
|
||||
%
|
||||
% Inputs:
|
||||
% - WTm - Homoegeneous transformation that represent the
|
||||
% wanted pose of the sample with respect to the granite
|
||||
% - WTr - Homoegeneous transformation that represent the
|
||||
% measured pose of the sample with respect to the granite
|
||||
%
|
||||
% Outputs:
|
||||
% - MTr - Homoegeneous transformation that represent the
|
||||
% wanted pose of the sample expressed in a frame
|
||||
% attached to the top platform of the nano-hexapod
|
||||
<pre class="src src-matlab"> <span class="org-keyword">function</span> <span class="org-variable-name">[MTr]</span> = <span class="org-function-name">computeSampleError</span>(<span class="org-variable-name">WTm</span>, <span class="org-variable-name">WTr</span>)
|
||||
<span class="org-comment">% computeSampleError -</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Syntax: [MTr] = computeSampleError(WTm, WTr)</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Inputs:</span>
|
||||
<span class="org-comment">% - WTm - Homoegeneous transformation that represent the</span>
|
||||
<span class="org-comment">% wanted pose of the sample with respect to the granite</span>
|
||||
<span class="org-comment">% - WTr - Homoegeneous transformation that represent the</span>
|
||||
<span class="org-comment">% measured pose of the sample with respect to the granite</span>
|
||||
<span class="org-comment">%</span>
|
||||
<span class="org-comment">% Outputs:</span>
|
||||
<span class="org-comment">% - MTr - Homoegeneous transformation that represent the</span>
|
||||
<span class="org-comment">% wanted pose of the sample expressed in a frame</span>
|
||||
<span class="org-comment">% attached to the top platform of the nano-hexapod</span>
|
||||
|
||||
MTr = zeros(4,4);
|
||||
MTr = zeros(4,4);
|
||||
|
||||
MTr = [WTm(1:3,1:3)', -WTm(1:3,1:3)'*WTm(1:3,4) ; 0 0 0 1]*WTr;
|
||||
end
|
||||
MTr = [WTm(1<span class="org-type">:</span>3,1<span class="org-type">:</span>3)<span class="org-type">'</span>, <span class="org-type">-</span>WTm(1<span class="org-type">:</span>3,1<span class="org-type">:</span>3)<span class="org-type">'*</span>WTm(1<span class="org-type">:</span>3,4) ; 0 0 0 1]<span class="org-type">*</span>WTr;
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -482,7 +477,7 @@ end
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-05 mar. 10:33</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,53 +3,58 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-09-01 mar. 13:47 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Identification</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Identification</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org2770d63">1. Some notes about the Simscape Model</a></li>
|
||||
<li><a href="#org66149fc">2. Compare with measurements at the CoM of each element</a>
|
||||
<li><a href="#org5582ea0">1. Some notes about the Simscape Model</a></li>
|
||||
<li><a href="#orgf85a160">2. Compare with measurements at the CoM of each element</a>
|
||||
<ul>
|
||||
<li><a href="#orgcfb741d">2.1. Prepare the Simulation</a></li>
|
||||
<li><a href="#orgec82ba2">2.2. Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</a></li>
|
||||
<li><a href="#org57b3870">2.3. Create a frame at the CoM of each solid body</a></li>
|
||||
<li><a href="#orgc263d1a">2.4. Identification of the dynamics of the Simscape Model</a></li>
|
||||
<li><a href="#org0c6ab2b">2.5. Compare with measurements</a></li>
|
||||
<li><a href="#orge69d679">2.1. Prepare the Simulation</a></li>
|
||||
<li><a href="#orgb9afb3f">2.2. Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</a></li>
|
||||
<li><a href="#org2138392">2.3. Create a frame at the CoM of each solid body</a></li>
|
||||
<li><a href="#orgd2f0b7f">2.4. Identification of the dynamics of the Simscape Model</a></li>
|
||||
<li><a href="#org46896c0">2.5. Compare with measurements</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org4704f01">3. Obtained Compliance of the Micro-Station</a>
|
||||
<li><a href="#org4b5f363">3. Obtained Compliance of the Micro-Station</a>
|
||||
<ul>
|
||||
<li><a href="#orge0c91d3">3.1. Initialization</a></li>
|
||||
<li><a href="#org177dd40">3.1. Initialization</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orga1de7a7">4. Conclusion</a></li>
|
||||
<li><a href="#orgba8bb2d">4. Conclusion</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -70,8 +75,8 @@ We can then compare the measured Frequency Response Functions with the identifie
|
||||
Finally, this should help to tune the parameters of the model such that the dynamics is closer to the measured FRF.
|
||||
</p>
|
||||
|
||||
<div id="outline-container-org2770d63" class="outline-2">
|
||||
<h2 id="org2770d63"><span class="section-number-2">1</span> Some notes about the Simscape Model</h2>
|
||||
<div id="outline-container-org5582ea0" class="outline-2">
|
||||
<h2 id="org5582ea0"><span class="section-number-2">1</span> Some notes about the Simscape Model</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
The Simscape Model of the micro-station consists of several solid bodies:
|
||||
@ -97,18 +102,18 @@ Some of the springs and dampers values can be estimated from the joints/stages s
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org66149fc" class="outline-2">
|
||||
<h2 id="org66149fc"><span class="section-number-2">2</span> Compare with measurements at the CoM of each element</h2>
|
||||
<div id="outline-container-orgf85a160" class="outline-2">
|
||||
<h2 id="orgf85a160"><span class="section-number-2">2</span> Compare with measurements at the CoM of each element</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
</div>
|
||||
<div id="outline-container-orgcfb741d" class="outline-3">
|
||||
<h3 id="orgcfb741d"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
|
||||
<div id="outline-container-orge69d679" class="outline-3">
|
||||
<h3 id="orge69d679"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
We load the configuration.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('mat/conf_simulink.mat');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'mat/conf_simulink.mat'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -116,7 +121,7 @@ We load the configuration.
|
||||
We set a small <code>StopTime</code>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">set_param(conf_simulink, 'StopTime', '0.5');
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">set_param</span>(<span class="org-variable-name">conf_simulink</span>, <span class="org-string">'StopTime'</span>, <span class="org-string">'0.5'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -124,46 +129,46 @@ We set a small <code>StopTime</code>.
|
||||
We initialize all the stages.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround( 'type', 'rigid');
|
||||
initializeGranite( 'type', 'modal-analysis');
|
||||
initializeTy( 'type', 'modal-analysis');
|
||||
initializeRy( 'type', 'modal-analysis');
|
||||
initializeRz( 'type', 'modal-analysis');
|
||||
initializeMicroHexapod('type', 'modal-analysis');
|
||||
initializeAxisc( 'type', 'flexible');
|
||||
<pre class="src src-matlab"> initializeGround( <span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeGranite( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeTy( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeRy( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeRz( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||
initializeAxisc( <span class="org-string">'type'</span>, <span class="org-string">'flexible'</span>);
|
||||
|
||||
initializeMirror( 'type', 'none');
|
||||
initializeNanoHexapod( 'type', 'none');
|
||||
initializeSample( 'type', 'none');
|
||||
initializeMirror( <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeNanoHexapod( <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeSample( <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
|
||||
initializeController( 'type', 'open-loop');
|
||||
initializeController( <span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||
|
||||
initializeReferences();
|
||||
initializeDisturbances('enable', false);
|
||||
initializeReferences();
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgec82ba2" class="outline-3">
|
||||
<h3 id="orgec82ba2"><span class="section-number-3">2.2</span> Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</h3>
|
||||
<div id="outline-container-orgb9afb3f" class="outline-3">
|
||||
<h3 id="orgb9afb3f"><span class="section-number-3">2.2</span> Estimate the position of the CoM of each solid and compare with the one took for the Measurement Analysis</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
Thanks to the <a href="https://fr.mathworks.com/help/physmod/sm/ref/inertiasensor.html">Inertia Sensor</a> simscape block, it is possible to estimate the position of the Center of Mass of a solid body with respect to a defined frame.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">sim('nass_model')
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The results are shown in the table <a href="#org0a81dc1">1</a>.
|
||||
The results are shown in the table <a href="#orge10376e">1</a>.
|
||||
</p>
|
||||
|
||||
<table id="org0a81dc1" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="orge10376e" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 1:</span> Center of Mass of each solid body as defined in Simscape</caption>
|
||||
|
||||
<colgroup>
|
||||
@ -226,10 +231,10 @@ The results are shown in the table <a href="#org0a81dc1">1</a>.
|
||||
</table>
|
||||
|
||||
<p>
|
||||
We can compare the obtained center of mass (table <a href="#org0a81dc1">1</a>) with the one used for the Modal Analysis shown in table <a href="#orgc7b8d3c">2</a>.
|
||||
We can compare the obtained center of mass (table <a href="#orge10376e">1</a>) with the one used for the Modal Analysis shown in table <a href="#orga804fe7">2</a>.
|
||||
</p>
|
||||
|
||||
<table id="orgc7b8d3c" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="orga804fe7" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 2:</span> Estimated Center of Mass of each solid body using Solidworks</caption>
|
||||
|
||||
<colgroup>
|
||||
@ -303,8 +308,8 @@ However, in SolidWorks, this has probably not be included with the top granite.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org57b3870" class="outline-3">
|
||||
<h3 id="org57b3870"><span class="section-number-3">2.3</span> Create a frame at the CoM of each solid body</h3>
|
||||
<div id="outline-container-org2138392" class="outline-3">
|
||||
<h3 id="org2138392"><span class="section-number-3">2.3</span> Create a frame at the CoM of each solid body</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
Now we use one <code>inertiasensor</code> block connected on each solid body that measured the center of mass of this solid with respect to the same connected frame.
|
||||
@ -315,12 +320,12 @@ We do that in order to position an accelerometer on the Simscape model at this p
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">open('identification/matlab/sim_micro_station_com_estimation.slx')
|
||||
<pre class="src src-matlab"> open(<span class="org-string">'identification/matlab/sim_micro_station_com_estimation.slx'</span>)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">sim('sim_micro_station_com_estimation')
|
||||
<pre class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'sim_micro_station_com_estimation'</span>)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -390,14 +395,14 @@ We do that in order to position an accelerometer on the Simscape model at this p
|
||||
We now same this for further use:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">granite_bot_com = granite_bot_com.Data(end, :)';
|
||||
granite_top_com = granite_top_com.Data(end, :)';
|
||||
ty_com = ty_com.Data(end, :)';
|
||||
ry_com = ry_com.Data(end, :)';
|
||||
rz_com = rz_com.Data(end, :)';
|
||||
hexa_com = hexa_com.Data(end, :)';
|
||||
<pre class="src src-matlab"> granite_bot_com = granite_bot_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
granite_top_com = granite_top_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
ty_com = ty_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
ry_com = ry_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
rz_com = rz_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
hexa_com = hexa_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||
|
||||
save('./mat/solids_com.mat', 'granite_bot_com', 'granite_top_com', 'ty_com', 'ry_com', 'rz_com', 'hexa_com');
|
||||
save(<span class="org-string">'./mat/solids_com.mat'</span>, <span class="org-string">'granite_bot_com'</span>, <span class="org-string">'granite_top_com'</span>, <span class="org-string">'ty_com'</span>, <span class="org-string">'ry_com'</span>, <span class="org-string">'rz_com'</span>, <span class="org-string">'hexa_com'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -407,20 +412,20 @@ Then, we use the obtained results to add a <code>rigidTransform</code> block in
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc263d1a" class="outline-3">
|
||||
<h3 id="orgc263d1a"><span class="section-number-3">2.4</span> Identification of the dynamics of the Simscape Model</h3>
|
||||
<div id="outline-container-orgd2f0b7f" class="outline-3">
|
||||
<h3 id="orgd2f0b7f"><span class="section-number-3">2.4</span> Identification of the dynamics of the Simscape Model</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<p>
|
||||
We now use a new Simscape Model where 6DoF inertial sensors are located at the Center of Mass of each solid body.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">% load('mat/solids_com.mat', 'granite_bot_com', 'granite_top_com', 'ty_com', 'ry_com', 'rz_com', 'hexa_com');
|
||||
<pre class="src src-matlab"> <span class="org-comment">% load('mat/solids_com.mat', 'granite_bot_com', 'granite_top_com', 'ty_com', 'ry_com', 'rz_com', 'hexa_com');</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">open('nass_model.slx')
|
||||
<pre class="src src-matlab"> open(<span class="org-string">'nass_model.slx'</span>)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -428,35 +433,35 @@ We now use a new Simscape Model where 6DoF inertial sensors are located at the C
|
||||
We use the <code>linearize</code> function in order to estimate the dynamics from forces applied on the Translation stage at the same position used for the real modal analysis to the inertial sensors.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Translation Stage/Modal Analysis/F_hammer'], 1, 'openinput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Granite/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Translation Stage/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Tilt Stage/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Spindle/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 1;
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Translation Stage/Modal Analysis/F_hammer'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Granite/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Translation Stage/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Tilt Stage/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Spindle/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">% Run the linearization
|
||||
G_ms = linearize(mdl, io, 0);
|
||||
<pre class="src src-matlab"> <span class="org-comment">% Run the linearization</span>
|
||||
G_ms = linearize(mdl, io, 0);
|
||||
|
||||
%% Input/Output definition
|
||||
G_ms.InputName = {'Fx', 'Fy', 'Fz'};
|
||||
G_ms.OutputName = {'gtop_x', 'gtop_y', 'gtop_z', 'gtop_rx', 'gtop_ry', 'gtop_rz', ...
|
||||
'ty_x', 'ty_y', 'ty_z', 'ty_rx', 'ty_ry', 'ty_rz', ...
|
||||
'ry_x', 'ry_y', 'ry_z', 'ry_rx', 'ry_ry', 'ry_rz', ...
|
||||
'rz_x', 'rz_y', 'rz_z', 'rz_rx', 'rz_ry', 'rz_rz', ...
|
||||
'hexa_x', 'hexa_y', 'hexa_z', 'hexa_rx', 'hexa_ry', 'hexa_rz'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
G_ms.InputName = {<span class="org-string">'Fx'</span>, <span class="org-string">'Fy'</span>, <span class="org-string">'Fz'</span>};
|
||||
G_ms.OutputName = {<span class="org-string">'gtop_x'</span>, <span class="org-string">'gtop_y'</span>, <span class="org-string">'gtop_z'</span>, <span class="org-string">'gtop_rx'</span>, <span class="org-string">'gtop_ry'</span>, <span class="org-string">'gtop_rz'</span>, ...
|
||||
<span class="org-string">'ty_x'</span>, <span class="org-string">'ty_y'</span>, <span class="org-string">'ty_z'</span>, <span class="org-string">'ty_rx'</span>, <span class="org-string">'ty_ry'</span>, <span class="org-string">'ty_rz'</span>, ...
|
||||
<span class="org-string">'ry_x'</span>, <span class="org-string">'ry_y'</span>, <span class="org-string">'ry_z'</span>, <span class="org-string">'ry_rx'</span>, <span class="org-string">'ry_ry'</span>, <span class="org-string">'ry_rz'</span>, ...
|
||||
<span class="org-string">'rz_x'</span>, <span class="org-string">'rz_y'</span>, <span class="org-string">'rz_z'</span>, <span class="org-string">'rz_rx'</span>, <span class="org-string">'rz_ry'</span>, <span class="org-string">'rz_rz'</span>, ...
|
||||
<span class="org-string">'hexa_x'</span>, <span class="org-string">'hexa_y'</span>, <span class="org-string">'hexa_z'</span>, <span class="org-string">'hexa_rx'</span>, <span class="org-string">'hexa_ry'</span>, <span class="org-string">'hexa_rz'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -465,22 +470,22 @@ The output of <code>G_ms</code> is the acceleration of each solid body.
|
||||
In order to obtain a displacement, we divide the obtained transfer function by \(1/s^{2}\);
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">G_ms = G_ms/s^2;
|
||||
<pre class="src src-matlab"> G_ms = G_ms<span class="org-type">/</span>s<span class="org-type">^</span>2;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0c6ab2b" class="outline-3">
|
||||
<h3 id="org0c6ab2b"><span class="section-number-3">2.5</span> Compare with measurements</h3>
|
||||
<div id="outline-container-org46896c0" class="outline-3">
|
||||
<h3 id="org46896c0"><span class="section-number-3">2.5</span> Compare with measurements</h3>
|
||||
<div class="outline-text-3" id="text-2-5">
|
||||
<p>
|
||||
We now load the Frequency Response Functions measurements during the Modal Analysis (accessible <a href="../../meas/modal-analysis/index.html">here</a>).
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('../meas/modal-analysis/mat/frf_coh_matrices.mat', 'freqs');
|
||||
load('../meas/modal-analysis/mat/frf_com.mat', 'FRFs_CoM');
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'../meas/modal-analysis/mat/frf_coh_matrices.mat'</span>, <span class="org-string">'freqs'</span>);
|
||||
load(<span class="org-string">'../meas/modal-analysis/mat/frf_com.mat'</span>, <span class="org-string">'FRFs_CoM'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -489,7 +494,7 @@ We then compare the measurements with the identified transfer functions using th
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org8f7c1f8" class="figure">
|
||||
<div id="orge644ea5" class="figure">
|
||||
<p><img src="figs/identification_comp_bot_stages.png" alt="identification_comp_bot_stages.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>caption (<a href="./figs/identification_comp_bot_stages.png">png</a>, <a href="./figs/identification_comp_bot_stages.pdf">pdf</a>)</p>
|
||||
@ -497,7 +502,7 @@ We then compare the measurements with the identified transfer functions using th
|
||||
|
||||
|
||||
|
||||
<div id="org6d3c678" class="figure">
|
||||
<div id="org4cb8073" class="figure">
|
||||
<p><img src="figs/identification_comp_mid_stages.png" alt="identification_comp_mid_stages.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>caption (<a href="./figs/identification_comp_mid_stages.png">png</a>, <a href="./figs/identification_comp_mid_stages.pdf">pdf</a>)</p>
|
||||
@ -505,7 +510,7 @@ We then compare the measurements with the identified transfer functions using th
|
||||
|
||||
|
||||
|
||||
<div id="org15ca78e" class="figure">
|
||||
<div id="orgd70d4de" class="figure">
|
||||
<p><img src="figs/identification_comp_top_stages.png" alt="identification_comp_top_stages.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>caption (<a href="./figs/identification_comp_top_stages.png">png</a>, <a href="./figs/identification_comp_top_stages.pdf">pdf</a>)</p>
|
||||
@ -515,23 +520,23 @@ We then compare the measurements with the identified transfer functions using th
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-org4704f01" class="outline-2">
|
||||
<h2 id="org4704f01"><span class="section-number-2">3</span> Obtained Compliance of the Micro-Station</h2>
|
||||
<div id="outline-container-org4b5f363" class="outline-2">
|
||||
<h2 id="org4b5f363"><span class="section-number-2">3</span> Obtained Compliance of the Micro-Station</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
</div>
|
||||
<div id="outline-container-orge0c91d3" class="outline-3">
|
||||
<h3 id="orge0c91d3"><span class="section-number-3">3.1</span> Initialization</h3>
|
||||
<div id="outline-container-org177dd40" class="outline-3">
|
||||
<h3 id="org177dd40"><span class="section-number-3">3.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
We initialize all the stages with the default parameters.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod('type', 'compliance');
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'compliance'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -539,19 +544,19 @@ initializeMicroHexapod('type', 'compliance');
|
||||
We put nothing on top of the micro-hexapod.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeAxisc('type', 'none');
|
||||
initializeMirror('type', 'none');
|
||||
initializeNanoHexapod('type', 'none');
|
||||
initializeSample('type', 'none');
|
||||
<pre class="src src-matlab"> initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences();
|
||||
initializeDisturbances();
|
||||
initializeController();
|
||||
initializeSimscapeConfiguration();
|
||||
initializeLoggingConfiguration();
|
||||
<pre class="src src-matlab"> initializeReferences();
|
||||
initializeDisturbances();
|
||||
initializeController();
|
||||
initializeSimscapeConfiguration();
|
||||
initializeLoggingConfiguration();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -560,31 +565,31 @@ And we identify the dynamics from forces/torques applied on the micro-hexapod to
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The obtained compliance is shown in Figure <a href="#org67dfd1a">4</a>.
|
||||
The obtained compliance is shown in Figure <a href="#org7ed55d1">4</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Compliance/Fm'], 1, 'openinput'); io_i = io_i + 1; % Direct Forces/Torques applied on the micro-hexapod top platform
|
||||
io(io_i) = linio([mdl, '/Micro-Station/Micro Hexapod/Compliance/Dm'], 1, 'output'); io_i = io_i + 1; % Absolute displacement of the top platform
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Micro Hexapod/Compliance/Fm'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Direct Forces/Torques applied on the micro-hexapod top platform</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station/Micro Hexapod/Compliance/Dm'</span>], 1, <span class="org-string">'output'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Absolute displacement of the top platform</span>
|
||||
|
||||
%% Run the linearization
|
||||
Gm = linearize(mdl, io, 0);
|
||||
Gm.InputName = {'Fmx', 'Fmy', 'Fmz', 'Mmx', 'Mmy', 'Mmz'};
|
||||
Gm.OutputName = {'Dx', 'Dy', 'Dz', 'Drx', 'Dry', 'Drz'};
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
Gm = linearize(mdl, io, 0);
|
||||
Gm.InputName = {<span class="org-string">'Fmx'</span>, <span class="org-string">'Fmy'</span>, <span class="org-string">'Fmz'</span>, <span class="org-string">'Mmx'</span>, <span class="org-string">'Mmy'</span>, <span class="org-string">'Mmz'</span>};
|
||||
Gm.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-string">'Dy'</span>, <span class="org-string">'Dz'</span>, <span class="org-string">'Drx'</span>, <span class="org-string">'Dry'</span>, <span class="org-string">'Drz'</span>};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">save('../meas/micro-station-compliance/mat/model.mat', 'Gm');
|
||||
<pre class="src src-matlab"> save(<span class="org-string">'../meas/micro-station-compliance/mat/model.mat'</span>, <span class="org-string">'Gm'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org67dfd1a" class="figure">
|
||||
<div id="org7ed55d1" class="figure">
|
||||
<p><img src="figs/compliance_micro_station.png" alt="compliance_micro_station.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Obtained compliance of the Micro-Station (<a href="./figs/compliance_micro_station.png">png</a>, <a href="./figs/compliance_micro_station.pdf">pdf</a>)</p>
|
||||
@ -593,10 +598,10 @@ Gm.OutputName = {'Dx', 'Dy', 'Dz', 'Drx', 'Dry', 'Drz'};
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga1de7a7" class="outline-2">
|
||||
<h2 id="orga1de7a7"><span class="section-number-2">4</span> Conclusion</h2>
|
||||
<div id="outline-container-orgba8bb2d" class="outline-2">
|
||||
<h2 id="orgba8bb2d"><span class="section-number-2">4</span> Conclusion</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<div class="important">
|
||||
<div class="important" id="orgcfecb2d">
|
||||
<p>
|
||||
For such a complex system, we believe that the Simscape Model represents the dynamics of the system with enough fidelity.
|
||||
</p>
|
||||
@ -607,7 +612,7 @@ For such a complex system, we believe that the Simscape Model represents the dyn
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-09-01 mar. 13:47</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
122
docs/index.html
122
docs/index.html
@ -3,47 +3,43 @@
|
||||
"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-07-31 ven. 18:00 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Simscape Model of the Nano-Active-Stabilization-System</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Simscape Model of the Nano-Active-Stabilization-System</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgc4bcf0b">1. Simulink Project (link)</a></li>
|
||||
<li><a href="#orge439c56">2. Simscape Model (link)</a></li>
|
||||
<li><a href="#orgc7bf13d">3. Simscape Subsystems (link)</a></li>
|
||||
<li><a href="#orgdb0ed73">4. Kinematics of the Station (link)</a></li>
|
||||
<li><a href="#org905bc44">5. Computation of the positioning error of the Sample (link)</a></li>
|
||||
<li><a href="#org402c8e6">6. Tuning of the Dynamics of the Simscape model (link)</a></li>
|
||||
<li><a href="#org7af5540">7. Compensating Gravity forces to start simulation at steady state (link)</a></li>
|
||||
<li><a href="#org4dd191b">8. Disturbances (link)</a></li>
|
||||
<li><a href="#org8d9280d">9. Simulation of Experiment (link)</a></li>
|
||||
<li><a href="#org0605048">10. Effect of support’s compliance on the plant dynamics (link)</a></li>
|
||||
<li><a href="#orge777d0f">11. Effect of the payload’s “impedance” on the plant dynamics (link)</a></li>
|
||||
<li><a href="#orga323881">12. Effect of Experimental conditions on the plant dynamics (link)</a></li>
|
||||
<li><a href="#orge7b9b41">13. Optimal Stiffness of the nano-hexapod to reduce plant uncertainty (link)</a></li>
|
||||
<li><a href="#org5f73af9">14. Effect of flexible joints on the plant dynamics (link)</a></li>
|
||||
<li><a href="#org2852795">15. Dynamic Noise Budgeting (link)</a></li>
|
||||
<li><a href="#org14a10e8">16. Active Damping Techniques on the full Simscape Model (link)</a></li>
|
||||
<li><a href="#orgd818a00">17. Control of the Nano-Active-Stabilization-System (link)</a></li>
|
||||
<li><a href="#org361f405">18. Useful Matlab Functions (link)</a></li>
|
||||
<li><a href="#orgee8ec17">1. Simulink Project (link)</a></li>
|
||||
<li><a href="#orgd349eee">2. Simscape Model (link)</a></li>
|
||||
<li><a href="#orgfdc3a69">3. Simscape Subsystems (link)</a></li>
|
||||
<li><a href="#orgbc9b583">4. Kinematics of the Station (link)</a></li>
|
||||
<li><a href="#org7d74f37">5. Computation of the positioning error of the Sample (link)</a></li>
|
||||
<li><a href="#org706e96f">6. Tuning of the Dynamics of the Simscape model (link)</a></li>
|
||||
<li><a href="#org709ccd8">7. Compensating Gravity forces to start simulation at steady state (link)</a></li>
|
||||
<li><a href="#org6f33c6c">8. Disturbances (link)</a></li>
|
||||
<li><a href="#org00ec100">9. Simulation of Experiment (link)</a></li>
|
||||
<li><a href="#org21372b7">10. Effect of support’s compliance on the plant dynamics (link)</a></li>
|
||||
<li><a href="#org685834f">11. Effect of the payload’s “impedance” on the plant dynamics (link)</a></li>
|
||||
<li><a href="#org11bb003">12. Effect of Experimental conditions on the plant dynamics (link)</a></li>
|
||||
<li><a href="#orgecc04b0">13. Optimal Stiffness of the nano-hexapod to reduce plant uncertainty (link)</a></li>
|
||||
<li><a href="#org1c03b4e">14. Effect of flexible joints on the plant dynamics (link)</a></li>
|
||||
<li><a href="#org06c33c8">15. Dynamic Noise Budgeting (link)</a></li>
|
||||
<li><a href="#org4f2bb92">16. Active Damping Techniques on the full Simscape Model (link)</a></li>
|
||||
<li><a href="#org32aed6c">17. Control of the Nano-Active-Stabilization-System (link)</a></li>
|
||||
<li><a href="#org97e196a">18. Useful Matlab Functions (link)</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -51,8 +47,8 @@
|
||||
Here are links to the documents related to the Simscape model of the Nano-Active-Stabilization-System.
|
||||
</p>
|
||||
|
||||
<div id="outline-container-orgc4bcf0b" class="outline-2">
|
||||
<h2 id="orgc4bcf0b"><span class="section-number-2">1</span> Simulink Project (<a href="./simulink_project.html">link</a>)</h2>
|
||||
<div id="outline-container-orgee8ec17" class="outline-2">
|
||||
<h2 id="orgee8ec17"><span class="section-number-2">1</span> Simulink Project (<a href="./simulink_project.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
The project is managed with a Simulink Project.
|
||||
@ -61,8 +57,8 @@ Such project is briefly presented <a href="./simulink_project.html">here</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge439c56" class="outline-2">
|
||||
<h2 id="orge439c56"><span class="section-number-2">2</span> Simscape Model (<a href="./simscape.html">link</a>)</h2>
|
||||
<div id="outline-container-orgd349eee" class="outline-2">
|
||||
<h2 id="orgd349eee"><span class="section-number-2">2</span> Simscape Model (<a href="./simscape.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
The model of the NASS is based on Simulink and Simscape Multi-Body.
|
||||
@ -71,8 +67,8 @@ Such toolbox is presented <a href="./simscape.html">here</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc7bf13d" class="outline-2">
|
||||
<h2 id="orgc7bf13d"><span class="section-number-2">3</span> Simscape Subsystems (<a href="./simscape_subsystems.html">link</a>)</h2>
|
||||
<div id="outline-container-orgfdc3a69" class="outline-2">
|
||||
<h2 id="orgfdc3a69"><span class="section-number-2">3</span> Simscape Subsystems (<a href="./simscape_subsystems.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
The model is decomposed of multiple subsystems.
|
||||
@ -86,8 +82,8 @@ All these subsystems are described <a href="./simscape_subsystems.html">here</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdb0ed73" class="outline-2">
|
||||
<h2 id="orgdb0ed73"><span class="section-number-2">4</span> Kinematics of the Station (<a href="./kinematics.html">link</a>)</h2>
|
||||
<div id="outline-container-orgbc9b583" class="outline-2">
|
||||
<h2 id="orgbc9b583"><span class="section-number-2">4</span> Kinematics of the Station (<a href="./kinematics.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
First, we consider perfectly rigid elements and joints and we just study the kinematic of the station.
|
||||
@ -97,8 +93,8 @@ This is detailed <a href="./kinematics.html">here</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org905bc44" class="outline-2">
|
||||
<h2 id="org905bc44"><span class="section-number-2">5</span> Computation of the positioning error of the Sample (<a href="./positioning_error.html">link</a>)</h2>
|
||||
<div id="outline-container-org7d74f37" class="outline-2">
|
||||
<h2 id="org7d74f37"><span class="section-number-2">5</span> Computation of the positioning error of the Sample (<a href="./positioning_error.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
From the measurement of the position of the sample with respect to the granite and from the wanted position of each stage, we can compute the positioning error of the sample with respect to the nano-hexapod.
|
||||
@ -107,8 +103,8 @@ This is done <a href="./positioning_error.html">here</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org402c8e6" class="outline-2">
|
||||
<h2 id="org402c8e6"><span class="section-number-2">6</span> Tuning of the Dynamics of the Simscape model (<a href="./identification.html">link</a>)</h2>
|
||||
<div id="outline-container-org706e96f" class="outline-2">
|
||||
<h2 id="org706e96f"><span class="section-number-2">6</span> Tuning of the Dynamics of the Simscape model (<a href="./identification.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<p>
|
||||
From dynamical measurements perform on the real positioning station, we tune the parameters of the simscape model to have similar dynamics.
|
||||
@ -120,8 +116,8 @@ This is explained <a href="./identification.html">here</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7af5540" class="outline-2">
|
||||
<h2 id="org7af5540"><span class="section-number-2">7</span> Compensating Gravity forces to start simulation at steady state (<a href="compensation_gravity_forces.html">link</a>)</h2>
|
||||
<div id="outline-container-org709ccd8" class="outline-2">
|
||||
<h2 id="org709ccd8"><span class="section-number-2">7</span> Compensating Gravity forces to start simulation at steady state (<a href="compensation_gravity_forces.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-7">
|
||||
<p>
|
||||
When gravity is included in the model, the simulation does not start at steady state.
|
||||
@ -137,8 +133,8 @@ A technique is described in this document in order to compensate the gravity for
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4dd191b" class="outline-2">
|
||||
<h2 id="org4dd191b"><span class="section-number-2">8</span> Disturbances (<a href="./disturbances.html">link</a>)</h2>
|
||||
<div id="outline-container-org6f33c6c" class="outline-2">
|
||||
<h2 id="org6f33c6c"><span class="section-number-2">8</span> Disturbances (<a href="./disturbances.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-8">
|
||||
<p>
|
||||
The effect of disturbances on the position of the micro-station have been measured.
|
||||
@ -160,8 +156,8 @@ Some numerical analysis of such forces are done <a href="centrifugal_forces.html
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8d9280d" class="outline-2">
|
||||
<h2 id="org8d9280d"><span class="section-number-2">9</span> Simulation of Experiment (<a href="./experiments.html">link</a>)</h2>
|
||||
<div id="outline-container-org00ec100" class="outline-2">
|
||||
<h2 id="org00ec100"><span class="section-number-2">9</span> Simulation of Experiment (<a href="./experiments.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-9">
|
||||
<p>
|
||||
Now that the dynamics of the Model have been tuned and the Disturbances have included, we can simulate experiments.
|
||||
@ -173,8 +169,8 @@ Experiments are simulated and the results are presented <a href="./experiments.h
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0605048" class="outline-2">
|
||||
<h2 id="org0605048"><span class="section-number-2">10</span> Effect of support’s compliance on the plant dynamics (<a href="uncertainty_support.html">link</a>)</h2>
|
||||
<div id="outline-container-org21372b7" class="outline-2">
|
||||
<h2 id="org21372b7"><span class="section-number-2">10</span> Effect of support’s compliance on the plant dynamics (<a href="uncertainty_support.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-10">
|
||||
<p>
|
||||
In this document, is studied how uncertainty on the micro-station compliance will affect the uncertainty of the isolation platform to be designed.
|
||||
@ -182,8 +178,8 @@ In this document, is studied how uncertainty on the micro-station compliance wil
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge777d0f" class="outline-2">
|
||||
<h2 id="orge777d0f"><span class="section-number-2">11</span> Effect of the payload’s “impedance” on the plant dynamics (<a href="uncertainty_payload.html">link</a>)</h2>
|
||||
<div id="outline-container-org685834f" class="outline-2">
|
||||
<h2 id="org685834f"><span class="section-number-2">11</span> Effect of the payload’s “impedance” on the plant dynamics (<a href="uncertainty_payload.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-11">
|
||||
<p>
|
||||
The payload mass, stiffness and damping properties will influence the dynamics of the isolation platform.
|
||||
@ -192,8 +188,8 @@ This effect is studied, and conclusions on what characteristics of the isolation
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga323881" class="outline-2">
|
||||
<h2 id="orga323881"><span class="section-number-2">12</span> Effect of Experimental conditions on the plant dynamics (<a href="uncertainty_experiment.html">link</a>)</h2>
|
||||
<div id="outline-container-org11bb003" class="outline-2">
|
||||
<h2 id="org11bb003"><span class="section-number-2">12</span> Effect of Experimental conditions on the plant dynamics (<a href="uncertainty_experiment.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-12">
|
||||
<p>
|
||||
In this document, the effect of all the experimental conditions (rotation speed, sample mass, …) on the plant dynamics are studied.
|
||||
@ -202,12 +198,12 @@ Conclusion are drawn about what experimental conditions are critical on the vari
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge7b9b41" class="outline-2">
|
||||
<h2 id="orge7b9b41"><span class="section-number-2">13</span> Optimal Stiffness of the nano-hexapod to reduce plant uncertainty (<a href="uncertainty_optimal_stiffness.html">link</a>)</h2>
|
||||
<div id="outline-container-orgecc04b0" class="outline-2">
|
||||
<h2 id="orgecc04b0"><span class="section-number-2">13</span> Optimal Stiffness of the nano-hexapod to reduce plant uncertainty (<a href="uncertainty_optimal_stiffness.html">link</a>)</h2>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5f73af9" class="outline-2">
|
||||
<h2 id="org5f73af9"><span class="section-number-2">14</span> Effect of flexible joints on the plant dynamics (<a href="flexible_joints_study.html">link</a>)</h2>
|
||||
<div id="outline-container-org1c03b4e" class="outline-2">
|
||||
<h2 id="org1c03b4e"><span class="section-number-2">14</span> Effect of flexible joints on the plant dynamics (<a href="flexible_joints_study.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-14">
|
||||
<p>
|
||||
In this document is studied how the flexible joint stiffnesses (in flexion, torsion and compression) is affecting the plant dynamics.
|
||||
@ -216,8 +212,8 @@ Conclusion are drawn on the required stiffness properties of the flexible joints
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2852795" class="outline-2">
|
||||
<h2 id="org2852795"><span class="section-number-2">15</span> Dynamic Noise Budgeting (<a href="noise_budgeting.html">link</a>)</h2>
|
||||
<div id="outline-container-org06c33c8" class="outline-2">
|
||||
<h2 id="org06c33c8"><span class="section-number-2">15</span> Dynamic Noise Budgeting (<a href="noise_budgeting.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-15">
|
||||
<p>
|
||||
The maximum allowed noise of the sensors in the system are estimated using a Dynamic Noise Budgeting.
|
||||
@ -225,8 +221,8 @@ The maximum allowed noise of the sensors in the system are estimated using a Dyn
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org14a10e8" class="outline-2">
|
||||
<h2 id="org14a10e8"><span class="section-number-2">16</span> Active Damping Techniques on the full Simscape Model (<a href="control_active_damping.html">link</a>)</h2>
|
||||
<div id="outline-container-org4f2bb92" class="outline-2">
|
||||
<h2 id="org4f2bb92"><span class="section-number-2">16</span> Active Damping Techniques on the full Simscape Model (<a href="control_active_damping.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-16">
|
||||
<p>
|
||||
Active damping techniques are applied to the full Simscape model.
|
||||
@ -234,8 +230,8 @@ Active damping techniques are applied to the full Simscape model.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd818a00" class="outline-2">
|
||||
<h2 id="orgd818a00"><span class="section-number-2">17</span> Control of the Nano-Active-Stabilization-System (<a href="control.html">link</a>)</h2>
|
||||
<div id="outline-container-org32aed6c" class="outline-2">
|
||||
<h2 id="org32aed6c"><span class="section-number-2">17</span> Control of the Nano-Active-Stabilization-System (<a href="control.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-17">
|
||||
<p>
|
||||
In this file are gathered all studies about the control the Nano-Active-Stabilization-System.
|
||||
@ -243,8 +239,8 @@ In this file are gathered all studies about the control the Nano-Active-Stabiliz
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org361f405" class="outline-2">
|
||||
<h2 id="org361f405"><span class="section-number-2">18</span> Useful Matlab Functions (<a href="./functions.html">link</a>)</h2>
|
||||
<div id="outline-container-org97e196a" class="outline-2">
|
||||
<h2 id="org97e196a"><span class="section-number-2">18</span> Useful Matlab Functions (<a href="./functions.html">link</a>)</h2>
|
||||
<div class="outline-text-2" id="text-18">
|
||||
<p>
|
||||
Many matlab functions are shared among all the files of the projects.
|
||||
@ -258,7 +254,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-07-31 ven. 18:00</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,50 +1,54 @@
|
||||
<?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-04-17 ven. 09:35 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Kinematics of the station</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Kinematics of the station</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org46d4418">1. Micro Hexapod</a>
|
||||
<li><a href="#org4ed4783">1. Micro Hexapod</a>
|
||||
<ul>
|
||||
<li><a href="#org6cc9e73">1.1. How the Symetrie Hexapod is controlled on the micro station</a></li>
|
||||
<li><a href="#orgfcd44a9">1.2. Control of the Micro-Hexapod using Simscape</a>
|
||||
<li><a href="#org129001c">1.1. How the Symetrie Hexapod is controlled on the micro station</a></li>
|
||||
<li><a href="#org310b222">1.2. Control of the Micro-Hexapod using Simscape</a>
|
||||
<ul>
|
||||
<li><a href="#org3924132">1.2.1. Using Bushing Joint</a></li>
|
||||
<li><a href="#org949c942">1.2.2. Using Inverse Kinematics and Leg Actuators</a>
|
||||
<li><a href="#org8a60dbb">1.2.1. Using Bushing Joint</a></li>
|
||||
<li><a href="#org207d470">1.2.2. Using Inverse Kinematics and Leg Actuators</a>
|
||||
<ul>
|
||||
<li><a href="#orgc9eab88">1.2.2.1. Theory</a></li>
|
||||
<li><a href="#orge812977">1.2.2.2. Matlab Implementation</a></li>
|
||||
<li><a href="#org1f70ebc">1.2.2.1. Theory</a></li>
|
||||
<li><a href="#org8974896">1.2.2.2. Matlab Implementation</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -59,12 +63,12 @@
|
||||
In this document, we discuss the way the motion of each stage is defined.
|
||||
</p>
|
||||
|
||||
<div id="outline-container-org46d4418" class="outline-2">
|
||||
<h2 id="org46d4418"><span class="section-number-2">1</span> Micro Hexapod</h2>
|
||||
<div id="outline-container-org4ed4783" class="outline-2">
|
||||
<h2 id="org4ed4783"><span class="section-number-2">1</span> Micro Hexapod</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
</div>
|
||||
<div id="outline-container-org6cc9e73" class="outline-3">
|
||||
<h3 id="org6cc9e73"><span class="section-number-3">1.1</span> How the Symetrie Hexapod is controlled on the micro station</h3>
|
||||
<div id="outline-container-org129001c" class="outline-3">
|
||||
<h3 id="org129001c"><span class="section-number-3">1.1</span> How the Symetrie Hexapod is controlled on the micro station</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
For the Micro-Hexapod, the convention for the angles are defined in <code>MAN_A_Software API_4.0.150918_EN.pdf</code> on page 13 (section 2.4 - Rotation Vectors):
|
||||
@ -112,8 +116,8 @@ Thus, it does the translations and then the rotation around the new translated f
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfcd44a9" class="outline-3">
|
||||
<h3 id="orgfcd44a9"><span class="section-number-3">1.2</span> Control of the Micro-Hexapod using Simscape</h3>
|
||||
<div id="outline-container-org310b222" class="outline-3">
|
||||
<h3 id="org310b222"><span class="section-number-3">1.2</span> Control of the Micro-Hexapod using Simscape</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
We can think of two main ways to position the Micro-Hexapod using Simscape.
|
||||
@ -130,15 +134,15 @@ This require a little bit more of mathematical derivations but this is the chose
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3924132" class="outline-4">
|
||||
<h4 id="org3924132"><span class="section-number-4">1.2.1</span> Using Bushing Joint</h4>
|
||||
<div id="outline-container-org8a60dbb" class="outline-4">
|
||||
<h4 id="org8a60dbb"><span class="section-number-4">1.2.1</span> Using Bushing Joint</h4>
|
||||
<div class="outline-text-4" id="text-1-2-1">
|
||||
<p>
|
||||
In the documentation of the Bushing Joint (<code>doc "Bushing Joint"</code>) that is used to position the Hexapods, it is mention that the following frame is positioned with respect to the base frame in a way shown in figure <a href="#org9af6f4f">1</a>.
|
||||
In the documentation of the Bushing Joint (<code>doc "Bushing Joint"</code>) that is used to position the Hexapods, it is mention that the following frame is positioned with respect to the base frame in a way shown in figure <a href="#org0c4632e">1</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org9af6f4f" class="figure">
|
||||
<div id="org0c4632e" class="figure">
|
||||
<p><img src="figs/bushing_joint_transform.png" alt="bushing_joint_transform.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Joint Transformation Sequence for the Bushing Joint</p>
|
||||
@ -156,8 +160,8 @@ However, the Bushing Joint makes rotations around mobiles axes (X, Y’ and
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org949c942" class="outline-4">
|
||||
<h4 id="org949c942"><span class="section-number-4">1.2.2</span> Using Inverse Kinematics and Leg Actuators</h4>
|
||||
<div id="outline-container-org207d470" class="outline-4">
|
||||
<h4 id="org207d470"><span class="section-number-4">1.2.2</span> Using Inverse Kinematics and Leg Actuators</h4>
|
||||
<div class="outline-text-4" id="text-1-2-2">
|
||||
<p>
|
||||
Here, we can use the Inverse Kinematic of the Hexapod to determine the length of each leg in order to obtain some defined translation and rotation of the mobile platform.
|
||||
@ -183,8 +187,8 @@ Thus, for this simulation, we <b>remove the gravity</b>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc9eab88" class="outline-5">
|
||||
<h5 id="orgc9eab88"><span class="section-number-5">1.2.2.1</span> Theory</h5>
|
||||
<div id="outline-container-org1f70ebc" class="outline-5">
|
||||
<h5 id="org1f70ebc"><span class="section-number-5">1.2.2.1</span> Theory</h5>
|
||||
<div class="outline-text-5" id="text-1-2-2-1">
|
||||
<p>
|
||||
For inverse kinematic analysis, it is assumed that the position \({}^A\bm{P}\) and orientation of the moving platform \({}^A\bm{R}_B\) are given and the problem is to obtain the joint variables, namely, \(\bm{L} = [l_1, l_2, \dots, l_6]^T\).
|
||||
@ -219,14 +223,14 @@ Otherwise, when the limbs’ lengths derived yield complex numbers, then the
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge812977" class="outline-5">
|
||||
<h5 id="orge812977"><span class="section-number-5">1.2.2.2</span> Matlab Implementation</h5>
|
||||
<div id="outline-container-org8974896" class="outline-5">
|
||||
<h5 id="org8974896"><span class="section-number-5">1.2.2.2</span> Matlab Implementation</h5>
|
||||
<div class="outline-text-5" id="text-1-2-2-2">
|
||||
<p>
|
||||
We open the Simulink file.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">open(<span class="org-string">'nass_model.slx'</span>)
|
||||
<pre class="src src-matlab"> open(<span class="org-string">'nass_model.slx'</span>)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -234,8 +238,8 @@ We open the Simulink file.
|
||||
We load the configuration and set a small <code>StopTime</code>.
|
||||
</p>
|
||||
<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">'0.1'</span>);
|
||||
<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">'0.1'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -243,40 +247,40 @@ We load the configuration and set a small <code>StopTime</code>.
|
||||
We define the wanted position/orientation of the Hexapod under study.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">tx = 0.05; <span class="org-comment">% [rad]</span>
|
||||
ty = 0.1; <span class="org-comment">% [rad]</span>
|
||||
tz = 0.02; <span class="org-comment">% [rad]</span>
|
||||
<pre class="src src-matlab"> tx = 0.05; <span class="org-comment">% [rad]</span>
|
||||
ty = 0.1; <span class="org-comment">% [rad]</span>
|
||||
tz = 0.02; <span class="org-comment">% [rad]</span>
|
||||
|
||||
Rx = [1 0 0;
|
||||
0 cos(tx) <span class="org-type">-</span>sin(tx);
|
||||
0 sin(tx) cos(tx)];
|
||||
Rx = [1 0 0;
|
||||
0 cos(tx) <span class="org-type">-</span>sin(tx);
|
||||
0 sin(tx) cos(tx)];
|
||||
|
||||
Ry = [ cos(ty) 0 sin(ty);
|
||||
0 1 0;
|
||||
<span class="org-type">-</span>sin(ty) 0 cos(ty)];
|
||||
Ry = [ cos(ty) 0 sin(ty);
|
||||
0 1 0;
|
||||
<span class="org-type">-</span>sin(ty) 0 cos(ty)];
|
||||
|
||||
Rz = [cos(tz) <span class="org-type">-</span>sin(tz) 0;
|
||||
sin(tz) cos(tz) 0;
|
||||
0 0 1];
|
||||
Rz = [cos(tz) <span class="org-type">-</span>sin(tz) 0;
|
||||
sin(tz) cos(tz) 0;
|
||||
0 0 1];
|
||||
|
||||
ARB = Rz<span class="org-type">*</span>Ry<span class="org-type">*</span>Rx;
|
||||
AP = [0.1; 0.005; 0.01]; <span class="org-comment">% [m]</span>
|
||||
ARB = Rz<span class="org-type">*</span>Ry<span class="org-type">*</span>Rx;
|
||||
AP = [0.1; 0.005; 0.01]; <span class="org-comment">% [m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeGranite(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeTy(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeRy(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeRz(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'AP'</span>, AP, <span class="org-string">'ARB'</span>, ARB);
|
||||
initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeGranite(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeTy(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeRy(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeRz(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'AP'</span>, AP, <span class="org-string">'ARB'</span>, ARB);
|
||||
initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -284,7 +288,7 @@ initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span clas
|
||||
We run the simulation.
|
||||
</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 class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -292,7 +296,7 @@ We run the simulation.
|
||||
And we verify that we indeed succeed to go to the wanted position.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">[simout.Dhm.x.Data(end) ; simout.Dhm.y.Data(end) ; simout.Dhm.z.Data(end)] <span class="org-type">-</span> AP
|
||||
<pre class="src src-matlab"> [simout.Dhm.x.Data(end) ; simout.Dhm.y.Data(end) ; simout.Dhm.z.Data(end)] <span class="org-type">-</span> AP
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -318,7 +322,7 @@ And we verify that we indeed succeed to go to the wanted position.
|
||||
</table>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">simout.Dhm.R.Data(<span class="org-type">:</span>, <span class="org-type">:</span>, end)<span class="org-type">-</span>ARB
|
||||
<pre class="src src-matlab"> simout.Dhm.R.Data(<span class="org-type">:</span>, <span class="org-type">:</span>, end)<span class="org-type">-</span>ARB
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -360,7 +364,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-04-17 ven. 09:35</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,55 +1,59 @@
|
||||
<?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-05-05 mar. 10:33 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Study of the Metrology Frame</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Study of the Metrology Frame</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgf049208">1. Flexibility of the reference mirror</a>
|
||||
<li><a href="#orgb421d07">1. Flexibility of the reference mirror</a>
|
||||
<ul>
|
||||
<li><a href="#orgaec148c">1.1. Initialization</a></li>
|
||||
<li><a href="#orgaeca24e">1.2. Rigid fixation between the metrology frame and the nano-hexapod</a></li>
|
||||
<li><a href="#orgbe194f6">1.3. Flexible fixation between the metrology frame and the nano-hexapod</a></li>
|
||||
<li><a href="#org385c252">1.4. Comparison</a></li>
|
||||
<li><a href="#orgbe63408">1.5. Conclusion</a></li>
|
||||
<li><a href="#orga0061d2">1.1. Initialization</a></li>
|
||||
<li><a href="#orgd1b6150">1.2. Rigid fixation between the metrology frame and the nano-hexapod</a></li>
|
||||
<li><a href="#orgcfbd00f">1.3. Flexible fixation between the metrology frame and the nano-hexapod</a></li>
|
||||
<li><a href="#org68e6519">1.4. Comparison</a></li>
|
||||
<li><a href="#org914c413">1.5. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf049208" class="outline-2">
|
||||
<h2 id="orgf049208"><span class="section-number-2">1</span> Flexibility of the reference mirror</h2>
|
||||
<div id="outline-container-orgb421d07" class="outline-2">
|
||||
<h2 id="orgb421d07"><span class="section-number-2">1</span> Flexibility of the reference mirror</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
In this section we wish to see how a flexibility between the nano-hexapod’s top platform and the reference mirror will change the plant dynamics and limits the performance.
|
||||
@ -64,21 +68,21 @@ We will compare the two dynamics and conclude.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgaec148c" class="outline-3">
|
||||
<h3 id="orgaec148c"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||
<div id="outline-container-orga0061d2" class="outline-3">
|
||||
<h3 id="orga0061d2"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-1-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();
|
||||
initializeNanoHexapod();
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeNanoHexapod();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -86,33 +90,33 @@ initializeNanoHexapod();
|
||||
We first consider a rigid Sample to simplify the analysis.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSample('type', 'rigid');
|
||||
<pre class="src src-matlab"> initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgaeca24e" class="outline-3">
|
||||
<h3 id="orgaeca24e"><span class="section-number-3">1.2</span> Rigid fixation between the metrology frame and the nano-hexapod</h3>
|
||||
<div id="outline-container-orgd1b6150" class="outline-3">
|
||||
<h3 id="orgd1b6150"><span class="section-number-3">1.2</span> Rigid fixation between the metrology frame and the nano-hexapod</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
Let’s first consider a rigid reference mirror and we identify the dynamics of the system.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeMirror('type', 'rigid');
|
||||
<pre class="src src-matlab"> initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbe194f6" class="outline-3">
|
||||
<h3 id="orgbe194f6"><span class="section-number-3">1.3</span> Flexible fixation between the metrology frame and the nano-hexapod</h3>
|
||||
<div id="outline-container-orgcfbd00f" class="outline-3">
|
||||
<h3 id="orgcfbd00f"><span class="section-number-3">1.3</span> Flexible fixation between the metrology frame and the nano-hexapod</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
We now initialize a reference mirror with a main resonance frequency at \(200\ [Hz]\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeMirror('type', 'flexible', 'freq', 200*ones(6,1));
|
||||
<pre class="src src-matlab"> initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'flexible'</span>, <span class="org-string">'freq'</span>, 200<span class="org-type">*</span>ones(6,1));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -121,15 +125,15 @@ And we re identify the plant dynamics.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org385c252" class="outline-3">
|
||||
<h3 id="org385c252"><span class="section-number-3">1.4</span> Comparison</h3>
|
||||
<div id="outline-container-org68e6519" class="outline-3">
|
||||
<h3 id="org68e6519"><span class="section-number-3">1.4</span> Comparison</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<p>
|
||||
The obtained transfer functions from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) when considering a rigid reference mirror and a flexible one are shown in Figure <a href="#orgfa25dbd">1</a>.
|
||||
The obtained transfer functions from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) when considering a rigid reference mirror and a flexible one are shown in Figure <a href="#org67c52c2">1</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgfa25dbd" class="figure">
|
||||
<div id="org67c52c2" class="figure">
|
||||
<p><img src="figs/effect_mirror_flexibility_fz_dz.png" alt="effect_mirror_flexibility_fz_dz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Effect of the mirror flexibility on the transfer function from \(\mathcal{F}_z\) to \(\mathcal{X}_z\)</p>
|
||||
@ -137,10 +141,10 @@ The obtained transfer functions from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) when
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbe63408" class="outline-3">
|
||||
<h3 id="orgbe63408"><span class="section-number-3">1.5</span> Conclusion</h3>
|
||||
<div id="outline-container-org914c413" class="outline-3">
|
||||
<h3 id="org914c413"><span class="section-number-3">1.5</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-1-5">
|
||||
<div class="important">
|
||||
<div class="important" id="org8c09fad">
|
||||
<p>
|
||||
A flexibility between the nano-hexapod top platform and the reference mirror will appear in the plant as two complex conjugate poles at the frequency of the resonance of the mirror on top of the nano-hexapod.
|
||||
This induces 180 degrees of phase drop on the plant and will limit the attainable controller bandwidth.
|
||||
@ -158,7 +162,7 @@ Thus, care should be taken when designing the fixation of the reference mirror o
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-05 mar. 10:33</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,51 +1,55 @@
|
||||
<?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-04-17 ven. 09:35 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Motion and Force Requirements for the Nano-Hexapod</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">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>
|
||||
<li><a href="#orgecd6b81">1. Soft Hexapod</a>
|
||||
<ul>
|
||||
<li><a href="#org3326d69">1.1. Example</a></li>
|
||||
<li><a href="#org292e705">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 id="outline-container-orgecd6b81" class="outline-2">
|
||||
<h2 id="orgecd6b81"><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.
|
||||
@ -76,8 +80,8 @@ Then from the Newton’s second law: \(m \vec{a} = \sum \vec{F}\) we can com
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3326d69" class="outline-3">
|
||||
<h3 id="org3326d69"><span class="section-number-3">1.1</span> Example</h3>
|
||||
<div id="outline-container-org292e705" class="outline-3">
|
||||
<h3 id="org292e705"><span class="section-number-3">1.1</span> Example</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
The wanted motion is:
|
||||
@ -121,11 +125,11 @@ And the norm of the force is:
|
||||
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 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>
|
||||
|
||||
@ -138,11 +142,11 @@ F = m<span class="org-type">*</span>d<span class="org-type">*</span>w<span class
|
||||
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 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>
|
||||
|
||||
@ -155,7 +159,7 @@ F = m<span class="org-type">*</span>d<span class="org-type">*</span>w<span class
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-04-17 ven. 09:35</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,77 +3,82 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-09-01 mar. 13:47 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Noise Budgeting</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Noise Budgeting</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgc8b5888">1. Maximum Noise of the Relative Motion Sensors</a>
|
||||
<li><a href="#org6528281">1. Maximum Noise of the Relative Motion Sensors</a>
|
||||
<ul>
|
||||
<li><a href="#org47d58ae">1.1. Initialization</a></li>
|
||||
<li><a href="#org9b3405f">1.2. Control System</a></li>
|
||||
<li><a href="#org4b1b358">1.3. Maximum induced vibration’s ASD</a></li>
|
||||
<li><a href="#org446dbf5">1.4. Computation of the maximum relative motion sensor noise</a></li>
|
||||
<li><a href="#org65a9628">1.5. Verification of the induced motion error</a></li>
|
||||
<li><a href="#org5b3bcaa">1.1. Initialization</a></li>
|
||||
<li><a href="#org9daa837">1.2. Control System</a></li>
|
||||
<li><a href="#org538f5fe">1.3. Maximum induced vibration’s ASD</a></li>
|
||||
<li><a href="#org626a300">1.4. Computation of the maximum relative motion sensor noise</a></li>
|
||||
<li><a href="#org3e7c118">1.5. Verification of the induced motion error</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc8b5888" class="outline-2">
|
||||
<h2 id="orgc8b5888"><span class="section-number-2">1</span> Maximum Noise of the Relative Motion Sensors</h2>
|
||||
<div id="outline-container-org6528281" class="outline-2">
|
||||
<h2 id="org6528281"><span class="section-number-2">1</span> Maximum Noise of the Relative Motion Sensors</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
</div>
|
||||
<div id="outline-container-org47d58ae" class="outline-3">
|
||||
<h3 id="org47d58ae"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||
<div id="outline-container-org5b3bcaa" class="outline-3">
|
||||
<h3 id="org5b3bcaa"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">open('nass_model.slx');
|
||||
<pre class="src src-matlab"> open(<span class="org-string">'nass_model.slx'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
|
||||
initializeSimscapeConfiguration();
|
||||
initializeDisturbances('enable', false);
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
initializeSimscapeConfiguration();
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||
|
||||
initializeController('type', 'hac-dvf');
|
||||
initializeController(<span class="org-string">'type'</span>, <span class="org-string">'hac-dvf'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -81,61 +86,61 @@ initializeController('type', 'hac-dvf');
|
||||
We set the stiffness of the payload fixation:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kp = 1e8; % [N/m]
|
||||
<pre class="src src-matlab"> Kp = 1e8; <span class="org-comment">% [N/m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeNanoHexapod('k', 1e5, 'c', 2e2);
|
||||
|
||||
Ms = 50;
|
||||
initializeSample('mass', Ms, 'freq', sqrt(Kp/Ms)/2/pi*ones(6,1));
|
||||
<pre class="src src-matlab"> initializeNanoHexapod(<span class="org-string">'k'</span>, 1e5, <span class="org-string">'c'</span>, 2e2);
|
||||
|
||||
Ms = 50;
|
||||
initializeSample(<span class="org-string">'mass'</span>, Ms, <span class="org-string">'freq'</span>, sqrt(Kp<span class="org-type">/</span>Ms)<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">*</span>ones(6,1));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences('Rz_type', 'rotating-not-filtered', 'Rz_period', Ms);
|
||||
<pre class="src src-matlab"> initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating-not-filtered'</span>, <span class="org-string">'Rz_period'</span>, Ms);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9b3405f" class="outline-3">
|
||||
<h3 id="org9b3405f"><span class="section-number-3">1.2</span> Control System</h3>
|
||||
<div id="outline-container-org9daa837" class="outline-3">
|
||||
<h3 id="org9daa837"><span class="section-number-3">1.2</span> Control System</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kdvf = 5e3*s/(1+s/2/pi/1e3)*eye(6);
|
||||
<pre class="src src-matlab"> Kdvf = 5e3<span class="org-type">*</span>s<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>1e3)<span class="org-type">*</span>eye(6);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">h = 2.0;
|
||||
Kl = 2e7 * eye(6) * ...
|
||||
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
|
||||
1/h*(s/(2*pi*200/h) + 1)/(s/(2*pi*200*h) + 1) * ...
|
||||
(s/2/pi/10 + 1)/(s/2/pi/10) * ...
|
||||
1/(1 + s/2/pi/300);
|
||||
<pre class="src src-matlab"> h = 2.0;
|
||||
Kl = 2e7 <span class="org-type">*</span> eye(6) <span class="org-type">*</span> ...
|
||||
1<span class="org-type">/</span>h<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>100<span class="org-type">/</span>h) <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>100<span class="org-type">*</span>h) <span class="org-type">+</span> 1) <span class="org-type">*</span> ...
|
||||
1<span class="org-type">/</span>h<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>200<span class="org-type">/</span>h) <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>200<span class="org-type">*</span>h) <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>10 <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>10) <span class="org-type">*</span> ...
|
||||
1<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>300);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('mat/stages.mat', 'nano_hexapod');
|
||||
K = Kl*nano_hexapod.kinematics.J*diag([1, 1, 1, 1, 1, 0]);
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'mat/stages.mat'</span>, <span class="org-string">'nano_hexapod'</span>);
|
||||
K = Kl<span class="org-type">*</span>nano_hexapod.kinematics.J<span class="org-type">*</span>diag([1, 1, 1, 1, 1, 0]);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Run the linearization
|
||||
G = linearize(mdl, io);
|
||||
G.InputName = {'ndL1', 'ndL2', 'ndL3', 'ndL4', 'ndL5', 'ndL6'};
|
||||
G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'};
|
||||
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G = linearize(mdl, io);
|
||||
G.InputName = {<span class="org-string">'ndL1'</span>, <span class="org-string">'ndL2'</span>, <span class="org-string">'ndL3'</span>, <span class="org-string">'ndL4'</span>, <span class="org-string">'ndL5'</span>, <span class="org-string">'ndL6'</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>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4b1b358" class="outline-3">
|
||||
<h3 id="org4b1b358"><span class="section-number-3">1.3</span> Maximum induced vibration’s ASD</h3>
|
||||
<div id="outline-container-org538f5fe" class="outline-3">
|
||||
<h3 id="org538f5fe"><span class="section-number-3">1.3</span> Maximum induced vibration’s ASD</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
Required maximum induced ASD of the sample’s vibration due to the relative motion sensor noise.
|
||||
@ -143,16 +148,16 @@ Required maximum induced ASD of the sample’s vibration due to the relative
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Gamma_x = [(1e-9)/(1 + s/2/pi/100); % Dx
|
||||
(1e-9)/(1 + s/2/pi/100); % Dy
|
||||
(1e-9)/(1 + s/2/pi/100); % Dz
|
||||
(2e-8)/(1 + s/2/pi/100); % Rx
|
||||
(2e-8)/(1 + s/2/pi/100)]; % Ry
|
||||
<pre class="src src-matlab"> Gamma_x = [(1e<span class="org-type">-</span>9)<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>100); <span class="org-comment">% Dx</span>
|
||||
(1e<span class="org-type">-</span>9)<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>100); <span class="org-comment">% Dy</span>
|
||||
(1e<span class="org-type">-</span>9)<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>100); <span class="org-comment">% Dz</span>
|
||||
(2e<span class="org-type">-</span>8)<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>100); <span class="org-comment">% Rx</span>
|
||||
(2e<span class="org-type">-</span>8)<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>100)]; <span class="org-comment">% Ry</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">freqs = logspace(0, 3, 1000);
|
||||
<pre class="src src-matlab"> freqs = logspace(0, 3, 1000);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -203,8 +208,8 @@ Corresponding RMS value in [nm rms, nrad rms]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org446dbf5" class="outline-3">
|
||||
<h3 id="org446dbf5"><span class="section-number-3">1.4</span> Computation of the maximum relative motion sensor noise</h3>
|
||||
<div id="outline-container-org626a300" class="outline-3">
|
||||
<h3 id="org626a300"><span class="section-number-3">1.4</span> Computation of the maximum relative motion sensor noise</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<p>
|
||||
Let’s note \(G\) the transfer function from the 6 sensor noise \(n\) to the 5dof pose error \(x\).
|
||||
@ -225,15 +230,15 @@ We then have an upper bound of the sensor noise for each of the considered motio
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Gamma_ndL = zeros(5, length(freqs));
|
||||
for in = 1:5
|
||||
Gamma_ndL(in, :) = abs(squeeze(freqresp(Gamma_x(in), freqs, 'Hz')))./sqrt(sum(abs(squeeze(freqresp(G(in, :), freqs, 'Hz'))).^2))';
|
||||
end
|
||||
<pre class="src src-matlab"> Gamma_ndL = zeros(5, length(freqs));
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">in</span> = <span class="org-constant">1:5</span>
|
||||
Gamma_ndL(in, <span class="org-type">:</span>) = abs(squeeze(freqresp(Gamma_x(in), freqs, <span class="org-string">'Hz'</span>)))<span class="org-type">./</span>sqrt(sum(abs(squeeze(freqresp(G(in, <span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2))<span class="org-type">'</span>;
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgf2f2139" class="figure">
|
||||
<div id="org9e66f1d" class="figure">
|
||||
<p><img src="figs/noise_budget_ndL_max_asd.png" alt="noise_budget_ndL_max_asd.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Maximum estimated ASD of the relative motion sensor noise</p>
|
||||
@ -246,7 +251,7 @@ Then, the motion error due to sensor noise should be bellow the one specified.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Gamma_ndL_max = min(Gamma_ndL(1:5, :));
|
||||
<pre class="src src-matlab"> Gamma_ndL_max = min(Gamma_ndL(1<span class="org-type">:</span>5, <span class="org-type">:</span>));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -254,12 +259,12 @@ Then, the motion error due to sensor noise should be bellow the one specified.
|
||||
Let’s take a sensor with a white noise up to 1kHz that is bellow the specified one:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Gamma_ndL_ex = abs(squeeze(freqresp(min(Gamma_ndL_max)/(1 + s/2/pi/1e3), freqs, 'Hz')));
|
||||
<pre class="src src-matlab"> Gamma_ndL_ex = abs(squeeze(freqresp(min(Gamma_ndL_max)<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>1e3), freqs, <span class="org-string">'Hz'</span>)));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org73ad463" class="figure">
|
||||
<div id="org21fc07c" class="figure">
|
||||
<p><img src="figs/relative_motion_sensor_noise_ASD_example.png" alt="relative_motion_sensor_noise_ASD_example.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Requirement maximum ASD of the sensor noise + example of a sensor validating the requirements</p>
|
||||
@ -269,7 +274,7 @@ Let’s take a sensor with a white noise up to 1kHz that is bellow the speci
|
||||
The corresponding RMS value of the sensor noise taken as an example is [nm RMS]:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">1e9*sqrt(trapz(freqs, Gamma_ndL_max.^2))
|
||||
<pre class="src src-matlab"> 1e9<span class="org-type">*</span>sqrt(trapz(freqs, Gamma_ndL_max<span class="org-type">.^</span>2))
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -279,8 +284,8 @@ The corresponding RMS value of the sensor noise taken as an example is [nm RMS]:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org65a9628" class="outline-3">
|
||||
<h3 id="org65a9628"><span class="section-number-3">1.5</span> Verification of the induced motion error</h3>
|
||||
<div id="outline-container-org3e7c118" class="outline-3">
|
||||
<h3 id="org3e7c118"><span class="section-number-3">1.5</span> Verification of the induced motion error</h3>
|
||||
<div class="outline-text-3" id="text-1-5">
|
||||
<p>
|
||||
Verify that by taking the sensor noise, we have to wanted displacement error
|
||||
@ -289,11 +294,11 @@ From the sensor noise PSD \(\Gamma_n(\omega)\), we can estimate the obtained dis
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Gamma_xest = zeros(5, length(freqs));
|
||||
<pre class="src src-matlab"> Gamma_xest = zeros(5, length(freqs));
|
||||
|
||||
for in = 1:5
|
||||
Gamma_xest(in, :) = sqrt(sum(abs(squeeze(freqresp(G(in, :), freqs, 'Hz'))).^2.*Gamma_ndL_max.^2));
|
||||
end
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name">in</span> = <span class="org-constant">1:5</span>
|
||||
Gamma_xest(in, <span class="org-type">:</span>) = sqrt(sum(abs(squeeze(freqresp(G(in, <span class="org-type">:</span>), freqs, <span class="org-string">'Hz'</span>)))<span class="org-type">.^</span>2<span class="org-type">.*</span>Gamma_ndL_max<span class="org-type">.^</span>2));
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -352,7 +357,7 @@ end
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-09-01 mar. 13:47</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,121 +3,126 @@
|
||||
"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-05-20 mer. 16:41 -->
|
||||
<!-- 2021-02-20 sam. 23:09 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Control of the NASS with optimal stiffness</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Control of the NASS with optimal stiffness</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org99c5b6d">1. Low Authority Control - Decentralized Direct Velocity Feedback</a>
|
||||
<li><a href="#orgdb6e4f3">1. Low Authority Control - Decentralized Direct Velocity Feedback</a>
|
||||
<ul>
|
||||
<li><a href="#orgf3f8aed">1.1. Initialization</a></li>
|
||||
<li><a href="#orgc5a1e81">1.2. Identification</a></li>
|
||||
<li><a href="#orgfef1a3f">1.3. Controller Design</a></li>
|
||||
<li><a href="#org3c73014">1.4. Effect of the Low Authority Control on the Primary Plant</a></li>
|
||||
<li><a href="#orgee5dbee">1.5. Effect of the Low Authority Control on the Sensibility to Disturbances</a></li>
|
||||
<li><a href="#orgdc2eb5a">1.6. Conclusion</a></li>
|
||||
<li><a href="#org9319182">1.1. Initialization</a></li>
|
||||
<li><a href="#org8b02bfa">1.2. Identification</a></li>
|
||||
<li><a href="#org6f820ae">1.3. Controller Design</a></li>
|
||||
<li><a href="#org5434213">1.4. Effect of the Low Authority Control on the Primary Plant</a></li>
|
||||
<li><a href="#orgc187d77">1.5. Effect of the Low Authority Control on the Sensibility to Disturbances</a></li>
|
||||
<li><a href="#org9539bfe">1.6. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org81dc0a8">2. Primary Control in the leg space</a>
|
||||
<li><a href="#org2797edc">2. Primary Control in the leg space</a>
|
||||
<ul>
|
||||
<li><a href="#org1e7a412">2.1. Plant in the leg space</a></li>
|
||||
<li><a href="#orgf39520c">2.2. Control in the leg space</a></li>
|
||||
<li><a href="#org16d192f">2.3. Sensibility to Disturbances and Noise Budget</a></li>
|
||||
<li><a href="#org8f34c09">2.4. Simulations of Tomography Experiment</a></li>
|
||||
<li><a href="#orgcc19864">2.5. Results</a></li>
|
||||
<li><a href="#orgf709759">2.6. Actuator Stroke and Forces</a></li>
|
||||
<li><a href="#orgcf22d67">2.7. Conclusion</a></li>
|
||||
<li><a href="#org8c682ad">2.1. Plant in the leg space</a></li>
|
||||
<li><a href="#org8308914">2.2. Control in the leg space</a></li>
|
||||
<li><a href="#org5a96746">2.3. Sensibility to Disturbances and Noise Budget</a></li>
|
||||
<li><a href="#org370df82">2.4. Simulations of Tomography Experiment</a></li>
|
||||
<li><a href="#orgd19d198">2.5. Results</a></li>
|
||||
<li><a href="#org4bc7412">2.6. Actuator Stroke and Forces</a></li>
|
||||
<li><a href="#orgead2d0d">2.7. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org56b28cd">3. Further More complex simulations</a>
|
||||
<li><a href="#orgbb6ed0e">3. Further More complex simulations</a>
|
||||
<ul>
|
||||
<li><a href="#org6c1ddb5">3.1. Simulation with Micro-Hexapod Offset</a>
|
||||
<li><a href="#orgbe6d807">3.1. Simulation with Micro-Hexapod Offset</a>
|
||||
<ul>
|
||||
<li><a href="#org78cec1a">3.1.1. Simulation</a></li>
|
||||
<li><a href="#org53a553d">3.1.2. Results</a></li>
|
||||
<li><a href="#orgd36f8c4">3.1.1. Simulation</a></li>
|
||||
<li><a href="#org8fe5f58">3.1.2. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org5cb899b">3.2. Simultaneous Translation scans and Spindle’s rotation</a>
|
||||
<li><a href="#org9753678">3.2. Simultaneous Translation scans and Spindle’s rotation</a>
|
||||
<ul>
|
||||
<li><a href="#orgf715899">3.2.1. Simulation</a></li>
|
||||
<li><a href="#org056af12">3.2.2. Results</a></li>
|
||||
<li><a href="#org2619c3f">3.2.1. Simulation</a></li>
|
||||
<li><a href="#org8a2b562">3.2.2. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org9bd2bf8">4. Primary Control in the task space</a>
|
||||
<li><a href="#org26c4ef6">4. Primary Control in the task space</a>
|
||||
<ul>
|
||||
<li><a href="#org07b4a9d">4.1. Plant in the task space</a></li>
|
||||
<li><a href="#org7d888f9">4.2. Control in the task space</a>
|
||||
<li><a href="#org48bda71">4.1. Plant in the task space</a></li>
|
||||
<li><a href="#org4251f93">4.2. Control in the task space</a>
|
||||
<ul>
|
||||
<li><a href="#orgb28634b">4.2.1. Stability</a></li>
|
||||
<li><a href="#org226215f">4.2.1. Stability</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org8bd1f9d">4.3. Simulation</a></li>
|
||||
<li><a href="#org3cfdfa3">4.4. Conclusion</a></li>
|
||||
<li><a href="#org0aa9f05">4.3. Simulation</a></li>
|
||||
<li><a href="#org4a860c5">4.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org99c5b6d" class="outline-2">
|
||||
<h2 id="org99c5b6d"><span class="section-number-2">1</span> Low Authority Control - Decentralized Direct Velocity Feedback</h2>
|
||||
<div id="outline-container-orgdb6e4f3" class="outline-2">
|
||||
<h2 id="orgdb6e4f3"><span class="section-number-2">1</span> Low Authority Control - Decentralized Direct Velocity Feedback</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="orgfec42cb"></a>
|
||||
<a id="org8d1c1a1"></a>
|
||||
</p>
|
||||
|
||||
<div id="org7f11a74" class="figure">
|
||||
<div id="org26ba32b" class="figure">
|
||||
<p><img src="figs/control_architecture_dvf.png" alt="control_architecture_dvf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Low Authority Control: Decentralized Direct Velocity Feedback</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgf3f8aed" class="outline-3">
|
||||
<h3 id="orgf3f8aed"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||
<div id="outline-container-org9319182" class="outline-3">
|
||||
<h3 id="org9319182"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
|
||||
initializeSimscapeConfiguration();
|
||||
initializeDisturbances('enable', false);
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
initializeSimscapeConfiguration();
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||
|
||||
initializeController('type', 'hac-dvf');
|
||||
initializeController(<span class="org-string">'type'</span>, <span class="org-string">'hac-dvf'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -125,18 +130,18 @@ initializeController('type', 'hac-dvf');
|
||||
We set the stiffness of the payload fixation:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kp = 1e8; % [N/m]
|
||||
<pre class="src src-matlab"> Kp = 1e8; <span class="org-comment">% [N/m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc5a1e81" class="outline-3">
|
||||
<h3 id="orgc5a1e81"><span class="section-number-3">1.2</span> Identification</h3>
|
||||
<div id="outline-container-org8b02bfa" class="outline-3">
|
||||
<h3 id="org8b02bfa"><span class="section-number-3">1.2</span> Identification</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">K = tf(zeros(6));
|
||||
Kdvf = tf(zeros(6));
|
||||
<pre class="src src-matlab"> K = tf(zeros(6));
|
||||
Kdvf = tf(zeros(6));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -144,7 +149,7 @@ Kdvf = tf(zeros(6));
|
||||
We identify the system for the following payload masses:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ms = [1, 10, 50];
|
||||
<pre class="src src-matlab"> Ms = [1, 10, 50];
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -152,36 +157,36 @@ We identify the system for the following payload masses:
|
||||
The nano-hexapod has the following leg’s stiffness and damping.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeNanoHexapod('k', 1e5, 'c', 2e2);
|
||||
<pre class="src src-matlab"> initializeNanoHexapod(<span class="org-string">'k'</span>, 1e5, <span class="org-string">'c'</span>, 2e2);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfef1a3f" class="outline-3">
|
||||
<h3 id="orgfef1a3f"><span class="section-number-3">1.3</span> Controller Design</h3>
|
||||
<div id="outline-container-org6f820ae" class="outline-3">
|
||||
<h3 id="org6f820ae"><span class="section-number-3">1.3</span> Controller Design</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
The obtain dynamics from actuators forces \(\tau_i\) to the relative motion of the legs \(d\mathcal{L}_i\) is shown in Figure <a href="#orgdb7af3b">2</a> for the three considered payload masses.
|
||||
The obtain dynamics from actuators forces \(\tau_i\) to the relative motion of the legs \(d\mathcal{L}_i\) is shown in Figure <a href="#org3f64a5c">2</a> for the three considered payload masses.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The Root Locus is shown in Figure <a href="#org5814b4f">3</a> and wee see that we have unconditional stability.
|
||||
The Root Locus is shown in Figure <a href="#org4342572">3</a> and wee see that we have unconditional stability.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In order to choose the gain such that we obtain good damping for all the three payload masses, we plot the damping ration of the modes as a function of the gain for all three payload masses in Figure <a href="#orgb16b2c3">4</a>.
|
||||
In order to choose the gain such that we obtain good damping for all the three payload masses, we plot the damping ration of the modes as a function of the gain for all three payload masses in Figure <a href="#org79a7504">4</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgdb7af3b" class="figure">
|
||||
<div id="org3f64a5c" class="figure">
|
||||
<p><img src="figs/opt_stiff_dvf_plant.png" alt="opt_stiff_dvf_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Dynamics for the Direct Velocity Feedback active damping for three payload masses</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org5814b4f" class="figure">
|
||||
<div id="org4342572" class="figure">
|
||||
<p><img src="figs/opt_stiff_dvf_root_locus.png" alt="opt_stiff_dvf_root_locus.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Root Locus for the DVF control for three payload masses</p>
|
||||
@ -191,7 +196,7 @@ In order to choose the gain such that we obtain good damping for all the three p
|
||||
Damping as function of the gain
|
||||
</p>
|
||||
|
||||
<div id="orgb16b2c3" class="figure">
|
||||
<div id="org79a7504" class="figure">
|
||||
<p><img src="figs/opt_stiff_dvf_damping_gain.png" alt="opt_stiff_dvf_damping_gain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Damping ratio of the poles as a function of the DVF gain</p>
|
||||
@ -201,14 +206,14 @@ Damping as function of the gain
|
||||
Finally, we use the following controller for the Decentralized Direct Velocity Feedback:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kdvf = 5e3*s/(1+s/2/pi/1e3)*eye(6);
|
||||
<pre class="src src-matlab"> Kdvf = 5e3<span class="org-type">*</span>s<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>1e3)<span class="org-type">*</span>eye(6);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3c73014" class="outline-3">
|
||||
<h3 id="org3c73014"><span class="section-number-3">1.4</span> Effect of the Low Authority Control on the Primary Plant</h3>
|
||||
<div id="outline-container-org5434213" class="outline-3">
|
||||
<h3 id="org5434213"><span class="section-number-3">1.4</span> Effect of the Low Authority Control on the Primary Plant</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<p>
|
||||
Let’s identify the dynamics from actuator forces \(\bm{\tau}\) to displacement as measured by the metrology \(\bm{\mathcal{X}}\):
|
||||
@ -220,10 +225,10 @@ We do so both when the DVF is applied and when it is not applied.
|
||||
<p>
|
||||
Then, we compute the transfer function from forces applied by the actuators \(\bm{\mathcal{F}}\) to the measured position error in the frame of the nano-hexapod \(\bm{\epsilon}_{\mathcal{X}_n}\):
|
||||
\[ \bm{G}_\mathcal{X}(s) = \frac{\bm{\epsilon}_{\mathcal{X}_n}}{\bm{\mathcal{F}}} = \bm{G}(s) \bm{J}^{-T} \]
|
||||
The obtained dynamics is shown in Figure <a href="#org45c1265">5</a>.
|
||||
The obtained dynamics is shown in Figure <a href="#org4b0b413">5</a>.
|
||||
</p>
|
||||
|
||||
<div class="important">
|
||||
<div class="important" id="orgd787228">
|
||||
<p>
|
||||
A zero with a positive real part is introduced in the transfer function from \(\mathcal{F}_y\) to \(\mathcal{X}_y\) after Decentralized Direct Velocity Feedback is applied.
|
||||
</p>
|
||||
@ -233,23 +238,23 @@ A zero with a positive real part is introduced in the transfer function from \(\
|
||||
<p>
|
||||
And we compute the transfer function from actuator forces \(\bm{\tau}\) to position error of each leg \(\bm{\epsilon}_\mathcal{L}\):
|
||||
\[ \bm{G}_\mathcal{L} = \frac{\bm{\epsilon}_\mathcal{L}}{\bm{\tau}} = \bm{J} \bm{G}(s) \]
|
||||
The obtained dynamics is shown in Figure <a href="#org069e296">6</a>.
|
||||
The obtained dynamics is shown in Figure <a href="#org0a1130b">6</a>.
|
||||
</p>
|
||||
|
||||
<div id="org45c1265" class="figure">
|
||||
<div id="org4b0b413" class="figure">
|
||||
<p><img src="figs/opt_stiff_primary_plant_damped_X.png" alt="opt_stiff_primary_plant_damped_X.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Primary plant in the task space with (dashed) and without (solid) Direct Velocity Feedback</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org069e296" class="figure">
|
||||
<div id="org0a1130b" class="figure">
|
||||
<p><img src="figs/opt_stiff_primary_plant_damped_L.png" alt="opt_stiff_primary_plant_damped_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Primary plant in the space of the legs with (dashed) and without (solid) Direct Velocity Feedback</p>
|
||||
</div>
|
||||
<p>
|
||||
The coupling (off diagonal elements) of \(\bm{G}_\mathcal{X}\) are shown in Figure <a href="#orgbb4e497">7</a> both when DVF is applied and when it is not.
|
||||
The coupling (off diagonal elements) of \(\bm{G}_\mathcal{X}\) are shown in Figure <a href="#org67cb6cd">7</a> both when DVF is applied and when it is not.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -258,25 +263,25 @@ The coupling does not change a lot with DVF.
|
||||
|
||||
|
||||
<p>
|
||||
The coupling in the space of the legs \(\bm{G}_\mathcal{L}\) are shown in Figure <a href="#orgc43d759">8</a>.
|
||||
The coupling in the space of the legs \(\bm{G}_\mathcal{L}\) are shown in Figure <a href="#org6331a29">8</a>.
|
||||
</p>
|
||||
|
||||
<div class="important">
|
||||
<div class="important" id="orgc16e5dd">
|
||||
<p>
|
||||
The magnitude of the coupling between \(\tau_i\) and \(d\mathcal{L}_j\) (Figure <a href="#orgc43d759">8</a>) around the resonance of the nano-hexapod (where the coupling is the highest) is considerably reduced when DVF is applied.
|
||||
The magnitude of the coupling between \(\tau_i\) and \(d\mathcal{L}_j\) (Figure <a href="#org6331a29">8</a>) around the resonance of the nano-hexapod (where the coupling is the highest) is considerably reduced when DVF is applied.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgbb4e497" class="figure">
|
||||
<div id="org67cb6cd" class="figure">
|
||||
<p><img src="figs/opt_stiff_primary_plant_damped_coupling_X.png" alt="opt_stiff_primary_plant_damped_coupling_X.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Coupling in the primary plant in the task with (dashed) and without (solid) Direct Velocity Feedback</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgc43d759" class="figure">
|
||||
<div id="org6331a29" class="figure">
|
||||
<p><img src="figs/opt_stiff_primary_plant_damped_coupling_L.png" alt="opt_stiff_primary_plant_damped_coupling_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Coupling in the primary plant in the space of the legs with (dashed) and without (solid) Direct Velocity Feedback</p>
|
||||
@ -284,8 +289,8 @@ The magnitude of the coupling between \(\tau_i\) and \(d\mathcal{L}_j\) (Figure
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgee5dbee" class="outline-3">
|
||||
<h3 id="orgee5dbee"><span class="section-number-3">1.5</span> Effect of the Low Authority Control on the Sensibility to Disturbances</h3>
|
||||
<div id="outline-container-orgc187d77" class="outline-3">
|
||||
<h3 id="orgc187d77"><span class="section-number-3">1.5</span> Effect of the Low Authority Control on the Sensibility to Disturbances</h3>
|
||||
<div class="outline-text-3" id="text-1-5">
|
||||
<p>
|
||||
We may now see how Decentralized Direct Velocity Feedback changes the sensibility to disturbances, namely:
|
||||
@ -307,15 +312,15 @@ To simplify the analysis, we here only consider the vertical direction, thus, we
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The norm of these transfer functions are shown in Figure <a href="#org199898b">9</a>.
|
||||
The norm of these transfer functions are shown in Figure <a href="#orgc177556">9</a>.
|
||||
</p>
|
||||
|
||||
<div id="org199898b" class="figure">
|
||||
<div id="orgc177556" class="figure">
|
||||
<p><img src="figs/opt_stiff_sensibility_dist_dvf.png" alt="opt_stiff_sensibility_dist_dvf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Norm of the transfer function from vertical disturbances to vertical position error with (dashed) and without (solid) Direct Velocity Feedback applied</p>
|
||||
</div>
|
||||
<div class="important">
|
||||
<div class="important" id="orgb9e4f65">
|
||||
<p>
|
||||
Decentralized Direct Velocity Feedback is shown to increase the effect of stages vibrations at high frequency and to reduce the effect of ground motion and direct forces at low frequency.
|
||||
</p>
|
||||
@ -324,10 +329,10 @@ Decentralized Direct Velocity Feedback is shown to increase the effect of stages
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdc2eb5a" class="outline-3">
|
||||
<h3 id="orgdc2eb5a"><span class="section-number-3">1.6</span> Conclusion</h3>
|
||||
<div id="outline-container-org9539bfe" class="outline-3">
|
||||
<h3 id="org9539bfe"><span class="section-number-3">1.6</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-1-6">
|
||||
<div class="important">
|
||||
<div class="important" id="orgf2d2cca">
|
||||
<p>
|
||||
|
||||
</p>
|
||||
@ -337,14 +342,14 @@ Decentralized Direct Velocity Feedback is shown to increase the effect of stages
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org81dc0a8" class="outline-2">
|
||||
<h2 id="org81dc0a8"><span class="section-number-2">2</span> Primary Control in the leg space</h2>
|
||||
<div id="outline-container-org2797edc" class="outline-2">
|
||||
<h2 id="org2797edc"><span class="section-number-2">2</span> Primary Control in the leg space</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="orgd0beb6a"></a>
|
||||
<a id="orge570650"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section we implement the control architecture shown in Figure <a href="#org7d5c8bc">10</a> consisting of:
|
||||
In this section we implement the control architecture shown in Figure <a href="#orga22fd47">10</a> consisting of:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>an inner loop with a decentralized direct velocity feedback control</li>
|
||||
@ -352,25 +357,25 @@ In this section we implement the control architecture shown in Figure <a href="#
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org7d5c8bc" class="figure">
|
||||
<div id="orga22fd47" class="figure">
|
||||
<p><img src="figs/control_architecture_hac_dvf_pos_L.png" alt="control_architecture_hac_dvf_pos_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Cascade Control Architecture. The inner loop consist of a decentralized Direct Velocity Feedback. The outer loop consist of position control in the leg’s space</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The controller for decentralized direct velocity feedback is the one designed in Section <a href="#orgfec42cb">1</a>.
|
||||
The controller for decentralized direct velocity feedback is the one designed in Section <a href="#org8d1c1a1">1</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org1e7a412" class="outline-3">
|
||||
<h3 id="org1e7a412"><span class="section-number-3">2.1</span> Plant in the leg space</h3>
|
||||
<div id="outline-container-org8c682ad" class="outline-3">
|
||||
<h3 id="org8c682ad"><span class="section-number-3">2.1</span> Plant in the leg space</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
We now look at the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the design of \(\bm{K}_\mathcal{L}\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the three considered masses are shown in Figure <a href="#org23d23ae">11</a>.
|
||||
The diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the three considered masses are shown in Figure <a href="#org15749d9">11</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -378,7 +383,7 @@ The plant dynamics below \(100\ [Hz]\) is only slightly dependent on the payload
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org23d23ae" class="figure">
|
||||
<div id="org15749d9" class="figure">
|
||||
<p><img src="figs/opt_stiff_primary_plant_L.png" alt="opt_stiff_primary_plant_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the three considered masses</p>
|
||||
@ -387,8 +392,8 @@ The plant dynamics below \(100\ [Hz]\) is only slightly dependent on the payload
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-orgf39520c" class="outline-3">
|
||||
<h3 id="orgf39520c"><span class="section-number-3">2.2</span> Control in the leg space</h3>
|
||||
<div id="outline-container-org8308914" class="outline-3">
|
||||
<h3 id="org8308914"><span class="section-number-3">2.2</span> Control in the leg space</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
We design a diagonal controller with all the same diagonal elements.
|
||||
@ -414,21 +419,21 @@ The design controller is as follows:
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The loop gain is shown in Figure <a href="#orgbcc0acb">12</a>.
|
||||
The loop gain is shown in Figure <a href="#org05096f1">12</a>.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">h = 2.0;
|
||||
Kl = 2e7 * eye(6) * ...
|
||||
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
|
||||
1/h*(s/(2*pi*200/h) + 1)/(s/(2*pi*200*h) + 1) * ...
|
||||
(s/2/pi/10 + 1)/(s/2/pi/10) * ...
|
||||
1/(1 + s/2/pi/300);
|
||||
<pre class="src src-matlab"> h = 2.0;
|
||||
Kl = 2e7 <span class="org-type">*</span> eye(6) <span class="org-type">*</span> ...
|
||||
1<span class="org-type">/</span>h<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>100<span class="org-type">/</span>h) <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>100<span class="org-type">*</span>h) <span class="org-type">+</span> 1) <span class="org-type">*</span> ...
|
||||
1<span class="org-type">/</span>h<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>200<span class="org-type">/</span>h) <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>200<span class="org-type">*</span>h) <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>10 <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>10) <span class="org-type">*</span> ...
|
||||
1<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>300);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgbcc0acb" class="figure">
|
||||
<div id="org05096f1" class="figure">
|
||||
<p><img src="figs/opt_stiff_primary_loop_gain_L.png" alt="opt_stiff_primary_loop_gain_L.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Loop gain for the primary plant</p>
|
||||
@ -438,25 +443,25 @@ Kl = 2e7 * eye(6) * ...
|
||||
Finally, we include the Jacobian in the control and we ignore the measurement of the vertical rotation as for the real system.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('mat/stages.mat', 'nano_hexapod');
|
||||
K = Kl*nano_hexapod.kinematics.J*diag([1, 1, 1, 1, 1, 0]);
|
||||
<pre class="src src-matlab"> load(<span class="org-string">'mat/stages.mat'</span>, <span class="org-string">'nano_hexapod'</span>);
|
||||
K = Kl<span class="org-type">*</span>nano_hexapod.kinematics.J<span class="org-type">*</span>diag([1, 1, 1, 1, 1, 0]);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org16d192f" class="outline-3">
|
||||
<h3 id="org16d192f"><span class="section-number-3">2.3</span> Sensibility to Disturbances and Noise Budget</h3>
|
||||
<div id="outline-container-org5a96746" class="outline-3">
|
||||
<h3 id="org5a96746"><span class="section-number-3">2.3</span> Sensibility to Disturbances and Noise Budget</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
We identify the transfer function from disturbances to the position error of the sample when the HAC-LAC control is applied.
|
||||
</p>
|
||||
<p>
|
||||
We compare the norm of these transfer function for the vertical direction when no control is applied and when HAC-LAC control is applied: Figure <a href="#org9650e03">13</a>.
|
||||
We compare the norm of these transfer function for the vertical direction when no control is applied and when HAC-LAC control is applied: Figure <a href="#orgc3a7b3a">13</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org9650e03" class="figure">
|
||||
<div id="orgc3a7b3a" class="figure">
|
||||
<p><img src="figs/opt_stiff_primary_control_L_senbility_dist.png" alt="opt_stiff_primary_control_L_senbility_dist.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Sensibility to disturbances when the HAC-LAC control is applied</p>
|
||||
@ -465,27 +470,27 @@ We compare the norm of these transfer function for the vertical direction when n
|
||||
Then, we load the Power Spectral Density of the perturbations and we look at the obtained PSD of the displacement error in the vertical direction due to the disturbances:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#org32928e0">14</a>: Amplitude Spectral Density of the vertical position error due to both the vertical ground motion and the vertical vibrations of the spindle</li>
|
||||
<li>Figure <a href="#org7fda8f7">15</a>: Comparison of the Amplitude Spectral Density of the vertical position error in Open Loop and with the HAC-DVF Control</li>
|
||||
<li>Figure <a href="#org073608b">16</a>: Comparison of the Cumulative Amplitude Spectrum of the vertical position error in Open Loop and with the HAC-DVF Control</li>
|
||||
<li>Figure <a href="#org7ae258c">14</a>: Amplitude Spectral Density of the vertical position error due to both the vertical ground motion and the vertical vibrations of the spindle</li>
|
||||
<li>Figure <a href="#org72bd654">15</a>: Comparison of the Amplitude Spectral Density of the vertical position error in Open Loop and with the HAC-DVF Control</li>
|
||||
<li>Figure <a href="#org08b6134">16</a>: Comparison of the Cumulative Amplitude Spectrum of the vertical position error in Open Loop and with the HAC-DVF Control</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org32928e0" class="figure">
|
||||
<div id="org7ae258c" class="figure">
|
||||
<p><img src="figs/opt_stiff_primary_control_L_psd_dist.png" alt="opt_stiff_primary_control_L_psd_dist.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Amplitude Spectral Density of the vertical position error of the sample when the HAC-DVF control is applied due to both the ground motion and spindle vibrations</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org7fda8f7" class="figure">
|
||||
<div id="org72bd654" class="figure">
|
||||
<p><img src="figs/opt_stiff_primary_control_L_psd_tot.png" alt="opt_stiff_primary_control_L_psd_tot.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Amplitude Spectral Density of the vertical position error of the sample in Open-Loop and when the HAC-DVF control is applied</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org073608b" class="figure">
|
||||
<div id="org08b6134" class="figure">
|
||||
<p><img src="figs/opt_stiff_primary_control_L_cas_tot.png" alt="opt_stiff_primary_control_L_cas_tot.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 16: </span>Cumulative Amplitude Spectrum of the vertical position error of the sample in Open-Loop and when the HAC-DVF control is applied</p>
|
||||
@ -493,17 +498,17 @@ Then, we load the Power Spectral Density of the perturbations and we look at the
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8f34c09" class="outline-3">
|
||||
<h3 id="org8f34c09"><span class="section-number-3">2.4</span> Simulations of Tomography Experiment</h3>
|
||||
<div id="outline-container-org370df82" class="outline-3">
|
||||
<h3 id="org370df82"><span class="section-number-3">2.4</span> Simulations of Tomography Experiment</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<p>
|
||||
Let’s now simulate a tomography experiment.
|
||||
To do so, we include all disturbances except vibrations of the translation stage.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances();
|
||||
initializeSimscapeConfiguration('gravity', false);
|
||||
initializeLoggingConfiguration('log', 'all');
|
||||
<pre class="src src-matlab"> initializeDisturbances();
|
||||
initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -512,40 +517,40 @@ And we run the simulation for all three payload Masses.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgcc19864" class="outline-3">
|
||||
<h3 id="orgcc19864"><span class="section-number-3">2.5</span> Results</h3>
|
||||
<div id="outline-container-orgd19d198" class="outline-3">
|
||||
<h3 id="orgd19d198"><span class="section-number-3">2.5</span> Results</h3>
|
||||
<div class="outline-text-3" id="text-2-5">
|
||||
<p>
|
||||
Let’s now see how this controller performs.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
First, we compute the Power Spectral Density of the sample’s position error and we compare it with the open loop case in Figure <a href="#org6cab6ef">17</a>.
|
||||
First, we compute the Power Spectral Density of the sample’s position error and we compare it with the open loop case in Figure <a href="#orgeb9afe3">17</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Similarly, the Cumulative Amplitude Spectrum is shown in Figure <a href="#org33e9f1a">18</a>.
|
||||
Similarly, the Cumulative Amplitude Spectrum is shown in Figure <a href="#org6b85652">18</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Finally, the time domain position error signals are shown in Figure <a href="#orgf0f1950">19</a>.
|
||||
Finally, the time domain position error signals are shown in Figure <a href="#orge2cc533">19</a>.
|
||||
</p>
|
||||
|
||||
<div id="org6cab6ef" class="figure">
|
||||
<div id="orgeb9afe3" class="figure">
|
||||
<p><img src="figs/opt_stiff_hac_dvf_L_psd_disp_error.png" alt="opt_stiff_hac_dvf_L_psd_disp_error.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 17: </span>Amplitude Spectral Density of the position error in Open Loop and with the HAC-LAC controller</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org33e9f1a" class="figure">
|
||||
<div id="org6b85652" class="figure">
|
||||
<p><img src="figs/opt_stiff_hac_dvf_L_cas_disp_error.png" alt="opt_stiff_hac_dvf_L_cas_disp_error.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 18: </span>Cumulative Amplitude Spectrum of the position error in Open Loop and with the HAC-LAC controller</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgf0f1950" class="figure">
|
||||
<div id="orge2cc533" class="figure">
|
||||
<p><img src="figs/opt_stiff_hac_dvf_L_pos_error.png" alt="opt_stiff_hac_dvf_L_pos_error.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 19: </span>Position Error of the sample during a tomography experiment when no control is applied and with the HAC-DVF control architecture</p>
|
||||
@ -553,18 +558,18 @@ Finally, the time domain position error signals are shown in Figure <a href="#or
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf709759" class="outline-3">
|
||||
<h3 id="orgf709759"><span class="section-number-3">2.6</span> Actuator Stroke and Forces</h3>
|
||||
<div id="outline-container-org4bc7412" class="outline-3">
|
||||
<h3 id="org4bc7412"><span class="section-number-3">2.6</span> Actuator Stroke and Forces</h3>
|
||||
<div class="outline-text-3" id="text-2-6">
|
||||
|
||||
<div id="orgf9d6367" class="figure">
|
||||
<div id="orgd89d4d1" class="figure">
|
||||
<p><img src="figs/opt_stiff_hac_dvf_L_act_force.png" alt="opt_stiff_hac_dvf_L_act_force.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 20: </span>Force applied by the actuator during the simulation</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org11b8730" class="figure">
|
||||
<div id="org78753f1" class="figure">
|
||||
<p><img src="figs/opt_stiff_hac_dvf_L_act_stroke.png" alt="opt_stiff_hac_dvf_L_act_stroke.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 21: </span>Leg’s stroke during the simulation</p>
|
||||
@ -572,10 +577,10 @@ Finally, the time domain position error signals are shown in Figure <a href="#or
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcf22d67" class="outline-3">
|
||||
<h3 id="orgcf22d67"><span class="section-number-3">2.7</span> Conclusion</h3>
|
||||
<div id="outline-container-orgead2d0d" class="outline-3">
|
||||
<h3 id="orgead2d0d"><span class="section-number-3">2.7</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-7">
|
||||
<div class="important">
|
||||
<div class="important" id="orgd04ff34">
|
||||
<p>
|
||||
|
||||
</p>
|
||||
@ -585,16 +590,16 @@ Finally, the time domain position error signals are shown in Figure <a href="#or
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org56b28cd" class="outline-2">
|
||||
<h2 id="org56b28cd"><span class="section-number-2">3</span> Further More complex simulations</h2>
|
||||
<div id="outline-container-orgbb6ed0e" class="outline-2">
|
||||
<h2 id="orgbb6ed0e"><span class="section-number-2">3</span> Further More complex simulations</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
</div>
|
||||
<div id="outline-container-org6c1ddb5" class="outline-3">
|
||||
<h3 id="org6c1ddb5"><span class="section-number-3">3.1</span> Simulation with Micro-Hexapod Offset</h3>
|
||||
<div id="outline-container-orgbe6d807" class="outline-3">
|
||||
<h3 id="orgbe6d807"><span class="section-number-3">3.1</span> Simulation with Micro-Hexapod Offset</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
</div>
|
||||
<div id="outline-container-org78cec1a" class="outline-4">
|
||||
<h4 id="org78cec1a"><span class="section-number-4">3.1.1</span> Simulation</h4>
|
||||
<div id="outline-container-orgd36f8c4" class="outline-4">
|
||||
<h4 id="orgd36f8c4"><span class="section-number-4">3.1.1</span> Simulation</h4>
|
||||
<div class="outline-text-4" id="text-3-1-1">
|
||||
<p>
|
||||
The micro-hexapod is inducing a 10mm offset of the sample center of mass with the rotation axis.
|
||||
@ -602,43 +607,43 @@ A tomography experiment is then simulated.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances();
|
||||
initializeSimscapeConfiguration('gravity', false);
|
||||
initializeLoggingConfiguration('log', 'all');
|
||||
<pre class="src src-matlab"> initializeDisturbances();
|
||||
initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||
|
||||
initializeSample('mass', 1, 'freq', 200);
|
||||
initializeMicroHexapod('AP', [10e-3 0 0]);
|
||||
initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
|
||||
'Dh_pos', [10e-3; 0; 0; 0; 0; 0]);
|
||||
initializeSample(<span class="org-string">'mass'</span>, 1, <span class="org-string">'freq'</span>, 200);
|
||||
initializeMicroHexapod(<span class="org-string">'AP'</span>, [10e<span class="org-type">-</span>3 0 0]);
|
||||
initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating'</span>, <span class="org-string">'Rz_period'</span>, 1, ...
|
||||
<span class="org-string">'Dh_pos'</span>, [10e<span class="org-type">-</span>3; 0; 0; 0; 0; 0]);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '3');
|
||||
sim('nass_model');
|
||||
<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">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org53a553d" class="outline-4">
|
||||
<h4 id="org53a553d"><span class="section-number-4">3.1.2</span> Results</h4>
|
||||
<div id="outline-container-org8fe5f58" class="outline-4">
|
||||
<h4 id="org8fe5f58"><span class="section-number-4">3.1.2</span> Results</h4>
|
||||
<div class="outline-text-4" id="text-3-1-2">
|
||||
|
||||
<div id="org6be7e46" class="figure">
|
||||
<div id="org776d205" class="figure">
|
||||
<p><img src="figs/opt_stiff_hac_dvf_Dh_offset_disp_error.png" alt="opt_stiff_hac_dvf_Dh_offset_disp_error.png" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org07fa12d" class="figure">
|
||||
<div id="org26c6131" class="figure">
|
||||
<p><img src="figs/opt_stiff_hac_dvf_Dh_offset_F.png" alt="opt_stiff_hac_dvf_Dh_offset_F.png" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orga4d03c5" class="figure">
|
||||
<div id="org176d06f" class="figure">
|
||||
<p><img src="figs/opt_stiff_hac_dvf_Dh_offset_dL.png" alt="opt_stiff_hac_dvf_Dh_offset_dL.png" />
|
||||
</p>
|
||||
</div>
|
||||
@ -646,12 +651,12 @@ sim('nass_model');
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5cb899b" class="outline-3">
|
||||
<h3 id="org5cb899b"><span class="section-number-3">3.2</span> Simultaneous Translation scans and Spindle’s rotation</h3>
|
||||
<div id="outline-container-org9753678" class="outline-3">
|
||||
<h3 id="org9753678"><span class="section-number-3">3.2</span> Simultaneous Translation scans and Spindle’s rotation</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
</div>
|
||||
<div id="outline-container-orgf715899" class="outline-4">
|
||||
<h4 id="orgf715899"><span class="section-number-4">3.2.1</span> Simulation</h4>
|
||||
<div id="outline-container-org2619c3f" class="outline-4">
|
||||
<h4 id="org2619c3f"><span class="section-number-4">3.2.1</span> Simulation</h4>
|
||||
<div class="outline-text-4" id="text-3-2-1">
|
||||
<p>
|
||||
A simulation is now performed with translation scans and spindle rotation at the same time.
|
||||
@ -662,35 +667,35 @@ The sample has a mass of 1kg, the spindle rotation speed is 60rpm and the transl
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances();
|
||||
initializeSimscapeConfiguration('gravity', false);
|
||||
initializeLoggingConfiguration('log', 'all');
|
||||
<pre class="src src-matlab"> initializeDisturbances();
|
||||
initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||
|
||||
initializeSample('mass', 1, 'freq', 200);
|
||||
initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
|
||||
'Dy_type', 'triangular', 'Dy_amplitude', 5e-3, 'Dy_period', 4);
|
||||
initializeSample(<span class="org-string">'mass'</span>, 1, <span class="org-string">'freq'</span>, 200);
|
||||
initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating'</span>, <span class="org-string">'Rz_period'</span>, 1, ...
|
||||
<span class="org-string">'Dy_type'</span>, <span class="org-string">'triangular'</span>, <span class="org-string">'Dy_amplitude'</span>, 5e<span class="org-type">-</span>3, <span class="org-string">'Dy_period'</span>, 4);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org056af12" class="outline-4">
|
||||
<h4 id="org056af12"><span class="section-number-4">3.2.2</span> Results</h4>
|
||||
<div id="outline-container-org8a2b562" class="outline-4">
|
||||
<h4 id="org8a2b562"><span class="section-number-4">3.2.2</span> Results</h4>
|
||||
<div class="outline-text-4" id="text-3-2-2">
|
||||
|
||||
<div id="orgbfa1d02" class="figure">
|
||||
<div id="orgc2e9b19" class="figure">
|
||||
<p><img src="figs/opt_stiff_hac_dvf_Dy_scans_disp_error.png" alt="opt_stiff_hac_dvf_Dy_scans_disp_error.png" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org760b96c" class="figure">
|
||||
<div id="org35d233c" class="figure">
|
||||
<p><img src="figs/opt_stiff_hac_dvf_Dy_scans_F.png" alt="opt_stiff_hac_dvf_Dy_scans_F.png" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgae36e3d" class="figure">
|
||||
<div id="org46908f8" class="figure">
|
||||
<p><img src="figs/opt_stiff_hac_dvf_Dy_scans_dL.png" alt="opt_stiff_hac_dvf_Dy_scans_dL.png" />
|
||||
</p>
|
||||
</div>
|
||||
@ -699,14 +704,14 @@ initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9bd2bf8" class="outline-2">
|
||||
<h2 id="org9bd2bf8"><span class="section-number-2">4</span> Primary Control in the task space</h2>
|
||||
<div id="outline-container-org26c4ef6" class="outline-2">
|
||||
<h2 id="org26c4ef6"><span class="section-number-2">4</span> Primary Control in the task space</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
<a id="orge9c2f9a"></a>
|
||||
<a id="org06af957"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, the control architecture shown in Figure <a href="#org7e70ccc">28</a> is applied and consists of:
|
||||
In this section, the control architecture shown in Figure <a href="#org9be312d">28</a> is applied and consists of:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>an inner Low Authority Control loop consisting of a decentralized direct velocity control controller</li>
|
||||
@ -714,14 +719,14 @@ In this section, the control architecture shown in Figure <a href="#org7e70ccc">
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org7e70ccc" class="figure">
|
||||
<div id="org9be312d" class="figure">
|
||||
<p><img src="figs/control_architecture_hac_dvf_pos_X.png" alt="control_architecture_hac_dvf_pos_X.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 28: </span>HAC-LAC architecture</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org07b4a9d" class="outline-3">
|
||||
<h3 id="org07b4a9d"><span class="section-number-3">4.1</span> Plant in the task space</h3>
|
||||
<div id="outline-container-org48bda71" class="outline-3">
|
||||
<h3 id="org48bda71"><span class="section-number-3">4.1</span> Plant in the task space</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
Let’s look \(\bm{G}_\mathcal{X}(s)\).
|
||||
@ -729,62 +734,62 @@ Let’s look \(\bm{G}_\mathcal{X}(s)\).
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7d888f9" class="outline-3">
|
||||
<h3 id="org7d888f9"><span class="section-number-3">4.2</span> Control in the task space</h3>
|
||||
<div id="outline-container-org4251f93" class="outline-3">
|
||||
<h3 id="org4251f93"><span class="section-number-3">4.2</span> Control in the task space</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kx = tf(zeros(6));
|
||||
<pre class="src src-matlab"> Kx = tf(zeros(6));
|
||||
|
||||
h = 2.5;
|
||||
Kx(1,1) = 3e7 * ...
|
||||
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
|
||||
(s/2/pi/1 + 1)/(s/2/pi/1);
|
||||
h = 2.5;
|
||||
Kx<span class="org-type">(1,1) </span>= 3e7 <span class="org-type">*</span> ...
|
||||
1<span class="org-type">/</span>h<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>100<span class="org-type">/</span>h) <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>100<span class="org-type">*</span>h) <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>1 <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>1);
|
||||
|
||||
Kx(2,2) = Kx(1,1);
|
||||
Kx<span class="org-type">(2,2) </span>= Kx(1,1);
|
||||
|
||||
h = 2.5;
|
||||
Kx(3,3) = 3e7 * ...
|
||||
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
|
||||
(s/2/pi/1 + 1)/(s/2/pi/1);
|
||||
h = 2.5;
|
||||
Kx<span class="org-type">(3,3) </span>= 3e7 <span class="org-type">*</span> ...
|
||||
1<span class="org-type">/</span>h<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>100<span class="org-type">/</span>h) <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>100<span class="org-type">*</span>h) <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>1 <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>1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">h = 1.5;
|
||||
Kx(4,4) = 5e5 * ...
|
||||
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
|
||||
(s/2/pi/1 + 1)/(s/2/pi/1);
|
||||
<pre class="src src-matlab"> h = 1.5;
|
||||
Kx<span class="org-type">(4,4) </span>= 5e5 <span class="org-type">*</span> ...
|
||||
1<span class="org-type">/</span>h<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>100<span class="org-type">/</span>h) <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>100<span class="org-type">*</span>h) <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>1 <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>1);
|
||||
|
||||
Kx(5,5) = Kx(4,4);
|
||||
Kx<span class="org-type">(5,5) </span>= Kx(4,4);
|
||||
|
||||
h = 1.5;
|
||||
Kx(6,6) = 5e4 * ...
|
||||
1/h*(s/(2*pi*30/h) + 1)/(s/(2*pi*30*h) + 1) * ...
|
||||
(s/2/pi/1 + 1)/(s/2/pi/1);
|
||||
h = 1.5;
|
||||
Kx<span class="org-type">(6,6) </span>= 5e4 <span class="org-type">*</span> ...
|
||||
1<span class="org-type">/</span>h<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>30<span class="org-type">/</span>h) <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>30<span class="org-type">*</span>h) <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>1 <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>1);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb28634b" class="outline-4">
|
||||
<h4 id="orgb28634b"><span class="section-number-4">4.2.1</span> Stability</h4>
|
||||
<div id="outline-container-org226215f" class="outline-4">
|
||||
<h4 id="org226215f"><span class="section-number-4">4.2.1</span> Stability</h4>
|
||||
<div class="outline-text-4" id="text-4-2-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">for i = 1:length(Ms)
|
||||
isstable(feedback(Gm_x{i}*Kx, eye(6), -1))
|
||||
end
|
||||
<pre class="src src-matlab"> <span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(Ms)</span>
|
||||
isstable(feedback(Gm_x{<span class="org-constant">i</span>}<span class="org-type">*</span>Kx, eye(6), <span class="org-type">-</span>1))
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8bd1f9d" class="outline-3">
|
||||
<h3 id="org8bd1f9d"><span class="section-number-3">4.3</span> Simulation</h3>
|
||||
<div id="outline-container-org0aa9f05" class="outline-3">
|
||||
<h3 id="org0aa9f05"><span class="section-number-3">4.3</span> Simulation</h3>
|
||||
</div>
|
||||
<div id="outline-container-org3cfdfa3" class="outline-3">
|
||||
<h3 id="org3cfdfa3"><span class="section-number-3">4.4</span> Conclusion</h3>
|
||||
<div id="outline-container-org4a860c5" class="outline-3">
|
||||
<h3 id="org4a860c5"><span class="section-number-3">4.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-4-4">
|
||||
<div class="important">
|
||||
<div class="important" id="org4bf4213">
|
||||
<p>
|
||||
|
||||
</p>
|
||||
@ -796,7 +801,7 @@ end
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-20 mer. 16:41</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:09</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,79 +1,83 @@
|
||||
<?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-04-17 ven. 09:35 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Determination of the optimal nano-hexapod’s stiffness for reducing the effect of disturbances</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Determination of the optimal nano-hexapod’s stiffness for reducing the effect of disturbances</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org9e9f810">1. Disturbances</a></li>
|
||||
<li><a href="#orgc44cf7e">2. Effect of disturbances on the position error</a>
|
||||
<li><a href="#org1d00c3b">1. Disturbances</a></li>
|
||||
<li><a href="#orgd8c957a">2. Effect of disturbances on the position error</a>
|
||||
<ul>
|
||||
<li><a href="#org524df41">2.1. Initialization</a></li>
|
||||
<li><a href="#orgaf88c9f">2.2. Identification</a></li>
|
||||
<li><a href="#org78dd34d">2.3. Sensitivity to Stages vibration (Filtering)</a></li>
|
||||
<li><a href="#orgd4ea2f4">2.4. Effect of Ground motion (Transmissibility).</a></li>
|
||||
<li><a href="#org0448746">2.5. Direct Forces (Compliance).</a></li>
|
||||
<li><a href="#org626fe57">2.6. Conclusion</a></li>
|
||||
<li><a href="#org35d2f91">2.1. Initialization</a></li>
|
||||
<li><a href="#org094b5a7">2.2. Identification</a></li>
|
||||
<li><a href="#org7e3e79d">2.3. Sensitivity to Stages vibration (Filtering)</a></li>
|
||||
<li><a href="#org19c4b17">2.4. Effect of Ground motion (Transmissibility).</a></li>
|
||||
<li><a href="#org0890188">2.5. Direct Forces (Compliance).</a></li>
|
||||
<li><a href="#orgea2d185">2.6. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org6527e58">3. Effect of granite stiffness</a>
|
||||
<li><a href="#orgf6c1d0f">3. Effect of granite stiffness</a>
|
||||
<ul>
|
||||
<li><a href="#orgd3e5fe1">3.1. Analytical Analysis</a>
|
||||
<li><a href="#org9b72d9e">3.1. Analytical Analysis</a>
|
||||
<ul>
|
||||
<li><a href="#orgbc34a65">3.1.1. Simple mass-spring-damper model</a></li>
|
||||
<li><a href="#org4ddec32">3.1.2. General Case</a></li>
|
||||
<li><a href="#orgcb7fd26">3.1.1. Simple mass-spring-damper model</a></li>
|
||||
<li><a href="#orgb9ac8f4">3.1.2. General Case</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org9215f81">3.2. Soft Granite</a></li>
|
||||
<li><a href="#org8878556">3.3. Effect of the Granite transfer function</a></li>
|
||||
<li><a href="#orgf388e39">3.4. Conclusion</a></li>
|
||||
<li><a href="#orge9846e9">3.2. Soft Granite</a></li>
|
||||
<li><a href="#org699ef0a">3.3. Effect of the Granite transfer function</a></li>
|
||||
<li><a href="#org26b072f">3.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org8a88fb0">4. Open Loop Budget Error</a>
|
||||
<li><a href="#org92ed7b0">4. Open Loop Budget Error</a>
|
||||
<ul>
|
||||
<li><a href="#org6bd588f">4.1. Noise Budgeting - Theory</a></li>
|
||||
<li><a href="#orgcc86f59">4.2. Power Spectral Densities</a></li>
|
||||
<li><a href="#orgef96b89">4.3. Cumulative Amplitude Spectrum</a></li>
|
||||
<li><a href="#org0be3c47">4.4. Conclusion</a></li>
|
||||
<li><a href="#orgf8bb217">4.1. Noise Budgeting - Theory</a></li>
|
||||
<li><a href="#org0a97ffb">4.2. Power Spectral Densities</a></li>
|
||||
<li><a href="#org44eafed">4.3. Cumulative Amplitude Spectrum</a></li>
|
||||
<li><a href="#org091b440">4.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org34c0f38">5. Closed Loop Budget Error</a>
|
||||
<li><a href="#org5bb46c4">5. Closed Loop Budget Error</a>
|
||||
<ul>
|
||||
<li><a href="#orgdfef0eb">5.1. Approximation of the effect of feedback on the motion error</a></li>
|
||||
<li><a href="#orgf2d36a1">5.2. Reduction thanks to feedback - Required bandwidth</a></li>
|
||||
<li><a href="#org2cb5e9a">5.1. Approximation of the effect of feedback on the motion error</a></li>
|
||||
<li><a href="#org15ee341">5.2. Reduction thanks to feedback - Required bandwidth</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org08f4548">6. Conclusion</a></li>
|
||||
<li><a href="#orgf3b0566">6. Conclusion</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -86,18 +90,18 @@ In this document is studied how the stiffness of the nano-hexapod will impact th
|
||||
It is divided in the following sections:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Section <a href="#org17d3d6a">1</a>: the disturbances are listed and their Power Spectral Densities (PSD) are shown</li>
|
||||
<li>Section <a href="#orgf9e4300">2</a>: the transfer functions from disturbances to the position error of the sample are computed for a wide range of nano-hexapod stiffnesses</li>
|
||||
<li>Section <a href="#orgd4105b6">3</a>:</li>
|
||||
<li>Section <a href="#org5d05990">4</a>: from both the PSD of the disturbances and the transfer function from disturbances to sample’s position errors, we compute the resulting PSD and Cumulative Amplitude Spectrum (CAS)</li>
|
||||
<li>Section <a href="#orgd3503fb">5</a>: from a simplistic model is computed the required control bandwidth to reduce the position error to acceptable values</li>
|
||||
<li>Section <a href="#orge637f3d">1</a>: the disturbances are listed and their Power Spectral Densities (PSD) are shown</li>
|
||||
<li>Section <a href="#org8db9681">2</a>: the transfer functions from disturbances to the position error of the sample are computed for a wide range of nano-hexapod stiffnesses</li>
|
||||
<li>Section <a href="#orge639dbd">3</a>:</li>
|
||||
<li>Section <a href="#org5714572">4</a>: from both the PSD of the disturbances and the transfer function from disturbances to sample’s position errors, we compute the resulting PSD and Cumulative Amplitude Spectrum (CAS)</li>
|
||||
<li>Section <a href="#org6ed8184">5</a>: from a simplistic model is computed the required control bandwidth to reduce the position error to acceptable values</li>
|
||||
</ul>
|
||||
|
||||
<div id="outline-container-org9e9f810" class="outline-2">
|
||||
<h2 id="org9e9f810"><span class="section-number-2">1</span> Disturbances</h2>
|
||||
<div id="outline-container-org1d00c3b" class="outline-2">
|
||||
<h2 id="org1d00c3b"><span class="section-number-2">1</span> Disturbances</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="org17d3d6a"></a>
|
||||
<a id="orge637f3d"></a>
|
||||
</p>
|
||||
<p>
|
||||
The main disturbances considered here are:
|
||||
@ -113,7 +117,7 @@ The main disturbances considered here are:
|
||||
The level of these disturbances has been identified form experiments which are detailed in <a href="disturbances.html">this</a> document.
|
||||
</p>
|
||||
<p>
|
||||
The measured Amplitude Spectral Densities (ASD) of these forces are shown in Figures <a href="#org6b4e47c">1</a> and <a href="#orgb7b8e77">2</a>.
|
||||
The measured Amplitude Spectral Densities (ASD) of these forces are shown in Figures <a href="#org3baaaea">1</a> and <a href="#orga5ce540">2</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -121,14 +125,14 @@ In this study, the expected frequency content of the direct forces applied to th
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org6b4e47c" class="figure">
|
||||
<div id="org3baaaea" class="figure">
|
||||
<p><img src="figs/opt_stiff_dist_gm.png" alt="opt_stiff_dist_gm.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Amplitude Spectral Density of the Ground Displacement (<a href="./figs/opt_stiff_dist_gm.png">png</a>, <a href="./figs/opt_stiff_dist_gm.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgb7b8e77" class="figure">
|
||||
<div id="orga5ce540" class="figure">
|
||||
<p><img src="figs/opt_stiff_dist_fty_frz.png" alt="opt_stiff_dist_fty_frz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Amplitude Spectral Density of the “parasitic” forces comming from the Translation stage and the spindle (<a href="./figs/opt_stiff_dist_fty_frz.png">png</a>, <a href="./figs/opt_stiff_dist_fty_frz.pdf">pdf</a>)</p>
|
||||
@ -136,32 +140,32 @@ In this study, the expected frequency content of the direct forces applied to th
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc44cf7e" class="outline-2">
|
||||
<h2 id="orgc44cf7e"><span class="section-number-2">2</span> Effect of disturbances on the position error</h2>
|
||||
<div id="outline-container-orgd8c957a" class="outline-2">
|
||||
<h2 id="orgd8c957a"><span class="section-number-2">2</span> Effect of disturbances on the position error</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="orgf9e4300"></a>
|
||||
<a id="org8db9681"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, we use the Simscape model to identify the transfer function from disturbances to the position error of the sample.
|
||||
We do that for a wide range of nano-hexapod stiffnesses and we compare the obtained results.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org524df41" class="outline-3">
|
||||
<h3 id="org524df41"><span class="section-number-3">2.1</span> Initialization</h3>
|
||||
<div id="outline-container-org35d2f91" class="outline-3">
|
||||
<h3 id="org35d2f91"><span class="section-number-3">2.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-2-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 class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -169,7 +173,7 @@ initializeMirror();
|
||||
We use a sample mass of 10kg.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSample(<span class="org-string">'mass'</span>, 10);
|
||||
<pre class="src src-matlab"> initializeSample(<span class="org-string">'mass'</span>, 10);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -177,17 +181,17 @@ We use a sample mass of 10kg.
|
||||
We include gravity, and we use no controller.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
|
||||
initializeController();
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
|
||||
initializeController();
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgaf88c9f" class="outline-3">
|
||||
<h3 id="orgaf88c9f"><span class="section-number-3">2.2</span> Identification</h3>
|
||||
<div id="outline-container-org094b5a7" class="outline-3">
|
||||
<h3 id="org094b5a7"><span class="section-number-3">2.2</span> Identification</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
The considered inputs are:
|
||||
@ -210,40 +214,40 @@ The outputs are <code>Ex</code>, <code>Ey</code>, <code>Ez</code>, <code>Erx</co
|
||||
We initialize the set of the nano-hexapod stiffnesses, and for each of them, we identify the dynamics from defined inputs to defined outputs.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ks = logspace(3,9,7); <span class="org-comment">% [N/m]</span>
|
||||
<pre class="src src-matlab"> Ks = logspace(3,9,7); <span class="org-comment">% [N/m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org78dd34d" class="outline-3">
|
||||
<h3 id="org78dd34d"><span class="section-number-3">2.3</span> Sensitivity to Stages vibration (Filtering)</h3>
|
||||
<div id="outline-container-org7e3e79d" class="outline-3">
|
||||
<h3 id="org7e3e79d"><span class="section-number-3">2.3</span> Sensitivity to Stages vibration (Filtering)</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
The sensitivity the stage vibrations are displayed:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#orgf55ba1b">3</a>: sensitivity to vertical spindle vibrations</li>
|
||||
<li>Figure <a href="#orgce1ac2c">4</a>: sensitivity to vertical translation stage vibrations</li>
|
||||
<li>Figure <a href="#org1a24ee2">5</a>: sensitivity to horizontal (x) translation stage vibrations</li>
|
||||
<li>Figure <a href="#org0073408">3</a>: sensitivity to vertical spindle vibrations</li>
|
||||
<li>Figure <a href="#org0999f05">4</a>: sensitivity to vertical translation stage vibrations</li>
|
||||
<li>Figure <a href="#org6337962">5</a>: sensitivity to horizontal (x) translation stage vibrations</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="orgf55ba1b" class="figure">
|
||||
<div id="org0073408" class="figure">
|
||||
<p><img src="figs/opt_stiff_sensitivity_Frz.png" alt="opt_stiff_sensitivity_Frz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Sensitivity to Spindle vertical motion error (\(F_{rz}\)) to the vertical error position of the sample (\(E_z\)) (<a href="./figs/opt_stiff_sensitivity_Frz.png">png</a>, <a href="./figs/opt_stiff_sensitivity_Frz.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgce1ac2c" class="figure">
|
||||
<div id="org0999f05" class="figure">
|
||||
<p><img src="figs/opt_stiff_sensitivity_Fty_z.png" alt="opt_stiff_sensitivity_Fty_z.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Sensitivity to Translation stage vertical motion error (\(F_{ty,z}\)) to the vertical error position of the sample (\(E_z\)) (<a href="./figs/opt_stiff_sensitivity_Fty_z.png">png</a>, <a href="./figs/opt_stiff_sensitivity_Fty_z.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org1a24ee2" class="figure">
|
||||
<div id="org6337962" class="figure">
|
||||
<p><img src="figs/opt_stiff_sensitivity_Fty_x.png" alt="opt_stiff_sensitivity_Fty_x.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Sensitivity to Translation stage \(x\) motion error (\(F_{ty,x}\)) to the error position of the sample in the \(x\) direction (\(E_x\)) (<a href="./figs/opt_stiff_sensitivity_Fty_x.png">png</a>, <a href="./figs/opt_stiff_sensitivity_Fty_x.pdf">pdf</a>)</p>
|
||||
@ -251,15 +255,15 @@ The sensitivity the stage vibrations are displayed:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd4ea2f4" class="outline-3">
|
||||
<h3 id="orgd4ea2f4"><span class="section-number-3">2.4</span> Effect of Ground motion (Transmissibility).</h3>
|
||||
<div id="outline-container-org19c4b17" class="outline-3">
|
||||
<h3 id="org19c4b17"><span class="section-number-3">2.4</span> Effect of Ground motion (Transmissibility).</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<p>
|
||||
The effect of Ground motion on the position error of the sample is shown in Figure <a href="#org212587b">6</a>.
|
||||
The effect of Ground motion on the position error of the sample is shown in Figure <a href="#org671bbd6">6</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org212587b" class="figure">
|
||||
<div id="org671bbd6" class="figure">
|
||||
<p><img src="figs/opt_stiff_sensitivity_Dw.png" alt="opt_stiff_sensitivity_Dw.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Sensitivity to Ground motion (\(D_{w}\)) to the position error of the sample (\(E_y\) and \(E_z\)) (<a href="./figs/opt_stiff_sensitivity_Dw.png">png</a>, <a href="./figs/opt_stiff_sensitivity_Dw.pdf">pdf</a>)</p>
|
||||
@ -267,15 +271,15 @@ The effect of Ground motion on the position error of the sample is shown in Figu
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0448746" class="outline-3">
|
||||
<h3 id="org0448746"><span class="section-number-3">2.5</span> Direct Forces (Compliance).</h3>
|
||||
<div id="outline-container-org0890188" class="outline-3">
|
||||
<h3 id="org0890188"><span class="section-number-3">2.5</span> Direct Forces (Compliance).</h3>
|
||||
<div class="outline-text-3" id="text-2-5">
|
||||
<p>
|
||||
The effect of direct forces/torques applied on the sample (cable forces for instance) on the position error of the sample is shown in Figure <a href="#orga33395f">7</a>.
|
||||
The effect of direct forces/torques applied on the sample (cable forces for instance) on the position error of the sample is shown in Figure <a href="#org022a37b">7</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orga33395f" class="figure">
|
||||
<div id="org022a37b" class="figure">
|
||||
<p><img src="figs/opt_stiff_sensitivity_Fd.png" alt="opt_stiff_sensitivity_Fd.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Sensitivity to Direct forces and torques applied to the sample (\(F_d\), \(M_d\)) to the position error of the sample (<a href="./figs/opt_stiff_sensitivity_Fd.png">png</a>, <a href="./figs/opt_stiff_sensitivity_Fd.pdf">pdf</a>)</p>
|
||||
@ -283,16 +287,16 @@ The effect of direct forces/torques applied on the sample (cable forces for inst
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org626fe57" class="outline-3">
|
||||
<h3 id="org626fe57"><span class="section-number-3">2.6</span> Conclusion</h3>
|
||||
<div id="outline-container-orgea2d185" class="outline-3">
|
||||
<h3 id="orgea2d185"><span class="section-number-3">2.6</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-6">
|
||||
<div class="important">
|
||||
<div class="important" id="orgb58fd33">
|
||||
<p>
|
||||
Reducing the nano-hexapod stiffness generally lowers the sensitivity to stages vibration but increases the sensitivity to ground motion and direct forces.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In order to conclude on the optimal stiffness that will yield the smallest sample vibration, one has to include the level of disturbances. This is done in Section <a href="#org5d05990">4</a>.
|
||||
In order to conclude on the optimal stiffness that will yield the smallest sample vibration, one has to include the level of disturbances. This is done in Section <a href="#org5714572">4</a>.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
@ -300,38 +304,38 @@ In order to conclude on the optimal stiffness that will yield the smallest sampl
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6527e58" class="outline-2">
|
||||
<h2 id="org6527e58"><span class="section-number-2">3</span> Effect of granite stiffness</h2>
|
||||
<div id="outline-container-orgf6c1d0f" class="outline-2">
|
||||
<h2 id="orgf6c1d0f"><span class="section-number-2">3</span> Effect of granite stiffness</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="orgd4105b6"></a>
|
||||
<a id="orge639dbd"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, we wish to see if a soft granite suspension could help in reducing the effect of disturbances on the position error of the sample.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-orgd3e5fe1" class="outline-3">
|
||||
<h3 id="orgd3e5fe1"><span class="section-number-3">3.1</span> Analytical Analysis</h3>
|
||||
<div id="outline-container-org9b72d9e" class="outline-3">
|
||||
<h3 id="org9b72d9e"><span class="section-number-3">3.1</span> Analytical Analysis</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
</div>
|
||||
<div id="outline-container-orgbc34a65" class="outline-4">
|
||||
<h4 id="orgbc34a65"><span class="section-number-4">3.1.1</span> Simple mass-spring-damper model</h4>
|
||||
<div id="outline-container-orgcb7fd26" class="outline-4">
|
||||
<h4 id="orgcb7fd26"><span class="section-number-4">3.1.1</span> Simple mass-spring-damper model</h4>
|
||||
<div class="outline-text-4" id="text-3-1-1">
|
||||
<p>
|
||||
Let’s consider the system shown in Figure <a href="#org8fb9606">8</a> consisting of two stacked mass-spring-damper systems.
|
||||
Let’s consider the system shown in Figure <a href="#org210f3bb">8</a> consisting of two stacked mass-spring-damper systems.
|
||||
The bottom one represents the granite, and the top one all the positioning stages.
|
||||
We want the smallest stage “deformation” \(d = x^\prime - x\) due to ground motion \(w\).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org8fb9606" class="figure">
|
||||
<div id="org210f3bb" class="figure">
|
||||
<p><img src="figs/2dof_system_granite_stiffness.png" alt="2dof_system_granite_stiffness.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Mass Spring Damper system consisting of a granite and a positioning stage</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
If we write the equation of motion of the system in Figure <a href="#org8fb9606">8</a>, we obtain:
|
||||
If we write the equation of motion of the system in Figure <a href="#org210f3bb">8</a>, we obtain:
|
||||
</p>
|
||||
\begin{align}
|
||||
m^\prime s^2 x^\prime &= (c^\prime s + k^\prime) (x - x^\prime) \\
|
||||
@ -347,8 +351,8 @@ If we note \(d = x^\prime - x\), we obtain:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4ddec32" class="outline-4">
|
||||
<h4 id="org4ddec32"><span class="section-number-4">3.1.2</span> General Case</h4>
|
||||
<div id="outline-container-orgb9ac8f4" class="outline-4">
|
||||
<h4 id="orgb9ac8f4"><span class="section-number-4">3.1.2</span> General Case</h4>
|
||||
<div class="outline-text-4" id="text-3-1-2">
|
||||
<p>
|
||||
Let’s now considering a general positioning stage defined by:
|
||||
@ -359,7 +363,7 @@ Let’s now considering a general positioning stage defined by:
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org9702e0f" class="figure">
|
||||
<div id="org82d8583" class="figure">
|
||||
<p><img src="figs/general_system_granite_stiffness.png" alt="general_system_granite_stiffness.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Mass Spring Damper representing the granite and a general representation of positioning stages</p>
|
||||
@ -380,7 +384,7 @@ where:
|
||||
<li>\(F\) is the force applied by the position stages on the granite mass</li>
|
||||
</ul>
|
||||
|
||||
<div class="important">
|
||||
<div class="important" id="org3106f21">
|
||||
<p>
|
||||
We can express \(d\) as a function of \(w\):
|
||||
</p>
|
||||
@ -416,47 +420,47 @@ which is the same as the previously derived equation.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9215f81" class="outline-3">
|
||||
<h3 id="org9215f81"><span class="section-number-3">3.2</span> Soft Granite</h3>
|
||||
<div id="outline-container-orge9846e9" class="outline-3">
|
||||
<h3 id="orge9846e9"><span class="section-number-3">3.2</span> Soft Granite</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<p>
|
||||
Let’s initialize a soft granite and see how the sensitivity to disturbances will change.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGranite(<span class="org-string">'K'</span>, 5e5<span class="org-type">*</span>ones(3,1), <span class="org-string">'C'</span>, 5e3<span class="org-type">*</span>ones(3,1));
|
||||
<pre class="src src-matlab"> initializeGranite(<span class="org-string">'K'</span>, 5e5<span class="org-type">*</span>ones(3,1), <span class="org-string">'C'</span>, 5e3<span class="org-type">*</span>ones(3,1));
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8878556" class="outline-3">
|
||||
<h3 id="org8878556"><span class="section-number-3">3.3</span> Effect of the Granite transfer function</h3>
|
||||
<div id="outline-container-org699ef0a" class="outline-3">
|
||||
<h3 id="org699ef0a"><span class="section-number-3">3.3</span> Effect of the Granite transfer function</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<p>
|
||||
From Figure <a href="#org38146da">10</a>, we can see that having a “soft” granite suspension greatly lowers the sensitivity to ground motion.
|
||||
From Figure <a href="#org5ecd9f8">10</a>, we can see that having a “soft” granite suspension greatly lowers the sensitivity to ground motion.
|
||||
The sensitivity is indeed lowered starting from the resonance of the granite on its soft suspension (few Hz here).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
From Figures <a href="#orgc4c14fb">11</a> and <a href="#org533cc4b">12</a>, we see that the change of granite suspension does not change a lot the sensitivity to both direct forces and stage vibrations.
|
||||
From Figures <a href="#org71cfcc7">11</a> and <a href="#org0bb4ee0">12</a>, we see that the change of granite suspension does not change a lot the sensitivity to both direct forces and stage vibrations.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org38146da" class="figure">
|
||||
<div id="org5ecd9f8" class="figure">
|
||||
<p><img src="figs/opt_stiff_soft_granite_Dw.png" alt="opt_stiff_soft_granite_Dw.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Change of sensibility to Ground motion when using a stiff Granite (solid curves) and a soft Granite (dashed curves) (<a href="./figs/opt_stiff_soft_granite_Dw.png">png</a>, <a href="./figs/opt_stiff_soft_granite_Dw.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgc4c14fb" class="figure">
|
||||
<div id="org71cfcc7" class="figure">
|
||||
<p><img src="figs/opt_stiff_soft_granite_Frz.png" alt="opt_stiff_soft_granite_Frz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Change of sensibility to Spindle vibrations when using a stiff Granite (solid curves) and a soft Granite (dashed curves) (<a href="./figs/opt_stiff_soft_granite_Frz.png">png</a>, <a href="./figs/opt_stiff_soft_granite_Frz.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org533cc4b" class="figure">
|
||||
<div id="org0bb4ee0" class="figure">
|
||||
<p><img src="figs/opt_stiff_soft_granite_Fd.png" alt="opt_stiff_soft_granite_Fd.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Change of sensibility to direct forces when using a stiff Granite (solid curves) and a soft Granite (dashed curves) (<a href="./figs/opt_stiff_soft_granite_Fd.png">png</a>, <a href="./figs/opt_stiff_soft_granite_Fd.pdf">pdf</a>)</p>
|
||||
@ -464,10 +468,10 @@ From Figures <a href="#orgc4c14fb">11</a> and <a href="#org533cc4b">12</a>, we s
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf388e39" class="outline-3">
|
||||
<h3 id="orgf388e39"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||
<div id="outline-container-org26b072f" class="outline-3">
|
||||
<h3 id="org26b072f"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-3-4">
|
||||
<div class="important">
|
||||
<div class="important" id="orge437d65">
|
||||
<p>
|
||||
Having a soft granite suspension greatly decreases the sensitivity the ground motion.
|
||||
Also, it does not affect much the sensitivity to stage vibration and direct forces.
|
||||
@ -479,29 +483,29 @@ Thus the level of sample vibration can be reduced by using a soft granite suspen
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8a88fb0" class="outline-2">
|
||||
<h2 id="org8a88fb0"><span class="section-number-2">4</span> Open Loop Budget Error</h2>
|
||||
<div id="outline-container-org92ed7b0" class="outline-2">
|
||||
<h2 id="org92ed7b0"><span class="section-number-2">4</span> Open Loop Budget Error</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
<a id="org5d05990"></a>
|
||||
<a id="org5714572"></a>
|
||||
</p>
|
||||
<p>
|
||||
Now that the frequency content of disturbances have been estimated (Section <a href="#org17d3d6a">1</a>) and the transfer functions from disturbances to the position error of the sample have been identified (Section <a href="#orgf9e4300">2</a>), we can compute the level of sample vibration due to the disturbances.
|
||||
Now that the frequency content of disturbances have been estimated (Section <a href="#orge637f3d">1</a>) and the transfer functions from disturbances to the position error of the sample have been identified (Section <a href="#org8db9681">2</a>), we can compute the level of sample vibration due to the disturbances.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We then can conclude and the nano-hexapod stiffness that will lower the sample position error.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org6bd588f" class="outline-3">
|
||||
<h3 id="org6bd588f"><span class="section-number-3">4.1</span> Noise Budgeting - Theory</h3>
|
||||
<div id="outline-container-orgf8bb217" class="outline-3">
|
||||
<h3 id="orgf8bb217"><span class="section-number-3">4.1</span> Noise Budgeting - Theory</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
Let’s consider Figure <a href="#org7ff50a0">13</a> there \(G_d(s)\) is the transfer function from a signal \(d\) (the perturbation) to a signal \(y\) (the sample’s position error).
|
||||
Let’s consider Figure <a href="#orgf48ae3a">13</a> there \(G_d(s)\) is the transfer function from a signal \(d\) (the perturbation) to a signal \(y\) (the sample’s position error).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org7ff50a0" class="figure">
|
||||
<div id="orgf48ae3a" class="figure">
|
||||
<p><img src="figs/psd_change_tf.png" alt="psd_change_tf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Signal \(d\) going through and LTI transfer function \(G_d(s)\) to give a signal \(y\)</p>
|
||||
@ -515,7 +519,7 @@ We can compute the Power Spectral Density (PSD) of signal \(y\) from the PSD of
|
||||
\end{equation}
|
||||
|
||||
<p>
|
||||
If we now consider multiple disturbances \(d_1, \dots, d_n\) as shown in Figure <a href="#orgc24bdf6">14</a>, we have that:
|
||||
If we now consider multiple disturbances \(d_1, \dots, d_n\) as shown in Figure <a href="#orga4616f6">14</a>, we have that:
|
||||
</p>
|
||||
\begin{equation}
|
||||
S_{y}(\omega) = \left|G_{d_1}(j\omega)\right|^2 S_{d_1}(\omega) + \dots + \left|G_{d_n}(j\omega)\right|^2 S_{d_n}(\omega) \label{eq:sum_psd}
|
||||
@ -527,7 +531,7 @@ Sometimes, we prefer to compute the <b>Amplitude</b> Spectral Density (ASD) whic
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgc24bdf6" class="figure">
|
||||
<div id="orga4616f6" class="figure">
|
||||
<p><img src="figs/psd_change_tf_multiple_pert.png" alt="psd_change_tf_multiple_pert.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Block diagram showing and output \(y\) resulting from the addition of multiple perturbations \(d_i\)</p>
|
||||
@ -554,8 +558,8 @@ The CAS evaluation for all frequency corresponds to the rms value of the conside
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcc86f59" class="outline-3">
|
||||
<h3 id="orgcc86f59"><span class="section-number-3">4.2</span> Power Spectral Densities</h3>
|
||||
<div id="outline-container-org0a97ffb" class="outline-3">
|
||||
<h3 id="org0a97ffb"><span class="section-number-3">4.2</span> Power Spectral Densities</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<p>
|
||||
We compute the effect of perturbations on the motion error thanks to Eq. \eqref{eq:psd_transfer_function}.
|
||||
@ -565,29 +569,29 @@ We compute the effect of perturbations on the motion error thanks to Eq. \eqref{
|
||||
The result is shown in:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#orgd3d7b28">15</a>: PSD of the vertical sample’s motion error due to vertical ground motion</li>
|
||||
<li>Figure <a href="#orgd8e87cd">16</a>: PSD of the vertical sample’s motion error due to vertical vibrations of the Spindle</li>
|
||||
<li>Figure <a href="#orgd8bc100">15</a>: PSD of the vertical sample’s motion error due to vertical ground motion</li>
|
||||
<li>Figure <a href="#org631c8cb">16</a>: PSD of the vertical sample’s motion error due to vertical vibrations of the Spindle</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="orgd3d7b28" class="figure">
|
||||
<div id="orgd8bc100" class="figure">
|
||||
<p><img src="figs/opt_stiff_psd_dz_gm.png" alt="opt_stiff_psd_dz_gm.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Amplitude Spectral Density of the Sample vertical position error due to Ground motion for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_psd_dz_gm.png">png</a>, <a href="./figs/opt_stiff_psd_dz_gm.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgd8e87cd" class="figure">
|
||||
<div id="org631c8cb" class="figure">
|
||||
<p><img src="figs/opt_stiff_psd_dz_rz.png" alt="opt_stiff_psd_dz_rz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 16: </span>Amplitude Spectral Density of the Sample vertical position error due to Vertical vibration of the Spindle for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_psd_dz_rz.png">png</a>, <a href="./figs/opt_stiff_psd_dz_rz.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We compute the effect of all perturbations on the vertical position error using Eq. \eqref{eq:sum_psd} and the resulting PSD is shown in Figure <a href="#orgdbfb5e0">17</a>.
|
||||
We compute the effect of all perturbations on the vertical position error using Eq. \eqref{eq:sum_psd} and the resulting PSD is shown in Figure <a href="#org5ce09d9">17</a>.
|
||||
</p>
|
||||
|
||||
<div id="orgdbfb5e0" class="figure">
|
||||
<div id="org5ce09d9" class="figure">
|
||||
<p><img src="figs/opt_stiff_psd_dz_tot.png" alt="opt_stiff_psd_dz_tot.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 17: </span>Amplitude Spectral Density of the Sample vertical position error due to all considered perturbations for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_psd_dz_tot.png">png</a>, <a href="./figs/opt_stiff_psd_dz_tot.pdf">pdf</a>)</p>
|
||||
@ -595,16 +599,16 @@ We compute the effect of all perturbations on the vertical position error using
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgef96b89" class="outline-3">
|
||||
<h3 id="orgef96b89"><span class="section-number-3">4.3</span> Cumulative Amplitude Spectrum</h3>
|
||||
<div id="outline-container-org44eafed" class="outline-3">
|
||||
<h3 id="org44eafed"><span class="section-number-3">4.3</span> Cumulative Amplitude Spectrum</h3>
|
||||
<div class="outline-text-3" id="text-4-3">
|
||||
<p>
|
||||
Similarly, the Cumulative Amplitude Spectrum of the sample vibrations are shown:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#org488d65f">18</a>: due to vertical ground motion</li>
|
||||
<li>Figure <a href="#orge5458c6">19</a>: due to vertical vibrations of the Spindle</li>
|
||||
<li>Figure <a href="#orgf6888f0">20</a>: due to all considered perturbations</li>
|
||||
<li>Figure <a href="#orgccc4019">18</a>: due to vertical ground motion</li>
|
||||
<li>Figure <a href="#orgbc68410">19</a>: due to vertical vibrations of the Spindle</li>
|
||||
<li>Figure <a href="#org0bcb1fa">20</a>: due to all considered perturbations</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
@ -612,21 +616,21 @@ The black dashed line corresponds to the performance objective of a sample vibra
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org488d65f" class="figure">
|
||||
<div id="orgccc4019" class="figure">
|
||||
<p><img src="figs/opt_stiff_cas_dz_gm.png" alt="opt_stiff_cas_dz_gm.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 18: </span>Cumulative Amplitude Spectrum of the Sample vertical position error due to Ground motion for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_cas_dz_gm.png">png</a>, <a href="./figs/opt_stiff_cas_dz_gm.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orge5458c6" class="figure">
|
||||
<div id="orgbc68410" class="figure">
|
||||
<p><img src="figs/opt_stiff_cas_dz_rz.png" alt="opt_stiff_cas_dz_rz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 19: </span>Cumulative Amplitude Spectrum of the Sample vertical position error due to Vertical vibration of the Spindle for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_cas_dz_rz.png">png</a>, <a href="./figs/opt_stiff_cas_dz_rz.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgf6888f0" class="figure">
|
||||
<div id="org0bcb1fa" class="figure">
|
||||
<p><img src="figs/opt_stiff_cas_dz_tot.png" alt="opt_stiff_cas_dz_tot.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 20: </span>Cumulative Amplitude Spectrum of the Sample vertical position error due to all considered perturbations for multiple nano-hexapod stiffnesses (<a href="./figs/opt_stiff_cas_dz_tot.png">png</a>, <a href="./figs/opt_stiff_cas_dz_tot.pdf">pdf</a>)</p>
|
||||
@ -634,12 +638,12 @@ The black dashed line corresponds to the performance objective of a sample vibra
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0be3c47" class="outline-3">
|
||||
<h3 id="org0be3c47"><span class="section-number-3">4.4</span> Conclusion</h3>
|
||||
<div id="outline-container-org091b440" class="outline-3">
|
||||
<h3 id="org091b440"><span class="section-number-3">4.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-4-4">
|
||||
<div class="important">
|
||||
<div class="important" id="org86258fc">
|
||||
<p>
|
||||
From Figure <a href="#orgf6888f0">20</a>, we can see that a soft nano-hexapod \(k<10^6\ [N/m]\) significantly reduces the effect of perturbations from 20Hz to 300Hz.
|
||||
From Figure <a href="#org0bcb1fa">20</a>, we can see that a soft nano-hexapod \(k<10^6\ [N/m]\) significantly reduces the effect of perturbations from 20Hz to 300Hz.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
@ -647,25 +651,25 @@ From Figure <a href="#orgf6888f0">20</a>, we can see that a soft nano-hexapod \(
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org34c0f38" class="outline-2">
|
||||
<h2 id="org34c0f38"><span class="section-number-2">5</span> Closed Loop Budget Error</h2>
|
||||
<div id="outline-container-org5bb46c4" class="outline-2">
|
||||
<h2 id="org5bb46c4"><span class="section-number-2">5</span> Closed Loop Budget Error</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
<a id="orgd3503fb"></a>
|
||||
<a id="org6ed8184"></a>
|
||||
</p>
|
||||
<p>
|
||||
From the total open-loop power spectral density of the sample’s motion error, we can estimate what is the required control bandwidth for the sample’s motion error to be reduced down to \(10nm\).
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-orgdfef0eb" class="outline-3">
|
||||
<h3 id="orgdfef0eb"><span class="section-number-3">5.1</span> Approximation of the effect of feedback on the motion error</h3>
|
||||
<div id="outline-container-org2cb5e9a" class="outline-3">
|
||||
<h3 id="org2cb5e9a"><span class="section-number-3">5.1</span> Approximation of the effect of feedback on the motion error</h3>
|
||||
<div class="outline-text-3" id="text-5-1">
|
||||
<p>
|
||||
Let’s consider Figure <a href="#org6308d80">21</a> where a controller \(K\) is used to reduce the effect of the disturbance \(d\) on the position error \(y\).
|
||||
Let’s consider Figure <a href="#orgd3c6de4">21</a> where a controller \(K\) is used to reduce the effect of the disturbance \(d\) on the position error \(y\).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org6308d80" class="figure">
|
||||
<div id="orgd3c6de4" class="figure">
|
||||
<p><img src="figs/effect_feedback_disturbance_diagram.png" alt="effect_feedback_disturbance_diagram.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 21: </span>Feedback System</p>
|
||||
@ -678,7 +682,7 @@ The reduction of the impact of \(d\) on \(y\) thanks to feedback is described by
|
||||
\frac{y}{d} = \frac{G_d}{1 + KG}
|
||||
\end{equation}
|
||||
<p>
|
||||
The transfer functions corresponding to \(G_d\) are those identified in Section <a href="#orgf9e4300">2</a>.
|
||||
The transfer functions corresponding to \(G_d\) are those identified in Section <a href="#org8db9681">2</a>.
|
||||
</p>
|
||||
|
||||
|
||||
@ -702,43 +706,43 @@ This will help to determine what is the approximate control bandwidth required s
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf2d36a1" class="outline-3">
|
||||
<h3 id="orgf2d36a1"><span class="section-number-3">5.2</span> Reduction thanks to feedback - Required bandwidth</h3>
|
||||
<div id="outline-container-org15ee341" class="outline-3">
|
||||
<h3 id="org15ee341"><span class="section-number-3">5.2</span> Reduction thanks to feedback - Required bandwidth</h3>
|
||||
<div class="outline-text-3" id="text-5-2">
|
||||
<p>
|
||||
Let’s first see how does the Cumulative Amplitude Spectrum of the sample’s motion error is modified by the control.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In Figure <a href="#orgcbef465">22</a> is shown the Cumulative Amplitude Spectrum of the sample’s motion error in Open-Loop and in Closed Loop for several control bandwidth (from 1Hz to 200Hz) and 4 different nano-hexapod stiffnesses.
|
||||
In Figure <a href="#org67a0258">22</a> is shown the Cumulative Amplitude Spectrum of the sample’s motion error in Open-Loop and in Closed Loop for several control bandwidth (from 1Hz to 200Hz) and 4 different nano-hexapod stiffnesses.
|
||||
The controller used in this simulation is \(K_1\). The loop gain is then a pure integrator.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In Figure <a href="#orgd677910">23</a> is shown the expected RMS value of the sample’s position error as a function of the control bandwidth, both for \(K_1\) (left plot) and \(K_2\) (right plot).
|
||||
In Figure <a href="#orgdbc233d">23</a> is shown the expected RMS value of the sample’s position error as a function of the control bandwidth, both for \(K_1\) (left plot) and \(K_2\) (right plot).
|
||||
As expected, it is shown that \(K_2\) performs better than \(K_1\).
|
||||
This Figure tells us how much control bandwidth is required to attain a certain level of performance, and that for all the considered nano-hexapod stiffnesses.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The obtained required bandwidth (approximate upper and lower bounds) to obtained a sample’s motion error less than 10nm rms are gathered in Table <a href="#org5ab4860">1</a>.
|
||||
The obtained required bandwidth (approximate upper and lower bounds) to obtained a sample’s motion error less than 10nm rms are gathered in Table <a href="#org16b406d">1</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgcbef465" class="figure">
|
||||
<div id="org67a0258" class="figure">
|
||||
<p><img src="figs/opt_stiff_cas_closed_loop.png" alt="opt_stiff_cas_closed_loop.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 22: </span>Cumulative Amplitude Spectrum of the sample’s motion error in Open-Loop and in Closed Loop for several control bandwidth and 4 different nano-hexapod stiffnesses (<a href="./figs/opt_stiff_cas_closed_loop.png">png</a>, <a href="./figs/opt_stiff_cas_closed_loop.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgd677910" class="figure">
|
||||
<div id="orgdbc233d" class="figure">
|
||||
<p><img src="figs/opt_stiff_req_bandwidth_K1_K2.png" alt="opt_stiff_req_bandwidth_K1_K2.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 23: </span>Expected RMS value of the sample’s motion error \(E_z\) as a function of the control bandwidth when using \(K_1\) and \(K_2\) (<a href="./figs/opt_stiff_req_bandwidth_K1_K2.png">png</a>, <a href="./figs/opt_stiff_req_bandwidth_K1_K2.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
<table id="org5ab4860" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="org16b406d" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 1:</span> Approximate required control bandwidth such that the motion error is below \(10nm\)</caption>
|
||||
|
||||
<colgroup>
|
||||
@ -798,12 +802,12 @@ The obtained required bandwidth (approximate upper and lower bounds) to obtained
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org08f4548" class="outline-2">
|
||||
<h2 id="org08f4548"><span class="section-number-2">6</span> Conclusion</h2>
|
||||
<div id="outline-container-orgf3b0566" class="outline-2">
|
||||
<h2 id="orgf3b0566"><span class="section-number-2">6</span> Conclusion</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<div class="important">
|
||||
<div class="important" id="org692b84e">
|
||||
<p>
|
||||
From Figure <a href="#orgd677910">23</a> and Table <a href="#org5ab4860">1</a>, we can clearly see three different results depending on the nano-hexapod stiffness:
|
||||
From Figure <a href="#orgdbc233d">23</a> and Table <a href="#org16b406d">1</a>, we can clearly see three different results depending on the nano-hexapod stiffness:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>For a soft nano-hexapod (\(k < 10^4\ [N/m]\)), the required bandwidth is \(\omega_c \approx 50-100\ Hz\)</li>
|
||||
@ -817,7 +821,7 @@ From Figure <a href="#orgd677910">23</a> and Table <a href="#org5ab4860">1</a>,
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-04-17 ven. 09:35</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,54 +1,58 @@
|
||||
<?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-04-17 ven. 09:35 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Computation of the Positioning Error with respect to the nano-hexapod</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Computation of the Positioning Error with respect to the nano-hexapod</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<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>
|
||||
<li><a href="#org90cd0e3">1. How do we measure the position of the sample with respect to the granite</a></li>
|
||||
<li><a href="#org49398f4">2. Verify that the function to compute the reference pose is correct</a>
|
||||
<ul>
|
||||
<li><a href="#org824599b">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="#org127e189">2.3. Conclusion</a></li>
|
||||
<li><a href="#org9d64b37">2.1. Prepare the Simulation</a></li>
|
||||
<li><a href="#orgcaa1e72">2.2. Verify that the pose of the sample is the same as the computed one</a></li>
|
||||
<li><a href="#orgfee0cbc">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>
|
||||
<li><a href="#org7815d37">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="#orgf76b12a">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="#org1528ce4">3.4. Conclusion</a></li>
|
||||
<li><a href="#org7632729">3.1. Prepare the Simulation</a></li>
|
||||
<li><a href="#org0b1c527">3.2. Compute the wanted pose of the sample in the NASS Base from the metrology and the reference</a></li>
|
||||
<li><a href="#org3623362">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="#orgdb2de31">3.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -56,11 +60,11 @@
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The global measurement and control schematic is shown in figure <a href="#org0939a33">1</a>.
|
||||
The global measurement and control schematic is shown in figure <a href="#org2f2bc3c">1</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org0939a33" class="figure">
|
||||
<div id="org2f2bc3c" class="figure">
|
||||
<p><img src="figs/control-schematic-nass.png" alt="control-schematic-nass.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Global Control Schematic for the Station</p>
|
||||
@ -82,25 +86,25 @@ Also, all the stages can be perfectly positioned.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
First, in section <a href="#org82a4cbd">1</a>, is explained how the measurement of the position of the sample with respect to the granite is performed (using Simscape blocs).
|
||||
First, in section <a href="#org1f9249f">1</a>, is explained how the measurement of the position of the sample with respect to the granite is performed (using Simscape blocs).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In section <a href="#orgbdef361">2</a>, we verify that the function developed to compute the wanted pose (translation and orientation) of the sample with respect to the granite can be determined from the wanted position of each stage (translation stage, tilt stage, spindle and micro-hexapod). This corresponds to the bloc “Compute Wanted Sample Position w.r.t. Granite” in figure <a href="#org0939a33">1</a>.
|
||||
In section <a href="#org0dafc5f">2</a>, we verify that the function developed to compute the wanted pose (translation and orientation) of the sample with respect to the granite can be determined from the wanted position of each stage (translation stage, tilt stage, spindle and micro-hexapod). This corresponds to the bloc “Compute Wanted Sample Position w.r.t. Granite” in figure <a href="#org2f2bc3c">1</a>.
|
||||
To do so, we impose a perfect displacement and all the stage, we perfectly measure the position of the sample with respect to the granite, and we verify that this measured position corresponds to the computed wanted pose of the sample.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Then, in section <a href="#orgb2f3e9c">3</a>, we introduce some positioning error in the micro-station’s stages.
|
||||
The positioning error of the sample expressed with respect to the granite frame (the one measured) is expressed in a frame connected to the NASS top platform (corresponding to the green bloc “Compute Sample Position Error w.r.t. NASS” in figure <a href="#org0939a33">1</a>).
|
||||
Then, in section <a href="#orge9bc9ee">3</a>, we introduce some positioning error in the micro-station’s stages.
|
||||
The positioning error of the sample expressed with respect to the granite frame (the one measured) is expressed in a frame connected to the NASS top platform (corresponding to the green bloc “Compute Sample Position Error w.r.t. NASS” in figure <a href="#org2f2bc3c">1</a>).
|
||||
Then, we move the NASS such that it compensate for the positioning error that are expressed in the frame of the NASS, and we verify that the positioning error of the sample is well compensated.
|
||||
</p>
|
||||
|
||||
<div id="outline-container-orgf8376ef" class="outline-2">
|
||||
<h2 id="orgf8376ef"><span class="section-number-2">1</span> How do we measure the position of the sample with respect to the granite</h2>
|
||||
<div id="outline-container-org90cd0e3" class="outline-2">
|
||||
<h2 id="org90cd0e3"><span class="section-number-2">1</span> How do we measure the position of the sample with respect to the granite</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="org82a4cbd"></a>
|
||||
<a id="org1f9249f"></a>
|
||||
A transform sensor block gives the translation and orientation of the follower frame with respect to the base frame.
|
||||
</p>
|
||||
|
||||
@ -126,25 +130,25 @@ We can then determine extract other orientation conventions such that Euler angl
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb3d760a" class="outline-2">
|
||||
<h2 id="orgb3d760a"><span class="section-number-2">2</span> Verify that the function to compute the reference pose is correct</h2>
|
||||
<div id="outline-container-org49398f4" class="outline-2">
|
||||
<h2 id="org49398f4"><span class="section-number-2">2</span> Verify that the function to compute the reference pose is correct</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="orgbdef361"></a>
|
||||
<a id="org0dafc5f"></a>
|
||||
</p>
|
||||
<p>
|
||||
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-org824599b" class="outline-3">
|
||||
<h3 id="org824599b"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
|
||||
<div id="outline-container-org9d64b37" class="outline-3">
|
||||
<h3 id="org9d64b37"><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>.
|
||||
</p>
|
||||
<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">'0.5'</span>);
|
||||
<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">'0.5'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -152,16 +156,16 @@ We set a small <code>StopTime</code>.
|
||||
We initialize all the stages.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeGranite(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeTy(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeRy(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeRz(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</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>);
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span>);
|
||||
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'mass'</span>, 50);
|
||||
<pre class="src src-matlab"> initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeGranite(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeTy(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeRy(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeRz(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</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>);
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span>);
|
||||
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'mass'</span>, 50);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -169,8 +173,8 @@ initializeSample(<span class="org-string">'type'</span>, <span class="org-string
|
||||
No disturbance and no 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>);
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -178,24 +182,24 @@ initializeDisturbances(<span class="org-string">'enable'</span>, <span class="or
|
||||
We setup the reference path to be constant.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences(...
|
||||
<span class="org-string">'Ts'</span>, 1e<span class="org-type">-</span>3, ...<span class="org-comment"> % Sampling Frequency [s]</span>
|
||||
<span class="org-string">'Dy_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Dy_amplitude'</span>, 5e<span class="org-type">-</span>3, ...<span class="org-comment"> % Amplitude of the displacement [m]</span>
|
||||
<span class="org-string">'Dy_period'</span>, 1, ...<span class="org-comment"> % Period of the displacement [s]</span>
|
||||
<span class="org-string">'Ry_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Ry_amplitude'</span>, <span class="org-type">-</span>1<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180, ...<span class="org-comment"> % Amplitude [rad]</span>
|
||||
<span class="org-string">'Ry_period'</span>, 10, ...<span class="org-comment"> % Period of the displacement [s]</span>
|
||||
<span class="org-string">'Rz_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "rotating"</span>
|
||||
<span class="org-string">'Rz_amplitude'</span>, <span class="org-type">-</span>135<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180, ...<span class="org-comment"> % Initial angle [rad]</span>
|
||||
<span class="org-string">'Rz_period'</span>, 1, ...<span class="org-comment"> % Period of the rotating [s]</span>
|
||||
<span class="org-string">'Dh_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dh_pos'</span>, [0.01; 0.02; <span class="org-type">-</span>0.03; <span class="org-type">-</span>3<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180; 1<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180; 3<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180], ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
<span class="org-string">'Rm_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Rm_pos'</span>, [0, <span class="org-constant">pi</span>]<span class="org-type">'</span>, ...<span class="org-comment"> % Initial position of the two masses</span>
|
||||
<span class="org-string">'Dn_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dn_pos'</span>, [1e<span class="org-type">-</span>3; 2e<span class="org-type">-</span>3; 3e<span class="org-type">-</span>3; 1<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180; 0; 1<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180] ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
);
|
||||
<pre class="src src-matlab"> initializeReferences(...
|
||||
<span class="org-string">'Ts'</span>, 1e<span class="org-type">-</span>3, ...<span class="org-comment"> % Sampling Frequency [s]</span>
|
||||
<span class="org-string">'Dy_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Dy_amplitude'</span>, 5e<span class="org-type">-</span>3, ...<span class="org-comment"> % Amplitude of the displacement [m]</span>
|
||||
<span class="org-string">'Dy_period'</span>, 1, ...<span class="org-comment"> % Period of the displacement [s]</span>
|
||||
<span class="org-string">'Ry_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Ry_amplitude'</span>, <span class="org-type">-</span>1<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180, ...<span class="org-comment"> % Amplitude [rad]</span>
|
||||
<span class="org-string">'Ry_period'</span>, 10, ...<span class="org-comment"> % Period of the displacement [s]</span>
|
||||
<span class="org-string">'Rz_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "rotating"</span>
|
||||
<span class="org-string">'Rz_amplitude'</span>, <span class="org-type">-</span>135<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180, ...<span class="org-comment"> % Initial angle [rad]</span>
|
||||
<span class="org-string">'Rz_period'</span>, 1, ...<span class="org-comment"> % Period of the rotating [s]</span>
|
||||
<span class="org-string">'Dh_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dh_pos'</span>, [0.01; 0.02; <span class="org-type">-</span>0.03; <span class="org-type">-</span>3<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180; 1<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180; 3<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180], ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
<span class="org-string">'Rm_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Rm_pos'</span>, [0, <span class="org-constant">pi</span>]<span class="org-type">'</span>, ...<span class="org-comment"> % Initial position of the two masses</span>
|
||||
<span class="org-string">'Dn_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dn_pos'</span>, [1e<span class="org-type">-</span>3; 2e<span class="org-type">-</span>3; 3e<span class="org-type">-</span>3; 1<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180; 0; 1<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180] ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -203,12 +207,12 @@ We setup the reference path to be constant.
|
||||
No position error for now (perfect positioning).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Dye = 0; <span class="org-comment">% [m]</span>
|
||||
Rye = 0; <span class="org-comment">% [rad]</span>
|
||||
Rze = 0; <span class="org-comment">% [rad]</span>
|
||||
Dhe = zeros(6,1); <span class="org-comment">% [m,m,m,rad,rad,rad]</span>
|
||||
Dhle = zeros(6,1); <span class="org-comment">% [m,m,m,m,m,m]</span>
|
||||
Dne = zeros(6,1); <span class="org-comment">% [m,m,m,rad,rad,rad]</span>
|
||||
<pre class="src src-matlab"> Dye = 0; <span class="org-comment">% [m]</span>
|
||||
Rye = 0; <span class="org-comment">% [rad]</span>
|
||||
Rze = 0; <span class="org-comment">% [rad]</span>
|
||||
Dhe = zeros(6,1); <span class="org-comment">% [m,m,m,rad,rad,rad]</span>
|
||||
Dhle = zeros(6,1); <span class="org-comment">% [m,m,m,m,m,m]</span>
|
||||
Dne = zeros(6,1); <span class="org-comment">% [m,m,m,rad,rad,rad]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -216,7 +220,7 @@ Dne = zeros(6,1); <span class="org-comment">% [m,m,m,rad,rad,rad]</span>
|
||||
We want to 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 class="src src-matlab"> initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -224,14 +228,14 @@ We want to log the signals
|
||||
And we run the simulation.
|
||||
</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 class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd2fa379" class="outline-3">
|
||||
<h3 id="orgd2fa379"><span class="section-number-3">2.2</span> Verify that the pose of the sample is the same as the computed one</h3>
|
||||
<div id="outline-container-orgcaa1e72" class="outline-3">
|
||||
<h3 id="orgcaa1e72"><span class="section-number-3">2.2</span> Verify that the pose of the sample is the same as the computed one</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
Let’s denote:
|
||||
@ -254,11 +258,11 @@ We have then computed:
|
||||
We load the reference and we compute the desired trajectory of the sample in the form of an homogeneous transformation matrix \({}^W\bm{T}_R\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">n = length(simout.r.Dy.Time);
|
||||
WTr = zeros(4, 4, n);
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:n</span>
|
||||
WTr(<span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span>) = computeReferencePose(simout.r.Dy.Data(<span class="org-constant">i</span>), simout.r.Ry.Data(<span class="org-constant">i</span>), simout.r.Rz.Data(<span class="org-constant">i</span>), simout.r.Dh.Data(<span class="org-constant">i</span>,<span class="org-type">:</span>), simout.r.Dn.Data(<span class="org-constant">i</span>,<span class="org-type">:</span>));
|
||||
<span class="org-keyword">end</span>
|
||||
<pre class="src src-matlab"> n = length(simout.r.Dy.Time);
|
||||
WTr = zeros(4, 4, n);
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:n</span>
|
||||
WTr(<span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span>) = computeReferencePose(simout.r.Dy.Data(<span class="org-constant">i</span>), simout.r.Ry.Data(<span class="org-constant">i</span>), simout.r.Rz.Data(<span class="org-constant">i</span>), simout.r.Dh.Data(<span class="org-constant">i</span>,<span class="org-type">:</span>), simout.r.Dn.Data(<span class="org-constant">i</span>,<span class="org-type">:</span>));
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -267,11 +271,11 @@ As the displacement is perfect, we also measure in simulation the pose of the sa
|
||||
From that we can compute the homogeneous transformation matrix \({}^W\bm{T}_M\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">n = length(simout.y.R.Time);
|
||||
WTm = zeros(4, 4, n);
|
||||
WTm(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, <span class="org-type">:</span>) = simout.y.R.Data;
|
||||
WTm(1<span class="org-type">:</span>3, 4, <span class="org-type">:</span>) = [simout.y.x.Data<span class="org-type">'</span> ; simout.y.y.Data<span class="org-type">'</span> ; simout.y.z.Data<span class="org-type">'</span>];
|
||||
WTm(4, 4, <span class="org-type">:</span>) = 1;
|
||||
<pre class="src src-matlab"> n = length(simout.y.R.Time);
|
||||
WTm = zeros(4, 4, n);
|
||||
WTm(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, <span class="org-type">:</span>) = simout.y.R.Data;
|
||||
WTm(1<span class="org-type">:</span>3, 4, <span class="org-type">:</span>) = [simout.y.x.Data<span class="org-type">'</span> ; simout.y.y.Data<span class="org-type">'</span> ; simout.y.z.Data<span class="org-type">'</span>];
|
||||
WTm(4, 4, <span class="org-type">:</span>) = 1;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -287,12 +291,12 @@ Or are least:
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">WTr(1<span class="org-type">:</span>3, 4, end)<span class="org-type">-</span>WTm(1<span class="org-type">:</span>3, 4, end)
|
||||
WTr(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, end)<span class="org-type">'*</span>WTm(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, end)<span class="org-type">-</span>eye(3)
|
||||
<pre class="src src-matlab"> WTr(1<span class="org-type">:</span>3, 4, end)<span class="org-type">-</span>WTm(1<span class="org-type">:</span>3, 4, end)
|
||||
WTr(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, end)<span class="org-type">'*</span>WTm(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, end)<span class="org-type">-</span>eye(3)
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="example">
|
||||
<pre class="example" id="orgee15e5c">
|
||||
WTr(1:3, 4, end)-WTm(1:3, 4, end)
|
||||
ans =
|
||||
8.53830894875784e-15
|
||||
@ -307,10 +311,10 @@ ans =
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org127e189" class="outline-3">
|
||||
<h3 id="org127e189"><span class="section-number-3">2.3</span> Conclusion</h3>
|
||||
<div id="outline-container-orgfee0cbc" class="outline-3">
|
||||
<h3 id="orgfee0cbc"><span class="section-number-3">2.3</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<div class="important">
|
||||
<div class="important" id="org91210ce">
|
||||
<p>
|
||||
We are able to compute the wanted position and orientation of the sample.
|
||||
Both the measurement and the theory gives the same result.
|
||||
@ -321,11 +325,11 @@ Both the measurement and the theory gives the same result.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf6fa84d" class="outline-2">
|
||||
<h2 id="orgf6fa84d"><span class="section-number-2">3</span> Verify that the function to convert the position error in the frame fixed to the nano-hexapod is working</h2>
|
||||
<div id="outline-container-org7815d37" class="outline-2">
|
||||
<h2 id="org7815d37"><span class="section-number-2">3</span> Verify that the function to convert the position error in the frame fixed to the nano-hexapod is working</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="orgb2f3e9c"></a>
|
||||
<a id="orge9bc9ee"></a>
|
||||
</p>
|
||||
<p>
|
||||
We now introduce some positioning error in the stage.
|
||||
@ -336,15 +340,15 @@ 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-orgf76b12a" class="outline-3">
|
||||
<h3 id="orgf76b12a"><span class="section-number-3">3.1</span> Prepare the Simulation</h3>
|
||||
<div id="outline-container-org7632729" class="outline-3">
|
||||
<h3 id="org7632729"><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>.
|
||||
</p>
|
||||
<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">'0.5'</span>);
|
||||
<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">'0.5'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -352,16 +356,16 @@ We set a small <code>StopTime</code>.
|
||||
We initialize all the stages.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeGranite(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeTy(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeRy(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeRz(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</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>);
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span>);
|
||||
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'mass'</span>, 50);
|
||||
<pre class="src src-matlab"> initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeGranite(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeTy(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeRy(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeRz(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</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>);
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span>);
|
||||
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'mass'</span>, 50);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -369,8 +373,8 @@ initializeSample(<span class="org-string">'type'</span>, <span class="org-string
|
||||
No disturbance and no 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>);
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -378,21 +382,21 @@ initializeDisturbances(<span class="org-string">'enable'</span>, <span class="or
|
||||
We setup the reference path to be constant.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences(...
|
||||
<span class="org-string">'Ts'</span>, 1e<span class="org-type">-</span>3, ...<span class="org-comment"> % Sampling Frequency [s]</span>
|
||||
<span class="org-string">'Dy_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Dy_amplitude'</span>, 0, ...<span class="org-comment"> % Amplitude of the displacement [m]</span>
|
||||
<span class="org-string">'Ry_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Ry_amplitude'</span>, 0, ...<span class="org-comment"> % Amplitude [rad]</span>
|
||||
<span class="org-string">'Rz_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "rotating"</span>
|
||||
<span class="org-string">'Rz_amplitude'</span>, 0<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180, ...<span class="org-comment"> % Initial angle [rad]</span>
|
||||
<span class="org-string">'Dh_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dh_pos'</span>, [0; 0; 0; 0; 0; 0], ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
<span class="org-string">'Rm_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Rm_pos'</span>, [0, <span class="org-constant">pi</span>]<span class="org-type">'</span>, ...<span class="org-comment"> % Initial position of the two masses</span>
|
||||
<span class="org-string">'Dn_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dn_pos'</span>, [0; 0; 0; 0; 0; 0] ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
);
|
||||
<pre class="src src-matlab"> initializeReferences(...
|
||||
<span class="org-string">'Ts'</span>, 1e<span class="org-type">-</span>3, ...<span class="org-comment"> % Sampling Frequency [s]</span>
|
||||
<span class="org-string">'Dy_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Dy_amplitude'</span>, 0, ...<span class="org-comment"> % Amplitude of the displacement [m]</span>
|
||||
<span class="org-string">'Ry_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Ry_amplitude'</span>, 0, ...<span class="org-comment"> % Amplitude [rad]</span>
|
||||
<span class="org-string">'Rz_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "rotating"</span>
|
||||
<span class="org-string">'Rz_amplitude'</span>, 0<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180, ...<span class="org-comment"> % Initial angle [rad]</span>
|
||||
<span class="org-string">'Dh_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dh_pos'</span>, [0; 0; 0; 0; 0; 0], ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
<span class="org-string">'Rm_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Rm_pos'</span>, [0, <span class="org-constant">pi</span>]<span class="org-type">'</span>, ...<span class="org-comment"> % Initial position of the two masses</span>
|
||||
<span class="org-string">'Dn_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dn_pos'</span>, [0; 0; 0; 0; 0; 0] ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -400,10 +404,10 @@ We setup the reference path to be constant.
|
||||
Now we introduce some positioning error.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Dye = 1e<span class="org-type">-</span>6; <span class="org-comment">% [m]</span>
|
||||
Rye = 2e<span class="org-type">-</span>4; <span class="org-comment">% [rad]</span>
|
||||
Rze = 1e<span class="org-type">-</span>5; <span class="org-comment">% [rad]</span>
|
||||
initializePosError(<span class="org-string">'error'</span>, <span class="org-constant">true</span>, <span class="org-string">'Dy'</span>, Dye, <span class="org-string">'Ry'</span>, Rye, <span class="org-string">'Rz'</span>, Rze);
|
||||
<pre class="src src-matlab"> Dye = 1e<span class="org-type">-</span>6; <span class="org-comment">% [m]</span>
|
||||
Rye = 2e<span class="org-type">-</span>4; <span class="org-comment">% [rad]</span>
|
||||
Rze = 1e<span class="org-type">-</span>5; <span class="org-comment">% [rad]</span>
|
||||
initializePosError(<span class="org-string">'error'</span>, <span class="org-constant">true</span>, <span class="org-string">'Dy'</span>, Dye, <span class="org-string">'Ry'</span>, Rye, <span class="org-string">'Rz'</span>, Rze);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -411,14 +415,14 @@ initializePosError(<span class="org-string">'error'</span>, <span class="org-con
|
||||
And we run the simulation.
|
||||
</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 class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4e6a2dc" class="outline-3">
|
||||
<h3 id="org4e6a2dc"><span class="section-number-3">3.2</span> Compute the wanted pose of the sample in the NASS Base from the metrology and the reference</h3>
|
||||
<div id="outline-container-org0b1c527" class="outline-3">
|
||||
<h3 id="org0b1c527"><span class="section-number-3">3.2</span> Compute the wanted pose of the sample in the NASS Base from the metrology and the reference</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<p>
|
||||
Now that we have introduced some positioning error, the computed wanted pose and the measured pose will not be the same.
|
||||
@ -444,11 +448,11 @@ The top platform of the nano-hexapod is considered to be rigidly connected to th
|
||||
We load the reference and we compute the desired trajectory of the sample in the form of an homogeneous transformation matrix \({}^W\bm{T}_R\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">n = length(simout.r.Dy.Time);
|
||||
WTr = zeros(4, 4, n);
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:n</span>
|
||||
WTr(<span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span>) = computeReferencePose(simout.r.Dy.Data(<span class="org-constant">i</span>), simout.r.Ry.Data(<span class="org-constant">i</span>), simout.r.Rz.Data(<span class="org-constant">i</span>), simout.r.Dh.Data(<span class="org-constant">i</span>,<span class="org-type">:</span>), simout.r.Dn.Data(<span class="org-constant">i</span>,<span class="org-type">:</span>));
|
||||
<span class="org-keyword">end</span>
|
||||
<pre class="src src-matlab"> n = length(simout.r.Dy.Time);
|
||||
WTr = zeros(4, 4, n);
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:n</span>
|
||||
WTr(<span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span>) = computeReferencePose(simout.r.Dy.Data(<span class="org-constant">i</span>), simout.r.Ry.Data(<span class="org-constant">i</span>), simout.r.Rz.Data(<span class="org-constant">i</span>), simout.r.Dh.Data(<span class="org-constant">i</span>,<span class="org-type">:</span>), simout.r.Dn.Data(<span class="org-constant">i</span>,<span class="org-type">:</span>));
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -457,11 +461,11 @@ We also measure in simulation the pose of the sample with respect to the granite
|
||||
From that we can compute the homogeneous transformation matrix \({}^W\bm{T}_M\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">n = length(simout.y.R.Time);
|
||||
WTm = zeros(4, 4, n);
|
||||
WTm(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, <span class="org-type">:</span>) = simout.y.R.Data;
|
||||
WTm(1<span class="org-type">:</span>3, 4, <span class="org-type">:</span>) = [simout.y.x.Data<span class="org-type">'</span> ; simout.y.y.Data<span class="org-type">'</span> ; simout.y.z.Data<span class="org-type">'</span>];
|
||||
WTm(4, 4, <span class="org-type">:</span>) = 1;
|
||||
<pre class="src src-matlab"> n = length(simout.y.R.Time);
|
||||
WTm = zeros(4, 4, n);
|
||||
WTm(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, <span class="org-type">:</span>) = simout.y.R.Data;
|
||||
WTm(1<span class="org-type">:</span>3, 4, <span class="org-type">:</span>) = [simout.y.x.Data<span class="org-type">'</span> ; simout.y.y.Data<span class="org-type">'</span> ; simout.y.z.Data<span class="org-type">'</span>];
|
||||
WTm(4, 4, <span class="org-type">:</span>) = 1;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -483,10 +487,10 @@ The <b>inverse of the transformation matrix</b> can be obtain by (it is less com
|
||||
Finally, we compute \({}^M\bm{T}_R\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">MTr = zeros(4, 4, n);
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:n</span>
|
||||
MTr(<span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span>) = [WTm(1<span class="org-type">:</span>3,1<span class="org-type">:</span>3,<span class="org-constant">i</span>)<span class="org-type">'</span>, <span class="org-type">-</span>WTm(1<span class="org-type">:</span>3,1<span class="org-type">:</span>3,<span class="org-constant">i</span>)<span class="org-type">'*</span>WTm(1<span class="org-type">:</span>3,4,<span class="org-constant">i</span>) ; 0 0 0 1]<span class="org-type">*</span>WTr(<span class="org-type">:</span>,<span class="org-type">:</span>,<span class="org-constant">i</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
<pre class="src src-matlab"> MTr = zeros(4, 4, n);
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:n</span>
|
||||
MTr(<span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span>) = [WTm(1<span class="org-type">:</span>3,1<span class="org-type">:</span>3,<span class="org-constant">i</span>)<span class="org-type">'</span>, <span class="org-type">-</span>WTm(1<span class="org-type">:</span>3,1<span class="org-type">:</span>3,<span class="org-constant">i</span>)<span class="org-type">'*</span>WTm(1<span class="org-type">:</span>3,4,<span class="org-constant">i</span>) ; 0 0 0 1]<span class="org-type">*</span>WTr(<span class="org-type">:</span>,<span class="org-type">:</span>,<span class="org-constant">i</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -494,18 +498,18 @@ Finally, we compute \({}^M\bm{T}_R\).
|
||||
Verify that the pose error corresponds to the positioning error of the stages.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">MTr(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, end)
|
||||
Rx = [1 0 0;
|
||||
0 cos(Erx) <span class="org-type">-</span>sin(Erx);
|
||||
0 sin(Erx) cos(Erx)];
|
||||
<pre class="src src-matlab"> MTr(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, end)
|
||||
Rx = [1 0 0;
|
||||
0 cos(Erx) <span class="org-type">-</span>sin(Erx);
|
||||
0 sin(Erx) cos(Erx)];
|
||||
|
||||
Ry = [ cos(Ery) 0 sin(Ery);
|
||||
0 1 0;
|
||||
<span class="org-type">-</span>sin(Ery) 0 cos(Ery)];
|
||||
Ry = [ cos(Ery) 0 sin(Ery);
|
||||
0 1 0;
|
||||
<span class="org-type">-</span>sin(Ery) 0 cos(Ery)];
|
||||
|
||||
Rz = [cos(Erz) <span class="org-type">-</span>sin(Erz) 0;
|
||||
sin(Erz) cos(Erz) 0;
|
||||
0 0 1];
|
||||
Rz = [cos(Erz) <span class="org-type">-</span>sin(Erz) 0;
|
||||
sin(Erz) cos(Erz) 0;
|
||||
0 0 1];
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -553,28 +557,28 @@ Rz = [cos(Erz) <span class="org-type">-</span>sin(Erz) 0;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga048dbb" class="outline-3">
|
||||
<h3 id="orga048dbb"><span class="section-number-3">3.3</span> Verify that be imposing the error motion on the nano-hexapod, we indeed have zero error at the end</h3>
|
||||
<div id="outline-container-org3623362" class="outline-3">
|
||||
<h3 id="org3623362"><span class="section-number-3">3.3</span> Verify that be imposing the error motion on the nano-hexapod, we indeed have zero error at the end</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<p>
|
||||
We now keep the wanted pose but we impose a displacement of the nano hexapod corresponding to the measured position error.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences(...
|
||||
<span class="org-string">'Ts'</span>, 1e<span class="org-type">-</span>3, ...<span class="org-comment"> % Sampling Frequency [s]</span>
|
||||
<span class="org-string">'Dy_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Dy_amplitude'</span>, 0, ...<span class="org-comment"> % Amplitude of the displacement [m]</span>
|
||||
<span class="org-string">'Ry_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Ry_amplitude'</span>, 0, ...<span class="org-comment"> % Amplitude [rad]</span>
|
||||
<span class="org-string">'Rz_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "rotating"</span>
|
||||
<span class="org-string">'Rz_amplitude'</span>, 0<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180, ...<span class="org-comment"> % Initial angle [rad]</span>
|
||||
<span class="org-string">'Dh_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dh_pos'</span>, [0; 0; 0; 0; 0; 0], ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
<span class="org-string">'Rm_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Rm_pos'</span>, [0, <span class="org-constant">pi</span>]<span class="org-type">'</span>, ...<span class="org-comment"> % Initial position of the two masses</span>
|
||||
<span class="org-string">'Dn_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dn_pos'</span>, [Edx; Edy; Edz; Erx; Ery; Erz] ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
);
|
||||
<pre class="src src-matlab"> initializeReferences(...
|
||||
<span class="org-string">'Ts'</span>, 1e<span class="org-type">-</span>3, ...<span class="org-comment"> % Sampling Frequency [s]</span>
|
||||
<span class="org-string">'Dy_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Dy_amplitude'</span>, 0, ...<span class="org-comment"> % Amplitude of the displacement [m]</span>
|
||||
<span class="org-string">'Ry_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "triangular" / "sinusoidal"</span>
|
||||
<span class="org-string">'Ry_amplitude'</span>, 0, ...<span class="org-comment"> % Amplitude [rad]</span>
|
||||
<span class="org-string">'Rz_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % Either "constant" / "rotating"</span>
|
||||
<span class="org-string">'Rz_amplitude'</span>, 0<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180, ...<span class="org-comment"> % Initial angle [rad]</span>
|
||||
<span class="org-string">'Dh_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dh_pos'</span>, [0; 0; 0; 0; 0; 0], ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
<span class="org-string">'Rm_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Rm_pos'</span>, [0, <span class="org-constant">pi</span>]<span class="org-type">'</span>, ...<span class="org-comment"> % Initial position of the two masses</span>
|
||||
<span class="org-string">'Dn_type'</span>, <span class="org-string">'constant'</span>, ...<span class="org-comment"> % For now, only constant is implemented</span>
|
||||
<span class="org-string">'Dn_pos'</span>, [Edx; Edy; Edz; Erx; Ery; Erz] ...<span class="org-comment"> % Initial position [m,m,m,rad,rad,rad] of the top platform</span>
|
||||
);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -582,7 +586,7 @@ We now keep the wanted pose but we impose a displacement of the nano hexapod cor
|
||||
And we run the simulation.
|
||||
</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 class="src src-matlab"> <span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -595,11 +599,11 @@ As the displacement is perfect, we also measure in simulation the pose of the sa
|
||||
From that we can compute the homogeneous transformation matrix \({}^W\bm{T}_M\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">n = length(simout.y.R.Time);
|
||||
WTm = zeros(4, 4, n);
|
||||
WTm(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, <span class="org-type">:</span>) = simout.y.R.Data;
|
||||
WTm(1<span class="org-type">:</span>3, 4, <span class="org-type">:</span>) = [simout.y.x.Data<span class="org-type">'</span> ; simout.y.y.Data<span class="org-type">'</span> ; simout.y.z.Data<span class="org-type">'</span>];
|
||||
WTm(4, 4, <span class="org-type">:</span>) = 1;
|
||||
<pre class="src src-matlab"> n = length(simout.y.R.Time);
|
||||
WTm = zeros(4, 4, n);
|
||||
WTm(1<span class="org-type">:</span>3, 1<span class="org-type">:</span>3, <span class="org-type">:</span>) = simout.y.R.Data;
|
||||
WTm(1<span class="org-type">:</span>3, 4, <span class="org-type">:</span>) = [simout.y.x.Data<span class="org-type">'</span> ; simout.y.y.Data<span class="org-type">'</span> ; simout.y.z.Data<span class="org-type">'</span>];
|
||||
WTm(4, 4, <span class="org-type">:</span>) = 1;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -607,10 +611,10 @@ WTm(4, 4, <span class="org-type">:</span>) = 1;
|
||||
Finally, we compute \({}^M\bm{T}_R\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">MTr = zeros(4, 4, n);
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:n</span>
|
||||
MTr(<span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span>) = [WTm(1<span class="org-type">:</span>3,1<span class="org-type">:</span>3,<span class="org-constant">i</span>)<span class="org-type">'</span>, <span class="org-type">-</span>WTm(1<span class="org-type">:</span>3,1<span class="org-type">:</span>3,<span class="org-constant">i</span>)<span class="org-type">'*</span>WTm(1<span class="org-type">:</span>3,4,<span class="org-constant">i</span>) ; 0 0 0 1]<span class="org-type">*</span>WTr(<span class="org-type">:</span>,<span class="org-type">:</span>,<span class="org-constant">i</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
<pre class="src src-matlab"> MTr = zeros(4, 4, n);
|
||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:n</span>
|
||||
MTr(<span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span>) = [WTm(1<span class="org-type">:</span>3,1<span class="org-type">:</span>3,<span class="org-constant">i</span>)<span class="org-type">'</span>, <span class="org-type">-</span>WTm(1<span class="org-type">:</span>3,1<span class="org-type">:</span>3,<span class="org-constant">i</span>)<span class="org-type">'*</span>WTm(1<span class="org-type">:</span>3,4,<span class="org-constant">i</span>) ; 0 0 0 1]<span class="org-type">*</span>WTr(<span class="org-type">:</span>,<span class="org-type">:</span>,<span class="org-constant">i</span>);
|
||||
<span class="org-keyword">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -661,10 +665,10 @@ Verify that the pose error is small.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1528ce4" class="outline-3">
|
||||
<h3 id="org1528ce4"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||
<div id="outline-container-orgdb2de31" class="outline-3">
|
||||
<h3 id="orgdb2de31"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-3-4">
|
||||
<div class="important">
|
||||
<div class="important" id="orge11a7e8">
|
||||
<p>
|
||||
Indeed, we are able to convert the position error in the frame of the NASS and then compensate these errors with the NASS.
|
||||
</p>
|
||||
@ -676,7 +680,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-04-17 ven. 09:35</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,37 +1,32 @@
|
||||
<?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-04-17 ven. 09:35 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Simscape Model</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Simscape Model</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orge12e7ea">1. Solid bodies</a></li>
|
||||
<li><a href="#org6e14a53">2. Frames</a></li>
|
||||
<li><a href="#orgbcbe86d">3. Joints</a></li>
|
||||
<li><a href="#orgafe97a3">4. Measurements</a></li>
|
||||
<li><a href="#orgdee3066">5. Excitation</a></li>
|
||||
<li><a href="#org0e399eb">1. Solid bodies</a></li>
|
||||
<li><a href="#org8fe7328">2. Frames</a></li>
|
||||
<li><a href="#orgf4c96ec">3. Joints</a></li>
|
||||
<li><a href="#orge58c3e3">4. Measurements</a></li>
|
||||
<li><a href="#org6556ccd">5. Excitation</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -44,8 +39,8 @@ A <a href="https://.mathworks.com/products/simscape.html">simscape</a> model per
|
||||
<a href="https://mathworks.com/products/simmechanics.html">Simscape Multibody</a> permits to model multibody systems using blocks representing bodies, joints, constraints, force elements, and sensors.
|
||||
</p>
|
||||
|
||||
<div id="outline-container-orge12e7ea" class="outline-2">
|
||||
<h2 id="orge12e7ea"><span class="section-number-2">1</span> Solid bodies</h2>
|
||||
<div id="outline-container-org0e399eb" class="outline-2">
|
||||
<h2 id="org0e399eb"><span class="section-number-2">1</span> Solid bodies</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
Each solid body is represented by a <a href="https://mathworks.com/help/physmod/sm/ref/solid.html">solid block</a>.
|
||||
@ -54,8 +49,8 @@ The geometry of the solid body can be imported using a <code>step</code> file. T
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6e14a53" class="outline-2">
|
||||
<h2 id="org6e14a53"><span class="section-number-2">2</span> Frames</h2>
|
||||
<div id="outline-container-org8fe7328" class="outline-2">
|
||||
<h2 id="org8fe7328"><span class="section-number-2">2</span> Frames</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
Frames are very important in simscape multibody, they defined where the forces are applied, where the joints are located and where the measurements are made.
|
||||
@ -67,8 +62,8 @@ They can be defined from the solid body geometry, or using the <a href="https://
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbcbe86d" class="outline-2">
|
||||
<h2 id="orgbcbe86d"><span class="section-number-2">3</span> Joints</h2>
|
||||
<div id="outline-container-orgf4c96ec" class="outline-2">
|
||||
<h2 id="orgf4c96ec"><span class="section-number-2">3</span> Joints</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
Solid Bodies are connected with joints (between frames of the two solid bodies).
|
||||
@ -78,7 +73,7 @@ Solid Bodies are connected with joints (between frames of the two solid bodies).
|
||||
There are various types of joints that are all described <a href="https://mathworks.com/help/physmod/sm/ug/joints.html">here</a>.
|
||||
</p>
|
||||
|
||||
<table id="orgbc35961" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="org7462d76" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 1:</span> Degrees of freedom associated with each joint</caption>
|
||||
|
||||
<colgroup>
|
||||
@ -211,7 +206,7 @@ Joint blocks are assortments of joint primitives:
|
||||
<li><b>Constant Velocity</b>: Allows rotation at constant velocity between intersection through arbitrarily aligned shafts: <code>CV</code></li>
|
||||
</ul>
|
||||
|
||||
<table id="org3352129" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<table id="orgac35e84" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 2:</span> Joint primitives for each joint type</caption>
|
||||
|
||||
<colgroup>
|
||||
@ -503,8 +498,8 @@ Composite Force/Torque sensing:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgafe97a3" class="outline-2">
|
||||
<h2 id="orgafe97a3"><span class="section-number-2">4</span> Measurements</h2>
|
||||
<div id="outline-container-orge58c3e3" class="outline-2">
|
||||
<h2 id="orge58c3e3"><span class="section-number-2">4</span> Measurements</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
A transform sensor block measures the spatial relationship between two frames: the base <code>B</code> and the follower <code>F</code>.
|
||||
@ -528,8 +523,8 @@ If we want to simulate an <b>inertial sensor</b>, we just have to choose <code>B
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdee3066" class="outline-2">
|
||||
<h2 id="orgdee3066"><span class="section-number-2">5</span> Excitation</h2>
|
||||
<div id="outline-container-org6556ccd" class="outline-2">
|
||||
<h2 id="org6556ccd"><span class="section-number-2">5</span> Excitation</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
We can apply <b>external forces</b> to the model by using an <a href="https://mathworks.com/help/physmod/sm/ref/externalforceandtorque.html">external force and torque block</a>.
|
||||
@ -543,7 +538,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-04-17 ven. 09:35</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,26 +1,21 @@
|
||||
<?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-04-17 ven. 09:36 -->
|
||||
<!-- 2021-02-20 sam. 23:09 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Simulink Project for the NASS</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Simulink Project for the NASS</h1>
|
||||
<p>
|
||||
@ -50,7 +45,7 @@ The project can be opened using the <code>simulinkproject</code> function:
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">simulinkproject(<span class="org-string">'./'</span>);
|
||||
<pre class="src src-matlab"> simulinkproject(<span class="org-string">'./'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -59,19 +54,19 @@ When the project opens, a startup script is ran.
|
||||
The startup script is defined below and is exported to the <code>project_startup.m</code> script.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">project = simulinkproject;
|
||||
projectRoot = project.RootFolder;
|
||||
<pre class="src src-matlab"> project = simulinkproject;
|
||||
projectRoot = project.RootFolder;
|
||||
|
||||
myCacheFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCache'</span>);
|
||||
myCodeFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCode'</span>);
|
||||
myCacheFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCache'</span>);
|
||||
myCodeFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCode'</span>);
|
||||
|
||||
Simulink.fileGenControl(<span class="org-string">'set'</span>,...
|
||||
<span class="org-string">'CacheFolder'</span>, myCacheFolder,...
|
||||
<span class="org-string">'CodeGenFolder'</span>, myCodeFolder,...
|
||||
<span class="org-string">'createDir'</span>, <span class="org-constant">true</span>);
|
||||
Simulink.fileGenControl(<span class="org-string">'set'</span>,...
|
||||
<span class="org-string">'CacheFolder'</span>, myCacheFolder,...
|
||||
<span class="org-string">'CodeGenFolder'</span>, myCodeFolder,...
|
||||
<span class="org-string">'createDir'</span>, <span class="org-constant">true</span>);
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Load the Simscape Configuration</span></span>
|
||||
load(<span class="org-string">'mat/conf_simulink.mat'</span>);
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Load the Simscape Configuration</span></span>
|
||||
load(<span class="org-string">'mat/conf_simulink.mat'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -79,7 +74,7 @@ load(<span class="org-string">'mat/conf_simulink.mat'</span>);
|
||||
When the project closes, it runs the <code>project_shutdown.m</code> script defined below.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Simulink.fileGenControl(<span class="org-string">'reset'</span>);
|
||||
<pre class="src src-matlab"> Simulink.fileGenControl(<span class="org-string">'reset'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -89,7 +84,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-04-17 ven. 09:36</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:09</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,57 +1,61 @@
|
||||
<?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-05-05 mar. 10:34 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Evaluating the Plant Uncertainty in various experimental conditions</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Evaluating the Plant Uncertainty in various experimental conditions</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgea4f0d4">1. Variation of the Sample Mass</a></li>
|
||||
<li><a href="#orga0077c1">2. Variation of the Sample Resonance Frequency</a></li>
|
||||
<li><a href="#orgb49a967">3. Variation of the Spindle Angle</a>
|
||||
<li><a href="#org7f3fda7">1. Variation of the Sample Mass</a></li>
|
||||
<li><a href="#org97d416c">2. Variation of the Sample Resonance Frequency</a></li>
|
||||
<li><a href="#org9ccc313">3. Variation of the Spindle Angle</a>
|
||||
<ul>
|
||||
<li><a href="#org027e6cb">3.1. Identification</a></li>
|
||||
<li><a href="#org5ba7e6b">3.1. Identification</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org9081b0f">4. Variation of the Spindle Rotation Speed</a>
|
||||
<li><a href="#org6dbbac7">4. Variation of the Spindle Rotation Speed</a>
|
||||
<ul>
|
||||
<li><a href="#orgd625617">4.1. Initialization of gravity compensation forces</a></li>
|
||||
<li><a href="#orgd69bd8a">4.2. Identification</a></li>
|
||||
<li><a href="#org70dd336">4.3. Plots</a></li>
|
||||
<li><a href="#org41be335">4.1. Initialization of gravity compensation forces</a></li>
|
||||
<li><a href="#org26868c4">4.2. Identification</a></li>
|
||||
<li><a href="#org21d01d9">4.3. Plots</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgc4bba39">5. Variation of the Tilt Angle</a></li>
|
||||
<li><a href="#orgd6b6bfd">6. Variation of the micro-hexapod pose</a></li>
|
||||
<li><a href="#org9b1c640">7. Conclusion</a></li>
|
||||
<li><a href="#org9ef371a">5. Variation of the Tilt Angle</a></li>
|
||||
<li><a href="#orgf2e2276">6. Variation of the micro-hexapod pose</a></li>
|
||||
<li><a href="#orgb9c798c">7. Conclusion</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -64,12 +68,12 @@ The goal of this document is to study how the dynamics of the system is changing
|
||||
These experimental conditions are:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Section <a href="#org73362ad">1</a>: Sample mass (from 1Kg to 50Kg)</li>
|
||||
<li>Section <a href="#org5d9a396">2</a>: Sample dynamics (mostly main resonance frequency)</li>
|
||||
<li>Section <a href="#org58b9cae">3</a>: The spindle angle</li>
|
||||
<li>Section <a href="#org5b594de">4</a>: The spindle rotation speed (from 1rpm to 60rpm)</li>
|
||||
<li>Section <a href="#org4fe1245">5</a>: The tilt angle (from -3 to 3 degrees)</li>
|
||||
<li>Section <a href="#orgec1048c">6</a>: Pose of the micro-hexapod</li>
|
||||
<li>Section <a href="#org47bac11">1</a>: Sample mass (from 1Kg to 50Kg)</li>
|
||||
<li>Section <a href="#orgbedba6e">2</a>: Sample dynamics (mostly main resonance frequency)</li>
|
||||
<li>Section <a href="#org385fb52">3</a>: The spindle angle</li>
|
||||
<li>Section <a href="#orgc000f2f">4</a>: The spindle rotation speed (from 1rpm to 60rpm)</li>
|
||||
<li>Section <a href="#orgaa8ad1d">5</a>: The tilt angle (from -3 to 3 degrees)</li>
|
||||
<li>Section <a href="#orgd12218c">6</a>: Pose of the micro-hexapod</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
@ -89,14 +93,14 @@ The variability of the dynamics is studied for two nano-hexapod concepts:
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The conclusions are drawn in Section <a href="#org16cf0c6">7</a>
|
||||
The conclusions are drawn in Section <a href="#org1e30cfe">7</a>
|
||||
</p>
|
||||
|
||||
<div id="outline-container-orgea4f0d4" class="outline-2">
|
||||
<h2 id="orgea4f0d4"><span class="section-number-2">1</span> Variation of the Sample Mass</h2>
|
||||
<div id="outline-container-org7f3fda7" class="outline-2">
|
||||
<h2 id="org7f3fda7"><span class="section-number-2">1</span> Variation of the Sample Mass</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="org73362ad"></a>
|
||||
<a id="org47bac11"></a>
|
||||
</p>
|
||||
<p>
|
||||
We here study the change of dynamics due to the sample mass.
|
||||
@ -107,34 +111,34 @@ We initialize all the stages with the default parameters.
|
||||
We identify the dynamics for the following sample masses, both with a soft and stiff nano-hexapod.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">masses = [1, 10, 50]; % [kg]
|
||||
<pre class="src src-matlab"> masses = [1, 10, 50]; <span class="org-comment">% [kg]</span>
|
||||
</pre>
|
||||
</div>
|
||||
<p>
|
||||
The following transfer functions are shown:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#orgfcb2492">1</a>: From actuator forces to force sensors in each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#orga2c8402">2</a>: From actuator forces to relative displacement of each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#org389df4f">3</a> (resp. <a href="#orgb5aaedd">4</a>): From forces applied in the task space by the nano-hexapod to displacement of the sample in the X direction (resp. in the Z direction)</li>
|
||||
<li>Figure <a href="#org556def6">1</a>: From actuator forces to force sensors in each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#orga92f0d2">2</a>: From actuator forces to relative displacement of each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#org67c5df8">3</a> (resp. <a href="#org3ed9a76">4</a>): From forces applied in the task space by the nano-hexapod to displacement of the sample in the X direction (resp. in the Z direction)</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="orgfcb2492" class="figure">
|
||||
<div id="org556def6" class="figure">
|
||||
<p><img src="figs/dynamics_variability_iff_sample_mass.png" alt="dynamics_variability_iff_sample_mass.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Variability of the dynamics from actuator force to force sensor with the Sample Mass (<a href="./figs/dynamics_variability_iff_sample_mass.png">png</a>, <a href="./figs/dynamics_variability_iff_sample_mass.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orga2c8402" class="figure">
|
||||
<div id="orga92f0d2" class="figure">
|
||||
<p><img src="figs/dynamics_variability_dvf_sample_mass.png" alt="dynamics_variability_dvf_sample_mass.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Variability of the dynamics from actuator force to relative motion sensor with the Sample Mass (<a href="./figs/dynamics_variability_dvf_sample_mass.png">png</a>, <a href="./figs/dynamics_variability_dvf_sample_mass.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org389df4f" class="figure">
|
||||
<div id="org67c5df8" class="figure">
|
||||
<p><img src="figs/dynamics_variability_err_x_sample_mass.png" alt="dynamics_variability_err_x_sample_mass.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Variability of the dynamics from Forces applied in task space (X direction) to the displacement of the sample in the X direction (<a href="./figs/dynamics_variability_err_x_sample_mass.png">png</a>, <a href="./figs/dynamics_variability_err_x_sample_mass.pdf">pdf</a>)</p>
|
||||
@ -142,12 +146,12 @@ The following transfer functions are shown:
|
||||
|
||||
|
||||
|
||||
<div id="orgb5aaedd" class="figure">
|
||||
<div id="org3ed9a76" class="figure">
|
||||
<p><img src="figs/dynamics_variability_err_z_sample_mass.png" alt="dynamics_variability_err_z_sample_mass.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Variability of the dynamics from vertical forces applied in the task space to the displacement of the sample in the vertical direction (<a href="./figs/dynamics_variability_err_z_sample_mass.png">png</a>, <a href="./figs/dynamics_variability_err_z_sample_mass.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
<div class="important">
|
||||
<div class="important" id="org753fd54">
|
||||
<p>
|
||||
Let’s note \(\omega_0\) the first resonance which corresponds to the resonance of the payload+nano-hexapod top platform resonating on top of the nano-hexapod base.
|
||||
</p>
|
||||
@ -203,51 +207,51 @@ This is more easily seem with the soft nano-hexapod as the resonance \(\omega_0\
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga0077c1" class="outline-2">
|
||||
<h2 id="orga0077c1"><span class="section-number-2">2</span> Variation of the Sample Resonance Frequency</h2>
|
||||
<div id="outline-container-org97d416c" class="outline-2">
|
||||
<h2 id="org97d416c"><span class="section-number-2">2</span> Variation of the Sample Resonance Frequency</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="org5d9a396"></a>
|
||||
<a id="orgbedba6e"></a>
|
||||
</p>
|
||||
<p>
|
||||
We initialize all the stages with the default parameters.
|
||||
We identify the dynamics for the following sample resonance frequency.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">mass_w = [50, 100, 500]; % [Hz]
|
||||
mass = 10; % [Kg]
|
||||
<pre class="src src-matlab"> mass_w = [50, 100, 500]; <span class="org-comment">% [Hz]</span>
|
||||
mass = 10; <span class="org-comment">% [Kg]</span>
|
||||
</pre>
|
||||
</div>
|
||||
<p>
|
||||
The following transfer functions are shown:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#org9b4645f">5</a>: From actuator forces to force sensors in each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#orga4f9971">6</a>: From actuator forces to relative displacement of each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#orgfdf548b">7</a>: From forces applied in the task space by the nano-hexapod to displacement of the sample in the X direction</li>
|
||||
<li>Figure <a href="#orgfae24b1">5</a>: From actuator forces to force sensors in each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#orgd64155a">6</a>: From actuator forces to relative displacement of each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#org09a9db4">7</a>: From forces applied in the task space by the nano-hexapod to displacement of the sample in the X direction</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org9b4645f" class="figure">
|
||||
<div id="orgfae24b1" class="figure">
|
||||
<p><img src="figs/dynamics_variability_iff_sample_w.png" alt="dynamics_variability_iff_sample_w.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Variability of the dynamics from actuator force to force sensor with the Sample Mass (<a href="./figs/dynamics_variability_iff_sample_w.png">png</a>, <a href="./figs/dynamics_variability_iff_sample_w.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orga4f9971" class="figure">
|
||||
<div id="orgd64155a" class="figure">
|
||||
<p><img src="figs/dynamics_variability_dvf_sample_w.png" alt="dynamics_variability_dvf_sample_w.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Variability of the dynamics from actuator force to relative motion sensor with the Sample Mass (<a href="./figs/dynamics_variability_dvf_sample_w.png">png</a>, <a href="./figs/dynamics_variability_dvf_sample_w.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgfdf548b" class="figure">
|
||||
<div id="org09a9db4" class="figure">
|
||||
<p><img src="figs/dynamics_variability_err_sample_w.png" alt="dynamics_variability_err_sample_w.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Variability of the dynamics from a torque applied on the sample by the nano-hexapod in the X direction to the rotation of the sample around the X axis (<a href="./figs/dynamics_variability_err_sample_w.png">png</a>, <a href="./figs/dynamics_variability_err_sample_w.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
<div class="important">
|
||||
<div class="important" id="org11cbcec">
|
||||
<p>
|
||||
Let’s note \(\omega_m\) the frequency of the resonance of the Payload.
|
||||
</p>
|
||||
@ -293,22 +297,22 @@ Let’s note \(\omega_m\) the frequency of the resonance of the Payload.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb49a967" class="outline-2">
|
||||
<h2 id="orgb49a967"><span class="section-number-2">3</span> Variation of the Spindle Angle</h2>
|
||||
<div id="outline-container-org9ccc313" class="outline-2">
|
||||
<h2 id="org9ccc313"><span class="section-number-2">3</span> Variation of the Spindle Angle</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="org58b9cae"></a>
|
||||
<a id="org385fb52"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org027e6cb" class="outline-3">
|
||||
<h3 id="org027e6cb"><span class="section-number-3">3.1</span> Identification</h3>
|
||||
<div id="outline-container-org5ba7e6b" class="outline-3">
|
||||
<h3 id="org5ba7e6b"><span class="section-number-3">3.1</span> Identification</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
We identify the dynamics for the following Tilt stage angles.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSample('mass', 50);
|
||||
Rz_amplitudes = [0, pi/4, pi/2, pi]; % [rad]
|
||||
<pre class="src src-matlab"> initializeSample(<span class="org-string">'mass'</span>, 50);
|
||||
Rz_amplitudes = [0, <span class="org-constant">pi</span><span class="org-type">/</span>4, <span class="org-constant">pi</span><span class="org-type">/</span>2, <span class="org-constant">pi</span>]; <span class="org-comment">% [rad]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -319,19 +323,19 @@ Rz_amplitudes = [0, pi/4, pi/2, pi]; % [rad]
|
||||
The following transfer functions are shown:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#orgcfb9db7">8</a>: From actuator forces to force sensors in each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#orgd07dc03">9</a>: From forces applied in the task space by the nano-hexapod to displacement of the sample in the X direction</li>
|
||||
<li>Figure <a href="#org6e010ad">8</a>: From actuator forces to force sensors in each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#org3fbceeb">9</a>: From forces applied in the task space by the nano-hexapod to displacement of the sample in the X direction</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="orgcfb9db7" class="figure">
|
||||
<div id="org6e010ad" class="figure">
|
||||
<p><img src="figs/dynamics_variability_iff_spindle_angle.png" alt="dynamics_variability_iff_spindle_angle.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Variability of the dynamics from the actuator force to the force sensor with the Spindle Angle (<a href="./figs/dynamics_variability_iff_spindle_angle.png">png</a>, <a href="./figs/dynamics_variability_iff_spindle_angle.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgd07dc03" class="figure">
|
||||
<div id="org3fbceeb" class="figure">
|
||||
<p><img src="figs/dynamics_variability_err_spindle_angle.png" alt="dynamics_variability_err_spindle_angle.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Variability of the dynamics from actuator force to absolute velocity with the Spindle Angle (<a href="./figs/dynamics_variability_err_spindle_angle.png">png</a>, <a href="./figs/dynamics_variability_err_spindle_angle.pdf">pdf</a>)</p>
|
||||
@ -339,7 +343,7 @@ The following transfer functions are shown:
|
||||
</div>
|
||||
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<div class="important">
|
||||
<div class="important" id="orgf2503f0">
|
||||
<p>
|
||||
The Spindle angle has no visible effect for the soft nano-hexapod.
|
||||
</p>
|
||||
@ -354,23 +358,23 @@ This is probably due to the fact that the micro-station compliance is not unifor
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9081b0f" class="outline-2">
|
||||
<h2 id="org9081b0f"><span class="section-number-2">4</span> Variation of the Spindle Rotation Speed</h2>
|
||||
<div id="outline-container-org6dbbac7" class="outline-2">
|
||||
<h2 id="org6dbbac7"><span class="section-number-2">4</span> Variation of the Spindle Rotation Speed</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
<a id="org5b594de"></a>
|
||||
<a id="orgc000f2f"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-orgd625617" class="outline-3">
|
||||
<h3 id="orgd625617"><span class="section-number-3">4.1</span> Initialization of gravity compensation forces</h3>
|
||||
<div id="outline-container-org41be335" class="outline-3">
|
||||
<h3 id="org41be335"><span class="section-number-3">4.1</span> Initialization of gravity compensation forces</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
We initialize all the stages such that their joints are blocked and we record the total forces/torques applied in each of these joints.
|
||||
We set a payload mass of 10Kg.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSample('type', 'init', 'mass', 10);
|
||||
nano_hexapod = initializeNanoHexapod( 'type', 'init');
|
||||
<pre class="src src-matlab"> initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'init'</span>, <span class="org-string">'mass'</span>, 10);
|
||||
nano_hexapod = initializeNanoHexapod( <span class="org-string">'type'</span>, <span class="org-string">'init'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -379,56 +383,56 @@ Finally, we simulate the system and same the forces/torques applied in each join
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-orgd69bd8a" class="outline-3">
|
||||
<h3 id="orgd69bd8a"><span class="section-number-3">4.2</span> Identification</h3>
|
||||
<div id="outline-container-org26868c4" class="outline-3">
|
||||
<h3 id="org26868c4"><span class="section-number-3">4.2</span> Identification</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<p>
|
||||
We initialize the stages with forces/torques compensating the gravity forces.
|
||||
We identify the dynamics for the following Spindle rotation periods.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Rz_periods = [60, 6, 2, 1]; % [s]
|
||||
<pre class="src src-matlab"> Rz_periods = [60, 6, 2, 1]; <span class="org-comment">% [s]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org70dd336" class="outline-3">
|
||||
<h3 id="org70dd336"><span class="section-number-3">4.3</span> Plots</h3>
|
||||
<div id="outline-container-org21d01d9" class="outline-3">
|
||||
<h3 id="org21d01d9"><span class="section-number-3">4.3</span> Plots</h3>
|
||||
<div class="outline-text-3" id="text-4-3">
|
||||
<p>
|
||||
The following transfer functions are shown:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#org82ab7aa">10</a>: From actuator forces to force sensors in each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#org3f98487">11</a>: From actuator forces to relative displacement of each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#org0d347dd">12</a>: From forces applied in the task space by the nano-hexapod to displacement of the sample in the X direction</li>
|
||||
<li>Figure <a href="#org61e9acd">13</a>: From forces applied in the task space in the X direction by the nano-hexapod to displacement of the sample in the Y direction (coupling)</li>
|
||||
<li>Figure <a href="#org47f402f">10</a>: From actuator forces to force sensors in each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#org4b3b7f6">11</a>: From actuator forces to relative displacement of each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#org53196fc">12</a>: From forces applied in the task space by the nano-hexapod to displacement of the sample in the X direction</li>
|
||||
<li>Figure <a href="#org38e5c6e">13</a>: From forces applied in the task space in the X direction by the nano-hexapod to displacement of the sample in the Y direction (coupling)</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org82ab7aa" class="figure">
|
||||
<div id="org47f402f" class="figure">
|
||||
<p><img src="figs/dynamics_variability_iff_spindle_speed.png" alt="dynamics_variability_iff_spindle_speed.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Variability of the dynamics from the actuator force to the force sensor with the Spindle rotation speed (<a href="./figs/dynamics_variability_iff_spindle_speed.png">png</a>, <a href="./figs/dynamics_variability_iff_spindle_speed.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org3f98487" class="figure">
|
||||
<div id="org4b3b7f6" class="figure">
|
||||
<p><img src="figs/dynamics_variability_dvf_spindle_speed.png" alt="dynamics_variability_dvf_spindle_speed.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Variability of the dynamics from the actuator force to the relative motion sensor with the Spindle rotation speed (<a href="./figs/dynamics_variability_dvf_spindle_speed.png">png</a>, <a href="./figs/dynamics_variability_dvf_spindle_speed.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org0d347dd" class="figure">
|
||||
<div id="org53196fc" class="figure">
|
||||
<p><img src="figs/dynamics_variability_err_spindle_speed.png" alt="dynamics_variability_err_spindle_speed.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Variability of the dynamics from the actuator force in the task force to the position error of the sample (<a href="./figs/dynamics_variability_err_spindle_speed.png">png</a>, <a href="./figs/dynamics_variability_err_spindle_speed.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org61e9acd" class="figure">
|
||||
<div id="org38e5c6e" class="figure">
|
||||
<p><img src="figs/dynamics_variability_err_spindle_speed_coupling.png" alt="dynamics_variability_err_spindle_speed_coupling.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Variability of the coupling from the actuator force in the task force to the position error of the sample (<a href="./figs/dynamics_variability_err_spindle_speed_coupling.png">png</a>, <a href="./figs/dynamics_variability_err_spindle_speed_coupling.pdf">pdf</a>)</p>
|
||||
@ -437,7 +441,7 @@ The following transfer functions are shown:
|
||||
</div>
|
||||
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<div class="important">
|
||||
<div class="important" id="org8004dbd">
|
||||
<p>
|
||||
For the stiff nano-hexapod, the rotation speed of the Spindle does not affect the (main) dynamics.
|
||||
It only affects the coupling due to Coriolis forces.
|
||||
@ -461,43 +465,43 @@ Also, the coupling from forces applied in the X direction to induced displacemen
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc4bba39" class="outline-2">
|
||||
<h2 id="orgc4bba39"><span class="section-number-2">5</span> Variation of the Tilt Angle</h2>
|
||||
<div id="outline-container-org9ef371a" class="outline-2">
|
||||
<h2 id="org9ef371a"><span class="section-number-2">5</span> Variation of the Tilt Angle</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
<p>
|
||||
<a id="org4fe1245"></a>
|
||||
<a id="orgaa8ad1d"></a>
|
||||
</p>
|
||||
<p>
|
||||
We initialize all the stages with the default parameters.
|
||||
We identify the dynamics for the following Tilt stage angles.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSample('mass', 50);
|
||||
Ry_amplitudes = [-3*pi/180 0 3*pi/180]; % [rad]
|
||||
<pre class="src src-matlab"> initializeSample(<span class="org-string">'mass'</span>, 50);
|
||||
Ry_amplitudes = [<span class="org-type">-</span>3<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180 0 3<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180]; <span class="org-comment">% [rad]</span>
|
||||
</pre>
|
||||
</div>
|
||||
<p>
|
||||
The following transfer functions are shown:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#org8eda147">14</a>: From actuator forces to force sensors in each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#orgfacbfbb">15</a>: From forces applied in the task space by the nano-hexapod to displacement of the sample in the X direction</li>
|
||||
<li>Figure <a href="#orgfdee6dd">14</a>: From actuator forces to force sensors in each nano-hexapod’s leg</li>
|
||||
<li>Figure <a href="#org59428f5">15</a>: From forces applied in the task space by the nano-hexapod to displacement of the sample in the X direction</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org8eda147" class="figure">
|
||||
<div id="orgfdee6dd" class="figure">
|
||||
<p><img src="figs/dynamics_variability_iff_tilt_angle.png" alt="dynamics_variability_iff_tilt_angle.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Variability of the dynamics from the actuator force to the force sensor with the Tilt stage Angle (<a href="./figs/dynamics_variability_iff_tilt_angle.png">png</a>, <a href="./figs/dynamics_variability_iff_tilt_angle.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgfacbfbb" class="figure">
|
||||
<div id="org59428f5" class="figure">
|
||||
<p><img src="figs/dynamics_variability_err_tilt_angle.png" alt="dynamics_variability_err_tilt_angle.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Variability of the dynamics from the actuator force in the task space to the displacement of the sample (<a href="./figs/dynamics_variability_err_tilt_angle.png">png</a>, <a href="./figs/dynamics_variability_err_tilt_angle.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
<div class="important">
|
||||
<div class="important" id="org0740801">
|
||||
<p>
|
||||
The tilt angle has no visible effect on the dynamics.
|
||||
</p>
|
||||
@ -506,34 +510,34 @@ The tilt angle has no visible effect on the dynamics.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd6b6bfd" class="outline-2">
|
||||
<h2 id="orgd6b6bfd"><span class="section-number-2">6</span> Variation of the micro-hexapod pose</h2>
|
||||
<div id="outline-container-orgf2e2276" class="outline-2">
|
||||
<h2 id="orgf2e2276"><span class="section-number-2">6</span> Variation of the micro-hexapod pose</h2>
|
||||
<div class="outline-text-2" id="text-6">
|
||||
<p>
|
||||
<a id="orgec1048c"></a>
|
||||
<a id="orgd12218c"></a>
|
||||
</p>
|
||||
<p>
|
||||
We initialize all the stages with the default parameters.
|
||||
We identify the dynamics for the following translations of the micro-hexapod in the X direction.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Tx_amplitudes = [0, 5e-3, 10e-3]; % [m]
|
||||
<pre class="src src-matlab"> Tx_amplitudes = [0, 5e<span class="org-type">-</span>3, 10e<span class="org-type">-</span>3]; <span class="org-comment">% [m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div id="org110386d" class="figure">
|
||||
<div id="org54a59e1" class="figure">
|
||||
<p><img src="figs/dynamics_variability_iff_micro_hexapod_x.png" alt="dynamics_variability_iff_micro_hexapod_x.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 16: </span>Variability of the dynamics from the actuator force to the force sensor with the Tilt stage Angle (<a href="./figs/dynamics_variability_iff_micro_hexapod_x.png">png</a>, <a href="./figs/dynamics_variability_iff_micro_hexapod_x.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org62de399" class="figure">
|
||||
<div id="org78a9a9d" class="figure">
|
||||
<p><img src="figs/dynamics_variability_err_micro_hexapod_x.png" alt="dynamics_variability_err_micro_hexapod_x.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 17: </span>Variability of the dynamics from the actuator force in the task space to the displacement of the sample (<a href="./figs/dynamics_variability_err_micro_hexapod_x.png">png</a>, <a href="./figs/dynamics_variability_err_micro_hexapod_x.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
<div class="important">
|
||||
<div class="important" id="org2e2f159">
|
||||
<p>
|
||||
The pose of the micro-hexapod has negligible effect on the dynamics.
|
||||
</p>
|
||||
@ -542,14 +546,14 @@ The pose of the micro-hexapod has negligible effect on the dynamics.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9b1c640" class="outline-2">
|
||||
<h2 id="org9b1c640"><span class="section-number-2">7</span> Conclusion</h2>
|
||||
<div id="outline-container-orgb9c798c" class="outline-2">
|
||||
<h2 id="orgb9c798c"><span class="section-number-2">7</span> Conclusion</h2>
|
||||
<div class="outline-text-2" id="text-7">
|
||||
<p>
|
||||
<a id="org16cf0c6"></a>
|
||||
<a id="org1e30cfe"></a>
|
||||
</p>
|
||||
|
||||
<div class="important">
|
||||
<div class="important" id="orgdd4393b">
|
||||
<p>
|
||||
From all the experimental condition studied, the only ones that have significant effect on the dynamics are:
|
||||
</p>
|
||||
@ -603,7 +607,7 @@ From all the experimental condition studied, the only ones that have significant
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-05 mar. 10:34</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,66 +3,71 @@
|
||||
"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-05-20 mer. 15:49 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Determination of the optimal nano-hexapod’s stiffness</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Determination of the optimal nano-hexapod’s stiffness</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#org157c07d">1. Spindle Rotation Speed</a>
|
||||
<li><a href="#orgddc729d">1. Spindle Rotation Speed</a>
|
||||
<ul>
|
||||
<li><a href="#org654fcb6">1.1. Initialization</a></li>
|
||||
<li><a href="#org687bdef">1.2. Identification when rotating at maximum speed</a></li>
|
||||
<li><a href="#org7dcfddb">1.3. Change of dynamics</a></li>
|
||||
<li><a href="#orgbdb60e0">1.1. Initialization</a></li>
|
||||
<li><a href="#orgad2f22e">1.2. Identification when rotating at maximum speed</a></li>
|
||||
<li><a href="#orgc299410">1.3. Change of dynamics</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org23ddf26">2. Micro-Station Compliance Effect</a>
|
||||
<li><a href="#org48e49fe">2. Micro-Station Compliance Effect</a>
|
||||
<ul>
|
||||
<li><a href="#orgdc8aeea">2.1. Identification of the micro-station compliance</a></li>
|
||||
<li><a href="#orga44542b">2.2. Identification of the dynamics with a rigid micro-station</a></li>
|
||||
<li><a href="#org49d6b26">2.3. Identification of the dynamics with a flexible micro-station</a></li>
|
||||
<li><a href="#org4c1ed79">2.4. Obtained Dynamics</a></li>
|
||||
<li><a href="#org596cda7">2.1. Identification of the micro-station compliance</a></li>
|
||||
<li><a href="#org5e4de36">2.2. Identification of the dynamics with a rigid micro-station</a></li>
|
||||
<li><a href="#orgf201667">2.3. Identification of the dynamics with a flexible micro-station</a></li>
|
||||
<li><a href="#org64f02b9">2.4. Obtained Dynamics</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org19559b0">3. Payload “Impedance” Effect</a>
|
||||
<li><a href="#orgcd53751">3. Payload “Impedance” Effect</a>
|
||||
<ul>
|
||||
<li><a href="#orgd20f43d">3.1. Initialization</a></li>
|
||||
<li><a href="#org73f1c6e">3.2. Identification of the dynamics while change the payload dynamics</a></li>
|
||||
<li><a href="#orgd7a519b">3.3. Change of dynamics for the primary controller</a>
|
||||
<li><a href="#org19e3b05">3.1. Initialization</a></li>
|
||||
<li><a href="#orgc794f3b">3.2. Identification of the dynamics while change the payload dynamics</a></li>
|
||||
<li><a href="#orgac78d43">3.3. Change of dynamics for the primary controller</a>
|
||||
<ul>
|
||||
<li><a href="#orgb44d421">3.3.1. Frequency variation</a></li>
|
||||
<li><a href="#orgfc270b0">3.3.2. Mass variation</a></li>
|
||||
<li><a href="#org118f0c2">3.3.3. Total variation</a></li>
|
||||
<li><a href="#org7a6c6e0">3.3.1. Frequency variation</a></li>
|
||||
<li><a href="#org9414851">3.3.2. Mass variation</a></li>
|
||||
<li><a href="#org41d9c49">3.3.3. Total variation</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org973d2e3">4. Total Change of dynamics</a></li>
|
||||
<li><a href="#orgcfb28e7">4. Total Change of dynamics</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -84,20 +89,20 @@ As seen before, the stiffness of the nano-hexapod greatly influence the effect o
|
||||
We wish here to see if we can determine an optimal stiffness of the nano-hexapod such that:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Section <a href="#org902923f">1</a>: the change of its dynamics due to the spindle rotation speed is acceptable</li>
|
||||
<li>Section <a href="#orgabe2ab2">2</a>: the support compliance dynamics is not much present in the nano-hexapod dynamics</li>
|
||||
<li>Section <a href="#org2bd8390">3</a>: the change of payload impedance has acceptable effect on the plant dynamics</li>
|
||||
<li>Section <a href="#orge660d01">1</a>: the change of its dynamics due to the spindle rotation speed is acceptable</li>
|
||||
<li>Section <a href="#org30f0cdc">2</a>: the support compliance dynamics is not much present in the nano-hexapod dynamics</li>
|
||||
<li>Section <a href="#orge0b72c9">3</a>: the change of payload impedance has acceptable effect on the plant dynamics</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The overall goal is to design a nano-hexapod that will allow the highest possible control bandwidth.
|
||||
</p>
|
||||
|
||||
<div id="outline-container-org157c07d" class="outline-2">
|
||||
<h2 id="org157c07d"><span class="section-number-2">1</span> Spindle Rotation Speed</h2>
|
||||
<div id="outline-container-orgddc729d" class="outline-2">
|
||||
<h2 id="orgddc729d"><span class="section-number-2">1</span> Spindle Rotation Speed</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="org902923f"></a>
|
||||
<a id="orge660d01"></a>
|
||||
</p>
|
||||
<p>
|
||||
In this section, we look at the effect of the spindle rotation speed on the plant dynamics.
|
||||
@ -108,21 +113,21 @@ The rotation speed will have an effect due to the Coriolis effect.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org654fcb6" class="outline-3">
|
||||
<h3 id="org654fcb6"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||
<div id="outline-container-orgbdb60e0" class="outline-3">
|
||||
<h3 id="orgbdb60e0"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-1-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 class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -130,7 +135,7 @@ initializeMirror();
|
||||
We use a sample mass of 10kg.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSample('mass', 10);
|
||||
<pre class="src src-matlab"> initializeSample(<span class="org-string">'mass'</span>, 10);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -139,23 +144,23 @@ We don’t include disturbances in this model as it adds complexity to the s
|
||||
We however include gravity.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration('gravity', true);
|
||||
initializeDisturbances('enable', false);
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
initializeController();
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||
initializeController();
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org687bdef" class="outline-3">
|
||||
<h3 id="org687bdef"><span class="section-number-3">1.2</span> Identification when rotating at maximum speed</h3>
|
||||
<div id="outline-container-orgad2f22e" class="outline-3">
|
||||
<h3 id="orgad2f22e"><span class="section-number-3">1.2</span> Identification when rotating at maximum speed</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
We identify the dynamics for the following spindle rotation speeds <code>Rz_rpm</code>:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Rz_rpm = linspace(0, 60, 6);
|
||||
<pre class="src src-matlab"> Rz_rpm = linspace(0, 60, 6);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -163,55 +168,55 @@ We identify the dynamics for the following spindle rotation speeds <code>Rz_rpm<
|
||||
And for the following nano-hexapod actuator stiffness <code>Ks</code>:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ks = logspace(3,9,7); % [N/m]
|
||||
<pre class="src src-matlab"> Ks = logspace(3,9,7); <span class="org-comment">% [N/m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7dcfddb" class="outline-3">
|
||||
<h3 id="org7dcfddb"><span class="section-number-3">1.3</span> Change of dynamics</h3>
|
||||
<div id="outline-container-orgc299410" class="outline-3">
|
||||
<h3 id="orgc299410"><span class="section-number-3">1.3</span> Change of dynamics</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
We plot the change of dynamics due to the change of the spindle rotation speed (from 0rpm to 60rpm):
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#orgfd21b56">2</a>: from actuator force \(\tau\) to force sensor \(\tau_m\) (IFF plant)</li>
|
||||
<li>Figure <a href="#org2a4cc54">3</a>: from actuator force \(\tau\) to actuator relative displacement \(d\mathcal{L}\) (Decentralized positioning plant)</li>
|
||||
<li>Figure <a href="#orgbf48d68">4</a>: from force in the task space \(\mathcal{F}_x\) to sample displacement \(\mathcal{X}_x\) (Centralized positioning plant)</li>
|
||||
<li>Figure <a href="#org16be775">5</a>: from force in the task space \(\mathcal{F}_x\) to sample displacement \(\mathcal{X}_y\) (coupling of the centralized positioning plant)</li>
|
||||
<li>Figure <a href="#org71b2e79">2</a>: from actuator force \(\tau\) to force sensor \(\tau_m\) (IFF plant)</li>
|
||||
<li>Figure <a href="#org810439c">3</a>: from actuator force \(\tau\) to actuator relative displacement \(d\mathcal{L}\) (Decentralized positioning plant)</li>
|
||||
<li>Figure <a href="#org138e827">4</a>: from force in the task space \(\mathcal{F}_x\) to sample displacement \(\mathcal{X}_x\) (Centralized positioning plant)</li>
|
||||
<li>Figure <a href="#org603001d">5</a>: from force in the task space \(\mathcal{F}_x\) to sample displacement \(\mathcal{X}_y\) (coupling of the centralized positioning plant)</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org039ad8e" class="figure">
|
||||
<div id="orge6e8826" class="figure">
|
||||
<p><img src="figs/opti_stiffness_iff_root_locus.png" alt="opti_stiffness_iff_root_locus.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Root Locus plot for IFF control when not rotating (in red) and when rotating at 60rpm (in blue) for 4 different nano-hexapod stiffnesses (<a href="./figs/opti_stiffness_iff_root_locus.png">png</a>, <a href="./figs/opti_stiffness_iff_root_locus.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgfd21b56" class="figure">
|
||||
<div id="org71b2e79" class="figure">
|
||||
<p><img src="figs/opt_stiffness_wz_iff.png" alt="opt_stiffness_wz_iff.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Change of dynamics from actuator \(\tau\) to actuator force sensor \(\tau_m\) for a spindle rotation speed from 0rpm to 60rpm (<a href="./figs/opt_stiffness_wz_iff.png">png</a>, <a href="./figs/opt_stiffness_wz_iff.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org2a4cc54" class="figure">
|
||||
<div id="org810439c" class="figure">
|
||||
<p><img src="figs/opt_stiffness_wz_dvf.png" alt="opt_stiffness_wz_dvf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Change of dynamics from actuator force \(\tau\) to actuator displacement \(d\mathcal{L}\) for a spindle rotation speed from 0rpm to 60rpm (<a href="./figs/opt_stiffness_wz_dvf.png">png</a>, <a href="./figs/opt_stiffness_wz_dvf.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgbf48d68" class="figure">
|
||||
<div id="org138e827" class="figure">
|
||||
<p><img src="figs/opt_stiffness_wz_fx_dx.png" alt="opt_stiffness_wz_fx_dx.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Change of dynamics from force \(\mathcal{F}_x\) to displacement \(\mathcal{X}_x\) for a spindle rotation speed from 0rpm to 60rpm (<a href="./figs/opt_stiffness_wz_fx_dx.png">png</a>, <a href="./figs/opt_stiffness_wz_fx_dx.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org16be775" class="figure">
|
||||
<div id="org603001d" class="figure">
|
||||
<p><img src="figs/opt_stiffness_wz_coupling.png" alt="opt_stiffness_wz_coupling.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Change of Coupling from force \(\mathcal{F}_x\) to displacement \(\mathcal{X}_y\) for a spindle rotation speed from 0rpm to 60rpm (<a href="./figs/opt_stiffness_wz_coupling.png">png</a>, <a href="./figs/opt_stiffness_wz_coupling.pdf">pdf</a>)</p>
|
||||
@ -220,7 +225,7 @@ We plot the change of dynamics due to the change of the spindle rotation speed (
|
||||
</div>
|
||||
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<div class="important">
|
||||
<div class="important" id="org3ec393d">
|
||||
<p>
|
||||
The leg stiffness should be at higher than \(k_i = 10^4\ [N/m]\) such that the main resonance frequency does not shift too much when rotating.
|
||||
For the coupling, it is more difficult to conclude about the minimum required leg stiffness.
|
||||
@ -228,7 +233,7 @@ For the coupling, it is more difficult to conclude about the minimum required le
|
||||
|
||||
</div>
|
||||
|
||||
<div class="notes">
|
||||
<div class="notes" id="org3ef0447">
|
||||
<p>
|
||||
Note that we can use very soft nano-hexapod if we limit the spindle rotating speed.
|
||||
</p>
|
||||
@ -237,11 +242,11 @@ Note that we can use very soft nano-hexapod if we limit the spindle rotating spe
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org23ddf26" class="outline-2">
|
||||
<h2 id="org23ddf26"><span class="section-number-2">2</span> Micro-Station Compliance Effect</h2>
|
||||
<div id="outline-container-org48e49fe" class="outline-2">
|
||||
<h2 id="org48e49fe"><span class="section-number-2">2</span> Micro-Station Compliance Effect</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="orgabe2ab2"></a>
|
||||
<a id="org30f0cdc"></a>
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>take the 6dof compliance of the micro-station</li>
|
||||
@ -249,19 +254,19 @@ Note that we can use very soft nano-hexapod if we limit the spindle rotating spe
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdc8aeea" class="outline-3">
|
||||
<h3 id="orgdc8aeea"><span class="section-number-3">2.1</span> Identification of the micro-station compliance</h3>
|
||||
<div id="outline-container-org596cda7" class="outline-3">
|
||||
<h3 id="org596cda7"><span class="section-number-3">2.1</span> Identification of the micro-station compliance</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
We initialize all the stages with the default parameters.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod('type', 'compliance');
|
||||
<pre class="src src-matlab"> initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'compliance'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -269,20 +274,20 @@ initializeMicroHexapod('type', 'compliance');
|
||||
We put nothing on top of the micro-hexapod.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeAxisc('type', 'none');
|
||||
initializeMirror('type', 'none');
|
||||
initializeNanoHexapod('type', 'none');
|
||||
initializeSample('type', 'none');
|
||||
<pre class="src src-matlab"> initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
And we identify the dynamics from forces/torques applied on the micro-hexapod top platform to the motion of the micro-hexapod top platform at the same point.
|
||||
The diagonal element of the identified Micro-Station compliance matrix are shown in Figure <a href="#org6cfb14b">6</a>.
|
||||
The diagonal element of the identified Micro-Station compliance matrix are shown in Figure <a href="#orgb089d9e">6</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org6cfb14b" class="figure">
|
||||
<div id="orgb089d9e" class="figure">
|
||||
<p><img src="figs/opt_stiff_micro_station_compliance.png" alt="opt_stiff_micro_station_compliance.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Identified Compliance of the Micro-Station (<a href="./figs/opt_stiff_micro_station_compliance.png">png</a>, <a href="./figs/opt_stiff_micro_station_compliance.pdf">pdf</a>)</p>
|
||||
@ -290,8 +295,8 @@ The diagonal element of the identified Micro-Station compliance matrix are shown
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga44542b" class="outline-3">
|
||||
<h3 id="orga44542b"><span class="section-number-3">2.2</span> Identification of the dynamics with a rigid micro-station</h3>
|
||||
<div id="outline-container-org5e4de36" class="outline-3">
|
||||
<h3 id="org5e4de36"><span class="section-number-3">2.2</span> Identification of the dynamics with a rigid micro-station</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
We now identify the dynamics when the micro-station is rigid.
|
||||
@ -299,7 +304,7 @@ This is equivalent of identifying the dynamics of the nano-hexapod when fixed to
|
||||
We also choose the sample to be rigid and to have a mass of 10kg.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSample('type', 'rigid', 'mass', 10);
|
||||
<pre class="src src-matlab"> initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'mass'</span>, 10);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -307,14 +312,14 @@ We also choose the sample to be rigid and to have a mass of 10kg.
|
||||
As before, we identify the dynamics for the following actuator stiffnesses:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ks = logspace(3,9,7); % [N/m]
|
||||
<pre class="src src-matlab"> Ks = logspace(3,9,7); <span class="org-comment">% [N/m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org49d6b26" class="outline-3">
|
||||
<h3 id="org49d6b26"><span class="section-number-3">2.3</span> Identification of the dynamics with a flexible micro-station</h3>
|
||||
<div id="outline-container-orgf201667" class="outline-3">
|
||||
<h3 id="orgf201667"><span class="section-number-3">2.3</span> Identification of the dynamics with a flexible micro-station</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
We now initialize all the micro-station stages to be flexible.
|
||||
@ -322,43 +327,43 @@ And we identify the dynamics of the nano-hexapod.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org4c1ed79" class="outline-3">
|
||||
<h3 id="org4c1ed79"><span class="section-number-3">2.4</span> Obtained Dynamics</h3>
|
||||
<div id="outline-container-org64f02b9" class="outline-3">
|
||||
<h3 id="org64f02b9"><span class="section-number-3">2.4</span> Obtained Dynamics</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<p>
|
||||
We plot the change of dynamics due to the compliance of the Micro-Station.
|
||||
The solid curves are corresponding to the nano-hexapod without the micro-station, and the dashed curves with the micro-station:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#org71f5400">7</a>: from actuator force \(\tau\) to force sensor \(\tau_m\) (IFF plant)</li>
|
||||
<li>Figure <a href="#org32aef29">8</a>: from actuator force \(\tau\) to actuator relative displacement \(d\mathcal{L}\) (Decentralized positioning plant)</li>
|
||||
<li>Figure <a href="#org8a33fed">9</a>: from force in the task space \(\mathcal{F}_x\) to sample displacement \(\mathcal{X}_x\) (Centralized positioning plant)</li>
|
||||
<li>Figure <a href="#orge9bd08b">10</a>: from force in the task space \(\mathcal{F}_z\) to sample displacement \(\mathcal{X}_z\) (Centralized positioning plant)</li>
|
||||
<li>Figure <a href="#org64beb17">7</a>: from actuator force \(\tau\) to force sensor \(\tau_m\) (IFF plant)</li>
|
||||
<li>Figure <a href="#org8584419">8</a>: from actuator force \(\tau\) to actuator relative displacement \(d\mathcal{L}\) (Decentralized positioning plant)</li>
|
||||
<li>Figure <a href="#orgda822b6">9</a>: from force in the task space \(\mathcal{F}_x\) to sample displacement \(\mathcal{X}_x\) (Centralized positioning plant)</li>
|
||||
<li>Figure <a href="#org4775bbb">10</a>: from force in the task space \(\mathcal{F}_z\) to sample displacement \(\mathcal{X}_z\) (Centralized positioning plant)</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org71f5400" class="figure">
|
||||
<div id="org64beb17" class="figure">
|
||||
<p><img src="figs/opt_stiffness_micro_station_iff.png" alt="opt_stiffness_micro_station_iff.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Change of dynamics from actuator \(\tau\) to actuator force sensor \(\tau_m\) due to the micro-station compliance (<a href="./figs/opt_stiffness_micro_station_iff.png">png</a>, <a href="./figs/opt_stiffness_micro_station_iff.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org32aef29" class="figure">
|
||||
<div id="org8584419" class="figure">
|
||||
<p><img src="figs/opt_stiffness_micro_station_dvf.png" alt="opt_stiffness_micro_station_dvf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Change of dynamics from actuator force \(\tau\) to actuator displacement \(d\mathcal{L}\) due to the micro-station compliance (<a href="./figs/opt_stiffness_micro_station_dvf.png">png</a>, <a href="./figs/opt_stiffness_micro_station_dvf.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org8a33fed" class="figure">
|
||||
<div id="orgda822b6" class="figure">
|
||||
<p><img src="figs/opt_stiffness_micro_station_fx_dx.png" alt="opt_stiffness_micro_station_fx_dx.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Change of dynamics from force \(\mathcal{F}_x\) to displacement \(\mathcal{X}_x\) due to the micro-station compliance (<a href="./figs/opt_stiffness_micro_station_fx_dx.png">png</a>, <a href="./figs/opt_stiffness_micro_station_fx_dx.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orge9bd08b" class="figure">
|
||||
<div id="org4775bbb" class="figure">
|
||||
<p><img src="figs/opt_stiffness_micro_station_fz_dz.png" alt="opt_stiffness_micro_station_fz_dz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Change of dynamics from force \(\mathcal{F}_z\) to displacement \(\mathcal{X}_z\) due to the micro-station compliance (<a href="./figs/opt_stiffness_micro_station_fz_dz.png">png</a>, <a href="./figs/opt_stiffness_micro_station_fz_dz.pdf">pdf</a>)</p>
|
||||
@ -367,7 +372,7 @@ The solid curves are corresponding to the nano-hexapod without the micro-station
|
||||
</div>
|
||||
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<div class="important">
|
||||
<div class="important" id="org7bcc939">
|
||||
<p>
|
||||
The dynamics of the nano-hexapod is not affected by the micro-station dynamics (compliance) when the stiffness of the legs is less than \(10^6\ [N/m]\).
|
||||
When the nano-hexapod is stiff (\(k>10^7\ [N/m]\)), the compliance of the micro-station appears in the primary plant.
|
||||
@ -377,23 +382,23 @@ When the nano-hexapod is stiff (\(k>10^7\ [N/m]\)), the compliance of the micro-
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org19559b0" class="outline-2">
|
||||
<h2 id="org19559b0"><span class="section-number-2">3</span> Payload “Impedance” Effect</h2>
|
||||
<div id="outline-container-orgcd53751" class="outline-2">
|
||||
<h2 id="orgcd53751"><span class="section-number-2">3</span> Payload “Impedance” Effect</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
<a id="org2bd8390"></a>
|
||||
<a id="orge0b72c9"></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd20f43d" class="outline-3">
|
||||
<h3 id="orgd20f43d"><span class="section-number-3">3.1</span> Initialization</h3>
|
||||
<div id="outline-container-org19e3b05" class="outline-3">
|
||||
<h3 id="org19e3b05"><span class="section-number-3">3.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
We initialize all the stages with the default parameters.
|
||||
We don’t include disturbances in this model as it adds complexity to the simulations and does not alter the obtained dynamics. :exports none
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeDisturbances('enable', false);
|
||||
<pre class="src src-matlab"> initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -401,17 +406,17 @@ We don’t include disturbances in this model as it adds complexity to the s
|
||||
We set the controller type to Open-Loop, and we do not need to log any signal.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration('gravity', true);
|
||||
initializeController();
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
initializeReferences();
|
||||
<pre class="src src-matlab"> initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
|
||||
initializeController();
|
||||
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||
initializeReferences();
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org73f1c6e" class="outline-3">
|
||||
<h3 id="org73f1c6e"><span class="section-number-3">3.2</span> Identification of the dynamics while change the payload dynamics</h3>
|
||||
<div id="outline-container-orgc794f3b" class="outline-3">
|
||||
<h3 id="orgc794f3b"><span class="section-number-3">3.2</span> Identification of the dynamics while change the payload dynamics</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<p>
|
||||
We make the following change of payload dynamics:
|
||||
@ -426,8 +431,8 @@ We make the following change of payload dynamics:
|
||||
We identify the dynamics for the following payload masses <code>Ms</code> and nano-hexapod leg’s stiffnesses <code>Ks</code>:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ms = [1, 20, 50]; % [Kg]
|
||||
Ks = logspace(3,9,7); % [N/m]
|
||||
<pre class="src src-matlab"> Ms = [1, 20, 50]; <span class="org-comment">% [Kg]</span>
|
||||
Ks = logspace(3,9,7); <span class="org-comment">% [N/m]</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -435,29 +440,29 @@ Ks = logspace(3,9,7); % [N/m]
|
||||
We then identify the dynamics for the following payload resonance frequencies <code>Fs</code>:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Fs = [50, 200, 500]; % [Hz]
|
||||
<pre class="src src-matlab"> Fs = [50, 200, 500]; <span class="org-comment">% [Hz]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd7a519b" class="outline-3">
|
||||
<h3 id="orgd7a519b"><span class="section-number-3">3.3</span> Change of dynamics for the primary controller</h3>
|
||||
<div id="outline-container-orgac78d43" class="outline-3">
|
||||
<h3 id="orgac78d43"><span class="section-number-3">3.3</span> Change of dynamics for the primary controller</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
</div>
|
||||
<div id="outline-container-orgb44d421" class="outline-4">
|
||||
<h4 id="orgb44d421"><span class="section-number-4">3.3.1</span> Frequency variation</h4>
|
||||
<div id="outline-container-org7a6c6e0" class="outline-4">
|
||||
<h4 id="org7a6c6e0"><span class="section-number-4">3.3.1</span> Frequency variation</h4>
|
||||
<div class="outline-text-4" id="text-3-3-1">
|
||||
<p>
|
||||
We here compare the dynamics for the same payload mass, but different stiffness resulting in different resonance frequency of the payload:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#org00db693">11</a>: dynamics from a force \(\mathcal{F}_z\) applied in the task space in the vertical direction to the vertical displacement of the sample \(\mathcal{X}_z\) for both a very soft and a very stiff nano-hexapod.</li>
|
||||
<li>Figure <a href="#org76716ad">12</a>: same, but for all tested nano-hexapod stiffnesses</li>
|
||||
<li>Figure <a href="#org6a56c32">11</a>: dynamics from a force \(\mathcal{F}_z\) applied in the task space in the vertical direction to the vertical displacement of the sample \(\mathcal{X}_z\) for both a very soft and a very stiff nano-hexapod.</li>
|
||||
<li>Figure <a href="#orgabb9349">12</a>: same, but for all tested nano-hexapod stiffnesses</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
We can see two mass lines for the soft nano-hexapod (Figure <a href="#org00db693">11</a>):
|
||||
We can see two mass lines for the soft nano-hexapod (Figure <a href="#org6a56c32">11</a>):
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>The first mass line corresponds to \(\frac{1}{(m_n + m_p)s^2}\) where \(m_p = 10\ [kg]\) is the mass of the payload and \(m_n = 15\ [Kg]\) is the mass of the nano-hexapod top platform and attached mirror</li>
|
||||
@ -466,14 +471,14 @@ We can see two mass lines for the soft nano-hexapod (Figure <a href="#org00db693
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org00db693" class="figure">
|
||||
<div id="org6a56c32" class="figure">
|
||||
<p><img src="figs/opt_stiffness_payload_freq_fz_dz.png" alt="opt_stiffness_payload_freq_fz_dz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload resonance frequency, both for a soft nano-hexapod and a stiff nano-hexapod</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org76716ad" class="figure">
|
||||
<div id="orgabb9349" class="figure">
|
||||
<p><img src="figs/opt_stiffness_payload_freq_all.png" alt="opt_stiffness_payload_freq_all.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload resonance frequency (<a href="./figs/opt_stiffness_payload_freq_all.png">png</a>, <a href="./figs/opt_stiffness_payload_freq_all.pdf">pdf</a>)</p>
|
||||
@ -481,15 +486,15 @@ We can see two mass lines for the soft nano-hexapod (Figure <a href="#org00db693
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfc270b0" class="outline-4">
|
||||
<h4 id="orgfc270b0"><span class="section-number-4">3.3.2</span> Mass variation</h4>
|
||||
<div id="outline-container-org9414851" class="outline-4">
|
||||
<h4 id="org9414851"><span class="section-number-4">3.3.2</span> Mass variation</h4>
|
||||
<div class="outline-text-4" id="text-3-3-2">
|
||||
<p>
|
||||
We here compare the dynamics for different payload mass with the same resonance frequency (100Hz):
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#orga1343a7">13</a>: dynamics from a force \(\mathcal{F}_z\) applied in the task space in the vertical direction to the vertical displacement of the sample \(\mathcal{X}_z\) for both a very soft and a very stiff nano-hexapod.</li>
|
||||
<li>Figure <a href="#org35aebae">14</a>: same, but for all tested nano-hexapod stiffnesses</li>
|
||||
<li>Figure <a href="#orgc989931">13</a>: dynamics from a force \(\mathcal{F}_z\) applied in the task space in the vertical direction to the vertical displacement of the sample \(\mathcal{X}_z\) for both a very soft and a very stiff nano-hexapod.</li>
|
||||
<li>Figure <a href="#orgb40b713">14</a>: same, but for all tested nano-hexapod stiffnesses</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
@ -503,14 +508,14 @@ We can see here that for the soft nano-hexapod:
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="orga1343a7" class="figure">
|
||||
<div id="orgc989931" class="figure">
|
||||
<p><img src="figs/opt_stiffness_payload_mass_fz_dz.png" alt="opt_stiffness_payload_mass_fz_dz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload mass, both for a soft nano-hexapod and a stiff nano-hexapod</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org35aebae" class="figure">
|
||||
<div id="orgb40b713" class="figure">
|
||||
<p><img src="figs/opt_stiffness_payload_mass_all.png" alt="opt_stiffness_payload_mass_all.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload mass (<a href="./figs/opt_stiffness_payload_mass_all.png">png</a>, <a href="./figs/opt_stiffness_payload_mass_all.pdf">pdf</a>)</p>
|
||||
@ -518,11 +523,11 @@ We can see here that for the soft nano-hexapod:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org118f0c2" class="outline-4">
|
||||
<h4 id="org118f0c2"><span class="section-number-4">3.3.3</span> Total variation</h4>
|
||||
<div id="outline-container-org41d9c49" class="outline-4">
|
||||
<h4 id="org41d9c49"><span class="section-number-4">3.3.3</span> Total variation</h4>
|
||||
<div class="outline-text-4" id="text-3-3-3">
|
||||
<p>
|
||||
We now plot the total change of dynamics due to change of the payload (Figures <a href="#orgf16d005">15</a> and <a href="#org73b8b8a">16</a>):
|
||||
We now plot the total change of dynamics due to change of the payload (Figures <a href="#org8c9710b">15</a> and <a href="#orgf495e2a">16</a>):
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>mass from 1kg to 50kg</li>
|
||||
@ -530,14 +535,14 @@ We now plot the total change of dynamics due to change of the payload (Figures <
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="orgf16d005" class="figure">
|
||||
<div id="org8c9710b" class="figure">
|
||||
<p><img src="figs/opt_stiffness_payload_impedance_all_fz_dz.png" alt="opt_stiffness_payload_impedance_all_fz_dz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload dynamics, both for a soft nano-hexapod and a stiff nano-hexapod (<a href="./figs/opt_stiffness_payload_impedance_all_fz_dz.png">png</a>, <a href="./figs/opt_stiffness_payload_impedance_all_fz_dz.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org73b8b8a" class="figure">
|
||||
<div id="orgf495e2a" class="figure">
|
||||
<p><img src="figs/opt_stiffness_payload_impedance_fz_dz.png" alt="opt_stiffness_payload_impedance_fz_dz.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 16: </span>Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload dynamics, both for a soft nano-hexapod and a stiff nano-hexapod (<a href="./figs/opt_stiffness_payload_impedance_fz_dz.png">png</a>, <a href="./figs/opt_stiffness_payload_impedance_fz_dz.pdf">pdf</a>)</p>
|
||||
@ -547,7 +552,7 @@ We now plot the total change of dynamics due to change of the payload (Figures <
|
||||
</div>
|
||||
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<div class="important">
|
||||
<div class="important" id="org2b8d4da">
|
||||
<p>
|
||||
|
||||
</p>
|
||||
@ -556,8 +561,8 @@ We now plot the total change of dynamics due to change of the payload (Figures <
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org973d2e3" class="outline-2">
|
||||
<h2 id="org973d2e3"><span class="section-number-2">4</span> Total Change of dynamics</h2>
|
||||
<div id="outline-container-orgcfb28e7" class="outline-2">
|
||||
<h2 id="orgcfb28e7"><span class="section-number-2">4</span> Total Change of dynamics</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
We now consider the total change of nano-hexapod dynamics due to:
|
||||
@ -572,53 +577,53 @@ We now consider the total change of nano-hexapod dynamics due to:
|
||||
The obtained dynamics are shown:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Figure <a href="#orgcf64eb6">17</a> for a stiffness \(k = 10^3\ [N/m]\)</li>
|
||||
<li>Figure <a href="#org175cc57">18</a> for a stiffness \(k = 10^5\ [N/m]\)</li>
|
||||
<li>Figure <a href="#org998cf87">19</a> for a stiffness \(k = 10^7\ [N/m]\)</li>
|
||||
<li>Figure <a href="#orgd3db91c">20</a> for a stiffness \(k = 10^9\ [N/m]\)</li>
|
||||
<li>Figure <a href="#org8f6818d">17</a> for a stiffness \(k = 10^3\ [N/m]\)</li>
|
||||
<li>Figure <a href="#orga39b683">18</a> for a stiffness \(k = 10^5\ [N/m]\)</li>
|
||||
<li>Figure <a href="#orga5e35c4">19</a> for a stiffness \(k = 10^7\ [N/m]\)</li>
|
||||
<li>Figure <a href="#org8d3b0db">20</a> for a stiffness \(k = 10^9\ [N/m]\)</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
And finally, in Figures <a href="#orge05feb5">21</a> and <a href="#org17c5c95">22</a> are shown an animation of the change of dynamics with the nano-hexapod’s stiffness.
|
||||
And finally, in Figures <a href="#org726c0f3">21</a> and <a href="#orgec89c0c">22</a> are shown an animation of the change of dynamics with the nano-hexapod’s stiffness.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgcf64eb6" class="figure">
|
||||
<div id="org8f6818d" class="figure">
|
||||
<p><img src="figs/opt_stiffness_plant_dynamics_fx_dx_k_1e3.png" alt="opt_stiffness_plant_dynamics_fx_dx_k_1e3.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 17: </span>Total variation of the dynamics from \(\mathcal{F}_x\) to \(\mathcal{X}_x\). Nano-hexapod leg’s stiffness is equal to \(k = 10^3\ [N/m]\) (<a href="./figs/opt_stiffness_plant_dynamics_fx_dx_k_1e3.png">png</a>, <a href="./figs/opt_stiffness_plant_dynamics_fx_dx_k_1e3.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org175cc57" class="figure">
|
||||
<div id="orga39b683" class="figure">
|
||||
<p><img src="figs/opt_stiffness_plant_dynamics_fx_dx_k_1e5.png" alt="opt_stiffness_plant_dynamics_fx_dx_k_1e5.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 18: </span>Total variation of the dynamics from \(\mathcal{F}_x\) to \(\mathcal{X}_x\). Nano-hexapod leg’s stiffness is equal to \(k = 10^5\ [N/m]\) (<a href="./figs/opt_stiffness_plant_dynamics_fx_dx_k_1e5.png">png</a>, <a href="./figs/opt_stiffness_plant_dynamics_fx_dx_k_1e5.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org998cf87" class="figure">
|
||||
<div id="orga5e35c4" class="figure">
|
||||
<p><img src="figs/opt_stiffness_plant_dynamics_fx_dx_k_1e7.png" alt="opt_stiffness_plant_dynamics_fx_dx_k_1e7.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 19: </span>Total variation of the dynamics from \(\mathcal{F}_x\) to \(\mathcal{X}_x\). Nano-hexapod leg’s stiffness is equal to \(k = 10^7\ [N/m]\) (<a href="./figs/opt_stiffness_plant_dynamics_fx_dx_k_1e7.png">png</a>, <a href="./figs/opt_stiffness_plant_dynamics_fx_dx_k_1e7.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgd3db91c" class="figure">
|
||||
<div id="org8d3b0db" class="figure">
|
||||
<p><img src="figs/opt_stiffness_plant_dynamics_fx_dx_k_1e9.png" alt="opt_stiffness_plant_dynamics_fx_dx_k_1e9.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 20: </span>Total variation of the dynamics from \(\mathcal{F}_x\) to \(\mathcal{X}_x\). Nano-hexapod leg’s stiffness is equal to \(k = 10^9\ [N/m]\) (<a href="./figs/opt_stiffness_plant_dynamics_fx_dx_k_1e9.png">png</a>, <a href="./figs/opt_stiffness_plant_dynamics_fx_dx_k_1e9.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orge05feb5" class="figure">
|
||||
<div id="org726c0f3" class="figure">
|
||||
<p><img src="figs/opt_stiffness_plant_dynamics_task_space.gif" alt="opt_stiffness_plant_dynamics_task_space.gif" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 21: </span>Variability of the dynamics from \(\mathcal{F}_x\) to \(\mathcal{X}_x\) with varying nano-hexapod stiffness</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org17c5c95" class="figure">
|
||||
<div id="orgec89c0c" class="figure">
|
||||
<p><img src="figs/opt_stiffness_plant_dynamics_task_space_colors.gif" alt="opt_stiffness_plant_dynamics_task_space_colors.gif" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 22: </span>Variability of the dynamics from \(\mathcal{F}_x\) to \(\mathcal{X}_x\) with varying nano-hexapod stiffness</p>
|
||||
@ -628,7 +633,7 @@ And finally, in Figures <a href="#orge05feb5">21</a> and <a href="#org17c5c95">2
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-20 mer. 15:49</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,66 +1,70 @@
|
||||
<?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-05-05 mar. 10:33 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Effect of Uncertainty on the payload’s dynamics on the isolation platform dynamics</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Effect of Uncertainty on the payload’s dynamics on the isolation platform dynamics</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgcc5f0ec">1. Simple Introductory Example</a>
|
||||
<li><a href="#org4c816e0">1. Simple Introductory Example</a>
|
||||
<ul>
|
||||
<li><a href="#org5ed1517">1.1. Equations of motion</a></li>
|
||||
<li><a href="#org4efccbf">1.2. Initialization of the payload dynamics</a></li>
|
||||
<li><a href="#orgb400ca3">1.3. Initialization of the isolation platform</a></li>
|
||||
<li><a href="#orgd0dd88b">1.4. Comparison</a></li>
|
||||
<li><a href="#org3f697cc">1.5. Conclusion</a></li>
|
||||
<li><a href="#orgaf607f3">1.1. Equations of motion</a></li>
|
||||
<li><a href="#org08d6c58">1.2. Initialization of the payload dynamics</a></li>
|
||||
<li><a href="#orgd871eaf">1.3. Initialization of the isolation platform</a></li>
|
||||
<li><a href="#org28efeb7">1.4. Comparison</a></li>
|
||||
<li><a href="#org95c8f67">1.5. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org1f8e63e">2. Generalization to arbitrary dynamics</a>
|
||||
<li><a href="#org7c75d19">2. Generalization to arbitrary dynamics</a>
|
||||
<ul>
|
||||
<li><a href="#orgc4fa63e">2.1. Introduction</a></li>
|
||||
<li><a href="#org3367211">2.2. Equations of motion</a></li>
|
||||
<li><a href="#orge217a33">2.3. Impedance \(G^\prime(s)\) of a mass-spring-damper payload</a></li>
|
||||
<li><a href="#org0ee44da">2.4. First Analytical analysis</a></li>
|
||||
<li><a href="#orgfe81c1c">2.5. Impedance of the Payload and Dynamical Uncertainty</a></li>
|
||||
<li><a href="#org5e0366d">2.6. Equivalent Inverse Multiplicative Uncertainty</a></li>
|
||||
<li><a href="#orgcc0c290">2.7. Effect of the Isolation platform Stiffness</a></li>
|
||||
<li><a href="#org1466bd9">2.8. Reduce the Uncertainty on the plant</a>
|
||||
<li><a href="#org5080024">2.1. Introduction</a></li>
|
||||
<li><a href="#org1b0c4a4">2.2. Equations of motion</a></li>
|
||||
<li><a href="#org0505562">2.3. Impedance \(G^\prime(s)\) of a mass-spring-damper payload</a></li>
|
||||
<li><a href="#orge0f3a40">2.4. First Analytical analysis</a></li>
|
||||
<li><a href="#orgc1a00ca">2.5. Impedance of the Payload and Dynamical Uncertainty</a></li>
|
||||
<li><a href="#org456b213">2.6. Equivalent Inverse Multiplicative Uncertainty</a></li>
|
||||
<li><a href="#org1d2455c">2.7. Effect of the Isolation platform Stiffness</a></li>
|
||||
<li><a href="#org1321ab2">2.8. Reduce the Uncertainty on the plant</a>
|
||||
<ul>
|
||||
<li><a href="#org4be463f">2.8.1. Effect of the platform’s stiffness \(k\)</a></li>
|
||||
<li><a href="#org4c45fb5">2.8.2. Effect of the platform’s damping \(c\)</a></li>
|
||||
<li><a href="#org9086831">2.8.3. Effect of the platform’s mass \(m\)</a></li>
|
||||
<li><a href="#org7519de0">2.8.1. Effect of the platform’s stiffness \(k\)</a></li>
|
||||
<li><a href="#org2cfe073">2.8.2. Effect of the platform’s damping \(c\)</a></li>
|
||||
<li><a href="#org20f04de">2.8.3. Effect of the platform’s mass \(m\)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org272e76a">2.9. Conclusion</a></li>
|
||||
<li><a href="#orgff05731">2.9. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -84,18 +88,18 @@ The goal is to study:
|
||||
Two models are made to study these effects:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>In section <a href="#org971d11c">1</a>, simple mass-spring-damper systems are chosen to model both the isolation platform and the payload</li>
|
||||
<li>In section <a href="#org7065358">2</a>, we consider arbitrary payload dynamics with multiplicative input uncertainty to study the unmodelled dynamics of the payload</li>
|
||||
<li>In section <a href="#org752f885">1</a>, simple mass-spring-damper systems are chosen to model both the isolation platform and the payload</li>
|
||||
<li>In section <a href="#org1cfcec8">2</a>, we consider arbitrary payload dynamics with multiplicative input uncertainty to study the unmodelled dynamics of the payload</li>
|
||||
</ul>
|
||||
|
||||
<div id="outline-container-orgcc5f0ec" class="outline-2">
|
||||
<h2 id="orgcc5f0ec"><span class="section-number-2">1</span> Simple Introductory Example</h2>
|
||||
<div id="outline-container-org4c816e0" class="outline-2">
|
||||
<h2 id="org4c816e0"><span class="section-number-2">1</span> Simple Introductory Example</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="org971d11c"></a>
|
||||
<a id="org752f885"></a>
|
||||
</p>
|
||||
<p>
|
||||
Let’s consider the system shown in Figure <a href="#orgaa77a57">1</a> consisting of:
|
||||
Let’s consider the system shown in Figure <a href="#orge9db1fc">1</a> consisting of:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>An <b>isolation platform</b> represented by a mass \(m\), a stiffness \(k\) and a dashpot \(c\) and an actuator \(F\)</li>
|
||||
@ -107,18 +111,18 @@ The goal is to stabilize \(x\) using \(F\) in spite of uncertainty on the payloa
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgaa77a57" class="figure">
|
||||
<div id="orge9db1fc" class="figure">
|
||||
<p><img src="figs/2dof_system_stiffness_uncertainty_payload.png" alt="2dof_system_stiffness_uncertainty_payload.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Two degrees-of-freedom system</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5ed1517" class="outline-3">
|
||||
<h3 id="org5ed1517"><span class="section-number-3">1.1</span> Equations of motion</h3>
|
||||
<div id="outline-container-orgaf607f3" class="outline-3">
|
||||
<h3 id="orgaf607f3"><span class="section-number-3">1.1</span> Equations of motion</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
If we write the equation of motion of the system in Figure <a href="#orgaa77a57">1</a>, we obtain:
|
||||
If we write the equation of motion of the system in Figure <a href="#orge9db1fc">1</a>, we obtain:
|
||||
</p>
|
||||
\begin{align}
|
||||
ms^2 x &= F - (cs + k) x + (c^\prime s + k^\prime) (x^\prime - x) \\
|
||||
@ -129,14 +133,14 @@ If we write the equation of motion of the system in Figure <a href="#orgaa77a57"
|
||||
After eliminating \(x^\prime\), we obtain:
|
||||
</p>
|
||||
\begin{equation}
|
||||
\label{orge5d69a3}
|
||||
\label{orgfd11867}
|
||||
\frac{x}{F} = \frac{m^\prime s^2 + c^\prime s + k^\prime}{(ms^2 + cs + k)(m^\prime s^2 + c^\prime s + k^\prime) + m^\prime s^2(c^\prime s + k^\prime)}
|
||||
\end{equation}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4efccbf" class="outline-3">
|
||||
<h3 id="org4efccbf"><span class="section-number-3">1.2</span> Initialization of the payload dynamics</h3>
|
||||
<div id="outline-container-org08d6c58" class="outline-3">
|
||||
<h3 id="org08d6c58"><span class="section-number-3">1.2</span> Initialization of the payload dynamics</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
Let the payload have:
|
||||
@ -148,12 +152,12 @@ Let the payload have:
|
||||
</ul>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">mpi = 50;
|
||||
kpi = 5e6;
|
||||
cpi = 3e3;
|
||||
<pre class="src src-matlab"> mpi = 50;
|
||||
kpi = 5e6;
|
||||
cpi = 3e3;
|
||||
|
||||
kpi = (2*pi*50)^2*mpi;
|
||||
cpi = 0.2*sqrt(kpi*mpi);
|
||||
kpi = (2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>50)<span class="org-type">^</span>2<span class="org-type">*</span>mpi;
|
||||
cpi = 0.2<span class="org-type">*</span>sqrt(kpi<span class="org-type">*</span>mpi);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -161,14 +165,14 @@ cpi = 0.2*sqrt(kpi*mpi);
|
||||
Let’s also consider some uncertainty in those parameters:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">mp = ureal('m', mpi, 'Range', [1, 100]);
|
||||
cp = ureal('c', cpi, 'Percentage', 30);
|
||||
kp = ureal('k', kpi, 'Percentage', 30);
|
||||
<pre class="src src-matlab"> mp = ureal(<span class="org-string">'m'</span>, mpi, <span class="org-string">'Range'</span>, [1, 100]);
|
||||
cp = ureal(<span class="org-string">'c'</span>, cpi, <span class="org-string">'Percentage'</span>, 30);
|
||||
kp = ureal(<span class="org-string">'k'</span>, kpi, <span class="org-string">'Percentage'</span>, 30);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The compliance of the payload without the isolation platform is \(\frac{1}{m^\prime s^2 + c^\prime s + k^\prime}\) and its bode plot is shown in Figure <a href="#org3c89797">2</a>.
|
||||
The compliance of the payload without the isolation platform is \(\frac{1}{m^\prime s^2 + c^\prime s + k^\prime}\) and its bode plot is shown in Figure <a href="#orgfaa9b30">2</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -176,7 +180,7 @@ One can see that the payload has a resonance frequency of \(\omega_0^\prime = 25
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org3c89797" class="figure">
|
||||
<div id="orgfaa9b30" class="figure">
|
||||
<p><img src="figs/nominal_payload_compliance_dynamics.png" alt="nominal_payload_compliance_dynamics.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Nominal compliance of the payload (<a href="./figs/nominal_payload_compliance_dynamics.png">png</a>, <a href="./figs/nominal_payload_compliance_dynamics.pdf">pdf</a>)</p>
|
||||
@ -184,14 +188,14 @@ One can see that the payload has a resonance frequency of \(\omega_0^\prime = 25
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb400ca3" class="outline-3">
|
||||
<h3 id="orgb400ca3"><span class="section-number-3">1.3</span> Initialization of the isolation platform</h3>
|
||||
<div id="outline-container-orgd871eaf" class="outline-3">
|
||||
<h3 id="orgd871eaf"><span class="section-number-3">1.3</span> Initialization of the isolation platform</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
Let’s first fix the mass of the isolation platform:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">m = 10;
|
||||
<pre class="src src-matlab"> m = 10;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -206,15 +210,15 @@ And we generate three isolation platforms:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd0dd88b" class="outline-3">
|
||||
<h3 id="orgd0dd88b"><span class="section-number-3">1.4</span> Comparison</h3>
|
||||
<div id="outline-container-org28efeb7" class="outline-3">
|
||||
<h3 id="org28efeb7"><span class="section-number-3">1.4</span> Comparison</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<p>
|
||||
The obtained dynamics from \(F\) to \(x\) for the three isolation platform are shown in Figure <a href="#org1a62889">3</a>.
|
||||
The obtained dynamics from \(F\) to \(x\) for the three isolation platform are shown in Figure <a href="#org57a4827">3</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org1a62889" class="figure">
|
||||
<div id="org57a4827" class="figure">
|
||||
<p><img src="figs/plant_dynamics_uncertainty_payload_variability.png" alt="plant_dynamics_uncertainty_payload_variability.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Obtained plant for the three isolation platforms considered (<a href="./figs/plant_dynamics_uncertainty_payload_variability.png">png</a>, <a href="./figs/plant_dynamics_uncertainty_payload_variability.pdf">pdf</a>)</p>
|
||||
@ -222,10 +226,10 @@ The obtained dynamics from \(F\) to \(x\) for the three isolation platform are s
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3f697cc" class="outline-3">
|
||||
<h3 id="org3f697cc"><span class="section-number-3">1.5</span> Conclusion</h3>
|
||||
<div id="outline-container-org95c8f67" class="outline-3">
|
||||
<h3 id="org95c8f67"><span class="section-number-3">1.5</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-1-5">
|
||||
<div class="important">
|
||||
<div class="important" id="orgae2c60b">
|
||||
<p>
|
||||
The stiff platform dynamics does not seems to depend on the dynamics of the payload.
|
||||
</p>
|
||||
@ -235,21 +239,21 @@ The stiff platform dynamics does not seems to depend on the dynamics of the payl
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1f8e63e" class="outline-2">
|
||||
<h2 id="org1f8e63e"><span class="section-number-2">2</span> Generalization to arbitrary dynamics</h2>
|
||||
<div id="outline-container-org7c75d19" class="outline-2">
|
||||
<h2 id="org7c75d19"><span class="section-number-2">2</span> Generalization to arbitrary dynamics</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="org7065358"></a>
|
||||
<a id="org1cfcec8"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-orgc4fa63e" class="outline-3">
|
||||
<h3 id="orgc4fa63e"><span class="section-number-3">2.1</span> Introduction</h3>
|
||||
<div id="outline-container-org5080024" class="outline-3">
|
||||
<h3 id="org5080024"><span class="section-number-3">2.1</span> Introduction</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
Let’s now consider a general payload described by its <b>impedance</b> \(G^\prime(s) = \frac{F^\prime}{x}\) as shown in Figure <a href="#orgb54b79a">4</a>.
|
||||
Let’s now consider a general payload described by its <b>impedance</b> \(G^\prime(s) = \frac{F^\prime}{x}\) as shown in Figure <a href="#org8c5577f">4</a>.
|
||||
</p>
|
||||
|
||||
<div class="note">
|
||||
<div class="note" id="org70c39e9">
|
||||
<p>
|
||||
Note here that we use the term <i>impedance</i>, however, the mechanical impedance is usually defined as the ratio of the force over the velocity \(F^\prime/\dot{x}\). We should refer to <i>resistance</i> instead of <i>impedance</i>.
|
||||
</p>
|
||||
@ -257,17 +261,17 @@ Note here that we use the term <i>impedance</i>, however, the mechanical impedan
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgb54b79a" class="figure">
|
||||
<div id="org8c5577f" class="figure">
|
||||
<p><img src="figs/general_payload_impedance.png" alt="general_payload_impedance.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>General support</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Now let’s consider the system consisting of a mass-spring-system (the isolation platform) supporting the general payload as shown in Figure <a href="#orga07f362">5</a>.
|
||||
Now let’s consider the system consisting of a mass-spring-system (the isolation platform) supporting the general payload as shown in Figure <a href="#orgdc750e6">5</a>.
|
||||
</p>
|
||||
|
||||
<div id="orga07f362" class="figure">
|
||||
<div id="orgdc750e6" class="figure">
|
||||
<p><img src="figs/general_payload_with_isolator.png" alt="general_payload_with_isolator.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Mass-Spring-Damper (isolation platform) supporting a general payload</p>
|
||||
@ -275,8 +279,8 @@ Now let’s consider the system consisting of a mass-spring-system (the isol
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3367211" class="outline-3">
|
||||
<h3 id="org3367211"><span class="section-number-3">2.2</span> Equations of motion</h3>
|
||||
<div id="outline-container-org1b0c4a4" class="outline-3">
|
||||
<h3 id="org1b0c4a4"><span class="section-number-3">2.2</span> Equations of motion</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
We have to following equations of motion:
|
||||
@ -290,9 +294,9 @@ We have to following equations of motion:
|
||||
And by eliminating \(F^\prime\), we find the plant dynamics \(G(s) = \frac{x}{F}\).
|
||||
</p>
|
||||
|
||||
<div class="important">
|
||||
<div class="important" id="org7e9adf1">
|
||||
\begin{equation}
|
||||
\label{org8b9a6a7}
|
||||
\label{org11f0d43}
|
||||
\frac{x}{F} = \frac{1}{ms^2 + cs + k + G^\prime(s)}
|
||||
\end{equation}
|
||||
|
||||
@ -308,11 +312,11 @@ We can learn few things about the obtained transfer function:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge217a33" class="outline-3">
|
||||
<h3 id="orge217a33"><span class="section-number-3">2.3</span> Impedance \(G^\prime(s)\) of a mass-spring-damper payload</h3>
|
||||
<div id="outline-container-org0505562" class="outline-3">
|
||||
<h3 id="org0505562"><span class="section-number-3">2.3</span> Impedance \(G^\prime(s)\) of a mass-spring-damper payload</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
In order to verify that the formula is correct, let’s take the same mass-spring-damper system used in the system shown in Figure <a href="#orgaa77a57">1</a>:
|
||||
In order to verify that the formula is correct, let’s take the same mass-spring-damper system used in the system shown in Figure <a href="#orge9db1fc">1</a>:
|
||||
</p>
|
||||
\begin{align*}
|
||||
m^\prime s^2 x^\prime &= (x - x^\prime) (c^\prime s + k^\prime) \\
|
||||
@ -322,7 +326,7 @@ In order to verify that the formula is correct, let’s take the same mass-s
|
||||
<p>
|
||||
By eliminating \(x^\prime\) of the equations, we obtain:
|
||||
</p>
|
||||
<div class="important">
|
||||
<div class="important" id="orgb96f8e8">
|
||||
\begin{equation}
|
||||
G^\prime(s) = \frac{F^\prime}{x} = \frac{m^\prime s^2 (c^\prime s + k)}{m^\prime s^2 + c^\prime s + k^\prime} \label{eq:impedance_mass_spring_damper}
|
||||
\end{equation}
|
||||
@ -343,11 +347,11 @@ And we obtain
|
||||
\end{align*}
|
||||
|
||||
<p>
|
||||
Which is the same transfer function that was obtained in section <a href="#org971d11c">1</a> (Eq. \eqref{eq:plant_simple_system}).
|
||||
Which is the same transfer function that was obtained in section <a href="#org752f885">1</a> (Eq. \eqref{eq:plant_simple_system}).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The impedance of the mass-spring-damper system is shown in Figure <a href="#org61b9db6">6</a>.
|
||||
The impedance of the mass-spring-damper system is shown in Figure <a href="#orgb67a7fe">6</a>.
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Before the resonance frequency \(\omega_0^\prime\), the impedance follows the mass line</li>
|
||||
@ -356,7 +360,7 @@ The impedance of the mass-spring-damper system is shown in Figure <a href="#org6
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org61b9db6" class="figure">
|
||||
<div id="orgb67a7fe" class="figure">
|
||||
<p><img src="figs/example_impedance_mass_spring_damper.png" alt="example_impedance_mass_spring_damper.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Example of the impedance of a mass-spring-damper system (<a href="./figs/example_impedance_mass_spring_damper.png">png</a>, <a href="./figs/example_impedance_mass_spring_damper.pdf">pdf</a>)</p>
|
||||
@ -364,8 +368,8 @@ The impedance of the mass-spring-damper system is shown in Figure <a href="#org6
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0ee44da" class="outline-3">
|
||||
<h3 id="org0ee44da"><span class="section-number-3">2.4</span> First Analytical analysis</h3>
|
||||
<div id="outline-container-orge0f3a40" class="outline-3">
|
||||
<h3 id="orge0f3a40"><span class="section-number-3">2.4</span> First Analytical analysis</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<p>
|
||||
To summarize, we consider:
|
||||
@ -421,7 +425,7 @@ Until \(\omega_0^\prime\), we have \(m^\prime \ll m\) which is the same conditio
|
||||
Above \(\omega_0^\prime\), we obtain \(|jc^\prime \omega + k| \ll m \omega^2\).
|
||||
</p>
|
||||
|
||||
<div class="important">
|
||||
<div class="important" id="orgc2589fd">
|
||||
<p>
|
||||
When using a soft isolation platform and a stiff payload such that the payload resonate above the first resonance of the isolation platform, the mass of the payload should be small compared to the isolation platform mass in order to not disturb the dynamics of the isolation platform.
|
||||
</p>
|
||||
@ -430,8 +434,8 @@ When using a soft isolation platform and a stiff payload such that the payload r
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfe81c1c" class="outline-3">
|
||||
<h3 id="orgfe81c1c"><span class="section-number-3">2.5</span> Impedance of the Payload and Dynamical Uncertainty</h3>
|
||||
<div id="outline-container-orgc1a00ca" class="outline-3">
|
||||
<h3 id="orgc1a00ca"><span class="section-number-3">2.5</span> Impedance of the Payload and Dynamical Uncertainty</h3>
|
||||
<div class="outline-text-3" id="text-2-5">
|
||||
<p>
|
||||
We model the payload by a mass-spring-damper model with some uncertainty.
|
||||
@ -451,16 +455,16 @@ The main resonance of the payload is then \(\omega^\prime = \sqrt{\frac{m^\prime
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">m0 = 10;
|
||||
c0 = 3e2;
|
||||
k0 = 5e5;
|
||||
<pre class="src src-matlab"> m0 = 10;
|
||||
c0 = 3e2;
|
||||
k0 = 5e5;
|
||||
|
||||
Gp0 = (m0*s^2 * (c0*s + k0))/(m0*s^2 + c0*s + k0);
|
||||
Gp0 = (m0<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">*</span> (c0<span class="org-type">*</span>s <span class="org-type">+</span> k0))<span class="org-type">/</span>(m0<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c0<span class="org-type">*</span>s <span class="org-type">+</span> k0);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Let’s represent the uncertainty on the impedance of the payload by a multiplicative uncertainty (Figure <a href="#org880bb53">7</a>):
|
||||
Let’s represent the uncertainty on the impedance of the payload by a multiplicative uncertainty (Figure <a href="#org6a86e10">7</a>):
|
||||
\[ G^\prime(s) = G_0^\prime(s)(1 + w_I^\prime(s)\Delta_I(s)) \quad |\Delta_I(j\omega)| < 1\ \forall \omega \]
|
||||
</p>
|
||||
|
||||
@ -469,7 +473,7 @@ This could represent <b>unmodelled dynamics</b> or unknown parameters of the pay
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org880bb53" class="figure">
|
||||
<div id="org6a86e10" class="figure">
|
||||
<p><img src="figs/input_uncertainty_set.png" alt="input_uncertainty_set.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Input Multiplicative Uncertainty</p>
|
||||
@ -485,11 +489,11 @@ where \(r_0\) is the relative uncertainty at steady-state, \(1/\tau\) is the fre
|
||||
The parameters are defined below.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">r0 = 0.5;
|
||||
tau = 1/(50*2*pi);
|
||||
rinf = 10;
|
||||
<pre class="src src-matlab"> r0 = 0.5;
|
||||
tau = 1<span class="org-type">/</span>(50<span class="org-type">*</span>2<span class="org-type">*</span><span class="org-constant">pi</span>);
|
||||
rinf = 10;
|
||||
|
||||
wI = (tau*s + r0)/((tau/rinf)*s + 1);
|
||||
wI = (tau<span class="org-type">*</span>s <span class="org-type">+</span> r0)<span class="org-type">/</span>((tau<span class="org-type">/</span>rinf)<span class="org-type">*</span>s <span class="org-type">+</span> 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -497,7 +501,7 @@ wI = (tau*s + r0)/((tau/rinf)*s + 1);
|
||||
We then generate a complex \(\Delta\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">DeltaI = ucomplex('A',0);
|
||||
<pre class="src src-matlab"> DeltaI = ucomplex(<span class="org-string">'A'</span>,0);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -505,16 +509,16 @@ We then generate a complex \(\Delta\).
|
||||
We generate the uncertain plant \(G^\prime(s)\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Gp = Gp0*(1+wI*DeltaI);
|
||||
<pre class="src src-matlab"> Gp = Gp0<span class="org-type">*</span>(1<span class="org-type">+</span>wI<span class="org-type">*</span>DeltaI);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
A set of uncertainty payload’s impedance transfer functions is shown in Figure <a href="#orgc40ac91">8</a>.
|
||||
A set of uncertainty payload’s impedance transfer functions is shown in Figure <a href="#org62be1c1">8</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgc40ac91" class="figure">
|
||||
<div id="org62be1c1" class="figure">
|
||||
<p><img src="figs/payload_impedance_uncertainty.png" alt="payload_impedance_uncertainty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Uncertainty of the payload’s impedance (<a href="./figs/payload_impedance_uncertainty.png">png</a>, <a href="./figs/payload_impedance_uncertainty.pdf">pdf</a>)</p>
|
||||
@ -522,8 +526,8 @@ A set of uncertainty payload’s impedance transfer functions is shown in Fi
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5e0366d" class="outline-3">
|
||||
<h3 id="org5e0366d"><span class="section-number-3">2.6</span> Equivalent Inverse Multiplicative Uncertainty</h3>
|
||||
<div id="outline-container-org456b213" class="outline-3">
|
||||
<h3 id="org456b213"><span class="section-number-3">2.6</span> Equivalent Inverse Multiplicative Uncertainty</h3>
|
||||
<div class="outline-text-3" id="text-2-6">
|
||||
<p>
|
||||
Let’s express the uncertainty of the plant \(x/F\) as a function of the parameters as well as of the uncertainty on the platform’s compliance:
|
||||
@ -533,9 +537,9 @@ Let’s express the uncertainty of the plant \(x/F\) as a function of the pa
|
||||
&= \frac{1}{ms^2 + cs + k + G_0^\prime(s)} \cdot \frac{1}{1 + \frac{G_0^\prime(s) w_I(s)}{ms^2 + cs + k + G_0^\prime(s)} \Delta(s)}\\
|
||||
\end{align*}
|
||||
|
||||
<div class="important">
|
||||
<div class="important" id="org8137f47">
|
||||
<p>
|
||||
We can the plant dynamics that as an inverse multiplicative uncertainty (Figure <a href="#org90e7eef">9</a>):
|
||||
We can the plant dynamics that as an inverse multiplicative uncertainty (Figure <a href="#org4d0f12d">9</a>):
|
||||
</p>
|
||||
\begin{equation}
|
||||
\frac{x}{F} = G_0(s) (1 + w_{iI}(s) \Delta(s))^{-1}
|
||||
@ -551,7 +555,7 @@ with:
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org90e7eef" class="figure">
|
||||
<div id="org4d0f12d" class="figure">
|
||||
<p><img src="figs/inverse_uncertainty_set.png" alt="inverse_uncertainty_set.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Inverse Multiplicative Uncertainty</p>
|
||||
@ -559,14 +563,14 @@ with:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcc0c290" class="outline-3">
|
||||
<h3 id="orgcc0c290"><span class="section-number-3">2.7</span> Effect of the Isolation platform Stiffness</h3>
|
||||
<div id="outline-container-org1d2455c" class="outline-3">
|
||||
<h3 id="org1d2455c"><span class="section-number-3">2.7</span> Effect of the Isolation platform Stiffness</h3>
|
||||
<div class="outline-text-3" id="text-2-7">
|
||||
<p>
|
||||
Let’s first fix the mass of the isolation platform:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">m = 20;
|
||||
<pre class="src src-matlab"> m = 20;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -583,12 +587,12 @@ And we generate three isolation platforms:
|
||||
Soft Isolation Platform:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">k_soft = m*(2*pi*5)^2;
|
||||
c_soft = 0.1*sqrt(m*k_soft);
|
||||
<pre class="src src-matlab"> k_soft = m<span class="org-type">*</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>5)<span class="org-type">^</span>2;
|
||||
c_soft = 0.1<span class="org-type">*</span>sqrt(m<span class="org-type">*</span>k_soft);
|
||||
|
||||
G_soft = 1/(m*s^2 + c_soft*s + k_soft + Gp);
|
||||
G0_soft = 1/(m*s^2 + c_soft*s + k_soft + Gp0);
|
||||
wiI_soft = Gp0*G0_soft*wI;
|
||||
G_soft = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_soft<span class="org-type">*</span>s <span class="org-type">+</span> k_soft <span class="org-type">+</span> Gp);
|
||||
G0_soft = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_soft<span class="org-type">*</span>s <span class="org-type">+</span> k_soft <span class="org-type">+</span> Gp0);
|
||||
wiI_soft = Gp0<span class="org-type">*</span>G0_soft<span class="org-type">*</span>wI;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -596,12 +600,12 @@ wiI_soft = Gp0*G0_soft*wI;
|
||||
Mid Isolation Platform
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">k_mid = m*(2*pi*50)^2;
|
||||
c_mid = 0.1*sqrt(m*k_mid);
|
||||
<pre class="src src-matlab"> k_mid = m<span class="org-type">*</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>50)<span class="org-type">^</span>2;
|
||||
c_mid = 0.1<span class="org-type">*</span>sqrt(m<span class="org-type">*</span>k_mid);
|
||||
|
||||
G_mid = 1/(m*s^2 + c_mid*s + k_mid + Gp);
|
||||
G0_mid = 1/(m*s^2 + c_mid*s + k_mid + Gp0);
|
||||
wiI_mid = Gp0*G0_mid*wI;
|
||||
G_mid = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_mid<span class="org-type">*</span>s <span class="org-type">+</span> k_mid <span class="org-type">+</span> Gp);
|
||||
G0_mid = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_mid<span class="org-type">*</span>s <span class="org-type">+</span> k_mid <span class="org-type">+</span> Gp0);
|
||||
wiI_mid = Gp0<span class="org-type">*</span>G0_mid<span class="org-type">*</span>wI;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -609,21 +613,21 @@ wiI_mid = Gp0*G0_mid*wI;
|
||||
Stiff Isolation Platform
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">k_stiff = m*(2*pi*500)^2;
|
||||
c_stiff = 0.1*sqrt(m*k_stiff);
|
||||
<pre class="src src-matlab"> k_stiff = m<span class="org-type">*</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>500)<span class="org-type">^</span>2;
|
||||
c_stiff = 0.1<span class="org-type">*</span>sqrt(m<span class="org-type">*</span>k_stiff);
|
||||
|
||||
G_stiff = 1/(m*s^2 + c_stiff*s + k_stiff + Gp);
|
||||
G0_stiff = 1/(m*s^2 + c_stiff*s + k_stiff + Gp0);
|
||||
wiI_stiff = Gp0*G0_stiff*wI;
|
||||
G_stiff = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_stiff<span class="org-type">*</span>s <span class="org-type">+</span> k_stiff <span class="org-type">+</span> Gp);
|
||||
G0_stiff = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_stiff<span class="org-type">*</span>s <span class="org-type">+</span> k_stiff <span class="org-type">+</span> Gp0);
|
||||
wiI_stiff = Gp0<span class="org-type">*</span>G0_stiff<span class="org-type">*</span>wI;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained transfer functions \(x/F\) for each of the three platforms are shown in Figure <a href="#org864ba65">10</a>.
|
||||
The obtained transfer functions \(x/F\) for each of the three platforms are shown in Figure <a href="#orgf9a8ac5">10</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org864ba65" class="figure">
|
||||
<div id="orgf9a8ac5" class="figure">
|
||||
<p><img src="figs/plant_uncertainty_impedance_payload.png" alt="plant_uncertainty_impedance_payload.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Obtained plant for the three isolators (<a href="./figs/plant_uncertainty_impedance_payload.png">png</a>, <a href="./figs/plant_uncertainty_impedance_payload.pdf">pdf</a>)</p>
|
||||
@ -631,8 +635,8 @@ The obtained transfer functions \(x/F\) for each of the three platforms are show
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1466bd9" class="outline-3">
|
||||
<h3 id="org1466bd9"><span class="section-number-3">2.8</span> Reduce the Uncertainty on the plant</h3>
|
||||
<div id="outline-container-org1321ab2" class="outline-3">
|
||||
<h3 id="org1321ab2"><span class="section-number-3">2.8</span> Reduce the Uncertainty on the plant</h3>
|
||||
<div class="outline-text-3" id="text-2-8">
|
||||
<p>
|
||||
Now that we know the expression of the uncertainty on the plant, we can wonder what parameters of the isolation platform would lower the plant uncertainty, or at least bring the uncertainty to reasonable level.
|
||||
@ -648,30 +652,30 @@ Let’s study separately the effect of the platform’s mass, damping an
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4be463f" class="outline-4">
|
||||
<h4 id="org4be463f"><span class="section-number-4">2.8.1</span> Effect of the platform’s stiffness \(k\)</h4>
|
||||
<div id="outline-container-org7519de0" class="outline-4">
|
||||
<h4 id="org7519de0"><span class="section-number-4">2.8.1</span> Effect of the platform’s stiffness \(k\)</h4>
|
||||
<div class="outline-text-4" id="text-2-8-1">
|
||||
<p>
|
||||
Let’s fix \(\xi = \frac{c}{2\sqrt{km}} = 0.1\), \(m = 100\ [kg]\) and see the evolution of \(|w_{iI}(j\omega)|\) with \(k\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This is first shown for few values of the stiffness \(k\) in figure <a href="#org5456162">11</a>
|
||||
This is first shown for few values of the stiffness \(k\) in figure <a href="#orgd59ef39">11</a>
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org5456162" class="figure">
|
||||
<div id="orgd59ef39" class="figure">
|
||||
<p><img src="figs/inverse_multiplicative_uncertainty_payload_few_k.png" alt="inverse_multiplicative_uncertainty_payload_few_k.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Norm of the inverse multiplicative uncertainty weight for various values of the the isolation platform’s stiffness (<a href="./figs/inverse_multiplicative_uncertainty_payload_few_k.png">png</a>, <a href="./figs/inverse_multiplicative_uncertainty_payload_few_k.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The norm of the uncertainty weight \(|w_iI(j\omega)|\) is displayed as a function of \(\omega\) and \(k\) in Figure <a href="#org362ed76">12</a>.
|
||||
The norm of the uncertainty weight \(|w_iI(j\omega)|\) is displayed as a function of \(\omega\) and \(k\) in Figure <a href="#org20cbb63">12</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org362ed76" class="figure">
|
||||
<div id="org20cbb63" class="figure">
|
||||
<p><img src="figs/inverse_multiplicative_payload_uncertainty_norm_k.png" alt="inverse_multiplicative_payload_uncertainty_norm_k.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Evolution of the norm of the uncertainty weight \(|w_{iI}(j\omega)|\) as a function of the platform’s stiffness \(k\) (<a href="./figs/inverse_multiplicative_payload_uncertainty_norm_k.png">png</a>, <a href="./figs/inverse_multiplicative_payload_uncertainty_norm_k.pdf">pdf</a>)</p>
|
||||
@ -686,12 +690,12 @@ Instead of plotting as a function of the platform’s stiffness, we can plot
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The obtain plot is shown in Figure <a href="#org27fe0c1">13</a>.
|
||||
The obtain plot is shown in Figure <a href="#orgab7b13f">13</a>.
|
||||
In that case, we can see that with a platform’s resonance frequency 10 times higher than the resonance of the payload, we get less than \(1\%\) uncertainty until some fairly high frequency.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org27fe0c1" class="figure">
|
||||
<div id="orgab7b13f" class="figure">
|
||||
<p><img src="figs/inverse_multiplicative_payload_uncertainty_k_normalized_frequency.png" alt="inverse_multiplicative_payload_uncertainty_k_normalized_frequency.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Evolution of the norm of the uncertainty weight \(|w_{iI}(j\omega)|\) as a function of the frequency ratio \(\omega_0/\omega_0^\prime\) (<a href="./figs/inverse_multiplicative_payload_uncertainty_k_normalized_frequency.png">png</a>, <a href="./figs/inverse_multiplicative_payload_uncertainty_k_normalized_frequency.pdf">pdf</a>)</p>
|
||||
@ -699,15 +703,15 @@ In that case, we can see that with a platform’s resonance frequency 10 tim
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4c45fb5" class="outline-4">
|
||||
<h4 id="org4c45fb5"><span class="section-number-4">2.8.2</span> Effect of the platform’s damping \(c\)</h4>
|
||||
<div id="outline-container-org2cfe073" class="outline-4">
|
||||
<h4 id="org2cfe073"><span class="section-number-4">2.8.2</span> Effect of the platform’s damping \(c\)</h4>
|
||||
<div class="outline-text-4" id="text-2-8-2">
|
||||
<p>
|
||||
Let’s fix \(k = 10^7\ [N/m]\), \(m = 100\ [kg]\) and see the evolution of \(|w_{iI}(j\omega)|\) with the isolation platform damping \(c\) (Figure <a href="#org51df34a">14</a>).
|
||||
Let’s fix \(k = 10^7\ [N/m]\), \(m = 100\ [kg]\) and see the evolution of \(|w_{iI}(j\omega)|\) with the isolation platform damping \(c\) (Figure <a href="#org96c279d">14</a>).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org51df34a" class="figure">
|
||||
<div id="org96c279d" class="figure">
|
||||
<p><img src="figs/inverse_multiplicative_payload_uncertainty_c.png" alt="inverse_multiplicative_payload_uncertainty_c.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Evolution of the norm of the uncertainty weight \(|w_{iI}(j\omega)|\) as a function of the platform’s damping ratio \(\xi\) (<a href="./figs/inverse_multiplicative_payload_uncertainty_c.png">png</a>, <a href="./figs/inverse_multiplicative_payload_uncertainty_c.pdf">pdf</a>)</p>
|
||||
@ -715,15 +719,15 @@ Let’s fix \(k = 10^7\ [N/m]\), \(m = 100\ [kg]\) and see the evolution of
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9086831" class="outline-4">
|
||||
<h4 id="org9086831"><span class="section-number-4">2.8.3</span> Effect of the platform’s mass \(m\)</h4>
|
||||
<div id="outline-container-org20f04de" class="outline-4">
|
||||
<h4 id="org20f04de"><span class="section-number-4">2.8.3</span> Effect of the platform’s mass \(m\)</h4>
|
||||
<div class="outline-text-4" id="text-2-8-3">
|
||||
<p>
|
||||
Let’s fix \(k = 10^7\ [N/m]\), \(\xi = \frac{c}{2\sqrt{km}} = 0.1\) and see the evolution of \(|w_{iI}(j\omega)|\) with the payload mass \(m\) (Figure <a href="#orgd260e86">15</a>).
|
||||
Let’s fix \(k = 10^7\ [N/m]\), \(\xi = \frac{c}{2\sqrt{km}} = 0.1\) and see the evolution of \(|w_{iI}(j\omega)|\) with the payload mass \(m\) (Figure <a href="#org24afcde">15</a>).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgd260e86" class="figure">
|
||||
<div id="org24afcde" class="figure">
|
||||
<p><img src="figs/inverse_multiplicative_payload_uncertainty_m.png" alt="inverse_multiplicative_payload_uncertainty_m.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Evolution of the norm of the uncertainty weight \(|w_{iI}(j\omega)|\) as a function of the payload mass \(m\) (<a href="./figs/inverse_multiplicative_payload_uncertainty_m.png">png</a>, <a href="./figs/inverse_multiplicative_payload_uncertainty_m.pdf">pdf</a>)</p>
|
||||
@ -732,12 +736,12 @@ Let’s fix \(k = 10^7\ [N/m]\), \(\xi = \frac{c}{2\sqrt{km}} = 0.1\) and se
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org272e76a" class="outline-3">
|
||||
<h3 id="org272e76a"><span class="section-number-3">2.9</span> Conclusion</h3>
|
||||
<div id="outline-container-orgff05731" class="outline-3">
|
||||
<h3 id="orgff05731"><span class="section-number-3">2.9</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-9">
|
||||
<div class="important">
|
||||
<div class="important" id="orgc7b7116">
|
||||
<p>
|
||||
As was expected from Eq. \eqref{org8b9a6a7}, it is usually a good idea to maximize the mass, damping and stiffness of the isolation platform in order to be less sensible to the payload dynamics.
|
||||
As was expected from Eq. \eqref{org11f0d43}, it is usually a good idea to maximize the mass, damping and stiffness of the isolation platform in order to be less sensible to the payload dynamics.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -745,7 +749,7 @@ The best thing to do is to have a stiff isolation platform.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If a soft isolation platform is to be used, it is first a good idea to damp the isolation platform as shown in Figure <a href="#org51df34a">14</a>.
|
||||
If a soft isolation platform is to be used, it is first a good idea to damp the isolation platform as shown in Figure <a href="#org96c279d">14</a>.
|
||||
This can make the uncertainty quite low until the first resonance of the payload.
|
||||
In that case, maximizing the stiffness of the payload is a good idea.
|
||||
</p>
|
||||
@ -757,7 +761,7 @@ In that case, maximizing the stiffness of the payload is a good idea.
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-05 mar. 10:33</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,64 +1,68 @@
|
||||
<?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-05-05 mar. 10:33 -->
|
||||
<!-- 2021-02-20 sam. 23:08 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Effect of Uncertainty on the support’s dynamics on the isolation platform dynamics</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
<script src="./js/jquery.min.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
<script src="./js/readtheorg.js"></script>
|
||||
<script>MathJax = {
|
||||
tex: {
|
||||
tags: 'ams',
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
<script>
|
||||
MathJax = {
|
||||
svg: {
|
||||
scale: 1,
|
||||
fontCache: "global"
|
||||
},
|
||||
tex: {
|
||||
tags: "ams",
|
||||
multlineWidth: "%MULTLINEWIDTH",
|
||||
tagSide: "right",
|
||||
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||
tagIndent: ".8em"
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<script id="MathJax-script" async
|
||||
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="org-div-home-and-up">
|
||||
<a accesskey="h" href="./index.html"> UP </a>
|
||||
|
|
||||
<a accesskey="H" href="./index.html"> HOME </a>
|
||||
<a accesskey="H" href="../../index.html"> HOME </a>
|
||||
</div><div id="content">
|
||||
<h1 class="title">Effect of Uncertainty on the support’s dynamics on the isolation platform dynamics</h1>
|
||||
<div id="table-of-contents">
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgbe6e0b8">1. Simple Introductory Example</a>
|
||||
<li><a href="#orgb1adbd9">1. Simple Introductory Example</a>
|
||||
<ul>
|
||||
<li><a href="#org3d4902a">1.1. Equations of motion</a></li>
|
||||
<li><a href="#org8bd2a4a">1.2. Initialization of the support dynamics</a></li>
|
||||
<li><a href="#orgefb9b71">1.3. Initialization of the isolation platform</a></li>
|
||||
<li><a href="#org3bc4ad1">1.4. Comparison</a></li>
|
||||
<li><a href="#org999e1c5">1.5. Conclusion</a></li>
|
||||
<li><a href="#orgf20a63e">1.1. Equations of motion</a></li>
|
||||
<li><a href="#org7f0c67f">1.2. Initialization of the support dynamics</a></li>
|
||||
<li><a href="#org557badc">1.3. Initialization of the isolation platform</a></li>
|
||||
<li><a href="#org2c66ca0">1.4. Comparison</a></li>
|
||||
<li><a href="#org8e2f9eb">1.5. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orge1d3484">2. Generalization to arbitrary dynamics</a>
|
||||
<li><a href="#org60caf30">2. Generalization to arbitrary dynamics</a>
|
||||
<ul>
|
||||
<li><a href="#org3948d1f">2.1. Introduction</a></li>
|
||||
<li><a href="#org18c1c3f">2.2. Equations of motion</a></li>
|
||||
<li><a href="#orgc20cabb">2.3. Compliance of the Support</a></li>
|
||||
<li><a href="#org67810a4">2.4. Equivalent Inverse Multiplicative Uncertainty</a></li>
|
||||
<li><a href="#orge950395">2.5. Effect of the Isolation platform Stiffness</a></li>
|
||||
<li><a href="#org6967854">2.6. Reduce the Uncertainty on the plant</a>
|
||||
<li><a href="#orgbe4faa1">2.1. Introduction</a></li>
|
||||
<li><a href="#org49bd260">2.2. Equations of motion</a></li>
|
||||
<li><a href="#orgb277730">2.3. Compliance of the Support</a></li>
|
||||
<li><a href="#org9880e78">2.4. Equivalent Inverse Multiplicative Uncertainty</a></li>
|
||||
<li><a href="#orgcde9f95">2.5. Effect of the Isolation platform Stiffness</a></li>
|
||||
<li><a href="#org71a0598">2.6. Reduce the Uncertainty on the plant</a>
|
||||
<ul>
|
||||
<li><a href="#orgafebadd">2.6.1. Effect of the platform’s stiffness \(k\)</a></li>
|
||||
<li><a href="#orgd9a82cb">2.6.2. Effect of the platform’s damping \(c\)</a></li>
|
||||
<li><a href="#orgd2fc303">2.6.3. Effect of the platform’s mass \(m\)</a></li>
|
||||
<li><a href="#org983db9a">2.6.1. Effect of the platform’s stiffness \(k\)</a></li>
|
||||
<li><a href="#org92a740c">2.6.2. Effect of the platform’s damping \(c\)</a></li>
|
||||
<li><a href="#org88d86c4">2.6.3. Effect of the platform’s mass \(m\)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgde3616e">2.7. Conclusion</a></li>
|
||||
<li><a href="#orgd68af10">2.7. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -82,18 +86,18 @@ The goal is to study:
|
||||
Two models are made to study these effects:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>In section <a href="#org232d01f">1</a>, simple mass-spring-damper systems are chosen to model both the isolation platform and the flexible support</li>
|
||||
<li>In section <a href="#orgb01b074">2</a>, we consider arbitrary support dynamics with multiplicative input uncertainty to study the unmodelled dynamics of the support</li>
|
||||
<li>In section <a href="#org0009692">1</a>, simple mass-spring-damper systems are chosen to model both the isolation platform and the flexible support</li>
|
||||
<li>In section <a href="#org407474d">2</a>, we consider arbitrary support dynamics with multiplicative input uncertainty to study the unmodelled dynamics of the support</li>
|
||||
</ul>
|
||||
|
||||
<div id="outline-container-orgbe6e0b8" class="outline-2">
|
||||
<h2 id="orgbe6e0b8"><span class="section-number-2">1</span> Simple Introductory Example</h2>
|
||||
<div id="outline-container-orgb1adbd9" class="outline-2">
|
||||
<h2 id="orgb1adbd9"><span class="section-number-2">1</span> Simple Introductory Example</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
<a id="org232d01f"></a>
|
||||
<a id="org0009692"></a>
|
||||
</p>
|
||||
<p>
|
||||
Let’s consider the system shown in Figure <a href="#org41bc770">1</a> consisting of:
|
||||
Let’s consider the system shown in Figure <a href="#org162a9b2">1</a> consisting of:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>A <b>support</b> represented by a mass \(m^\prime\), a stiffness \(k^\prime\) and a dashpot \(c^\prime\)</li>
|
||||
@ -105,18 +109,18 @@ The goal is to stabilize \(x\) using \(F\) in spite of uncertainty on the suppor
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org41bc770" class="figure">
|
||||
<div id="org162a9b2" class="figure">
|
||||
<p><img src="figs/2dof_system_stiffness_uncertainty.png" alt="2dof_system_stiffness_uncertainty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Two degrees-of-freedom system</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3d4902a" class="outline-3">
|
||||
<h3 id="org3d4902a"><span class="section-number-3">1.1</span> Equations of motion</h3>
|
||||
<div id="outline-container-orgf20a63e" class="outline-3">
|
||||
<h3 id="orgf20a63e"><span class="section-number-3">1.1</span> Equations of motion</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
If we write the equation of motion of the system in Figure <a href="#org41bc770">1</a>, we obtain:
|
||||
If we write the equation of motion of the system in Figure <a href="#org162a9b2">1</a>, we obtain:
|
||||
</p>
|
||||
\begin{align}
|
||||
ms^2 x &= F + (cs + k) (x^\prime - x) \\
|
||||
@ -127,14 +131,14 @@ If we write the equation of motion of the system in Figure <a href="#org41bc770"
|
||||
After eliminating \(x^\prime\), we obtain:
|
||||
</p>
|
||||
\begin{equation}
|
||||
\label{org2d73355}
|
||||
\label{orgf3ed6bc}
|
||||
\frac{x}{F} = \frac{m^\prime s^2 + c^\prime s + k^\prime}{ms^2(cs + k) + (ms^2 + cs + k)(m^\prime s^2 + c^\prime s + k^\prime)}
|
||||
\end{equation}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8bd2a4a" class="outline-3">
|
||||
<h3 id="org8bd2a4a"><span class="section-number-3">1.2</span> Initialization of the support dynamics</h3>
|
||||
<div id="outline-container-org7f0c67f" class="outline-3">
|
||||
<h3 id="org7f0c67f"><span class="section-number-3">1.2</span> Initialization of the support dynamics</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
Let the support have:
|
||||
@ -146,9 +150,9 @@ Let the support have:
|
||||
</ul>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">mpi = 1e3;
|
||||
cpi = 5e4;
|
||||
kpi = 1e8;
|
||||
<pre class="src src-matlab"> mpi = 1e3;
|
||||
cpi = 5e4;
|
||||
kpi = 1e8;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -156,14 +160,14 @@ kpi = 1e8;
|
||||
Let’s also consider some uncertainty in those parameters:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">mp = ureal('m', mpi, 'Percentage', 30);
|
||||
cp = ureal('c', cpi, 'Percentage', 30);
|
||||
kp = ureal('k', kpi, 'Percentage', 30);
|
||||
<pre class="src src-matlab"> mp = ureal(<span class="org-string">'m'</span>, mpi, <span class="org-string">'Percentage'</span>, 30);
|
||||
cp = ureal(<span class="org-string">'c'</span>, cpi, <span class="org-string">'Percentage'</span>, 30);
|
||||
kp = ureal(<span class="org-string">'k'</span>, kpi, <span class="org-string">'Percentage'</span>, 30);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The compliance of the support without the isolation platform is \(\frac{1}{m^\prime s^2 + c^\prime s + k^\prime}\) and its bode plot is shown in Figure <a href="#orgf0e5d13">2</a>.
|
||||
The compliance of the support without the isolation platform is \(\frac{1}{m^\prime s^2 + c^\prime s + k^\prime}\) and its bode plot is shown in Figure <a href="#orga056e3a">2</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -171,7 +175,7 @@ One can see that support has a resonance frequency of \(\omega_0^\prime = 50\ Hz
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgf0e5d13" class="figure">
|
||||
<div id="orga056e3a" class="figure">
|
||||
<p><img src="figs/nominal_support_compliance_dynamics.png" alt="nominal_support_compliance_dynamics.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Nominal compliance of the support (<a href="./figs/nominal_support_compliance_dynamics.png">png</a>, <a href="./figs/nominal_support_compliance_dynamics.pdf">pdf</a>)</p>
|
||||
@ -179,14 +183,14 @@ One can see that support has a resonance frequency of \(\omega_0^\prime = 50\ Hz
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgefb9b71" class="outline-3">
|
||||
<h3 id="orgefb9b71"><span class="section-number-3">1.3</span> Initialization of the isolation platform</h3>
|
||||
<div id="outline-container-org557badc" class="outline-3">
|
||||
<h3 id="org557badc"><span class="section-number-3">1.3</span> Initialization of the isolation platform</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
Let’s first fix the mass of the payload to be isolated:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">m = 100;
|
||||
<pre class="src src-matlab"> m = 100;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -201,15 +205,15 @@ And we generate three isolation platforms:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3bc4ad1" class="outline-3">
|
||||
<h3 id="org3bc4ad1"><span class="section-number-3">1.4</span> Comparison</h3>
|
||||
<div id="outline-container-org2c66ca0" class="outline-3">
|
||||
<h3 id="org2c66ca0"><span class="section-number-3">1.4</span> Comparison</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<p>
|
||||
The obtained dynamics from \(F\) to \(x\) for the three isolation platform are shown in Figure <a href="#org5fb09ae">3</a>.
|
||||
The obtained dynamics from \(F\) to \(x\) for the three isolation platform are shown in Figure <a href="#org1927c94">3</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org5fb09ae" class="figure">
|
||||
<div id="org1927c94" class="figure">
|
||||
<p><img src="figs/plant_dynamics_uncertainty_stiff_mid_soft.png" alt="plant_dynamics_uncertainty_stiff_mid_soft.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Obtained plant for the three isolation platforms considered (<a href="./figs/plant_dynamics_uncertainty_stiff_mid_soft.png">png</a>, <a href="./figs/plant_dynamics_uncertainty_stiff_mid_soft.pdf">pdf</a>)</p>
|
||||
@ -217,10 +221,10 @@ The obtained dynamics from \(F\) to \(x\) for the three isolation platform are s
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org999e1c5" class="outline-3">
|
||||
<h3 id="org999e1c5"><span class="section-number-3">1.5</span> Conclusion</h3>
|
||||
<div id="outline-container-org8e2f9eb" class="outline-3">
|
||||
<h3 id="org8e2f9eb"><span class="section-number-3">1.5</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-1-5">
|
||||
<div class="important">
|
||||
<div class="important" id="orgc636dcd">
|
||||
<p>
|
||||
The soft platform dynamics does not seems to depend on the dynamics of the support nor to be affect by the dynamic uncertainty of the support.
|
||||
</p>
|
||||
@ -230,32 +234,32 @@ The soft platform dynamics does not seems to depend on the dynamics of the suppo
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge1d3484" class="outline-2">
|
||||
<h2 id="orge1d3484"><span class="section-number-2">2</span> Generalization to arbitrary dynamics</h2>
|
||||
<div id="outline-container-org60caf30" class="outline-2">
|
||||
<h2 id="org60caf30"><span class="section-number-2">2</span> Generalization to arbitrary dynamics</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
<a id="orgb01b074"></a>
|
||||
<a id="org407474d"></a>
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org3948d1f" class="outline-3">
|
||||
<h3 id="org3948d1f"><span class="section-number-3">2.1</span> Introduction</h3>
|
||||
<div id="outline-container-orgbe4faa1" class="outline-3">
|
||||
<h3 id="orgbe4faa1"><span class="section-number-3">2.1</span> Introduction</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
Let’s now consider a general support described by its <b>compliance</b> \(G^\prime(s) = \frac{x^\prime}{F^\prime}\) as shown in Figure <a href="#orgaa4cf23">4</a>.
|
||||
Let’s now consider a general support described by its <b>compliance</b> \(G^\prime(s) = \frac{x^\prime}{F^\prime}\) as shown in Figure <a href="#org4baf379">4</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgaa4cf23" class="figure">
|
||||
<div id="org4baf379" class="figure">
|
||||
<p><img src="figs/general_support_compliance.png" alt="general_support_compliance.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>General support</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Now let’s consider the system consisting of a mass-spring-system (the isolation platform) on top of a general support as shown in Figure <a href="#org524a33a">5</a>.
|
||||
Now let’s consider the system consisting of a mass-spring-system (the isolation platform) on top of a general support as shown in Figure <a href="#org36e0868">5</a>.
|
||||
</p>
|
||||
|
||||
<div id="org524a33a" class="figure">
|
||||
<div id="org36e0868" class="figure">
|
||||
<p><img src="figs/general_support_with_isolator.png" alt="general_support_with_isolator.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Mass-Spring-Damper system on top of a general support</p>
|
||||
@ -263,8 +267,8 @@ Now let’s consider the system consisting of a mass-spring-system (the isol
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org18c1c3f" class="outline-3">
|
||||
<h3 id="org18c1c3f"><span class="section-number-3">2.2</span> Equations of motion</h3>
|
||||
<div id="outline-container-org49bd260" class="outline-3">
|
||||
<h3 id="org49bd260"><span class="section-number-3">2.2</span> Equations of motion</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
We have to following equations of motion:
|
||||
@ -279,7 +283,7 @@ We have to following equations of motion:
|
||||
And by eliminating \(F^\prime\) and \(x^\prime\), we find the plant dynamics \(G(s) = \frac{x}{F}\).
|
||||
</p>
|
||||
|
||||
<div class="important">
|
||||
<div class="important" id="orgf4990df">
|
||||
\begin{equation}
|
||||
\frac{x}{F} = \frac{1}{ms^2 + cs + k + ms^2(cs + k)G^\prime(s)} \label{eq:plant_dynamics_general_support}
|
||||
\end{equation}
|
||||
@ -287,20 +291,20 @@ And by eliminating \(F^\prime\) and \(x^\prime\), we find the plant dynamics \(G
|
||||
</div>
|
||||
|
||||
<p>
|
||||
In order to verify that the formula is correct, let’s take the same mass-spring-damper system used in the system shown in Figure <a href="#org41bc770">1</a>:
|
||||
In order to verify that the formula is correct, let’s take the same mass-spring-damper system used in the system shown in Figure <a href="#org162a9b2">1</a>:
|
||||
\[ \frac{x^\prime}{F^\prime} = \frac{1}{m^\prime s^2 + c^\prime s + k^\prime} \]
|
||||
</p>
|
||||
|
||||
<p>
|
||||
And we obtain
|
||||
\[ \frac{x}{F} = \frac{m^\prime s^2 + c^\prime s + k^\prime}{(ms^2 + cs + k)(m^\prime s^2 + c^\prime s + k^\prime) + ms^2(cs + k)} \]
|
||||
Which is the same transfer function that was obtained in section <a href="#org232d01f">1</a> (Eq. \eqref{eq:plant_simple_system}).
|
||||
Which is the same transfer function that was obtained in section <a href="#org0009692">1</a> (Eq. \eqref{eq:plant_simple_system}).
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc20cabb" class="outline-3">
|
||||
<h3 id="orgc20cabb"><span class="section-number-3">2.3</span> Compliance of the Support</h3>
|
||||
<div id="outline-container-orgb277730" class="outline-3">
|
||||
<h3 id="orgb277730"><span class="section-number-3">2.3</span> Compliance of the Support</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
We model the support by a mass-spring-damper model with some uncertainty.
|
||||
@ -312,16 +316,16 @@ The main resonance of the support is then \(\omega^\prime = \sqrt{\frac{m^\prime
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">m0 = 1e3;
|
||||
c0 = 5e4;
|
||||
k0 = 1e8;
|
||||
<pre class="src src-matlab"> m0 = 1e3;
|
||||
c0 = 5e4;
|
||||
k0 = 1e8;
|
||||
|
||||
Gp0 = 1/(m0*s^2 + c0*s + k0);
|
||||
Gp0 = 1<span class="org-type">/</span>(m0<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c0<span class="org-type">*</span>s <span class="org-type">+</span> k0);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Let’s represent the uncertainty on the compliance of the support by a multiplicative uncertainty (Figure <a href="#orgaaa2d77">6</a>):
|
||||
Let’s represent the uncertainty on the compliance of the support by a multiplicative uncertainty (Figure <a href="#orgb0ae74c">6</a>):
|
||||
\[ G^\prime(s) = G_0^\prime(s)(1 + w_I^\prime(s)\Delta_I(s)) \quad |\Delta_I(j\omega)| < 1\ \forall \omega \]
|
||||
</p>
|
||||
|
||||
@ -330,7 +334,7 @@ This could represent <b>unmodelled dynamics</b> or unknown parameters of the sup
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgaaa2d77" class="figure">
|
||||
<div id="orgb0ae74c" class="figure">
|
||||
<p><img src="figs/input_uncertainty_set.png" alt="input_uncertainty_set.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Input Multiplicative Uncertainty</p>
|
||||
@ -346,11 +350,11 @@ where \(r_0\) is the relative uncertainty at steady-state, \(1/\tau\) is the fre
|
||||
The parameters are defined below.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">r0 = 0.5;
|
||||
tau = 1/(100*2*pi);
|
||||
rinf = 10;
|
||||
<pre class="src src-matlab"> r0 = 0.5;
|
||||
tau = 1<span class="org-type">/</span>(100<span class="org-type">*</span>2<span class="org-type">*</span><span class="org-constant">pi</span>);
|
||||
rinf = 10;
|
||||
|
||||
wI = (tau*s + r0)/((tau/rinf)*s + 1);
|
||||
wI = (tau<span class="org-type">*</span>s <span class="org-type">+</span> r0)<span class="org-type">/</span>((tau<span class="org-type">/</span>rinf)<span class="org-type">*</span>s <span class="org-type">+</span> 1);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -358,7 +362,7 @@ wI = (tau*s + r0)/((tau/rinf)*s + 1);
|
||||
We then generate a complex \(\Delta\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">DeltaI = ucomplex('A',0);
|
||||
<pre class="src src-matlab"> DeltaI = ucomplex(<span class="org-string">'A'</span>,0);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -366,16 +370,16 @@ We then generate a complex \(\Delta\).
|
||||
We generate the uncertain plant \(G^\prime(s)\).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Gp = Gp0*(1+wI*DeltaI);
|
||||
<pre class="src src-matlab"> Gp = Gp0<span class="org-type">*</span>(1<span class="org-type">+</span>wI<span class="org-type">*</span>DeltaI);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
A set of uncertainty support’s compliance transfer functions is shown in Figure <a href="#orgcac0998">7</a>.
|
||||
A set of uncertainty support’s compliance transfer functions is shown in Figure <a href="#org5d8850d">7</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgcac0998" class="figure">
|
||||
<div id="org5d8850d" class="figure">
|
||||
<p><img src="figs/compliance_support_uncertainty.png" alt="compliance_support_uncertainty.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Uncertainty of the support’s compliance (<a href="./figs/compliance_support_uncertainty.png">png</a>, <a href="./figs/compliance_support_uncertainty.pdf">pdf</a>)</p>
|
||||
@ -383,8 +387,8 @@ A set of uncertainty support’s compliance transfer functions is shown in F
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org67810a4" class="outline-3">
|
||||
<h3 id="org67810a4"><span class="section-number-3">2.4</span> Equivalent Inverse Multiplicative Uncertainty</h3>
|
||||
<div id="outline-container-org9880e78" class="outline-3">
|
||||
<h3 id="org9880e78"><span class="section-number-3">2.4</span> Equivalent Inverse Multiplicative Uncertainty</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<p>
|
||||
Let’s express the uncertainty of the plant \(x/F\) as a function of the parameters as well as of the uncertainty on the platform’s compliance:
|
||||
@ -395,9 +399,9 @@ Let’s express the uncertainty of the plant \(x/F\) as a function of the pa
|
||||
&= \frac{1}{ms^2 + cs + k + ms^2(cs + k)G_0^\prime(s)} \cdot \frac{1}{1 + \frac{ms^2(cs + k)G_0^\prime(s) w_I(s)}{ms^2 + cs + k + ms^2(cs + k)G_0^\prime(s)} \Delta(s)}\\
|
||||
\end{align*}
|
||||
|
||||
<div class="important">
|
||||
<div class="important" id="org6aceb50">
|
||||
<p>
|
||||
We can the plant dynamics that as an inverse multiplicative uncertainty (Figure <a href="#orge738173">8</a>):
|
||||
We can the plant dynamics that as an inverse multiplicative uncertainty (Figure <a href="#org85dcc28">8</a>):
|
||||
</p>
|
||||
\begin{equation}
|
||||
\frac{x}{F} = G_0(s) (1 + w_{iI}(s) \Delta(s))^{-1}
|
||||
@ -413,7 +417,7 @@ with:
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orge738173" class="figure">
|
||||
<div id="org85dcc28" class="figure">
|
||||
<p><img src="figs/inverse_uncertainty_set.png" alt="inverse_uncertainty_set.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Inverse Multiplicative Uncertainty</p>
|
||||
@ -421,14 +425,14 @@ with:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge950395" class="outline-3">
|
||||
<h3 id="orge950395"><span class="section-number-3">2.5</span> Effect of the Isolation platform Stiffness</h3>
|
||||
<div id="outline-container-orgcde9f95" class="outline-3">
|
||||
<h3 id="orgcde9f95"><span class="section-number-3">2.5</span> Effect of the Isolation platform Stiffness</h3>
|
||||
<div class="outline-text-3" id="text-2-5">
|
||||
<p>
|
||||
Let’s first fix the mass of the payload to be isolated:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">m = 100;
|
||||
<pre class="src src-matlab"> m = 100;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -445,12 +449,12 @@ And we generate three isolation platforms:
|
||||
Soft Isolation Platform:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">k_soft = m*(2*pi*5)^2;
|
||||
c_soft = 0.1*sqrt(m*k_soft);
|
||||
<pre class="src src-matlab"> k_soft = m<span class="org-type">*</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>5)<span class="org-type">^</span>2;
|
||||
c_soft = 0.1<span class="org-type">*</span>sqrt(m<span class="org-type">*</span>k_soft);
|
||||
|
||||
G_soft = 1/(m*s^2 + c_soft*s + k_soft + m*s^2*(c_soft*s + k_soft)*Gp);
|
||||
G0_soft = 1/(m*s^2 + c_soft*s + k_soft + m*s^2*(c_soft*s + k_soft)*Gp0);
|
||||
wiI_soft = Gp0*m*s^2*(c_soft*s + k_soft)*G0_soft*wI;
|
||||
G_soft = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_soft<span class="org-type">*</span>s <span class="org-type">+</span> k_soft <span class="org-type">+</span> m<span class="org-type">*</span>s<span class="org-type">^</span>2<span class="org-type">*</span>(c_soft<span class="org-type">*</span>s <span class="org-type">+</span> k_soft)<span class="org-type">*</span>Gp);
|
||||
G0_soft = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_soft<span class="org-type">*</span>s <span class="org-type">+</span> k_soft <span class="org-type">+</span> m<span class="org-type">*</span>s<span class="org-type">^</span>2<span class="org-type">*</span>(c_soft<span class="org-type">*</span>s <span class="org-type">+</span> k_soft)<span class="org-type">*</span>Gp0);
|
||||
wiI_soft = Gp0<span class="org-type">*</span>m<span class="org-type">*</span>s<span class="org-type">^</span>2<span class="org-type">*</span>(c_soft<span class="org-type">*</span>s <span class="org-type">+</span> k_soft)<span class="org-type">*</span>G0_soft<span class="org-type">*</span>wI;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -458,12 +462,12 @@ wiI_soft = Gp0*m*s^2*(c_soft*s + k_soft)*G0_soft*wI;
|
||||
Mid Isolation Platform
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">k_mid = m*(2*pi*50)^2;
|
||||
c_mid = 0.1*sqrt(m*k_mid);
|
||||
<pre class="src src-matlab"> k_mid = m<span class="org-type">*</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>50)<span class="org-type">^</span>2;
|
||||
c_mid = 0.1<span class="org-type">*</span>sqrt(m<span class="org-type">*</span>k_mid);
|
||||
|
||||
G_mid = 1/(m*s^2 + c_mid*s + k_mid + m*s^2*(c_mid*s + k_mid)*Gp);
|
||||
G0_mid = 1/(m*s^2 + c_mid*s + k_mid + m*s^2*(c_mid*s + k_mid)*Gp0);
|
||||
wiI_mid = Gp0*m*s^2*(c_mid*s + k_mid)*G0_mid*wI;
|
||||
G_mid = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_mid<span class="org-type">*</span>s <span class="org-type">+</span> k_mid <span class="org-type">+</span> m<span class="org-type">*</span>s<span class="org-type">^</span>2<span class="org-type">*</span>(c_mid<span class="org-type">*</span>s <span class="org-type">+</span> k_mid)<span class="org-type">*</span>Gp);
|
||||
G0_mid = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_mid<span class="org-type">*</span>s <span class="org-type">+</span> k_mid <span class="org-type">+</span> m<span class="org-type">*</span>s<span class="org-type">^</span>2<span class="org-type">*</span>(c_mid<span class="org-type">*</span>s <span class="org-type">+</span> k_mid)<span class="org-type">*</span>Gp0);
|
||||
wiI_mid = Gp0<span class="org-type">*</span>m<span class="org-type">*</span>s<span class="org-type">^</span>2<span class="org-type">*</span>(c_mid<span class="org-type">*</span>s <span class="org-type">+</span> k_mid)<span class="org-type">*</span>G0_mid<span class="org-type">*</span>wI;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -471,35 +475,35 @@ wiI_mid = Gp0*m*s^2*(c_mid*s + k_mid)*G0_mid*wI;
|
||||
Stiff Isolation Platform
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">k_stiff = m*(2*pi*500)^2;
|
||||
c_stiff = 0.1*sqrt(m*k_stiff);
|
||||
<pre class="src src-matlab"> k_stiff = m<span class="org-type">*</span>(2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>500)<span class="org-type">^</span>2;
|
||||
c_stiff = 0.1<span class="org-type">*</span>sqrt(m<span class="org-type">*</span>k_stiff);
|
||||
|
||||
G_stiff = 1/(m*s^2 + c_stiff*s + k_stiff + m*s^2*(c_stiff*s + k_stiff)*Gp);
|
||||
G0_stiff = 1/(m*s^2 + c_stiff*s + k_stiff + m*s^2*(c_stiff*s + k_stiff)*Gp0);
|
||||
wiI_stiff = Gp0*m*s^2*(c_stiff*s + k_stiff)*G0_stiff*wI;
|
||||
G_stiff = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_stiff<span class="org-type">*</span>s <span class="org-type">+</span> k_stiff <span class="org-type">+</span> m<span class="org-type">*</span>s<span class="org-type">^</span>2<span class="org-type">*</span>(c_stiff<span class="org-type">*</span>s <span class="org-type">+</span> k_stiff)<span class="org-type">*</span>Gp);
|
||||
G0_stiff = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c_stiff<span class="org-type">*</span>s <span class="org-type">+</span> k_stiff <span class="org-type">+</span> m<span class="org-type">*</span>s<span class="org-type">^</span>2<span class="org-type">*</span>(c_stiff<span class="org-type">*</span>s <span class="org-type">+</span> k_stiff)<span class="org-type">*</span>Gp0);
|
||||
wiI_stiff = Gp0<span class="org-type">*</span>m<span class="org-type">*</span>s<span class="org-type">^</span>2<span class="org-type">*</span>(c_stiff<span class="org-type">*</span>s <span class="org-type">+</span> k_stiff)<span class="org-type">*</span>G0_stiff<span class="org-type">*</span>wI;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained transfer functions \(x/F\) for each of the three platforms are shown in Figure <a href="#org89aa89f">9</a>.
|
||||
The obtained transfer functions \(x/F\) for each of the three platforms are shown in Figure <a href="#org3126520">9</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org89aa89f" class="figure">
|
||||
<div id="org3126520" class="figure">
|
||||
<p><img src="figs/plant_uncertainty_stiffness_isolator.png" alt="plant_uncertainty_stiffness_isolator.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Obtained plant for the three isolators (<a href="./figs/plant_uncertainty_stiffness_isolator.png">png</a>, <a href="./figs/plant_uncertainty_stiffness_isolator.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtain result is very similar to the one obtain in section <a href="#org232d01f">1</a>, except for the stiff isolation that experience lot’s of uncertainty at high frequency.
|
||||
The obtain result is very similar to the one obtain in section <a href="#org0009692">1</a>, except for the stiff isolation that experience lot’s of uncertainty at high frequency.
|
||||
This is due to the fact that with the current model, at high frequency, the support’s compliance uncertainty is much higher than the previous model.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6967854" class="outline-3">
|
||||
<h3 id="org6967854"><span class="section-number-3">2.6</span> Reduce the Uncertainty on the plant</h3>
|
||||
<div id="outline-container-org71a0598" class="outline-3">
|
||||
<h3 id="org71a0598"><span class="section-number-3">2.6</span> Reduce the Uncertainty on the plant</h3>
|
||||
<div class="outline-text-3" id="text-2-6">
|
||||
<p>
|
||||
Now that we know the expression of the uncertainty on the plant, we can wonder what parameters of the isolation platform would lower the plant uncertainty, or at least bring the uncertainty to reasonable level.
|
||||
@ -515,30 +519,30 @@ Let’s study separately the effect of the platform’s mass, damping an
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgafebadd" class="outline-4">
|
||||
<h4 id="orgafebadd"><span class="section-number-4">2.6.1</span> Effect of the platform’s stiffness \(k\)</h4>
|
||||
<div id="outline-container-org983db9a" class="outline-4">
|
||||
<h4 id="org983db9a"><span class="section-number-4">2.6.1</span> Effect of the platform’s stiffness \(k\)</h4>
|
||||
<div class="outline-text-4" id="text-2-6-1">
|
||||
<p>
|
||||
Let’s fix \(\xi = \frac{c}{2\sqrt{km}} = 0.1\), \(m = 100\ [kg]\) and see the evolution of \(|w_{iI}(j\omega)|\) with \(k\).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This is first shown for few values of the stiffness \(k\) in figure <a href="#org5bc976b">10</a>
|
||||
This is first shown for few values of the stiffness \(k\) in figure <a href="#org9addccd">10</a>
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org5bc976b" class="figure">
|
||||
<div id="org9addccd" class="figure">
|
||||
<p><img src="figs/inverse_multiplicative_uncertainty_norm_few_k.png" alt="inverse_multiplicative_uncertainty_norm_few_k.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>caption (<a href="./figs/inverse_multiplicative_uncertainty_norm_few_k.png">png</a>, <a href="./figs/inverse_multiplicative_uncertainty_norm_few_k.pdf">pdf</a>)</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The norm of the uncertainty weight \(|w_iI(j\omega)|\) is displayed as a function of \(\omega\) and \(k\) in Figure <a href="#orgb283d43">11</a>.
|
||||
The norm of the uncertainty weight \(|w_iI(j\omega)|\) is displayed as a function of \(\omega\) and \(k\) in Figure <a href="#orgc7a264d">11</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgb283d43" class="figure">
|
||||
<div id="orgc7a264d" class="figure">
|
||||
<p><img src="figs/inverse_multiplicative_uncertainty_norm_k.png" alt="inverse_multiplicative_uncertainty_norm_k.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Evolution of the norm of the uncertainty weight \(|w_{iI}(j\omega)|\) as a function of the platform’s stiffness \(k\) (<a href="./figs/inverse_multiplicative_uncertainty_norm_k.png">png</a>, <a href="./figs/inverse_multiplicative_uncertainty_norm_k.pdf">pdf</a>)</p>
|
||||
@ -553,12 +557,12 @@ Instead of plotting as a function of the platform’s stiffness, we can plot
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The obtain plot is shown in Figure <a href="#org9adcd50">12</a>.
|
||||
The obtain plot is shown in Figure <a href="#orgae2fb41">12</a>.
|
||||
In that case, we can see that with a platform’s resonance frequency 10 times lower than the resonance of the support, we get less than \(1\%\) uncertainty.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org9adcd50" class="figure">
|
||||
<div id="orgae2fb41" class="figure">
|
||||
<p><img src="figs/inverse_multiplicative_uncertainty_k_normalized_frequency.png" alt="inverse_multiplicative_uncertainty_k_normalized_frequency.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Evolution of the norm of the uncertainty weight \(|w_{iI}(j\omega)|\) as a function of the frequency ratio \(\omega_0/\omega_0^\prime\) (<a href="./figs/inverse_multiplicative_uncertainty_k_normalized_frequency.png">png</a>, <a href="./figs/inverse_multiplicative_uncertainty_k_normalized_frequency.pdf">pdf</a>)</p>
|
||||
@ -566,15 +570,15 @@ In that case, we can see that with a platform’s resonance frequency 10 tim
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd9a82cb" class="outline-4">
|
||||
<h4 id="orgd9a82cb"><span class="section-number-4">2.6.2</span> Effect of the platform’s damping \(c\)</h4>
|
||||
<div id="outline-container-org92a740c" class="outline-4">
|
||||
<h4 id="org92a740c"><span class="section-number-4">2.6.2</span> Effect of the platform’s damping \(c\)</h4>
|
||||
<div class="outline-text-4" id="text-2-6-2">
|
||||
<p>
|
||||
Let’s fix \(k = 10^7\ [N/m]\), \(m = 100\ [kg]\) and see the evolution of \(|w_{iI}(j\omega)|\) with the isolator damping \(c\) (Figure <a href="#org983fa6b">13</a>).
|
||||
Let’s fix \(k = 10^7\ [N/m]\), \(m = 100\ [kg]\) and see the evolution of \(|w_{iI}(j\omega)|\) with the isolator damping \(c\) (Figure <a href="#org21e5135">13</a>).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org983fa6b" class="figure">
|
||||
<div id="org21e5135" class="figure">
|
||||
<p><img src="figs/inverse_multiplicative_uncertainty_norm_c.png" alt="inverse_multiplicative_uncertainty_norm_c.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Evolution of the norm of the uncertainty weight \(|w_{iI}(j\omega)|\) as a function of the platform’s damping ratio \(\xi\) (<a href="./figs/inverse_multiplicative_uncertainty_norm_c.png">png</a>, <a href="./figs/inverse_multiplicative_uncertainty_norm_c.pdf">pdf</a>)</p>
|
||||
@ -583,15 +587,15 @@ Let’s fix \(k = 10^7\ [N/m]\), \(m = 100\ [kg]\) and see the evolution of
|
||||
</div>
|
||||
|
||||
|
||||
<div id="outline-container-orgd2fc303" class="outline-4">
|
||||
<h4 id="orgd2fc303"><span class="section-number-4">2.6.3</span> Effect of the platform’s mass \(m\)</h4>
|
||||
<div id="outline-container-org88d86c4" class="outline-4">
|
||||
<h4 id="org88d86c4"><span class="section-number-4">2.6.3</span> Effect of the platform’s mass \(m\)</h4>
|
||||
<div class="outline-text-4" id="text-2-6-3">
|
||||
<p>
|
||||
Let’s fix \(k = 10^7\ [N/m]\), \(\xi = \frac{c}{2\sqrt{km}} = 0.1\) and see the evolution of \(|w_{iI}(j\omega)|\) with the payload mass \(m\) (Figure <a href="#orgf899c7a">14</a>).
|
||||
Let’s fix \(k = 10^7\ [N/m]\), \(\xi = \frac{c}{2\sqrt{km}} = 0.1\) and see the evolution of \(|w_{iI}(j\omega)|\) with the payload mass \(m\) (Figure <a href="#org6c5410a">14</a>).
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgf899c7a" class="figure">
|
||||
<div id="org6c5410a" class="figure">
|
||||
<p><img src="figs/inverse_multiplicative_uncertainty_norm_m.png" alt="inverse_multiplicative_uncertainty_norm_m.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Evolution of the norm of the uncertainty weight \(|w_{iI}(j\omega)|\) as a function of the payload mass \(m\) (<a href="./figs/inverse_multiplicative_uncertainty_norm_m.png">png</a>, <a href="./figs/inverse_multiplicative_uncertainty_norm_m.pdf">pdf</a>)</p>
|
||||
@ -600,10 +604,10 @@ Let’s fix \(k = 10^7\ [N/m]\), \(\xi = \frac{c}{2\sqrt{km}} = 0.1\) and se
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgde3616e" class="outline-3">
|
||||
<h3 id="orgde3616e"><span class="section-number-3">2.7</span> Conclusion</h3>
|
||||
<div id="outline-container-orgd68af10" class="outline-3">
|
||||
<h3 id="orgd68af10"><span class="section-number-3">2.7</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-7">
|
||||
<div class="important">
|
||||
<div class="important" id="orgcdbfc6b">
|
||||
<p>
|
||||
If the goal is to have an acceptable (\(<10\%\)) uncertainty on the plant until the highest frequency, two design choice for the isolation platform are possible:
|
||||
</p>
|
||||
@ -629,7 +633,7 @@ Thus, if a stiff isolation platform is used, the recommendation is to have the l
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-05 mar. 10:33</p>
|
||||
<p class="date">Created: 2021-02-20 sam. 23:08</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
1172
docs/uniaxial.html
1172
docs/uniaxial.html
File diff suppressed because it is too large
Load Diff
@ -4,15 +4,11 @@
|
||||
#+EMAIL: dehaeze.thomas@gmail.com
|
||||
#+AUTHOR: Dehaeze Thomas
|
||||
|
||||
#+HTML_LINK_HOME: ./index.html
|
||||
#+HTML_LINK_HOME: ../../index.html
|
||||
#+HTML_LINK_UP: ./index.html
|
||||
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||
#+HTML_HEAD: <script src="./js/jquery.min.js"></script>
|
||||
#+HTML_HEAD: <script src="./js/bootstrap.min.js"></script>
|
||||
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
|
||||
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
|
||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
|
||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||
#+PROPERTY: header-args:matlab+ :comments org
|
||||
@ -29,8 +25,11 @@
|
||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
||||
#+PROPERTY: header-args:latex+ :results raw replace :buffer no
|
||||
#+PROPERTY: header-args:latex+ :results file raw replace
|
||||
#+PROPERTY: header-args:latex+ :buffer no
|
||||
#+PROPERTY: header-args:latex+ :tangle no
|
||||
#+PROPERTY: header-args:latex+ :eval no-export
|
||||
#+PROPERTY: header-args:latex+ :exports results
|
||||
#+PROPERTY: header-args:latex+ :mkdirp yes
|
||||
#+PROPERTY: header-args:latex+ :output-dir figs
|
||||
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
|
||||
|
Loading…
Reference in New Issue
Block a user