Compare commits
2 Commits
bd054638b2
...
f9c8a7b5fb
Author | SHA1 | Date | |
---|---|---|---|
f9c8a7b5fb | |||
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"?>
|
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-07 jeu. 14:04 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Alternative Micro-Station Architecture</title>
|
<title>Alternative Micro-Station Architecture</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<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>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Alternative Micro-Station Architecture</h1>
|
<h1 class="title">Alternative Micro-Station Architecture</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgfc342c6">1. Current Micro-Station Architecture</a></li>
|
<li><a href="#org0cd332b">1. Current Micro-Station Architecture</a></li>
|
||||||
<li><a href="#orgc09ec50">2. Alternative Micro-Station Architecture</a></li>
|
<li><a href="#orgd7cf2e3">2. Alternative Micro-Station Architecture</a></li>
|
||||||
<li><a href="#org247d72d">3. Alternative Metrology Architecture</a></li>
|
<li><a href="#org824aa14">3. Alternative Metrology Architecture</a></li>
|
||||||
<li><a href="#orge88a434">4. First rough specification of the stages - Maneuverability</a></li>
|
<li><a href="#org107818e">4. First rough specification of the stages - Maneuverability</a></li>
|
||||||
<li><a href="#org44e1330">5. Advantages</a></li>
|
<li><a href="#org5a1297a">5. Advantages</a></li>
|
||||||
<li><a href="#org62007a3">6. Disadvantages</a></li>
|
<li><a href="#org880bc68">6. Disadvantages</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgfc342c6" class="outline-2">
|
<div id="outline-container-org0cd332b" class="outline-2">
|
||||||
<h2 id="orgfc342c6"><span class="section-number-2">1</span> Current Micro-Station Architecture</h2>
|
<h2 id="org0cd332b"><span class="section-number-2">1</span> Current Micro-Station Architecture</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<b>Motion Requirements</b>:
|
<b>Motion Requirements</b>:
|
||||||
@ -62,11 +56,11 @@ For each of these motion requirements, a position stage is associated:
|
|||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The architecture is shown in Figure <a href="#org41ed0af">1</a>.
|
The architecture is shown in Figure <a href="#org8583068">1</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org41ed0af" class="figure">
|
<div id="org8583068" class="figure">
|
||||||
<p><img src="figs/nass_schematic.png" alt="nass_schematic.png" />
|
<p><img src="figs/nass_schematic.png" alt="nass_schematic.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Architecture of the Micro-Station</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc09ec50" class="outline-2">
|
<div id="outline-container-orgd7cf2e3" class="outline-2">
|
||||||
<h2 id="orgc09ec50"><span class="section-number-2">2</span> Alternative Micro-Station Architecture</h2>
|
<h2 id="orgd7cf2e3"><span class="section-number-2">2</span> Alternative Micro-Station Architecture</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
If we remove the requirement of having to control each motion with an independent position stage, we can think of other mechanical architectures.
|
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>
|
||||||
|
|
||||||
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>One long stroke hexapod for position</li>
|
<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>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgac922d2" class="figure">
|
<div id="org8000986" class="figure">
|
||||||
<p><img src="figs/nass_concept.png" alt="nass_concept.png" />
|
<p><img src="figs/nass_concept.png" alt="nass_concept.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Alternative Micro-Station Architecture</p>
|
<p><span class="figure-number">Figure 2: </span>Alternative Micro-Station Architecture</p>
|
||||||
</div>
|
</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><img src="figs/alternative_nass_concept.jpg" alt="alternative_nass_concept.jpg" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 3: </span>Alternative Micro-Station Architecture</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org247d72d" class="outline-2">
|
<div id="outline-container-org824aa14" class="outline-2">
|
||||||
<h2 id="org247d72d"><span class="section-number-2">3</span> Alternative Metrology Architecture</h2>
|
<h2 id="org824aa14"><span class="section-number-2">3</span> Alternative Metrology Architecture</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<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.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge88a434" class="outline-2">
|
<div id="outline-container-org107818e" class="outline-2">
|
||||||
<h2 id="orge88a434"><span class="section-number-2">4</span> First rough specification of the stages - Maneuverability</h2>
|
<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">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<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):
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org44e1330" class="outline-2">
|
<div id="outline-container-org5a1297a" class="outline-2">
|
||||||
<h2 id="org44e1330"><span class="section-number-2">5</span> Advantages</h2>
|
<h2 id="org5a1297a"><span class="section-number-2">5</span> Advantages</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
<p>
|
<p>
|
||||||
<b>Mechanics</b>:
|
<b>Mechanics</b>:
|
||||||
@ -252,8 +246,8 @@ Also Tx scans and Rx scans can be performed.</li>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org62007a3" class="outline-2">
|
<div id="outline-container-org880bc68" class="outline-2">
|
||||||
<h2 id="org62007a3"><span class="section-number-2">6</span> Disadvantages</h2>
|
<h2 id="org880bc68"><span class="section-number-2">6</span> Disadvantages</h2>
|
||||||
<div class="outline-text-2" id="text-6">
|
<div class="outline-text-2" id="text-6">
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>Possible singularities in the required maneuverability for the Long stroke Hexapod?
|
<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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</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"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-07 jeu. 14:05 -->
|
<!-- 2021-02-20 sam. 23:09 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Centrifugal Forces</title>
|
<title>Centrifugal Forces</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Centrifugal Forces</h1>
|
<h1 class="title">Centrifugal Forces</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org49834ed">1. Parameters</a></li>
|
<li><a href="#org5199302">1. Parameters</a></li>
|
||||||
<li><a href="#org4b7747e">2. Centrifugal forces for light and heavy sample</a></li>
|
<li><a href="#orga2ea10d">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="#orgf375b50">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="#orge7fb13d">4. Maximum rotation speed as a function of the mass</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -52,7 +56,7 @@ This is the case then the sample is moved by the micro-hexapod.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>\(M\) is the total mass of the rotating elements in \([kg]\)</li>
|
<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>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgd84fe6e" class="figure">
|
<div id="org91ed599" class="figure">
|
||||||
<p><img src="./figs/centrifugal.png" alt="centrifugal.png" />
|
<p><img src="./figs/centrifugal.png" alt="centrifugal.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Centrifugal forces</p>
|
<p><span class="figure-number">Figure 1: </span>Centrifugal forces</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org49834ed" class="outline-2">
|
<div id="outline-container-org5199302" class="outline-2">
|
||||||
<h2 id="org49834ed"><span class="section-number-2">1</span> Parameters</h2>
|
<h2 id="org5199302"><span class="section-number-2">1</span> Parameters</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
We define some parameters for the computation.
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">M_light = 16; % mass of excentred parts mooving [kg]
|
<pre class="src src-matlab"> M_light = 16; <span class="org-comment">% mass of excentred parts mooving [kg]</span>
|
||||||
M_heavy = 65; % [kg]
|
M_heavy = 65; <span class="org-comment">% [kg]</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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.
|
For the light mass, the rotation speed is 60rpm whereas for the heavy mass, it is equal to 1rpm.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">w_light = 2*pi; % 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*pi/60; % rotational speed [rad/s]
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -97,14 +101,14 @@ w_heavy = 2*pi/60; % rotational speed [rad/s]
|
|||||||
Finally, we consider a mass eccentricity of \(10\,mm\).
|
Finally, we consider a mass eccentricity of \(10\,mm\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4b7747e" class="outline-2">
|
<div id="outline-container-orga2ea10d" class="outline-2">
|
||||||
<h2 id="org4b7747e"><span class="section-number-2">2</span> Centrifugal forces for light and heavy sample</h2>
|
<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">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
From the formula \(F_c = m \omega^2 r\), we obtain the values shown below.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org92c9f54" class="outline-2">
|
<div id="outline-container-orgf375b50" class="outline-2">
|
||||||
<h2 id="org92c9f54"><span class="section-number-2">3</span> Centrifugal forces as a function of the rotation speed</h2>
|
<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">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<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>
|
</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><img src="figs/centrifugal_forces_rpm.png" alt="centrifugal_forces_rpm.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Centrifugal forces function of the rotation speed</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb7f1acf" class="outline-2">
|
<div id="outline-container-orge7fb13d" class="outline-2">
|
||||||
<h2 id="orgb7f1acf"><span class="section-number-2">4</span> Maximum rotation speed as a function of the mass</h2>
|
<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">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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_sample = 0<span class="org-type">:</span>1<span class="org-type">:</span>100;
|
||||||
M_reflector = 15;
|
M_reflector = 15;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/max_force_rpm.png" alt="max_force_rpm.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,37 +1,32 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-17 ven. 09:34 -->
|
<!-- 2021-02-20 sam. 23:07 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Compensating the gravity forces to start at steady state</title>
|
<title>Compensating the gravity forces to start at steady state</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<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>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Compensating the gravity forces to start at steady state</h1>
|
<h1 class="title">Compensating the gravity forces to start at steady state</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org356e04b">1. Initialization of the Experimental Conditions</a></li>
|
<li><a href="#orgb5e305a">1. Initialization of the Experimental Conditions</a></li>
|
||||||
<li><a href="#org263e5db">2. Without compensation</a></li>
|
<li><a href="#org96a269f">2. Without compensation</a></li>
|
||||||
<li><a href="#orgfd6d9e9">3. Simulation to compute the required force in each joint</a></li>
|
<li><a href="#orged240b5">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="#org25738bf">4. New simulation with compensation of gravity forces</a></li>
|
||||||
<li><a href="#orgb714922">5. Conclusion</a></li>
|
<li><a href="#orgb003af1">5. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -41,19 +36,19 @@ In this file is shown a technique used to compensate the gravity forces at t=0.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
In order to start the simulation at steady state in presence of gravity:
|
In order to start the simulation at steady state in presence of gravity:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#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="#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="#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>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-org356e04b" class="outline-2">
|
<div id="outline-container-orgb5e305a" class="outline-2">
|
||||||
<h2 id="org356e04b"><span class="section-number-2">1</span> Initialization of the Experimental Conditions</h2>
|
<h2 id="orgb5e305a"><span class="section-number-2">1</span> Initialization of the Experimental Conditions</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
We don’t inject any perturbations and no reference tracking.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org263e5db" class="outline-2">
|
<div id="outline-container-org96a269f" class="outline-2">
|
||||||
<h2 id="org263e5db"><span class="section-number-2">2</span> Without compensation</h2>
|
<h2 id="org96a269f"><span class="section-number-2">2</span> Without compensation</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="org4bc70b2"></a>
|
<a id="orgf3b9673"></a>
|
||||||
Let’s simulate the system without any compensation of gravity forces.
|
Let’s simulate the system without any compensation of gravity forces.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -111,10 +106,10 @@ sim_no_compensation = simout;
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/transient_phase_gravity_no_compensation.png" alt="transient_phase_gravity_no_compensation.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgfd6d9e9" class="outline-2">
|
<div id="outline-container-orged240b5" class="outline-2">
|
||||||
<h2 id="orgfd6d9e9"><span class="section-number-2">3</span> Simulation to compute the required force in each joint</h2>
|
<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">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<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.
|
We here wish to simulate the system in order to compute the required force in each joint to compensate the gravity forces.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -318,11 +313,11 @@ We save these forces in <code>Foffset.mat</code>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org44bde7a" class="outline-2">
|
<div id="outline-container-org25738bf" class="outline-2">
|
||||||
<h2 id="org44bde7a"><span class="section-number-2">4</span> New simulation with compensation of gravity forces</h2>
|
<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">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
<a id="org5364ea3"></a>
|
<a id="orga475c79"></a>
|
||||||
We now initialize the stages with the option <code>Foffset</code>.
|
We now initialize the stages with the option <code>Foffset</code>.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
@ -358,17 +353,17 @@ sim_compensation = simout;
|
|||||||
Verification that nothing is moving
|
Verification that nothing is moving
|
||||||
</p>
|
</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><img src="figs/transient_phase_gravity_compensation.png" alt="transient_phase_gravity_compensation.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgb714922" class="outline-2">
|
<div id="outline-container-orgb003af1" class="outline-2">
|
||||||
<h2 id="orgb714922"><span class="section-number-2">5</span> Conclusion</h2>
|
<h2 id="orgb003af1"><span class="section-number-2">5</span> Conclusion</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
<div class="important">
|
<div class="important" id="org3329ee9">
|
||||||
<p>
|
<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 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.
|
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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,73 +1,77 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-17 ven. 09:35 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Control of the Nano-Active-Stabilization-System</title>
|
<title>Control of the Nano-Active-Stabilization-System</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Control of the Nano-Active-Stabilization-System</h1>
|
<h1 class="title">Control of the Nano-Active-Stabilization-System</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org15699e9">1. Control Configuration - Introduction</a></li>
|
<li><a href="#org25c471e">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="#orgcd0731f">2. Tracking Control in the Frame of the Nano-Hexapod - Basic Architectures</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org970ab39">2.1. Control in the frame of the Legs</a></li>
|
<li><a href="#orgbc69eea">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="#org65bc213">2.2. Control in the Cartesian frame</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#org3546873">3.1. Integral Force Feedback</a></li>
|
<li><a href="#orge25231e">3.1. Integral Force Feedback</a></li>
|
||||||
<li><a href="#org722b371">3.2. Direct Relative Velocity Feedback</a></li>
|
<li><a href="#org66ad123">3.2. Direct Relative Velocity Feedback</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgca70c79">4. HAC-LAC Architectures (link)</a>
|
<li><a href="#orgf83465a">4. HAC-LAC Architectures (link)</a>
|
||||||
<ul>
|
<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="#org3a2dfa2">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="#org27fd54b">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="#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="#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="#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="#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="#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="#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="#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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgab73896">5. Cascade Architectures (link)</a>
|
<li><a href="#orge5dd5fd">5. Cascade Architectures (link)</a>
|
||||||
<ul>
|
<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="#org9b331a4">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="#org2f8d9f9">5.2. Cascade Control with HAC-LAC Inner Loop and Primary Controller in the joint space</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org4ac6d11">6. Force Control (link)</a></li>
|
<li><a href="#org3a980c5">6. Force Control (link)</a></li>
|
||||||
<li><a href="#org5840a0b">7. Other Control Architectures</a>
|
<li><a href="#org73661f1">7. Other Control Architectures</a>
|
||||||
<ul>
|
<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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -75,7 +79,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>\(\bm{\tau}\): Forces applied in each leg</li>
|
<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>
|
</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><img src="figs/control_architecture_plant.png" alt="control_architecture_plant.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Block diagram with the inputs and outputs of the system</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>
|
<p>
|
||||||
In order to position the Sample with respect to the granite, we must use the measurement \(\bm{\mathcal{X}}\) in the control loop.
|
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}\).
|
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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -106,7 +110,7 @@ This can we considered as:
|
|||||||
</ul>
|
</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><img src="figs/control_architecture_pos_error.png" alt="control_architecture_pos_error.png" />
|
||||||
</p>
|
</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>
|
<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}}\).
|
In this document, we see how the different outputs of the system can be used to control of position \(\bm{\mathcal{X}}\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-org15699e9" class="outline-2">
|
<div id="outline-container-org25c471e" class="outline-2">
|
||||||
<h2 id="org15699e9"><span class="section-number-2">1</span> Control Configuration - Introduction</h2>
|
<h2 id="org25c471e"><span class="section-number-2">1</span> Control Configuration - Introduction</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
In this section, we discuss the control configuration for the NASS.
|
In this section, we discuss the control configuration for the NASS.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>
|
</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>
|
<p>
|
||||||
@ -149,24 +153,24 @@ Decoupling elements will be used to convert quantities from the joint space to t
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2be3166" class="outline-2">
|
<div id="outline-container-orgcd0731f" 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>
|
<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">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="org251e3c9"></a>
|
<a id="orga1c5122"></a>
|
||||||
</p>
|
</p>
|
||||||
<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.
|
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.
|
These to configuration are described in the next two sections.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org970ab39" class="outline-3">
|
<div id="outline-container-orgbc69eea" class="outline-3">
|
||||||
<h3 id="org970ab39"><span class="section-number-3">2.1</span> Control in the frame of the Legs</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org8583193"></a>
|
<a id="org92ab294"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -198,7 +202,7 @@ Finally, a diagonal (Decentralized) controller \(\bm{K}_\mathcal{L}\) can be use
|
|||||||
</p>
|
</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><img src="figs/control_architecture_leg_frame.png" alt="control_architecture_leg_frame.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 3: </span>Control in the frame of the legs</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org82193fb" class="outline-3">
|
<div id="outline-container-org65bc213" class="outline-3">
|
||||||
<h3 id="org82193fb"><span class="section-number-3">2.2</span> Control in the Cartesian frame</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgbd7e263"></a>
|
<a id="orgd4d12e5"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -221,7 +225,7 @@ These forces are then converted to forces applied in each of the nano-hexapod&rs
|
|||||||
</p>
|
</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><img src="figs/control_architecture_cartesian_frame.png" alt="control_architecture_cartesian_frame.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>Control in the cartesian Frame (rotating frame attached to the nano-hexapod’s base)</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7d7b7f4" class="outline-2">
|
<div id="outline-container-org9ef6b25" 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>
|
<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">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="org1b3cc21"></a>
|
<a id="orgaf5a850"></a>
|
||||||
</p>
|
</p>
|
||||||
<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>
|
</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>
|
<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.
|
The active damping techniques are studied in <a href="control_active_damping.html">this</a> document.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org3546873" class="outline-3">
|
<div id="outline-container-orge25231e" class="outline-3">
|
||||||
<h3 id="org3546873"><span class="section-number-3">3.1</span> Integral Force Feedback</h3>
|
<h3 id="orge25231e"><span class="section-number-3">3.1</span> Integral Force Feedback</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgb398117"></a>
|
<a id="org71c8197"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -286,7 +290,7 @@ A lead-lag can also be used instead of a pure integrator.
|
|||||||
</p>
|
</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><img src="figs/control_architecture_iff.png" alt="control_architecture_iff.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 5: </span>Integral Force Feedback</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org722b371" class="outline-3">
|
<div id="outline-container-org66ad123" class="outline-3">
|
||||||
<h3 id="org722b371"><span class="section-number-3">3.2</span> Direct Relative Velocity Feedback</h3>
|
<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">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgfaf575b"></a>
|
<a id="org4acc137"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -315,7 +319,7 @@ Each diagonal element consists of:
|
|||||||
\end{equation}
|
\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><img src="figs/control_architecture_dvf.png" alt="control_architecture_dvf.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 6: </span>Direct Velocity Feedback</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgca70c79" class="outline-2">
|
<div id="outline-container-orgf83465a" 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>
|
<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">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
<a id="org31fa800"></a>
|
<a id="org4b1b4af"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Here we can combine Active Damping Techniques (Low authority control) with a tracking controller (high authority control).
|
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>
|
||||||
|
|
||||||
<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>
|
</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>
|
<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.
|
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:
|
This approach has the following advantages:
|
||||||
</p>
|
</p>
|
||||||
@ -352,29 +356,29 @@ This approach has the following advantages:
|
|||||||
</blockquote>
|
</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><img src="figs/control_architecture_hac_lac.png" alt="control_architecture_hac_lac.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 7: </span>HAC-LAC Control Architecture</p>
|
<p><span class="figure-number">Figure 7: </span>HAC-LAC Control Architecture</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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.
|
Usually, the Low Authority Controller is first design, and then the High Authority Controller is designed based on the damped plant.
|
||||||
</p>
|
</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><img src="figs/control_architecture_hac_lac_one_input.png" alt="control_architecture_hac_lac_one_input.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 8: </span>HAC-LAC Architecture with a system having only one input</p>
|
<p><span class="figure-number">Figure 8: </span>HAC-LAC Architecture with a system having only one input</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgd9c84f0" class="outline-3">
|
<div id="outline-container-org3a2dfa2" 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>
|
<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 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><img src="figs/control_architecture_hac_iff_L.png" alt="control_architecture_hac_iff_L.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 9: </span>IFF + Control in the frame of the legs</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgeb80da1" class="outline-3">
|
<div id="outline-container-org27fd54b" 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>
|
<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 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><img src="figs/control_architecture_hac_iff_X.png" alt="control_architecture_hac_iff_X.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 10: </span>IFF + Control in the cartesian frame</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8b2b21e" class="outline-3">
|
<div id="outline-container-org8454531" 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>
|
<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="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><img src="figs/control_architecture_hac_iff_pos_X.png" alt="control_architecture_hac_iff_pos_X.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1c04b26" class="outline-3">
|
<div id="outline-container-org89a2695" 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>
|
<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="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><img src="figs/control_architecture_hac_iff_pos_L.png" alt="control_architecture_hac_iff_pos_L.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org83b9480" class="outline-3">
|
<div id="outline-container-orgac21cc9" 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>
|
<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="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><img src="figs/control_architecture_hac_dvf_pos_X.png" alt="control_architecture_hac_dvf_pos_X.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgdbdd7d4" class="outline-3">
|
<div id="outline-container-org6676bde" 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>
|
<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="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><img src="figs/control_architecture_hac_dvf_pos_L.png" alt="control_architecture_hac_dvf_pos_L.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -439,26 +443,26 @@ Usually, the Low Authority Controller is first design, and then the High Authori
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgab73896" class="outline-2">
|
<div id="outline-container-orge5dd5fd" class="outline-2">
|
||||||
<h2 id="orgab73896"><span class="section-number-2">5</span> Cascade Architectures (<a href="control_cascade.html">link</a>)</h2>
|
<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">
|
<div class="outline-text-2" id="text-5">
|
||||||
<p>
|
<p>
|
||||||
<a id="orga038762"></a>
|
<a id="org697801a"></a>
|
||||||
</p>
|
</p>
|
||||||
<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>
|
</p>
|
||||||
<blockquote>
|
<blockquote>
|
||||||
<p>
|
<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.
|
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>.
|
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>.
|
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 class='org-ref-reference' href="#taghirad13_paral">taghirad13_paral</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>
|
</p>
|
||||||
</blockquote>
|
</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><img src="figs/control_architecture_cascade_control.png" alt="control_architecture_cascade_control.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 15: </span>Cascade Control Architecture</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.
|
The inner loop can be composed of the system controlled with the HAC-LAC topology.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org3e5154f" class="outline-3">
|
<div id="outline-container-org9b331a4" 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>
|
<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 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><img src="figs/control_architecture_cascade_L.png" alt="control_architecture_cascade_L.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4353aca" class="outline-3">
|
<div id="outline-container-org2f8d9f9" 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>
|
<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 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><img src="figs/control_architecture_cascade_X.png" alt="control_architecture_cascade_X.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4ac6d11" class="outline-2">
|
<div id="outline-container-org3a980c5" class="outline-2">
|
||||||
<h2 id="org4ac6d11"><span class="section-number-2">6</span> Force Control (<a href="control_force.html">link</a>)</h2>
|
<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">
|
<div class="outline-text-2" id="text-6">
|
||||||
<p>
|
<p>
|
||||||
Signals:
|
Signals:
|
||||||
@ -517,41 +521,41 @@ Signals:
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
<div class="figure">
|
<div id="org17f57fd" class="figure">
|
||||||
<p><img src="figs/control_architecture_force.png" alt="control_architecture_force.png" />
|
<p><img src="figs/control_architecture_force.png" alt="control_architecture_force.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5840a0b" class="outline-2">
|
<div id="outline-container-org73661f1" class="outline-2">
|
||||||
<h2 id="org5840a0b"><span class="section-number-2">7</span> Other Control Architectures</h2>
|
<h2 id="org73661f1"><span class="section-number-2">7</span> Other Control Architectures</h2>
|
||||||
<div class="outline-text-2" id="text-7">
|
<div class="outline-text-2" id="text-7">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org5be51f2" class="outline-3">
|
<div id="outline-container-org26f61ba" 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>
|
<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">
|
<div class="outline-text-3" id="text-7-1">
|
||||||
<p>
|
<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.
|
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>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<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>
|
</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><img src="figs/control_architecture_fixed_rz.png" alt="control_architecture_fixed_rz.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 19: </span>Figure caption</p>
|
<p><span class="figure-number">Figure 19: </span>Figure caption</p>
|
||||||
</div>
|
</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><img src="figs/control_architecture_fixed_Krz.png" alt="control_architecture_fixed_Krz.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 20: </span>Figure caption</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>
|
<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>
|
</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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</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"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-17 ven. 09:35 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Cascade Control applied on the Simscape Model</title>
|
<title>Cascade Control applied on the Simscape Model</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Cascade Control applied on the Simscape Model</h1>
|
<h1 class="title">Cascade Control applied on the Simscape Model</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org143e6e7">1. Initialization</a></li>
|
<li><a href="#org61c020f">1. Initialization</a></li>
|
||||||
<li><a href="#orga3bd04c">2. Low Authority Control - Integral Force Feedback \(\bm{K}_\text{IFF}\)</a>
|
<li><a href="#orgabcff63">2. Low Authority Control - Integral Force Feedback \(\bm{K}_\text{IFF}\)</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org702c612">2.1. Identification</a></li>
|
<li><a href="#org340d5c4">2.1. Identification</a></li>
|
||||||
<li><a href="#org1eda739">2.2. Plant</a></li>
|
<li><a href="#orga3a6bfe">2.2. Plant</a></li>
|
||||||
<li><a href="#orgf33a40f">2.3. Root Locus</a></li>
|
<li><a href="#org08443b2">2.3. Root Locus</a></li>
|
||||||
<li><a href="#orgd895b21">2.4. Controller and Loop Gain</a></li>
|
<li><a href="#orgfcc764a">2.4. Controller and Loop Gain</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#org259240d">3.1. Identification of the damped plant</a></li>
|
<li><a href="#org4c8cb18">3.1. Identification of the damped plant</a></li>
|
||||||
<li><a href="#orgfc86b4c">3.2. Obtained Plant</a></li>
|
<li><a href="#org8ad1542">3.2. Obtained Plant</a></li>
|
||||||
<li><a href="#orgdea5e17">3.3. Controller Design and Loop Gain</a></li>
|
<li><a href="#orge39ae16">3.3. Controller Design and Loop Gain</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#org82ca884">4.1. Identification of the linearized plant</a></li>
|
<li><a href="#orgfc45f6f">4.1. Identification of the linearized plant</a></li>
|
||||||
<li><a href="#org6f5b22e">4.2. Obtained Plant</a></li>
|
<li><a href="#org170c73f">4.2. Obtained Plant</a></li>
|
||||||
<li><a href="#org839cdb3">4.3. Controller Design</a></li>
|
<li><a href="#orge97b630">4.3. Controller Design</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org3300911">5. Simulation</a></li>
|
<li><a href="#org07fbc52">5. Simulation</a></li>
|
||||||
<li><a href="#org2943496">6. Results</a></li>
|
<li><a href="#org3e9cd70">6. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/cascade_control_architecture.png" alt="cascade_control_architecture.png" />
|
||||||
</p>
|
</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>
|
<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:
|
This cascade control is designed in three steps:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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>
|
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>
|
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>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-org143e6e7" class="outline-2">
|
<div id="outline-container-org61c020f" class="outline-2">
|
||||||
<h2 id="org143e6e7"><span class="section-number-2">1</span> Initialization</h2>
|
<h2 id="org61c020f"><span class="section-number-2">1</span> Initialization</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -108,8 +112,8 @@ initializeMirror();
|
|||||||
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeNanoHexapod(<span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span>);
|
<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);
|
initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -117,12 +121,12 @@ initializeSample(<span class="org-string">'mass'</span>, 1);
|
|||||||
We set the references that corresponds to a tomography experiment.
|
We set the references that corresponds to a tomography experiment.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances();
|
<pre class="src src-matlab"> initializeDisturbances();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -130,7 +134,7 @@ We set the references that corresponds to a tomography experiment.
|
|||||||
Open Loop.
|
Open Loop.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -138,7 +142,7 @@ Open Loop.
|
|||||||
And we put some gravity.
|
And we put some gravity.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -146,55 +150,55 @@ And we put some gravity.
|
|||||||
We log the signals.
|
We log the signals.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Kp = tf(zeros(6));
|
<pre class="src src-matlab"> Kp = tf(zeros(6));
|
||||||
Kl = tf(zeros(6));
|
Kl = tf(zeros(6));
|
||||||
Kiff = tf(zeros(6));
|
Kiff = tf(zeros(6));
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga3bd04c" class="outline-2">
|
<div id="outline-container-orgabcff63" class="outline-2">
|
||||||
<h2 id="orga3bd04c"><span class="section-number-2">2</span> Low Authority Control - Integral Force Feedback \(\bm{K}_\text{IFF}\)</h2>
|
<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">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="orga20c211"></a>
|
<a id="orgbc2e2fd"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org702c612" class="outline-3">
|
<div id="outline-container-org340d5c4" class="outline-3">
|
||||||
<h3 id="org702c612"><span class="section-number-3">2.1</span> Identification</h3>
|
<h3 id="org340d5c4"><span class="section-number-3">2.1</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
Let’s first identify the plant for the IFF controller.
|
Let’s first identify the plant for the IFF controller.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
<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>;
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
clear io; io_i = 1;
|
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'</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>
|
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>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||||
G_iff = linearize(mdl, io, 0);
|
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.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>};
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1eda739" class="outline-3">
|
<div id="outline-container-orga3a6bfe" class="outline-3">
|
||||||
<h3 id="org1eda739"><span class="section-number-3">2.2</span> Plant</h3>
|
<h3 id="orga3a6bfe"><span class="section-number-3">2.2</span> Plant</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<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><img src="figs/cascade_iff_plant.png" alt="cascade_iff_plant.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf33a40f" class="outline-3">
|
<div id="outline-container-org08443b2" class="outline-3">
|
||||||
<h3 id="orgf33a40f"><span class="section-number-3">2.3</span> Root Locus</h3>
|
<h3 id="org08443b2"><span class="section-number-3">2.3</span> Root Locus</h3>
|
||||||
<div class="outline-text-3" id="text-2-3">
|
<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><img src="figs/cascade_iff_root_locus.png" alt="cascade_iff_root_locus.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd895b21" class="outline-3">
|
<div id="outline-container-orgfcc764a" class="outline-3">
|
||||||
<h3 id="orgd895b21"><span class="section-number-3">2.4</span> Controller and Loop Gain</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-4">
|
||||||
<p>
|
<p>
|
||||||
We create the \(6 \times 6\) diagonal Integral Force Feedback controller.
|
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>
|
</p>
|
||||||
<div class="org-src-container">
|
<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;
|
<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);
|
Kiff = <span class="org-type">-</span>3000<span class="org-type">/</span>s<span class="org-type">*</span>eye(6);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/cascade_iff_loop_gain.png" alt="cascade_iff_loop_gain.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org101bfbc" class="outline-2">
|
<div id="outline-container-org5f8f119" 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>
|
<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">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="org9367d49"></a>
|
<a id="orgd16580b"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org259240d" class="outline-3">
|
<div id="outline-container-org4c8cb18" class="outline-3">
|
||||||
<h3 id="org259240d"><span class="section-number-3">3.1</span> Identification of the damped plant</h3>
|
<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">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
<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>;
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
clear io; io_i = 1;
|
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'</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>
|
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>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||||
Gl = linearize(mdl, io, 0);
|
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.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>};
|
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>
|
</pre>
|
||||||
</div>
|
</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.
|
These unstable poles are probably not physical, and they disappear when taking the minimum realization of the plant.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">isstable(Gl)
|
<pre class="src src-matlab"> isstable(Gl)
|
||||||
Gl = minreal(Gl);
|
Gl = minreal(Gl);
|
||||||
isstable(Gl)
|
isstable(Gl)
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgfc86b4c" class="outline-3">
|
<div id="outline-container-org8ad1542" class="outline-3">
|
||||||
<h3 id="orgfc86b4c"><span class="section-number-3">3.2</span> Obtained Plant</h3>
|
<h3 id="org8ad1542"><span class="section-number-3">3.2</span> Obtained Plant</h3>
|
||||||
<div class="outline-text-3" id="text-3-2">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -295,7 +299,7 @@ We can see that the plant is quite well decoupled.
|
|||||||
</p>
|
</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><img src="figs/cascade_hac_joint_plant.png" alt="cascade_hac_joint_plant.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-orgdea5e17" class="outline-3">
|
<div id="outline-container-orge39ae16" class="outline-3">
|
||||||
<h3 id="orgdea5e17"><span class="section-number-3">3.3</span> Controller Design and Loop Gain</h3>
|
<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">
|
<div class="outline-text-3" id="text-3-3">
|
||||||
<p>
|
<p>
|
||||||
The controller consists of:
|
The controller consists of:
|
||||||
@ -318,20 +322,20 @@ The controller consists of:
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
<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;
|
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>
|
<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))));
|
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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/cascade_hac_joint_loop_gain.png" alt="cascade_hac_joint_loop_gain.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org58f9f32" class="outline-2">
|
<div id="outline-container-org11a22c2" class="outline-2">
|
||||||
<h2 id="org58f9f32"><span class="section-number-2">4</span> Primary Controller in the task space - \(\bm{K}_\mathcal{X}\)</h2>
|
<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">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgdd883a0"></a>
|
<a id="org20bc645"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org82ca884" class="outline-3">
|
<div id="outline-container-orgfc45f6f" class="outline-3">
|
||||||
<h3 id="org82ca884"><span class="section-number-3">4.1</span> Identification of the linearized plant</h3>
|
<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">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<p>
|
<p>
|
||||||
We know identify the dynamics between \(\bm{r}_{\mathcal{X}_n}\) and \(\bm{r}_\mathcal{X}\).
|
We know identify the dynamics between \(\bm{r}_{\mathcal{X}_n}\) and \(\bm{r}_\mathcal{X}\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
<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>;
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
clear io; io_i = 1;
|
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">'/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>
|
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>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||||
Gx = linearize(mdl, io, 0);
|
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.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>};
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -373,19 +377,19 @@ Gx.OutputName = {<span class="org-string">'Ex'</span>, <span class="org-string">
|
|||||||
As before, we take the minimum realization.
|
As before, we take the minimum realization.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">isstable(Gx)
|
<pre class="src src-matlab"> isstable(Gx)
|
||||||
Gx = minreal(Gx);
|
Gx = minreal(Gx);
|
||||||
isstable(Gx)
|
isstable(Gx)
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6f5b22e" class="outline-3">
|
<div id="outline-container-org170c73f" class="outline-3">
|
||||||
<h3 id="org6f5b22e"><span class="section-number-3">4.2</span> Obtained Plant</h3>
|
<h3 id="org170c73f"><span class="section-number-3">4.2</span> Obtained Plant</h3>
|
||||||
<div class="outline-text-3" id="text-4-2">
|
<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><img src="figs/cascade_primary_plant.png" alt="cascade_primary_plant.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org839cdb3" class="outline-3">
|
<div id="outline-container-orge97b630" class="outline-3">
|
||||||
<h3 id="org839cdb3"><span class="section-number-3">4.3</span> Controller Design</h3>
|
<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="outline-text-3" id="text-4-3">
|
||||||
<div class="org-src-container">
|
<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>
|
<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))));
|
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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/cascade_primary_loop_gain.png" alt="cascade_primary_loop_gain.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3300911" class="outline-2">
|
<div id="outline-container-org07fbc52" class="outline-2">
|
||||||
<h2 id="org3300911"><span class="section-number-2">5</span> Simulation</h2>
|
<h2 id="org07fbc52"><span class="section-number-2">5</span> Simulation</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simulink.mat'</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>);
|
<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>
|
</pre>
|
||||||
</div>
|
</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.
|
And we simulate the system.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">cascade_hac_lac = simout;
|
<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>);
|
save(<span class="org-string">'./mat/cascade_hac_lac.mat'</span>, <span class="org-string">'cascade_hac_lac'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2943496" class="outline-2">
|
<div id="outline-container-org3e9cd70" class="outline-2">
|
||||||
<h2 id="org2943496"><span class="section-number-2">6</span> Results</h2>
|
<h2 id="org3e9cd70"><span class="section-number-2">6</span> Results</h2>
|
||||||
<div class="outline-text-2" id="text-6">
|
<div class="outline-text-2" id="text-6">
|
||||||
<div class="org-src-container">
|
<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>);
|
<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>);
|
load(<span class="org-string">'./mat/cascade_hac_lac.mat'</span>, <span class="org-string">'cascade_hac_lac'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">n_av = 4;
|
<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));
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">t = cascade_hac_lac.Em.En.Time;
|
<pre class="src src-matlab"> t = cascade_hac_lac.Em.En.Time;
|
||||||
Ts = t(2)<span class="org-type">-</span>t(1);
|
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_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_ca, <span class="org-type">~</span>] = pwelch(cascade_hac_lac.Em.En.Data, han_win, [], [], 1<span class="org-type">/</span>Ts);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/cascade_hac_lac_tomography_psd.png" alt="cascade_hac_lac_tomography_psd.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/cascade_hac_lac_tomography_cas.png" alt="cascade_hac_lac_tomography_cas.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/cascade_hac_lac_tomography.png" alt="cascade_hac_lac_tomography.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,65 +1,69 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-17 ven. 09:35 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<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>
|
<title>Control in the Frame of the Legs applied on the Simscape Model</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Control in the Frame of the Legs applied on the Simscape Model</h1>
|
<h1 class="title">Control in the Frame of the Legs applied on the Simscape Model</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org1f22cdb">1. Decentralized Control</a>
|
<li><a href="#org1a08332">1. Decentralized Control</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org01937c0">1.1. Control Schematic</a></li>
|
<li><a href="#org88b6ca3">1.1. Control Schematic</a></li>
|
||||||
<li><a href="#orgc9e3b66">1.2. Initialize the Simscape Model</a></li>
|
<li><a href="#org9041934">1.2. Initialize the Simscape Model</a></li>
|
||||||
<li><a href="#org42afc36">1.3. Identification of the plant</a></li>
|
<li><a href="#org78bce32">1.3. Identification of the plant</a></li>
|
||||||
<li><a href="#org871560e">1.4. Plant Analysis</a></li>
|
<li><a href="#org3a56a98">1.4. Plant Analysis</a></li>
|
||||||
<li><a href="#org296e3de">1.5. Controller Design</a></li>
|
<li><a href="#org36df689">1.5. Controller Design</a></li>
|
||||||
<li><a href="#orgb7afa1e">1.6. Simulation</a></li>
|
<li><a href="#orgac5ea1c">1.6. Simulation</a></li>
|
||||||
<li><a href="#orgbb1dc16">1.7. Results</a></li>
|
<li><a href="#orga044079">1.7. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgfa4be92">2. HAC-LAC (IFF) Decentralized Control</a>
|
<li><a href="#orgeeaa041">2. HAC-LAC (IFF) Decentralized Control</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgbc4af09">2.1. Control Schematic</a></li>
|
<li><a href="#orge42dfda">2.1. Control Schematic</a></li>
|
||||||
<li><a href="#org5ac6c37">2.2. Initialize the Simscape Model</a></li>
|
<li><a href="#org790d1db">2.2. Initialize the Simscape Model</a></li>
|
||||||
<li><a href="#org0903106">2.3. Initialization</a></li>
|
<li><a href="#org110a4e9">2.3. Initialization</a></li>
|
||||||
<li><a href="#orge739f61">2.4. Identification for IFF</a></li>
|
<li><a href="#org8f68ab2">2.4. Identification for IFF</a></li>
|
||||||
<li><a href="#org08b6a99">2.5. Integral Force Feedback Controller</a></li>
|
<li><a href="#orgbe68cd0">2.5. Integral Force Feedback Controller</a></li>
|
||||||
<li><a href="#org06b5c75">2.6. Identification of the damped plant</a></li>
|
<li><a href="#orgca29231">2.6. Identification of the damped plant</a></li>
|
||||||
<li><a href="#org85a0730">2.7. Controller Design</a></li>
|
<li><a href="#org95df29b">2.7. Controller Design</a></li>
|
||||||
<li><a href="#org58ffd80">2.8. Simulation</a></li>
|
<li><a href="#org8b5710f">2.8. Simulation</a></li>
|
||||||
<li><a href="#orga01ccc6">2.9. Results</a></li>
|
<li><a href="#org791c2a5">2.9. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org21a9294">3. Conclusion</a></li>
|
<li><a href="#orgf9b95b3">3. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</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.
|
In this document, we apply some decentralized control to the NASS and see what level of performance can be obtained.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-org1f22cdb" class="outline-2">
|
<div id="outline-container-org1a08332" class="outline-2">
|
||||||
<h2 id="org1f22cdb"><span class="section-number-2">1</span> Decentralized Control</h2>
|
<h2 id="org1a08332"><span class="section-number-2">1</span> Decentralized Control</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org01937c0" class="outline-3">
|
<div id="outline-container-org88b6ca3" class="outline-3">
|
||||||
<h3 id="org01937c0"><span class="section-number-3">1.1</span> Control Schematic</h3>
|
<h3 id="org88b6ca3"><span class="section-number-3">1.1</span> Control Schematic</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -92,7 +96,7 @@ The signals are:
|
|||||||
</ul>
|
</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><img src="figs/decentralized_reference_tracking_L.png" alt="decentralized_reference_tracking_L.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Decentralized control for reference tracking</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc9e3b66" class="outline-3">
|
<div id="outline-container-org9041934" class="outline-3">
|
||||||
<h3 id="orgc9e3b66"><span class="section-number-3">1.2</span> Initialize the Simscape Model</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -122,8 +126,8 @@ initializeMirror();
|
|||||||
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeNanoHexapod(<span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span>);
|
<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);
|
initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -131,12 +135,12 @@ initializeSample(<span class="org-string">'mass'</span>, 1);
|
|||||||
We set the references that corresponds to a tomography experiment.
|
We set the references that corresponds to a tomography experiment.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances();
|
<pre class="src src-matlab"> initializeDisturbances();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -144,8 +148,8 @@ We set the references that corresponds to a tomography experiment.
|
|||||||
Open Loop.
|
Open Loop.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
Kl = tf(zeros(6));
|
Kl = tf(zeros(6));
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -153,7 +157,7 @@ Kl = tf(zeros(6));
|
|||||||
And we put some gravity.
|
And we put some gravity.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -161,41 +165,41 @@ And we put some gravity.
|
|||||||
We log the signals.
|
We log the signals.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org42afc36" class="outline-3">
|
<div id="outline-container-org78bce32" class="outline-3">
|
||||||
<h3 id="org42afc36"><span class="section-number-3">1.3</span> Identification of the plant</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
Let’s identify the transfer function from \(\bm{\tau}\) to \(\bm{\mathcal{L}}\).
|
Let’s identify the transfer function from \(\bm{\tau}\) to \(\bm{\mathcal{L}}\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
<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>;
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
clear io; io_i = 1;
|
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'</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>
|
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>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||||
G = linearize(mdl, io, 0);
|
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.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>};
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org871560e" class="outline-3">
|
<div id="outline-container-org3a56a98" class="outline-3">
|
||||||
<h3 id="org871560e"><span class="section-number-3">1.4</span> Plant Analysis</h3>
|
<h3 id="org3a56a98"><span class="section-number-3">1.4</span> Plant Analysis</h3>
|
||||||
<div class="outline-text-3" id="text-1-4">
|
<div class="outline-text-3" id="text-1-4">
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -207,7 +211,7 @@ We can see that:
|
|||||||
</ul>
|
</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><img src="figs/decentralized_control_plant_L.png" alt="decentralized_control_plant_L.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org296e3de" class="outline-3">
|
<div id="outline-container-org36df689" class="outline-3">
|
||||||
<h3 id="org296e3de"><span class="section-number-3">1.5</span> Controller Design</h3>
|
<h3 id="org36df689"><span class="section-number-3">1.5</span> Controller Design</h3>
|
||||||
<div class="outline-text-3" id="text-1-5">
|
<div class="outline-text-3" id="text-1-5">
|
||||||
<p>
|
<p>
|
||||||
The controller consists of:
|
The controller consists of:
|
||||||
@ -229,14 +233,14 @@ The controller consists of:
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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;
|
<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;
|
h = 1.5;
|
||||||
|
|
||||||
Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(G, wc)))) <span class="org-type">*</span> ...
|
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>
|
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>
|
((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>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>
|
||||||
@ -246,7 +250,7 @@ Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(G, wc)))) <span cla
|
|||||||
</div>
|
</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><img src="figs/decentralized_control_L_loop_gain.png" alt="decentralized_control_L_loop_gain.png" />
|
||||||
</p>
|
</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>
|
<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.
|
We add a minus sign to the controller as it is not included in the Simscape model.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb7afa1e" class="outline-3">
|
<div id="outline-container-orgac5ea1c" class="outline-3">
|
||||||
<h3 id="orgb7afa1e"><span class="section-number-3">1.6</span> Simulation</h3>
|
<h3 id="orgac5ea1c"><span class="section-number-3">1.6</span> Simulation</h3>
|
||||||
<div class="outline-text-3" id="text-1-6">
|
<div class="outline-text-3" id="text-1-6">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simulink.mat'</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>);
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">decentralized_L = simout;
|
<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>);
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbb1dc16" class="outline-3">
|
<div id="outline-container-orga044079" class="outline-3">
|
||||||
<h3 id="orgbb1dc16"><span class="section-number-3">1.7</span> Results</h3>
|
<h3 id="orga044079"><span class="section-number-3">1.7</span> Results</h3>
|
||||||
<div class="outline-text-3" id="text-1-7">
|
<div class="outline-text-3" id="text-1-7">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>);
|
<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>);
|
load(<span class="org-string">'./mat/tomo_exp_decentalized.mat'</span>, <span class="org-string">'decentralized_L'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/decentralized_L_position_errors.png" alt="decentralized_L_position_errors.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgfa4be92" class="outline-2">
|
<div id="outline-container-orgeeaa041" class="outline-2">
|
||||||
<h2 id="orgfa4be92"><span class="section-number-2">2</span> HAC-LAC (IFF) Decentralized Control</h2>
|
<h2 id="orgeeaa041"><span class="section-number-2">2</span> HAC-LAC (IFF) Decentralized Control</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
We here add an Active Damping Loop (Integral Force Feedback) prior to using the Decentralized control architecture using \(\bm{\mathcal{L}}\).
|
We here add an Active Damping Loop (Integral Force Feedback) prior to using the Decentralized control architecture using \(\bm{\mathcal{L}}\).
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbc4af09" class="outline-3">
|
<div id="outline-container-orge42dfda" class="outline-3">
|
||||||
<h3 id="orgbc4af09"><span class="section-number-3">2.1</span> Control Schematic</h3>
|
<h3 id="orge42dfda"><span class="section-number-3">2.1</span> Control Schematic</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -340,7 +344,7 @@ The signals are:
|
|||||||
</ul>
|
</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><img src="figs/decentralized_reference_tracking_L.png" alt="decentralized_reference_tracking_L.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 5: </span>Decentralized control for reference tracking</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5ac6c37" class="outline-3">
|
<div id="outline-container-org790d1db" class="outline-3">
|
||||||
<h3 id="org5ac6c37"><span class="section-number-3">2.2</span> Initialize the Simscape Model</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -370,8 +374,8 @@ initializeMirror();
|
|||||||
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeNanoHexapod(<span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span>);
|
<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);
|
initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -379,12 +383,12 @@ initializeSample(<span class="org-string">'mass'</span>, 1);
|
|||||||
We set the references that corresponds to a tomography experiment.
|
We set the references that corresponds to a tomography experiment.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances();
|
<pre class="src src-matlab"> initializeDisturbances();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -392,8 +396,8 @@ We set the references that corresponds to a tomography experiment.
|
|||||||
Open Loop.
|
Open Loop.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
Kl = tf(zeros(6));
|
Kl = tf(zeros(6));
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -401,7 +405,7 @@ Kl = tf(zeros(6));
|
|||||||
And we put some gravity.
|
And we put some gravity.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -409,90 +413,90 @@ And we put some gravity.
|
|||||||
We log the signals.
|
We log the signals.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0903106" class="outline-3">
|
<div id="outline-container-org110a4e9" class="outline-3">
|
||||||
<h3 id="org0903106"><span class="section-number-3">2.3</span> Initialization</h3>
|
<h3 id="org110a4e9"><span class="section-number-3">2.3</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-2-3">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
K_iff = tf(zeros(6));
|
K_iff = tf(zeros(6));
|
||||||
Kl = tf(zeros(6));
|
Kl = tf(zeros(6));
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge739f61" class="outline-3">
|
<div id="outline-container-org8f68ab2" class="outline-3">
|
||||||
<h3 id="orge739f61"><span class="section-number-3">2.4</span> Identification for IFF</h3>
|
<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="outline-text-3" id="text-2-4">
|
||||||
<div class="org-src-container">
|
<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>
|
<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>;
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
clear io; io_i = 1;
|
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'</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>
|
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>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||||
G_iff = linearize(mdl, io, 0);
|
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.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>};
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org08b6a99" class="outline-3">
|
<div id="outline-container-orgbe68cd0" class="outline-3">
|
||||||
<h3 id="org08b6a99"><span class="section-number-3">2.5</span> Integral Force Feedback Controller</h3>
|
<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="outline-text-3" id="text-2-5">
|
||||||
<div class="org-src-container">
|
<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;
|
<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);
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org06b5c75" class="outline-3">
|
<div id="outline-container-orgca29231" class="outline-3">
|
||||||
<h3 id="org06b5c75"><span class="section-number-3">2.6</span> Identification of the damped plant</h3>
|
<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="outline-text-3" id="text-2-6">
|
||||||
<div class="org-src-container">
|
<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>
|
<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>;
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
clear io; io_i = 1;
|
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'</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>
|
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>
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||||
Gd = linearize(mdl, io, 0);
|
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.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>};
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org85a0730" class="outline-3">
|
<div id="outline-container-org95df29b" class="outline-3">
|
||||||
<h3 id="org85a0730"><span class="section-number-3">2.7</span> Controller Design</h3>
|
<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="outline-text-3" id="text-2-7">
|
||||||
<div class="org-src-container">
|
<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;
|
<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;
|
h = 3;
|
||||||
|
|
||||||
Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(Gd, wc)))) <span class="org-type">*</span> ...
|
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>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>
|
((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>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> ...
|
||||||
@ -502,56 +506,56 @@ Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(Gd, wc)))) <span cl
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org58ffd80" class="outline-3">
|
<div id="outline-container-org8b5710f" class="outline-3">
|
||||||
<h3 id="org58ffd80"><span class="section-number-3">2.8</span> Simulation</h3>
|
<h3 id="org8b5710f"><span class="section-number-3">2.8</span> Simulation</h3>
|
||||||
<div class="outline-text-3" id="text-2-8">
|
<div class="outline-text-3" id="text-2-8">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simulink.mat'</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>);
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">decentralized_iff_L = simout;
|
<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>);
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga01ccc6" class="outline-3">
|
<div id="outline-container-org791c2a5" class="outline-3">
|
||||||
<h3 id="orga01ccc6"><span class="section-number-3">2.9</span> Results</h3>
|
<h3 id="org791c2a5"><span class="section-number-3">2.9</span> Results</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org21a9294" class="outline-2">
|
<div id="outline-container-orgf9b95b3" class="outline-2">
|
||||||
<h2 id="org21a9294"><span class="section-number-2">3</span> Conclusion</h2>
|
<h2 id="orgf9b95b3"><span class="section-number-2">3</span> Conclusion</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,34 +1,38 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-17 ven. 09:35 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Force Control applied on the Simscape Model</title>
|
<title>Force Control applied on the Simscape Model</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Force Control applied on the Simscape Model</h1>
|
<h1 class="title">Force Control applied on the Simscape Model</h1>
|
||||||
<p>
|
<p>
|
||||||
@ -47,20 +51,20 @@ Ideas:
|
|||||||
</ul>
|
</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><img src="figs/control_cascade_force_F.png" alt="control_cascade_force_F.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</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><img src="figs/control_cascade_force_tau.png" alt="control_cascade_force_tau.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,58 +1,62 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-05 mar. 10:34 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>HAC-LAC applied on the Simscape Model</title>
|
<title>HAC-LAC applied on the Simscape Model</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">HAC-LAC applied on the Simscape Model</h1>
|
<h1 class="title">HAC-LAC applied on the Simscape Model</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org1fe8594">1. Initialization</a></li>
|
<li><a href="#org689cb19">1. Initialization</a></li>
|
||||||
<li><a href="#orgfd54447">2. Low Authority Control - Direct Velocity Feedback \(\bm{K}_\mathcal{L}\)</a>
|
<li><a href="#org24d1d7f">2. Low Authority Control - Direct Velocity Feedback \(\bm{K}_\mathcal{L}\)</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orga860160">2.1. Identification</a></li>
|
<li><a href="#org68cbbe7">2.1. Identification</a></li>
|
||||||
<li><a href="#org7a2c131">2.2. Plant</a></li>
|
<li><a href="#org7c1c629">2.2. Plant</a></li>
|
||||||
<li><a href="#org46eb79b">2.3. Root Locus</a></li>
|
<li><a href="#org719e252">2.3. Root Locus</a></li>
|
||||||
<li><a href="#orgafbd7d0">2.4. Controller and Loop Gain</a></li>
|
<li><a href="#org2c42b90">2.4. Controller and Loop Gain</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org73445c2">3. Uncertainty Improvements thanks to the LAC control</a></li>
|
<li><a href="#org195a29c">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="#org81738ac">4. High Authority Control - \(\bm{K}_\mathcal{X}\)</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgc22e2f2">4.1. Identification of the damped plant</a></li>
|
<li><a href="#org94cb2c9">4.1. Identification of the damped plant</a></li>
|
||||||
<li><a href="#org6bca8e2">4.2. Controller Design</a></li>
|
<li><a href="#org2a269d5">4.2. Controller Design</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgb7ffa65">5. Simulation</a></li>
|
<li><a href="#org1171960">5. Simulation</a></li>
|
||||||
<li><a href="#org448f335">6. Results</a></li>
|
<li><a href="#orgad3e1c7">6. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -66,27 +70,27 @@ It is then compare to the wanted position of the Sample \(\bm{r}_\mathcal{X}\) i
|
|||||||
</p>
|
</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><img src="figs/hac_lac_control_schematic.png" alt="hac_lac_control_schematic.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>HAC-LAC Control Architecture used for the Control of the NASS</p>
|
<p><span class="figure-number">Figure 1: </span>HAC-LAC Control Architecture used for the Control of the NASS</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1fe8594" class="outline-2">
|
<div id="outline-container-org689cb19" class="outline-2">
|
||||||
<h2 id="org1fe8594"><span class="section-number-2">1</span> Initialization</h2>
|
<h2 id="org689cb19"><span class="section-number-2">1</span> Initialization</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -94,8 +98,8 @@ initializeMirror();
|
|||||||
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeNanoHexapod('actuator', 'piezo');
|
<pre class="src src-matlab"> initializeNanoHexapod(<span class="org-string">'actuator'</span>, <span class="org-string">'piezo'</span>);
|
||||||
initializeSample('mass', 1);
|
initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -103,12 +107,12 @@ initializeSample('mass', 1);
|
|||||||
We set the references that corresponds to a tomography experiment.
|
We set the references that corresponds to a tomography experiment.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances();
|
<pre class="src src-matlab"> initializeDisturbances();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -116,7 +120,7 @@ We set the references that corresponds to a tomography experiment.
|
|||||||
Open Loop.
|
Open Loop.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -124,7 +128,7 @@ Open Loop.
|
|||||||
And we put some gravity.
|
And we put some gravity.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -132,14 +136,14 @@ And we put some gravity.
|
|||||||
We log the signals.
|
We log the signals.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgfd54447" class="outline-2">
|
<div id="outline-container-org24d1d7f" class="outline-2">
|
||||||
<h2 id="orgfd54447"><span class="section-number-2">2</span> Low Authority Control - Direct Velocity Feedback \(\bm{K}_\mathcal{L}\)</h2>
|
<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">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
The first loop closed corresponds to a direct velocity feedback loop.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga860160" class="outline-3">
|
<div id="outline-container-org68cbbe7" class="outline-3">
|
||||||
<h3 id="orga860160"><span class="section-number-3">2.1</span> Identification</h3>
|
<h3 id="org68cbbe7"><span class="section-number-3">2.1</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">%% Name of the Simulink File
|
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||||
mdl = 'nass_model';
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
%% Input/Output definition
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
clear io; io_i = 1;
|
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, <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, '/Micro-Station'], 3, 'openoutput', [], 'Dnlm'); io_i = io_i + 1; % Relative Motion Outputs
|
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
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||||
G_dvf = linearize(mdl, io, 0);
|
G_dvf = linearize(mdl, io, 0);
|
||||||
G_dvf.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
|
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 = {'Dnlm1', 'Dnlm2', 'Dnlm3', 'Dnlm4', 'Dnlm5', 'Dnlm6'};
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7a2c131" class="outline-3">
|
<div id="outline-container-org7c1c629" class="outline-3">
|
||||||
<h3 id="org7a2c131"><span class="section-number-3">2.2</span> Plant</h3>
|
<h3 id="org7c1c629"><span class="section-number-3">2.2</span> Plant</h3>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org46eb79b" class="outline-3">
|
<div id="outline-container-org719e252" class="outline-3">
|
||||||
<h3 id="org46eb79b"><span class="section-number-3">2.3</span> Root Locus</h3>
|
<h3 id="org719e252"><span class="section-number-3">2.3</span> Root Locus</h3>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgafbd7d0" class="outline-3">
|
<div id="outline-container-org2c42b90" class="outline-3">
|
||||||
<h3 id="orgafbd7d0"><span class="section-number-3">2.4</span> Controller and Loop Gain</h3>
|
<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="outline-text-3" id="text-2-4">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org73445c2" class="outline-2">
|
<div id="outline-container-org195a29c" class="outline-2">
|
||||||
<h2 id="org73445c2"><span class="section-number-2">3</span> Uncertainty Improvements thanks to the LAC control</h2>
|
<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="outline-text-2" id="text-3">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">K_dvf_backup = K_dvf;
|
<pre class="src src-matlab"> K_dvf_backup = K_dvf;
|
||||||
initializeController('type', 'hac-dvf');
|
initializeController(<span class="org-string">'type'</span>, <span class="org-string">'hac-dvf'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">%% Name of the Simulink File
|
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||||
mdl = 'nass_model';
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
%% Input/Output definition
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
clear io; io_i = 1;
|
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, <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, '/Tracking Error'], 1, 'output', [], 'En'); io_i = io_i + 1; % Position Errror
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orged12a17" class="outline-2">
|
<div id="outline-container-org81738ac" class="outline-2">
|
||||||
<h2 id="orged12a17"><span class="section-number-2">4</span> High Authority Control - \(\bm{K}_\mathcal{X}\)</h2>
|
<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 class="outline-text-2" id="text-4">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgc22e2f2" class="outline-3">
|
<div id="outline-container-org94cb2c9" class="outline-3">
|
||||||
<h3 id="orgc22e2f2"><span class="section-number-3">4.1</span> Identification of the damped plant</h3>
|
<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="outline-text-3" id="text-4-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Kx = tf(zeros(6));
|
<pre class="src src-matlab"> Kx = tf(zeros(6));
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">%% Name of the Simulink File
|
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||||
mdl = 'nass_model';
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
%% Input/Output definition
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
clear io; io_i = 1;
|
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, <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, '/Tracking Error'], 1, 'output', [], 'En'); io_i = io_i + 1; % Position Errror
|
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
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||||
G = linearize(mdl, io, 0);
|
G = linearize(mdl, io, 0);
|
||||||
G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
|
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 = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'};
|
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>
|
</pre>
|
||||||
</div>
|
</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.
|
The minus sine is put here because there is already a minus sign included due to the computation of the position error.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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 = <span class="org-type">-</span>G<span class="org-type">*</span>inv(nano_hexapod.kinematics.J<span class="org-type">'</span>);
|
||||||
Gx.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'};
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6bca8e2" class="outline-3">
|
<div id="outline-container-org2a269d5" class="outline-3">
|
||||||
<h3 id="org6bca8e2"><span class="section-number-3">4.2</span> Controller Design</h3>
|
<h3 id="org2a269d5"><span class="section-number-3">4.2</span> Controller Design</h3>
|
||||||
<div class="outline-text-3" id="text-4-2">
|
<div class="outline-text-3" id="text-4-2">
|
||||||
<p>
|
<p>
|
||||||
The controller consists of:
|
The controller consists of:
|
||||||
@ -280,41 +284,41 @@ The controller consists of:
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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
|
<span class="org-comment">% Normalization of the gain of have a loop gain of 1 at frequency wc</span>
|
||||||
Kx = Kx.*diag(1./diag(abs(freqresp(Gx*Kx, wc))));
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb7ffa65" class="outline-2">
|
<div id="outline-container-org1171960" class="outline-2">
|
||||||
<h2 id="orgb7ffa65"><span class="section-number-2">5</span> Simulation</h2>
|
<h2 id="org1171960"><span class="section-number-2">5</span> Simulation</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
set_param(conf_simulink, 'StopTime', '2');
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -322,27 +326,27 @@ set_param(conf_simulink, 'StopTime', '2');
|
|||||||
And we simulate the system.
|
And we simulate the system.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">hac_dvf = simout;
|
<pre class="src src-matlab"> hac_dvf = simout;
|
||||||
save('./mat/tomo_exp_hac_lac.mat', 'hac_dvf');
|
save(<span class="org-string">'./mat/tomo_exp_hac_lac.mat'</span>, <span class="org-string">'hac_dvf'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org448f335" class="outline-2">
|
<div id="outline-container-orgad3e1c7" class="outline-2">
|
||||||
<h2 id="org448f335"><span class="section-number-2">6</span> Results</h2>
|
<h2 id="orgad3e1c7"><span class="section-number-2">6</span> Results</h2>
|
||||||
<div class="outline-text-2" id="text-6">
|
<div class="outline-text-2" id="text-6">
|
||||||
<p>
|
<p>
|
||||||
Let’s load the simulation when no control is applied.
|
Let’s load the simulation when no control is applied.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">load('./mat/experiment_tomography.mat', 'tomo_align_dist');
|
<pre class="src src-matlab"> load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_dist'</span>);
|
||||||
load('./mat/tomo_exp_hac_lac.mat', 'hac_dvf');
|
load(<span class="org-string">'./mat/tomo_exp_hac_lac.mat'</span>, <span class="org-string">'hac_dvf'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -350,7 +354,7 @@ load('./mat/tomo_exp_hac_lac.mat', 'hac_dvf');
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</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"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-05 mar. 10:34 -->
|
<!-- 2021-02-20 sam. 23:09 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Decentralize control to add virtual mass</title>
|
<title>Decentralize control to add virtual mass</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Decentralize control to add virtual mass</h1>
|
<h1 class="title">Decentralize control to add virtual mass</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org982b263">1. Initialization</a></li>
|
<li><a href="#org48b52bd">1. Initialization</a></li>
|
||||||
<li><a href="#org35a3822">2. Identification</a></li>
|
<li><a href="#org157dc5d">2. Identification</a></li>
|
||||||
<li><a href="#orgd6fc719">3. Adding Virtual Mass in the Leg’s Space</a>
|
<li><a href="#orgd072386">3. Adding Virtual Mass in the Leg’s Space</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orga27c9a0">3.1. Plant</a></li>
|
<li><a href="#org147b003">3.1. Plant</a></li>
|
||||||
<li><a href="#orgcbce41a">3.2. Controller Design</a></li>
|
<li><a href="#orgacd4421">3.2. Controller Design</a></li>
|
||||||
<li><a href="#orgca1f525">3.3. Identification of the Primary Plant</a></li>
|
<li><a href="#org4c460cf">3.3. Identification of the Primary Plant</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#orgdbe6a25">4.1. Plant</a></li>
|
<li><a href="#org3b61568">4.1. Plant</a></li>
|
||||||
<li><a href="#org571922f">4.2. Controller Design</a></li>
|
<li><a href="#orgf37b1c0">4.2. Controller Design</a></li>
|
||||||
<li><a href="#org4960701">4.3. Identification of the Primary Plant</a></li>
|
<li><a href="#orgcd22c9f">4.3. Identification of the Primary Plant</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org982b263" class="outline-2">
|
<div id="outline-container-org48b52bd" class="outline-2">
|
||||||
<h2 id="org982b263"><span class="section-number-2">1</span> Initialization</h2>
|
<h2 id="org48b52bd"><span class="section-number-2">1</span> Initialization</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
|
|
||||||
initializeSimscapeConfiguration();
|
initializeSimscapeConfiguration();
|
||||||
initializeDisturbances('enable', false);
|
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||||
initializeLoggingConfiguration('log', 'none');
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -80,7 +84,7 @@ initializeController('type', 'hac-dvf');
|
|||||||
The nano-hexapod has the following leg’s stiffness and damping.
|
The nano-hexapod has the following leg’s stiffness and damping.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -88,20 +92,20 @@ The nano-hexapod has the following leg’s stiffness and damping.
|
|||||||
We set the stiffness of the payload fixation:
|
We set the stiffness of the payload fixation:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org35a3822" class="outline-2">
|
<div id="outline-container-org157dc5d" class="outline-2">
|
||||||
<h2 id="org35a3822"><span class="section-number-2">2</span> Identification</h2>
|
<h2 id="org157dc5d"><span class="section-number-2">2</span> Identification</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
We identify the system for the following payload masses:
|
We identify the system for the following payload masses:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Ms = [1, 10, 50];
|
<pre class="src src-matlab"> Ms = [1, 10, 50];
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -111,15 +115,15 @@ Identification of the Primary plant without virtual add of mass
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgd6fc719" class="outline-2">
|
<div id="outline-container-orgd072386" class="outline-2">
|
||||||
<h2 id="orgd6fc719"><span class="section-number-2">3</span> Adding Virtual Mass in the Leg’s Space</h2>
|
<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 class="outline-text-2" id="text-3">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orga27c9a0" class="outline-3">
|
<div id="outline-container-org147b003" class="outline-3">
|
||||||
<h3 id="orga27c9a0"><span class="section-number-3">3.1</span> Plant</h3>
|
<h3 id="org147b003"><span class="section-number-3">3.1</span> Plant</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<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><img src="figs/virtual_mass_plant_L.png" alt="virtual_mass_plant_L.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Transfer function from \(\tau_i\) to \(d\mathcal{L}_i\) for three payload masses</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgcbce41a" class="outline-3">
|
<div id="outline-container-orgacd4421" class="outline-3">
|
||||||
<h3 id="orgcbce41a"><span class="section-number-3">3.2</span> Controller Design</h3>
|
<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="outline-text-3" id="text-3-2">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/virtual_mass_loop_gain_L.png" alt="virtual_mass_loop_gain_L.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Loop Gain for the addition of virtual mass in the leg’s space</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgca1f525" class="outline-3">
|
<div id="outline-container-org4c460cf" class="outline-3">
|
||||||
<h3 id="orgca1f525"><span class="section-number-3">3.3</span> Identification of the Primary Plant</h3>
|
<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 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><img src="figs/virtual_mass_L_primary_plant_X.png" alt="virtual_mass_L_primary_plant_X.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/virtual_mass_L_primary_plant_L.png" alt="virtual_mass_L_primary_plant_L.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc9131d0" class="outline-2">
|
<div id="outline-container-org3c74924" class="outline-2">
|
||||||
<h2 id="orgc9131d0"><span class="section-number-2">4</span> Adding Virtual Mass in the Task Space</h2>
|
<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 class="outline-text-2" id="text-4">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgdbe6a25" class="outline-3">
|
<div id="outline-container-org3b61568" class="outline-3">
|
||||||
<h3 id="orgdbe6a25"><span class="section-number-3">4.1</span> Plant</h3>
|
<h3 id="org3b61568"><span class="section-number-3">4.1</span> Plant</h3>
|
||||||
<div class="outline-text-3" id="text-4-1">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<p>
|
<p>
|
||||||
Let’s look at the transfer function from \(\bm{\mathcal{F}}\) to \(d\bm{\mathcal{X}}\):
|
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>
|
</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><img src="figs/virtual_mass_plant_X.png" alt="virtual_mass_plant_X.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org571922f" class="outline-3">
|
<div id="outline-container-orgf37b1c0" class="outline-3">
|
||||||
<h3 id="org571922f"><span class="section-number-3">4.2</span> Controller Design</h3>
|
<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="outline-text-3" id="text-4-2">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/virtual_mass_loop_gain_X.png" alt="virtual_mass_loop_gain_X.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 6: </span>Loop gain for virtual mass addition in the task space</p>
|
<p><span class="figure-number">Figure 6: </span>Loop gain for virtual mass addition in the task space</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4960701" class="outline-3">
|
<div id="outline-container-orgcd22c9f" class="outline-3">
|
||||||
<h3 id="org4960701"><span class="section-number-3">4.3</span> Identification of the Primary Plant</h3>
|
<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 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><img src="figs/virtual_mass_X_primary_plant_X.png" alt="virtual_mass_X_primary_plant_X.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/virtual_mass_X_primary_plant_L.png" alt="virtual_mass_X_primary_plant_L.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,145 +0,0 @@
|
|||||||
.org-bold { /* bold */ font-weight: bold; }
|
|
||||||
.org-bold-italic { /* bold-italic */ font-weight: bold; font-style: italic; }
|
|
||||||
.org-buffer-menu-buffer { /* buffer-menu-buffer */ font-weight: bold; }
|
|
||||||
.org-builtin { /* font-lock-builtin-face */ color: #7a378b; }
|
|
||||||
.org-button { /* button */ text-decoration: underline; }
|
|
||||||
.org-calendar-today { /* calendar-today */ text-decoration: underline; }
|
|
||||||
.org-change-log-acknowledgement { /* change-log-acknowledgement */ color: #b22222; }
|
|
||||||
.org-change-log-conditionals { /* change-log-conditionals */ color: #a0522d; }
|
|
||||||
.org-change-log-date { /* change-log-date */ color: #8b2252; }
|
|
||||||
.org-change-log-email { /* change-log-email */ color: #a0522d; }
|
|
||||||
.org-change-log-file { /* change-log-file */ color: #0000ff; }
|
|
||||||
.org-change-log-function { /* change-log-function */ color: #a0522d; }
|
|
||||||
.org-change-log-list { /* change-log-list */ color: #a020f0; }
|
|
||||||
.org-change-log-name { /* change-log-name */ color: #008b8b; }
|
|
||||||
.org-comint-highlight-input { /* comint-highlight-input */ font-weight: bold; }
|
|
||||||
.org-comint-highlight-prompt { /* comint-highlight-prompt */ color: #00008b; }
|
|
||||||
.org-comment { /* font-lock-comment-face */ color: #999988; font-style: italic; }
|
|
||||||
.org-comment-delimiter { /* font-lock-comment-delimiter-face */ color: #999988; font-style: italic; }
|
|
||||||
.org-completions-annotations { /* completions-annotations */ font-style: italic; }
|
|
||||||
.org-completions-common-part { /* completions-common-part */ color: #000000; background-color: #ffffff; }
|
|
||||||
.org-completions-first-difference { /* completions-first-difference */ font-weight: bold; }
|
|
||||||
.org-constant { /* font-lock-constant-face */ color: #008b8b; }
|
|
||||||
.org-diary { /* diary */ color: #ff0000; }
|
|
||||||
.org-diff-context { /* diff-context */ color: #7f7f7f; }
|
|
||||||
.org-diff-file-header { /* diff-file-header */ background-color: #b3b3b3; font-weight: bold; }
|
|
||||||
.org-diff-function { /* diff-function */ background-color: #cccccc; }
|
|
||||||
.org-diff-header { /* diff-header */ background-color: #cccccc; }
|
|
||||||
.org-diff-hunk-header { /* diff-hunk-header */ background-color: #cccccc; }
|
|
||||||
.org-diff-index { /* diff-index */ background-color: #b3b3b3; font-weight: bold; }
|
|
||||||
.org-diff-nonexistent { /* diff-nonexistent */ background-color: #b3b3b3; font-weight: bold; }
|
|
||||||
.org-diff-refine-change { /* diff-refine-change */ background-color: #d9d9d9; }
|
|
||||||
.org-dired-directory { /* dired-directory */ color: #0000ff; }
|
|
||||||
.org-dired-flagged { /* dired-flagged */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-dired-header { /* dired-header */ color: #228b22; }
|
|
||||||
.org-dired-ignored { /* dired-ignored */ color: #7f7f7f; }
|
|
||||||
.org-dired-mark { /* dired-mark */ color: #008b8b; }
|
|
||||||
.org-dired-marked { /* dired-marked */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-dired-perm-write { /* dired-perm-write */ color: #b22222; }
|
|
||||||
.org-dired-symlink { /* dired-symlink */ color: #a020f0; }
|
|
||||||
.org-dired-warning { /* dired-warning */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-doc { /* font-lock-doc-face */ color: #8b2252; }
|
|
||||||
.org-escape-glyph { /* escape-glyph */ color: #a52a2a; }
|
|
||||||
.org-file-name-shadow { /* file-name-shadow */ color: #7f7f7f; }
|
|
||||||
.org-flyspell-duplicate { /* flyspell-duplicate */ color: #cdad00; font-weight: bold; text-decoration: underline; }
|
|
||||||
.org-flyspell-incorrect { /* flyspell-incorrect */ color: #ff4500; font-weight: bold; text-decoration: underline; }
|
|
||||||
.org-fringe { /* fringe */ background-color: #f2f2f2; }
|
|
||||||
.org-function-name { /* font-lock-function-name-face */ color: teal; }
|
|
||||||
.org-header-line { /* header-line */ color: #333333; background-color: #e5e5e5; }
|
|
||||||
.org-help-argument-name { /* help-argument-name */ font-style: italic; }
|
|
||||||
.org-highlight { /* highlight */ background-color: #b4eeb4; }
|
|
||||||
.org-holiday { /* holiday */ background-color: #ffc0cb; }
|
|
||||||
.org-isearch { /* isearch */ color: #b0e2ff; background-color: #cd00cd; }
|
|
||||||
.org-isearch-fail { /* isearch-fail */ background-color: #ffc1c1; }
|
|
||||||
.org-italic { /* italic */ font-style: italic; }
|
|
||||||
.org-keyword { /* font-lock-keyword-face */ color: #0086b3; }
|
|
||||||
.org-lazy-highlight { /* lazy-highlight */ background-color: #afeeee; }
|
|
||||||
.org-link { /* link */ color: #0000ff; text-decoration: underline; }
|
|
||||||
.org-link-visited { /* link-visited */ color: #8b008b; text-decoration: underline; }
|
|
||||||
.org-log-edit-header { /* log-edit-header */ color: #a020f0; }
|
|
||||||
.org-log-edit-summary { /* log-edit-summary */ color: #0000ff; }
|
|
||||||
.org-log-edit-unknown-header { /* log-edit-unknown-header */ color: #b22222; }
|
|
||||||
.org-match { /* match */ background-color: #ffff00; }
|
|
||||||
.org-next-error { /* next-error */ background-color: #eedc82; }
|
|
||||||
.org-nobreak-space { /* nobreak-space */ color: #a52a2a; text-decoration: underline; }
|
|
||||||
.org-org-archived { /* org-archived */ color: #7f7f7f; }
|
|
||||||
.org-org-block { /* org-block */ color: #7f7f7f; }
|
|
||||||
.org-org-block-begin-line { /* org-block-begin-line */ color: #b22222; }
|
|
||||||
.org-org-block-end-line { /* org-block-end-line */ color: #b22222; }
|
|
||||||
.org-org-checkbox { /* org-checkbox */ font-weight: bold; }
|
|
||||||
.org-org-checkbox-statistics-done { /* org-checkbox-statistics-done */ color: #228b22; font-weight: bold; }
|
|
||||||
.org-org-checkbox-statistics-todo { /* org-checkbox-statistics-todo */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-org-clock-overlay { /* org-clock-overlay */ background-color: #ffff00; }
|
|
||||||
.org-org-code { /* org-code */ color: #7f7f7f; }
|
|
||||||
.org-org-column { /* org-column */ background-color: #e5e5e5; }
|
|
||||||
.org-org-column-title { /* org-column-title */ background-color: #e5e5e5; font-weight: bold; text-decoration: underline; }
|
|
||||||
.org-org-date { /* org-date */ color: #a020f0; text-decoration: underline; }
|
|
||||||
.org-org-document-info { /* org-document-info */ color: #191970; }
|
|
||||||
.org-org-document-info-keyword { /* org-document-info-keyword */ color: #7f7f7f; }
|
|
||||||
.org-org-document-title { /* org-document-title */ color: #191970; font-size: 144%; font-weight: bold; }
|
|
||||||
.org-org-done { /* org-done */ color: #228b22; font-weight: bold; }
|
|
||||||
.org-org-drawer { /* org-drawer */ color: #0000ff; }
|
|
||||||
.org-org-ellipsis { /* org-ellipsis */ color: #b8860b; text-decoration: underline; }
|
|
||||||
.org-org-footnote { /* org-footnote */ color: #a020f0; text-decoration: underline; }
|
|
||||||
.org-org-formula { /* org-formula */ color: #b22222; }
|
|
||||||
.org-org-headline-done { /* org-headline-done */ color: #bc8f8f; }
|
|
||||||
.org-org-hide { /* org-hide */ color: #ffffff; }
|
|
||||||
.org-org-latex-and-export-specials { /* org-latex-and-export-specials */ color: #8b4513; }
|
|
||||||
.org-org-level-1 { /* org-level-1 */ color: #0000ff; }
|
|
||||||
.org-org-level-2 { /* org-level-2 */ color: #a0522d; }
|
|
||||||
.org-org-level-3 { /* org-level-3 */ color: #a020f0; }
|
|
||||||
.org-org-level-4 { /* org-level-4 */ color: #b22222; }
|
|
||||||
.org-org-level-5 { /* org-level-5 */ color: #228b22; }
|
|
||||||
.org-org-level-6 { /* org-level-6 */ color: #008b8b; }
|
|
||||||
.org-org-level-7 { /* org-level-7 */ color: #7a378b; }
|
|
||||||
.org-org-level-8 { /* org-level-8 */ color: #8b2252; }
|
|
||||||
.org-org-link { /* org-link */ color: #0000ff; text-decoration: underline; }
|
|
||||||
.org-org-meta-line { /* org-meta-line */ color: #b22222; }
|
|
||||||
.org-org-mode-line-clock { /* org-mode-line-clock */ color: #000000; background-color: #bfbfbf; }
|
|
||||||
.org-org-mode-line-clock-overrun { /* org-mode-line-clock-overrun */ color: #000000; background-color: #ff0000; }
|
|
||||||
.org-org-quote { /* org-quote */ color: #7f7f7f; }
|
|
||||||
.org-org-scheduled { /* org-scheduled */ color: #006400; }
|
|
||||||
.org-org-scheduled-previously { /* org-scheduled-previously */ color: #b22222; }
|
|
||||||
.org-org-scheduled-today { /* org-scheduled-today */ color: #006400; }
|
|
||||||
.org-org-sexp-date { /* org-sexp-date */ color: #a020f0; }
|
|
||||||
.org-org-special-keyword { /* org-special-keyword */ color: #a020f0; }
|
|
||||||
.org-org-table { /* org-table */ color: #0000ff; }
|
|
||||||
.org-org-tag { /* org-tag */ font-weight: bold; }
|
|
||||||
.org-org-target { /* org-target */ text-decoration: underline; }
|
|
||||||
.org-org-time-grid { /* org-time-grid */ color: #b8860b; }
|
|
||||||
.org-org-todo { /* org-todo */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-org-upcoming-deadline { /* org-upcoming-deadline */ color: #b22222; }
|
|
||||||
.org-org-verbatim { /* org-verbatim */ color: #7f7f7f; }
|
|
||||||
.org-org-verse { /* org-verse */ color: #7f7f7f; }
|
|
||||||
.org-org-warning { /* org-warning */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-outline-1 { /* outline-1 */ color: #0000ff; }
|
|
||||||
.org-outline-2 { /* outline-2 */ color: #a0522d; }
|
|
||||||
.org-outline-3 { /* outline-3 */ color: #a020f0; }
|
|
||||||
.org-outline-4 { /* outline-4 */ color: #b22222; }
|
|
||||||
.org-outline-5 { /* outline-5 */ color: #228b22; }
|
|
||||||
.org-outline-6 { /* outline-6 */ color: #008b8b; }
|
|
||||||
.org-outline-7 { /* outline-7 */ color: #7a378b; }
|
|
||||||
.org-outline-8 { /* outline-8 */ color: #8b2252; }
|
|
||||||
.org-preprocessor { /* font-lock-preprocessor-face */ color: #7a378b; }
|
|
||||||
.org-query-replace { /* query-replace */ color: #b0e2ff; background-color: #cd00cd; }
|
|
||||||
.org-regexp-grouping-backslash { /* font-lock-regexp-grouping-backslash */ font-weight: bold; }
|
|
||||||
.org-regexp-grouping-construct { /* font-lock-regexp-grouping-construct */ font-weight: bold; }
|
|
||||||
.org-region { /* region */ background-color: #eedc82; }
|
|
||||||
.org-secondary-selection { /* secondary-selection */ background-color: #ffff00; }
|
|
||||||
.org-shadow { /* shadow */ color: #7f7f7f; }
|
|
||||||
.org-show-paren-match { /* show-paren-match */ background-color: #40e0d0; }
|
|
||||||
.org-show-paren-mismatch { /* show-paren-mismatch */ color: #ffffff; background-color: #a020f0; }
|
|
||||||
.org-string { /* font-lock-string-face */ color: #dd1144; }
|
|
||||||
.org-tool-bar { /* tool-bar */ color: #000000; background-color: #bfbfbf; }
|
|
||||||
.org-tooltip { /* tooltip */ color: #000000; background-color: #ffffe0; }
|
|
||||||
.org-trailing-whitespace { /* trailing-whitespace */ background-color: #ff0000; }
|
|
||||||
.org-type { /* font-lock-type-face */ color: #228b22; }
|
|
||||||
.org-underline { /* underline */ text-decoration: underline; }
|
|
||||||
.org-variable-name { /* font-lock-variable-name-face */ color: teal; }
|
|
||||||
.org-warning { /* font-lock-warning-face */ color: #ff0000; font-weight: bold; }
|
|
||||||
.org-widget-button { /* widget-button */ font-weight: bold; }
|
|
||||||
.org-widget-button-pressed { /* widget-button-pressed */ color: #ff0000; }
|
|
||||||
.org-widget-documentation { /* widget-documentation */ color: #006400; }
|
|
||||||
.org-widget-field { /* widget-field */ background-color: #d9d9d9; }
|
|
||||||
.org-widget-inactive { /* widget-inactive */ color: #7f7f7f; }
|
|
||||||
.org-widget-single-line-field { /* widget-single-line-field */ background-color: #d9d9d9; }
|
|
File diff suppressed because it is too large
Load Diff
@ -3,31 +3,36 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-09-01 mar. 13:48 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Identification of the disturbances</title>
|
<title>Identification of the disturbances</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Identification of the disturbances</h1>
|
<h1 class="title">Identification of the disturbances</h1>
|
||||||
<div id="table-of-contents">
|
<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="#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="#Noise-Budget">6. Noise Budget</a></li>
|
||||||
<li><a href="#Save">7. Save</a></li>
|
<li><a href="#Save">7. Save</a></li>
|
||||||
<li><a href="#orgd564a58">8. Time Domain Disturbances</a></li>
|
<li><a href="#orgca3331b">8. Time Domain Disturbances</a></li>
|
||||||
<li><a href="#org8212830">9. Time Domain Effect of Disturbances</a>
|
<li><a href="#orgbbaf1e8">9. Time Domain Effect of Disturbances</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org76c96f4">9.1. Initialization of the Experiment</a></li>
|
<li><a href="#org44ce5e0">9.1. Initialization of the Experiment</a></li>
|
||||||
<li><a href="#orgf9c1ad9">9.2. Simulations</a></li>
|
<li><a href="#org6eb944e">9.2. Simulations</a></li>
|
||||||
<li><a href="#org8107e0b">9.3. Comparison</a></li>
|
<li><a href="#org0e0c592">9.3. Comparison</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -58,7 +63,7 @@ The goal here is to extract the Power Spectral Density of the sources of perturb
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>\(D_w\): Ground Motion</li>
|
<li>\(D_w\): Ground Motion</li>
|
||||||
@ -67,11 +72,11 @@ These forces can be due to imperfect guiding for instance.</li>
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/uniaxial-model-micro-station.png" alt="uniaxial-model-micro-station.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Schematic of the Micro Station and the sources of disturbance</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:
|
This file is divided in the following sections:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>Section <a href="#org7cdab70">1</a>: the simscape model used here is presented</li>
|
<li>Section <a href="#orga31fad3">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="#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="#org5636fee">3</a>: the bode plot of those transfer functions are shown</li>
|
<li>Section <a href="#orgaf4acdc">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="#org01aa3d0">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="#org5b257d4">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="#org0e0f7ed">6</a>: with the computed PSD, the noise budget of the system is done</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-Simscape-Model" class="outline-2">
|
<div id="outline-container-Simscape-Model" class="outline-2">
|
||||||
<h2 id="Simscape-Model"><span class="section-number-2">1</span> Simscape Model</h2>
|
<h2 id="Simscape-Model"><span class="section-number-2">1</span> Simscape Model</h2>
|
||||||
<div class="outline-text-2" id="text-Simscape-Model">
|
<div class="outline-text-2" id="text-Simscape-Model">
|
||||||
<p>
|
<p>
|
||||||
<a id="org7cdab70"></a>
|
<a id="orga31fad3"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>.
|
We load the configuration and we set a small <code>StopTime</code>.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
set_param(conf_simulink, 'StopTime', '0.5');
|
<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>
|
</pre>
|
||||||
</div>
|
</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.
|
The obtained system corresponds to the status micro-station when the vibration measurements were conducted.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite('type', 'modal-analysis');
|
initializeGranite(<span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod('type', 'modal-analysis');
|
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||||
initializeAxisc('type', 'none');
|
initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeMirror('type', 'none');
|
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeNanoHexapod('type', 'none');
|
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeSample('type', 'none');
|
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -138,7 +143,7 @@ initializeSample('type', 'none');
|
|||||||
Open Loop Control.
|
Open Loop Control.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -146,7 +151,7 @@ Open Loop Control.
|
|||||||
We don’t need gravity here.
|
We don’t need gravity here.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -154,7 +159,7 @@ We don’t need gravity here.
|
|||||||
We log the signals.
|
We log the signals.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -164,25 +169,25 @@ We log the signals.
|
|||||||
<h2 id="Identification"><span class="section-number-2">2</span> Identification</h2>
|
<h2 id="Identification"><span class="section-number-2">2</span> Identification</h2>
|
||||||
<div class="outline-text-2" id="text-Identification">
|
<div class="outline-text-2" id="text-Identification">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">%% Name of the Simulink File
|
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||||
mdl = 'nass_model';
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
%% Micro-Hexapod
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Micro-Hexapod</span></span>
|
||||||
clear io; io_i = 1;
|
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, <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, '/Disturbances'], 1, 'openinput', [], 'Fty_z'); io_i = io_i + 1; % Parasitic force Ty
|
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, '/Disturbances'], 1, 'openinput', [], 'Frz_z'); io_i = io_i + 1; % Parasitic force Rz
|
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, <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, '/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/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
|
<span class="org-comment">% Run the linearization</span>
|
||||||
G = linearize(mdl, io, 0);
|
G = linearize(mdl, io, 0);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -190,11 +195,11 @@ G = linearize(mdl, io, 0);
|
|||||||
We Take only the outputs corresponding to the vertical acceleration.
|
We Take only the outputs corresponding to the vertical acceleration.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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
|
<span class="org-comment">% Input/Output names</span>
|
||||||
G.InputName = {'Dw', 'Fty', 'Frz'};
|
G.InputName = {<span class="org-string">'Dw'</span>, <span class="org-string">'Fty'</span>, <span class="org-string">'Frz'</span>};
|
||||||
G.OutputName = {'Agm', 'Ahm'};
|
G.OutputName = {<span class="org-string">'Agm'</span>, <span class="org-string">'Ahm'</span>};
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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.
|
We integrate 1 time the output to have the velocity and we substract the absolute velocities to have the relative velocity.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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
|
<span class="org-comment">% Input/Output names</span>
|
||||||
G.InputName = {'Dw', 'Fty', 'Frz'};
|
G.InputName = {<span class="org-string">'Dw'</span>, <span class="org-string">'Fty'</span>, <span class="org-string">'Frz'</span>};
|
||||||
G.OutputName = {'Vm'};
|
G.OutputName = {<span class="org-string">'Vm'</span>};
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</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>
|
<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">
|
<div class="outline-text-2" id="text-Sensitivity-to-Disturbances">
|
||||||
<p>
|
<p>
|
||||||
<a id="org5636fee"></a>
|
<a id="orgaf4acdc"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The obtained sensitivity to disturbances are shown bellow:
|
The obtained sensitivity to disturbances are shown bellow:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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 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="#orgce9715c">3</a></li>
|
<li>The sensitive from vertical forces applied in the Translation stage is shown in Figure <a href="#org6cdcb5f">3</a></li>
|
||||||
</ul>
|
</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><img src="figs/sensitivity_dist_gm.png" alt="sensitivity_dist_gm.png" />
|
||||||
</p>
|
</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>
|
<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><img src="figs/sensitivity_dist_fty.png" alt="sensitivity_dist_fty.png" />
|
||||||
</p>
|
</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>
|
<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><img src="figs/sensitivity_dist_frz.png" alt="sensitivity_dist_frz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
<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">
|
<div class="outline-text-2" id="text-Power-Spectral-Density-of-the-effect-of-the-disturbances">
|
||||||
<p>
|
<p>
|
||||||
<a id="org40a7e4e"></a>
|
<a id="org01aa3d0"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -272,10 +277,10 @@ Also, the Ground Motion is measured.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">gm = load('./mat/psd_gm.mat', 'f', 'psd_gm');
|
<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('./mat/pxsp_r.mat', 'f', 'pxsp_r');
|
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('./mat/pxz_ty_r.mat', 'f', 'pxz_ty_r');
|
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('./mat/pxe_ty_r.mat', 'f', 'pxe_ty_r');
|
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>
|
</pre>
|
||||||
</div>
|
</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:
|
Because some 50Hz and harmonics were present in the ground motion measurement, we remove these peaks with the following code:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">f0s = [50, 100, 150, 200, 250, 350, 450];
|
<pre class="src src-matlab"> f0s = [50, 100, 150, 200, 250, 350, 450];
|
||||||
for f0 = f0s
|
<span class="org-keyword">for</span> <span class="org-variable-name">f0</span> = <span class="org-constant">f0s</span>
|
||||||
i = find(gm.f > f0-0.5 & gm.f < f0+0.5);
|
<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(i) = linspace(gm.psd_gm(i(1)), gm.psd_gm(i(end)), length(i));
|
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>));
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -295,20 +300,20 @@ end
|
|||||||
We now compute the relative velocity between the hexapod and the granite due to ground motion.
|
We now compute the relative velocity between the hexapod and the granite due to ground motion.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<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>
|
</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><img src="figs/dist_effect_relative_velocity.png" alt="dist_effect_relative_velocity.png" />
|
||||||
</p>
|
</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>
|
<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><img src="figs/dist_effect_relative_motion.png" alt="dist_effect_relative_motion.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/dist_effect_relative_motion_cas.png" alt="dist_effect_relative_motion_cas.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
<div class="important">
|
<div class="important" id="org211b9ec">
|
||||||
<p>
|
<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.
|
Also, the ground motion has a relatively negligible effect on the position error.
|
||||||
</p>
|
</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>
|
<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">
|
<div class="outline-text-2" id="text-Compute-the-Power-Spectral-Density-of-the-disturbance-force">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgd113ba5"></a>
|
<a id="org5b257d4"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
This is done below.
|
This is done below.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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;
|
<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./abs(squeeze(freqresp(G('Vm', 'Fty'), tyz.f, 'Hz'))).^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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/dist_force_psd.png" alt="dist_force_psd.png" />
|
||||||
</p>
|
</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>
|
<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>
|
<h2 id="Noise-Budget"><span class="section-number-2">6</span> Noise Budget</h2>
|
||||||
<div class="outline-text-2" id="text-Noise-Budget">
|
<div class="outline-text-2" id="text-Noise-Budget">
|
||||||
<p>
|
<p>
|
||||||
<a id="org71da6bd"></a>
|
<a id="org0e0f7ed"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -389,18 +394,18 @@ This is done in order to verify that this is coherent with the measurements.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>.
|
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="#org4c2c215">6</a>.
|
We can see that this is exactly the same as the Figure <a href="#org179679e">6</a>.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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;
|
<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.*abs(squeeze(freqresp(G('Vm', 'Fty')/s, tyz.f, 'Hz'))).^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.*abs(squeeze(freqresp(G('Vm', 'Frz')/s, rz.f, 'Hz'))).^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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/psd_effect_dist_verif.png" alt="psd_effect_dist_verif.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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_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; % Power Spectral Density of the force induced by the Ty stage in the Z direction [N^2/Hz]
|
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; % Power Spectral Density of the force induced by the Rz stage in the Z direction [N^2/Hz]
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd564a58" class="outline-2">
|
<div id="outline-container-orgca3331b" class="outline-2">
|
||||||
<h2 id="orgd564a58"><span class="section-number-2">8</span> Time Domain Disturbances</h2>
|
<h2 id="orgca3331b"><span class="section-number-2">8</span> Time Domain Disturbances</h2>
|
||||||
<div class="outline-text-2" id="text-8">
|
<div class="outline-text-2" id="text-8">
|
||||||
<p>
|
<p>
|
||||||
Let’s initialize the time domain disturbances and load them.
|
Let’s initialize the time domain disturbances and load them.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances();
|
<pre class="src src-matlab"> initializeDisturbances();
|
||||||
dist = load('nass_disturbances.mat');
|
dist = load(<span class="org-string">'nass_disturbances.mat'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/disturbances_time_domain.png" alt="disturbances_time_domain.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8212830" class="outline-2">
|
<div id="outline-container-orgbbaf1e8" class="outline-2">
|
||||||
<h2 id="org8212830"><span class="section-number-2">9</span> Time Domain Effect of Disturbances</h2>
|
<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 class="outline-text-2" id="text-9">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org76c96f4" class="outline-3">
|
<div id="outline-container-org44ce5e0" class="outline-3">
|
||||||
<h3 id="org76c96f4"><span class="section-number-3">9.1</span> Initialization of the Experiment</h3>
|
<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">
|
<div class="outline-text-3" id="text-9-1">
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -481,37 +486,37 @@ initializeMirror();
|
|||||||
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeNanoHexapod('type', 'rigid');
|
<pre class="src src-matlab"> initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||||
initializeSample('mass', 1);
|
initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeReferences();
|
<pre class="src src-matlab"> initializeReferences();
|
||||||
initializeController('type', 'open-loop');
|
initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||||
initializeSimscapeConfiguration('gravity', false);
|
initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||||
initializeLoggingConfiguration('log', 'all');
|
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
set_param(conf_simulink, 'StopTime', '2');
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf9c1ad9" class="outline-3">
|
<div id="outline-container-org6eb944e" class="outline-3">
|
||||||
<h3 id="orgf9c1ad9"><span class="section-number-3">9.2</span> Simulations</h3>
|
<h3 id="org6eb944e"><span class="section-number-3">9.2</span> Simulations</h3>
|
||||||
<div class="outline-text-3" id="text-9-2">
|
<div class="outline-text-3" id="text-9-2">
|
||||||
<p>
|
<p>
|
||||||
No disturbances:
|
No disturbances:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
sim('nass_model');
|
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||||
sim_no = simout;
|
sim_no = simout;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -519,9 +524,9 @@ sim_no = simout;
|
|||||||
Ground Motion:
|
Ground Motion:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances('Fty_x', false, 'Fty_z', false, 'Frz_z', false);
|
<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>);
|
||||||
sim('nass_model');
|
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||||
sim_gm = simout;
|
sim_gm = simout;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -529,9 +534,9 @@ sim_gm = simout;
|
|||||||
Translation Stage Vibrations:
|
Translation Stage Vibrations:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances('Dwx', false, 'Dwy', false, 'Dwz', false, 'Frz_z', false);
|
<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>);
|
||||||
sim('nass_model');
|
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||||
sim_ty = simout;
|
sim_ty = simout;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -539,23 +544,23 @@ sim_ty = simout;
|
|||||||
Rotation Stage Vibrations:
|
Rotation Stage Vibrations:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances('Dwx', false, 'Dwy', false, 'Dwz', false, 'Fty_x', false, 'Fty_z', false);
|
<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>);
|
||||||
sim('nass_model');
|
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||||
sim_rz = simout;
|
sim_rz = simout;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8107e0b" class="outline-3">
|
<div id="outline-container-org0e0c592" class="outline-3">
|
||||||
<h3 id="org8107e0b"><span class="section-number-3">9.3</span> Comparison</h3>
|
<h3 id="org0e0c592"><span class="section-number-3">9.3</span> Comparison</h3>
|
||||||
<div class="outline-text-3" id="text-9-3">
|
<div class="outline-text-3" id="text-9-3">
|
||||||
<p>
|
<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>
|
</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><img src="figs/effect_disturbances_position_error.png" alt="effect_disturbances_position_error.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,66 +1,61 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-05 mar. 10:34 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Simulation of Scientific Experiments</title>
|
<title>Simulation of Scientific Experiments</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<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>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Simulation of Scientific Experiments</h1>
|
<h1 class="title">Simulation of Scientific Experiments</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org03b2a76">1. Simscape Model</a></li>
|
<li><a href="#org5e41cbf">1. Simscape Model</a></li>
|
||||||
<li><a href="#org6ed78a0">2. Tomography Experiment with no disturbances</a>
|
<li><a href="#orge687eef">2. Tomography Experiment with no disturbances</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orge3f0741">2.1. Simulation Setup</a></li>
|
<li><a href="#orgd7be9f9">2.1. Simulation Setup</a></li>
|
||||||
<li><a href="#org1836f98">2.2. Analysis</a></li>
|
<li><a href="#org3cc37e4">2.2. Analysis</a></li>
|
||||||
<li><a href="#org8cf54cb">2.3. Conclusion</a></li>
|
<li><a href="#org635d5aa">2.3. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org16d8e58">3. Tomography Experiment with included perturbations</a>
|
<li><a href="#orgbaff4a2">3. Tomography Experiment with included perturbations</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org9d04c8b">3.1. Simulation Setup</a></li>
|
<li><a href="#org2adb412">3.1. Simulation Setup</a></li>
|
||||||
<li><a href="#org746ee08">3.2. Analysis</a></li>
|
<li><a href="#org0574e3b">3.2. Analysis</a></li>
|
||||||
<li><a href="#org42ba456">3.3. Conclusion</a></li>
|
<li><a href="#orga01299f">3.3. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#org0b606be">4.1. Simulation Setup</a></li>
|
<li><a href="#orgea8ee40">4.1. Simulation Setup</a></li>
|
||||||
<li><a href="#org2e0557a">4.2. Analysis</a></li>
|
<li><a href="#org10c7f76">4.2. Analysis</a></li>
|
||||||
<li><a href="#org6c8cc28">4.3. Conclusion</a></li>
|
<li><a href="#org9121d09">4.3. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#org98d14be">5.1. Simulation Setup</a></li>
|
<li><a href="#orgbab9ef9">5.1. Simulation Setup</a></li>
|
||||||
<li><a href="#org6dc8ae4">5.2. Analysis</a></li>
|
<li><a href="#org012e268">5.2. Analysis</a></li>
|
||||||
<li><a href="#orgb632268">5.3. Conclusion</a></li>
|
<li><a href="#org75b29bc">5.3. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#orgdd9a5de">6.1. Simulation Setup</a></li>
|
<li><a href="#org5f4e508">6.1. Simulation Setup</a></li>
|
||||||
<li><a href="#orgad49d2c">6.2. Analysis</a></li>
|
<li><a href="#orgf069548">6.2. Analysis</a></li>
|
||||||
<li><a href="#org57c774f">6.3. Conclusion</a></li>
|
<li><a href="#org3446ba0">6.3. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -85,26 +80,26 @@ This has several goals:
|
|||||||
The document in organized as follow:
|
The document in organized as follow:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>In section <a href="#orgfc7d050">1</a> the Simscape model is initialized</li>
|
<li>In section <a href="#org5180d92">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="#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="#org4e7f626">3</a>, the same is done but with disturbance included</li>
|
<li>In section <a href="#org95498dc">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="#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="#org6aaeb53">6</a>, scans with the translation stage are simulated with no perturbation included</li>
|
<li>In section <a href="#orgeec7f3c">6</a>, scans with the translation stage are simulated with no perturbation included</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-org03b2a76" class="outline-2">
|
<div id="outline-container-org5e41cbf" class="outline-2">
|
||||||
<h2 id="org03b2a76"><span class="section-number-2">1</span> Simscape Model</h2>
|
<h2 id="org5e41cbf"><span class="section-number-2">1</span> Simscape Model</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgfc7d050"></a>
|
<a id="org5180d92"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
We load the shared simulink configuration and we set the <code>StopTime</code>.
|
We load the shared simulink configuration and we set the <code>StopTime</code>.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
set_param(conf_simulink, 'StopTime', '2');
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -113,16 +108,16 @@ We first initialize all the stages.
|
|||||||
The nano-hexapod is considered to be a rigid body.
|
The nano-hexapod is considered to be a rigid body.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
initializeNanoHexapod('type', 'rigid');
|
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||||
initializeSample('mass', 1);
|
initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -130,7 +125,7 @@ initializeSample('mass', 1);
|
|||||||
No controller is used (Open Loop).
|
No controller is used (Open Loop).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -138,7 +133,7 @@ No controller is used (Open Loop).
|
|||||||
We don’t gravity.
|
We don’t gravity.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -146,37 +141,37 @@ We don’t gravity.
|
|||||||
We log the signals for further analysis.
|
We log the signals for further analysis.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6ed78a0" class="outline-2">
|
<div id="outline-container-orge687eef" class="outline-2">
|
||||||
<h2 id="org6ed78a0"><span class="section-number-2">2</span> Tomography Experiment with no disturbances</h2>
|
<h2 id="orge687eef"><span class="section-number-2">2</span> Tomography Experiment with no disturbances</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="org3effbb8"></a>
|
<a id="org141b5a6"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
In this section, a tomography experiment is performed with the sample aligned with the rotation axis.
|
In this section, a tomography experiment is performed with the sample aligned with the rotation axis.
|
||||||
No disturbance is included.
|
No disturbance is included.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orge3f0741" class="outline-3">
|
<div id="outline-container-orgd7be9f9" class="outline-3">
|
||||||
<h3 id="orge3f0741"><span class="section-number-3">2.1</span> Simulation Setup</h3>
|
<h3 id="orgd7be9f9"><span class="section-number-3">2.1</span> Simulation Setup</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
And we initialize the disturbances to be equal to zero.
|
And we initialize the disturbances to be equal to zero.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances(...
|
<pre class="src src-matlab"> initializeDisturbances(...
|
||||||
'Dwx', false, ... % Ground Motion - X direction
|
<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||||
'Dwy', false, ... % Ground Motion - Y direction
|
<span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||||
'Dwz', false, ... % Ground Motion - Z direction
|
<span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||||
'Fty_x', false, ... % Translation Stage - X direction
|
<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||||
'Fty_z', false, ... % Translation Stage - Z direction
|
<span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||||
'Frz_z', false ... % Spindle - Z direction
|
<span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||||
);
|
);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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.
|
All stage is set to its zero position except the Spindle which is rotating at 60rpm.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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.
|
We simulate the model.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -202,23 +197,23 @@ We simulate the model.
|
|||||||
And we save the obtained data.
|
And we save the obtained data.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">tomo_align_no_dist = simout;
|
<pre class="src src-matlab"> tomo_align_no_dist = simout;
|
||||||
save('./mat/experiment_tomography.mat', 'tomo_align_no_dist', '-append');
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1836f98" class="outline-3">
|
<div id="outline-container-org3cc37e4" class="outline-3">
|
||||||
<h3 id="org1836f98"><span class="section-number-3">2.2</span> Analysis</h3>
|
<h3 id="org3cc37e4"><span class="section-number-3">2.2</span> Analysis</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/exp_tomo_without_dist.png" alt="exp_tomo_without_dist.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8cf54cb" class="outline-3">
|
<div id="outline-container-org635d5aa" class="outline-3">
|
||||||
<h3 id="org8cf54cb"><span class="section-number-3">2.3</span> Conclusion</h3>
|
<h3 id="org635d5aa"><span class="section-number-3">2.3</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-3">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<div class="important">
|
<div class="important" id="orgbee0f3e">
|
||||||
<p>
|
<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.
|
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.
|
This residual error motion probably comes from a small misalignment somewhere.
|
||||||
@ -240,31 +235,31 @@ This residual error motion probably comes from a small misalignment somewhere.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org16d8e58" class="outline-2">
|
<div id="outline-container-orgbaff4a2" class="outline-2">
|
||||||
<h2 id="org16d8e58"><span class="section-number-2">3</span> Tomography Experiment with included perturbations</h2>
|
<h2 id="orgbaff4a2"><span class="section-number-2">3</span> Tomography Experiment with included perturbations</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="org4e7f626"></a>
|
<a id="org95498dc"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
In this section, we also perform a tomography experiment with the sample’s center of mass aligned with the rotation axis.
|
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.
|
However this time, we include perturbations such as ground motion and stage vibrations.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org9d04c8b" class="outline-3">
|
<div id="outline-container-org2adb412" class="outline-3">
|
||||||
<h3 id="org9d04c8b"><span class="section-number-3">3.1</span> Simulation Setup</h3>
|
<h3 id="org2adb412"><span class="section-number-3">3.1</span> Simulation Setup</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<p>
|
||||||
We now activate the disturbances.
|
We now activate the disturbances.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances(...
|
<pre class="src src-matlab"> initializeDisturbances(...
|
||||||
'Dwx', true, ... % Ground Motion - X direction
|
<span class="org-string">'Dwx'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||||
'Dwy', true, ... % Ground Motion - Y direction
|
<span class="org-string">'Dwy'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||||
'Dwz', true, ... % Ground Motion - Z direction
|
<span class="org-string">'Dwz'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||||
'Fty_x', false, ... % Translation Stage - X direction
|
<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||||
'Fty_z', false, ... % Translation Stage - Z direction
|
<span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||||
'Frz_z', true ... % Spindle - Z direction
|
<span class="org-string">'Frz_z'</span>, <span class="org-constant">true</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||||
);
|
);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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.
|
All stage is set to its zero position except the Spindle which is rotating at 60rpm.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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.
|
We simulate the model.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -290,23 +285,23 @@ We simulate the model.
|
|||||||
And we save the obtained data.
|
And we save the obtained data.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">tomo_align_dist = simout;
|
<pre class="src src-matlab"> tomo_align_dist = simout;
|
||||||
save('./mat/experiment_tomography.mat', 'tomo_align_dist', '-append');
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org746ee08" class="outline-3">
|
<div id="outline-container-org0574e3b" class="outline-3">
|
||||||
<h3 id="org746ee08"><span class="section-number-3">3.2</span> Analysis</h3>
|
<h3 id="org0574e3b"><span class="section-number-3">3.2</span> Analysis</h3>
|
||||||
<div class="outline-text-3" id="text-3-2">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/exp_tomo_dist.png" alt="exp_tomo_dist.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org42ba456" class="outline-3">
|
<div id="outline-container-orga01299f" class="outline-3">
|
||||||
<h3 id="org42ba456"><span class="section-number-3">3.3</span> Conclusion</h3>
|
<h3 id="orga01299f"><span class="section-number-3">3.3</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-3-3">
|
<div class="outline-text-3" id="text-3-3">
|
||||||
<div class="important">
|
<div class="important" id="org2449de1">
|
||||||
<p>
|
<p>
|
||||||
Here, no vibration is included in the X and Y directions.
|
Here, no vibration is included in the X and Y directions.
|
||||||
</p>
|
</p>
|
||||||
@ -327,31 +322,31 @@ Here, no vibration is included in the X and Y directions.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7202245" class="outline-2">
|
<div id="outline-container-org2e6a61c" class="outline-2">
|
||||||
<h2 id="org7202245"><span class="section-number-2">4</span> Tomography Experiment with Ty raster scans</h2>
|
<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">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgd4f0240"></a>
|
<a id="org4907e7b"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
In this section, we also perform a tomography experiment with scans of the Translation stage.
|
In this section, we also perform a tomography experiment with scans of the Translation stage.
|
||||||
All the perturbations are included.
|
All the perturbations are included.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org0b606be" class="outline-3">
|
<div id="outline-container-orgea8ee40" class="outline-3">
|
||||||
<h3 id="org0b606be"><span class="section-number-3">4.1</span> Simulation Setup</h3>
|
<h3 id="orgea8ee40"><span class="section-number-3">4.1</span> Simulation Setup</h3>
|
||||||
<div class="outline-text-3" id="text-4-1">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<p>
|
<p>
|
||||||
We now activate the disturbances.
|
We now activate the disturbances.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances(...
|
<pre class="src src-matlab"> initializeDisturbances(...
|
||||||
'Dwx', true, ... % Ground Motion - X direction
|
<span class="org-string">'Dwx'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||||
'Dwy', true, ... % Ground Motion - Y direction
|
<span class="org-string">'Dwy'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||||
'Dwz', true, ... % Ground Motion - Z direction
|
<span class="org-string">'Dwz'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||||
'Fty_x', true, ... % Translation Stage - X direction
|
<span class="org-string">'Fty_x'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||||
'Fty_z', true, ... % Translation Stage - Z direction
|
<span class="org-string">'Fty_z'</span>, <span class="org-constant">true</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||||
'Frz_z', true ... % Spindle - Z direction
|
<span class="org-string">'Frz_z'</span>, <span class="org-constant">true</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||||
);
|
);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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.
|
However, vibrations of the Ty stage are included.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -370,7 +365,7 @@ However, vibrations of the Ty stage are included.
|
|||||||
We simulate the model.
|
We simulate the model.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -378,23 +373,23 @@ We simulate the model.
|
|||||||
And we save the obtained data.
|
And we save the obtained data.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">scans_rz_align_dist = simout;
|
<pre class="src src-matlab"> scans_rz_align_dist = simout;
|
||||||
save('./mat/experiment_tomography.mat', 'scans_rz_align_dist', '-append');
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2e0557a" class="outline-3">
|
<div id="outline-container-org10c7f76" class="outline-3">
|
||||||
<h3 id="org2e0557a"><span class="section-number-3">4.2</span> Analysis</h3>
|
<h3 id="org10c7f76"><span class="section-number-3">4.2</span> Analysis</h3>
|
||||||
<div class="outline-text-3" id="text-4-2">
|
<div class="outline-text-3" id="text-4-2">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/exp_scans_rz_dist.png" alt="exp_scans_rz_dist.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6c8cc28" class="outline-3">
|
<div id="outline-container-org9121d09" class="outline-3">
|
||||||
<h3 id="org6c8cc28"><span class="section-number-3">4.3</span> Conclusion</h3>
|
<h3 id="org9121d09"><span class="section-number-3">4.3</span> Conclusion</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org72f01ab" class="outline-2">
|
<div id="outline-container-orgfc40faa" class="outline-2">
|
||||||
<h2 id="org72f01ab"><span class="section-number-2">5</span> Tomography when the micro-hexapod is not centered</h2>
|
<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">
|
<div class="outline-text-2" id="text-5">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgb31e3fb"></a>
|
<a id="orgd1d4e24"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
In this section, the sample’s center of mass is not aligned with the rotation axis anymore.
|
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.
|
No disturbances are included.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org98d14be" class="outline-3">
|
<div id="outline-container-orgbab9ef9" class="outline-3">
|
||||||
<h3 id="org98d14be"><span class="section-number-3">5.1</span> Simulation Setup</h3>
|
<h3 id="orgbab9ef9"><span class="section-number-3">5.1</span> Simulation Setup</h3>
|
||||||
<div class="outline-text-3" id="text-5-1">
|
<div class="outline-text-3" id="text-5-1">
|
||||||
<p>
|
<p>
|
||||||
We first set the wanted translation of the Micro Hexapod.
|
We first set the wanted translation of the Micro Hexapod.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -437,7 +432,7 @@ We first set the wanted translation of the Micro Hexapod.
|
|||||||
We initialize the reference path.
|
We initialize the reference path.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -445,7 +440,7 @@ We initialize the reference path.
|
|||||||
We initialize the stages.
|
We initialize the stages.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -453,13 +448,13 @@ We initialize the stages.
|
|||||||
And we initialize the disturbances to zero.
|
And we initialize the disturbances to zero.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances(...
|
<pre class="src src-matlab"> initializeDisturbances(...
|
||||||
'Dwx', false, ... % Ground Motion - X direction
|
<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||||
'Dwy', false, ... % Ground Motion - Y direction
|
<span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||||
'Dwz', false, ... % Ground Motion - Z direction
|
<span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||||
'Fty_x', false, ... % Translation Stage - X direction
|
<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||||
'Fty_z', false, ... % Translation Stage - Z direction
|
<span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||||
'Frz_z', false ... % Spindle - Z direction
|
<span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||||
);
|
);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
@ -468,7 +463,7 @@ And we initialize the disturbances to zero.
|
|||||||
We simulate the model.
|
We simulate the model.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -476,23 +471,23 @@ We simulate the model.
|
|||||||
And we save the obtained data.
|
And we save the obtained data.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">tomo_not_align = simout;
|
<pre class="src src-matlab"> tomo_not_align = simout;
|
||||||
save('./mat/experiment_tomography.mat', 'tomo_not_align', '-append');
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6dc8ae4" class="outline-3">
|
<div id="outline-container-org012e268" class="outline-3">
|
||||||
<h3 id="org6dc8ae4"><span class="section-number-3">5.2</span> Analysis</h3>
|
<h3 id="org012e268"><span class="section-number-3">5.2</span> Analysis</h3>
|
||||||
<div class="outline-text-3" id="text-5-2">
|
<div class="outline-text-3" id="text-5-2">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/exp_tomo_offset.png" alt="exp_tomo_offset.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb632268" class="outline-3">
|
<div id="outline-container-org75b29bc" class="outline-3">
|
||||||
<h3 id="orgb632268"><span class="section-number-3">5.3</span> Conclusion</h3>
|
<h3 id="org75b29bc"><span class="section-number-3">5.3</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-5-3">
|
<div class="outline-text-3" id="text-5-3">
|
||||||
<div class="important">
|
<div class="important" id="org970013d">
|
||||||
<p>
|
<p>
|
||||||
The main motion error are 1Hz X-Y translations and constant Ry error.
|
The main motion error are 1Hz X-Y translations and constant Ry error.
|
||||||
This is mainly due to finite stiffness of the elements.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8fa1632" class="outline-2">
|
<div id="outline-container-org3ba6838" class="outline-2">
|
||||||
<h2 id="org8fa1632"><span class="section-number-2">6</span> Raster Scans with the translation stage</h2>
|
<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">
|
<div class="outline-text-2" id="text-6">
|
||||||
<p>
|
<p>
|
||||||
<a id="org6aaeb53"></a>
|
<a id="orgeec7f3c"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
In this section, scans with the translation stage are performed.
|
In this section, scans with the translation stage are performed.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgdd9a5de" class="outline-3">
|
<div id="outline-container-org5f4e508" class="outline-3">
|
||||||
<h3 id="orgdd9a5de"><span class="section-number-3">6.1</span> Simulation Setup</h3>
|
<h3 id="org5f4e508"><span class="section-number-3">6.1</span> Simulation Setup</h3>
|
||||||
<div class="outline-text-3" id="text-6-1">
|
<div class="outline-text-3" id="text-6-1">
|
||||||
<p>
|
<p>
|
||||||
We initialize the stages.
|
We initialize the stages.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
initializeNanoHexapod('type', 'rigid');
|
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||||
initializeSample('mass', 1);
|
initializeSample(<span class="org-string">'mass'</span>, 1);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -548,13 +543,13 @@ initializeSample('mass', 1);
|
|||||||
And we initialize the disturbances to zero.
|
And we initialize the disturbances to zero.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances(...
|
<pre class="src src-matlab"> initializeDisturbances(...
|
||||||
'Dwx', false, ... % Ground Motion - X direction
|
<span class="org-string">'Dwx'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - X direction</span>
|
||||||
'Dwy', false, ... % Ground Motion - Y direction
|
<span class="org-string">'Dwy'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Y direction</span>
|
||||||
'Dwz', false, ... % Ground Motion - Z direction
|
<span class="org-string">'Dwz'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Ground Motion - Z direction</span>
|
||||||
'Fty_x', false, ... % Translation Stage - X direction
|
<span class="org-string">'Fty_x'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - X direction</span>
|
||||||
'Fty_z', false, ... % Translation Stage - Z direction
|
<span class="org-string">'Fty_z'</span>, <span class="org-constant">false</span>, ...<span class="org-comment"> % Translation Stage - Z direction</span>
|
||||||
'Frz_z', false ... % Spindle - Z direction
|
<span class="org-string">'Frz_z'</span>, <span class="org-constant">false</span> ...<span class="org-comment"> % Spindle - Z direction</span>
|
||||||
);
|
);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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.
|
We set the reference path to be a triangular signal for the Translation Stage.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -571,7 +566,7 @@ We set the reference path to be a triangular signal for the Translation Stage.
|
|||||||
We simulate the model.
|
We simulate the model.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -579,8 +574,8 @@ We simulate the model.
|
|||||||
And we save the obtained data.
|
And we save the obtained data.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">ty_scan_triangle = simout;
|
<pre class="src src-matlab"> ty_scan_triangle = simout;
|
||||||
save('./mat/experiment_tomography.mat', 'ty_scan_triangle', '-append');
|
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>
|
</pre>
|
||||||
</div>
|
</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.
|
We now set the reference path to be a sinusoidal signal for the Translation Stage.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -596,7 +591,7 @@ We now set the reference path to be a sinusoidal signal for the Translation Stag
|
|||||||
We simulate the model.
|
We simulate the model.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -604,23 +599,23 @@ We simulate the model.
|
|||||||
And we save the obtained data.
|
And we save the obtained data.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">ty_scan_sinus = simout;
|
<pre class="src src-matlab"> ty_scan_sinus = simout;
|
||||||
save('./mat/experiment_tomography.mat', 'ty_scan_sinus', '-append');
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgad49d2c" class="outline-3">
|
<div id="outline-container-orgf069548" class="outline-3">
|
||||||
<h3 id="orgad49d2c"><span class="section-number-3">6.2</span> Analysis</h3>
|
<h3 id="orgf069548"><span class="section-number-3">6.2</span> Analysis</h3>
|
||||||
<div class="outline-text-3" id="text-6-2">
|
<div class="outline-text-3" id="text-6-2">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/exp_ty_scan.png" alt="exp_ty_scan.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org57c774f" class="outline-3">
|
<div id="outline-container-org3446ba0" class="outline-3">
|
||||||
<h3 id="org57c774f"><span class="section-number-3">6.3</span> Conclusion</h3>
|
<h3 id="org3446ba0"><span class="section-number-3">6.3</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-6-3">
|
<div class="outline-text-3" id="text-6-3">
|
||||||
<div class="important">
|
<div class="important" id="orgf5f4292">
|
||||||
<p>
|
<p>
|
||||||
Scans with the translation stage induces some errors in the Y direction and Rx translations.
|
Scans with the translation stage induces some errors in the Y direction and Rx translations.
|
||||||
</p>
|
</p>
|
||||||
@ -648,7 +643,7 @@ Thus, this should be preferred.
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -3,81 +3,86 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-11-03 mar. 09:45 -->
|
<!-- 2021-02-20 sam. 23:09 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Study of the Flexible Joints</title>
|
<title>Study of the Flexible Joints</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Study of the Flexible Joints</h1>
|
<h1 class="title">Study of the Flexible Joints</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orge032d30">1. Bending and Torsional Stiffness</a>
|
<li><a href="#org157c72f">1. Bending and Torsional Stiffness</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orge82a7c2">1.1. Initialization</a></li>
|
<li><a href="#org19fa00c">1.1. Initialization</a></li>
|
||||||
<li><a href="#orgde60939">1.2. Realistic Bending Stiffness Values</a>
|
<li><a href="#orgc66d5ef">1.2. Realistic Bending Stiffness Values</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orge13b41c">1.2.1. Direct Velocity Feedback</a></li>
|
<li><a href="#org7f86aa6">1.2.1. Direct Velocity Feedback</a></li>
|
||||||
<li><a href="#orgd5fd59b">1.2.2. Primary Plant</a></li>
|
<li><a href="#orgd763ab8">1.2.2. Primary Plant</a></li>
|
||||||
<li><a href="#org865157e">1.2.3. Conclusion</a></li>
|
<li><a href="#org34d48fd">1.2.3. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org8ad3f34">1.3. Parametric Study</a>
|
<li><a href="#org2383b0a">1.3. Parametric Study</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgc98ee7c">1.3.1. Direct Velocity Feedback</a></li>
|
<li><a href="#org0b2ea81">1.3.1. Direct Velocity Feedback</a></li>
|
||||||
<li><a href="#org15c2c08">1.3.2. Primary Control</a></li>
|
<li><a href="#org4bcbd52">1.3.2. Primary Control</a></li>
|
||||||
<li><a href="#org5322ecd">1.3.3. Conclusion</a></li>
|
<li><a href="#orgd481cbd">1.3.3. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgdaf7b6c">2. Axial Stiffness</a>
|
<li><a href="#org122af58">2. Axial Stiffness</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org969d9e7">2.1. Realistic Translation Stiffness Values</a>
|
<li><a href="#orgbd421fd">2.1. Realistic Translation Stiffness Values</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org7dd21d5">2.1.1. Initialization</a></li>
|
<li><a href="#org7e915de">2.1.1. Initialization</a></li>
|
||||||
<li><a href="#org47be52b">2.1.2. Direct Velocity Feedback</a></li>
|
<li><a href="#org484b32d">2.1.2. Direct Velocity Feedback</a></li>
|
||||||
<li><a href="#org15105f5">2.1.3. Primary Plant</a></li>
|
<li><a href="#org4c02123">2.1.3. Primary Plant</a></li>
|
||||||
<li><a href="#org2098f1e">2.1.4. Conclusion</a></li>
|
<li><a href="#org8aa50f5">2.1.4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org0275632">2.2. Parametric study</a>
|
<li><a href="#orge0a9c34">2.2. Parametric study</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgd87b94b">2.2.1. Direct Velocity Feedback</a></li>
|
<li><a href="#org564cc95">2.2.1. Direct Velocity Feedback</a></li>
|
||||||
<li><a href="#orge5d1c12">2.2.2. Primary Control</a></li>
|
<li><a href="#orgc1721b8">2.2.2. Primary Control</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org382b3cb">2.3. Conclusion</a></li>
|
<li><a href="#org13f48c9">2.3. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgb6f6c0a">3. Conclusion</a></li>
|
<li><a href="#org5519f74">3. Conclusion</a></li>
|
||||||
<li><a href="#orgdf2870d">4. Designed Flexible Joints</a>
|
<li><a href="#org358d063">4. Designed Flexible Joints</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgd355fcb">4.1. Initialization</a></li>
|
<li><a href="#org1148778">4.1. Initialization</a></li>
|
||||||
<li><a href="#org43c7d3c">4.2. Direct Velocity Feedback</a></li>
|
<li><a href="#orgd889755">4.2. Direct Velocity Feedback</a></li>
|
||||||
<li><a href="#org056a1de">4.3. Integral Force Feedback</a></li>
|
<li><a href="#org12972b2">4.3. Integral Force Feedback</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</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:
|
However, this is never the case and be have to consider:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>Finite bending stiffnesses (Section <a href="#org3eb4121">1</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="#org8f4d83b">2</a>)</li>
|
<li>Axial stiffness in the direction of the legs (Section <a href="#org7789cf6">2</a>)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<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>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-orge032d30" class="outline-2">
|
<div id="outline-container-org157c72f" class="outline-2">
|
||||||
<h2 id="orge032d30"><span class="section-number-2">1</span> Bending and Torsional Stiffness</h2>
|
<h2 id="org157c72f"><span class="section-number-2">1</span> Bending and Torsional Stiffness</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org3eb4121"></a>
|
<a id="org27b9411"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
In this section, we wish to study the effect of the rotation flexibility of the nano-hexapod joints.
|
In this section, we wish to study the effect of the rotation flexibility of the nano-hexapod joints.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge82a7c2" class="outline-3">
|
<div id="outline-container-org19fa00c" class="outline-3">
|
||||||
<h3 id="orge82a7c2"><span class="section-number-3">1.1</span> Initialization</h3>
|
<h3 id="org19fa00c"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<p>
|
||||||
Let’s initialize all the stages with default parameters.
|
Let’s initialize all the stages with default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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.
|
Let’s consider the heaviest mass which should we the most problematic with it comes to the flexible joints.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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));
|
<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);
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgde60939" class="outline-3">
|
<div id="outline-container-orgc66d5ef" class="outline-3">
|
||||||
<h3 id="orgde60939"><span class="section-number-3">1.2</span> Realistic Bending Stiffness Values</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
Let’s compare the ideal case (zero stiffness in rotation and infinite stiffness in translation) with a more realistic case:
|
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>
|
</ul>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Kf_M = 15<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);
|
Kf_F = 15<span class="org-type">*</span>ones(6,1);
|
||||||
Kt_M = 20<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);
|
Kt_F = 20<span class="org-type">*</span>ones(6,1);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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:
|
The stiffness and damping of the nano-hexapod’s legs are:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">k_opt = 1e5; <span class="org-comment">% [N/m]</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>
|
c_opt = 2e2; <span class="org-comment">% [N/(m/s)]</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -174,20 +179,20 @@ This corresponds to the optimal identified stiffness.
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge13b41c" class="outline-4">
|
<div id="outline-container-org7f86aa6" class="outline-4">
|
||||||
<h4 id="orge13b41c"><span class="section-number-4">1.2.1</span> Direct Velocity Feedback</h4>
|
<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">
|
<div class="outline-text-4" id="text-1-2-1">
|
||||||
<p>
|
<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.
|
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>
|
||||||
|
|
||||||
<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.
|
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>
|
</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><img src="figs/flex_joint_rot_dvf.png" alt="flex_joint_rot_dvf.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd5fd59b" class="outline-4">
|
<div id="outline-container-orgd763ab8" class="outline-4">
|
||||||
<h4 id="orgd5fd59b"><span class="section-number-4">1.2.2</span> Primary Plant</h4>
|
<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">
|
<div class="outline-text-4" id="text-1-2-2">
|
||||||
<p>
|
<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).
|
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>
|
||||||
|
|
||||||
<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.
|
The plant dynamics is not found to be changing significantly.
|
||||||
</p>
|
</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><img src="figs/flex_joints_rot_primary_plant_L.png" alt="flex_joints_rot_primary_plant_L.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org865157e" class="outline-4">
|
<div id="outline-container-org34d48fd" class="outline-4">
|
||||||
<h4 id="org865157e"><span class="section-number-4">1.2.3</span> Conclusion</h4>
|
<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="outline-text-4" id="text-1-2-3">
|
||||||
<div class="important" id="org69f9617">
|
<div class="important" id="org5365e9f">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
@ -233,8 +238,8 @@ It only increases a little bit the suspension modes of the sample on top of the
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8ad3f34" class="outline-3">
|
<div id="outline-container-org2383b0a" class="outline-3">
|
||||||
<h3 id="org8ad3f34"><span class="section-number-3">1.3</span> Parametric Study</h3>
|
<h3 id="org2383b0a"><span class="section-number-3">1.3</span> Parametric Study</h3>
|
||||||
<div class="outline-text-3" id="text-1-3">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
We wish now to see what is the impact of the rotation stiffness of the flexible joints on the dynamics.
|
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:
|
Let’s consider the following bending stiffness of the flexible joints:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -254,15 +259,15 @@ We also consider here a nano-hexapod with the identified optimal actuator stiffn
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc98ee7c" class="outline-4">
|
<div id="outline-container-org0b2ea81" class="outline-4">
|
||||||
<h4 id="orgc98ee7c"><span class="section-number-4">1.3.1</span> Direct Velocity Feedback</h4>
|
<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">
|
<div class="outline-text-4" id="text-1-3-1">
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -270,14 +275,14 @@ It is shown that the bending stiffness of the flexible joints does indeed change
|
|||||||
</p>
|
</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><img src="figs/flex_joints_rot_study_dvf.png" alt="flex_joints_rot_study_dvf.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/flex_joints_rot_study_dvf_root_locus.png" alt="flex_joints_rot_study_dvf_root_locus.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>Root Locus for all the considered Rotation Stiffnesses</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org15c2c08" class="outline-4">
|
<div id="outline-container-org4bcbd52" class="outline-4">
|
||||||
<h4 id="org15c2c08"><span class="section-number-4">1.3.2</span> Primary Control</h4>
|
<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">
|
<div class="outline-text-4" id="text-1-3-2">
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -297,7 +302,7 @@ It is shown that the bending stiffness of the flexible joints have very little i
|
|||||||
</p>
|
</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><img src="figs/flex_joints_rot_study_primary_plant.png" alt="flex_joints_rot_study_primary_plant.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5322ecd" class="outline-4">
|
<div id="outline-container-orgd481cbd" class="outline-4">
|
||||||
<h4 id="org5322ecd"><span class="section-number-4">1.3.3</span> Conclusion</h4>
|
<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="outline-text-4" id="text-1-3-3">
|
||||||
<div class="important" id="orga223c1a">
|
<div class="important" id="org98dc84f">
|
||||||
<p>
|
<p>
|
||||||
The bending stiffness of the flexible joint does not significantly change the dynamics.
|
The bending stiffness of the flexible joint does not significantly change the dynamics.
|
||||||
</p>
|
</p>
|
||||||
@ -319,19 +324,19 @@ The bending stiffness of the flexible joint does not significantly change the dy
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgdaf7b6c" class="outline-2">
|
<div id="outline-container-org122af58" class="outline-2">
|
||||||
<h2 id="orgdaf7b6c"><span class="section-number-2">2</span> Axial Stiffness</h2>
|
<h2 id="org122af58"><span class="section-number-2">2</span> Axial Stiffness</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="org8f4d83b"></a>
|
<a id="org7789cf6"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Let’s know consider a flexibility in translation of the flexible joint, in the axis of the legs.
|
Let’s know consider a flexibility in translation of the flexible joint, in the axis of the legs.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org969d9e7" class="outline-3">
|
<div id="outline-container-orgbd421fd" class="outline-3">
|
||||||
<h3 id="org969d9e7"><span class="section-number-3">2.1</span> Realistic Translation Stiffness Values</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
We choose realistic values of the axial stiffness of the joints:
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
<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>
|
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_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>
|
Ca_M = 1<span class="org-type">*</span>ones(6,1); <span class="org-comment">% [N/(m/s)]</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7dd21d5" class="outline-4">
|
<div id="outline-container-org7e915de" class="outline-4">
|
||||||
<h4 id="org7dd21d5"><span class="section-number-4">2.1.1</span> Initialization</h4>
|
<h4 id="org7e915de"><span class="section-number-4">2.1.1</span> Initialization</h4>
|
||||||
<div class="outline-text-4" id="text-2-1-1">
|
<div class="outline-text-4" id="text-2-1-1">
|
||||||
<p>
|
<p>
|
||||||
Let’s initialize all the stages with default parameters.
|
Let’s initialize all the stages with default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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.
|
Let’s consider the heaviest mass which should we the most problematic with it comes to the flexible joints.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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));
|
<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);
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org47be52b" class="outline-4">
|
<div id="outline-container-org484b32d" class="outline-4">
|
||||||
<h4 id="org47be52b"><span class="section-number-4">2.1.2</span> Direct Velocity Feedback</h4>
|
<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">
|
<div class="outline-text-4" id="text-2-1-2">
|
||||||
<p>
|
<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.
|
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>
|
||||||
|
|
||||||
<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>
|
</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><img src="figs/flex_joint_trans_dvf.png" alt="flex_joint_trans_dvf.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org15105f5" class="outline-4">
|
<div id="outline-container-org4c02123" class="outline-4">
|
||||||
<h4 id="org15105f5"><span class="section-number-4">2.1.3</span> Primary Plant</h4>
|
<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="outline-text-4" id="text-2-1-3">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -409,11 +414,11 @@ Let’s now identify the dynamics from \(\bm{\tau}^\prime\) to \(\bm{\epsilo
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>
|
</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><img src="figs/flex_joints_trans_primary_plant_L.png" alt="flex_joints_trans_primary_plant_L.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2098f1e" class="outline-4">
|
<div id="outline-container-org8aa50f5" class="outline-4">
|
||||||
<h4 id="org2098f1e"><span class="section-number-4">2.1.4</span> Conclusion</h4>
|
<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="outline-text-4" id="text-2-1-4">
|
||||||
<div class="important" id="org3a7d9f4">
|
<div class="important" id="org2e8394a">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
@ -434,8 +439,8 @@ For the realistic value of the flexible joint axial stiffness, the dynamics is n
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0275632" class="outline-3">
|
<div id="outline-container-orge0a9c34" class="outline-3">
|
||||||
<h3 id="org0275632"><span class="section-number-3">2.2</span> Parametric study</h3>
|
<h3 id="orge0a9c34"><span class="section-number-3">2.2</span> Parametric study</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
We wish now to see what is the impact of the <b>axial</b> stiffness of the flexible joints on the dynamics.
|
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:
|
Let’s consider the following values for the axial stiffness:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -454,11 +459,11 @@ We also consider here a nano-hexapod with the identified optimal actuator stiffn
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd87b94b" class="outline-4">
|
<div id="outline-container-org564cc95" class="outline-4">
|
||||||
<h4 id="orgd87b94b"><span class="section-number-4">2.2.1</span> Direct Velocity Feedback</h4>
|
<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">
|
<div class="outline-text-4" id="text-2-2-1">
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<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]\).
|
It can be seen that very little active damping can be achieve for axial stiffnesses below \(10^7\,[N/m]\).
|
||||||
</p>
|
</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><img src="figs/flex_joints_trans_study_dvf.png" alt="flex_joints_trans_study_dvf.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/flex_joints_trans_study_dvf_root_locus.png" alt="flex_joints_trans_study_dvf_root_locus.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 9: </span>Root Locus for all the considered axial Stiffnesses</p>
|
<p><span class="figure-number">Figure 9: </span>Root Locus for all the considered axial Stiffnesses</p>
|
||||||
</div>
|
</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><img src="figs/flex_joints_trans_study_root_locus_unzoom.png" alt="flex_joints_trans_study_root_locus_unzoom.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 10: </span>Root Locus (unzoom) for all the considered axial Stiffnesses</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge5d1c12" class="outline-4">
|
<div id="outline-container-orgc1721b8" class="outline-4">
|
||||||
<h4 id="orge5d1c12"><span class="section-number-4">2.2.2</span> Primary Control</h4>
|
<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">
|
<div class="outline-text-4" id="text-2-2-2">
|
||||||
<p>
|
<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>
|
</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><img src="figs/flex_joints_trans_study_primary_plant.png" alt="flex_joints_trans_study_primary_plant.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org382b3cb" class="outline-3">
|
<div id="outline-container-org13f48c9" class="outline-3">
|
||||||
<h3 id="org382b3cb"><span class="section-number-3">2.3</span> Conclusion</h3>
|
<h3 id="org13f48c9"><span class="section-number-3">2.3</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-3">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<div class="important" id="org422e802">
|
<div class="important" id="org4a497ad">
|
||||||
<p>
|
<p>
|
||||||
The axial stiffness of the flexible joints should be maximized.
|
The axial stiffness of the flexible joints should be maximized.
|
||||||
</p>
|
</p>
|
||||||
@ -539,14 +544,14 @@ We may interpolate the results and say that the axial joint stiffness should be
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb6f6c0a" class="outline-2">
|
<div id="outline-container-org5519f74" class="outline-2">
|
||||||
<h2 id="orgb6f6c0a"><span class="section-number-2">3</span> Conclusion</h2>
|
<h2 id="org5519f74"><span class="section-number-2">3</span> Conclusion</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="org6614f42"></a>
|
<a id="org8e0b118"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="important" id="org3cbf243">
|
<div class="important" id="org3aeae4e">
|
||||||
<p>
|
<p>
|
||||||
In this study we considered the bending, torsional and axial stiffnesses of the flexible joints used for the nano-hexapod.
|
In this study we considered the bending, torsional and axial stiffnesses of the flexible joints used for the nano-hexapod.
|
||||||
</p>
|
</p>
|
||||||
@ -583,26 +588,26 @@ As there is generally a trade-off between bending stiffness and axial stiffness,
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-orgdf2870d" class="outline-2">
|
<div id="outline-container-org358d063" class="outline-2">
|
||||||
<h2 id="orgdf2870d"><span class="section-number-2">4</span> Designed Flexible Joints</h2>
|
<h2 id="org358d063"><span class="section-number-2">4</span> Designed Flexible Joints</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgd355fcb" class="outline-3">
|
<div id="outline-container-org1148778" class="outline-3">
|
||||||
<h3 id="orgd355fcb"><span class="section-number-3">4.1</span> Initialization</h3>
|
<h3 id="org1148778"><span class="section-number-3">4.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-4-1">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<p>
|
<p>
|
||||||
Let’s initialize all the stages with default parameters.
|
Let’s initialize all the stages with default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</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>);
|
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -610,19 +615,19 @@ initializeMirror();
|
|||||||
Let’s consider the heaviest mass which should we the most problematic with it comes to the flexible joints.
|
Let’s consider the heaviest mass which should we the most problematic with it comes to the flexible joints.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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));
|
<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);
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>);
|
<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>);
|
apa = load(<span class="org-string">'./mat/APA300ML_simplified_model.mat'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeNanoHexapod(<span class="org-string">'actuator'</span>, <span class="org-string">'amplified'</span>, ...
|
<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">'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">'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">'Kr_M'</span>, flex_joint.K(1,1)<span class="org-type">*</span>ones(6,1), ...
|
||||||
@ -638,23 +643,23 @@ apa = load(<span class="org-string">'./mat/APA300ML_simplified_model.mat'</span>
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeNanoHexapod();
|
<pre class="src src-matlab"> initializeNanoHexapod();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org43c7d3c" class="outline-3">
|
<div id="outline-container-orgd889755" class="outline-3">
|
||||||
<h3 id="org43c7d3c"><span class="section-number-3">4.2</span> Direct Velocity Feedback</h3>
|
<h3 id="orgd889755"><span class="section-number-3">4.2</span> Direct Velocity Feedback</h3>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org056a1de" class="outline-3">
|
<div id="outline-container-org12972b2" class="outline-3">
|
||||||
<h3 id="org056a1de"><span class="section-number-3">4.3</span> Integral Force Feedback</h3>
|
<h3 id="org12972b2"><span class="section-number-3">4.3</span> Integral Force Feedback</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,359 +1,354 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-05 mar. 10:33 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Matlab Functions used for the NASS Project</title>
|
<title>Matlab Functions used for the NASS Project</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<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>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Matlab Functions used for the NASS Project</h1>
|
<h1 class="title">Matlab Functions used for the NASS Project</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org3fa0f20">1. describeNassSetup</a>
|
<li><a href="#org4210488">1. describeNassSetup</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org3615302">Function description</a></li>
|
<li><a href="#org048d120">Function description</a></li>
|
||||||
<li><a href="#org3b8c4f7">Simscape Configuration</a></li>
|
<li><a href="#orgf678c44">Simscape Configuration</a></li>
|
||||||
<li><a href="#org5b65749">Disturbances</a></li>
|
<li><a href="#org09d336f">Disturbances</a></li>
|
||||||
<li><a href="#org59f7825">References</a></li>
|
<li><a href="#orgf4f5d8b">References</a></li>
|
||||||
<li><a href="#org90b1ac8">Controller</a></li>
|
<li><a href="#orga131750">Controller</a></li>
|
||||||
<li><a href="#orgdd5b7a5">Micro-Station</a></li>
|
<li><a href="#org58ad578">Micro-Station</a></li>
|
||||||
<li><a href="#org1687c05">Metrology</a></li>
|
<li><a href="#org0d8c061">Metrology</a></li>
|
||||||
<li><a href="#orgee5944e">Nano Hexapod</a></li>
|
<li><a href="#org61bb891">Nano Hexapod</a></li>
|
||||||
<li><a href="#orga499c17">Sample</a></li>
|
<li><a href="#org4eba4ef">Sample</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgdc168b9">2. computeReferencePose</a></li>
|
<li><a href="#org6008c77">2. computeReferencePose</a></li>
|
||||||
<li><a href="#org493ab7f">3. Compute the Sample Position Error w.r.t. the NASS</a></li>
|
<li><a href="#org5693f09">3. Compute the Sample Position Error w.r.t. the NASS</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3fa0f20" class="outline-2">
|
<div id="outline-container-org4210488" class="outline-2">
|
||||||
<h2 id="org3fa0f20"><span class="section-number-2">1</span> describeNassSetup</h2>
|
<h2 id="org4210488"><span class="section-number-2">1</span> describeNassSetup</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org0b9cc9d"></a>
|
<a id="org0b45d8b"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org3615302" class="outline-3">
|
<div id="outline-container-org048d120" class="outline-3">
|
||||||
<h3 id="org3615302">Function description</h3>
|
<h3 id="org048d120">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org3615302">
|
<div class="outline-text-3" id="text-org048d120">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [] = describeNassSetup()
|
<pre class="src src-matlab"> <span class="org-keyword">function</span> <span class="org-variable-name">[]</span> = <span class="org-function-name">describeNassSetup</span>()
|
||||||
% describeNassSetup -
|
<span class="org-comment">% describeNassSetup -</span>
|
||||||
%
|
<span class="org-comment">%</span>
|
||||||
% Syntax: [] = describeNassSetup()
|
<span class="org-comment">% Syntax: [] = describeNassSetup()</span>
|
||||||
%
|
<span class="org-comment">%</span>
|
||||||
% Inputs:
|
<span class="org-comment">% Inputs:</span>
|
||||||
% - -
|
<span class="org-comment">% - -</span>
|
||||||
%
|
<span class="org-comment">%</span>
|
||||||
% Outputs:
|
<span class="org-comment">% Outputs:</span>
|
||||||
% - -
|
<span class="org-comment">% - -</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3b8c4f7" class="outline-3">
|
<div id="outline-container-orgf678c44" class="outline-3">
|
||||||
<h3 id="org3b8c4f7">Simscape Configuration</h3>
|
<h3 id="orgf678c44">Simscape Configuration</h3>
|
||||||
<div class="outline-text-3" id="text-org3b8c4f7">
|
<div class="outline-text-3" id="text-orgf678c44">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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
|
<span class="org-keyword">if</span> conf_simscape.type <span class="org-type">==</span> 1
|
||||||
fprintf('- Gravity is included\n');
|
fprintf(<span class="org-string">'- Gravity is included\n'</span>);
|
||||||
else
|
<span class="org-keyword">else</span>
|
||||||
fprintf('- Gravity is not included\n');
|
fprintf(<span class="org-string">'- Gravity is not included\n'</span>);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
|
|
||||||
fprintf('\n');
|
fprintf(<span class="org-string">'\n'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5b65749" class="outline-3">
|
<div id="outline-container-org09d336f" class="outline-3">
|
||||||
<h3 id="org5b65749">Disturbances</h3>
|
<h3 id="org09d336f">Disturbances</h3>
|
||||||
<div class="outline-text-3" id="text-org5b65749">
|
<div class="outline-text-3" id="text-org09d336f">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">fprintf('Disturbances:\n');
|
<pre class="src src-matlab"> fprintf(<span class="org-string">'Disturbances:\n'</span>);
|
||||||
if ~args.enable
|
<span class="org-keyword">if</span> <span class="org-type">~</span>args.enable
|
||||||
fprintf('- No disturbance is included\n');
|
fprintf(<span class="org-string">'- No disturbance is included\n'</span>);
|
||||||
else
|
<span class="org-keyword">else</span>
|
||||||
if args.Dwx && args.Dwy && args.Dwz
|
<span class="org-keyword">if</span> args.Dwx <span class="org-type">&&</span> args.Dwy <span class="org-type">&&</span> args.Dwz
|
||||||
fprintf('- Ground motion\n');
|
fprintf(<span class="org-string">'- Ground motion\n'</span>);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
if args.Fty_x && args.Fty_z
|
<span class="org-keyword">if</span> args.Fty_x <span class="org-type">&&</span> args.Fty_z
|
||||||
fprintf('- Vibrations of the Translation Stage\n');
|
fprintf(<span class="org-string">'- Vibrations of the Translation Stage\n'</span>);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
if args.Frz_z
|
<span class="org-keyword">if</span> args.Frz_z
|
||||||
fprintf('- Vibrations of the Spindle\n');
|
fprintf(<span class="org-string">'- Vibrations of the Spindle\n'</span>);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
fprintf('\n');
|
fprintf(<span class="org-string">'\n'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org59f7825" class="outline-3">
|
<div id="outline-container-orgf4f5d8b" class="outline-3">
|
||||||
<h3 id="org59f7825">References</h3>
|
<h3 id="orgf4f5d8b">References</h3>
|
||||||
<div class="outline-text-3" id="text-org59f7825">
|
<div class="outline-text-3" id="text-orgf4f5d8b">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">fprintf('Reference Tracking:\n');
|
<pre class="src src-matlab"> fprintf(<span class="org-string">'Reference Tracking:\n'</span>);
|
||||||
fprintf('- Translation Stage:\n');
|
fprintf(<span class="org-string">'- Translation Stage:\n'</span>);
|
||||||
switch args.Dy_type
|
<span class="org-keyword">switch</span> <span class="org-constant">args.Dy_type</span>
|
||||||
case 'constant'
|
<span class="org-keyword">case</span> <span class="org-string">'constant'</span>
|
||||||
fprintf(' - Constant Position\n');
|
fprintf(<span class="org-string">' - Constant Position\n'</span>);
|
||||||
fprintf(' - Dy = %.0f [mm]\n', args.Dy_amplitude*1e3);
|
fprintf(<span class="org-string">' - Dy = %.0f [mm]\n'</span>, args.Dy_amplitude<span class="org-type">*</span>1e3);
|
||||||
case 'triangular'
|
<span class="org-keyword">case</span> <span class="org-string">'triangular'</span>
|
||||||
fprintf(' - Triangular Path\n');
|
fprintf(<span class="org-string">' - Triangular Path\n'</span>);
|
||||||
fprintf(' - Amplitude = %.0f [mm]\n', args.Dy_amplitude*1e3);
|
fprintf(<span class="org-string">' - Amplitude = %.0f [mm]\n'</span>, args.Dy_amplitude<span class="org-type">*</span>1e3);
|
||||||
fprintf(' - Period = %.0f [s]\n', args.Dy_period);
|
fprintf(<span class="org-string">' - Period = %.0f [s]\n'</span>, args.Dy_period);
|
||||||
case 'sinusoidal'
|
<span class="org-keyword">case</span> <span class="org-string">'sinusoidal'</span>
|
||||||
fprintf(' - Sinusoidal Path\n');
|
fprintf(<span class="org-string">' - Sinusoidal Path\n'</span>);
|
||||||
fprintf(' - Amplitude = %.0f [mm]\n', args.Dy_amplitude*1e3);
|
fprintf(<span class="org-string">' - Amplitude = %.0f [mm]\n'</span>, args.Dy_amplitude<span class="org-type">*</span>1e3);
|
||||||
fprintf(' - Period = %.0f [s]\n', args.Dy_period);
|
fprintf(<span class="org-string">' - Period = %.0f [s]\n'</span>, args.Dy_period);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
|
|
||||||
fprintf('- Tilt Stage:\n');
|
fprintf(<span class="org-string">'- Tilt Stage:\n'</span>);
|
||||||
switch args.Ry_type
|
<span class="org-keyword">switch</span> <span class="org-constant">args.Ry_type</span>
|
||||||
case 'constant'
|
<span class="org-keyword">case</span> <span class="org-string">'constant'</span>
|
||||||
fprintf(' - Constant Position\n');
|
fprintf(<span class="org-string">' - Constant Position\n'</span>);
|
||||||
fprintf(' - Ry = %.0f [mm]\n', args.Ry_amplitude*1e3);
|
fprintf(<span class="org-string">' - Ry = %.0f [mm]\n'</span>, args.Ry_amplitude<span class="org-type">*</span>1e3);
|
||||||
case 'triangular'
|
<span class="org-keyword">case</span> <span class="org-string">'triangular'</span>
|
||||||
fprintf(' - Triangular Path\n');
|
fprintf(<span class="org-string">' - Triangular Path\n'</span>);
|
||||||
fprintf(' - Amplitude = %.0f [mm]\n', args.Ry_amplitude*1e3);
|
fprintf(<span class="org-string">' - Amplitude = %.0f [mm]\n'</span>, args.Ry_amplitude<span class="org-type">*</span>1e3);
|
||||||
fprintf(' - Period = %.0f [s]\n', args.Ry_period);
|
fprintf(<span class="org-string">' - Period = %.0f [s]\n'</span>, args.Ry_period);
|
||||||
case 'sinusoidal'
|
<span class="org-keyword">case</span> <span class="org-string">'sinusoidal'</span>
|
||||||
fprintf(' - Sinusoidal Path\n');
|
fprintf(<span class="org-string">' - Sinusoidal Path\n'</span>);
|
||||||
fprintf(' - Amplitude = %.0f [mm]\n', args.Ry_amplitude*1e3);
|
fprintf(<span class="org-string">' - Amplitude = %.0f [mm]\n'</span>, args.Ry_amplitude<span class="org-type">*</span>1e3);
|
||||||
fprintf(' - Period = %.0f [s]\n', args.Ry_period);
|
fprintf(<span class="org-string">' - Period = %.0f [s]\n'</span>, args.Ry_period);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
|
|
||||||
fprintf('- Spindle:\n');
|
fprintf(<span class="org-string">'- Spindle:\n'</span>);
|
||||||
switch args.Rz_type
|
<span class="org-keyword">switch</span> <span class="org-constant">args.Rz_type</span>
|
||||||
case 'constant'
|
<span class="org-keyword">case</span> <span class="org-string">'constant'</span>
|
||||||
fprintf(' - Constant Position\n');
|
fprintf(<span class="org-string">' - Constant Position\n'</span>);
|
||||||
fprintf(' - Rz = %.0f [deg]\n', 180/pi*args.Rz_amplitude);
|
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);
|
||||||
case { 'rotating', 'rotating-not-filtered' }
|
<span class="org-keyword">case</span> { <span class="org-string">'rotating'</span>, <span class="org-string">'rotating-not-filtered'</span> }
|
||||||
fprintf(' - Rotating\n');
|
fprintf(<span class="org-string">' - Rotating\n'</span>);
|
||||||
fprintf(' - Speed = %.0f [rpm]\n', 60/args.Rz_period);
|
fprintf(<span class="org-string">' - Speed = %.0f [rpm]\n'</span>, 60<span class="org-type">/</span>args.Rz_period);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
|
|
||||||
|
|
||||||
fprintf('- Micro Hexapod:\n');
|
fprintf(<span class="org-string">'- Micro Hexapod:\n'</span>);
|
||||||
switch args.Dh_type
|
<span class="org-keyword">switch</span> <span class="org-constant">args.Dh_type</span>
|
||||||
case 'constant'
|
<span class="org-keyword">case</span> <span class="org-string">'constant'</span>
|
||||||
fprintf(' - Constant Position\n');
|
fprintf(<span class="org-string">' - Constant Position\n'</span>);
|
||||||
fprintf(' - Dh = %.0f, %.0f, %.0f [mm]\n', args.Dh_pos(1), args.Dh_pos(2), args.Dh_pos(3));
|
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(' - Rh = %.0f, %.0f, %.0f [deg]\n', args.Dh_pos(4), args.Dh_pos(5), args.Dh_pos(6));
|
fprintf(<span class="org-string">' - Rh = %.0f, %.0f, %.0f [deg]\n'</span>, args.Dh_pos(4), args.Dh_pos(5), args.Dh_pos(6));
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
|
|
||||||
fprintf('\n');
|
fprintf(<span class="org-string">'\n'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org90b1ac8" class="outline-3">
|
<div id="outline-container-orga131750" class="outline-3">
|
||||||
<h3 id="org90b1ac8">Controller</h3>
|
<h3 id="orga131750">Controller</h3>
|
||||||
<div class="outline-text-3" id="text-org90b1ac8">
|
<div class="outline-text-3" id="text-orga131750">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">fprintf('Controller:\n');
|
<pre class="src src-matlab"> fprintf(<span class="org-string">'Controller:\n'</span>);
|
||||||
fprintf('- %s\n', controller.name);
|
fprintf(<span class="org-string">'- %s\n'</span>, controller.name);
|
||||||
fprintf('\n');
|
fprintf(<span class="org-string">'\n'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgdd5b7a5" class="outline-3">
|
<div id="outline-container-org58ad578" class="outline-3">
|
||||||
<h3 id="orgdd5b7a5">Micro-Station</h3>
|
<h3 id="org58ad578">Micro-Station</h3>
|
||||||
<div class="outline-text-3" id="text-orgdd5b7a5">
|
<div class="outline-text-3" id="text-org58ad578">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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 && ...
|
<span class="org-keyword">if</span> granite.type <span class="org-type">==</span> 1 <span class="org-type">&&</span> ...
|
||||||
ty.type == 1 && ...
|
ty.type <span class="org-type">==</span> 1 <span class="org-type">&&</span> ...
|
||||||
ry.type == 1 && ...
|
ry.type <span class="org-type">==</span> 1 <span class="org-type">&&</span> ...
|
||||||
rz.type == 1 && ...
|
rz.type <span class="org-type">==</span> 1 <span class="org-type">&&</span> ...
|
||||||
micro_hexapod.type == 1;
|
micro_hexapod.type <span class="org-type">==</span> 1;
|
||||||
fprintf('- All stages are rigid\n');
|
fprintf(<span class="org-string">'- All stages are rigid\n'</span>);
|
||||||
elseif granite.type == 2 && ...
|
<span class="org-keyword">elseif</span> granite.type <span class="org-type">==</span> 2 <span class="org-type">&&</span> ...
|
||||||
ty.type == 2 && ...
|
ty.type <span class="org-type">==</span> 2 <span class="org-type">&&</span> ...
|
||||||
ry.type == 2 && ...
|
ry.type <span class="org-type">==</span> 2 <span class="org-type">&&</span> ...
|
||||||
rz.type == 2 && ...
|
rz.type <span class="org-type">==</span> 2 <span class="org-type">&&</span> ...
|
||||||
micro_hexapod.type == 2;
|
micro_hexapod.type <span class="org-type">==</span> 2;
|
||||||
fprintf('- All stages are flexible\n');
|
fprintf(<span class="org-string">'- All stages are flexible\n'</span>);
|
||||||
else
|
<span class="org-keyword">else</span>
|
||||||
if granite.type == 1 || granite.type == 4
|
<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('- Granite is rigid\n');
|
fprintf(<span class="org-string">'- Granite is rigid\n'</span>);
|
||||||
else
|
<span class="org-keyword">else</span>
|
||||||
fprintf('- Granite is flexible\n');
|
fprintf(<span class="org-string">'- Granite is flexible\n'</span>);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
if ty.type == 1 || ty.type == 4
|
<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('- Translation Stage is rigid\n');
|
fprintf(<span class="org-string">'- Translation Stage is rigid\n'</span>);
|
||||||
else
|
<span class="org-keyword">else</span>
|
||||||
fprintf('- Translation Stage is flexible\n');
|
fprintf(<span class="org-string">'- Translation Stage is flexible\n'</span>);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
if ry.type == 1 || ry.type == 4
|
<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('- Tilt Stage is rigid\n');
|
fprintf(<span class="org-string">'- Tilt Stage is rigid\n'</span>);
|
||||||
else
|
<span class="org-keyword">else</span>
|
||||||
fprintf('- Tilt Stage is flexible\n');
|
fprintf(<span class="org-string">'- Tilt Stage is flexible\n'</span>);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
if rz.type == 1 || rz.type == 4
|
<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('- Spindle is rigid\n');
|
fprintf(<span class="org-string">'- Spindle is rigid\n'</span>);
|
||||||
else
|
<span class="org-keyword">else</span>
|
||||||
fprintf('- Spindle is flexible\n');
|
fprintf(<span class="org-string">'- Spindle is flexible\n'</span>);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
if micro_hexapod.type == 1 || micro_hexapod.type == 4
|
<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('- Micro Hexapod is rigid\n');
|
fprintf(<span class="org-string">'- Micro Hexapod is rigid\n'</span>);
|
||||||
else
|
<span class="org-keyword">else</span>
|
||||||
fprintf('- Micro Hexapod is flexible\n');
|
fprintf(<span class="org-string">'- Micro Hexapod is flexible\n'</span>);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
|
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
|
|
||||||
fprintf('\n');
|
fprintf(<span class="org-string">'\n'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1687c05" class="outline-3">
|
<div id="outline-container-org0d8c061" class="outline-3">
|
||||||
<h3 id="org1687c05">Metrology</h3>
|
<h3 id="org0d8c061">Metrology</h3>
|
||||||
<div class="outline-text-3" id="text-org1687c05">
|
<div class="outline-text-3" id="text-org0d8c061">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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;
|
<span class="org-keyword">if</span> mirror.type <span class="org-type">==</span> 2;
|
||||||
fprintf('- flexible fixation\n');
|
fprintf(<span class="org-string">'- flexible fixation\n'</span>);
|
||||||
fprintf('- w = %.0f [Hz]\n', mirror.freq(1));
|
fprintf(<span class="org-string">'- w = %.0f [Hz]\n'</span>, mirror.freq(1));
|
||||||
else
|
<span class="org-keyword">else</span>
|
||||||
fprintf('- rigidly attached to the nano-hexapod\n');
|
fprintf(<span class="org-string">'- rigidly attached to the nano-hexapod\n'</span>);
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
fprintf('- m = %.0f [kg]\n', mirror.mass);
|
fprintf(<span class="org-string">'- m = %.0f [kg]\n'</span>, mirror.mass);
|
||||||
fprintf('\n');
|
fprintf(<span class="org-string">'\n'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgee5944e" class="outline-3">
|
<div id="outline-container-org61bb891" class="outline-3">
|
||||||
<h3 id="orgee5944e">Nano Hexapod</h3>
|
<h3 id="org61bb891">Nano Hexapod</h3>
|
||||||
<div class="outline-text-3" id="text-orgee5944e">
|
<div class="outline-text-3" id="text-org61bb891">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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;
|
<span class="org-keyword">if</span> nano_hexapod.type <span class="org-type">==</span> 0;
|
||||||
fprintf('- no included\n');
|
fprintf(<span class="org-string">'- no included\n'</span>);
|
||||||
elseif nano_hexapod.type == 1 || nano_hexapod.type == 3;
|
<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('- rigid\n');
|
fprintf(<span class="org-string">'- rigid\n'</span>);
|
||||||
elseif nano_hexapod.type == 2;
|
<span class="org-keyword">elseif</span> nano_hexapod.type <span class="org-type">==</span> 2;
|
||||||
fprintf('- flexible\n');
|
fprintf(<span class="org-string">'- flexible\n'</span>);
|
||||||
fprintf('- Ki = %.0g [N/m]\n', nano_hexapod.actuators.K(1));
|
fprintf(<span class="org-string">'- Ki = %.0g [N/m]\n'</span>, nano_hexapod.actuators.K(1));
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
|
|
||||||
fprintf('\n');
|
fprintf(<span class="org-string">'\n'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga499c17" class="outline-3">
|
<div id="outline-container-org4eba4ef" class="outline-3">
|
||||||
<h3 id="orga499c17">Sample</h3>
|
<h3 id="org4eba4ef">Sample</h3>
|
||||||
<div class="outline-text-3" id="text-orga499c17">
|
<div class="outline-text-3" id="text-org4eba4ef">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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;
|
<span class="org-keyword">if</span> sample.type <span class="org-type">==</span> 0;
|
||||||
fprintf('- no included\n');
|
fprintf(<span class="org-string">'- no included\n'</span>);
|
||||||
elseif sample.type == 1 || sample.type == 3;
|
<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('- rigid\n');
|
fprintf(<span class="org-string">'- rigid\n'</span>);
|
||||||
fprintf('- mass = %.0f [kg]\n', sample.mass);
|
fprintf(<span class="org-string">'- mass = %.0f [kg]\n'</span>, sample.mass);
|
||||||
fprintf('- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n', sample.inertia(1), sample.inertia(2), sample.inertia(3));
|
fprintf(<span class="org-string">'- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n'</span>, sample.inertia(1), sample.inertia(2), sample.inertia(3));
|
||||||
elseif sample.type == 2;
|
<span class="org-keyword">elseif</span> sample.type <span class="org-type">==</span> 2;
|
||||||
fprintf('- flexible\n');
|
fprintf(<span class="org-string">'- flexible\n'</span>);
|
||||||
fprintf('- mass = %.0f [kg]\n', sample.mass);
|
fprintf(<span class="org-string">'- mass = %.0f [kg]\n'</span>, sample.mass);
|
||||||
fprintf('- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n', sample.inertia(1), sample.inertia(2), sample.inertia(3));
|
fprintf(<span class="org-string">'- moment of inertia = %.2f, %.2f, %.2f [kg m2]\n'</span>, 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));
|
<span class="org-comment">% fprintf('- Kt = %.0g, %.0g, %.0g [N/m]\n', sample.K(1), sample.K(2), sample.K(3));</span>
|
||||||
% fprintf('- Kr = %.0g, %.0g, %.0g [Nm/rad]\n', sample.K(4), sample.K(5), sample.K(6));
|
<span class="org-comment">% fprintf('- Kr = %.0g, %.0g, %.0g [Nm/rad]\n', sample.K(4), sample.K(5), sample.K(6));</span>
|
||||||
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(<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('- 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)));
|
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)));
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
fprintf('\n');
|
fprintf(<span class="org-string">'\n'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgdc168b9" class="outline-2">
|
<div id="outline-container-org6008c77" class="outline-2">
|
||||||
<h2 id="orgdc168b9"><span class="section-number-2">2</span> computeReferencePose</h2>
|
<h2 id="org6008c77"><span class="section-number-2">2</span> computeReferencePose</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="org98cbe6e"></a>
|
<a id="orgdaeb489"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -361,50 +356,50 @@ This Matlab function is accessible <a href="..//src/computeReferencePose.m">here
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [WTr] = computeReferencePose(Dy, Ry, Rz, Dh, Dn)
|
<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>)
|
||||||
% computeReferencePose - Compute the homogeneous transformation matrix corresponding to the wanted pose of the sample
|
<span class="org-comment">% computeReferencePose - Compute the homogeneous transformation matrix corresponding to the wanted pose of the sample</span>
|
||||||
%
|
<span class="org-comment">%</span>
|
||||||
% Syntax: [WTr] = computeReferencePose(Dy, Ry, Rz, Dh, Dn)
|
<span class="org-comment">% Syntax: [WTr] = computeReferencePose(Dy, Ry, Rz, Dh, Dn)</span>
|
||||||
%
|
<span class="org-comment">%</span>
|
||||||
% Inputs:
|
<span class="org-comment">% Inputs:</span>
|
||||||
% - Dy - Reference of the Translation Stage [m]
|
<span class="org-comment">% - Dy - Reference of the Translation Stage [m]</span>
|
||||||
% - Ry - Reference of the Tilt Stage [rad]
|
<span class="org-comment">% - Ry - Reference of the Tilt Stage [rad]</span>
|
||||||
% - Rz - Reference of the Spindle [rad]
|
<span class="org-comment">% - Rz - Reference of the Spindle [rad]</span>
|
||||||
% - Dh - Reference of the Micro Hexapod (Pitch, Roll, Yaw angles) [m, m, m, rad, rad, rad]
|
<span class="org-comment">% - Dh - Reference of the Micro Hexapod (Pitch, Roll, Yaw angles) [m, m, m, rad, rad, rad]</span>
|
||||||
% - Dn - Reference of the Nano Hexapod [m, m, m, rad, rad, rad]
|
<span class="org-comment">% - Dn - Reference of the Nano Hexapod [m, m, m, rad, rad, rad]</span>
|
||||||
%
|
<span class="org-comment">%</span>
|
||||||
% Outputs:
|
<span class="org-comment">% Outputs:</span>
|
||||||
% - WTr -
|
<span class="org-comment">% - WTr -</span>
|
||||||
|
|
||||||
%% Translation Stage
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Translation Stage</span></span>
|
||||||
Rty = [1 0 0 0;
|
Rty = [1 0 0 0;
|
||||||
0 1 0 Dy;
|
0 1 0 Dy;
|
||||||
0 0 1 0;
|
0 0 1 0;
|
||||||
0 0 0 1];
|
0 0 0 1];
|
||||||
|
|
||||||
%% Tilt Stage - Pure rotating aligned with Ob
|
<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;
|
Rry = [ cos(Ry) 0 sin(Ry) 0;
|
||||||
0 1 0 0;
|
0 1 0 0;
|
||||||
-sin(Ry) 0 cos(Ry) 0;
|
<span class="org-type">-</span>sin(Ry) 0 cos(Ry) 0;
|
||||||
0 0 0 1];
|
0 0 0 1];
|
||||||
|
|
||||||
%% Spindle - Rotation along the Z axis
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Spindle - Rotation along the Z axis</span></span>
|
||||||
Rrz = [cos(Rz) -sin(Rz) 0 0 ;
|
Rrz = [cos(Rz) <span class="org-type">-</span>sin(Rz) 0 0 ;
|
||||||
sin(Rz) cos(Rz) 0 0 ;
|
sin(Rz) cos(Rz) 0 0 ;
|
||||||
0 0 1 0 ;
|
0 0 1 0 ;
|
||||||
0 0 0 1 ];
|
0 0 0 1 ];
|
||||||
|
|
||||||
|
|
||||||
%% Micro-Hexapod
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Micro-Hexapod</span></span>
|
||||||
Rhx = [1 0 0;
|
Rhx = [1 0 0;
|
||||||
0 cos(Dh(4)) -sin(Dh(4));
|
0 cos(Dh(4)) <span class="org-type">-</span>sin(Dh(4));
|
||||||
0 sin(Dh(4)) cos(Dh(4))];
|
0 sin(Dh(4)) cos(Dh(4))];
|
||||||
|
|
||||||
Rhy = [ cos(Dh(5)) 0 sin(Dh(5));
|
Rhy = [ cos(Dh(5)) 0 sin(Dh(5));
|
||||||
0 1 0;
|
0 1 0;
|
||||||
-sin(Dh(5)) 0 cos(Dh(5))];
|
<span class="org-type">-</span>sin(Dh(5)) 0 cos(Dh(5))];
|
||||||
|
|
||||||
Rhz = [cos(Dh(6)) -sin(Dh(6)) 0;
|
Rhz = [cos(Dh(6)) <span class="org-type">-</span>sin(Dh(6)) 0;
|
||||||
sin(Dh(6)) cos(Dh(6)) 0;
|
sin(Dh(6)) cos(Dh(6)) 0;
|
||||||
0 0 1];
|
0 0 1];
|
||||||
|
|
||||||
@ -413,18 +408,18 @@ This Matlab function is accessible <a href="..//src/computeReferencePose.m">here
|
|||||||
0 0 1 Dh(3) ;
|
0 0 1 Dh(3) ;
|
||||||
0 0 0 1 ];
|
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
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Nano-Hexapod</span></span>
|
||||||
Rnx = [1 0 0;
|
Rnx = [1 0 0;
|
||||||
0 cos(Dn(4)) -sin(Dn(4));
|
0 cos(Dn(4)) <span class="org-type">-</span>sin(Dn(4));
|
||||||
0 sin(Dn(4)) cos(Dn(4))];
|
0 sin(Dn(4)) cos(Dn(4))];
|
||||||
|
|
||||||
Rny = [ cos(Dn(5)) 0 sin(Dn(5));
|
Rny = [ cos(Dn(5)) 0 sin(Dn(5));
|
||||||
0 1 0;
|
0 1 0;
|
||||||
-sin(Dn(5)) 0 cos(Dn(5))];
|
<span class="org-type">-</span>sin(Dn(5)) 0 cos(Dn(5))];
|
||||||
|
|
||||||
Rnz = [cos(Dn(6)) -sin(Dn(6)) 0;
|
Rnz = [cos(Dn(6)) <span class="org-type">-</span>sin(Dn(6)) 0;
|
||||||
sin(Dn(6)) cos(Dn(6)) 0;
|
sin(Dn(6)) cos(Dn(6)) 0;
|
||||||
0 0 1];
|
0 0 1];
|
||||||
|
|
||||||
@ -433,21 +428,21 @@ This Matlab function is accessible <a href="..//src/computeReferencePose.m">here
|
|||||||
0 0 1 Dn(3) ;
|
0 0 1 Dn(3) ;
|
||||||
0 0 0 1 ];
|
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
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Total Homogeneous transformation</span></span>
|
||||||
WTr = Rty*Rry*Rrz*Rh*Rn;
|
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;
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org493ab7f" class="outline-2">
|
<div id="outline-container-org5693f09" class="outline-2">
|
||||||
<h2 id="org493ab7f"><span class="section-number-2">3</span> Compute the Sample Position Error w.r.t. the NASS</h2>
|
<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">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="org6dcd4fb"></a>
|
<a id="org7e4ab10"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -455,26 +450,26 @@ This Matlab function is accessible <a href="..//src/computeSampleError.m">here</
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [MTr] = computeSampleError(WTm, WTr)
|
<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>)
|
||||||
% computeSampleError -
|
<span class="org-comment">% computeSampleError -</span>
|
||||||
%
|
<span class="org-comment">%</span>
|
||||||
% Syntax: [MTr] = computeSampleError(WTm, WTr)
|
<span class="org-comment">% Syntax: [MTr] = computeSampleError(WTm, WTr)</span>
|
||||||
%
|
<span class="org-comment">%</span>
|
||||||
% Inputs:
|
<span class="org-comment">% Inputs:</span>
|
||||||
% - WTm - Homoegeneous transformation that represent the
|
<span class="org-comment">% - WTm - Homoegeneous transformation that represent the</span>
|
||||||
% wanted pose of the sample with respect to the granite
|
<span class="org-comment">% wanted pose of the sample with respect to the granite</span>
|
||||||
% - WTr - Homoegeneous transformation that represent the
|
<span class="org-comment">% - WTr - Homoegeneous transformation that represent the</span>
|
||||||
% measured pose of the sample with respect to the granite
|
<span class="org-comment">% measured pose of the sample with respect to the granite</span>
|
||||||
%
|
<span class="org-comment">%</span>
|
||||||
% Outputs:
|
<span class="org-comment">% Outputs:</span>
|
||||||
% - MTr - Homoegeneous transformation that represent the
|
<span class="org-comment">% - MTr - Homoegeneous transformation that represent the</span>
|
||||||
% wanted pose of the sample expressed in a frame
|
<span class="org-comment">% wanted pose of the sample expressed in a frame</span>
|
||||||
% attached to the top platform of the nano-hexapod
|
<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;
|
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;
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -482,7 +477,7 @@ end
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -3,53 +3,58 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-09-01 mar. 13:47 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Identification</title>
|
<title>Identification</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Identification</h1>
|
<h1 class="title">Identification</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org2770d63">1. Some notes about the Simscape Model</a></li>
|
<li><a href="#org5582ea0">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="#orgf85a160">2. Compare with measurements at the CoM of each element</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgcfb741d">2.1. Prepare the Simulation</a></li>
|
<li><a href="#orge69d679">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="#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="#org57b3870">2.3. Create a frame at the CoM of each solid body</a></li>
|
<li><a href="#org2138392">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="#orgd2f0b7f">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="#org46896c0">2.5. Compare with measurements</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#orge0c91d3">3.1. Initialization</a></li>
|
<li><a href="#org177dd40">3.1. Initialization</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orga1de7a7">4. Conclusion</a></li>
|
<li><a href="#orgba8bb2d">4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</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.
|
Finally, this should help to tune the parameters of the model such that the dynamics is closer to the measured FRF.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-org2770d63" class="outline-2">
|
<div id="outline-container-org5582ea0" class="outline-2">
|
||||||
<h2 id="org2770d63"><span class="section-number-2">1</span> Some notes about the Simscape Model</h2>
|
<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">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
The Simscape Model of the micro-station consists of several solid bodies:
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org66149fc" class="outline-2">
|
<div id="outline-container-orgf85a160" class="outline-2">
|
||||||
<h2 id="org66149fc"><span class="section-number-2">2</span> Compare with measurements at the CoM of each element</h2>
|
<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 class="outline-text-2" id="text-2">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgcfb741d" class="outline-3">
|
<div id="outline-container-orge69d679" class="outline-3">
|
||||||
<h3 id="orgcfb741d"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
|
<h3 id="orge69d679"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
We load the configuration.
|
We load the configuration.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -116,7 +121,7 @@ We load the configuration.
|
|||||||
We set a small <code>StopTime</code>.
|
We set a small <code>StopTime</code>.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -124,46 +129,46 @@ We set a small <code>StopTime</code>.
|
|||||||
We initialize all the stages.
|
We initialize all the stages.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround( 'type', 'rigid');
|
<pre class="src src-matlab"> initializeGround( <span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
||||||
initializeGranite( 'type', 'modal-analysis');
|
initializeGranite( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||||
initializeTy( 'type', 'modal-analysis');
|
initializeTy( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||||
initializeRy( 'type', 'modal-analysis');
|
initializeRy( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||||
initializeRz( 'type', 'modal-analysis');
|
initializeRz( <span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||||
initializeMicroHexapod('type', 'modal-analysis');
|
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'modal-analysis'</span>);
|
||||||
initializeAxisc( 'type', 'flexible');
|
initializeAxisc( <span class="org-string">'type'</span>, <span class="org-string">'flexible'</span>);
|
||||||
|
|
||||||
initializeMirror( 'type', 'none');
|
initializeMirror( <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeNanoHexapod( 'type', 'none');
|
initializeNanoHexapod( <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeSample( 'type', 'none');
|
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();
|
initializeReferences();
|
||||||
initializeDisturbances('enable', false);
|
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgec82ba2" class="outline-3">
|
<div id="outline-container-orgb9afb3f" 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>
|
<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">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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>
|
<caption class="t-above"><span class="table-number">Table 1:</span> Center of Mass of each solid body as defined in Simscape</caption>
|
||||||
|
|
||||||
<colgroup>
|
<colgroup>
|
||||||
@ -226,10 +231,10 @@ The results are shown in the table <a href="#org0a81dc1">1</a>.
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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>
|
<caption class="t-above"><span class="table-number">Table 2:</span> Estimated Center of Mass of each solid body using Solidworks</caption>
|
||||||
|
|
||||||
<colgroup>
|
<colgroup>
|
||||||
@ -303,8 +308,8 @@ However, in SolidWorks, this has probably not be included with the top granite.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org57b3870" class="outline-3">
|
<div id="outline-container-org2138392" 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>
|
<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">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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:
|
We now same this for further use:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">granite_bot_com = granite_bot_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, :)';
|
granite_top_com = granite_top_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||||
ty_com = ty_com.Data(end, :)';
|
ty_com = ty_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||||
ry_com = ry_com.Data(end, :)';
|
ry_com = ry_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||||
rz_com = rz_com.Data(end, :)';
|
rz_com = rz_com.Data(end, <span class="org-type">:</span>)<span class="org-type">'</span>;
|
||||||
hexa_com = hexa_com.Data(end, :)';
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -407,20 +412,20 @@ Then, we use the obtained results to add a <code>rigidTransform</code> block in
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc263d1a" class="outline-3">
|
<div id="outline-container-orgd2f0b7f" class="outline-3">
|
||||||
<h3 id="orgc263d1a"><span class="section-number-3">2.4</span> Identification of the dynamics of the Simscape Model</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-4">
|
||||||
<p>
|
<p>
|
||||||
We now use a new Simscape Model where 6DoF inertial sensors are located at the Center of Mass of each solid body.
|
We now use a new Simscape Model where 6DoF inertial sensors are located at the Center of Mass of each solid body.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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.
|
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>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">%% Options for Linearized
|
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||||
options = linearizeOptions;
|
options = linearizeOptions;
|
||||||
options.SampleTime = 0;
|
options.SampleTime = 0;
|
||||||
|
|
||||||
%% Name of the Simulink File
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||||
mdl = 'nass_model';
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
%% Input/Output definition
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
clear io; io_i = 1;
|
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, <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, '/Micro-Station/Granite/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 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, '/Micro-Station/Translation Stage/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 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, '/Micro-Station/Tilt Stage/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 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, '/Micro-Station/Spindle/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 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, '/Micro-Station/Micro Hexapod/Modal Analysis/accelerometer'], 1, 'openoutput'); io_i = io_i + 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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">% Run the linearization
|
<pre class="src src-matlab"> <span class="org-comment">% Run the linearization</span>
|
||||||
G_ms = linearize(mdl, io, 0);
|
G_ms = linearize(mdl, io, 0);
|
||||||
|
|
||||||
%% Input/Output definition
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
G_ms.InputName = {'Fx', 'Fy', 'Fz'};
|
G_ms.InputName = {<span class="org-string">'Fx'</span>, <span class="org-string">'Fy'</span>, <span class="org-string">'Fz'</span>};
|
||||||
G_ms.OutputName = {'gtop_x', 'gtop_y', 'gtop_z', 'gtop_rx', 'gtop_ry', 'gtop_rz', ...
|
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>, ...
|
||||||
'ty_x', 'ty_y', 'ty_z', 'ty_rx', 'ty_ry', 'ty_rz', ...
|
<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>, ...
|
||||||
'ry_x', 'ry_y', 'ry_z', 'ry_rx', 'ry_ry', 'ry_rz', ...
|
<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>, ...
|
||||||
'rz_x', 'rz_y', 'rz_z', 'rz_rx', 'rz_ry', 'rz_rz', ...
|
<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>, ...
|
||||||
'hexa_x', 'hexa_y', 'hexa_z', 'hexa_rx', 'hexa_ry', 'hexa_rz'};
|
<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>
|
</pre>
|
||||||
</div>
|
</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}\);
|
In order to obtain a displacement, we divide the obtained transfer function by \(1/s^{2}\);
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0c6ab2b" class="outline-3">
|
<div id="outline-container-org46896c0" class="outline-3">
|
||||||
<h3 id="org0c6ab2b"><span class="section-number-3">2.5</span> Compare with measurements</h3>
|
<h3 id="org46896c0"><span class="section-number-3">2.5</span> Compare with measurements</h3>
|
||||||
<div class="outline-text-3" id="text-2-5">
|
<div class="outline-text-3" id="text-2-5">
|
||||||
<p>
|
<p>
|
||||||
We now load the Frequency Response Functions measurements during the Modal Analysis (accessible <a href="../../meas/modal-analysis/index.html">here</a>).
|
We now load the Frequency Response Functions measurements during the Modal Analysis (accessible <a href="../../meas/modal-analysis/index.html">here</a>).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">load('../meas/modal-analysis/mat/frf_coh_matrices.mat', 'freqs');
|
<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('../meas/modal-analysis/mat/frf_com.mat', 'FRFs_CoM');
|
load(<span class="org-string">'../meas/modal-analysis/mat/frf_com.mat'</span>, <span class="org-string">'FRFs_CoM'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -489,7 +494,7 @@ We then compare the measurements with the identified transfer functions using th
|
|||||||
</p>
|
</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><img src="figs/identification_comp_bot_stages.png" alt="identification_comp_bot_stages.png" />
|
||||||
</p>
|
</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>
|
<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><img src="figs/identification_comp_mid_stages.png" alt="identification_comp_mid_stages.png" />
|
||||||
</p>
|
</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>
|
<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><img src="figs/identification_comp_top_stages.png" alt="identification_comp_top_stages.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org4704f01" class="outline-2">
|
<div id="outline-container-org4b5f363" class="outline-2">
|
||||||
<h2 id="org4704f01"><span class="section-number-2">3</span> Obtained Compliance of the Micro-Station</h2>
|
<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 class="outline-text-2" id="text-3">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orge0c91d3" class="outline-3">
|
<div id="outline-container-org177dd40" class="outline-3">
|
||||||
<h3 id="orge0c91d3"><span class="section-number-3">3.1</span> Initialization</h3>
|
<h3 id="org177dd40"><span class="section-number-3">3.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod('type', 'compliance');
|
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'compliance'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -539,19 +544,19 @@ initializeMicroHexapod('type', 'compliance');
|
|||||||
We put nothing on top of the micro-hexapod.
|
We put nothing on top of the micro-hexapod.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeAxisc('type', 'none');
|
<pre class="src src-matlab"> initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeMirror('type', 'none');
|
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeNanoHexapod('type', 'none');
|
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeSample('type', 'none');
|
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeReferences();
|
<pre class="src src-matlab"> initializeReferences();
|
||||||
initializeDisturbances();
|
initializeDisturbances();
|
||||||
initializeController();
|
initializeController();
|
||||||
initializeSimscapeConfiguration();
|
initializeSimscapeConfiguration();
|
||||||
initializeLoggingConfiguration();
|
initializeLoggingConfiguration();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -560,31 +565,31 @@ And we identify the dynamics from forces/torques applied on the micro-hexapod to
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">%% Name of the Simulink File
|
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||||
mdl = 'nass_model';
|
mdl = <span class="org-string">'nass_model'</span>;
|
||||||
|
|
||||||
%% Input/Output definition
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||||
clear io; io_i = 1;
|
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, <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, '/Micro-Station/Micro Hexapod/Compliance/Dm'], 1, 'output'); io_i = io_i + 1; % Absolute displacement of the top platform
|
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
|
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||||
Gm = linearize(mdl, io, 0);
|
Gm = linearize(mdl, io, 0);
|
||||||
Gm.InputName = {'Fmx', 'Fmy', 'Fmz', 'Mmx', 'Mmy', 'Mmz'};
|
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 = {'Dx', 'Dy', 'Dz', 'Drx', 'Dry', 'Drz'};
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/compliance_micro_station.png" alt="compliance_micro_station.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga1de7a7" class="outline-2">
|
<div id="outline-container-orgba8bb2d" class="outline-2">
|
||||||
<h2 id="orga1de7a7"><span class="section-number-2">4</span> Conclusion</h2>
|
<h2 id="orgba8bb2d"><span class="section-number-2">4</span> Conclusion</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
<div class="important">
|
<div class="important" id="orgcfecb2d">
|
||||||
<p>
|
<p>
|
||||||
For such a complex system, we believe that the Simscape Model represents the dynamics of the system with enough fidelity.
|
For such a complex system, we believe that the Simscape Model represents the dynamics of the system with enough fidelity.
|
||||||
</p>
|
</p>
|
||||||
@ -607,7 +612,7 @@ For such a complex system, we believe that the Simscape Model represents the dyn
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
122
docs/index.html
122
docs/index.html
@ -3,47 +3,43 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-07-31 ven. 18:00 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Simscape Model of the Nano-Active-Stabilization-System</title>
|
<title>Simscape Model of the Nano-Active-Stabilization-System</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<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>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Simscape Model of the Nano-Active-Stabilization-System</h1>
|
<h1 class="title">Simscape Model of the Nano-Active-Stabilization-System</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgc4bcf0b">1. Simulink Project (link)</a></li>
|
<li><a href="#orgee8ec17">1. Simulink Project (link)</a></li>
|
||||||
<li><a href="#orge439c56">2. Simscape Model (link)</a></li>
|
<li><a href="#orgd349eee">2. Simscape Model (link)</a></li>
|
||||||
<li><a href="#orgc7bf13d">3. Simscape Subsystems (link)</a></li>
|
<li><a href="#orgfdc3a69">3. Simscape Subsystems (link)</a></li>
|
||||||
<li><a href="#orgdb0ed73">4. Kinematics of the Station (link)</a></li>
|
<li><a href="#orgbc9b583">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="#org7d74f37">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="#org706e96f">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="#org709ccd8">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="#org6f33c6c">8. Disturbances (link)</a></li>
|
||||||
<li><a href="#org8d9280d">9. Simulation of Experiment (link)</a></li>
|
<li><a href="#org00ec100">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="#org21372b7">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="#org685834f">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="#org11bb003">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="#orgecc04b0">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="#org1c03b4e">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="#org06c33c8">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="#org4f2bb92">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="#org32aed6c">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="#org97e196a">18. Useful Matlab Functions (link)</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -51,8 +47,8 @@
|
|||||||
Here are links to the documents related to the Simscape model of the Nano-Active-Stabilization-System.
|
Here are links to the documents related to the Simscape model of the Nano-Active-Stabilization-System.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-orgc4bcf0b" class="outline-2">
|
<div id="outline-container-orgee8ec17" class="outline-2">
|
||||||
<h2 id="orgc4bcf0b"><span class="section-number-2">1</span> Simulink Project (<a href="./simulink_project.html">link</a>)</h2>
|
<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">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
The project is managed with a Simulink Project.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge439c56" class="outline-2">
|
<div id="outline-container-orgd349eee" class="outline-2">
|
||||||
<h2 id="orge439c56"><span class="section-number-2">2</span> Simscape Model (<a href="./simscape.html">link</a>)</h2>
|
<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">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
The model of the NASS is based on Simulink and Simscape Multi-Body.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc7bf13d" class="outline-2">
|
<div id="outline-container-orgfdc3a69" class="outline-2">
|
||||||
<h2 id="orgc7bf13d"><span class="section-number-2">3</span> Simscape Subsystems (<a href="./simscape_subsystems.html">link</a>)</h2>
|
<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">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
The model is decomposed of multiple subsystems.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgdb0ed73" class="outline-2">
|
<div id="outline-container-orgbc9b583" class="outline-2">
|
||||||
<h2 id="orgdb0ed73"><span class="section-number-2">4</span> Kinematics of the Station (<a href="./kinematics.html">link</a>)</h2>
|
<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">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
First, we consider perfectly rigid elements and joints and we just study the kinematic of the station.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org905bc44" class="outline-2">
|
<div id="outline-container-org7d74f37" 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>
|
<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">
|
<div class="outline-text-2" id="text-5">
|
||||||
<p>
|
<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.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org402c8e6" class="outline-2">
|
<div id="outline-container-org706e96f" 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>
|
<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">
|
<div class="outline-text-2" id="text-6">
|
||||||
<p>
|
<p>
|
||||||
From dynamical measurements perform on the real positioning station, we tune the parameters of the simscape model to have similar dynamics.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7af5540" class="outline-2">
|
<div id="outline-container-org709ccd8" 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>
|
<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">
|
<div class="outline-text-2" id="text-7">
|
||||||
<p>
|
<p>
|
||||||
When gravity is included in the model, the simulation does not start at steady state.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4dd191b" class="outline-2">
|
<div id="outline-container-org6f33c6c" class="outline-2">
|
||||||
<h2 id="org4dd191b"><span class="section-number-2">8</span> Disturbances (<a href="./disturbances.html">link</a>)</h2>
|
<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">
|
<div class="outline-text-2" id="text-8">
|
||||||
<p>
|
<p>
|
||||||
The effect of disturbances on the position of the micro-station have been measured.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8d9280d" class="outline-2">
|
<div id="outline-container-org00ec100" class="outline-2">
|
||||||
<h2 id="org8d9280d"><span class="section-number-2">9</span> Simulation of Experiment (<a href="./experiments.html">link</a>)</h2>
|
<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">
|
<div class="outline-text-2" id="text-9">
|
||||||
<p>
|
<p>
|
||||||
Now that the dynamics of the Model have been tuned and the Disturbances have included, we can simulate experiments.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0605048" class="outline-2">
|
<div id="outline-container-org21372b7" 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>
|
<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">
|
<div class="outline-text-2" id="text-10">
|
||||||
<p>
|
<p>
|
||||||
In this document, is studied how uncertainty on the micro-station compliance will affect the uncertainty of the isolation platform to be designed.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge777d0f" class="outline-2">
|
<div id="outline-container-org685834f" 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>
|
<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">
|
<div class="outline-text-2" id="text-11">
|
||||||
<p>
|
<p>
|
||||||
The payload mass, stiffness and damping properties will influence the dynamics of the isolation platform.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga323881" class="outline-2">
|
<div id="outline-container-org11bb003" 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>
|
<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">
|
<div class="outline-text-2" id="text-12">
|
||||||
<p>
|
<p>
|
||||||
In this document, the effect of all the experimental conditions (rotation speed, sample mass, …) on the plant dynamics are studied.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge7b9b41" class="outline-2">
|
<div id="outline-container-orgecc04b0" 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>
|
<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>
|
||||||
|
|
||||||
<div id="outline-container-org5f73af9" class="outline-2">
|
<div id="outline-container-org1c03b4e" 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>
|
<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">
|
<div class="outline-text-2" id="text-14">
|
||||||
<p>
|
<p>
|
||||||
In this document is studied how the flexible joint stiffnesses (in flexion, torsion and compression) is affecting the plant dynamics.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2852795" class="outline-2">
|
<div id="outline-container-org06c33c8" class="outline-2">
|
||||||
<h2 id="org2852795"><span class="section-number-2">15</span> Dynamic Noise Budgeting (<a href="noise_budgeting.html">link</a>)</h2>
|
<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">
|
<div class="outline-text-2" id="text-15">
|
||||||
<p>
|
<p>
|
||||||
The maximum allowed noise of the sensors in the system are estimated using a Dynamic Noise Budgeting.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org14a10e8" class="outline-2">
|
<div id="outline-container-org4f2bb92" 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>
|
<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">
|
<div class="outline-text-2" id="text-16">
|
||||||
<p>
|
<p>
|
||||||
Active damping techniques are applied to the full Simscape model.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd818a00" class="outline-2">
|
<div id="outline-container-org32aed6c" 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>
|
<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">
|
<div class="outline-text-2" id="text-17">
|
||||||
<p>
|
<p>
|
||||||
In this file are gathered all studies about the control the Nano-Active-Stabilization-System.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org361f405" class="outline-2">
|
<div id="outline-container-org97e196a" class="outline-2">
|
||||||
<h2 id="org361f405"><span class="section-number-2">18</span> Useful Matlab Functions (<a href="./functions.html">link</a>)</h2>
|
<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">
|
<div class="outline-text-2" id="text-18">
|
||||||
<p>
|
<p>
|
||||||
Many matlab functions are shared among all the files of the projects.
|
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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
7
docs/js/bootstrap.min.js
vendored
7
docs/js/bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
4
docs/js/jquery.min.js
vendored
4
docs/js/jquery.min.js
vendored
File diff suppressed because one or more lines are too long
1
docs/js/jquery.stickytableheaders.min.js
vendored
1
docs/js/jquery.stickytableheaders.min.js
vendored
@ -1 +0,0 @@
|
|||||||
!function(a,b){"use strict";function c(c,g){var h=this;h.$el=a(c),h.el=c,h.id=e++,h.$window=a(b),h.$document=a(document),h.$el.bind("destroyed",a.proxy(h.teardown,h)),h.$clonedHeader=null,h.$originalHeader=null,h.isSticky=!1,h.hasBeenSticky=!1,h.leftOffset=null,h.topOffset=null,h.init=function(){h.$el.each(function(){var b=a(this);b.css("padding",0),h.$originalHeader=a("thead:first",this),h.$clonedHeader=h.$originalHeader.clone(),b.trigger("clonedHeader."+d,[h.$clonedHeader]),h.$clonedHeader.addClass("tableFloatingHeader"),h.$clonedHeader.css("display","none"),h.$originalHeader.addClass("tableFloatingHeaderOriginal"),h.$originalHeader.after(h.$clonedHeader),h.$printStyle=a('<style type="text/css" media="print">.tableFloatingHeader{display:none !important;}.tableFloatingHeaderOriginal{position:static !important;}</style>'),a("head").append(h.$printStyle)}),h.setOptions(g),h.updateWidth(),h.toggleHeaders(),h.bind()},h.destroy=function(){h.$el.unbind("destroyed",h.teardown),h.teardown()},h.teardown=function(){h.isSticky&&h.$originalHeader.css("position","static"),a.removeData(h.el,"plugin_"+d),h.unbind(),h.$clonedHeader.remove(),h.$originalHeader.removeClass("tableFloatingHeaderOriginal"),h.$originalHeader.css("visibility","visible"),h.$printStyle.remove(),h.el=null,h.$el=null},h.bind=function(){h.$scrollableArea.on("scroll."+d,h.toggleHeaders),h.isWindowScrolling||(h.$window.on("scroll."+d+h.id,h.setPositionValues),h.$window.on("resize."+d+h.id,h.toggleHeaders)),h.$scrollableArea.on("resize."+d,h.toggleHeaders),h.$scrollableArea.on("resize."+d,h.updateWidth)},h.unbind=function(){h.$scrollableArea.off("."+d,h.toggleHeaders),h.isWindowScrolling||(h.$window.off("."+d+h.id,h.setPositionValues),h.$window.off("."+d+h.id,h.toggleHeaders)),h.$scrollableArea.off("."+d,h.updateWidth)},h.toggleHeaders=function(){h.$el&&h.$el.each(function(){var b,c=a(this),d=h.isWindowScrolling?isNaN(h.options.fixedOffset)?h.options.fixedOffset.outerHeight():h.options.fixedOffset:h.$scrollableArea.offset().top+(isNaN(h.options.fixedOffset)?0:h.options.fixedOffset),e=c.offset(),f=h.$scrollableArea.scrollTop()+d,g=h.$scrollableArea.scrollLeft(),i=h.isWindowScrolling?f>e.top:d>e.top,j=(h.isWindowScrolling?f:0)<e.top+c.height()-h.$clonedHeader.height()-(h.isWindowScrolling?0:d);i&&j?(b=e.left-g+h.options.leftOffset,h.$originalHeader.css({position:"fixed","margin-top":h.options.marginTop,left:b,"z-index":3}),h.leftOffset=b,h.topOffset=d,h.$clonedHeader.css("display",""),h.isSticky||(h.isSticky=!0,h.updateWidth()),h.setPositionValues()):h.isSticky&&(h.$originalHeader.css("position","static"),h.$clonedHeader.css("display","none"),h.isSticky=!1,h.resetWidth(a("td,th",h.$clonedHeader),a("td,th",h.$originalHeader)))})},h.setPositionValues=function(){var a=h.$window.scrollTop(),b=h.$window.scrollLeft();!h.isSticky||0>a||a+h.$window.height()>h.$document.height()||0>b||b+h.$window.width()>h.$document.width()||h.$originalHeader.css({top:h.topOffset-(h.isWindowScrolling?0:a),left:h.leftOffset-(h.isWindowScrolling?0:b)})},h.updateWidth=function(){if(h.isSticky){h.$originalHeaderCells||(h.$originalHeaderCells=a("th,td",h.$originalHeader)),h.$clonedHeaderCells||(h.$clonedHeaderCells=a("th,td",h.$clonedHeader));var b=h.getWidth(h.$clonedHeaderCells);h.setWidth(b,h.$clonedHeaderCells,h.$originalHeaderCells),h.$originalHeader.css("width",h.$clonedHeader.width())}},h.getWidth=function(c){var d=[];return c.each(function(c){var e,f=a(this);if("border-box"===f.css("box-sizing"))e=f[0].getBoundingClientRect().width;else{var g=a("th",h.$originalHeader);if("collapse"===g.css("border-collapse"))if(b.getComputedStyle)e=parseFloat(b.getComputedStyle(this,null).width);else{var i=parseFloat(f.css("padding-left")),j=parseFloat(f.css("padding-right")),k=parseFloat(f.css("border-width"));e=f.outerWidth()-i-j-k}else e=f.width()}d[c]=e}),d},h.setWidth=function(a,b,c){b.each(function(b){var d=a[b];c.eq(b).css({"min-width":d,"max-width":d})})},h.resetWidth=function(b,c){b.each(function(b){var d=a(this);c.eq(b).css({"min-width":d.css("min-width"),"max-width":d.css("max-width")})})},h.setOptions=function(c){h.options=a.extend({},f,c),h.$scrollableArea=a(h.options.scrollableArea),h.isWindowScrolling=h.$scrollableArea[0]===b},h.updateOptions=function(a){h.setOptions(a),h.unbind(),h.bind(),h.updateWidth(),h.toggleHeaders()},h.init()}var d="stickyTableHeaders",e=0,f={fixedOffset:0,leftOffset:0,marginTop:0,scrollableArea:b};a.fn[d]=function(b){return this.each(function(){var e=a.data(this,"plugin_"+d);e?"string"==typeof b?e[b].apply(e):e.updateOptions(b):"destroy"!==b&&a.data(this,"plugin_"+d,new c(this,b))})}}(jQuery,window);
|
|
@ -1,85 +0,0 @@
|
|||||||
$(function() {
|
|
||||||
$('.note').before("<p class='admonition-title note'>Note</p>");
|
|
||||||
$('.seealso').before("<p class='admonition-title seealso'>See also</p>");
|
|
||||||
$('.warning').before("<p class='admonition-title warning'>Warning</p>");
|
|
||||||
$('.caution').before("<p class='admonition-title caution'>Caution</p>");
|
|
||||||
$('.attention').before("<p class='admonition-title attention'>Attention</p>");
|
|
||||||
$('.tip').before("<p class='admonition-title tip'>Tip</p>");
|
|
||||||
$('.important').before("<p class='admonition-title important'>Important</p>");
|
|
||||||
$('.hint').before("<p class='admonition-title hint'>Hint</p>");
|
|
||||||
$('.error').before("<p class='admonition-title error'>Error</p>");
|
|
||||||
$('.danger').before("<p class='admonition-title danger'>Danger</p>");
|
|
||||||
});
|
|
||||||
|
|
||||||
$( document ).ready(function() {
|
|
||||||
|
|
||||||
// Shift nav in mobile when clicking the menu.
|
|
||||||
$(document).on('click', "[data-toggle='wy-nav-top']", function() {
|
|
||||||
$("[data-toggle='wy-nav-shift']").toggleClass("shift");
|
|
||||||
$("[data-toggle='rst-versions']").toggleClass("shift");
|
|
||||||
});
|
|
||||||
// Close menu when you click a link.
|
|
||||||
$(document).on('click', ".wy-menu-vertical .current ul li a", function() {
|
|
||||||
$("[data-toggle='wy-nav-shift']").removeClass("shift");
|
|
||||||
$("[data-toggle='rst-versions']").toggleClass("shift");
|
|
||||||
});
|
|
||||||
$(document).on('click', "[data-toggle='rst-current-version']", function() {
|
|
||||||
$("[data-toggle='rst-versions']").toggleClass("shift-up");
|
|
||||||
});
|
|
||||||
// Make tables responsive
|
|
||||||
$("table.docutils:not(.field-list)").wrap("<div class='wy-table-responsive'></div>");
|
|
||||||
});
|
|
||||||
|
|
||||||
$( document ).ready(function() {
|
|
||||||
$('#text-table-of-contents ul').first().addClass('nav');
|
|
||||||
// ScrollSpy also requires that we use
|
|
||||||
// a Bootstrap nav component.
|
|
||||||
$('body').scrollspy({target: '#text-table-of-contents'});
|
|
||||||
|
|
||||||
// add sticky table headers
|
|
||||||
$('table').stickyTableHeaders();
|
|
||||||
|
|
||||||
// set the height of tableOfContents
|
|
||||||
var $postamble = $('#postamble');
|
|
||||||
var $tableOfContents = $('#table-of-contents');
|
|
||||||
$tableOfContents.css({paddingBottom: $postamble.outerHeight()});
|
|
||||||
|
|
||||||
// add TOC button
|
|
||||||
var toggleSidebar = $('<div id="toggle-sidebar"><a href="#table-of-contents"><h2>Table of Contents</h2></a></div>');
|
|
||||||
$('#content').prepend(toggleSidebar);
|
|
||||||
|
|
||||||
// add close button when sidebar showed in mobile screen
|
|
||||||
var closeBtn = $('<a class="close-sidebar" href="#">Close</a>');
|
|
||||||
var tocTitle = $('#table-of-contents').find('h2');
|
|
||||||
tocTitle.append(closeBtn);
|
|
||||||
});
|
|
||||||
|
|
||||||
window.SphinxRtdTheme = (function (jquery) {
|
|
||||||
var stickyNav = (function () {
|
|
||||||
var navBar,
|
|
||||||
win,
|
|
||||||
stickyNavCssClass = 'stickynav',
|
|
||||||
applyStickNav = function () {
|
|
||||||
if (navBar.height() <= win.height()) {
|
|
||||||
navBar.addClass(stickyNavCssClass);
|
|
||||||
} else {
|
|
||||||
navBar.removeClass(stickyNavCssClass);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
enable = function () {
|
|
||||||
applyStickNav();
|
|
||||||
win.on('resize', applyStickNav);
|
|
||||||
},
|
|
||||||
init = function () {
|
|
||||||
navBar = jquery('nav.wy-nav-side:first');
|
|
||||||
win = jquery(window);
|
|
||||||
};
|
|
||||||
jquery(init);
|
|
||||||
return {
|
|
||||||
enable : enable
|
|
||||||
};
|
|
||||||
}());
|
|
||||||
return {
|
|
||||||
StickyNav : stickyNav
|
|
||||||
};
|
|
||||||
}($));
|
|
@ -1,50 +1,54 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-17 ven. 09:35 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Kinematics of the station</title>
|
<title>Kinematics of the station</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Kinematics of the station</h1>
|
<h1 class="title">Kinematics of the station</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org46d4418">1. Micro Hexapod</a>
|
<li><a href="#org4ed4783">1. Micro Hexapod</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org6cc9e73">1.1. How the Symetrie Hexapod is controlled on the micro station</a></li>
|
<li><a href="#org129001c">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="#org310b222">1.2. Control of the Micro-Hexapod using Simscape</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org3924132">1.2.1. Using Bushing Joint</a></li>
|
<li><a href="#org8a60dbb">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="#org207d470">1.2.2. Using Inverse Kinematics and Leg Actuators</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgc9eab88">1.2.2.1. Theory</a></li>
|
<li><a href="#org1f70ebc">1.2.2.1. Theory</a></li>
|
||||||
<li><a href="#orge812977">1.2.2.2. Matlab Implementation</a></li>
|
<li><a href="#org8974896">1.2.2.2. Matlab Implementation</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -59,12 +63,12 @@
|
|||||||
In this document, we discuss the way the motion of each stage is defined.
|
In this document, we discuss the way the motion of each stage is defined.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-org46d4418" class="outline-2">
|
<div id="outline-container-org4ed4783" class="outline-2">
|
||||||
<h2 id="org46d4418"><span class="section-number-2">1</span> Micro Hexapod</h2>
|
<h2 id="org4ed4783"><span class="section-number-2">1</span> Micro Hexapod</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org6cc9e73" class="outline-3">
|
<div id="outline-container-org129001c" 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>
|
<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">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<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):
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgfcd44a9" class="outline-3">
|
<div id="outline-container-org310b222" class="outline-3">
|
||||||
<h3 id="orgfcd44a9"><span class="section-number-3">1.2</span> Control of the Micro-Hexapod using Simscape</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
We can think of two main ways to position the Micro-Hexapod using Simscape.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3924132" class="outline-4">
|
<div id="outline-container-org8a60dbb" class="outline-4">
|
||||||
<h4 id="org3924132"><span class="section-number-4">1.2.1</span> Using Bushing Joint</h4>
|
<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">
|
<div class="outline-text-4" id="text-1-2-1">
|
||||||
<p>
|
<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>
|
</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><img src="figs/bushing_joint_transform.png" alt="bushing_joint_transform.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Joint Transformation Sequence for the Bushing Joint</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org949c942" class="outline-4">
|
<div id="outline-container-org207d470" class="outline-4">
|
||||||
<h4 id="org949c942"><span class="section-number-4">1.2.2</span> Using Inverse Kinematics and Leg Actuators</h4>
|
<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">
|
<div class="outline-text-4" id="text-1-2-2">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc9eab88" class="outline-5">
|
<div id="outline-container-org1f70ebc" class="outline-5">
|
||||||
<h5 id="orgc9eab88"><span class="section-number-5">1.2.2.1</span> Theory</h5>
|
<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">
|
<div class="outline-text-5" id="text-1-2-2-1">
|
||||||
<p>
|
<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\).
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge812977" class="outline-5">
|
<div id="outline-container-org8974896" class="outline-5">
|
||||||
<h5 id="orge812977"><span class="section-number-5">1.2.2.2</span> Matlab Implementation</h5>
|
<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">
|
<div class="outline-text-5" id="text-1-2-2-2">
|
||||||
<p>
|
<p>
|
||||||
We open the Simulink file.
|
We open the Simulink file.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -234,8 +238,8 @@ We open the Simulink file.
|
|||||||
We load the configuration and set a small <code>StopTime</code>.
|
We load the configuration and set a small <code>StopTime</code>.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simulink.mat'</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>);
|
<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>
|
</pre>
|
||||||
</div>
|
</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.
|
We define the wanted position/orientation of the Hexapod under study.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">tx = 0.05; <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>
|
ty = 0.1; <span class="org-comment">% [rad]</span>
|
||||||
tz = 0.02; <span class="org-comment">% [rad]</span>
|
tz = 0.02; <span class="org-comment">% [rad]</span>
|
||||||
|
|
||||||
Rx = [1 0 0;
|
Rx = [1 0 0;
|
||||||
0 cos(tx) <span class="org-type">-</span>sin(tx);
|
0 cos(tx) <span class="org-type">-</span>sin(tx);
|
||||||
0 sin(tx) cos(tx)];
|
0 sin(tx) cos(tx)];
|
||||||
|
|
||||||
Ry = [ cos(ty) 0 sin(ty);
|
Ry = [ cos(ty) 0 sin(ty);
|
||||||
0 1 0;
|
0 1 0;
|
||||||
<span class="org-type">-</span>sin(ty) 0 cos(ty)];
|
<span class="org-type">-</span>sin(ty) 0 cos(ty)];
|
||||||
|
|
||||||
Rz = [cos(tz) <span class="org-type">-</span>sin(tz) 0;
|
Rz = [cos(tz) <span class="org-type">-</span>sin(tz) 0;
|
||||||
sin(tz) cos(tz) 0;
|
sin(tz) cos(tz) 0;
|
||||||
0 0 1];
|
0 0 1];
|
||||||
|
|
||||||
ARB = Rz<span class="org-type">*</span>Ry<span class="org-type">*</span>Rx;
|
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>
|
AP = [0.1; 0.005; 0.01]; <span class="org-comment">% [m]</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</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>);
|
||||||
initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'none'</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>);
|
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>);
|
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>);
|
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>);
|
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);
|
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>);
|
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(<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>);
|
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>);
|
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>);
|
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -284,7 +288,7 @@ initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span clas
|
|||||||
We run the simulation.
|
We run the simulation.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -292,7 +296,7 @@ We run the simulation.
|
|||||||
And we verify that we indeed succeed to go to the wanted position.
|
And we verify that we indeed succeed to go to the wanted position.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -318,7 +322,7 @@ And we verify that we indeed succeed to go to the wanted position.
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -360,7 +364,7 @@ And we verify that we indeed succeed to go to the wanted position.
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,55 +1,59 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-05 mar. 10:33 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Study of the Metrology Frame</title>
|
<title>Study of the Metrology Frame</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Study of the Metrology Frame</h1>
|
<h1 class="title">Study of the Metrology Frame</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgf049208">1. Flexibility of the reference mirror</a>
|
<li><a href="#orgb421d07">1. Flexibility of the reference mirror</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgaec148c">1.1. Initialization</a></li>
|
<li><a href="#orga0061d2">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="#orgd1b6150">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="#orgcfbd00f">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="#org68e6519">1.4. Comparison</a></li>
|
||||||
<li><a href="#orgbe63408">1.5. Conclusion</a></li>
|
<li><a href="#org914c413">1.5. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf049208" class="outline-2">
|
<div id="outline-container-orgb421d07" class="outline-2">
|
||||||
<h2 id="orgf049208"><span class="section-number-2">1</span> Flexibility of the reference mirror</h2>
|
<h2 id="orgb421d07"><span class="section-number-2">1</span> Flexibility of the reference mirror</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgaec148c" class="outline-3">
|
<div id="outline-container-orga0061d2" class="outline-3">
|
||||||
<h3 id="orgaec148c"><span class="section-number-3">1.1</span> Initialization</h3>
|
<h3 id="orga0061d2"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeNanoHexapod();
|
initializeNanoHexapod();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -86,33 +90,33 @@ initializeNanoHexapod();
|
|||||||
We first consider a rigid Sample to simplify the analysis.
|
We first consider a rigid Sample to simplify the analysis.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgaeca24e" class="outline-3">
|
<div id="outline-container-orgd1b6150" 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>
|
<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">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
Let’s first consider a rigid reference mirror and we identify the dynamics of the system.
|
Let’s first consider a rigid reference mirror and we identify the dynamics of the system.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbe194f6" class="outline-3">
|
<div id="outline-container-orgcfbd00f" 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>
|
<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">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
We now initialize a reference mirror with a main resonance frequency at \(200\ [Hz]\).
|
We now initialize a reference mirror with a main resonance frequency at \(200\ [Hz]\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -121,15 +125,15 @@ And we re identify the plant dynamics.
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org385c252" class="outline-3">
|
<div id="outline-container-org68e6519" class="outline-3">
|
||||||
<h3 id="org385c252"><span class="section-number-3">1.4</span> Comparison</h3>
|
<h3 id="org68e6519"><span class="section-number-3">1.4</span> Comparison</h3>
|
||||||
<div class="outline-text-3" id="text-1-4">
|
<div class="outline-text-3" id="text-1-4">
|
||||||
<p>
|
<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>
|
</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><img src="figs/effect_mirror_flexibility_fz_dz.png" alt="effect_mirror_flexibility_fz_dz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbe63408" class="outline-3">
|
<div id="outline-container-org914c413" class="outline-3">
|
||||||
<h3 id="orgbe63408"><span class="section-number-3">1.5</span> Conclusion</h3>
|
<h3 id="org914c413"><span class="section-number-3">1.5</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-1-5">
|
<div class="outline-text-3" id="text-1-5">
|
||||||
<div class="important">
|
<div class="important" id="org8c09fad">
|
||||||
<p>
|
<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.
|
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.
|
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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,51 +1,55 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-17 ven. 09:35 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Motion and Force Requirements for the Nano-Hexapod</title>
|
<title>Motion and Force Requirements for the Nano-Hexapod</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Motion and Force Requirements for the Nano-Hexapod</h1>
|
<h1 class="title">Motion and Force Requirements for the Nano-Hexapod</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org70e526c">1. Soft Hexapod</a>
|
<li><a href="#orgecd6b81">1. Soft Hexapod</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org3326d69">1.1. Example</a></li>
|
<li><a href="#org292e705">1.1. Example</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org70e526c" class="outline-2">
|
<div id="outline-container-orgecd6b81" class="outline-2">
|
||||||
<h2 id="org70e526c"><span class="section-number-2">1</span> Soft Hexapod</h2>
|
<h2 id="orgecd6b81"><span class="section-number-2">1</span> Soft Hexapod</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
As the nano-hexapod is in series with the other stages, it must apply all the force required to move the sample.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3326d69" class="outline-3">
|
<div id="outline-container-org292e705" class="outline-3">
|
||||||
<h3 id="org3326d69"><span class="section-number-3">1.1</span> Example</h3>
|
<h3 id="org292e705"><span class="section-number-3">1.1</span> Example</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<p>
|
||||||
The wanted motion is:
|
The wanted motion is:
|
||||||
@ -121,11 +125,11 @@ And the norm of the force is:
|
|||||||
For a Light sample:
|
For a Light sample:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">m = 30;
|
<pre class="src src-matlab"> m = 30;
|
||||||
d = 10e<span class="org-type">-</span>3;
|
d = 10e<span class="org-type">-</span>3;
|
||||||
w = 2<span class="org-type">*</span><span class="org-constant">pi</span>;
|
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;
|
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
|
<span class="org-constant">ans</span> = F
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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:
|
For the Heavy sample:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">m = 80;
|
<pre class="src src-matlab"> m = 80;
|
||||||
d = 10e<span class="org-type">-</span>3;
|
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;
|
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
|
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
|
<span class="org-constant">ans</span> = F
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -155,7 +159,7 @@ F = m<span class="org-type">*</span>d<span class="org-type">*</span>w<span class
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -3,77 +3,82 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-09-01 mar. 13:47 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Noise Budgeting</title>
|
<title>Noise Budgeting</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Noise Budgeting</h1>
|
<h1 class="title">Noise Budgeting</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<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>
|
<ul>
|
||||||
<li><a href="#org47d58ae">1.1. Initialization</a></li>
|
<li><a href="#org5b3bcaa">1.1. Initialization</a></li>
|
||||||
<li><a href="#org9b3405f">1.2. Control System</a></li>
|
<li><a href="#org9daa837">1.2. Control System</a></li>
|
||||||
<li><a href="#org4b1b358">1.3. Maximum induced vibration’s ASD</a></li>
|
<li><a href="#org538f5fe">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="#org626a300">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="#org3e7c118">1.5. Verification of the induced motion error</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc8b5888" class="outline-2">
|
<div id="outline-container-org6528281" class="outline-2">
|
||||||
<h2 id="orgc8b5888"><span class="section-number-2">1</span> Maximum Noise of the Relative Motion Sensors</h2>
|
<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 class="outline-text-2" id="text-1">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org47d58ae" class="outline-3">
|
<div id="outline-container-org5b3bcaa" class="outline-3">
|
||||||
<h3 id="org47d58ae"><span class="section-number-3">1.1</span> Initialization</h3>
|
<h3 id="org5b3bcaa"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
|
|
||||||
initializeSimscapeConfiguration();
|
initializeSimscapeConfiguration();
|
||||||
initializeDisturbances('enable', false);
|
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||||
initializeLoggingConfiguration('log', 'none');
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -81,61 +86,61 @@ initializeController('type', 'hac-dvf');
|
|||||||
We set the stiffness of the payload fixation:
|
We set the stiffness of the payload fixation:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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);
|
||||||
|
|
||||||
Ms = 50;
|
Ms = 50;
|
||||||
initializeSample('mass', Ms, 'freq', sqrt(Kp/Ms)/2/pi*ones(6,1));
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9b3405f" class="outline-3">
|
<div id="outline-container-org9daa837" class="outline-3">
|
||||||
<h3 id="org9b3405f"><span class="section-number-3">1.2</span> Control System</h3>
|
<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="outline-text-3" id="text-1-2">
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">h = 2.0;
|
<pre class="src src-matlab"> h = 2.0;
|
||||||
Kl = 2e7 * eye(6) * ...
|
Kl = 2e7 <span class="org-type">*</span> eye(6) <span class="org-type">*</span> ...
|
||||||
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
|
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/h*(s/(2*pi*200/h) + 1)/(s/(2*pi*200*h) + 1) * ...
|
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/2/pi/10 + 1)/(s/2/pi/10) * ...
|
(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/(1 + s/2/pi/300);
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
K = Kl*nano_hexapod.kinematics.J*diag([1, 1, 1, 1, 1, 0]);
|
K = Kl<span class="org-type">*</span>nano_hexapod.kinematics.J<span class="org-type">*</span>diag([1, 1, 1, 1, 1, 0]);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">%% Run the linearization
|
<pre class="src src-matlab"> <span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||||
G = linearize(mdl, io);
|
G = linearize(mdl, io);
|
||||||
G.InputName = {'ndL1', 'ndL2', 'ndL3', 'ndL4', 'ndL5', 'ndL6'};
|
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 = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'};
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4b1b358" class="outline-3">
|
<div id="outline-container-org538f5fe" class="outline-3">
|
||||||
<h3 id="org4b1b358"><span class="section-number-3">1.3</span> Maximum induced vibration’s ASD</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
Required maximum induced ASD of the sample’s vibration due to the relative motion sensor noise.
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Gamma_x = [(1e-9)/(1 + s/2/pi/100); % Dx
|
<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-9)/(1 + s/2/pi/100); % Dy
|
(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-9)/(1 + s/2/pi/100); % Dz
|
(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-8)/(1 + s/2/pi/100); % Rx
|
(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-8)/(1 + s/2/pi/100)]; % Ry
|
(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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -203,8 +208,8 @@ Corresponding RMS value in [nm rms, nrad rms]
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org446dbf5" class="outline-3">
|
<div id="outline-container-org626a300" class="outline-3">
|
||||||
<h3 id="org446dbf5"><span class="section-number-3">1.4</span> Computation of the maximum relative motion sensor noise</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-4">
|
||||||
<p>
|
<p>
|
||||||
Let’s note \(G\) the transfer function from the 6 sensor noise \(n\) to the 5dof pose error \(x\).
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Gamma_ndL = zeros(5, length(freqs));
|
<pre class="src src-matlab"> Gamma_ndL = zeros(5, length(freqs));
|
||||||
for in = 1:5
|
<span class="org-keyword">for</span> <span class="org-variable-name">in</span> = <span class="org-constant">1:5</span>
|
||||||
Gamma_ndL(in, :) = abs(squeeze(freqresp(Gamma_x(in), freqs, 'Hz')))./sqrt(sum(abs(squeeze(freqresp(G(in, :), freqs, 'Hz'))).^2))';
|
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>;
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/noise_budget_ndL_max_asd.png" alt="noise_budget_ndL_max_asd.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Maximum estimated ASD of the relative motion sensor noise</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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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:
|
Let’s take a sensor with a white noise up to 1kHz that is bellow the specified one:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/relative_motion_sensor_noise_ASD_example.png" alt="relative_motion_sensor_noise_ASD_example.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Requirement maximum ASD of the sensor noise + example of a sensor validating the requirements</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]:
|
The corresponding RMS value of the sensor noise taken as an example is [nm RMS]:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -279,8 +284,8 @@ The corresponding RMS value of the sensor noise taken as an example is [nm RMS]:
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org65a9628" class="outline-3">
|
<div id="outline-container-org3e7c118" class="outline-3">
|
||||||
<h3 id="org65a9628"><span class="section-number-3">1.5</span> Verification of the induced motion error</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-5">
|
||||||
<p>
|
<p>
|
||||||
Verify that by taking the sensor noise, we have to wanted displacement error
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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
|
<span class="org-keyword">for</span> <span class="org-variable-name">in</span> = <span class="org-constant">1:5</span>
|
||||||
Gamma_xest(in, :) = sqrt(sum(abs(squeeze(freqresp(G(in, :), freqs, 'Hz'))).^2.*Gamma_ndL_max.^2));
|
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));
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -352,7 +357,7 @@ end
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -3,121 +3,126 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-20 mer. 16:41 -->
|
<!-- 2021-02-20 sam. 23:09 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Control of the NASS with optimal stiffness</title>
|
<title>Control of the NASS with optimal stiffness</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Control of the NASS with optimal stiffness</h1>
|
<h1 class="title">Control of the NASS with optimal stiffness</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<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>
|
<ul>
|
||||||
<li><a href="#orgf3f8aed">1.1. Initialization</a></li>
|
<li><a href="#org9319182">1.1. Initialization</a></li>
|
||||||
<li><a href="#orgc5a1e81">1.2. Identification</a></li>
|
<li><a href="#org8b02bfa">1.2. Identification</a></li>
|
||||||
<li><a href="#orgfef1a3f">1.3. Controller Design</a></li>
|
<li><a href="#org6f820ae">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="#org5434213">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="#orgc187d77">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="#org9539bfe">1.6. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#org1e7a412">2.1. Plant in the leg space</a></li>
|
<li><a href="#org8c682ad">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="#org8308914">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="#org5a96746">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="#org370df82">2.4. Simulations of Tomography Experiment</a></li>
|
||||||
<li><a href="#orgcc19864">2.5. Results</a></li>
|
<li><a href="#orgd19d198">2.5. Results</a></li>
|
||||||
<li><a href="#orgf709759">2.6. Actuator Stroke and Forces</a></li>
|
<li><a href="#org4bc7412">2.6. Actuator Stroke and Forces</a></li>
|
||||||
<li><a href="#orgcf22d67">2.7. Conclusion</a></li>
|
<li><a href="#orgead2d0d">2.7. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org56b28cd">3. Further More complex simulations</a>
|
<li><a href="#orgbb6ed0e">3. Further More complex simulations</a>
|
||||||
<ul>
|
<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>
|
<ul>
|
||||||
<li><a href="#org78cec1a">3.1.1. Simulation</a></li>
|
<li><a href="#orgd36f8c4">3.1.1. Simulation</a></li>
|
||||||
<li><a href="#org53a553d">3.1.2. Results</a></li>
|
<li><a href="#org8fe5f58">3.1.2. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#orgf715899">3.2.1. Simulation</a></li>
|
<li><a href="#org2619c3f">3.2.1. Simulation</a></li>
|
||||||
<li><a href="#org056af12">3.2.2. Results</a></li>
|
<li><a href="#org8a2b562">3.2.2. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#org07b4a9d">4.1. Plant in the task space</a></li>
|
<li><a href="#org48bda71">4.1. Plant in the task space</a></li>
|
||||||
<li><a href="#org7d888f9">4.2. Control in the task space</a>
|
<li><a href="#org4251f93">4.2. Control in the task space</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgb28634b">4.2.1. Stability</a></li>
|
<li><a href="#org226215f">4.2.1. Stability</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org8bd1f9d">4.3. Simulation</a></li>
|
<li><a href="#org0aa9f05">4.3. Simulation</a></li>
|
||||||
<li><a href="#org3cfdfa3">4.4. Conclusion</a></li>
|
<li><a href="#org4a860c5">4.4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org99c5b6d" class="outline-2">
|
<div id="outline-container-orgdb6e4f3" class="outline-2">
|
||||||
<h2 id="org99c5b6d"><span class="section-number-2">1</span> Low Authority Control - Decentralized Direct Velocity Feedback</h2>
|
<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">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgfec42cb"></a>
|
<a id="org8d1c1a1"></a>
|
||||||
</p>
|
</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><img src="figs/control_architecture_dvf.png" alt="control_architecture_dvf.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Low Authority Control: Decentralized Direct Velocity Feedback</p>
|
<p><span class="figure-number">Figure 1: </span>Low Authority Control: Decentralized Direct Velocity Feedback</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgf3f8aed" class="outline-3">
|
<div id="outline-container-org9319182" class="outline-3">
|
||||||
<h3 id="orgf3f8aed"><span class="section-number-3">1.1</span> Initialization</h3>
|
<h3 id="org9319182"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
|
|
||||||
initializeSimscapeConfiguration();
|
initializeSimscapeConfiguration();
|
||||||
initializeDisturbances('enable', false);
|
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||||
initializeLoggingConfiguration('log', 'none');
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -125,18 +130,18 @@ initializeController('type', 'hac-dvf');
|
|||||||
We set the stiffness of the payload fixation:
|
We set the stiffness of the payload fixation:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc5a1e81" class="outline-3">
|
<div id="outline-container-org8b02bfa" class="outline-3">
|
||||||
<h3 id="orgc5a1e81"><span class="section-number-3">1.2</span> Identification</h3>
|
<h3 id="org8b02bfa"><span class="section-number-3">1.2</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-1-2">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">K = tf(zeros(6));
|
<pre class="src src-matlab"> K = tf(zeros(6));
|
||||||
Kdvf = tf(zeros(6));
|
Kdvf = tf(zeros(6));
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -144,7 +149,7 @@ Kdvf = tf(zeros(6));
|
|||||||
We identify the system for the following payload masses:
|
We identify the system for the following payload masses:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Ms = [1, 10, 50];
|
<pre class="src src-matlab"> Ms = [1, 10, 50];
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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.
|
The nano-hexapod has the following leg’s stiffness and damping.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgfef1a3f" class="outline-3">
|
<div id="outline-container-org6f820ae" class="outline-3">
|
||||||
<h3 id="orgfef1a3f"><span class="section-number-3">1.3</span> Controller Design</h3>
|
<h3 id="org6f820ae"><span class="section-number-3">1.3</span> Controller Design</h3>
|
||||||
<div class="outline-text-3" id="text-1-3">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<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>
|
</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><img src="figs/opt_stiff_dvf_plant.png" alt="opt_stiff_dvf_plant.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Dynamics for the Direct Velocity Feedback active damping for three payload masses</p>
|
<p><span class="figure-number">Figure 2: </span>Dynamics for the Direct Velocity Feedback active damping for three payload masses</p>
|
||||||
</div>
|
</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><img src="figs/opt_stiff_dvf_root_locus.png" alt="opt_stiff_dvf_root_locus.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 3: </span>Root Locus for the DVF control for three payload masses</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
|
Damping as function of the gain
|
||||||
</p>
|
</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><img src="figs/opt_stiff_dvf_damping_gain.png" alt="opt_stiff_dvf_damping_gain.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>Damping ratio of the poles as a function of the DVF gain</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:
|
Finally, we use the following controller for the Decentralized Direct Velocity Feedback:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3c73014" class="outline-3">
|
<div id="outline-container-org5434213" 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>
|
<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">
|
<div class="outline-text-3" id="text-1-4">
|
||||||
<p>
|
<p>
|
||||||
Let’s identify the dynamics from actuator forces \(\bm{\tau}\) to displacement as measured by the metrology \(\bm{\mathcal{X}}\):
|
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>
|
<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}\):
|
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} \]
|
\[ \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>
|
</p>
|
||||||
|
|
||||||
<div class="important">
|
<div class="important" id="orgd787228">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
@ -233,23 +238,23 @@ A zero with a positive real part is introduced in the transfer function from \(\
|
|||||||
<p>
|
<p>
|
||||||
And we compute the transfer function from actuator forces \(\bm{\tau}\) to position error of each leg \(\bm{\epsilon}_\mathcal{L}\):
|
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) \]
|
\[ \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>
|
</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><img src="figs/opt_stiff_primary_plant_damped_X.png" alt="opt_stiff_primary_plant_damped_X.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 5: </span>Primary plant in the task space with (dashed) and without (solid) Direct Velocity Feedback</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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_primary_plant_damped_L.png" alt="opt_stiff_primary_plant_damped_L.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -258,25 +263,25 @@ The coupling does not change a lot with DVF.
|
|||||||
|
|
||||||
|
|
||||||
<p>
|
<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>
|
</p>
|
||||||
|
|
||||||
<div class="important">
|
<div class="important" id="orgc16e5dd">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
|
|
||||||
</div>
|
</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><img src="figs/opt_stiff_primary_plant_damped_coupling_X.png" alt="opt_stiff_primary_plant_damped_coupling_X.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_primary_plant_damped_coupling_L.png" alt="opt_stiff_primary_plant_damped_coupling_L.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgee5dbee" class="outline-3">
|
<div id="outline-container-orgc187d77" 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>
|
<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">
|
<div class="outline-text-3" id="text-1-5">
|
||||||
<p>
|
<p>
|
||||||
We may now see how Decentralized Direct Velocity Feedback changes the sensibility to disturbances, namely:
|
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>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/opt_stiff_sensibility_dist_dvf.png" alt="opt_stiff_sensibility_dist_dvf.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
<div class="important">
|
<div class="important" id="orgb9e4f65">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
@ -324,10 +329,10 @@ Decentralized Direct Velocity Feedback is shown to increase the effect of stages
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgdc2eb5a" class="outline-3">
|
<div id="outline-container-org9539bfe" class="outline-3">
|
||||||
<h3 id="orgdc2eb5a"><span class="section-number-3">1.6</span> Conclusion</h3>
|
<h3 id="org9539bfe"><span class="section-number-3">1.6</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-1-6">
|
<div class="outline-text-3" id="text-1-6">
|
||||||
<div class="important">
|
<div class="important" id="orgf2d2cca">
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
@ -337,14 +342,14 @@ Decentralized Direct Velocity Feedback is shown to increase the effect of stages
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org81dc0a8" class="outline-2">
|
<div id="outline-container-org2797edc" class="outline-2">
|
||||||
<h2 id="org81dc0a8"><span class="section-number-2">2</span> Primary Control in the leg space</h2>
|
<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">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgd0beb6a"></a>
|
<a id="orge570650"></a>
|
||||||
</p>
|
</p>
|
||||||
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>an inner loop with a decentralized direct velocity feedback control</li>
|
<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>
|
</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><img src="figs/control_architecture_hac_dvf_pos_L.png" alt="control_architecture_hac_dvf_pos_L.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org1e7a412" class="outline-3">
|
<div id="outline-container-org8c682ad" class="outline-3">
|
||||||
<h3 id="org1e7a412"><span class="section-number-3">2.1</span> Plant in the leg space</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<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}\).
|
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>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -378,7 +383,7 @@ The plant dynamics below \(100\ [Hz]\) is only slightly dependent on the payload
|
|||||||
</p>
|
</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><img src="figs/opt_stiff_primary_plant_L.png" alt="opt_stiff_primary_plant_L.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-orgf39520c" class="outline-3">
|
<div id="outline-container-org8308914" class="outline-3">
|
||||||
<h3 id="orgf39520c"><span class="section-number-3">2.2</span> Control in the leg space</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
We design a diagonal controller with all the same diagonal elements.
|
We design a diagonal controller with all the same diagonal elements.
|
||||||
@ -414,21 +419,21 @@ The design controller is as follows:
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">h = 2.0;
|
<pre class="src src-matlab"> h = 2.0;
|
||||||
Kl = 2e7 * eye(6) * ...
|
Kl = 2e7 <span class="org-type">*</span> eye(6) <span class="org-type">*</span> ...
|
||||||
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
|
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/h*(s/(2*pi*200/h) + 1)/(s/(2*pi*200*h) + 1) * ...
|
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/2/pi/10 + 1)/(s/2/pi/10) * ...
|
(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/(1 + s/2/pi/300);
|
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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/opt_stiff_primary_loop_gain_L.png" alt="opt_stiff_primary_loop_gain_L.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 12: </span>Loop gain for the primary plant</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.
|
Finally, we include the Jacobian in the control and we ignore the measurement of the vertical rotation as for the real system.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
K = Kl*nano_hexapod.kinematics.J*diag([1, 1, 1, 1, 1, 0]);
|
K = Kl<span class="org-type">*</span>nano_hexapod.kinematics.J<span class="org-type">*</span>diag([1, 1, 1, 1, 1, 0]);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org16d192f" class="outline-3">
|
<div id="outline-container-org5a96746" class="outline-3">
|
||||||
<h3 id="org16d192f"><span class="section-number-3">2.3</span> Sensibility to Disturbances and Noise Budget</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<p>
|
<p>
|
||||||
We identify the transfer function from disturbances to the position error of the sample when the HAC-LAC control is applied.
|
We identify the transfer function from disturbances to the position error of the sample when the HAC-LAC control is applied.
|
||||||
</p>
|
</p>
|
||||||
<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>
|
</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><img src="figs/opt_stiff_primary_control_L_senbility_dist.png" alt="opt_stiff_primary_control_L_senbility_dist.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 13: </span>Sensibility to disturbances when the HAC-LAC control is applied</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:
|
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>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#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="#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="#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="#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="#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>
|
</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><img src="figs/opt_stiff_primary_control_L_psd_dist.png" alt="opt_stiff_primary_control_L_psd_dist.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_primary_control_L_psd_tot.png" alt="opt_stiff_primary_control_L_psd_tot.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_primary_control_L_cas_tot.png" alt="opt_stiff_primary_control_L_cas_tot.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8f34c09" class="outline-3">
|
<div id="outline-container-org370df82" class="outline-3">
|
||||||
<h3 id="org8f34c09"><span class="section-number-3">2.4</span> Simulations of Tomography Experiment</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-4">
|
||||||
<p>
|
<p>
|
||||||
Let’s now simulate a tomography experiment.
|
Let’s now simulate a tomography experiment.
|
||||||
To do so, we include all disturbances except vibrations of the translation stage.
|
To do so, we include all disturbances except vibrations of the translation stage.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances();
|
<pre class="src src-matlab"> initializeDisturbances();
|
||||||
initializeSimscapeConfiguration('gravity', false);
|
initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||||
initializeLoggingConfiguration('log', 'all');
|
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -512,40 +517,40 @@ And we run the simulation for all three payload Masses.
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgcc19864" class="outline-3">
|
<div id="outline-container-orgd19d198" class="outline-3">
|
||||||
<h3 id="orgcc19864"><span class="section-number-3">2.5</span> Results</h3>
|
<h3 id="orgd19d198"><span class="section-number-3">2.5</span> Results</h3>
|
||||||
<div class="outline-text-3" id="text-2-5">
|
<div class="outline-text-3" id="text-2-5">
|
||||||
<p>
|
<p>
|
||||||
Let’s now see how this controller performs.
|
Let’s now see how this controller performs.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<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>
|
</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><img src="figs/opt_stiff_hac_dvf_L_psd_disp_error.png" alt="opt_stiff_hac_dvf_L_psd_disp_error.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_hac_dvf_L_cas_disp_error.png" alt="opt_stiff_hac_dvf_L_cas_disp_error.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_hac_dvf_L_pos_error.png" alt="opt_stiff_hac_dvf_L_pos_error.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf709759" class="outline-3">
|
<div id="outline-container-org4bc7412" class="outline-3">
|
||||||
<h3 id="orgf709759"><span class="section-number-3">2.6</span> Actuator Stroke and Forces</h3>
|
<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 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><img src="figs/opt_stiff_hac_dvf_L_act_force.png" alt="opt_stiff_hac_dvf_L_act_force.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 20: </span>Force applied by the actuator during the simulation</p>
|
<p><span class="figure-number">Figure 20: </span>Force applied by the actuator during the simulation</p>
|
||||||
</div>
|
</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><img src="figs/opt_stiff_hac_dvf_L_act_stroke.png" alt="opt_stiff_hac_dvf_L_act_stroke.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 21: </span>Leg’s stroke during the simulation</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgcf22d67" class="outline-3">
|
<div id="outline-container-orgead2d0d" class="outline-3">
|
||||||
<h3 id="orgcf22d67"><span class="section-number-3">2.7</span> Conclusion</h3>
|
<h3 id="orgead2d0d"><span class="section-number-3">2.7</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-7">
|
<div class="outline-text-3" id="text-2-7">
|
||||||
<div class="important">
|
<div class="important" id="orgd04ff34">
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
@ -585,16 +590,16 @@ Finally, the time domain position error signals are shown in Figure <a href="#or
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org56b28cd" class="outline-2">
|
<div id="outline-container-orgbb6ed0e" class="outline-2">
|
||||||
<h2 id="org56b28cd"><span class="section-number-2">3</span> Further More complex simulations</h2>
|
<h2 id="orgbb6ed0e"><span class="section-number-2">3</span> Further More complex simulations</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org6c1ddb5" class="outline-3">
|
<div id="outline-container-orgbe6d807" class="outline-3">
|
||||||
<h3 id="org6c1ddb5"><span class="section-number-3">3.1</span> Simulation with Micro-Hexapod Offset</h3>
|
<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 class="outline-text-3" id="text-3-1">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org78cec1a" class="outline-4">
|
<div id="outline-container-orgd36f8c4" class="outline-4">
|
||||||
<h4 id="org78cec1a"><span class="section-number-4">3.1.1</span> Simulation</h4>
|
<h4 id="orgd36f8c4"><span class="section-number-4">3.1.1</span> Simulation</h4>
|
||||||
<div class="outline-text-4" id="text-3-1-1">
|
<div class="outline-text-4" id="text-3-1-1">
|
||||||
<p>
|
<p>
|
||||||
The micro-hexapod is inducing a 10mm offset of the sample center of mass with the rotation axis.
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances();
|
<pre class="src src-matlab"> initializeDisturbances();
|
||||||
initializeSimscapeConfiguration('gravity', false);
|
initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||||
initializeLoggingConfiguration('log', 'all');
|
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||||
|
|
||||||
initializeSample('mass', 1, 'freq', 200);
|
initializeSample(<span class="org-string">'mass'</span>, 1, <span class="org-string">'freq'</span>, 200);
|
||||||
initializeMicroHexapod('AP', [10e-3 0 0]);
|
initializeMicroHexapod(<span class="org-string">'AP'</span>, [10e<span class="org-type">-</span>3 0 0]);
|
||||||
initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
|
initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating'</span>, <span class="org-string">'Rz_period'</span>, 1, ...
|
||||||
'Dh_pos', [10e-3; 0; 0; 0; 0; 0]);
|
<span class="org-string">'Dh_pos'</span>, [10e<span class="org-type">-</span>3; 0; 0; 0; 0; 0]);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
set_param(conf_simulink, 'StopTime', '3');
|
<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>);
|
||||||
sim('nass_model');
|
<span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org53a553d" class="outline-4">
|
<div id="outline-container-org8fe5f58" class="outline-4">
|
||||||
<h4 id="org53a553d"><span class="section-number-4">3.1.2</span> Results</h4>
|
<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 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><img src="figs/opt_stiff_hac_dvf_Dh_offset_disp_error.png" alt="opt_stiff_hac_dvf_Dh_offset_disp_error.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</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><img src="figs/opt_stiff_hac_dvf_Dh_offset_F.png" alt="opt_stiff_hac_dvf_Dh_offset_F.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</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><img src="figs/opt_stiff_hac_dvf_Dh_offset_dL.png" alt="opt_stiff_hac_dvf_Dh_offset_dL.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -646,12 +651,12 @@ sim('nass_model');
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5cb899b" class="outline-3">
|
<div id="outline-container-org9753678" class="outline-3">
|
||||||
<h3 id="org5cb899b"><span class="section-number-3">3.2</span> Simultaneous Translation scans and Spindle’s rotation</h3>
|
<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 class="outline-text-3" id="text-3-2">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgf715899" class="outline-4">
|
<div id="outline-container-org2619c3f" class="outline-4">
|
||||||
<h4 id="orgf715899"><span class="section-number-4">3.2.1</span> Simulation</h4>
|
<h4 id="org2619c3f"><span class="section-number-4">3.2.1</span> Simulation</h4>
|
||||||
<div class="outline-text-4" id="text-3-2-1">
|
<div class="outline-text-4" id="text-3-2-1">
|
||||||
<p>
|
<p>
|
||||||
A simulation is now performed with translation scans and spindle rotation at the same time.
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeDisturbances();
|
<pre class="src src-matlab"> initializeDisturbances();
|
||||||
initializeSimscapeConfiguration('gravity', false);
|
initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">false</span>);
|
||||||
initializeLoggingConfiguration('log', 'all');
|
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||||
|
|
||||||
initializeSample('mass', 1, 'freq', 200);
|
initializeSample(<span class="org-string">'mass'</span>, 1, <span class="org-string">'freq'</span>, 200);
|
||||||
initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
|
initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating'</span>, <span class="org-string">'Rz_period'</span>, 1, ...
|
||||||
'Dy_type', 'triangular', 'Dy_amplitude', 5e-3, 'Dy_period', 4);
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org056af12" class="outline-4">
|
<div id="outline-container-org8a2b562" class="outline-4">
|
||||||
<h4 id="org056af12"><span class="section-number-4">3.2.2</span> Results</h4>
|
<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 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><img src="figs/opt_stiff_hac_dvf_Dy_scans_disp_error.png" alt="opt_stiff_hac_dvf_Dy_scans_disp_error.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</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><img src="figs/opt_stiff_hac_dvf_Dy_scans_F.png" alt="opt_stiff_hac_dvf_Dy_scans_F.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</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><img src="figs/opt_stiff_hac_dvf_Dy_scans_dL.png" alt="opt_stiff_hac_dvf_Dy_scans_dL.png" />
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -699,14 +704,14 @@ initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9bd2bf8" class="outline-2">
|
<div id="outline-container-org26c4ef6" class="outline-2">
|
||||||
<h2 id="org9bd2bf8"><span class="section-number-2">4</span> Primary Control in the task space</h2>
|
<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">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
<a id="orge9c2f9a"></a>
|
<a id="org06af957"></a>
|
||||||
</p>
|
</p>
|
||||||
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>an inner Low Authority Control loop consisting of a decentralized direct velocity control controller</li>
|
<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>
|
</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><img src="figs/control_architecture_hac_dvf_pos_X.png" alt="control_architecture_hac_dvf_pos_X.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 28: </span>HAC-LAC architecture</p>
|
<p><span class="figure-number">Figure 28: </span>HAC-LAC architecture</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org07b4a9d" class="outline-3">
|
<div id="outline-container-org48bda71" class="outline-3">
|
||||||
<h3 id="org07b4a9d"><span class="section-number-3">4.1</span> Plant in the task space</h3>
|
<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">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<p>
|
<p>
|
||||||
Let’s look \(\bm{G}_\mathcal{X}(s)\).
|
Let’s look \(\bm{G}_\mathcal{X}(s)\).
|
||||||
@ -729,62 +734,62 @@ Let’s look \(\bm{G}_\mathcal{X}(s)\).
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7d888f9" class="outline-3">
|
<div id="outline-container-org4251f93" class="outline-3">
|
||||||
<h3 id="org7d888f9"><span class="section-number-3">4.2</span> Control in the task space</h3>
|
<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="outline-text-3" id="text-4-2">
|
||||||
<div class="org-src-container">
|
<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;
|
h = 2.5;
|
||||||
Kx(1,1) = 3e7 * ...
|
Kx<span class="org-type">(1,1) </span>= 3e7 <span class="org-type">*</span> ...
|
||||||
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
|
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/2/pi/1 + 1)/(s/2/pi/1);
|
(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;
|
h = 2.5;
|
||||||
Kx(3,3) = 3e7 * ...
|
Kx<span class="org-type">(3,3) </span>= 3e7 <span class="org-type">*</span> ...
|
||||||
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
|
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/2/pi/1 + 1)/(s/2/pi/1);
|
(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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">h = 1.5;
|
<pre class="src src-matlab"> h = 1.5;
|
||||||
Kx(4,4) = 5e5 * ...
|
Kx<span class="org-type">(4,4) </span>= 5e5 <span class="org-type">*</span> ...
|
||||||
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
|
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/2/pi/1 + 1)/(s/2/pi/1);
|
(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;
|
h = 1.5;
|
||||||
Kx(6,6) = 5e4 * ...
|
Kx<span class="org-type">(6,6) </span>= 5e4 <span class="org-type">*</span> ...
|
||||||
1/h*(s/(2*pi*30/h) + 1)/(s/(2*pi*30*h) + 1) * ...
|
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/2/pi/1 + 1)/(s/2/pi/1);
|
(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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb28634b" class="outline-4">
|
<div id="outline-container-org226215f" class="outline-4">
|
||||||
<h4 id="orgb28634b"><span class="section-number-4">4.2.1</span> Stability</h4>
|
<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="outline-text-4" id="text-4-2-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">for i = 1:length(Ms)
|
<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{i}*Kx, eye(6), -1))
|
isstable(feedback(Gm_x{<span class="org-constant">i</span>}<span class="org-type">*</span>Kx, eye(6), <span class="org-type">-</span>1))
|
||||||
end
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8bd1f9d" class="outline-3">
|
<div id="outline-container-org0aa9f05" class="outline-3">
|
||||||
<h3 id="org8bd1f9d"><span class="section-number-3">4.3</span> Simulation</h3>
|
<h3 id="org0aa9f05"><span class="section-number-3">4.3</span> Simulation</h3>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org3cfdfa3" class="outline-3">
|
<div id="outline-container-org4a860c5" class="outline-3">
|
||||||
<h3 id="org3cfdfa3"><span class="section-number-3">4.4</span> Conclusion</h3>
|
<h3 id="org4a860c5"><span class="section-number-3">4.4</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-4-4">
|
<div class="outline-text-3" id="text-4-4">
|
||||||
<div class="important">
|
<div class="important" id="org4bf4213">
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
@ -796,7 +801,7 @@ end
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,79 +1,83 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-17 ven. 09:35 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<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>
|
<title>Determination of the optimal nano-hexapod’s stiffness for reducing the effect of disturbances</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Determination of the optimal nano-hexapod’s stiffness for reducing the effect of disturbances</h1>
|
<h1 class="title">Determination of the optimal nano-hexapod’s stiffness for reducing the effect of disturbances</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org9e9f810">1. Disturbances</a></li>
|
<li><a href="#org1d00c3b">1. Disturbances</a></li>
|
||||||
<li><a href="#orgc44cf7e">2. Effect of disturbances on the position error</a>
|
<li><a href="#orgd8c957a">2. Effect of disturbances on the position error</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org524df41">2.1. Initialization</a></li>
|
<li><a href="#org35d2f91">2.1. Initialization</a></li>
|
||||||
<li><a href="#orgaf88c9f">2.2. Identification</a></li>
|
<li><a href="#org094b5a7">2.2. Identification</a></li>
|
||||||
<li><a href="#org78dd34d">2.3. Sensitivity to Stages vibration (Filtering)</a></li>
|
<li><a href="#org7e3e79d">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="#org19c4b17">2.4. Effect of Ground motion (Transmissibility).</a></li>
|
||||||
<li><a href="#org0448746">2.5. Direct Forces (Compliance).</a></li>
|
<li><a href="#org0890188">2.5. Direct Forces (Compliance).</a></li>
|
||||||
<li><a href="#org626fe57">2.6. Conclusion</a></li>
|
<li><a href="#orgea2d185">2.6. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org6527e58">3. Effect of granite stiffness</a>
|
<li><a href="#orgf6c1d0f">3. Effect of granite stiffness</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgd3e5fe1">3.1. Analytical Analysis</a>
|
<li><a href="#org9b72d9e">3.1. Analytical Analysis</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgbc34a65">3.1.1. Simple mass-spring-damper model</a></li>
|
<li><a href="#orgcb7fd26">3.1.1. Simple mass-spring-damper model</a></li>
|
||||||
<li><a href="#org4ddec32">3.1.2. General Case</a></li>
|
<li><a href="#orgb9ac8f4">3.1.2. General Case</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org9215f81">3.2. Soft Granite</a></li>
|
<li><a href="#orge9846e9">3.2. Soft Granite</a></li>
|
||||||
<li><a href="#org8878556">3.3. Effect of the Granite transfer function</a></li>
|
<li><a href="#org699ef0a">3.3. Effect of the Granite transfer function</a></li>
|
||||||
<li><a href="#orgf388e39">3.4. Conclusion</a></li>
|
<li><a href="#org26b072f">3.4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org8a88fb0">4. Open Loop Budget Error</a>
|
<li><a href="#org92ed7b0">4. Open Loop Budget Error</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org6bd588f">4.1. Noise Budgeting - Theory</a></li>
|
<li><a href="#orgf8bb217">4.1. Noise Budgeting - Theory</a></li>
|
||||||
<li><a href="#orgcc86f59">4.2. Power Spectral Densities</a></li>
|
<li><a href="#org0a97ffb">4.2. Power Spectral Densities</a></li>
|
||||||
<li><a href="#orgef96b89">4.3. Cumulative Amplitude Spectrum</a></li>
|
<li><a href="#org44eafed">4.3. Cumulative Amplitude Spectrum</a></li>
|
||||||
<li><a href="#org0be3c47">4.4. Conclusion</a></li>
|
<li><a href="#org091b440">4.4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org34c0f38">5. Closed Loop Budget Error</a>
|
<li><a href="#org5bb46c4">5. Closed Loop Budget Error</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgdfef0eb">5.1. Approximation of the effect of feedback on the motion error</a></li>
|
<li><a href="#org2cb5e9a">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="#org15ee341">5.2. Reduction thanks to feedback - Required bandwidth</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org08f4548">6. Conclusion</a></li>
|
<li><a href="#orgf3b0566">6. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</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:
|
It is divided in the following sections:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#orge637f3d">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="#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="#orgd4105b6">3</a>:</li>
|
<li>Section <a href="#orge639dbd">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="#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="#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="#org6ed8184">5</a>: from a simplistic model is computed the required control bandwidth to reduce the position error to acceptable values</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-org9e9f810" class="outline-2">
|
<div id="outline-container-org1d00c3b" class="outline-2">
|
||||||
<h2 id="org9e9f810"><span class="section-number-2">1</span> Disturbances</h2>
|
<h2 id="org1d00c3b"><span class="section-number-2">1</span> Disturbances</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org17d3d6a"></a>
|
<a id="orge637f3d"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The main disturbances considered here are:
|
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.
|
The level of these disturbances has been identified form experiments which are detailed in <a href="disturbances.html">this</a> document.
|
||||||
</p>
|
</p>
|
||||||
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -121,14 +125,14 @@ In this study, the expected frequency content of the direct forces applied to th
|
|||||||
</p>
|
</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><img src="figs/opt_stiff_dist_gm.png" alt="opt_stiff_dist_gm.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_dist_fty_frz.png" alt="opt_stiff_dist_fty_frz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc44cf7e" class="outline-2">
|
<div id="outline-container-orgd8c957a" class="outline-2">
|
||||||
<h2 id="orgc44cf7e"><span class="section-number-2">2</span> Effect of disturbances on the position error</h2>
|
<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">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgf9e4300"></a>
|
<a id="org8db9681"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
In this section, we use the Simscape model to identify the transfer function from disturbances to the position error of the sample.
|
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.
|
We do that for a wide range of nano-hexapod stiffnesses and we compare the obtained results.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org524df41" class="outline-3">
|
<div id="outline-container-org35d2f91" class="outline-3">
|
||||||
<h3 id="org524df41"><span class="section-number-3">2.1</span> Initialization</h3>
|
<h3 id="org35d2f91"><span class="section-number-3">2.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -169,7 +173,7 @@ initializeMirror();
|
|||||||
We use a sample mass of 10kg.
|
We use a sample mass of 10kg.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -177,17 +181,17 @@ We use a sample mass of 10kg.
|
|||||||
We include gravity, and we use no controller.
|
We include gravity, and we use no controller.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
initializeController();
|
initializeController();
|
||||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</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>);
|
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgaf88c9f" class="outline-3">
|
<div id="outline-container-org094b5a7" class="outline-3">
|
||||||
<h3 id="orgaf88c9f"><span class="section-number-3">2.2</span> Identification</h3>
|
<h3 id="org094b5a7"><span class="section-number-3">2.2</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
The considered inputs are:
|
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.
|
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>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org78dd34d" class="outline-3">
|
<div id="outline-container-org7e3e79d" class="outline-3">
|
||||||
<h3 id="org78dd34d"><span class="section-number-3">2.3</span> Sensitivity to Stages vibration (Filtering)</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<p>
|
<p>
|
||||||
The sensitivity the stage vibrations are displayed:
|
The sensitivity the stage vibrations are displayed:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>Figure <a href="#orgf55ba1b">3</a>: sensitivity to vertical spindle vibrations</li>
|
<li>Figure <a href="#org0073408">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="#org0999f05">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="#org6337962">5</a>: sensitivity to horizontal (x) translation stage vibrations</li>
|
||||||
</ul>
|
</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><img src="figs/opt_stiff_sensitivity_Frz.png" alt="opt_stiff_sensitivity_Frz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_sensitivity_Fty_z.png" alt="opt_stiff_sensitivity_Fty_z.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_sensitivity_Fty_x.png" alt="opt_stiff_sensitivity_Fty_x.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd4ea2f4" class="outline-3">
|
<div id="outline-container-org19c4b17" class="outline-3">
|
||||||
<h3 id="orgd4ea2f4"><span class="section-number-3">2.4</span> Effect of Ground motion (Transmissibility).</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-4">
|
||||||
<p>
|
<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>
|
</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><img src="figs/opt_stiff_sensitivity_Dw.png" alt="opt_stiff_sensitivity_Dw.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0448746" class="outline-3">
|
<div id="outline-container-org0890188" class="outline-3">
|
||||||
<h3 id="org0448746"><span class="section-number-3">2.5</span> Direct Forces (Compliance).</h3>
|
<h3 id="org0890188"><span class="section-number-3">2.5</span> Direct Forces (Compliance).</h3>
|
||||||
<div class="outline-text-3" id="text-2-5">
|
<div class="outline-text-3" id="text-2-5">
|
||||||
<p>
|
<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>
|
</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><img src="figs/opt_stiff_sensitivity_Fd.png" alt="opt_stiff_sensitivity_Fd.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org626fe57" class="outline-3">
|
<div id="outline-container-orgea2d185" class="outline-3">
|
||||||
<h3 id="org626fe57"><span class="section-number-3">2.6</span> Conclusion</h3>
|
<h3 id="orgea2d185"><span class="section-number-3">2.6</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-6">
|
<div class="outline-text-3" id="text-2-6">
|
||||||
<div class="important">
|
<div class="important" id="orgb58fd33">
|
||||||
<p>
|
<p>
|
||||||
Reducing the nano-hexapod stiffness generally lowers the sensitivity to stages vibration but increases the sensitivity to ground motion and direct forces.
|
Reducing the nano-hexapod stiffness generally lowers the sensitivity to stages vibration but increases the sensitivity to ground motion and direct forces.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>
|
</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -300,38 +304,38 @@ In order to conclude on the optimal stiffness that will yield the smallest sampl
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6527e58" class="outline-2">
|
<div id="outline-container-orgf6c1d0f" class="outline-2">
|
||||||
<h2 id="org6527e58"><span class="section-number-2">3</span> Effect of granite stiffness</h2>
|
<h2 id="orgf6c1d0f"><span class="section-number-2">3</span> Effect of granite stiffness</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgd4105b6"></a>
|
<a id="orge639dbd"></a>
|
||||||
</p>
|
</p>
|
||||||
<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.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgd3e5fe1" class="outline-3">
|
<div id="outline-container-org9b72d9e" class="outline-3">
|
||||||
<h3 id="orgd3e5fe1"><span class="section-number-3">3.1</span> Analytical Analysis</h3>
|
<h3 id="org9b72d9e"><span class="section-number-3">3.1</span> Analytical Analysis</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgbc34a65" class="outline-4">
|
<div id="outline-container-orgcb7fd26" class="outline-4">
|
||||||
<h4 id="orgbc34a65"><span class="section-number-4">3.1.1</span> Simple mass-spring-damper model</h4>
|
<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">
|
<div class="outline-text-4" id="text-3-1-1">
|
||||||
<p>
|
<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.
|
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\).
|
We want the smallest stage “deformation” \(d = x^\prime - x\) due to ground motion \(w\).
|
||||||
</p>
|
</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><img src="figs/2dof_system_granite_stiffness.png" alt="2dof_system_granite_stiffness.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 8: </span>Mass Spring Damper system consisting of a granite and a positioning stage</p>
|
<p><span class="figure-number">Figure 8: </span>Mass Spring Damper system consisting of a granite and a positioning stage</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</p>
|
||||||
\begin{align}
|
\begin{align}
|
||||||
m^\prime s^2 x^\prime &= (c^\prime s + k^\prime) (x - x^\prime) \\
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4ddec32" class="outline-4">
|
<div id="outline-container-orgb9ac8f4" class="outline-4">
|
||||||
<h4 id="org4ddec32"><span class="section-number-4">3.1.2</span> General Case</h4>
|
<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">
|
<div class="outline-text-4" id="text-3-1-2">
|
||||||
<p>
|
<p>
|
||||||
Let’s now considering a general positioning stage defined by:
|
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>
|
</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><img src="figs/general_system_granite_stiffness.png" alt="general_system_granite_stiffness.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 9: </span>Mass Spring Damper representing the granite and a general representation of positioning stages</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>
|
<li>\(F\) is the force applied by the position stages on the granite mass</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="important">
|
<div class="important" id="org3106f21">
|
||||||
<p>
|
<p>
|
||||||
We can express \(d\) as a function of \(w\):
|
We can express \(d\) as a function of \(w\):
|
||||||
</p>
|
</p>
|
||||||
@ -416,47 +420,47 @@ which is the same as the previously derived equation.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9215f81" class="outline-3">
|
<div id="outline-container-orge9846e9" class="outline-3">
|
||||||
<h3 id="org9215f81"><span class="section-number-3">3.2</span> Soft Granite</h3>
|
<h3 id="orge9846e9"><span class="section-number-3">3.2</span> Soft Granite</h3>
|
||||||
<div class="outline-text-3" id="text-3-2">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<p>
|
<p>
|
||||||
Let’s initialize a soft granite and see how the sensitivity to disturbances will change.
|
Let’s initialize a soft granite and see how the sensitivity to disturbances will change.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8878556" class="outline-3">
|
<div id="outline-container-org699ef0a" class="outline-3">
|
||||||
<h3 id="org8878556"><span class="section-number-3">3.3</span> Effect of the Granite transfer function</h3>
|
<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">
|
<div class="outline-text-3" id="text-3-3">
|
||||||
<p>
|
<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).
|
The sensitivity is indeed lowered starting from the resonance of the granite on its soft suspension (few Hz here).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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>
|
</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><img src="figs/opt_stiff_soft_granite_Dw.png" alt="opt_stiff_soft_granite_Dw.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_soft_granite_Frz.png" alt="opt_stiff_soft_granite_Frz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_soft_granite_Fd.png" alt="opt_stiff_soft_granite_Fd.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf388e39" class="outline-3">
|
<div id="outline-container-org26b072f" class="outline-3">
|
||||||
<h3 id="orgf388e39"><span class="section-number-3">3.4</span> Conclusion</h3>
|
<h3 id="org26b072f"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-3-4">
|
<div class="outline-text-3" id="text-3-4">
|
||||||
<div class="important">
|
<div class="important" id="orge437d65">
|
||||||
<p>
|
<p>
|
||||||
Having a soft granite suspension greatly decreases the sensitivity the ground motion.
|
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.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8a88fb0" class="outline-2">
|
<div id="outline-container-org92ed7b0" class="outline-2">
|
||||||
<h2 id="org8a88fb0"><span class="section-number-2">4</span> Open Loop Budget Error</h2>
|
<h2 id="org92ed7b0"><span class="section-number-2">4</span> Open Loop Budget Error</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
<a id="org5d05990"></a>
|
<a id="org5714572"></a>
|
||||||
</p>
|
</p>
|
||||||
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
We then can conclude and the nano-hexapod stiffness that will lower the sample position error.
|
We then can conclude and the nano-hexapod stiffness that will lower the sample position error.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org6bd588f" class="outline-3">
|
<div id="outline-container-orgf8bb217" class="outline-3">
|
||||||
<h3 id="org6bd588f"><span class="section-number-3">4.1</span> Noise Budgeting - Theory</h3>
|
<h3 id="orgf8bb217"><span class="section-number-3">4.1</span> Noise Budgeting - Theory</h3>
|
||||||
<div class="outline-text-3" id="text-4-1">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<p>
|
<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>
|
</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><img src="figs/psd_change_tf.png" alt="psd_change_tf.png" />
|
||||||
</p>
|
</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>
|
<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}
|
\end{equation}
|
||||||
|
|
||||||
<p>
|
<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>
|
</p>
|
||||||
\begin{equation}
|
\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}
|
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>
|
</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><img src="figs/psd_change_tf_multiple_pert.png" alt="psd_change_tf_multiple_pert.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgcc86f59" class="outline-3">
|
<div id="outline-container-org0a97ffb" class="outline-3">
|
||||||
<h3 id="orgcc86f59"><span class="section-number-3">4.2</span> Power Spectral Densities</h3>
|
<h3 id="org0a97ffb"><span class="section-number-3">4.2</span> Power Spectral Densities</h3>
|
||||||
<div class="outline-text-3" id="text-4-2">
|
<div class="outline-text-3" id="text-4-2">
|
||||||
<p>
|
<p>
|
||||||
We compute the effect of perturbations on the motion error thanks to Eq. \eqref{eq:psd_transfer_function}.
|
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:
|
The result is shown in:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#orgd8bc100">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="#org631c8cb">16</a>: PSD of the vertical sample’s motion error due to vertical vibrations of the Spindle</li>
|
||||||
</ul>
|
</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><img src="figs/opt_stiff_psd_dz_gm.png" alt="opt_stiff_psd_dz_gm.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_psd_dz_rz.png" alt="opt_stiff_psd_dz_rz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/opt_stiff_psd_dz_tot.png" alt="opt_stiff_psd_dz_tot.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgef96b89" class="outline-3">
|
<div id="outline-container-org44eafed" class="outline-3">
|
||||||
<h3 id="orgef96b89"><span class="section-number-3">4.3</span> Cumulative Amplitude Spectrum</h3>
|
<h3 id="org44eafed"><span class="section-number-3">4.3</span> Cumulative Amplitude Spectrum</h3>
|
||||||
<div class="outline-text-3" id="text-4-3">
|
<div class="outline-text-3" id="text-4-3">
|
||||||
<p>
|
<p>
|
||||||
Similarly, the Cumulative Amplitude Spectrum of the sample vibrations are shown:
|
Similarly, the Cumulative Amplitude Spectrum of the sample vibrations are shown:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>Figure <a href="#org488d65f">18</a>: due to vertical ground motion</li>
|
<li>Figure <a href="#orgccc4019">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="#orgbc68410">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="#org0bcb1fa">20</a>: due to all considered perturbations</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -612,21 +616,21 @@ The black dashed line corresponds to the performance objective of a sample vibra
|
|||||||
</p>
|
</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><img src="figs/opt_stiff_cas_dz_gm.png" alt="opt_stiff_cas_dz_gm.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_cas_dz_rz.png" alt="opt_stiff_cas_dz_rz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_cas_dz_tot.png" alt="opt_stiff_cas_dz_tot.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0be3c47" class="outline-3">
|
<div id="outline-container-org091b440" class="outline-3">
|
||||||
<h3 id="org0be3c47"><span class="section-number-3">4.4</span> Conclusion</h3>
|
<h3 id="org091b440"><span class="section-number-3">4.4</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-4-4">
|
<div class="outline-text-3" id="text-4-4">
|
||||||
<div class="important">
|
<div class="important" id="org86258fc">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -647,25 +651,25 @@ From Figure <a href="#orgf6888f0">20</a>, we can see that a soft nano-hexapod \(
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org34c0f38" class="outline-2">
|
<div id="outline-container-org5bb46c4" class="outline-2">
|
||||||
<h2 id="org34c0f38"><span class="section-number-2">5</span> Closed Loop Budget Error</h2>
|
<h2 id="org5bb46c4"><span class="section-number-2">5</span> Closed Loop Budget Error</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgd3503fb"></a>
|
<a id="org6ed8184"></a>
|
||||||
</p>
|
</p>
|
||||||
<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\).
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgdfef0eb" class="outline-3">
|
<div id="outline-container-org2cb5e9a" 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>
|
<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">
|
<div class="outline-text-3" id="text-5-1">
|
||||||
<p>
|
<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>
|
</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><img src="figs/effect_feedback_disturbance_diagram.png" alt="effect_feedback_disturbance_diagram.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 21: </span>Feedback System</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}
|
\frac{y}{d} = \frac{G_d}{1 + KG}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
<p>
|
<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>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
@ -702,43 +706,43 @@ This will help to determine what is the approximate control bandwidth required s
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf2d36a1" class="outline-3">
|
<div id="outline-container-org15ee341" class="outline-3">
|
||||||
<h3 id="orgf2d36a1"><span class="section-number-3">5.2</span> Reduction thanks to feedback - Required bandwidth</h3>
|
<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">
|
<div class="outline-text-3" id="text-5-2">
|
||||||
<p>
|
<p>
|
||||||
Let’s first see how does the Cumulative Amplitude Spectrum of the sample’s motion error is modified by the control.
|
Let’s first see how does the Cumulative Amplitude Spectrum of the sample’s motion error is modified by the control.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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.
|
The controller used in this simulation is \(K_1\). The loop gain is then a pure integrator.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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\).
|
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.
|
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>
|
||||||
|
|
||||||
<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>
|
</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><img src="figs/opt_stiff_cas_closed_loop.png" alt="opt_stiff_cas_closed_loop.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiff_req_bandwidth_K1_K2.png" alt="opt_stiff_req_bandwidth_K1_K2.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</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>
|
<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>
|
<colgroup>
|
||||||
@ -798,12 +802,12 @@ The obtained required bandwidth (approximate upper and lower bounds) to obtained
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org08f4548" class="outline-2">
|
<div id="outline-container-orgf3b0566" class="outline-2">
|
||||||
<h2 id="org08f4548"><span class="section-number-2">6</span> Conclusion</h2>
|
<h2 id="orgf3b0566"><span class="section-number-2">6</span> Conclusion</h2>
|
||||||
<div class="outline-text-2" id="text-6">
|
<div class="outline-text-2" id="text-6">
|
||||||
<div class="important">
|
<div class="important" id="org692b84e">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<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>
|
<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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,54 +1,58 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-17 ven. 09:35 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Computation of the Positioning Error with respect to the nano-hexapod</title>
|
<title>Computation of the Positioning Error with respect to the nano-hexapod</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Computation of the Positioning Error with respect to the nano-hexapod</h1>
|
<h1 class="title">Computation of the Positioning Error with respect to the nano-hexapod</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<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="#org90cd0e3">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="#org49398f4">2. Verify that the function to compute the reference pose is correct</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org824599b">2.1. Prepare the Simulation</a></li>
|
<li><a href="#org9d64b37">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="#orgcaa1e72">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="#orgfee0cbc">2.3. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#orgf76b12a">3.1. Prepare the Simulation</a></li>
|
<li><a href="#org7632729">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="#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="#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="#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="#org1528ce4">3.4. Conclusion</a></li>
|
<li><a href="#orgdb2de31">3.4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -56,11 +60,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/control-schematic-nass.png" alt="control-schematic-nass.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Global Control Schematic for the Station</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>
|
||||||
|
|
||||||
<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>
|
||||||
|
|
||||||
<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.
|
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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Then, in section <a href="#orgb2f3e9c">3</a>, we introduce some positioning error in the micro-station’s stages.
|
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="#org0939a33">1</a>).
|
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.
|
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>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-orgf8376ef" class="outline-2">
|
<div id="outline-container-org90cd0e3" 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>
|
<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">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<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.
|
A transform sensor block gives the translation and orientation of the follower frame with respect to the base frame.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -126,25 +130,25 @@ We can then determine extract other orientation conventions such that Euler angl
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb3d760a" class="outline-2">
|
<div id="outline-container-org49398f4" 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>
|
<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">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgbdef361"></a>
|
<a id="org0dafc5f"></a>
|
||||||
</p>
|
</p>
|
||||||
<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.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org824599b" class="outline-3">
|
<div id="outline-container-org9d64b37" class="outline-3">
|
||||||
<h3 id="org824599b"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
|
<h3 id="org9d64b37"><span class="section-number-3">2.1</span> Prepare the Simulation</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
We set a small <code>StopTime</code>.
|
We set a small <code>StopTime</code>.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simulink.mat'</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>);
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -152,16 +156,16 @@ We set a small <code>StopTime</code>.
|
|||||||
We initialize all the stages.
|
We initialize all the stages.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
<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>);
|
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>);
|
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>);
|
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>);
|
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>);
|
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>);
|
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>);
|
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>);
|
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);
|
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'mass'</span>, 50);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -169,8 +173,8 @@ initializeSample(<span class="org-string">'type'</span>, <span class="org-string
|
|||||||
No disturbance and no gravity.
|
No disturbance and no gravity.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</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>);
|
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -178,7 +182,7 @@ initializeDisturbances(<span class="org-string">'enable'</span>, <span class="or
|
|||||||
We setup the reference path to be constant.
|
We setup the reference path to be constant.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeReferences(...
|
<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">'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_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_amplitude'</span>, 5e<span class="org-type">-</span>3, ...<span class="org-comment"> % Amplitude of the displacement [m]</span>
|
||||||
@ -203,12 +207,12 @@ We setup the reference path to be constant.
|
|||||||
No position error for now (perfect positioning).
|
No position error for now (perfect positioning).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Dye = 0; <span class="org-comment">% [m]</span>
|
<pre class="src src-matlab"> Dye = 0; <span class="org-comment">% [m]</span>
|
||||||
Rye = 0; <span class="org-comment">% [rad]</span>
|
Rye = 0; <span class="org-comment">% [rad]</span>
|
||||||
Rze = 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>
|
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>
|
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>
|
Dne = zeros(6,1); <span class="org-comment">% [m,m,m,rad,rad,rad]</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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
|
We want to log the signals
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -224,14 +228,14 @@ We want to log the signals
|
|||||||
And we run the simulation.
|
And we run the simulation.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd2fa379" class="outline-3">
|
<div id="outline-container-orgcaa1e72" 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>
|
<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">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
Let’s denote:
|
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\).
|
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>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">n = length(simout.r.Dy.Time);
|
<pre class="src src-matlab"> n = length(simout.r.Dy.Time);
|
||||||
WTr = zeros(4, 4, n);
|
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>
|
<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>));
|
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>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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\).
|
From that we can compute the homogeneous transformation matrix \({}^W\bm{T}_M\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">n = length(simout.y.R.Time);
|
<pre class="src src-matlab"> n = length(simout.y.R.Time);
|
||||||
WTm = zeros(4, 4, n);
|
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, 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(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;
|
WTm(4, 4, <span class="org-type">:</span>) = 1;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -287,12 +291,12 @@ Or are least:
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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)
|
<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)
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<pre class="example">
|
<pre class="example" id="orgee15e5c">
|
||||||
WTr(1:3, 4, end)-WTm(1:3, 4, end)
|
WTr(1:3, 4, end)-WTm(1:3, 4, end)
|
||||||
ans =
|
ans =
|
||||||
8.53830894875784e-15
|
8.53830894875784e-15
|
||||||
@ -307,10 +311,10 @@ ans =
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org127e189" class="outline-3">
|
<div id="outline-container-orgfee0cbc" class="outline-3">
|
||||||
<h3 id="org127e189"><span class="section-number-3">2.3</span> Conclusion</h3>
|
<h3 id="orgfee0cbc"><span class="section-number-3">2.3</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-3">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<div class="important">
|
<div class="important" id="org91210ce">
|
||||||
<p>
|
<p>
|
||||||
We are able to compute the wanted position and orientation of the sample.
|
We are able to compute the wanted position and orientation of the sample.
|
||||||
Both the measurement and the theory gives the same result.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf6fa84d" class="outline-2">
|
<div id="outline-container-org7815d37" 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>
|
<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">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgb2f3e9c"></a>
|
<a id="orge9bc9ee"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
We now introduce some positioning error in the stage.
|
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.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgf76b12a" class="outline-3">
|
<div id="outline-container-org7632729" class="outline-3">
|
||||||
<h3 id="orgf76b12a"><span class="section-number-3">3.1</span> Prepare the Simulation</h3>
|
<h3 id="org7632729"><span class="section-number-3">3.1</span> Prepare the Simulation</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<p>
|
||||||
We set a small <code>StopTime</code>.
|
We set a small <code>StopTime</code>.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simulink.mat'</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>);
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -352,16 +356,16 @@ We set a small <code>StopTime</code>.
|
|||||||
We initialize all the stages.
|
We initialize all the stages.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>);
|
<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>);
|
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>);
|
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>);
|
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>);
|
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>);
|
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>);
|
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>);
|
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>);
|
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);
|
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'mass'</span>, 50);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -369,8 +373,8 @@ initializeSample(<span class="org-string">'type'</span>, <span class="org-string
|
|||||||
No disturbance and no gravity.
|
No disturbance and no gravity.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</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>);
|
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -378,7 +382,7 @@ initializeDisturbances(<span class="org-string">'enable'</span>, <span class="or
|
|||||||
We setup the reference path to be constant.
|
We setup the reference path to be constant.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeReferences(...
|
<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">'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_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">'Dy_amplitude'</span>, 0, ...<span class="org-comment"> % Amplitude of the displacement [m]</span>
|
||||||
@ -400,10 +404,10 @@ We setup the reference path to be constant.
|
|||||||
Now we introduce some positioning error.
|
Now we introduce some positioning error.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Dye = 1e<span class="org-type">-</span>6; <span class="org-comment">% [m]</span>
|
<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>
|
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>
|
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);
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -411,14 +415,14 @@ initializePosError(<span class="org-string">'error'</span>, <span class="org-con
|
|||||||
And we run the simulation.
|
And we run the simulation.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4e6a2dc" class="outline-3">
|
<div id="outline-container-org0b1c527" 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>
|
<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">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<p>
|
<p>
|
||||||
Now that we have introduced some positioning error, the computed wanted pose and the measured pose will not be the same.
|
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\).
|
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>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">n = length(simout.r.Dy.Time);
|
<pre class="src src-matlab"> n = length(simout.r.Dy.Time);
|
||||||
WTr = zeros(4, 4, n);
|
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>
|
<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>));
|
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>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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\).
|
From that we can compute the homogeneous transformation matrix \({}^W\bm{T}_M\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">n = length(simout.y.R.Time);
|
<pre class="src src-matlab"> n = length(simout.y.R.Time);
|
||||||
WTm = zeros(4, 4, n);
|
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, 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(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;
|
WTm(4, 4, <span class="org-type">:</span>) = 1;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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\).
|
Finally, we compute \({}^M\bm{T}_R\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">MTr = zeros(4, 4, n);
|
<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>
|
<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>);
|
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>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -494,16 +498,16 @@ Finally, we compute \({}^M\bm{T}_R\).
|
|||||||
Verify that the pose error corresponds to the positioning error of the stages.
|
Verify that the pose error corresponds to the positioning error of the stages.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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)
|
<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;
|
Rx = [1 0 0;
|
||||||
0 cos(Erx) <span class="org-type">-</span>sin(Erx);
|
0 cos(Erx) <span class="org-type">-</span>sin(Erx);
|
||||||
0 sin(Erx) cos(Erx)];
|
0 sin(Erx) cos(Erx)];
|
||||||
|
|
||||||
Ry = [ cos(Ery) 0 sin(Ery);
|
Ry = [ cos(Ery) 0 sin(Ery);
|
||||||
0 1 0;
|
0 1 0;
|
||||||
<span class="org-type">-</span>sin(Ery) 0 cos(Ery)];
|
<span class="org-type">-</span>sin(Ery) 0 cos(Ery)];
|
||||||
|
|
||||||
Rz = [cos(Erz) <span class="org-type">-</span>sin(Erz) 0;
|
Rz = [cos(Erz) <span class="org-type">-</span>sin(Erz) 0;
|
||||||
sin(Erz) cos(Erz) 0;
|
sin(Erz) cos(Erz) 0;
|
||||||
0 0 1];
|
0 0 1];
|
||||||
</pre>
|
</pre>
|
||||||
@ -553,14 +557,14 @@ Rz = [cos(Erz) <span class="org-type">-</span>sin(Erz) 0;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga048dbb" class="outline-3">
|
<div id="outline-container-org3623362" 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>
|
<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">
|
<div class="outline-text-3" id="text-3-3">
|
||||||
<p>
|
<p>
|
||||||
We now keep the wanted pose but we impose a displacement of the nano hexapod corresponding to the measured position error.
|
We now keep the wanted pose but we impose a displacement of the nano hexapod corresponding to the measured position error.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeReferences(...
|
<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">'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_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">'Dy_amplitude'</span>, 0, ...<span class="org-comment"> % Amplitude of the displacement [m]</span>
|
||||||
@ -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.
|
And we run the simulation.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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\).
|
From that we can compute the homogeneous transformation matrix \({}^W\bm{T}_M\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">n = length(simout.y.R.Time);
|
<pre class="src src-matlab"> n = length(simout.y.R.Time);
|
||||||
WTm = zeros(4, 4, n);
|
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, 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(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;
|
WTm(4, 4, <span class="org-type">:</span>) = 1;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -607,10 +611,10 @@ WTm(4, 4, <span class="org-type">:</span>) = 1;
|
|||||||
Finally, we compute \({}^M\bm{T}_R\).
|
Finally, we compute \({}^M\bm{T}_R\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">MTr = zeros(4, 4, n);
|
<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>
|
<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>);
|
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>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -661,10 +665,10 @@ Verify that the pose error is small.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1528ce4" class="outline-3">
|
<div id="outline-container-orgdb2de31" class="outline-3">
|
||||||
<h3 id="org1528ce4"><span class="section-number-3">3.4</span> Conclusion</h3>
|
<h3 id="orgdb2de31"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-3-4">
|
<div class="outline-text-3" id="text-3-4">
|
||||||
<div class="important">
|
<div class="important" id="orge11a7e8">
|
||||||
<p>
|
<p>
|
||||||
Indeed, we are able to convert the position error in the frame of the NASS and then compensate these errors with the NASS.
|
Indeed, we are able to convert the position error in the frame of the NASS and then compensate these errors with the NASS.
|
||||||
</p>
|
</p>
|
||||||
@ -676,7 +680,7 @@ Indeed, we are able to convert the position error in the frame of the NASS and t
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,37 +1,32 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-17 ven. 09:35 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Simscape Model</title>
|
<title>Simscape Model</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<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>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Simscape Model</h1>
|
<h1 class="title">Simscape Model</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orge12e7ea">1. Solid bodies</a></li>
|
<li><a href="#org0e399eb">1. Solid bodies</a></li>
|
||||||
<li><a href="#org6e14a53">2. Frames</a></li>
|
<li><a href="#org8fe7328">2. Frames</a></li>
|
||||||
<li><a href="#orgbcbe86d">3. Joints</a></li>
|
<li><a href="#orgf4c96ec">3. Joints</a></li>
|
||||||
<li><a href="#orgafe97a3">4. Measurements</a></li>
|
<li><a href="#orge58c3e3">4. Measurements</a></li>
|
||||||
<li><a href="#orgdee3066">5. Excitation</a></li>
|
<li><a href="#org6556ccd">5. Excitation</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</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.
|
<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>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-orge12e7ea" class="outline-2">
|
<div id="outline-container-org0e399eb" class="outline-2">
|
||||||
<h2 id="orge12e7ea"><span class="section-number-2">1</span> Solid bodies</h2>
|
<h2 id="org0e399eb"><span class="section-number-2">1</span> Solid bodies</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
Each solid body is represented by a <a href="https://mathworks.com/help/physmod/sm/ref/solid.html">solid block</a>.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6e14a53" class="outline-2">
|
<div id="outline-container-org8fe7328" class="outline-2">
|
||||||
<h2 id="org6e14a53"><span class="section-number-2">2</span> Frames</h2>
|
<h2 id="org8fe7328"><span class="section-number-2">2</span> Frames</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<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.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbcbe86d" class="outline-2">
|
<div id="outline-container-orgf4c96ec" class="outline-2">
|
||||||
<h2 id="orgbcbe86d"><span class="section-number-2">3</span> Joints</h2>
|
<h2 id="orgf4c96ec"><span class="section-number-2">3</span> Joints</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
Solid Bodies are connected with joints (between frames of the two solid bodies).
|
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>.
|
There are various types of joints that are all described <a href="https://mathworks.com/help/physmod/sm/ug/joints.html">here</a>.
|
||||||
</p>
|
</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>
|
<caption class="t-above"><span class="table-number">Table 1:</span> Degrees of freedom associated with each joint</caption>
|
||||||
|
|
||||||
<colgroup>
|
<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>
|
<li><b>Constant Velocity</b>: Allows rotation at constant velocity between intersection through arbitrarily aligned shafts: <code>CV</code></li>
|
||||||
</ul>
|
</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>
|
<caption class="t-above"><span class="table-number">Table 2:</span> Joint primitives for each joint type</caption>
|
||||||
|
|
||||||
<colgroup>
|
<colgroup>
|
||||||
@ -503,8 +498,8 @@ Composite Force/Torque sensing:
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgafe97a3" class="outline-2">
|
<div id="outline-container-orge58c3e3" class="outline-2">
|
||||||
<h2 id="orgafe97a3"><span class="section-number-2">4</span> Measurements</h2>
|
<h2 id="orge58c3e3"><span class="section-number-2">4</span> Measurements</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
A transform sensor block measures the spatial relationship between two frames: the base <code>B</code> and the follower <code>F</code>.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgdee3066" class="outline-2">
|
<div id="outline-container-org6556ccd" class="outline-2">
|
||||||
<h2 id="orgdee3066"><span class="section-number-2">5</span> Excitation</h2>
|
<h2 id="org6556ccd"><span class="section-number-2">5</span> Excitation</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
<p>
|
<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>.
|
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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</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"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-04-17 ven. 09:36 -->
|
<!-- 2021-02-20 sam. 23:09 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Simulink Project for the NASS</title>
|
<title>Simulink Project for the NASS</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<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>
|
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Simulink Project for the NASS</h1>
|
<h1 class="title">Simulink Project for the NASS</h1>
|
||||||
<p>
|
<p>
|
||||||
@ -50,7 +45,7 @@ The project can be opened using the <code>simulinkproject</code> function:
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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.
|
The startup script is defined below and is exported to the <code>project_startup.m</code> script.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">project = simulinkproject;
|
<pre class="src src-matlab"> project = simulinkproject;
|
||||||
projectRoot = project.RootFolder;
|
projectRoot = project.RootFolder;
|
||||||
|
|
||||||
myCacheFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCache'</span>);
|
myCacheFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCache'</span>);
|
||||||
myCodeFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCode'</span>);
|
myCodeFolder = fullfile(projectRoot, <span class="org-string">'.SimulinkCode'</span>);
|
||||||
|
|
||||||
Simulink.fileGenControl(<span class="org-string">'set'</span>,...
|
Simulink.fileGenControl(<span class="org-string">'set'</span>,...
|
||||||
<span class="org-string">'CacheFolder'</span>, myCacheFolder,...
|
<span class="org-string">'CacheFolder'</span>, myCacheFolder,...
|
||||||
<span class="org-string">'CodeGenFolder'</span>, myCodeFolder,...
|
<span class="org-string">'CodeGenFolder'</span>, myCodeFolder,...
|
||||||
<span class="org-string">'createDir'</span>, <span class="org-constant">true</span>);
|
<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>
|
<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>);
|
load(<span class="org-string">'mat/conf_simulink.mat'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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.
|
When the project closes, it runs the <code>project_shutdown.m</code> script defined below.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -89,7 +84,7 @@ The project also permits to automatically add defined folder to the path when th
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</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"?>
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-05 mar. 10:34 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Evaluating the Plant Uncertainty in various experimental conditions</title>
|
<title>Evaluating the Plant Uncertainty in various experimental conditions</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Evaluating the Plant Uncertainty in various experimental conditions</h1>
|
<h1 class="title">Evaluating the Plant Uncertainty in various experimental conditions</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgea4f0d4">1. Variation of the Sample Mass</a></li>
|
<li><a href="#org7f3fda7">1. Variation of the Sample Mass</a></li>
|
||||||
<li><a href="#orga0077c1">2. Variation of the Sample Resonance Frequency</a></li>
|
<li><a href="#org97d416c">2. Variation of the Sample Resonance Frequency</a></li>
|
||||||
<li><a href="#orgb49a967">3. Variation of the Spindle Angle</a>
|
<li><a href="#org9ccc313">3. Variation of the Spindle Angle</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org027e6cb">3.1. Identification</a></li>
|
<li><a href="#org5ba7e6b">3.1. Identification</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
<ul>
|
||||||
<li><a href="#orgd625617">4.1. Initialization of gravity compensation forces</a></li>
|
<li><a href="#org41be335">4.1. Initialization of gravity compensation forces</a></li>
|
||||||
<li><a href="#orgd69bd8a">4.2. Identification</a></li>
|
<li><a href="#org26868c4">4.2. Identification</a></li>
|
||||||
<li><a href="#org70dd336">4.3. Plots</a></li>
|
<li><a href="#org21d01d9">4.3. Plots</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgc4bba39">5. Variation of the Tilt Angle</a></li>
|
<li><a href="#org9ef371a">5. Variation of the Tilt Angle</a></li>
|
||||||
<li><a href="#orgd6b6bfd">6. Variation of the micro-hexapod pose</a></li>
|
<li><a href="#orgf2e2276">6. Variation of the micro-hexapod pose</a></li>
|
||||||
<li><a href="#org9b1c640">7. Conclusion</a></li>
|
<li><a href="#orgb9c798c">7. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</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:
|
These experimental conditions are:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>Section <a href="#org73362ad">1</a>: Sample mass (from 1Kg to 50Kg)</li>
|
<li>Section <a href="#org47bac11">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="#orgbedba6e">2</a>: Sample dynamics (mostly main resonance frequency)</li>
|
||||||
<li>Section <a href="#org58b9cae">3</a>: The spindle angle</li>
|
<li>Section <a href="#org385fb52">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="#orgc000f2f">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="#orgaa8ad1d">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="#orgd12218c">6</a>: Pose of the micro-hexapod</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -89,14 +93,14 @@ The variability of the dynamics is studied for two nano-hexapod concepts:
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The conclusions are drawn in Section <a href="#org16cf0c6">7</a>
|
The conclusions are drawn in Section <a href="#org1e30cfe">7</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-orgea4f0d4" class="outline-2">
|
<div id="outline-container-org7f3fda7" class="outline-2">
|
||||||
<h2 id="orgea4f0d4"><span class="section-number-2">1</span> Variation of the Sample Mass</h2>
|
<h2 id="org7f3fda7"><span class="section-number-2">1</span> Variation of the Sample Mass</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org73362ad"></a>
|
<a id="org47bac11"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
We here study the change of dynamics due to the sample mass.
|
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.
|
We identify the dynamics for the following sample masses, both with a soft and stiff nano-hexapod.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
The following transfer functions are shown:
|
The following transfer functions are shown:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#org556def6">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="#orga92f0d2">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="#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>
|
</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><img src="figs/dynamics_variability_iff_sample_mass.png" alt="dynamics_variability_iff_sample_mass.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/dynamics_variability_dvf_sample_mass.png" alt="dynamics_variability_dvf_sample_mass.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/dynamics_variability_err_x_sample_mass.png" alt="dynamics_variability_err_x_sample_mass.png" />
|
||||||
</p>
|
</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>
|
<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><img src="figs/dynamics_variability_err_z_sample_mass.png" alt="dynamics_variability_err_z_sample_mass.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
<div class="important">
|
<div class="important" id="org753fd54">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
@ -203,51 +207,51 @@ This is more easily seem with the soft nano-hexapod as the resonance \(\omega_0\
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga0077c1" class="outline-2">
|
<div id="outline-container-org97d416c" class="outline-2">
|
||||||
<h2 id="orga0077c1"><span class="section-number-2">2</span> Variation of the Sample Resonance Frequency</h2>
|
<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">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="org5d9a396"></a>
|
<a id="orgbedba6e"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
We identify the dynamics for the following sample resonance frequency.
|
We identify the dynamics for the following sample resonance frequency.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">mass_w = [50, 100, 500]; % [Hz]
|
<pre class="src src-matlab"> mass_w = [50, 100, 500]; <span class="org-comment">% [Hz]</span>
|
||||||
mass = 10; % [Kg]
|
mass = 10; <span class="org-comment">% [Kg]</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
The following transfer functions are shown:
|
The following transfer functions are shown:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#orgfae24b1">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="#orgd64155a">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="#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>
|
</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><img src="figs/dynamics_variability_iff_sample_w.png" alt="dynamics_variability_iff_sample_w.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/dynamics_variability_dvf_sample_w.png" alt="dynamics_variability_dvf_sample_w.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/dynamics_variability_err_sample_w.png" alt="dynamics_variability_err_sample_w.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
<div class="important">
|
<div class="important" id="org11cbcec">
|
||||||
<p>
|
<p>
|
||||||
Let’s note \(\omega_m\) the frequency of the resonance of the Payload.
|
Let’s note \(\omega_m\) the frequency of the resonance of the Payload.
|
||||||
</p>
|
</p>
|
||||||
@ -293,22 +297,22 @@ Let’s note \(\omega_m\) the frequency of the resonance of the Payload.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb49a967" class="outline-2">
|
<div id="outline-container-org9ccc313" class="outline-2">
|
||||||
<h2 id="orgb49a967"><span class="section-number-2">3</span> Variation of the Spindle Angle</h2>
|
<h2 id="org9ccc313"><span class="section-number-2">3</span> Variation of the Spindle Angle</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="org58b9cae"></a>
|
<a id="org385fb52"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org027e6cb" class="outline-3">
|
<div id="outline-container-org5ba7e6b" class="outline-3">
|
||||||
<h3 id="org027e6cb"><span class="section-number-3">3.1</span> Identification</h3>
|
<h3 id="org5ba7e6b"><span class="section-number-3">3.1</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<p>
|
||||||
We identify the dynamics for the following Tilt stage angles.
|
We identify the dynamics for the following Tilt stage angles.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeSample('mass', 50);
|
<pre class="src src-matlab"> initializeSample(<span class="org-string">'mass'</span>, 50);
|
||||||
Rz_amplitudes = [0, pi/4, pi/2, pi]; % [rad]
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -319,19 +323,19 @@ Rz_amplitudes = [0, pi/4, pi/2, pi]; % [rad]
|
|||||||
The following transfer functions are shown:
|
The following transfer functions are shown:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#org6e010ad">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="#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>
|
</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><img src="figs/dynamics_variability_iff_spindle_angle.png" alt="dynamics_variability_iff_spindle_angle.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/dynamics_variability_err_spindle_angle.png" alt="dynamics_variability_err_spindle_angle.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<div class="important">
|
<div class="important" id="orgf2503f0">
|
||||||
<p>
|
<p>
|
||||||
The Spindle angle has no visible effect for the soft nano-hexapod.
|
The Spindle angle has no visible effect for the soft nano-hexapod.
|
||||||
</p>
|
</p>
|
||||||
@ -354,23 +358,23 @@ This is probably due to the fact that the micro-station compliance is not unifor
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9081b0f" class="outline-2">
|
<div id="outline-container-org6dbbac7" class="outline-2">
|
||||||
<h2 id="org9081b0f"><span class="section-number-2">4</span> Variation of the Spindle Rotation Speed</h2>
|
<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">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
<a id="org5b594de"></a>
|
<a id="orgc000f2f"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgd625617" class="outline-3">
|
<div id="outline-container-org41be335" class="outline-3">
|
||||||
<h3 id="orgd625617"><span class="section-number-3">4.1</span> Initialization of gravity compensation forces</h3>
|
<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">
|
<div class="outline-text-3" id="text-4-1">
|
||||||
<p>
|
<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 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.
|
We set a payload mass of 10Kg.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeSample('type', 'init', 'mass', 10);
|
<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( 'type', 'init');
|
nano_hexapod = initializeNanoHexapod( <span class="org-string">'type'</span>, <span class="org-string">'init'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -379,56 +383,56 @@ Finally, we simulate the system and same the forces/torques applied in each join
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgd69bd8a" class="outline-3">
|
<div id="outline-container-org26868c4" class="outline-3">
|
||||||
<h3 id="orgd69bd8a"><span class="section-number-3">4.2</span> Identification</h3>
|
<h3 id="org26868c4"><span class="section-number-3">4.2</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-4-2">
|
<div class="outline-text-3" id="text-4-2">
|
||||||
<p>
|
<p>
|
||||||
We initialize the stages with forces/torques compensating the gravity forces.
|
We initialize the stages with forces/torques compensating the gravity forces.
|
||||||
We identify the dynamics for the following Spindle rotation periods.
|
We identify the dynamics for the following Spindle rotation periods.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org70dd336" class="outline-3">
|
<div id="outline-container-org21d01d9" class="outline-3">
|
||||||
<h3 id="org70dd336"><span class="section-number-3">4.3</span> Plots</h3>
|
<h3 id="org21d01d9"><span class="section-number-3">4.3</span> Plots</h3>
|
||||||
<div class="outline-text-3" id="text-4-3">
|
<div class="outline-text-3" id="text-4-3">
|
||||||
<p>
|
<p>
|
||||||
The following transfer functions are shown:
|
The following transfer functions are shown:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#org47f402f">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="#org4b3b7f6">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="#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="#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="#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>
|
</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><img src="figs/dynamics_variability_iff_spindle_speed.png" alt="dynamics_variability_iff_spindle_speed.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/dynamics_variability_dvf_spindle_speed.png" alt="dynamics_variability_dvf_spindle_speed.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/dynamics_variability_err_spindle_speed.png" alt="dynamics_variability_err_spindle_speed.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/dynamics_variability_err_spindle_speed_coupling.png" alt="dynamics_variability_err_spindle_speed_coupling.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
<div class="important">
|
<div class="important" id="org8004dbd">
|
||||||
<p>
|
<p>
|
||||||
For the stiff nano-hexapod, the rotation speed of the Spindle does not affect the (main) dynamics.
|
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.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc4bba39" class="outline-2">
|
<div id="outline-container-org9ef371a" class="outline-2">
|
||||||
<h2 id="orgc4bba39"><span class="section-number-2">5</span> Variation of the Tilt Angle</h2>
|
<h2 id="org9ef371a"><span class="section-number-2">5</span> Variation of the Tilt Angle</h2>
|
||||||
<div class="outline-text-2" id="text-5">
|
<div class="outline-text-2" id="text-5">
|
||||||
<p>
|
<p>
|
||||||
<a id="org4fe1245"></a>
|
<a id="orgaa8ad1d"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
We identify the dynamics for the following Tilt stage angles.
|
We identify the dynamics for the following Tilt stage angles.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeSample('mass', 50);
|
<pre class="src src-matlab"> initializeSample(<span class="org-string">'mass'</span>, 50);
|
||||||
Ry_amplitudes = [-3*pi/180 0 3*pi/180]; % [rad]
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
The following transfer functions are shown:
|
The following transfer functions are shown:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#orgfdee6dd">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="#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>
|
</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><img src="figs/dynamics_variability_iff_tilt_angle.png" alt="dynamics_variability_iff_tilt_angle.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/dynamics_variability_err_tilt_angle.png" alt="dynamics_variability_err_tilt_angle.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
<div class="important">
|
<div class="important" id="org0740801">
|
||||||
<p>
|
<p>
|
||||||
The tilt angle has no visible effect on the dynamics.
|
The tilt angle has no visible effect on the dynamics.
|
||||||
</p>
|
</p>
|
||||||
@ -506,34 +510,34 @@ The tilt angle has no visible effect on the dynamics.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd6b6bfd" class="outline-2">
|
<div id="outline-container-orgf2e2276" class="outline-2">
|
||||||
<h2 id="orgd6b6bfd"><span class="section-number-2">6</span> Variation of the micro-hexapod pose</h2>
|
<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">
|
<div class="outline-text-2" id="text-6">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgec1048c"></a>
|
<a id="orgd12218c"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
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.
|
We identify the dynamics for the following translations of the micro-hexapod in the X direction.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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><img src="figs/dynamics_variability_iff_micro_hexapod_x.png" alt="dynamics_variability_iff_micro_hexapod_x.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/dynamics_variability_err_micro_hexapod_x.png" alt="dynamics_variability_err_micro_hexapod_x.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
<div class="important">
|
<div class="important" id="org2e2f159">
|
||||||
<p>
|
<p>
|
||||||
The pose of the micro-hexapod has negligible effect on the dynamics.
|
The pose of the micro-hexapod has negligible effect on the dynamics.
|
||||||
</p>
|
</p>
|
||||||
@ -542,14 +546,14 @@ The pose of the micro-hexapod has negligible effect on the dynamics.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9b1c640" class="outline-2">
|
<div id="outline-container-orgb9c798c" class="outline-2">
|
||||||
<h2 id="org9b1c640"><span class="section-number-2">7</span> Conclusion</h2>
|
<h2 id="orgb9c798c"><span class="section-number-2">7</span> Conclusion</h2>
|
||||||
<div class="outline-text-2" id="text-7">
|
<div class="outline-text-2" id="text-7">
|
||||||
<p>
|
<p>
|
||||||
<a id="org16cf0c6"></a>
|
<a id="org1e30cfe"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="important">
|
<div class="important" id="orgdd4393b">
|
||||||
<p>
|
<p>
|
||||||
From all the experimental condition studied, the only ones that have significant effect on the dynamics are:
|
From all the experimental condition studied, the only ones that have significant effect on the dynamics are:
|
||||||
</p>
|
</p>
|
||||||
@ -603,7 +607,7 @@ From all the experimental condition studied, the only ones that have significant
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -3,66 +3,71 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-20 mer. 15:49 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Determination of the optimal nano-hexapod’s stiffness</title>
|
<title>Determination of the optimal nano-hexapod’s stiffness</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Determination of the optimal nano-hexapod’s stiffness</h1>
|
<h1 class="title">Determination of the optimal nano-hexapod’s stiffness</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org157c07d">1. Spindle Rotation Speed</a>
|
<li><a href="#orgddc729d">1. Spindle Rotation Speed</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org654fcb6">1.1. Initialization</a></li>
|
<li><a href="#orgbdb60e0">1.1. Initialization</a></li>
|
||||||
<li><a href="#org687bdef">1.2. Identification when rotating at maximum speed</a></li>
|
<li><a href="#orgad2f22e">1.2. Identification when rotating at maximum speed</a></li>
|
||||||
<li><a href="#org7dcfddb">1.3. Change of dynamics</a></li>
|
<li><a href="#orgc299410">1.3. Change of dynamics</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org23ddf26">2. Micro-Station Compliance Effect</a>
|
<li><a href="#org48e49fe">2. Micro-Station Compliance Effect</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgdc8aeea">2.1. Identification of the micro-station compliance</a></li>
|
<li><a href="#org596cda7">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="#org5e4de36">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="#orgf201667">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="#org64f02b9">2.4. Obtained Dynamics</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org19559b0">3. Payload “Impedance” Effect</a>
|
<li><a href="#orgcd53751">3. Payload “Impedance” Effect</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgd20f43d">3.1. Initialization</a></li>
|
<li><a href="#org19e3b05">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="#orgc794f3b">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="#orgac78d43">3.3. Change of dynamics for the primary controller</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgb44d421">3.3.1. Frequency variation</a></li>
|
<li><a href="#org7a6c6e0">3.3.1. Frequency variation</a></li>
|
||||||
<li><a href="#orgfc270b0">3.3.2. Mass variation</a></li>
|
<li><a href="#org9414851">3.3.2. Mass variation</a></li>
|
||||||
<li><a href="#org118f0c2">3.3.3. Total variation</a></li>
|
<li><a href="#org41d9c49">3.3.3. Total variation</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org973d2e3">4. Total Change of dynamics</a></li>
|
<li><a href="#orgcfb28e7">4. Total Change of dynamics</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</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:
|
We wish here to see if we can determine an optimal stiffness of the nano-hexapod such that:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#orge660d01">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="#org30f0cdc">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="#orge0b72c9">3</a>: the change of payload impedance has acceptable effect on the plant dynamics</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The overall goal is to design a nano-hexapod that will allow the highest possible control bandwidth.
|
The overall goal is to design a nano-hexapod that will allow the highest possible control bandwidth.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="outline-container-org157c07d" class="outline-2">
|
<div id="outline-container-orgddc729d" class="outline-2">
|
||||||
<h2 id="org157c07d"><span class="section-number-2">1</span> Spindle Rotation Speed</h2>
|
<h2 id="orgddc729d"><span class="section-number-2">1</span> Spindle Rotation Speed</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org902923f"></a>
|
<a id="orge660d01"></a>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
In this section, we look at the effect of the spindle rotation speed on the plant dynamics.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org654fcb6" class="outline-3">
|
<div id="outline-container-orgbdb60e0" class="outline-3">
|
||||||
<h3 id="org654fcb6"><span class="section-number-3">1.1</span> Initialization</h3>
|
<h3 id="orgbdb60e0"><span class="section-number-3">1.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod();
|
initializeMicroHexapod();
|
||||||
initializeAxisc();
|
initializeAxisc();
|
||||||
initializeMirror();
|
initializeMirror();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -130,7 +135,7 @@ initializeMirror();
|
|||||||
We use a sample mass of 10kg.
|
We use a sample mass of 10kg.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -139,23 +144,23 @@ We don’t include disturbances in this model as it adds complexity to the s
|
|||||||
We however include gravity.
|
We however include gravity.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
initializeDisturbances('enable', false);
|
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||||
initializeLoggingConfiguration('log', 'none');
|
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeController();
|
initializeController();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org687bdef" class="outline-3">
|
<div id="outline-container-orgad2f22e" class="outline-3">
|
||||||
<h3 id="org687bdef"><span class="section-number-3">1.2</span> Identification when rotating at maximum speed</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
We identify the dynamics for the following spindle rotation speeds <code>Rz_rpm</code>:
|
We identify the dynamics for the following spindle rotation speeds <code>Rz_rpm</code>:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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>:
|
And for the following nano-hexapod actuator stiffness <code>Ks</code>:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7dcfddb" class="outline-3">
|
<div id="outline-container-orgc299410" class="outline-3">
|
||||||
<h3 id="org7dcfddb"><span class="section-number-3">1.3</span> Change of dynamics</h3>
|
<h3 id="orgc299410"><span class="section-number-3">1.3</span> Change of dynamics</h3>
|
||||||
<div class="outline-text-3" id="text-1-3">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
We plot the change of dynamics due to the change of the spindle rotation speed (from 0rpm to 60rpm):
|
We plot the change of dynamics due to the change of the spindle rotation speed (from 0rpm to 60rpm):
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#org71b2e79">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="#org810439c">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="#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="#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="#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>
|
</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><img src="figs/opti_stiffness_iff_root_locus.png" alt="opti_stiffness_iff_root_locus.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_wz_iff.png" alt="opt_stiffness_wz_iff.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_wz_dvf.png" alt="opt_stiffness_wz_dvf.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_wz_fx_dx.png" alt="opt_stiffness_wz_fx_dx.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_wz_coupling.png" alt="opt_stiffness_wz_coupling.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<div class="important">
|
<div class="important" id="org3ec393d">
|
||||||
<p>
|
<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.
|
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.
|
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>
|
||||||
|
|
||||||
<div class="notes">
|
<div class="notes" id="org3ef0447">
|
||||||
<p>
|
<p>
|
||||||
Note that we can use very soft nano-hexapod if we limit the spindle rotating speed.
|
Note that we can use very soft nano-hexapod if we limit the spindle rotating speed.
|
||||||
</p>
|
</p>
|
||||||
@ -237,11 +242,11 @@ Note that we can use very soft nano-hexapod if we limit the spindle rotating spe
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org23ddf26" class="outline-2">
|
<div id="outline-container-org48e49fe" class="outline-2">
|
||||||
<h2 id="org23ddf26"><span class="section-number-2">2</span> Micro-Station Compliance Effect</h2>
|
<h2 id="org48e49fe"><span class="section-number-2">2</span> Micro-Station Compliance Effect</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgabe2ab2"></a>
|
<a id="org30f0cdc"></a>
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>take the 6dof compliance of the micro-station</li>
|
<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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgdc8aeea" class="outline-3">
|
<div id="outline-container-org596cda7" class="outline-3">
|
||||||
<h3 id="orgdc8aeea"><span class="section-number-3">2.1</span> Identification of the micro-station compliance</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
We initialize all the stages with the default parameters.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeGround();
|
<pre class="src src-matlab"> initializeGround();
|
||||||
initializeGranite();
|
initializeGranite();
|
||||||
initializeTy();
|
initializeTy();
|
||||||
initializeRy();
|
initializeRy();
|
||||||
initializeRz();
|
initializeRz();
|
||||||
initializeMicroHexapod('type', 'compliance');
|
initializeMicroHexapod(<span class="org-string">'type'</span>, <span class="org-string">'compliance'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -269,20 +274,20 @@ initializeMicroHexapod('type', 'compliance');
|
|||||||
We put nothing on top of the micro-hexapod.
|
We put nothing on top of the micro-hexapod.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">initializeAxisc('type', 'none');
|
<pre class="src src-matlab"> initializeAxisc(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeMirror('type', 'none');
|
initializeMirror(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeNanoHexapod('type', 'none');
|
initializeNanoHexapod(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeSample('type', 'none');
|
initializeSample(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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.
|
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>
|
</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><img src="figs/opt_stiff_micro_station_compliance.png" alt="opt_stiff_micro_station_compliance.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga44542b" class="outline-3">
|
<div id="outline-container-org5e4de36" class="outline-3">
|
||||||
<h3 id="orga44542b"><span class="section-number-3">2.2</span> Identification of the dynamics with a rigid micro-station</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
We now identify the dynamics when the micro-station is rigid.
|
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.
|
We also choose the sample to be rigid and to have a mass of 10kg.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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:
|
As before, we identify the dynamics for the following actuator stiffnesses:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org49d6b26" class="outline-3">
|
<div id="outline-container-orgf201667" class="outline-3">
|
||||||
<h3 id="org49d6b26"><span class="section-number-3">2.3</span> Identification of the dynamics with a flexible micro-station</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<p>
|
<p>
|
||||||
We now initialize all the micro-station stages to be flexible.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org4c1ed79" class="outline-3">
|
<div id="outline-container-org64f02b9" class="outline-3">
|
||||||
<h3 id="org4c1ed79"><span class="section-number-3">2.4</span> Obtained Dynamics</h3>
|
<h3 id="org64f02b9"><span class="section-number-3">2.4</span> Obtained Dynamics</h3>
|
||||||
<div class="outline-text-3" id="text-2-4">
|
<div class="outline-text-3" id="text-2-4">
|
||||||
<p>
|
<p>
|
||||||
We plot the change of dynamics due to the compliance of the Micro-Station.
|
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:
|
The solid curves are corresponding to the nano-hexapod without the micro-station, and the dashed curves with the micro-station:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#org64beb17">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="#org8584419">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="#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="#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="#org4775bbb">10</a>: from force in the task space \(\mathcal{F}_z\) to sample displacement \(\mathcal{X}_z\) (Centralized positioning plant)</li>
|
||||||
</ul>
|
</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><img src="figs/opt_stiffness_micro_station_iff.png" alt="opt_stiffness_micro_station_iff.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_micro_station_dvf.png" alt="opt_stiffness_micro_station_dvf.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_micro_station_fx_dx.png" alt="opt_stiffness_micro_station_fx_dx.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_micro_station_fz_dz.png" alt="opt_stiffness_micro_station_fz_dz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<div class="important">
|
<div class="important" id="org7bcc939">
|
||||||
<p>
|
<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]\).
|
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.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org19559b0" class="outline-2">
|
<div id="outline-container-orgcd53751" class="outline-2">
|
||||||
<h2 id="org19559b0"><span class="section-number-2">3</span> Payload “Impedance” Effect</h2>
|
<h2 id="orgcd53751"><span class="section-number-2">3</span> Payload “Impedance” Effect</h2>
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="org2bd8390"></a>
|
<a id="orge0b72c9"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd20f43d" class="outline-3">
|
<div id="outline-container-org19e3b05" class="outline-3">
|
||||||
<h3 id="orgd20f43d"><span class="section-number-3">3.1</span> Initialization</h3>
|
<h3 id="org19e3b05"><span class="section-number-3">3.1</span> Initialization</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<p>
|
||||||
We initialize all the stages with the default parameters.
|
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
|
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>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</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.
|
We set the controller type to Open-Loop, and we do not need to log any signal.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>);
|
||||||
initializeController();
|
initializeController();
|
||||||
initializeLoggingConfiguration('log', 'none');
|
initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||||
initializeReferences();
|
initializeReferences();
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org73f1c6e" class="outline-3">
|
<div id="outline-container-orgc794f3b" class="outline-3">
|
||||||
<h3 id="org73f1c6e"><span class="section-number-3">3.2</span> Identification of the dynamics while change the payload dynamics</h3>
|
<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">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<p>
|
<p>
|
||||||
We make the following change of payload dynamics:
|
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>:
|
We identify the dynamics for the following payload masses <code>Ms</code> and nano-hexapod leg’s stiffnesses <code>Ks</code>:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Ms = [1, 20, 50]; % [Kg]
|
<pre class="src src-matlab"> Ms = [1, 20, 50]; <span class="org-comment">% [Kg]</span>
|
||||||
Ks = logspace(3,9,7); % [N/m]
|
Ks = logspace(3,9,7); <span class="org-comment">% [N/m]</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</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>:
|
We then identify the dynamics for the following payload resonance frequencies <code>Fs</code>:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd7a519b" class="outline-3">
|
<div id="outline-container-orgac78d43" class="outline-3">
|
||||||
<h3 id="orgd7a519b"><span class="section-number-3">3.3</span> Change of dynamics for the primary controller</h3>
|
<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 class="outline-text-3" id="text-3-3">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgb44d421" class="outline-4">
|
<div id="outline-container-org7a6c6e0" class="outline-4">
|
||||||
<h4 id="orgb44d421"><span class="section-number-4">3.3.1</span> Frequency variation</h4>
|
<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">
|
<div class="outline-text-4" id="text-3-3-1">
|
||||||
<p>
|
<p>
|
||||||
We here compare the dynamics for the same payload mass, but different stiffness resulting in different resonance frequency of the payload:
|
We here compare the dynamics for the same payload mass, but different stiffness resulting in different resonance frequency of the payload:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#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="#org76716ad">12</a>: same, but for all tested nano-hexapod stiffnesses</li>
|
<li>Figure <a href="#orgabb9349">12</a>: same, but for all tested nano-hexapod stiffnesses</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<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>
|
<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>
|
</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><img src="figs/opt_stiffness_payload_freq_fz_dz.png" alt="opt_stiffness_payload_freq_fz_dz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_payload_freq_all.png" alt="opt_stiffness_payload_freq_all.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgfc270b0" class="outline-4">
|
<div id="outline-container-org9414851" class="outline-4">
|
||||||
<h4 id="orgfc270b0"><span class="section-number-4">3.3.2</span> Mass variation</h4>
|
<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">
|
<div class="outline-text-4" id="text-3-3-2">
|
||||||
<p>
|
<p>
|
||||||
We here compare the dynamics for different payload mass with the same resonance frequency (100Hz):
|
We here compare the dynamics for different payload mass with the same resonance frequency (100Hz):
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#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="#org35aebae">14</a>: same, but for all tested nano-hexapod stiffnesses</li>
|
<li>Figure <a href="#orgb40b713">14</a>: same, but for all tested nano-hexapod stiffnesses</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -503,14 +508,14 @@ We can see here that for the soft nano-hexapod:
|
|||||||
</ul>
|
</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><img src="figs/opt_stiffness_payload_mass_fz_dz.png" alt="opt_stiffness_payload_mass_fz_dz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_payload_mass_all.png" alt="opt_stiffness_payload_mass_all.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org118f0c2" class="outline-4">
|
<div id="outline-container-org41d9c49" class="outline-4">
|
||||||
<h4 id="org118f0c2"><span class="section-number-4">3.3.3</span> Total variation</h4>
|
<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">
|
<div class="outline-text-4" id="text-3-3-3">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>mass from 1kg to 50kg</li>
|
<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>
|
</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><img src="figs/opt_stiffness_payload_impedance_all_fz_dz.png" alt="opt_stiffness_payload_impedance_all_fz_dz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_payload_impedance_fz_dz.png" alt="opt_stiffness_payload_impedance_fz_dz.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
<div class="outline-text-2" id="text-3">
|
<div class="outline-text-2" id="text-3">
|
||||||
<div class="important">
|
<div class="important" id="org2b8d4da">
|
||||||
<p>
|
<p>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
@ -556,8 +561,8 @@ We now plot the total change of dynamics due to change of the payload (Figures <
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org973d2e3" class="outline-2">
|
<div id="outline-container-orgcfb28e7" class="outline-2">
|
||||||
<h2 id="org973d2e3"><span class="section-number-2">4</span> Total Change of dynamics</h2>
|
<h2 id="orgcfb28e7"><span class="section-number-2">4</span> Total Change of dynamics</h2>
|
||||||
<div class="outline-text-2" id="text-4">
|
<div class="outline-text-2" id="text-4">
|
||||||
<p>
|
<p>
|
||||||
We now consider the total change of nano-hexapod dynamics due to:
|
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:
|
The obtained dynamics are shown:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>Figure <a href="#orgcf64eb6">17</a> for a stiffness \(k = 10^3\ [N/m]\)</li>
|
<li>Figure <a href="#org8f6818d">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="#orga39b683">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="#orga5e35c4">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="#org8d3b0db">20</a> for a stiffness \(k = 10^9\ [N/m]\)</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/opt_stiffness_plant_dynamics_fx_dx_k_1e3.png" alt="opt_stiffness_plant_dynamics_fx_dx_k_1e3.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_plant_dynamics_fx_dx_k_1e5.png" alt="opt_stiffness_plant_dynamics_fx_dx_k_1e5.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_plant_dynamics_fx_dx_k_1e7.png" alt="opt_stiffness_plant_dynamics_fx_dx_k_1e7.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_plant_dynamics_fx_dx_k_1e9.png" alt="opt_stiffness_plant_dynamics_fx_dx_k_1e9.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_plant_dynamics_task_space.gif" alt="opt_stiffness_plant_dynamics_task_space.gif" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<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><img src="figs/opt_stiffness_plant_dynamics_task_space_colors.gif" alt="opt_stiffness_plant_dynamics_task_space_colors.gif" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,66 +1,70 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-05 mar. 10:33 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<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>
|
<title>Effect of Uncertainty on the payload’s dynamics on the isolation platform dynamics</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Effect of Uncertainty on the payload’s dynamics on the isolation platform dynamics</h1>
|
<h1 class="title">Effect of Uncertainty on the payload’s dynamics on the isolation platform dynamics</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgcc5f0ec">1. Simple Introductory Example</a>
|
<li><a href="#org4c816e0">1. Simple Introductory Example</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org5ed1517">1.1. Equations of motion</a></li>
|
<li><a href="#orgaf607f3">1.1. Equations of motion</a></li>
|
||||||
<li><a href="#org4efccbf">1.2. Initialization of the payload dynamics</a></li>
|
<li><a href="#org08d6c58">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="#orgd871eaf">1.3. Initialization of the isolation platform</a></li>
|
||||||
<li><a href="#orgd0dd88b">1.4. Comparison</a></li>
|
<li><a href="#org28efeb7">1.4. Comparison</a></li>
|
||||||
<li><a href="#org3f697cc">1.5. Conclusion</a></li>
|
<li><a href="#org95c8f67">1.5. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org1f8e63e">2. Generalization to arbitrary dynamics</a>
|
<li><a href="#org7c75d19">2. Generalization to arbitrary dynamics</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgc4fa63e">2.1. Introduction</a></li>
|
<li><a href="#org5080024">2.1. Introduction</a></li>
|
||||||
<li><a href="#org3367211">2.2. Equations of motion</a></li>
|
<li><a href="#org1b0c4a4">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="#org0505562">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="#orge0f3a40">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="#orgc1a00ca">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="#org456b213">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="#org1d2455c">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="#org1321ab2">2.8. Reduce the Uncertainty on the plant</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org4be463f">2.8.1. Effect of the platform’s stiffness \(k\)</a></li>
|
<li><a href="#org7519de0">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="#org2cfe073">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="#org20f04de">2.8.3. Effect of the platform’s mass \(m\)</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org272e76a">2.9. Conclusion</a></li>
|
<li><a href="#orgff05731">2.9. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -84,18 +88,18 @@ The goal is to study:
|
|||||||
Two models are made to study these effects:
|
Two models are made to study these effects:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#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="#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="#org1cfcec8">2</a>, we consider arbitrary payload dynamics with multiplicative input uncertainty to study the unmodelled dynamics of the payload</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-orgcc5f0ec" class="outline-2">
|
<div id="outline-container-org4c816e0" class="outline-2">
|
||||||
<h2 id="orgcc5f0ec"><span class="section-number-2">1</span> Simple Introductory Example</h2>
|
<h2 id="org4c816e0"><span class="section-number-2">1</span> Simple Introductory Example</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org971d11c"></a>
|
<a id="org752f885"></a>
|
||||||
</p>
|
</p>
|
||||||
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<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>
|
<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>
|
</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><img src="figs/2dof_system_stiffness_uncertainty_payload.png" alt="2dof_system_stiffness_uncertainty_payload.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Two degrees-of-freedom system</p>
|
<p><span class="figure-number">Figure 1: </span>Two degrees-of-freedom system</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5ed1517" class="outline-3">
|
<div id="outline-container-orgaf607f3" class="outline-3">
|
||||||
<h3 id="org5ed1517"><span class="section-number-3">1.1</span> Equations of motion</h3>
|
<h3 id="orgaf607f3"><span class="section-number-3">1.1</span> Equations of motion</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
\begin{align}
|
\begin{align}
|
||||||
ms^2 x &= F - (cs + k) x + (c^\prime s + k^\prime) (x^\prime - x) \\
|
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:
|
After eliminating \(x^\prime\), we obtain:
|
||||||
</p>
|
</p>
|
||||||
\begin{equation}
|
\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)}
|
\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}
|
\end{equation}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4efccbf" class="outline-3">
|
<div id="outline-container-org08d6c58" class="outline-3">
|
||||||
<h3 id="org4efccbf"><span class="section-number-3">1.2</span> Initialization of the payload dynamics</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
Let the payload have:
|
Let the payload have:
|
||||||
@ -148,12 +152,12 @@ Let the payload have:
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">mpi = 50;
|
<pre class="src src-matlab"> mpi = 50;
|
||||||
kpi = 5e6;
|
kpi = 5e6;
|
||||||
cpi = 3e3;
|
cpi = 3e3;
|
||||||
|
|
||||||
kpi = (2*pi*50)^2*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*sqrt(kpi*mpi);
|
cpi = 0.2<span class="org-type">*</span>sqrt(kpi<span class="org-type">*</span>mpi);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -161,14 +165,14 @@ cpi = 0.2*sqrt(kpi*mpi);
|
|||||||
Let’s also consider some uncertainty in those parameters:
|
Let’s also consider some uncertainty in those parameters:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">mp = ureal('m', mpi, 'Range', [1, 100]);
|
<pre class="src src-matlab"> mp = ureal(<span class="org-string">'m'</span>, mpi, <span class="org-string">'Range'</span>, [1, 100]);
|
||||||
cp = ureal('c', cpi, 'Percentage', 30);
|
cp = ureal(<span class="org-string">'c'</span>, cpi, <span class="org-string">'Percentage'</span>, 30);
|
||||||
kp = ureal('k', kpi, 'Percentage', 30);
|
kp = ureal(<span class="org-string">'k'</span>, kpi, <span class="org-string">'Percentage'</span>, 30);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -176,7 +180,7 @@ One can see that the payload has a resonance frequency of \(\omega_0^\prime = 25
|
|||||||
</p>
|
</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><img src="figs/nominal_payload_compliance_dynamics.png" alt="nominal_payload_compliance_dynamics.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb400ca3" class="outline-3">
|
<div id="outline-container-orgd871eaf" class="outline-3">
|
||||||
<h3 id="orgb400ca3"><span class="section-number-3">1.3</span> Initialization of the isolation platform</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
Let’s first fix the mass of the isolation platform:
|
Let’s first fix the mass of the isolation platform:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">m = 10;
|
<pre class="src src-matlab"> m = 10;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -206,15 +210,15 @@ And we generate three isolation platforms:
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd0dd88b" class="outline-3">
|
<div id="outline-container-org28efeb7" class="outline-3">
|
||||||
<h3 id="orgd0dd88b"><span class="section-number-3">1.4</span> Comparison</h3>
|
<h3 id="org28efeb7"><span class="section-number-3">1.4</span> Comparison</h3>
|
||||||
<div class="outline-text-3" id="text-1-4">
|
<div class="outline-text-3" id="text-1-4">
|
||||||
<p>
|
<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>
|
</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><img src="figs/plant_dynamics_uncertainty_payload_variability.png" alt="plant_dynamics_uncertainty_payload_variability.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3f697cc" class="outline-3">
|
<div id="outline-container-org95c8f67" class="outline-3">
|
||||||
<h3 id="org3f697cc"><span class="section-number-3">1.5</span> Conclusion</h3>
|
<h3 id="org95c8f67"><span class="section-number-3">1.5</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-1-5">
|
<div class="outline-text-3" id="text-1-5">
|
||||||
<div class="important">
|
<div class="important" id="orgae2c60b">
|
||||||
<p>
|
<p>
|
||||||
The stiff platform dynamics does not seems to depend on the dynamics of the payload.
|
The stiff platform dynamics does not seems to depend on the dynamics of the payload.
|
||||||
</p>
|
</p>
|
||||||
@ -235,21 +239,21 @@ The stiff platform dynamics does not seems to depend on the dynamics of the payl
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1f8e63e" class="outline-2">
|
<div id="outline-container-org7c75d19" class="outline-2">
|
||||||
<h2 id="org1f8e63e"><span class="section-number-2">2</span> Generalization to arbitrary dynamics</h2>
|
<h2 id="org7c75d19"><span class="section-number-2">2</span> Generalization to arbitrary dynamics</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="org7065358"></a>
|
<a id="org1cfcec8"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgc4fa63e" class="outline-3">
|
<div id="outline-container-org5080024" class="outline-3">
|
||||||
<h3 id="orgc4fa63e"><span class="section-number-3">2.1</span> Introduction</h3>
|
<h3 id="org5080024"><span class="section-number-3">2.1</span> Introduction</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
|
|
||||||
<div class="note">
|
<div class="note" id="org70c39e9">
|
||||||
<p>
|
<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>.
|
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>
|
</p>
|
||||||
@ -257,17 +261,17 @@ Note here that we use the term <i>impedance</i>, however, the mechanical impedan
|
|||||||
</div>
|
</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><img src="figs/general_payload_impedance.png" alt="general_payload_impedance.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>General support</p>
|
<p><span class="figure-number">Figure 4: </span>General support</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/general_payload_with_isolator.png" alt="general_payload_with_isolator.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 5: </span>Mass-Spring-Damper (isolation platform) supporting a general payload</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3367211" class="outline-3">
|
<div id="outline-container-org1b0c4a4" class="outline-3">
|
||||||
<h3 id="org3367211"><span class="section-number-3">2.2</span> Equations of motion</h3>
|
<h3 id="org1b0c4a4"><span class="section-number-3">2.2</span> Equations of motion</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
We have to following equations of motion:
|
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}\).
|
And by eliminating \(F^\prime\), we find the plant dynamics \(G(s) = \frac{x}{F}\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="important">
|
<div class="important" id="org7e9adf1">
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\label{org8b9a6a7}
|
\label{org11f0d43}
|
||||||
\frac{x}{F} = \frac{1}{ms^2 + cs + k + G^\prime(s)}
|
\frac{x}{F} = \frac{1}{ms^2 + cs + k + G^\prime(s)}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
|
|
||||||
@ -308,11 +312,11 @@ We can learn few things about the obtained transfer function:
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge217a33" class="outline-3">
|
<div id="outline-container-org0505562" 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>
|
<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">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
\begin{align*}
|
\begin{align*}
|
||||||
m^\prime s^2 x^\prime &= (x - x^\prime) (c^\prime s + k^\prime) \\
|
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>
|
<p>
|
||||||
By eliminating \(x^\prime\) of the equations, we obtain:
|
By eliminating \(x^\prime\) of the equations, we obtain:
|
||||||
</p>
|
</p>
|
||||||
<div class="important">
|
<div class="important" id="orgb96f8e8">
|
||||||
\begin{equation}
|
\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}
|
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}
|
\end{equation}
|
||||||
@ -343,11 +347,11 @@ And we obtain
|
|||||||
\end{align*}
|
\end{align*}
|
||||||
|
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>Before the resonance frequency \(\omega_0^\prime\), the impedance follows the mass line</li>
|
<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>
|
</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><img src="figs/example_impedance_mass_spring_damper.png" alt="example_impedance_mass_spring_damper.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org0ee44da" class="outline-3">
|
<div id="outline-container-orge0f3a40" class="outline-3">
|
||||||
<h3 id="org0ee44da"><span class="section-number-3">2.4</span> First Analytical analysis</h3>
|
<h3 id="orge0f3a40"><span class="section-number-3">2.4</span> First Analytical analysis</h3>
|
||||||
<div class="outline-text-3" id="text-2-4">
|
<div class="outline-text-3" id="text-2-4">
|
||||||
<p>
|
<p>
|
||||||
To summarize, we consider:
|
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\).
|
Above \(\omega_0^\prime\), we obtain \(|jc^\prime \omega + k| \ll m \omega^2\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="important">
|
<div class="important" id="orgc2589fd">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
@ -430,8 +434,8 @@ When using a soft isolation platform and a stiff payload such that the payload r
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgfe81c1c" class="outline-3">
|
<div id="outline-container-orgc1a00ca" class="outline-3">
|
||||||
<h3 id="orgfe81c1c"><span class="section-number-3">2.5</span> Impedance of the Payload and Dynamical Uncertainty</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-5">
|
||||||
<p>
|
<p>
|
||||||
We model the payload by a mass-spring-damper model with some uncertainty.
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">m0 = 10;
|
<pre class="src src-matlab"> m0 = 10;
|
||||||
c0 = 3e2;
|
c0 = 3e2;
|
||||||
k0 = 5e5;
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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 \]
|
\[ G^\prime(s) = G_0^\prime(s)(1 + w_I^\prime(s)\Delta_I(s)) \quad |\Delta_I(j\omega)| < 1\ \forall \omega \]
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -469,7 +473,7 @@ This could represent <b>unmodelled dynamics</b> or unknown parameters of the pay
|
|||||||
</p>
|
</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><img src="figs/input_uncertainty_set.png" alt="input_uncertainty_set.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 7: </span>Input Multiplicative Uncertainty</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.
|
The parameters are defined below.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">r0 = 0.5;
|
<pre class="src src-matlab"> r0 = 0.5;
|
||||||
tau = 1/(50*2*pi);
|
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;
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -497,7 +501,7 @@ wI = (tau*s + r0)/((tau/rinf)*s + 1);
|
|||||||
We then generate a complex \(\Delta\).
|
We then generate a complex \(\Delta\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -505,16 +509,16 @@ We then generate a complex \(\Delta\).
|
|||||||
We generate the uncertain plant \(G^\prime(s)\).
|
We generate the uncertain plant \(G^\prime(s)\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/payload_impedance_uncertainty.png" alt="payload_impedance_uncertainty.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5e0366d" class="outline-3">
|
<div id="outline-container-org456b213" class="outline-3">
|
||||||
<h3 id="org5e0366d"><span class="section-number-3">2.6</span> Equivalent Inverse Multiplicative Uncertainty</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-6">
|
||||||
<p>
|
<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:
|
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)}\\
|
&= \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*}
|
\end{align*}
|
||||||
|
|
||||||
<div class="important">
|
<div class="important" id="org8137f47">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\frac{x}{F} = G_0(s) (1 + w_{iI}(s) \Delta(s))^{-1}
|
\frac{x}{F} = G_0(s) (1 + w_{iI}(s) \Delta(s))^{-1}
|
||||||
@ -551,7 +555,7 @@ with:
|
|||||||
</div>
|
</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><img src="figs/inverse_uncertainty_set.png" alt="inverse_uncertainty_set.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 9: </span>Inverse Multiplicative Uncertainty</p>
|
<p><span class="figure-number">Figure 9: </span>Inverse Multiplicative Uncertainty</p>
|
||||||
@ -559,14 +563,14 @@ with:
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgcc0c290" class="outline-3">
|
<div id="outline-container-org1d2455c" class="outline-3">
|
||||||
<h3 id="orgcc0c290"><span class="section-number-3">2.7</span> Effect of the Isolation platform Stiffness</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-7">
|
||||||
<p>
|
<p>
|
||||||
Let’s first fix the mass of the isolation platform:
|
Let’s first fix the mass of the isolation platform:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">m = 20;
|
<pre class="src src-matlab"> m = 20;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -583,12 +587,12 @@ And we generate three isolation platforms:
|
|||||||
Soft Isolation Platform:
|
Soft Isolation Platform:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">k_soft = m*(2*pi*5)^2;
|
<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*sqrt(m*k_soft);
|
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);
|
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/(m*s^2 + c_soft*s + k_soft + Gp0);
|
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*G0_soft*wI;
|
wiI_soft = Gp0<span class="org-type">*</span>G0_soft<span class="org-type">*</span>wI;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -596,12 +600,12 @@ wiI_soft = Gp0*G0_soft*wI;
|
|||||||
Mid Isolation Platform
|
Mid Isolation Platform
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">k_mid = m*(2*pi*50)^2;
|
<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*sqrt(m*k_mid);
|
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);
|
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/(m*s^2 + c_mid*s + k_mid + Gp0);
|
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*G0_mid*wI;
|
wiI_mid = Gp0<span class="org-type">*</span>G0_mid<span class="org-type">*</span>wI;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -609,21 +613,21 @@ wiI_mid = Gp0*G0_mid*wI;
|
|||||||
Stiff Isolation Platform
|
Stiff Isolation Platform
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">k_stiff = m*(2*pi*500)^2;
|
<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*sqrt(m*k_stiff);
|
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);
|
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/(m*s^2 + c_stiff*s + k_stiff + Gp0);
|
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*G0_stiff*wI;
|
wiI_stiff = Gp0<span class="org-type">*</span>G0_stiff<span class="org-type">*</span>wI;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/plant_uncertainty_impedance_payload.png" alt="plant_uncertainty_impedance_payload.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1466bd9" class="outline-3">
|
<div id="outline-container-org1321ab2" class="outline-3">
|
||||||
<h3 id="org1466bd9"><span class="section-number-3">2.8</span> Reduce the Uncertainty on the plant</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-8">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4be463f" class="outline-4">
|
<div id="outline-container-org7519de0" class="outline-4">
|
||||||
<h4 id="org4be463f"><span class="section-number-4">2.8.1</span> Effect of the platform’s stiffness \(k\)</h4>
|
<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">
|
<div class="outline-text-4" id="text-2-8-1">
|
||||||
<p>
|
<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\).
|
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>
|
||||||
|
|
||||||
<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>
|
</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><img src="figs/inverse_multiplicative_uncertainty_payload_few_k.png" alt="inverse_multiplicative_uncertainty_payload_few_k.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/inverse_multiplicative_payload_uncertainty_norm_k.png" alt="inverse_multiplicative_payload_uncertainty_norm_k.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<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.
|
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>
|
</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><img src="figs/inverse_multiplicative_payload_uncertainty_k_normalized_frequency.png" alt="inverse_multiplicative_payload_uncertainty_k_normalized_frequency.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4c45fb5" class="outline-4">
|
<div id="outline-container-org2cfe073" class="outline-4">
|
||||||
<h4 id="org4c45fb5"><span class="section-number-4">2.8.2</span> Effect of the platform’s damping \(c\)</h4>
|
<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">
|
<div class="outline-text-4" id="text-2-8-2">
|
||||||
<p>
|
<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>
|
</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><img src="figs/inverse_multiplicative_payload_uncertainty_c.png" alt="inverse_multiplicative_payload_uncertainty_c.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9086831" class="outline-4">
|
<div id="outline-container-org20f04de" class="outline-4">
|
||||||
<h4 id="org9086831"><span class="section-number-4">2.8.3</span> Effect of the platform’s mass \(m\)</h4>
|
<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">
|
<div class="outline-text-4" id="text-2-8-3">
|
||||||
<p>
|
<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>
|
</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><img src="figs/inverse_multiplicative_payload_uncertainty_m.png" alt="inverse_multiplicative_payload_uncertainty_m.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org272e76a" class="outline-3">
|
<div id="outline-container-orgff05731" class="outline-3">
|
||||||
<h3 id="org272e76a"><span class="section-number-3">2.9</span> Conclusion</h3>
|
<h3 id="orgff05731"><span class="section-number-3">2.9</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-9">
|
<div class="outline-text-3" id="text-2-9">
|
||||||
<div class="important">
|
<div class="important" id="orgc7b7116">
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -745,7 +749,7 @@ The best thing to do is to have a stiff isolation platform.
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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.
|
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.
|
In that case, maximizing the stiffness of the payload is a good idea.
|
||||||
</p>
|
</p>
|
||||||
@ -757,7 +761,7 @@ In that case, maximizing the stiffness of the payload is a good idea.
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,64 +1,68 @@
|
|||||||
<?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"
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-05 mar. 10:33 -->
|
<!-- 2021-02-20 sam. 23:08 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<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>
|
<title>Effect of Uncertainty on the support’s dynamics on the isolation platform dynamics</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
<script src="./js/jquery.min.js"></script>
|
<script>
|
||||||
<script src="./js/bootstrap.min.js"></script>
|
MathJax = {
|
||||||
<script src="./js/jquery.stickytableheaders.min.js"></script>
|
svg: {
|
||||||
<script src="./js/readtheorg.js"></script>
|
scale: 1,
|
||||||
<script>MathJax = {
|
fontCache: "global"
|
||||||
|
},
|
||||||
tex: {
|
tex: {
|
||||||
tags: 'ams',
|
tags: "ams",
|
||||||
macros: {bm: ["\\boldsymbol{#1}",1],}
|
multlineWidth: "%MULTLINEWIDTH",
|
||||||
|
tagSide: "right",
|
||||||
|
macros: {bm: ["\\boldsymbol{#1}",1],},
|
||||||
|
tagIndent: ".8em"
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
<script id="MathJax-script" async
|
||||||
|
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="org-div-home-and-up">
|
<div id="org-div-home-and-up">
|
||||||
<a accesskey="h" href="./index.html"> UP </a>
|
<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">
|
</div><div id="content">
|
||||||
<h1 class="title">Effect of Uncertainty on the support’s dynamics on the isolation platform dynamics</h1>
|
<h1 class="title">Effect of Uncertainty on the support’s dynamics on the isolation platform dynamics</h1>
|
||||||
<div id="table-of-contents">
|
<div id="table-of-contents">
|
||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgbe6e0b8">1. Simple Introductory Example</a>
|
<li><a href="#orgb1adbd9">1. Simple Introductory Example</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org3d4902a">1.1. Equations of motion</a></li>
|
<li><a href="#orgf20a63e">1.1. Equations of motion</a></li>
|
||||||
<li><a href="#org8bd2a4a">1.2. Initialization of the support dynamics</a></li>
|
<li><a href="#org7f0c67f">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="#org557badc">1.3. Initialization of the isolation platform</a></li>
|
||||||
<li><a href="#org3bc4ad1">1.4. Comparison</a></li>
|
<li><a href="#org2c66ca0">1.4. Comparison</a></li>
|
||||||
<li><a href="#org999e1c5">1.5. Conclusion</a></li>
|
<li><a href="#org8e2f9eb">1.5. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orge1d3484">2. Generalization to arbitrary dynamics</a>
|
<li><a href="#org60caf30">2. Generalization to arbitrary dynamics</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org3948d1f">2.1. Introduction</a></li>
|
<li><a href="#orgbe4faa1">2.1. Introduction</a></li>
|
||||||
<li><a href="#org18c1c3f">2.2. Equations of motion</a></li>
|
<li><a href="#org49bd260">2.2. Equations of motion</a></li>
|
||||||
<li><a href="#orgc20cabb">2.3. Compliance of the Support</a></li>
|
<li><a href="#orgb277730">2.3. Compliance of the Support</a></li>
|
||||||
<li><a href="#org67810a4">2.4. Equivalent Inverse Multiplicative Uncertainty</a></li>
|
<li><a href="#org9880e78">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="#orgcde9f95">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="#org71a0598">2.6. Reduce the Uncertainty on the plant</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgafebadd">2.6.1. Effect of the platform’s stiffness \(k\)</a></li>
|
<li><a href="#org983db9a">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="#org92a740c">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="#org88d86c4">2.6.3. Effect of the platform’s mass \(m\)</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgde3616e">2.7. Conclusion</a></li>
|
<li><a href="#orgd68af10">2.7. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -82,18 +86,18 @@ The goal is to study:
|
|||||||
Two models are made to study these effects:
|
Two models are made to study these effects:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<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="#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="#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="#org407474d">2</a>, we consider arbitrary support dynamics with multiplicative input uncertainty to study the unmodelled dynamics of the support</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-orgbe6e0b8" class="outline-2">
|
<div id="outline-container-orgb1adbd9" class="outline-2">
|
||||||
<h2 id="orgbe6e0b8"><span class="section-number-2">1</span> Simple Introductory Example</h2>
|
<h2 id="orgb1adbd9"><span class="section-number-2">1</span> Simple Introductory Example</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org232d01f"></a>
|
<a id="org0009692"></a>
|
||||||
</p>
|
</p>
|
||||||
<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>
|
</p>
|
||||||
<ul class="org-ul">
|
<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>
|
<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>
|
</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><img src="figs/2dof_system_stiffness_uncertainty.png" alt="2dof_system_stiffness_uncertainty.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Two degrees-of-freedom system</p>
|
<p><span class="figure-number">Figure 1: </span>Two degrees-of-freedom system</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3d4902a" class="outline-3">
|
<div id="outline-container-orgf20a63e" class="outline-3">
|
||||||
<h3 id="org3d4902a"><span class="section-number-3">1.1</span> Equations of motion</h3>
|
<h3 id="orgf20a63e"><span class="section-number-3">1.1</span> Equations of motion</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
\begin{align}
|
\begin{align}
|
||||||
ms^2 x &= F + (cs + k) (x^\prime - x) \\
|
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:
|
After eliminating \(x^\prime\), we obtain:
|
||||||
</p>
|
</p>
|
||||||
\begin{equation}
|
\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)}
|
\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}
|
\end{equation}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8bd2a4a" class="outline-3">
|
<div id="outline-container-org7f0c67f" class="outline-3">
|
||||||
<h3 id="org8bd2a4a"><span class="section-number-3">1.2</span> Initialization of the support dynamics</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
Let the support have:
|
Let the support have:
|
||||||
@ -146,9 +150,9 @@ Let the support have:
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">mpi = 1e3;
|
<pre class="src src-matlab"> mpi = 1e3;
|
||||||
cpi = 5e4;
|
cpi = 5e4;
|
||||||
kpi = 1e8;
|
kpi = 1e8;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -156,14 +160,14 @@ kpi = 1e8;
|
|||||||
Let’s also consider some uncertainty in those parameters:
|
Let’s also consider some uncertainty in those parameters:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">mp = ureal('m', mpi, '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('c', cpi, 'Percentage', 30);
|
cp = ureal(<span class="org-string">'c'</span>, cpi, <span class="org-string">'Percentage'</span>, 30);
|
||||||
kp = ureal('k', kpi, 'Percentage', 30);
|
kp = ureal(<span class="org-string">'k'</span>, kpi, <span class="org-string">'Percentage'</span>, 30);
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -171,7 +175,7 @@ One can see that support has a resonance frequency of \(\omega_0^\prime = 50\ Hz
|
|||||||
</p>
|
</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><img src="figs/nominal_support_compliance_dynamics.png" alt="nominal_support_compliance_dynamics.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgefb9b71" class="outline-3">
|
<div id="outline-container-org557badc" class="outline-3">
|
||||||
<h3 id="orgefb9b71"><span class="section-number-3">1.3</span> Initialization of the isolation platform</h3>
|
<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">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
Let’s first fix the mass of the payload to be isolated:
|
Let’s first fix the mass of the payload to be isolated:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">m = 100;
|
<pre class="src src-matlab"> m = 100;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -201,15 +205,15 @@ And we generate three isolation platforms:
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3bc4ad1" class="outline-3">
|
<div id="outline-container-org2c66ca0" class="outline-3">
|
||||||
<h3 id="org3bc4ad1"><span class="section-number-3">1.4</span> Comparison</h3>
|
<h3 id="org2c66ca0"><span class="section-number-3">1.4</span> Comparison</h3>
|
||||||
<div class="outline-text-3" id="text-1-4">
|
<div class="outline-text-3" id="text-1-4">
|
||||||
<p>
|
<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>
|
</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><img src="figs/plant_dynamics_uncertainty_stiff_mid_soft.png" alt="plant_dynamics_uncertainty_stiff_mid_soft.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org999e1c5" class="outline-3">
|
<div id="outline-container-org8e2f9eb" class="outline-3">
|
||||||
<h3 id="org999e1c5"><span class="section-number-3">1.5</span> Conclusion</h3>
|
<h3 id="org8e2f9eb"><span class="section-number-3">1.5</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-1-5">
|
<div class="outline-text-3" id="text-1-5">
|
||||||
<div class="important">
|
<div class="important" id="orgc636dcd">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
@ -230,32 +234,32 @@ The soft platform dynamics does not seems to depend on the dynamics of the suppo
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge1d3484" class="outline-2">
|
<div id="outline-container-org60caf30" class="outline-2">
|
||||||
<h2 id="orge1d3484"><span class="section-number-2">2</span> Generalization to arbitrary dynamics</h2>
|
<h2 id="org60caf30"><span class="section-number-2">2</span> Generalization to arbitrary dynamics</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgb01b074"></a>
|
<a id="org407474d"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org3948d1f" class="outline-3">
|
<div id="outline-container-orgbe4faa1" class="outline-3">
|
||||||
<h3 id="org3948d1f"><span class="section-number-3">2.1</span> Introduction</h3>
|
<h3 id="orgbe4faa1"><span class="section-number-3">2.1</span> Introduction</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<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>
|
</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><img src="figs/general_support_compliance.png" alt="general_support_compliance.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>General support</p>
|
<p><span class="figure-number">Figure 4: </span>General support</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/general_support_with_isolator.png" alt="general_support_with_isolator.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 5: </span>Mass-Spring-Damper system on top of a general support</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org18c1c3f" class="outline-3">
|
<div id="outline-container-org49bd260" class="outline-3">
|
||||||
<h3 id="org18c1c3f"><span class="section-number-3">2.2</span> Equations of motion</h3>
|
<h3 id="org49bd260"><span class="section-number-3">2.2</span> Equations of motion</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
We have to following equations of motion:
|
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}\).
|
And by eliminating \(F^\prime\) and \(x^\prime\), we find the plant dynamics \(G(s) = \frac{x}{F}\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="important">
|
<div class="important" id="orgf4990df">
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\frac{x}{F} = \frac{1}{ms^2 + cs + k + ms^2(cs + k)G^\prime(s)} \label{eq:plant_dynamics_general_support}
|
\frac{x}{F} = \frac{1}{ms^2 + cs + k + ms^2(cs + k)G^\prime(s)} \label{eq:plant_dynamics_general_support}
|
||||||
\end{equation}
|
\end{equation}
|
||||||
@ -287,20 +291,20 @@ And by eliminating \(F^\prime\) and \(x^\prime\), we find the plant dynamics \(G
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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} \]
|
\[ \frac{x^\prime}{F^\prime} = \frac{1}{m^\prime s^2 + c^\prime s + k^\prime} \]
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
And we obtain
|
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)} \]
|
\[ \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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc20cabb" class="outline-3">
|
<div id="outline-container-orgb277730" class="outline-3">
|
||||||
<h3 id="orgc20cabb"><span class="section-number-3">2.3</span> Compliance of the Support</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<p>
|
<p>
|
||||||
We model the support by a mass-spring-damper model with some uncertainty.
|
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>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">m0 = 1e3;
|
<pre class="src src-matlab"> m0 = 1e3;
|
||||||
c0 = 5e4;
|
c0 = 5e4;
|
||||||
k0 = 1e8;
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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 \]
|
\[ G^\prime(s) = G_0^\prime(s)(1 + w_I^\prime(s)\Delta_I(s)) \quad |\Delta_I(j\omega)| < 1\ \forall \omega \]
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -330,7 +334,7 @@ This could represent <b>unmodelled dynamics</b> or unknown parameters of the sup
|
|||||||
</p>
|
</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><img src="figs/input_uncertainty_set.png" alt="input_uncertainty_set.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 6: </span>Input Multiplicative Uncertainty</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.
|
The parameters are defined below.
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">r0 = 0.5;
|
<pre class="src src-matlab"> r0 = 0.5;
|
||||||
tau = 1/(100*2*pi);
|
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;
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -358,7 +362,7 @@ wI = (tau*s + r0)/((tau/rinf)*s + 1);
|
|||||||
We then generate a complex \(\Delta\).
|
We then generate a complex \(\Delta\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -366,16 +370,16 @@ We then generate a complex \(\Delta\).
|
|||||||
We generate the uncertain plant \(G^\prime(s)\).
|
We generate the uncertain plant \(G^\prime(s)\).
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/compliance_support_uncertainty.png" alt="compliance_support_uncertainty.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org67810a4" class="outline-3">
|
<div id="outline-container-org9880e78" class="outline-3">
|
||||||
<h3 id="org67810a4"><span class="section-number-3">2.4</span> Equivalent Inverse Multiplicative Uncertainty</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-4">
|
||||||
<p>
|
<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:
|
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)}\\
|
&= \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*}
|
\end{align*}
|
||||||
|
|
||||||
<div class="important">
|
<div class="important" id="org6aceb50">
|
||||||
<p>
|
<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>
|
</p>
|
||||||
\begin{equation}
|
\begin{equation}
|
||||||
\frac{x}{F} = G_0(s) (1 + w_{iI}(s) \Delta(s))^{-1}
|
\frac{x}{F} = G_0(s) (1 + w_{iI}(s) \Delta(s))^{-1}
|
||||||
@ -413,7 +417,7 @@ with:
|
|||||||
</div>
|
</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><img src="figs/inverse_uncertainty_set.png" alt="inverse_uncertainty_set.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 8: </span>Inverse Multiplicative Uncertainty</p>
|
<p><span class="figure-number">Figure 8: </span>Inverse Multiplicative Uncertainty</p>
|
||||||
@ -421,14 +425,14 @@ with:
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge950395" class="outline-3">
|
<div id="outline-container-orgcde9f95" class="outline-3">
|
||||||
<h3 id="orge950395"><span class="section-number-3">2.5</span> Effect of the Isolation platform Stiffness</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-5">
|
||||||
<p>
|
<p>
|
||||||
Let’s first fix the mass of the payload to be isolated:
|
Let’s first fix the mass of the payload to be isolated:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">m = 100;
|
<pre class="src src-matlab"> m = 100;
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -445,12 +449,12 @@ And we generate three isolation platforms:
|
|||||||
Soft Isolation Platform:
|
Soft Isolation Platform:
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">k_soft = m*(2*pi*5)^2;
|
<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*sqrt(m*k_soft);
|
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);
|
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/(m*s^2 + c_soft*s + k_soft + m*s^2*(c_soft*s + k_soft)*Gp0);
|
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*m*s^2*(c_soft*s + k_soft)*G0_soft*wI;
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -458,12 +462,12 @@ wiI_soft = Gp0*m*s^2*(c_soft*s + k_soft)*G0_soft*wI;
|
|||||||
Mid Isolation Platform
|
Mid Isolation Platform
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">k_mid = m*(2*pi*50)^2;
|
<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*sqrt(m*k_mid);
|
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);
|
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/(m*s^2 + c_mid*s + k_mid + m*s^2*(c_mid*s + k_mid)*Gp0);
|
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*m*s^2*(c_mid*s + k_mid)*G0_mid*wI;
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -471,35 +475,35 @@ wiI_mid = Gp0*m*s^2*(c_mid*s + k_mid)*G0_mid*wI;
|
|||||||
Stiff Isolation Platform
|
Stiff Isolation Platform
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">k_stiff = m*(2*pi*500)^2;
|
<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*sqrt(m*k_stiff);
|
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);
|
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/(m*s^2 + c_stiff*s + k_stiff + m*s^2*(c_stiff*s + k_stiff)*Gp0);
|
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*m*s^2*(c_stiff*s + k_stiff)*G0_stiff*wI;
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/plant_uncertainty_stiffness_isolator.png" alt="plant_uncertainty_stiffness_isolator.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6967854" class="outline-3">
|
<div id="outline-container-org71a0598" class="outline-3">
|
||||||
<h3 id="org6967854"><span class="section-number-3">2.6</span> Reduce the Uncertainty on the plant</h3>
|
<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">
|
<div class="outline-text-3" id="text-2-6">
|
||||||
<p>
|
<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.
|
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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgafebadd" class="outline-4">
|
<div id="outline-container-org983db9a" class="outline-4">
|
||||||
<h4 id="orgafebadd"><span class="section-number-4">2.6.1</span> Effect of the platform’s stiffness \(k\)</h4>
|
<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">
|
<div class="outline-text-4" id="text-2-6-1">
|
||||||
<p>
|
<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\).
|
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>
|
||||||
|
|
||||||
<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>
|
</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><img src="figs/inverse_multiplicative_uncertainty_norm_few_k.png" alt="inverse_multiplicative_uncertainty_norm_few_k.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<p>
|
<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>
|
</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><img src="figs/inverse_multiplicative_uncertainty_norm_k.png" alt="inverse_multiplicative_uncertainty_norm_k.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<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.
|
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>
|
</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><img src="figs/inverse_multiplicative_uncertainty_k_normalized_frequency.png" alt="inverse_multiplicative_uncertainty_k_normalized_frequency.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd9a82cb" class="outline-4">
|
<div id="outline-container-org92a740c" class="outline-4">
|
||||||
<h4 id="orgd9a82cb"><span class="section-number-4">2.6.2</span> Effect of the platform’s damping \(c\)</h4>
|
<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">
|
<div class="outline-text-4" id="text-2-6-2">
|
||||||
<p>
|
<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>
|
</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><img src="figs/inverse_multiplicative_uncertainty_norm_c.png" alt="inverse_multiplicative_uncertainty_norm_c.png" />
|
||||||
</p>
|
</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>
|
<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>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-orgd2fc303" class="outline-4">
|
<div id="outline-container-org88d86c4" class="outline-4">
|
||||||
<h4 id="orgd2fc303"><span class="section-number-4">2.6.3</span> Effect of the platform’s mass \(m\)</h4>
|
<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">
|
<div class="outline-text-4" id="text-2-6-3">
|
||||||
<p>
|
<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>
|
</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><img src="figs/inverse_multiplicative_uncertainty_norm_m.png" alt="inverse_multiplicative_uncertainty_norm_m.png" />
|
||||||
</p>
|
</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>
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgde3616e" class="outline-3">
|
<div id="outline-container-orgd68af10" class="outline-3">
|
||||||
<h3 id="orgde3616e"><span class="section-number-3">2.7</span> Conclusion</h3>
|
<h3 id="orgd68af10"><span class="section-number-3">2.7</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-7">
|
<div class="outline-text-3" id="text-2-7">
|
||||||
<div class="important">
|
<div class="important" id="orgcdbfc6b">
|
||||||
<p>
|
<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:
|
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>
|
</p>
|
||||||
@ -629,7 +633,7 @@ Thus, if a stiff isolation platform is used, the recommendation is to have the l
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<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>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
1036
docs/uniaxial.html
1036
docs/uniaxial.html
File diff suppressed because it is too large
Load Diff
@ -4,15 +4,11 @@
|
|||||||
#+EMAIL: dehaeze.thomas@gmail.com
|
#+EMAIL: dehaeze.thomas@gmail.com
|
||||||
#+AUTHOR: Dehaeze Thomas
|
#+AUTHOR: Dehaeze Thomas
|
||||||
|
|
||||||
#+HTML_LINK_HOME: ./index.html
|
#+HTML_LINK_HOME: ../../index.html
|
||||||
#+HTML_LINK_UP: ./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="https://research.tdehaeze.xyz/css/style.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||||
#+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>
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:matlab :session *MATLAB*
|
#+PROPERTY: header-args:matlab :session *MATLAB*
|
||||||
#+PROPERTY: header-args:matlab+ :comments org
|
#+PROPERTY: header-args:matlab+ :comments org
|
||||||
@ -29,8 +25,11 @@
|
|||||||
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
|
||||||
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
|
||||||
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
|
#+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+ :eval no-export
|
||||||
#+PROPERTY: header-args:latex+ :exports results
|
#+PROPERTY: header-args:latex+ :exports results
|
||||||
#+PROPERTY: header-args:latex+ :mkdirp yes
|
#+PROPERTY: header-args:latex+ :mkdirp yes
|
||||||
#+PROPERTY: header-args:latex+ :output-dir figs
|
#+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