2019-10-08 11:13:38 +02:00
<?xml version="1.0" encoding="utf-8"?>
2020-01-15 16:23:40 +01:00
<?xml version="1.0" encoding="utf-8"?>
2019-10-08 11:13:38 +02:00
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en" xml:lang = "en" >
< head >
2020-02-04 18:36:27 +01:00
<!-- 2020 - 02 - 04 mar. 18:36 -->
2019-10-08 11:13:38 +02:00
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" / >
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
2020-01-15 16:23:40 +01:00
< title > Active Damping applied on the Simscape Model< / title >
2019-10-08 11:13:38 +02:00
< meta name = "generator" content = "Org mode" / >
< meta name = "author" content = "Dehaeze Thomas" / >
< style type = "text/css" >
<!-- /* --> <![CDATA[/*> <!-- */
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: visible;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
pre.src:hover:before { display: inline;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { width: 90%; }
/*]]>*/-->
< / style >
< link rel = "stylesheet" type = "text/css" href = "../css/htmlize.css" / >
< link rel = "stylesheet" type = "text/css" href = "../css/readtheorg.css" / >
< link rel = "stylesheet" type = "text/css" href = "../css/zenburn.css" / >
< script type = "text/javascript" src = "../js/jquery.min.js" > < / script >
< script type = "text/javascript" src = "../js/bootstrap.min.js" > < / script >
< script type = "text/javascript" src = "../js/jquery.stickytableheaders.min.js" > < / script >
< script type = "text/javascript" src = "../js/readtheorg.js" > < / script >
< script type = "text/javascript" >
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
2020-01-15 16:23:40 +01:00
Copyright (C) 2012-2020 Free Software Foundation, Inc.
2019-10-08 11:13:38 +02:00
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
<!-- /* --> <![CDATA[/*> <!-- */
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
< / script >
2020-02-04 16:13:52 +01:00
< script >
MathJax = {
tex: { macros: {
bm: ["\\boldsymbol{#1}",1],
}
}
};
< / script >
< script type = "text/javascript"
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">< / script >
2019-10-08 11:13:38 +02:00
< / head >
< body >
< div id = "org-div-home-and-up" >
< a accesskey = "h" href = "../index.html" > UP < / a >
|
< a accesskey = "H" href = "../index.html" > HOME < / a >
< / div > < div id = "content" >
2020-01-15 16:23:40 +01:00
< h1 class = "title" > Active Damping applied on the Simscape Model< / h1 >
2019-10-18 17:34:45 +02:00
< div id = "table-of-contents" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" >
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orge38dc41" > 1. Undamped System< / a >
2020-01-15 16:23:40 +01:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgfe46f8d" > 1.1. Identification of the dynamics for Active Damping< / a >
2020-01-15 16:23:40 +01:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org81e8b6b" > 1.1.1. Initialize the Simulation< / a > < / li >
< li > < a href = "#orge588adf" > 1.1.2. Identification< / a > < / li >
< li > < a href = "#orgc9dbe8a" > 1.1.3. Obtained Plants for Active Damping< / a > < / li >
2020-01-15 16:23:40 +01:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org5968503" > 1.2. Tomography Experiment< / a >
2019-10-18 17:34:45 +02:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orga4d757a" > 1.2.1. Simulation< / a > < / li >
< li > < a href = "#org022eb42" > 1.2.2. Results< / a > < / li >
2020-01-15 16:23:40 +01:00
< / ul >
< / li >
2019-10-18 17:34:45 +02:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org0f09fb7" > 2. Variability of the system dynamics for Active Damping< / a >
2019-10-18 17:34:45 +02:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org7d1216f" > 2.1. Variation of the Sample Mass< / a > < / li >
< li > < a href = "#orgefcc404" > 2.2. Variation of the Spindle Angle< / a > < / li >
< li > < a href = "#org6b6512f" > 2.3. Variation of the Spindle Rotation Speed< / a >
2019-10-18 17:34:45 +02:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgcb0026a" > 2.3.1. Dynamics of the Active Damping plants< / a > < / li >
< li > < a href = "#org3e67ebf" > 2.3.2. Variation of the poles and zeros with the Spindle rotation frequency< / a > < / li >
2019-10-18 17:34:45 +02:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgae83ea9" > 2.4. Variation of the Tilt Angle< / a > < / li >
< li > < a href = "#org820f283" > 2.5. Scans of the Translation Stage< / a > < / li >
< li > < a href = "#org2a320da" > 2.6. Conclusion< / a > < / li >
2019-10-18 17:34:45 +02:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgf40cd5d" > 3. Integral Force Feedback< / a >
2019-10-18 17:34:45 +02:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org37e851b" > 3.1. Control Design< / a >
2019-10-18 17:34:45 +02:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org9527b91" > 3.1.1. Plant< / a > < / li >
< li > < a href = "#orgaf2107d" > 3.1.2. Control Design< / a > < / li >
< li > < a href = "#orgda71287" > 3.1.3. Diagonal Controller< / a > < / li >
2019-10-18 17:34:45 +02:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgb6a41c1" > 3.2. Tomography Experiment< / a >
2020-01-15 16:23:40 +01:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orge7249b4" > 3.2.1. Simulation with IFF Controller< / a > < / li >
< li > < a href = "#org9cea843" > 3.2.2. Simulation with IFF Controller with added High Pass Filter< / a > < / li >
< li > < a href = "#orgf849116" > 3.2.3. Compare with Undamped system< / a > < / li >
2019-10-18 17:34:45 +02:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org129c64d" > 3.3. Conclusion< / a > < / li >
2020-01-15 16:23:40 +01:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgacb9f23" > 4. Direct Velocity Feedback< / a >
2020-01-15 16:23:40 +01:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org854417d" > 4.1. Control Design< / a >
2019-10-18 17:34:45 +02:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org04e2849" > 4.1.1. Plant< / a > < / li >
< li > < a href = "#org86c402c" > 4.1.2. Control Design< / a > < / li >
< li > < a href = "#org8838542" > 4.1.3. Diagonal Controller< / a > < / li >
2020-01-15 16:23:40 +01:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org140680b" > 4.2. Tomography Experiment< / a >
2019-10-18 17:34:45 +02:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgd23c979" > 4.2.1. Initialize the Simulation< / a > < / li >
< li > < a href = "#org296fb8f" > 4.2.2. Simulation< / a > < / li >
< li > < a href = "#org75c6b14" > 4.2.3. Compare with Undamped system< / a > < / li >
2019-10-18 17:34:45 +02:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgb12c863" > 4.3. Conclusion< / a > < / li >
2019-10-18 17:34:45 +02:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgd484f13" > 5. Inertial Control< / a >
2020-01-15 16:23:40 +01:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org54817e6" > 5.1. Control Design< / a >
2020-02-04 16:13:52 +01:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgfbfdca8" > 5.1.1. Plant< / a > < / li >
< li > < a href = "#org46462ae" > 5.1.2. Control Design< / a > < / li >
< li > < a href = "#org5fa6fb8" > 5.1.3. Diagonal Controller< / a > < / li >
2020-01-21 17:28:49 +01:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgee629bc" > 5.2. Tomography Experiment< / a >
2020-01-15 16:23:40 +01:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org64edd33" > 5.2.1. Initialize the Simulation< / a > < / li >
< li > < a href = "#orgb8f7cfa" > 5.2.2. Simulation< / a > < / li >
< li > < a href = "#orgdd17f5e" > 5.2.3. Compare with Undamped system< / a > < / li >
2020-02-04 16:13:52 +01:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org828f5d0" > 5.3. Conclusion< / a > < / li >
2020-02-04 16:13:52 +01:00
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgd396d6d" > 6. Comparison< / a >
2020-02-04 16:13:52 +01:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org9fccb86" > 6.1. Load the plants< / a > < / li >
< li > < a href = "#org74542bd" > 6.2. Sensitivity to Disturbance< / a > < / li >
< li > < a href = "#orga3dba99" > 6.3. Damped Plant< / a > < / li >
< li > < a href = "#org26b5412" > 6.4. Tomography Experiment< / a >
2020-01-21 17:28:49 +01:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgd29205c" > 6.4.1. Load the Simulation Data< / a > < / li >
< li > < a href = "#org4c12081" > 6.4.2. Frequency Domain Analysis< / a > < / li >
2020-01-15 16:23:40 +01:00
< / ul >
< / li >
< / ul >
< / li >
2020-02-04 18:36:27 +01:00
< li > < a href = "#org5109fa0" > 7. Useful Functions< / a >
2020-01-15 16:23:40 +01:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgd43b7ab" > 7.1. prepareTomographyExperiment< / a >
2019-10-18 17:34:45 +02:00
< ul >
2020-02-04 18:36:27 +01:00
< li > < a href = "#orgc94c0d8" > Function Description< / a > < / li >
< li > < a href = "#org2bd426a" > Optional Parameters< / a > < / li >
< li > < a href = "#org81bafa2" > Initialize the Simulation< / a > < / li >
2020-01-15 16:23:40 +01:00
< / ul >
< / li >
2019-10-18 17:34:45 +02:00
< / ul >
< / li >
< / ul >
< / div >
< / div >
< p >
2020-02-04 18:36:27 +01:00
First, in section < a href = "#orga43eb04" > 1< / a > , we will looked at the undamped system.
2019-10-18 17:34:45 +02:00
< / p >
< p >
Then, we will compare three active damping techniques:
< / p >
< ul class = "org-ul" >
2020-02-04 18:36:27 +01:00
< li > In section < a href = "#orgff26a4d" > 3< / a > : the integral force feedback is used< / li >
< li > In section < a href = "#orgfac8523" > 4< / a > : the direct velocity feedback is used< / li >
< li > In section < a href = "#orgb012d0b" > 5< / a > : inertial control is used< / li >
2019-10-18 17:34:45 +02:00
< / ul >
< p >
For each of the active damping technique, we will:
< / p >
< ul class = "org-ul" >
< li > Look at the damped plant< / li >
2020-01-15 16:23:40 +01:00
< li > Simulate tomography experiments< / li >
< li > Compare the sensitivity from disturbances< / li >
2019-10-18 17:34:45 +02:00
< / ul >
< p >
The disturbances are:
< / p >
< ul class = "org-ul" >
< li > Ground motion< / li >
< li > Motion errors of all the stages< / li >
< / ul >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orge38dc41" class = "outline-2" >
< h2 id = "orge38dc41" > < span class = "section-number-2" > 1< / span > Undamped System< / h2 >
2019-10-18 17:34:45 +02:00
< div class = "outline-text-2" id = "text-1" >
< p >
2020-02-04 18:36:27 +01:00
< a id = "orga43eb04" > < / a >
2019-10-18 17:34:45 +02:00
< / p >
< p >
2020-02-04 18:36:27 +01:00
In this section, we identify the dynamic of the system from forces applied in the nano-hexapod legs to the various sensors included in the nano-hexapod that could be use for Active Damping, namely:
< / p >
< ul class = "org-ul" >
< li > A relative motion sensor, measuring the relative displacement of each of the leg< / li >
< li > A force sensor measuring the total force transmitted to the top part of the leg in the direction of the leg< / li >
< li > A absolute velocity sensor measuring the absolute velocity of the top part of the leg in the direction of the leg< / li >
< / ul >
< p >
After that, a tomography experiment is simulation without any active damping techniques.
2019-10-18 17:34:45 +02:00
< / p >
< / div >
2019-10-25 16:02:23 +02:00
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgfe46f8d" class = "outline-3" >
< h3 id = "orgfe46f8d" > < span class = "section-number-3" > 1.1< / span > Identification of the dynamics for Active Damping< / h3 >
2019-10-18 17:34:45 +02:00
< div class = "outline-text-3" id = "text-1-1" >
2020-01-15 16:23:40 +01:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org81e8b6b" class = "outline-4" >
< h4 id = "org81e8b6b" > < span class = "section-number-4" > 1.1.1< / span > Initialize the Simulation< / h4 >
2020-01-15 16:23:40 +01:00
< div class = "outline-text-4" id = "text-1-1-1" >
2019-10-18 17:34:45 +02:00
< p >
We initialize all the stages with the default parameters.
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > initializeNanoHexapod(< span class = "org-string" > 'actuator'< / span > , < span class = "org-string" > 'piezo'< / span > );
initializeSample(< span class = "org-string" > 'mass'< / span > , 50);
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
We set the references to zero.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-02-04 16:13:52 +01:00
< pre class = "src src-matlab" > initializeReferences();
< / pre >
< / div >
2020-02-04 18:36:27 +01:00
< p >
No disturbance is included in the system.
< / p >
2020-02-04 16:13:52 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeDisturbances(< span class = "org-string" > 'enable'< / span > , < span class = "org-constant" > false< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
2019-10-25 16:02:23 +02:00
< p >
2020-01-15 16:23:40 +01:00
And all the controllers are set to 0.
2019-10-25 16:02:23 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > K = tf(zeros(6));
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K'< / span > , < span class = "org-string" > '-append'< / span > );
K_ine = tf(zeros(6));
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K_ine'< / span > , < span class = "org-string" > '-append'< / span > );
K_iff = tf(zeros(6));
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K_iff'< / span > , < span class = "org-string" > '-append'< / span > );
K_dvf = tf(zeros(6));
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K_dvf'< / span > , < span class = "org-string" > '-append'< / span > );
2019-10-25 16:02:23 +02:00
< / pre >
< / div >
2019-10-18 17:34:45 +02:00
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orge588adf" class = "outline-4" >
< h4 id = "orge588adf" > < span class = "section-number-4" > 1.1.2< / span > Identification< / h4 >
2020-01-15 16:23:40 +01:00
< div class = "outline-text-4" id = "text-1-1-2" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
First, we identify the dynamics of the system using the < code > linearize< / code > function.
2019-10-18 17:34:45 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Options for Linearized< / span > < / span >
options = linearizeOptions;
options.SampleTime = 0;
< span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Name of the Simulink File< / span > < / span >
mdl = < span class = "org-string" > 'sim_nass_active_damping'< / span > ;
< span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Input/Output definition< / span > < / span >
clear io; io_i = 1;
2020-02-04 18:36:27 +01:00
io(io_i) = linio([mdl, < span class = "org-string" > '/Fnl'< / span > ], 1, < span class = "org-string" > 'openinput'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Actuator Inputs< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/Micro-Station'< / span > ], 3, < span class = "org-string" > 'openoutput'< / span > , [], < span class = "org-string" > 'Dnlm'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Relative Motion Outputs< / span >
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" > 'Vlm'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Absolute Velocity Outputs< / span >
io(io_i) = linio([mdl, < span class = "org-string" > '/Compute Error in NASS base'< / span > ], 2, < span class = "org-string" > 'openoutput'< / span > ); io_i = io_i < span class = "org-type" > +< / span > 1; < span class = "org-comment" > % Metrology Outputs< / span >
2020-01-15 16:23:40 +01:00
< span class = "org-matlab-cellbreak" > < span class = "org-comment" > %% Run the linearization< / span > < / span >
2020-02-04 16:13:52 +01:00
G = linearize(mdl, io, 0.5, options);
2020-01-15 16:23:40 +01:00
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" > 'Dnlm1'< / span > , < span class = "org-string" > 'Dnlm2'< / span > , < span class = "org-string" > 'Dnlm3'< / span > , < span class = "org-string" > 'Dnlm4'< / span > , < span class = "org-string" > 'Dnlm5'< / span > , < span class = "org-string" > 'Dnlm6'< / span > , ...
< span class = "org-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 > , ...
2020-02-04 18:36:27 +01:00
< span class = "org-string" > 'Vnlm1'< / span > , < span class = "org-string" > 'Vnlm2'< / span > , < span class = "org-string" > 'Vnlm3'< / span > , < span class = "org-string" > 'Vnlm4'< / span > , < span class = "org-string" > 'Vnlm5'< / span > , < span class = "org-string" > 'Vnlm6'< / span > , ...
< span class = "org-string" > 'Dxn'< / span > , < span class = "org-string" > 'Dyn'< / span > , < span class = "org-string" > 'Dzn'< / span > , < span class = "org-string" > 'Rxn'< / span > , < span class = "org-string" > 'Ryn'< / span > , < span class = "org-string" > 'Rzn'< / span > };
2020-01-15 16:23:40 +01:00
< / pre >
2019-10-18 17:34:45 +02:00
< / div >
2019-10-25 16:02:23 +02:00
2020-01-15 16:23:40 +01:00
< p >
We then create transfer functions corresponding to the active damping plants.
2019-10-25 16:02:23 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > G_iff = minreal(G({< span class = "org-string" > 'Fnlm1'< / span > , < span class = "org-string" > 'Fnlm2'< / span > , < span class = "org-string" > 'Fnlm3'< / span > , < span class = "org-string" > 'Fnlm4'< / span > , < span class = "org-string" > 'Fnlm5'< / span > , < span class = "org-string" > 'Fnlm6'< / span > }, {< span class = "org-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 = minreal(G({< span class = "org-string" > 'Dnlm1'< / span > , < span class = "org-string" > 'Dnlm2'< / span > , < span class = "org-string" > 'Dnlm3'< / span > , < span class = "org-string" > 'Dnlm4'< / span > , < span class = "org-string" > 'Dnlm5'< / span > , < span class = "org-string" > 'Dnlm6'< / span > }, {< span class = "org-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_ine = minreal(G({< span class = "org-string" > 'Vnlm1'< / span > , < span class = "org-string" > 'Vnlm2'< / span > , < span class = "org-string" > 'Vnlm3'< / span > , < span class = "org-string" > 'Vnlm4'< / span > , < span class = "org-string" > 'Vnlm5'< / span > , < span class = "org-string" > 'Vnlm6'< / span > }, {< 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 > }));
< / pre >
2019-10-18 17:34:45 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > 'mat/stages.mat'< / span > , < span class = "org-string" > 'nano_hexapod'< / span > );
G_cart = minreal(G({< span class = "org-string" > 'Dxn'< / span > , < span class = "org-string" > 'Dyn'< / span > , < span class = "org-string" > 'Dzn'< / span > , < span class = "org-string" > 'Rxn'< / span > , < span class = "org-string" > 'Ryn'< / span > , < span class = "org-string" > 'Rzn'< / span > }, {< 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 > }))< span class = "org-type" > *< / span > inv(nano_hexapod.J< span class = "org-type" > '< / span > );
G_cart.InputName = {< span class = "org-string" > 'Fnx'< / span > , < span class = "org-string" > 'Fny'< / span > , < span class = "org-string" > 'Fnz'< / span > , < span class = "org-string" > 'Mnx'< / span > , < span class = "org-string" > 'Mny'< / span > , < span class = "org-string" > 'Mnz'< / span > };
< / pre >
< / div >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
And we save them for further analysis.
2019-10-18 17:34:45 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > save(< span class = "org-string" > './active_damping/mat/undamped_plants.mat'< / span > , < span class = "org-string" > 'G_iff'< / span > , < span class = "org-string" > 'G_dvf'< / span > , < span class = "org-string" > 'G_ine'< / span > );
2020-02-04 18:36:27 +01:00
save(< span class = "org-string" > './active_damping/mat/cart_plants.mat'< / span > , < span class = "org-string" > 'G_cart'< / span > );
2020-01-15 16:23:40 +01:00
< / pre >
2019-10-18 17:34:45 +02:00
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgc9dbe8a" class = "outline-4" >
< h4 id = "orgc9dbe8a" > < span class = "section-number-4" > 1.1.3< / span > Obtained Plants for Active Damping< / h4 >
2020-01-15 16:23:40 +01:00
< div class = "outline-text-4" id = "text-1-1-3" >
2020-01-21 17:28:49 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/undamped_plants.mat'< / span > , < span class = "org-string" > 'G_iff'< / span > , < span class = "org-string" > 'G_dvf'< / span > , < span class = "org-string" > 'G_ine'< / span > );
< / pre >
< / div >
2019-10-25 16:02:23 +02:00
2020-01-21 17:28:49 +01:00
2020-02-04 18:36:27 +01:00
< div id = "orgcdc7644" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/nass_active_damping_iff_plant.png" alt = "nass_active_damping_iff_plant.png" / >
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 18:36:27 +01:00
< p > < span class = "figure-number" > Figure 1: < / span > < code > G_iff< / code > : Transfer functions from forces applied in the actuators to the force sensor in each actuator (< a href = "./figs/nass_active_damping_iff_plant.png" > png< / a > , < a href = "./figs/nass_active_damping_iff_plant.pdf" > pdf< / a > )< / p >
2019-10-18 17:34:45 +02:00
< / div >
2019-10-25 16:02:23 +02:00
2019-10-18 17:34:45 +02:00
2020-02-04 18:36:27 +01:00
< div id = "org3ef4e3d" class = "figure" >
< p > < img src = "figs/nass_active_damping_dvf_plant.png" alt = "nass_active_damping_dvf_plant.png" / >
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 18:36:27 +01:00
< p > < span class = "figure-number" > Figure 2: < / span > < code > G_dvf< / code > : Transfer functions from forces applied in the actuators to the relative motion sensor in each actuator (< a href = "./figs/nass_active_damping_dvf_plant.png" > png< / a > , < a href = "./figs/nass_active_damping_dvf_plant.pdf" > pdf< / a > )< / p >
2019-10-18 17:34:45 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org5918410" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/nass_active_damping_inertial_plant.png" alt = "nass_active_damping_inertial_plant.png" / >
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 18:36:27 +01:00
< p > < span class = "figure-number" > Figure 3: < / span > < code > G_ine< / code > : Transfer functions from forces applied in the actuators to the geophone located in each leg measuring the absolute velocity of the top part of the leg in the direction of the leg (< a href = "./figs/nass_active_damping_inertial_plant.png" > png< / a > , < a href = "./figs/nass_active_damping_inertial_plant.pdf" > pdf< / a > )< / p >
2020-01-15 16:23:40 +01:00
< / div >
< / div >
< / div >
< / div >
2019-10-18 17:34:45 +02:00
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org5968503" class = "outline-3" >
< h3 id = "org5968503" > < span class = "section-number-3" > 1.2< / span > Tomography Experiment< / h3 >
2020-01-15 16:23:40 +01:00
< div class = "outline-text-3" id = "text-1-2" >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orga4d757a" class = "outline-4" >
< h4 id = "orga4d757a" > < span class = "section-number-4" > 1.2.1< / span > Simulation< / h4 >
2020-01-15 16:23:40 +01:00
< div class = "outline-text-4" id = "text-1-2-1" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
We initialize elements for the tomography experiment.
2019-10-18 17:34:45 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > prepareTomographyExperiment();
< / pre >
2019-10-18 17:34:45 +02:00
< / div >
< p >
2020-01-15 16:23:40 +01:00
We change the simulation stop time.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > 'mat/conf_simscape.mat'< / span > );
< span class = "org-matlab-simulink-keyword" > set_param< / span > (< span class = "org-variable-name" > conf_simscape< / span > , < span class = "org-string" > 'StopTime'< / span > , < span class = "org-string" > '3'< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
And we simulate the system.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > < span class = "org-matlab-simulink-keyword" > sim< / span > (< span class = "org-string" > 'sim_nass_active_damping'< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
Finally, we save the simulation results for further analysis
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > save(< span class = "org-string" > './active_damping/mat/tomo_exp.mat'< / span > , < span class = "org-string" > 'En'< / span > , < span class = "org-string" > 'Eg'< / span > , < span class = "org-string" > '-append'< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
2020-01-15 16:23:40 +01:00
< / div >
< / div >
2019-10-18 17:34:45 +02:00
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org022eb42" class = "outline-4" >
< h4 id = "org022eb42" > < span class = "section-number-4" > 1.2.2< / span > Results< / h4 >
2020-01-15 16:23:40 +01:00
< div class = "outline-text-4" id = "text-1-2-2" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
We load the results of tomography experiments.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/tomo_exp.mat'< / span > , < span class = "org-string" > 'En'< / span > );
t = linspace(0, 3, length(En(< span class = "org-type" > :< / span > ,1)));
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orgaf1dcaa" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/nass_act_damp_undamped_sim_tomo_trans.png" alt = "nass_act_damp_undamped_sim_tomo_trans.png" / >
2019-10-18 17:34:45 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< p > < span class = "figure-number" > Figure 4: < / span > Position Error during tomography experiment - Translations (< a href = "./figs/nass_act_damp_undamped_sim_tomo_trans.png" > png< / a > , < a href = "./figs/nass_act_damp_undamped_sim_tomo_trans.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orga83f1ae" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/nass_act_damp_undamped_sim_tomo_rot.png" alt = "nass_act_damp_undamped_sim_tomo_rot.png" / >
< / p >
< p > < span class = "figure-number" > Figure 5: < / span > Position Error during tomography experiment - Rotations (< a href = "./figs/nass_act_damp_undamped_sim_tomo_rot.png" > png< / a > , < a href = "./figs/nass_act_damp_undamped_sim_tomo_rot.pdf" > pdf< / a > )< / p >
< / div >
2019-10-18 17:34:45 +02:00
< / div >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org0f09fb7" class = "outline-2" >
< h2 id = "org0f09fb7" > < span class = "section-number-2" > 2< / span > Variability of the system dynamics for Active Damping< / h2 >
2020-01-15 16:23:40 +01:00
< div class = "outline-text-2" id = "text-2" >
2019-10-18 17:34:45 +02:00
< p >
2020-02-04 18:36:27 +01:00
< a id = "org8c7a8a2" > < / a >
2020-02-04 16:13:52 +01:00
< / p >
< p >
The goal of this section is to study how the dynamics of the Active Damping plants are changing with the experimental conditions.
These experimental conditions are:
< / p >
< ul class = "org-ul" >
2020-02-04 18:36:27 +01:00
< li > The mass of the sample (section < a href = "#orgea2a5b5" > 2.1< / a > )< / li >
< li > The spindle angle with a null rotating speed (section < a href = "#orgcc30ae4" > 2.2< / a > )< / li >
< li > The spindle rotation speed (section < a href = "#orgc782fc8" > 2.3< / a > )< / li >
< li > The tilt angle (section < a href = "#orgeff482d" > 2.4< / a > )< / li >
< li > The scans of the translation stage (section < a href = "#org128a30a" > 2.5< / a > )< / li >
2020-02-04 16:13:52 +01:00
< / ul >
< p >
For the identification of the dynamics, the system is simulation for \(\approx 0.5s\) before the linearization is performed.
This is done in order for the transient phase to be over.
< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org7d1216f" class = "outline-3" >
< h3 id = "org7d1216f" > < span class = "section-number-3" > 2.1< / span > Variation of the Sample Mass< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-2-1" >
< p >
2020-02-04 18:36:27 +01:00
< a id = "orgea2a5b5" > < / a >
2020-02-04 16:13:52 +01:00
< / p >
< p >
For all the identifications, the disturbances are disabled and no controller are used.
< / p >
< p >
We identify the dynamics for the following sample mass.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > masses = [1, 10, 50]; < span class = "org-comment" > % [kg]< / span >
< / pre >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org31adf6f" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_iff_sample_mass.png" alt = "act_damp_variability_iff_sample_mass.png" / >
< / p >
< p > < span class = "figure-number" > Figure 6: < / span > Variability of the IFF plant with the Sample Mass (< a href = "./figs/act_damp_variability_iff_sample_mass.png" > png< / a > , < a href = "./figs/act_damp_variability_iff_sample_mass.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org68418b7" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_dvf_sample_mass.png" alt = "act_damp_variability_dvf_sample_mass.png" / >
< / p >
< p > < span class = "figure-number" > Figure 7: < / span > Variability of the DVF plant with the Sample Mass (< a href = "./figs/act_damp_variability_dvf_sample_mass.png" > png< / a > , < a href = "./figs/act_damp_variability_dvf_sample_mass.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org469b519" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_ine_sample_mass.png" alt = "act_damp_variability_ine_sample_mass.png" / >
< / p >
< p > < span class = "figure-number" > Figure 8: < / span > Variability of the Inertial plant with the Sample Mass (< a href = "./figs/act_damp_variability_ine_sample_mass.png" > png< / a > , < a href = "./figs/act_damp_variability_ine_sample_mass.pdf" > pdf< / a > )< / p >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgefcc404" class = "outline-3" >
< h3 id = "orgefcc404" > < span class = "section-number-3" > 2.2< / span > Variation of the Spindle Angle< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-2-2" >
< p >
2020-02-04 18:36:27 +01:00
< a id = "orgcc30ae4" > < / a >
2020-02-04 16:13:52 +01:00
< / p >
< p >
We identify the dynamics for the following Spindle angles.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Rz_amplitudes = [0, < span class = "org-constant" > pi< / span > < span class = "org-type" > /< / span > 4, < span class = "org-constant" > pi< / span > < span class = "org-type" > /< / span > 2, < span class = "org-constant" > pi< / span > ]; < span class = "org-comment" > % [rad]< / span >
< / pre >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org0660d6a" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_iff_spindle_angle.png" alt = "act_damp_variability_iff_spindle_angle.png" / >
< / p >
< p > < span class = "figure-number" > Figure 9: < / span > Variability of the IFF plant with the Spindle Angle (< a href = "./figs/act_damp_variability_iff_spindle_angle.png" > png< / a > , < a href = "./figs/act_damp_variability_iff_spindle_angle.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org904798f" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_dvf_spindle_angle.png" alt = "act_damp_variability_dvf_spindle_angle.png" / >
< / p >
< p > < span class = "figure-number" > Figure 10: < / span > Variability of the DVF plant with the Spindle Angle (< a href = "./figs/act_damp_variability_dvf_spindle_angle.png" > png< / a > , < a href = "./figs/act_damp_variability_dvf_spindle_angle.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orgeedc183" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_ine_spindle_angle.png" alt = "act_damp_variability_ine_spindle_angle.png" / >
< / p >
< p > < span class = "figure-number" > Figure 11: < / span > Variability of the Inertial plant with the Spindle Angle (< a href = "./figs/act_damp_variability_ine_spindle_angle.png" > png< / a > , < a href = "./figs/act_damp_variability_ine_spindle_angle.pdf" > pdf< / a > )< / p >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org6b6512f" class = "outline-3" >
< h3 id = "org6b6512f" > < span class = "section-number-3" > 2.3< / span > Variation of the Spindle Rotation Speed< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-2-3" >
< p >
2020-02-04 18:36:27 +01:00
< a id = "orgc782fc8" > < / a >
2020-02-04 16:13:52 +01:00
< / p >
< p >
We identify the dynamics for the following Spindle rotation periods.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Rz_periods = [60, 6, 2, 1]; < span class = "org-comment" > % [s]< / span >
< / pre >
< / div >
< p >
The identification of the dynamics is done at the same Spindle angle position.
< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgcb0026a" class = "outline-4" >
< h4 id = "orgcb0026a" > < span class = "section-number-4" > 2.3.1< / span > Dynamics of the Active Damping plants< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-2-3-1" >
2020-02-04 18:36:27 +01:00
< div id = "org1013738" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_iff_spindle_speed.png" alt = "act_damp_variability_iff_spindle_speed.png" / >
< / p >
< p > < span class = "figure-number" > Figure 12: < / span > Variability of the IFF plant with the Spindle rotation speed (< a href = "./figs/act_damp_variability_iff_spindle_speed.png" > png< / a > , < a href = "./figs/act_damp_variability_iff_spindle_speed.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orga99e34e" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_iff_spindle_speed_zoom.png" alt = "act_damp_variability_iff_spindle_speed_zoom.png" / >
< / p >
< p > < span class = "figure-number" > Figure 13: < / span > Variability of the IFF plant with the Spindle rotation speed (< a href = "./figs/act_damp_variability_iff_spindle_speed_zoom.png" > png< / a > , < a href = "./figs/act_damp_variability_iff_spindle_speed_zoom.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orgd3ffaeb" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_dvf_spindle_speed.png" alt = "act_damp_variability_dvf_spindle_speed.png" / >
< / p >
< p > < span class = "figure-number" > Figure 14: < / span > Variability of the DVF plant with the Spindle rotation speed (< a href = "./figs/act_damp_variability_dvf_spindle_speed.png" > png< / a > , < a href = "./figs/act_damp_variability_dvf_spindle_speed.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org89c9b5e" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_dvf_spindle_speed_zoom.png" alt = "act_damp_variability_dvf_spindle_speed_zoom.png" / >
< / p >
< p > < span class = "figure-number" > Figure 15: < / span > Variability of the DVF plant with the Spindle rotation speed (< a href = "./figs/act_damp_variability_dvf_spindle_speed_zoom.png" > png< / a > , < a href = "./figs/act_damp_variability_dvf_spindle_speed_zoom.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orgfc1ed03" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_ine_spindle_speed.png" alt = "act_damp_variability_ine_spindle_speed.png" / >
< / p >
< p > < span class = "figure-number" > Figure 16: < / span > Variability of the Inertial plant with the Spindle rotation speed (< a href = "./figs/act_damp_variability_ine_spindle_speed.png" > png< / a > , < a href = "./figs/act_damp_variability_ine_spindle_speed.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orgc8c23f9" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_ine_spindle_speed_zoom.png" alt = "act_damp_variability_ine_spindle_speed_zoom.png" / >
< / p >
< p > < span class = "figure-number" > Figure 17: < / span > Variability of the Inertial plant with the Spindle rotation speed (< a href = "./figs/act_damp_variability_ine_spindle_speed_zoom.png" > png< / a > , < a href = "./figs/act_damp_variability_ine_spindle_speed_zoom.pdf" > pdf< / a > )< / p >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org3e67ebf" class = "outline-4" >
< h4 id = "org3e67ebf" > < span class = "section-number-4" > 2.3.2< / span > Variation of the poles and zeros with the Spindle rotation frequency< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-2-3-2" >
2020-02-04 18:36:27 +01:00
< div id = "org182a74e" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/campbell_diagram_spindle_rotation.png" alt = "campbell_diagram_spindle_rotation.png" / >
< / p >
< p > < span class = "figure-number" > Figure 18: < / span > Evolution of the pole with respect to the spindle rotation speed (< a href = "./figs/campbell_diagram_spindle_rotation.png" > png< / a > , < a href = "./figs/campbell_diagram_spindle_rotation.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orgacdab83" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/variation_zeros_active_damping_plants.png" alt = "variation_zeros_active_damping_plants.png" / >
< / p >
< p > < span class = "figure-number" > Figure 19: < / span > Evolution of the zero with respect to the spindle rotation speed (< a href = "./figs/variation_zeros_active_damping_plants.png" > png< / a > , < a href = "./figs/variation_zeros_active_damping_plants.pdf" > pdf< / a > )< / p >
< / div >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgae83ea9" class = "outline-3" >
< h3 id = "orgae83ea9" > < span class = "section-number-3" > 2.4< / span > Variation of the Tilt Angle< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-2-4" >
< p >
2020-02-04 18:36:27 +01:00
< a id = "orgeff482d" > < / a >
2020-02-04 16:13:52 +01:00
< / p >
< p >
We identify the dynamics for the following Tilt stage angles.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > 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, 3< span class = "org-type" > *< / span > < span class = "org-constant" > pi< / span > < span class = "org-type" > /< / span > 180]; < span class = "org-comment" > % [rad]< / span >
< / pre >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orgd53b646" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_iff_tilt_angle.png" alt = "act_damp_variability_iff_tilt_angle.png" / >
< / p >
< p > < span class = "figure-number" > Figure 20: < / span > Variability of the IFF plant with the Tilt stage Angle (< a href = "./figs/act_damp_variability_iff_tilt_angle.png" > png< / a > , < a href = "./figs/act_damp_variability_iff_tilt_angle.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org0b40872" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_dvf_tilt_angle.png" alt = "act_damp_variability_dvf_tilt_angle.png" / >
< / p >
< p > < span class = "figure-number" > Figure 21: < / span > Variability of the DVF plant with the Tilt Angle (< a href = "./figs/act_damp_variability_dvf_tilt_angle.png" > png< / a > , < a href = "./figs/act_damp_variability_dvf_tilt_angle.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orgd258f53" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_ine_tilt_angle.png" alt = "act_damp_variability_ine_tilt_angle.png" / >
< / p >
< p > < span class = "figure-number" > Figure 22: < / span > Variability of the Inertial plant with the Tilt Angle (< a href = "./figs/act_damp_variability_ine_tilt_angle.png" > png< / a > , < a href = "./figs/act_damp_variability_ine_tilt_angle.pdf" > pdf< / a > )< / p >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org820f283" class = "outline-3" >
< h3 id = "org820f283" > < span class = "section-number-3" > 2.5< / span > Scans of the Translation Stage< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-2-5" >
< p >
2020-02-04 18:36:27 +01:00
< a id = "org128a30a" > < / a >
2020-02-04 16:13:52 +01:00
< / p >
< p >
We want here to verify if the dynamics used for Active damping is varying when using the translation stage for scans.
< / p >
< p >
2020-02-04 18:36:27 +01:00
We initialize the translation stage reference to be a sinus with an amplitude of 5mm and a period of 1s (Figure < a href = "#orgb41123d" > 23< / a > ).
2020-02-04 16:13:52 +01:00
< / p >
< div class = "org-src-container" >
< 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 > , 5e< span class = "org-type" > -< / span > 3, ...< span class = "org-comment" > % [m]< / span >
< span class = "org-string" > 'Dy_period'< / span > , 1); < span class = "org-comment" > % [s]< / span >
< / pre >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orgb41123d" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/ty_scanning_reference_sinus.png" alt = "ty_scanning_reference_sinus.png" / >
< / p >
< p > < span class = "figure-number" > Figure 23: < / span > Reference path for the translation stage (< a href = "./figs/ty_scanning_reference_sinus.png" > png< / a > , < a href = "./figs/ty_scanning_reference_sinus.pdf" > pdf< / a > )< / p >
< / div >
< p >
We identify the dynamics at different positions (times) when scanning with the Translation stage.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > t_lin = [0.5, 0.75, 1, 1.25];
< / pre >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orga71fd99" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_iff_ty_scans.png" alt = "act_damp_variability_iff_ty_scans.png" / >
< / p >
< p > < span class = "figure-number" > Figure 24: < / span > Variability of the IFF plant at different Ty scan positions (< a href = "./figs/act_damp_variability_iff_ty_scans.png" > png< / a > , < a href = "./figs/act_damp_variability_iff_ty_scans.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org51b1c17" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_dvf_ty_scans.png" alt = "act_damp_variability_dvf_ty_scans.png" / >
< / p >
< p > < span class = "figure-number" > Figure 25: < / span > Variability of the DVF plant at different Ty scan positions (< a href = "./figs/act_damp_variability_dvf_ty_scans.png" > png< / a > , < a href = "./figs/act_damp_variability_dvf_ty_scans.pdf" > pdf< / a > )< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org41fb24e" class = "figure" >
2020-02-04 16:13:52 +01:00
< p > < img src = "figs/act_damp_variability_ine_ty_scans.png" alt = "act_damp_variability_ine_ty_scans.png" / >
< / p >
< p > < span class = "figure-number" > Figure 26: < / span > Variability of the Inertial plant at different Ty scan positions (< a href = "./figs/act_damp_variability_ine_ty_scans.png" > png< / a > , < a href = "./figs/act_damp_variability_ine_ty_scans.pdf" > pdf< / a > )< / p >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org2a320da" class = "outline-3" >
< h3 id = "org2a320da" > < span class = "section-number-3" > 2.6< / span > Conclusion< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-2-6" >
2020-02-04 18:36:27 +01:00
< table id = "orgfdc679b" border = "2" cellspacing = "0" cellpadding = "6" rules = "groups" frame = "hsides" >
2020-02-04 16:13:52 +01:00
< caption class = "t-above" > < span class = "table-number" > Table 1:< / span > Conclusion on the variability of the system dynamics for active damping< / caption >
< colgroup >
< col class = "org-center" / >
< col class = "org-center" / >
< / colgroup >
< thead >
< tr >
< th scope = "col" class = "org-center" >   < / th >
< th scope = "col" class = "org-center" > < b > Change of Dynamics< / b > < / th >
< / tr >
< / thead >
< tbody >
< tr >
< td class = "org-center" > < b > Sample Mass< / b > < / td >
< td class = "org-center" > Large< / td >
< / tr >
< tr >
< td class = "org-center" > < b > Spindle Angle< / b > < / td >
< td class = "org-center" > Small< / td >
< / tr >
< tr >
< td class = "org-center" > < b > Spindle Rotation Speed< / b > < / td >
< td class = "org-center" > First resonance is split in two resonances< / td >
< / tr >
< tr >
< td class = "org-center" > < b > Tilt Angle< / b > < / td >
< td class = "org-center" > Negligible< / td >
< / tr >
< tr >
< td class = "org-center" > < b > Translation Stage scans< / b > < / td >
< td class = "org-center" > Negligible< / td >
< / tr >
< / tbody >
< / table >
< p >
Also, for the Inertial Sensor, a RHP zero may appear when the spindle is rotating fast.
< / p >
< div class = "important" >
< p >
When using either a force sensor or a relative motion sensor for active damping, the only “ parameter” that induce a large change for the dynamics to be controlled is the < b > sample mass< / b > .
Thus, the developed damping techniques should be robust to variations of the sample mass.
< / p >
< / div >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgf40cd5d" class = "outline-2" >
< h2 id = "orgf40cd5d" > < span class = "section-number-2" > 3< / span > Integral Force Feedback< / h2 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-2" id = "text-3" >
< p >
2020-02-04 18:36:27 +01:00
< a id = "orgff26a4d" > < / a >
2020-01-15 16:23:40 +01:00
< / p >
< div class = "note" >
< p >
All the files (data and Matlab scripts) are accessible < a href = "data/iff.zip" > here< / a > .
< / p >
< / div >
< p >
2020-02-04 18:36:27 +01:00
Here, we study the use of < b > Integral Force Feedback< / b > (IFF) to actively damp the resonances.
2020-01-15 16:23:40 +01:00
< / p >
2020-02-04 18:36:27 +01:00
< p >
The IFF control is applied in a decentralized way: there is on controller for each leg.
< / p >
< p >
The control architecture is represented in figure < a href = "#org2e26c2a" > 27< / a > where one of the 6 nano-hexapod legs is represented.
< / p >
< div id = "org2e26c2a" class = "figure" >
< p > < img src = "figs/iff_1dof.png" alt = "iff_1dof.png" / >
< / p >
< p > < span class = "figure-number" > Figure 27: < / span > Integral Force Feedback applied to a 1dof system< / p >
< / div >
2020-01-15 16:23:40 +01:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org37e851b" class = "outline-3" >
< h3 id = "org37e851b" > < span class = "section-number-3" > 3.1< / span > Control Design< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-3-1" >
2020-01-15 16:23:40 +01:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org9527b91" class = "outline-4" >
< h4 id = "org9527b91" > < span class = "section-number-4" > 3.1.1< / span > Plant< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-3-1-1" >
2020-01-15 16:23:40 +01:00
< p >
2020-02-04 18:36:27 +01:00
Let’ s load the previously identified undamped plant:
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/undamped_plants.mat'< / span > , < span class = "org-string" > 'G_iff'< / span > );
2020-02-04 18:36:27 +01:00
load(< span class = "org-string" > './active_damping/mat/plants_variable.mat'< / span > , < span class = "org-string" > 'masses'< / span > , < span class = "org-string" > 'Gm_iff'< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-02-04 18:36:27 +01:00
Let’ s look at the transfer function from actuator forces in the nano-hexapod to the force sensor in the nano-hexapod legs for all 6 pairs of actuator/sensor (figure < a href = "#orgb2ca6a3" > 28< / a > ).
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 18:36:27 +01:00
< div id = "orgb2ca6a3" class = "figure" >
2019-10-18 17:34:45 +02:00
< p > < img src = "figs/iff_plant.png" alt = "iff_plant.png" / >
< / p >
2020-02-04 18:36:27 +01:00
< p > < span class = "figure-number" > Figure 28: < / span > Transfer function from forces applied in the legs to force sensor (< a href = "./figs/iff_plant.png" > png< / a > , < a href = "./figs/iff_plant.pdf" > pdf< / a > )< / p >
2019-10-18 17:34:45 +02:00
< / div >
2020-01-15 16:23:40 +01:00
< / div >
< / div >
2019-10-18 17:34:45 +02:00
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgaf2107d" class = "outline-4" >
< h4 id = "orgaf2107d" > < span class = "section-number-4" > 3.1.2< / span > Control Design< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-3-1-2" >
2019-10-18 17:34:45 +02:00
< p >
The controller for each pair of actuator/sensor is:
< / p >
< div class = "org-src-container" >
2020-02-04 18:36:27 +01:00
< 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);
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-02-04 18:36:27 +01:00
The corresponding loop gains are shown in figure < a href = "#orgcfb57bd" > 29< / a > .
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 18:36:27 +01:00
< div id = "orgcfb57bd" class = "figure" >
2019-10-18 17:34:45 +02:00
< p > < img src = "figs/iff_open_loop.png" alt = "iff_open_loop.png" / >
< / p >
2020-02-04 18:36:27 +01:00
< p > < span class = "figure-number" > Figure 29: < / span > Loop Gain for the Integral Force Feedback (< a href = "./figs/iff_open_loop.png" > png< / a > , < a href = "./figs/iff_open_loop.pdf" > pdf< / a > )< / p >
2019-10-18 17:34:45 +02:00
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgda71287" class = "outline-4" >
< h4 id = "orgda71287" > < span class = "section-number-4" > 3.1.3< / span > Diagonal Controller< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-3-1-3" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
We create the diagonal controller and we add a minus sign as we have a positive
feedback architecture.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > K_iff = < span class = "org-type" > -< / span > K_iff< span class = "org-type" > *< / span > eye(6);
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
We save the controller for further analysis.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > save(< span class = "org-string" > './active_damping/mat/K_iff.mat'< / span > , < span class = "org-string" > 'K_iff'< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
2020-01-15 16:23:40 +01:00
< / div >
< / div >
< / div >
2019-10-18 17:34:45 +02:00
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgb6a41c1" class = "outline-3" >
< h3 id = "orgb6a41c1" > < span class = "section-number-3" > 3.2< / span > Tomography Experiment< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-3-2" >
2020-01-15 16:23:40 +01:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orge7249b4" class = "outline-4" >
< h4 id = "orge7249b4" > < span class = "section-number-4" > 3.2.1< / span > Simulation with IFF Controller< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-3-2-1" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
We initialize elements for the tomography experiment.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > prepareTomographyExperiment();
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
We set the IFF controller.
2019-10-25 16:02:23 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/K_iff.mat'< / span > , < span class = "org-string" > 'K_iff'< / span > );
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K_iff'< / span > , < span class = "org-string" > '-append'< / span > );
2019-10-25 16:02:23 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
We change the simulation stop time.
2019-10-18 17:34:45 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > 'mat/conf_simscape.mat'< / span > );
< span class = "org-matlab-simulink-keyword" > set_param< / span > (< span class = "org-variable-name" > conf_simscape< / span > , < span class = "org-string" > 'StopTime'< / span > , < span class = "org-string" > '3'< / span > );
< / pre >
2019-10-18 17:34:45 +02:00
< / div >
< p >
2020-01-15 16:23:40 +01:00
And we simulate the system.
2019-10-18 17:34:45 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-simulink-keyword" > sim< / span > (< span class = "org-string" > 'sim_nass_active_damping'< / span > );
< / pre >
2019-10-18 17:34:45 +02:00
< / div >
2020-01-15 16:23:40 +01:00
< p >
Finally, we save the simulation results for further analysis
2019-10-18 17:34:45 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > En_iff = En;
Eg_iff = Eg;
save(< span class = "org-string" > './active_damping/mat/tomo_exp.mat'< / span > , < span class = "org-string" > 'En_iff'< / span > , < span class = "org-string" > 'Eg_iff'< / span > , < span class = "org-string" > '-append'< / span > );
< / pre >
2019-10-18 17:34:45 +02:00
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org9cea843" class = "outline-4" >
< h4 id = "org9cea843" > < span class = "section-number-4" > 3.2.2< / span > Simulation with IFF Controller with added High Pass Filter< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-3-2-2" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-20 17:20:50 +01:00
We initialize elements for the tomography experiment.
2019-10-18 17:34:45 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
2020-01-20 17:20:50 +01:00
< pre class = "src src-matlab" > prepareTomographyExperiment();
2020-01-15 16:23:40 +01:00
< / pre >
< / div >
2019-10-18 17:34:45 +02:00
2020-01-20 17:20:50 +01:00
< p >
We set the IFF controller with the High Pass Filter.
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
2020-01-20 17:20:50 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/K_iff_hpf.mat'< / span > , < span class = "org-string" > 'K_iff'< / span > );
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K_iff'< / span > , < span class = "org-string" > '-append'< / span > );
2020-01-15 16:23:40 +01:00
< / pre >
< / div >
2019-10-18 17:34:45 +02:00
2020-01-20 17:20:50 +01:00
< p >
We change the simulation stop time.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > 'mat/conf_simscape.mat'< / span > );
< span class = "org-matlab-simulink-keyword" > set_param< / span > (< span class = "org-variable-name" > conf_simscape< / span > , < span class = "org-string" > 'StopTime'< / span > , < span class = "org-string" > '3'< / span > );
< / pre >
< / div >
2019-10-18 17:34:45 +02:00
2020-01-20 17:20:50 +01:00
< p >
And we simulate the system.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-matlab-simulink-keyword" > sim< / span > (< span class = "org-string" > 'sim_nass_active_damping'< / span > );
< / pre >
< / div >
< p >
Finally, we save the simulation results for further analysis
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > En_iff_hpf = En;
Eg_iff_hpf = Eg;
save(< span class = "org-string" > './active_damping/mat/tomo_exp.mat'< / span > , < span class = "org-string" > 'En_iff_hpf'< / span > , < span class = "org-string" > 'Eg_iff_hpf'< / span > , < span class = "org-string" > '-append'< / span > );
< / pre >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgf849116" class = "outline-4" >
< h4 id = "orgf849116" > < span class = "section-number-4" > 3.2.3< / span > Compare with Undamped system< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-3-2-3" >
2020-01-20 17:20:50 +01:00
< p >
We load the results of tomography experiments.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/tomo_exp.mat'< / span > , < span class = "org-string" > 'En'< / span > , < span class = "org-string" > 'En_iff'< / span > , < span class = "org-string" > 'En_iff_hpf'< / span > );
t = linspace(0, 3, length(En(< span class = "org-type" > :< / span > ,1)));
< / pre >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org81d40a3" class = "figure" >
2020-01-20 17:20:50 +01:00
< p > < img src = "figs/nass_act_damp_iff_sim_tomo_xy.png" alt = "nass_act_damp_iff_sim_tomo_xy.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 30: < / span > Position Error during tomography experiment - XY Motion (< a href = "./figs/nass_act_damp_iff_sim_tomo_xy.png" > png< / a > , < a href = "./figs/nass_act_damp_iff_sim_tomo_xy.pdf" > pdf< / a > )< / p >
2020-01-20 17:20:50 +01:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orge2d8768" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/nass_act_damp_iff_sim_tomo_trans.png" alt = "nass_act_damp_iff_sim_tomo_trans.png" / >
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 31: < / span > Position Error during tomography experiment - Translations (< a href = "./figs/nass_act_damp_iff_sim_tomo_trans.png" > png< / a > , < a href = "./figs/nass_act_damp_iff_sim_tomo_trans.pdf" > pdf< / a > )< / p >
2019-10-18 17:34:45 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orge3009b9" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/nass_act_damp_iff_sim_tomo_rot.png" alt = "nass_act_damp_iff_sim_tomo_rot.png" / >
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 32: < / span > Position Error during tomography experiment - Rotations (< a href = "./figs/nass_act_damp_iff_sim_tomo_rot.png" > png< / a > , < a href = "./figs/nass_act_damp_iff_sim_tomo_rot.pdf" > pdf< / a > )< / p >
2020-01-15 16:23:40 +01:00
< / div >
2019-10-18 17:34:45 +02:00
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org129c64d" class = "outline-3" >
< h3 id = "org129c64d" > < span class = "section-number-3" > 3.3< / span > Conclusion< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-3-3" >
2019-10-18 17:34:45 +02:00
< div class = "important" >
< p >
Integral Force Feedback:
< / p >
< ul class = "org-ul" >
< li > Robust (guaranteed stability)< / li >
< li > Acceptable Damping< / li >
< li > Increase the sensitivity to disturbances at low frequencies< / li >
< / ul >
< / div >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgacb9f23" class = "outline-2" >
< h2 id = "orgacb9f23" > < span class = "section-number-2" > 4< / span > Direct Velocity Feedback< / h2 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-2" id = "text-4" >
2019-10-18 17:34:45 +02:00
< p >
2020-02-04 18:36:27 +01:00
< a id = "orgfac8523" > < / a >
2019-10-18 17:34:45 +02:00
< / p >
2019-10-25 16:02:23 +02:00
< div class = "note" >
< p >
2020-01-15 16:23:40 +01:00
All the files (data and Matlab scripts) are accessible < a href = "data/dvf.zip" > here< / a > .
2019-10-25 16:02:23 +02:00
< / p >
< / div >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
In the Direct Velocity Feedback (DVF), a derivative feedback is applied between the measured actuator displacement to the actuator force input.
The actuator displacement can be measured with a capacitive sensor for instance.
2019-10-18 17:34:45 +02:00
< / p >
< / div >
2019-10-25 16:02:23 +02:00
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org854417d" class = "outline-3" >
< h3 id = "org854417d" > < span class = "section-number-3" > 4.1< / span > Control Design< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-4-1" >
2019-10-18 17:34:45 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org04e2849" class = "outline-4" >
< h4 id = "org04e2849" > < span class = "section-number-4" > 4.1.1< / span > Plant< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-4-1-1" >
2020-01-15 16:23:40 +01:00
< p >
Let’ s load the undamped plant:
2019-10-18 17:34:45 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/undamped_plants.mat'< / span > , < span class = "org-string" > 'G_dvf'< / span > );
< / pre >
2019-10-18 17:34:45 +02:00
< / div >
< p >
2020-02-04 18:36:27 +01:00
Let’ s look at the transfer function from actuator forces in the nano-hexapod to the measured displacement of the actuator for all 6 pairs of actuator/sensor (figure < a href = "#org74e81b5" > 33< / a > ).
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 18:36:27 +01:00
< div id = "org74e81b5" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/dvf_plant.png" alt = "dvf_plant.png" / >
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 33: < / span > Transfer function from forces applied in the legs to leg displacement sensor (< a href = "./figs/dvf_plant.png" > png< / a > , < a href = "./figs/dvf_plant.pdf" > pdf< / a > )< / p >
2020-01-15 16:23:40 +01:00
< / div >
2019-10-18 17:34:45 +02:00
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org86c402c" class = "outline-4" >
< h4 id = "org86c402c" > < span class = "section-number-4" > 4.1.2< / span > Control Design< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-4-1-2" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
The Direct Velocity Feedback is defined below.
A Low pass Filter is added to make the controller transfer function proper.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > K_dvf = s< span class = "org-type" > *< / span > 20000< 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);
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-02-04 18:36:27 +01:00
The obtained loop gains are shown in figure < a href = "#orge56edb3" > 34< / a > .
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 18:36:27 +01:00
< div id = "orge56edb3" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/dvf_open_loop.png" alt = "dvf_open_loop.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 34: < / span > Loop Gain for the Integral Force Feedback (< a href = "./figs/dvf_open_loop.png" > png< / a > , < a href = "./figs/dvf_open_loop.pdf" > pdf< / a > )< / p >
2020-01-15 16:23:40 +01:00
< / div >
< / div >
2019-10-18 17:34:45 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org8838542" class = "outline-4" >
< h4 id = "org8838542" > < span class = "section-number-4" > 4.1.3< / span > Diagonal Controller< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-4-1-3" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
We create the diagonal controller and we add a minus sign as we have a positive feedback architecture.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > K_dvf = < span class = "org-type" > -< / span > K_dvf< span class = "org-type" > *< / span > eye(6);
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
We save the controller for further analysis.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > save(< span class = "org-string" > './active_damping/mat/K_dvf.mat'< / span > , < span class = "org-string" > 'K_dvf'< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org140680b" class = "outline-3" >
< h3 id = "org140680b" > < span class = "section-number-3" > 4.2< / span > Tomography Experiment< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-4-2" >
2020-01-15 16:23:40 +01:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgd23c979" class = "outline-4" >
< h4 id = "orgd23c979" > < span class = "section-number-4" > 4.2.1< / span > Initialize the Simulation< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-4-2-1" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
We initialize elements for the tomography experiment.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > prepareTomographyExperiment();
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
We set the DVF controller.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/K_dvf.mat'< / span > , < span class = "org-string" > 'K_dvf'< / span > );
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K_dvf'< / span > , < span class = "org-string" > '-append'< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org296fb8f" class = "outline-4" >
< h4 id = "org296fb8f" > < span class = "section-number-4" > 4.2.2< / span > Simulation< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-4-2-2" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
We change the simulation stop time.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > 'mat/conf_simscape.mat'< / span > );
< span class = "org-matlab-simulink-keyword" > set_param< / span > (< span class = "org-variable-name" > conf_simscape< / span > , < span class = "org-string" > 'StopTime'< / span > , < span class = "org-string" > '3'< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
And we simulate the system.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > < span class = "org-matlab-simulink-keyword" > sim< / span > (< span class = "org-string" > 'sim_nass_active_damping'< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
Finally, we save the simulation results for further analysis
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > En_dvf = En;
Eg_dvf = Eg;
save(< span class = "org-string" > './active_damping/mat/tomo_exp.mat'< / span > , < span class = "org-string" > 'En_dvf'< / span > , < span class = "org-string" > 'Eg_dvf'< / span > , < span class = "org-string" > '-append'< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
2020-01-15 16:23:40 +01:00
< / div >
< / div >
2019-10-18 17:34:45 +02:00
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org75c6b14" class = "outline-4" >
< h4 id = "org75c6b14" > < span class = "section-number-4" > 4.2.3< / span > Compare with Undamped system< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-4-2-3" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
We load the results of tomography experiments.
2019-10-25 16:02:23 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/tomo_exp.mat'< / span > , < span class = "org-string" > 'En'< / span > , < span class = "org-string" > 'En_dvf'< / span > );
t = linspace(0, 3, length(En(< span class = "org-type" > :< / span > ,1)));
2019-10-25 16:02:23 +02:00
< / pre >
< / div >
2019-10-18 17:34:45 +02:00
2020-02-04 18:36:27 +01:00
< div id = "orgecb566d" class = "figure" >
2020-01-20 17:20:50 +01:00
< p > < img src = "figs/nass_act_damp_dvf_sim_tomo_xy.png" alt = "nass_act_damp_dvf_sim_tomo_xy.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 35: < / span > Position Error during tomography experiment - XY Motion (< a href = "./figs/nass_act_damp_dvf_sim_tomo_xy.png" > png< / a > , < a href = "./figs/nass_act_damp_dvf_sim_tomo_xy.pdf" > pdf< / a > )< / p >
2020-01-20 17:20:50 +01:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org2945cc0" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/nass_act_damp_dvf_sim_tomo_trans.png" alt = "nass_act_damp_dvf_sim_tomo_trans.png" / >
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 36: < / span > Position Error during tomography experiment - Translations (< a href = "./figs/nass_act_damp_dvf_sim_tomo_trans.png" > png< / a > , < a href = "./figs/nass_act_damp_dvf_sim_tomo_trans.pdf" > pdf< / a > )< / p >
2019-10-18 17:34:45 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orge7e5e06" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/nass_act_damp_dvf_sim_tomo_rot.png" alt = "nass_act_damp_dvf_sim_tomo_rot.png" / >
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 37: < / span > Position Error during tomography experiment - Rotations (< a href = "./figs/nass_act_damp_dvf_sim_tomo_rot.png" > png< / a > , < a href = "./figs/nass_act_damp_dvf_sim_tomo_rot.pdf" > pdf< / a > )< / p >
2019-10-18 17:34:45 +02:00
< / div >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgb12c863" class = "outline-3" >
< h3 id = "orgb12c863" > < span class = "section-number-3" > 4.3< / span > Conclusion< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-4-3" >
2019-10-18 17:34:45 +02:00
< div class = "important" >
< p >
2020-01-15 16:23:40 +01:00
Direct Velocity Feedback:
2019-10-18 17:34:45 +02:00
< / p >
< ul class = "org-ul" >
< li > < / li >
< / ul >
< / div >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgd484f13" class = "outline-2" >
< h2 id = "orgd484f13" > < span class = "section-number-2" > 5< / span > Inertial Control< / h2 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-2" id = "text-5" >
2019-10-18 17:34:45 +02:00
< p >
2020-02-04 18:36:27 +01:00
< a id = "orgb012d0b" > < / a >
2019-10-25 16:02:23 +02:00
< / p >
< div class = "note" >
< p >
2020-01-15 16:23:40 +01:00
All the files (data and Matlab scripts) are accessible < a href = "data/ine.zip" > here< / a > .
2019-10-18 17:34:45 +02:00
< / p >
2019-10-25 16:02:23 +02:00
< / div >
2019-10-18 17:34:45 +02:00
< p >
2020-01-20 17:20:50 +01:00
In Inertial Control, a feedback is applied between the measured < b > absolute< / b > motion (velocity or acceleration) of the platform to the actuator force input.
2019-10-18 17:34:45 +02:00
< / p >
< / div >
2019-10-25 16:02:23 +02:00
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org54817e6" class = "outline-3" >
< h3 id = "org54817e6" > < span class = "section-number-3" > 5.1< / span > Control Design< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-5-1" >
2019-10-18 17:34:45 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgfbfdca8" class = "outline-4" >
< h4 id = "orgfbfdca8" > < span class = "section-number-4" > 5.1.1< / span > Plant< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-5-1-1" >
2020-01-15 16:23:40 +01:00
< p >
Let’ s load the undamped plant:
2019-10-18 17:34:45 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/undamped_plants.mat'< / span > , < span class = "org-string" > 'G_ine'< / span > );
< / pre >
2019-10-18 17:34:45 +02:00
< / div >
< p >
2020-02-04 18:36:27 +01:00
Let’ s look at the transfer function from actuator forces in the nano-hexapod to the measured velocity of the nano-hexapod platform in the direction of the corresponding actuator for all 6 pairs of actuator/sensor (figure < a href = "#org0b7409d" > 38< / a > ).
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 18:36:27 +01:00
< div id = "org0b7409d" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/ine_plant.png" alt = "ine_plant.png" / >
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 38: < / span > Transfer function from forces applied in the legs to leg velocity sensor (< a href = "./figs/ine_plant.png" > png< / a > , < a href = "./figs/ine_plant.pdf" > pdf< / a > )< / p >
2020-01-15 16:23:40 +01:00
< / div >
2019-10-18 17:34:45 +02:00
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org46462ae" class = "outline-4" >
< h4 id = "org46462ae" > < span class = "section-number-4" > 5.1.2< / span > Control Design< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-5-1-2" >
2019-10-18 17:34:45 +02:00
< p >
2020-02-04 18:36:27 +01:00
The controller is defined below and the obtained loop gain is shown in figure < a href = "#org63d8ff5" > 39< / a > .
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-20 17:20:50 +01:00
< pre class = "src src-matlab" > K_ine = 1e4< 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));
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org63d8ff5" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/ine_open_loop_gain.png" alt = "ine_open_loop_gain.png" / >
2019-10-18 17:34:45 +02:00
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 39: < / span > Loop Gain for Inertial Control (< a href = "./figs/ine_open_loop_gain.png" > png< / a > , < a href = "./figs/ine_open_loop_gain.pdf" > pdf< / a > )< / p >
2020-01-15 16:23:40 +01:00
< / div >
< / div >
2019-10-18 17:34:45 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org5fa6fb8" class = "outline-4" >
< h4 id = "org5fa6fb8" > < span class = "section-number-4" > 5.1.3< / span > Diagonal Controller< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-5-1-3" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
We create the diagonal controller and we add a minus sign as we have a positive feedback architecture.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > K_ine = < span class = "org-type" > -< / span > K_ine< span class = "org-type" > *< / span > eye(6);
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
We save the controller for further analysis.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > save(< span class = "org-string" > './active_damping/mat/K_ine.mat'< / span > , < span class = "org-string" > 'K_ine'< / span > );
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgee629bc" class = "outline-3" >
< h3 id = "orgee629bc" > < span class = "section-number-3" > 5.2< / span > Tomography Experiment< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-5-2" >
2020-01-15 16:23:40 +01:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org64edd33" class = "outline-4" >
< h4 id = "org64edd33" > < span class = "section-number-4" > 5.2.1< / span > Initialize the Simulation< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-5-2-1" >
2019-10-18 17:34:45 +02:00
< p >
2020-01-15 16:23:40 +01:00
We initialize elements for the tomography experiment.
2019-10-18 17:34:45 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > prepareTomographyExperiment();
2019-10-18 17:34:45 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
We set the Inertial controller.
2019-10-18 17:34:45 +02:00
< / p >
2019-10-25 16:02:23 +02:00
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/K_ine.mat'< / span > , < span class = "org-string" > 'K_ine'< / span > );
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K_ine'< / span > , < span class = "org-string" > '-append'< / span > );
2019-10-25 16:02:23 +02:00
< / pre >
< / div >
2019-10-18 17:34:45 +02:00
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgb8f7cfa" class = "outline-4" >
< h4 id = "orgb8f7cfa" > < span class = "section-number-4" > 5.2.2< / span > Simulation< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-5-2-2" >
2019-10-25 16:02:23 +02:00
< p >
2020-01-15 16:23:40 +01:00
We change the simulation stop time.
2019-10-25 16:02:23 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > 'mat/conf_simscape.mat'< / span > );
< span class = "org-matlab-simulink-keyword" > set_param< / span > (< span class = "org-variable-name" > conf_simscape< / span > , < span class = "org-string" > 'StopTime'< / span > , < span class = "org-string" > '3'< / span > );
2019-10-25 16:02:23 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
And we simulate the system.
2019-10-25 16:02:23 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > < span class = "org-matlab-simulink-keyword" > sim< / span > (< span class = "org-string" > 'sim_nass_active_damping'< / span > );
2019-10-25 16:02:23 +02:00
< / pre >
< / div >
< p >
2020-01-15 16:23:40 +01:00
Finally, we save the simulation results for further analysis
2019-10-25 16:02:23 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > En_ine = En;
Eg_ine = Eg;
save(< span class = "org-string" > './active_damping/mat/tomo_exp.mat'< / span > , < span class = "org-string" > 'En_ine'< / span > , < span class = "org-string" > 'Eg_ine'< / span > , < span class = "org-string" > '-append'< / span > );
2019-10-25 16:02:23 +02:00
< / pre >
< / div >
2020-01-15 16:23:40 +01:00
< / div >
< / div >
2019-10-25 16:02:23 +02:00
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgdd17f5e" class = "outline-4" >
< h4 id = "orgdd17f5e" > < span class = "section-number-4" > 5.2.3< / span > Compare with Undamped system< / h4 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-4" id = "text-5-2-3" >
2019-10-25 16:02:23 +02:00
< p >
2020-01-15 16:23:40 +01:00
We load the results of tomography experiments.
2019-10-25 16:02:23 +02:00
< / p >
< div class = "org-src-container" >
2020-01-15 16:23:40 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/tomo_exp.mat'< / span > , < span class = "org-string" > 'En'< / span > , < span class = "org-string" > 'En_ine'< / span > );
t = linspace(0, 3, length(En_ine(< span class = "org-type" > :< / span > ,1)));
2019-10-25 16:02:23 +02:00
< / pre >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org2cb7209" class = "figure" >
2020-01-20 17:20:50 +01:00
< p > < img src = "figs/nass_act_damp_ine_sim_tomo_xy.png" alt = "nass_act_damp_ine_sim_tomo_xy.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 40: < / span > Position Error during tomography experiment - XY Motion (< a href = "./figs/nass_act_damp_ine_sim_tomo_xy.png" > png< / a > , < a href = "./figs/nass_act_damp_ine_sim_tomo_xy.pdf" > pdf< / a > )< / p >
2020-01-20 17:20:50 +01:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org3c57e87" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/nass_act_damp_ine_sim_tomo_trans.png" alt = "nass_act_damp_ine_sim_tomo_trans.png" / >
2019-10-25 16:02:23 +02:00
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 41: < / span > Position Error during tomography experiment - Translations (< a href = "./figs/nass_act_damp_ine_sim_tomo_trans.png" > png< / a > , < a href = "./figs/nass_act_damp_ine_sim_tomo_trans.pdf" > pdf< / a > )< / p >
2019-10-25 16:02:23 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orgb070a38" class = "figure" >
2020-01-15 16:23:40 +01:00
< p > < img src = "figs/nass_act_damp_ine_sim_tomo_rot.png" alt = "nass_act_damp_ine_sim_tomo_rot.png" / >
2019-10-25 16:02:23 +02:00
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 42: < / span > Position Error during tomography experiment - Rotations (< a href = "./figs/nass_act_damp_ine_sim_tomo_rot.png" > png< / a > , < a href = "./figs/nass_act_damp_ine_sim_tomo_rot.pdf" > pdf< / a > )< / p >
2019-10-25 16:02:23 +02:00
< / div >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org828f5d0" class = "outline-3" >
< h3 id = "org828f5d0" > < span class = "section-number-3" > 5.3< / span > Conclusion< / h3 >
2020-02-04 16:13:52 +01:00
< div class = "outline-text-3" id = "text-5-3" >
2019-10-18 17:34:45 +02:00
< div class = "important" >
< p >
2020-01-15 16:23:40 +01:00
Inertial Control:
2019-10-18 17:34:45 +02:00
< / p >
< / div >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgd396d6d" class = "outline-2" >
< h2 id = "orgd396d6d" > < span class = "section-number-2" > 6< / span > Comparison< / h2 >
2020-01-21 17:28:49 +01:00
< div class = "outline-text-2" id = "text-6" >
< p >
2020-02-04 18:36:27 +01:00
< a id = "org89d1225" > < / a >
2020-01-21 17:28:49 +01:00
< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org9fccb86" class = "outline-3" >
< h3 id = "org9fccb86" > < span class = "section-number-3" > 6.1< / span > Load the plants< / h3 >
2020-01-21 17:28:49 +01:00
< div class = "outline-text-3" id = "text-6-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/plants.mat'< / span > , < span class = "org-string" > 'G'< / span > , < span class = "org-string" > 'G_iff'< / span > , < span class = "org-string" > 'G_ine'< / span > , < span class = "org-string" > 'G_dvf'< / span > );
< / pre >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org74542bd" class = "outline-3" >
< h3 id = "org74542bd" > < span class = "section-number-3" > 6.2< / span > Sensitivity to Disturbance< / h3 >
2020-01-21 17:28:49 +01:00
< div class = "outline-text-3" id = "text-6-2" >
2020-02-04 18:36:27 +01:00
< div id = "orga583ea2" class = "figure" >
2019-10-25 16:02:23 +02:00
< p > < img src = "figs/sensitivity_comp_ground_motion_z.png" alt = "sensitivity_comp_ground_motion_z.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 43: < / span > Sensitivity to ground motion in the Z direction on the Z motion error (< a href = "./figs/sensitivity_comp_ground_motion_z.png" > png< / a > , < a href = "./figs/sensitivity_comp_ground_motion_z.pdf" > pdf< / a > )< / p >
2019-10-25 16:02:23 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org1b447ff" class = "figure" >
2019-10-25 16:02:23 +02:00
< p > < img src = "figs/sensitivity_comp_direct_forces_z.png" alt = "sensitivity_comp_direct_forces_z.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 44: < / span > Compliance in the Z direction: Sensitivity of direct forces applied on the sample in the Z direction on the Z motion error (< a href = "./figs/sensitivity_comp_direct_forces_z.png" > png< / a > , < a href = "./figs/sensitivity_comp_direct_forces_z.pdf" > pdf< / a > )< / p >
2019-10-25 16:02:23 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orge913c10" class = "figure" >
2019-10-25 16:02:23 +02:00
< p > < img src = "figs/sensitivity_comp_spindle_z.png" alt = "sensitivity_comp_spindle_z.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 45: < / span > Sensitivity to forces applied in the Z direction by the Spindle on the Z motion error (< a href = "./figs/sensitivity_comp_spindle_z.png" > png< / a > , < a href = "./figs/sensitivity_comp_spindle_z.pdf" > pdf< / a > )< / p >
2019-10-25 16:02:23 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "orga316157" class = "figure" >
2019-10-25 16:02:23 +02:00
< p > < img src = "figs/sensitivity_comp_ty_z.png" alt = "sensitivity_comp_ty_z.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 46: < / span > Sensitivity to forces applied in the Z direction by the Y translation stage on the Z motion error (< a href = "./figs/sensitivity_comp_ty_z.png" > png< / a > , < a href = "./figs/sensitivity_comp_ty_z.pdf" > pdf< / a > )< / p >
2019-10-25 16:02:23 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org2ab36f2" class = "figure" >
2019-10-25 16:02:23 +02:00
< p > < img src = "figs/sensitivity_comp_ty_x.png" alt = "sensitivity_comp_ty_x.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 47: < / span > Sensitivity to forces applied in the X direction by the Y translation stage on the X motion error (< a href = "./figs/sensitivity_comp_ty_x.png" > png< / a > , < a href = "./figs/sensitivity_comp_ty_x.pdf" > pdf< / a > )< / p >
2019-10-25 16:02:23 +02:00
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orga3dba99" class = "outline-3" >
< h3 id = "orga3dba99" > < span class = "section-number-3" > 6.3< / span > Damped Plant< / h3 >
2020-01-21 17:28:49 +01:00
< div class = "outline-text-3" id = "text-6-3" >
2019-10-25 16:02:23 +02:00
2020-02-04 18:36:27 +01:00
< div id = "orgb6397a0" class = "figure" >
2019-10-25 16:02:23 +02:00
< p > < img src = "figs/plant_comp_damping_z.png" alt = "plant_comp_damping_z.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 48: < / span > Plant for the \(z\) direction for different active damping technique used (< a href = "./figs/plant_comp_damping_z.png" > png< / a > , < a href = "./figs/plant_comp_damping_z.pdf" > pdf< / a > )< / p >
2019-10-25 16:02:23 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org428f540" class = "figure" >
2019-10-25 16:02:23 +02:00
< p > < img src = "figs/plant_comp_damping_x.png" alt = "plant_comp_damping_x.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 49: < / span > Plant for the \(x\) direction for different active damping technique used (< a href = "./figs/plant_comp_damping_x.png" > png< / a > , < a href = "./figs/plant_comp_damping_x.pdf" > pdf< / a > )< / p >
2019-10-25 16:02:23 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org0e349bb" class = "figure" >
2019-10-25 16:02:23 +02:00
< p > < img src = "figs/plant_comp_damping_coupling.png" alt = "plant_comp_damping_coupling.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 50: < / span > Comparison of one off-diagonal plant for different damping technique applied (< a href = "./figs/plant_comp_damping_coupling.png" > png< / a > , < a href = "./figs/plant_comp_damping_coupling.pdf" > pdf< / a > )< / p >
2020-01-15 16:23:40 +01:00
< / div >
< / div >
< / div >
2020-01-20 17:40:31 +01:00
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org26b5412" class = "outline-3" >
< h3 id = "org26b5412" > < span class = "section-number-3" > 6.4< / span > Tomography Experiment< / h3 >
2020-01-21 17:28:49 +01:00
< div class = "outline-text-3" id = "text-6-4" >
2020-01-20 17:36:30 +01:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgd29205c" class = "outline-4" >
< h4 id = "orgd29205c" > < span class = "section-number-4" > 6.4.1< / span > Load the Simulation Data< / h4 >
2020-01-21 17:28:49 +01:00
< div class = "outline-text-4" id = "text-6-4-1" >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
2020-01-20 17:36:30 +01:00
< pre class = "src src-matlab" > load(< span class = "org-string" > './active_damping/mat/tomo_exp.mat'< / span > , < span class = "org-string" > 'En'< / span > , < span class = "org-string" > 'En_iff_hpf'< / span > , < span class = "org-string" > 'En_dvf'< / span > , < span class = "org-string" > 'En_ine'< / span > );
En_iff = En_iff_hpf;
2020-01-15 16:23:40 +01:00
t = linspace(0, 3, length(En(< span class = "org-type" > :< / span > ,1)));
< / pre >
< / div >
2020-01-20 17:36:30 +01:00
< / div >
< / div >
2020-01-15 16:23:40 +01:00
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org4c12081" class = "outline-4" >
< h4 id = "org4c12081" > < span class = "section-number-4" > 6.4.2< / span > Frequency Domain Analysis< / h4 >
2020-01-21 17:28:49 +01:00
< div class = "outline-text-4" id = "text-6-4-2" >
2020-01-20 17:36:30 +01:00
< p >
Window used for < code > pwelch< / code > function.
< / p >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
2020-01-20 17:36:30 +01:00
< pre class = "src src-matlab" > n_av = 8;
han_win = hanning(ceil(length(En(< span class = "org-type" > :< / span > , 1))< span class = "org-type" > /< / span > n_av));
2020-01-15 16:23:40 +01:00
< / pre >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "org9ccc939" class = "figure" >
2020-01-20 17:36:30 +01:00
< p > < img src = "figs/act_damp_tomo_exp_comp_psd_trans.png" alt = "act_damp_tomo_exp_comp_psd_trans.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 51: < / span > PSD of the translation errors in the X direction for applied Active Damping techniques (< a href = "./figs/act_damp_tomo_exp_comp_psd_trans.png" > png< / a > , < a href = "./figs/act_damp_tomo_exp_comp_psd_trans.pdf" > pdf< / a > )< / p >
2020-01-20 17:36:30 +01:00
< / div >
2020-01-15 16:23:40 +01:00
2020-01-20 17:36:30 +01:00
2020-02-04 18:36:27 +01:00
< div id = "org4b68060" class = "figure" >
2020-01-20 17:36:30 +01:00
< p > < img src = "figs/act_damp_tomo_exp_comp_psd_rot.png" alt = "act_damp_tomo_exp_comp_psd_rot.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 52: < / span > PSD of the rotation errors in the X direction for applied Active Damping techniques (< a href = "./figs/act_damp_tomo_exp_comp_psd_rot.png" > png< / a > , < a href = "./figs/act_damp_tomo_exp_comp_psd_rot.pdf" > pdf< / a > )< / p >
2020-01-20 17:20:50 +01:00
< / div >
2020-01-20 17:36:30 +01:00
2020-02-04 18:36:27 +01:00
< div id = "org60f6bc2" class = "figure" >
2020-01-20 17:36:30 +01:00
< p > < img src = "figs/act_damp_tomo_exp_comp_cps_trans.png" alt = "act_damp_tomo_exp_comp_cps_trans.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 53: < / span > CPS of the translation errors in the X direction for applied Active Damping techniques (< a href = "./figs/act_damp_tomo_exp_comp_cps_trans.png" > png< / a > , < a href = "./figs/act_damp_tomo_exp_comp_cps_trans.pdf" > pdf< / a > )< / p >
2020-01-20 17:20:50 +01:00
< / div >
2020-01-20 17:36:30 +01:00
2020-02-04 18:36:27 +01:00
< div id = "orgf278183" class = "figure" >
2020-01-20 17:36:30 +01:00
< p > < img src = "figs/act_damp_tomo_exp_comp_cps_rot.png" alt = "act_damp_tomo_exp_comp_cps_rot.png" / >
< / p >
2020-02-04 16:13:52 +01:00
< p > < span class = "figure-number" > Figure 54: < / span > CPS of the rotation errors in the X direction for applied Active Damping techniques (< a href = "./figs/act_damp_tomo_exp_comp_cps_rot.png" > png< / a > , < a href = "./figs/act_damp_tomo_exp_comp_cps_rot.pdf" > pdf< / a > )< / p >
2020-01-15 16:23:40 +01:00
< / div >
2019-10-25 16:02:23 +02:00
< / div >
< / div >
< / div >
2019-10-18 17:34:45 +02:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org5109fa0" class = "outline-2" >
< h2 id = "org5109fa0" > < span class = "section-number-2" > 7< / span > Useful Functions< / h2 >
2020-01-21 17:28:49 +01:00
< div class = "outline-text-2" id = "text-7" >
2020-01-15 16:23:40 +01:00
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgd43b7ab" class = "outline-3" >
< h3 id = "orgd43b7ab" > < span class = "section-number-3" > 7.1< / span > prepareTomographyExperiment< / h3 >
2020-01-21 17:28:49 +01:00
< div class = "outline-text-3" id = "text-7-1" >
2019-10-18 17:34:45 +02:00
< p >
2020-02-04 18:36:27 +01:00
< a id = "orgbd03f5c" > < / a >
2019-10-18 17:34:45 +02:00
< / p >
2020-01-15 16:23:40 +01:00
< p >
This Matlab function is accessible < a href = "src/prepareTomographyExperiment.m" > here< / a > .
< / p >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-orgc94c0d8" class = "outline-4" >
< h4 id = "orgc94c0d8" > Function Description< / h4 >
< div class = "outline-text-4" id = "text-orgc94c0d8" >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > < span class = "org-keyword" > function< / span > < span class = "org-variable-name" > []< / span > = < span class = "org-function-name" > prepareTomographyExperiment< / span > (< span class = "org-variable-name" > args< / span > )
< / pre >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org2bd426a" class = "outline-4" >
< h4 id = "org2bd426a" > Optional Parameters< / h4 >
< div class = "outline-text-4" id = "text-org2bd426a" >
2020-01-15 16:23:40 +01:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > arguments
args.nass_actuator char {mustBeMember(args.nass_actuator,{< span class = "org-string" > 'piezo'< / span > , < span class = "org-string" > 'lorentz'< / span > })} = < span class = "org-string" > 'piezo'< / span >
2020-02-04 18:36:27 +01:00
args.sample_mass (1,1) double {mustBeNumeric, mustBePositive} = 50 < span class = "org-comment" > % [kg]< / span >
args.Rz_period (1,1) double {mustBeNumeric, mustBePositive} = 1 < span class = "org-comment" > % [s]< / span >
2020-01-15 16:23:40 +01:00
< span class = "org-keyword" > end< / span >
< / pre >
< / div >
< / div >
< / div >
2020-02-04 18:36:27 +01:00
< div id = "outline-container-org81bafa2" class = "outline-4" >
< h4 id = "org81bafa2" > Initialize the Simulation< / h4 >
< div class = "outline-text-4" id = "text-org81bafa2" >
2020-01-15 16:23:40 +01:00
< p >
We initialize all the stages with the default parameters.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
< / pre >
< / div >
< p >
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeNanoHexapod(< span class = "org-string" > 'actuator'< / span > , args.nass_actuator);
initializeSample(< span class = "org-string" > 'mass'< / span > , args.sample_mass);
< / pre >
< / div >
< p >
We set the references to zero.
< / p >
< div class = "org-src-container" >
2020-02-04 18:36:27 +01:00
< 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 > , args.Rz_period);
2020-01-15 16:23:40 +01:00
< / pre >
< / div >
< p >
And all the controllers are set to 0.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > K = tf(zeros(6));
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K'< / span > , < span class = "org-string" > '-append'< / span > );
K_ine = tf(zeros(6));
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K_ine'< / span > , < span class = "org-string" > '-append'< / span > );
K_iff = tf(zeros(6));
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K_iff'< / span > , < span class = "org-string" > '-append'< / span > );
K_dvf = tf(zeros(6));
save(< span class = "org-string" > './mat/controllers.mat'< / span > , < span class = "org-string" > 'K_dvf'< / span > , < span class = "org-string" > '-append'< / span > );
< / pre >
< / div >
< / div >
< / div >
2019-10-18 17:34:45 +02:00
< / div >
< / div >
2019-10-08 11:13:38 +02:00
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2020-02-04 18:36:27 +01:00
< p class = "date" > Created: 2020-02-04 mar. 18:36< / p >
2019-10-08 11:13:38 +02:00
< / div >
< / body >
< / html >