2020-04-17 14:11:34 +02:00
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en" xml:lang = "en" >
< head >
2020-04-17 14:32:08 +02:00
<!-- 2020 - 04 - 17 ven. 14:32 -->
2020-04-17 14:11:34 +02:00
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" / >
< title > Decentralize control to add virtual mass< / title >
< meta name = "generator" content = "Org mode" / >
< meta name = "author" content = "Dehaeze Thomas" / >
< link rel = "stylesheet" type = "text/css" href = "./css/htmlize.css" / >
< link rel = "stylesheet" type = "text/css" href = "./css/readtheorg.css" / >
< script src = "./js/jquery.min.js" > < / script >
< script src = "./js/bootstrap.min.js" > < / script >
< script src = "./js/jquery.stickytableheaders.min.js" > < / script >
< script src = "./js/readtheorg.js" > < / script >
< script > M a t h J a x = {
tex: {
tags: 'ams',
macros: {bm: ["\\boldsymbol{#1}",1],}
}
};
< / script >
< script type = "text/javascript" src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" > < / script >
< / head >
< body >
< div id = "org-div-home-and-up" >
< a accesskey = "h" href = "./index.html" > UP < / a >
|
< a accesskey = "H" href = "./index.html" > HOME < / a >
< / div > < div id = "content" >
< h1 class = "title" > Decentralize control to add virtual mass< / h1 >
< div id = "table-of-contents" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" >
< ul >
< li > < a href = "#org982b263" > 1. Initialization< / a > < / li >
2020-04-17 14:32:08 +02:00
< li > < a href = "#org35a3822" > 2. Identification< / a > < / li >
2020-04-17 14:11:34 +02:00
< li > < a href = "#orgd6fc719" > 3. Adding Virtual Mass in the Leg’ s Space< / a >
< ul >
2020-04-17 14:32:08 +02:00
< li > < a href = "#org9ed2d4c" > 3.1. Plant< / a > < / li >
< li > < a href = "#org4f03a34" > 3.2. Controller Design< / a > < / li >
< li > < a href = "#org2fe0ce0" > 3.3. Identification of the Primary Plant< / a > < / li >
2020-04-17 14:11:34 +02:00
< / ul >
< / li >
< li > < a href = "#orgc9131d0" > 4. Adding Virtual Mass in the Task Space< / a >
< ul >
2020-04-17 14:32:08 +02:00
< li > < a href = "#orga27c9a0" > 4.1. Plant< / a > < / li >
< li > < a href = "#orgcbce41a" > 4.2. Controller Design< / a > < / li >
< li > < a href = "#orgca1f525" > 4.3. Identification of the Primary Plant< / a > < / li >
2020-04-17 14:11:34 +02:00
< / ul >
< / li >
< / ul >
< / div >
< / div >
< div id = "outline-container-org982b263" class = "outline-2" >
< h2 id = "org982b263" > < span class = "section-number-2" > 1< / span > Initialization< / h2 >
< div class = "outline-text-2" id = "text-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeSimscapeConfiguration();
initializeDisturbances(< span class = "org-string" > 'enable'< / span > , < span class = "org-constant" > false< / span > );
initializeLoggingConfiguration(< span class = "org-string" > 'log'< / span > , < span class = "org-string" > 'none'< / span > );
initializeController(< span class = "org-string" > 'type'< / span > , < span class = "org-string" > 'hac-dvf'< / span > );
< / pre >
< / div >
2020-04-17 14:32:08 +02:00
< p >
The nano-hexapod has the following leg’ s stiffness and damping.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeNanoHexapod(< span class = "org-string" > 'k'< / span > , 1e5, < span class = "org-string" > 'c'< / span > , 2e2);
< / pre >
< / div >
2020-04-17 14:11:34 +02:00
< p >
We set the stiffness of the payload fixation:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kp = 1e8; < span class = "org-comment" > % [N/m]< / span >
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org35a3822" class = "outline-2" >
< h2 id = "org35a3822" > < span class = "section-number-2" > 2< / span > Identification< / h2 >
< div class = "outline-text-2" id = "text-2" >
< p >
We identify the system for the following payload masses:
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Ms = [1, 10, 50];
< / pre >
< / div >
< p >
2020-04-17 14:32:08 +02:00
Identification of the transfer function from \(\tau\) to \(d\mathcal{L}\).
Identification of the Primary plant without virtual add of mass
2020-04-17 14:11:34 +02:00
< / p >
< / div >
< / div >
< div id = "outline-container-orgd6fc719" class = "outline-2" >
< h2 id = "orgd6fc719" > < span class = "section-number-2" > 3< / span > Adding Virtual Mass in the Leg’ s Space< / h2 >
< div class = "outline-text-2" id = "text-3" >
< / div >
2020-04-17 14:32:08 +02:00
< div id = "outline-container-org9ed2d4c" class = "outline-3" >
< h3 id = "org9ed2d4c" > < span class = "section-number-3" > 3.1< / span > Plant< / h3 >
2020-04-17 14:11:34 +02:00
< div class = "outline-text-3" id = "text-3-1" >
< div id = "org98e7ba8" class = "figure" >
< p > < img src = "figs/virtual_mass_plant_L.png" alt = "virtual_mass_plant_L.png" / >
< / p >
< p > < span class = "figure-number" > Figure 1: < / span > Transfer function from \(\tau_i\) to \(d\mathcal{L}_i\) for three payload masses< / p >
< / div >
< / div >
< / div >
2020-04-17 14:32:08 +02:00
< div id = "outline-container-org4f03a34" class = "outline-3" >
< h3 id = "org4f03a34" > < span class = "section-number-3" > 3.2< / span > Controller Design< / h3 >
2020-04-17 14:11:34 +02:00
< div class = "outline-text-3" id = "text-3-2" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kdvf = 10< span class = "org-type" > *< / span > s< span class = "org-type" > ^< / span > 2< span class = "org-type" > /< / span > (1< span class = "org-type" > +< / span > s< span class = "org-type" > /< / span > 2< span class = "org-type" > /< / span > < span class = "org-constant" > pi< / span > < span class = "org-type" > /< / span > 500)< span class = "org-type" > ^< / span > 2< span class = "org-type" > *< / span > eye(6);
< / pre >
< / div >
< div id = "orgccb3b9e" class = "figure" >
< p > < img src = "figs/virtual_mass_loop_gain_L.png" alt = "virtual_mass_loop_gain_L.png" / >
< / p >
< p > < span class = "figure-number" > Figure 2: < / span > Loop Gain for the addition of virtual mass in the leg’ s space< / p >
< / div >
< / div >
< / div >
2020-04-17 14:32:08 +02:00
< div id = "outline-container-org2fe0ce0" class = "outline-3" >
< h3 id = "org2fe0ce0" > < span class = "section-number-3" > 3.3< / span > Identification of the Primary Plant< / h3 >
2020-04-17 14:11:34 +02:00
< div class = "outline-text-3" id = "text-3-3" >
< div id = "orgd49505e" class = "figure" >
< p > < img src = "figs/virtual_mass_L_primary_plant_X.png" alt = "virtual_mass_L_primary_plant_X.png" / >
< / p >
< p > < span class = "figure-number" > Figure 3: < / span > Comparison of the transfer function from \(\mathcal{F}_{x,y,z}\) to \(\mathcal{X}_{x,y,z}\) with and without the virtual addition of mass in the leg’ s space< / p >
< / div >
< div id = "org2281744" class = "figure" >
< p > < img src = "figs/virtual_mass_L_primary_plant_L.png" alt = "virtual_mass_L_primary_plant_L.png" / >
< / p >
< p > < span class = "figure-number" > Figure 4: < / span > Comparison of the transfer function from \(\tau_i\) to \(\mathcal{L}_{i}\) with and without the virtual addition of mass in the leg’ s space< / p >
< / div >
< / div >
< / div >
< / div >
< div id = "outline-container-orgc9131d0" class = "outline-2" >
< h2 id = "orgc9131d0" > < span class = "section-number-2" > 4< / span > Adding Virtual Mass in the Task Space< / h2 >
< div class = "outline-text-2" id = "text-4" >
< / div >
2020-04-17 14:32:08 +02:00
< div id = "outline-container-orga27c9a0" class = "outline-3" >
< h3 id = "orga27c9a0" > < span class = "section-number-3" > 4.1< / span > Plant< / h3 >
2020-04-17 14:11:34 +02:00
< div class = "outline-text-3" id = "text-4-1" >
< p >
Let’ s look at the transfer function from \(\bm{\mathcal{F}}\) to \(d\bm{\mathcal{X}}\):
\[ \frac{d\bm{\mathcal{L}}}{\bm{\mathcal{F}}} = \bm{J}^{-1} \frac{d\bm{\mathcal{L}}}{\bm{\tau}} \bm{J}^{-T} \]
< / p >
< div id = "org6488b4c" class = "figure" >
< p > < img src = "figs/virtual_mass_plant_X.png" alt = "virtual_mass_plant_X.png" / >
< / p >
< p > < span class = "figure-number" > Figure 5: < / span > Dynamics from \(\mathcal{F}_{x,y,z}\) to \(\mathcal{X}_{x,y,z}\) used for virtual mass addition in the task space< / p >
< / div >
< / div >
< / div >
2020-04-17 14:32:08 +02:00
< div id = "outline-container-orgcbce41a" class = "outline-3" >
< h3 id = "orgcbce41a" > < span class = "section-number-3" > 4.2< / span > Controller Design< / h3 >
2020-04-17 14:11:34 +02:00
< div class = "outline-text-3" id = "text-4-2" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > KmX = (s< span class = "org-type" > ^< / span > 2< span class = "org-type" > *< / span > 1< span class = "org-type" > /< / span > (1< span class = "org-type" > +< / span > s< span class = "org-type" > /< / span > 2< span class = "org-type" > /< / span > < span class = "org-constant" > pi< / span > < span class = "org-type" > /< / span > 500)< span class = "org-type" > ^< / span > 2< span class = "org-type" > *< / span > diag([1 1 50 0 0 0]));
< / pre >
< / div >
< div id = "orgf411330" class = "figure" >
< p > < img src = "figs/virtual_mass_loop_gain_X.png" alt = "virtual_mass_loop_gain_X.png" / >
< / p >
< p > < span class = "figure-number" > Figure 6: < / span > Loop gain for virtual mass addition in the task space< / p >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kdvf = inv(nano_hexapod.J< span class = "org-type" > '< / span > )< span class = "org-type" > *< / span > KmX< span class = "org-type" > *< / span > inv(nano_hexapod.J);
< / pre >
< / div >
< / div >
< / div >
2020-04-17 14:32:08 +02:00
< div id = "outline-container-orgca1f525" class = "outline-3" >
< h3 id = "orgca1f525" > < span class = "section-number-3" > 4.3< / span > Identification of the Primary Plant< / h3 >
2020-04-17 14:11:34 +02:00
< div class = "outline-text-3" id = "text-4-3" >
< div id = "orge1df87b" class = "figure" >
< p > < img src = "figs/virtual_mass_X_primary_plant_X.png" alt = "virtual_mass_X_primary_plant_X.png" / >
< / p >
< p > < span class = "figure-number" > Figure 7: < / span > Comparison of the transfer function from \(\mathcal{F}_{x,y,z}\) to \(\mathcal{X}_{x,y,z}\) with and without the virtual addition of mass in the task space< / p >
< / div >
< div id = "org647b748" class = "figure" >
< p > < img src = "figs/virtual_mass_X_primary_plant_L.png" alt = "virtual_mass_X_primary_plant_L.png" / >
< / p >
< p > < span class = "figure-number" > Figure 8: < / span > Comparison of the transfer function from \(\tau_i\) to \(\mathcal{L}_{i}\) with and without the virtual addition of mass in the task space< / p >
< / div >
< / div >
< / div >
< / div >
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2020-04-17 14:32:08 +02:00
< p class = "date" > Created: 2020-04-17 ven. 14:32< / p >
2020-04-17 14:11:34 +02:00
< / div >
< / body >
< / html >