2020-04-08 22:53:43 +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-05-05 11:38:52 +02:00
<!-- 2020 - 05 - 05 mar. 10:34 -->
2020-04-08 22:53:43 +02:00
< meta http-equiv = "Content-Type" content = "text/html;charset=utf-8" / >
< title > Control of the NASS with optimal stiffness< / title >
< meta name = "generator" content = "Org mode" / >
< meta name = "author" content = "Dehaeze Thomas" / >
< link rel = "stylesheet" type = "text/css" href = "./css/htmlize.css" / >
< link rel = "stylesheet" type = "text/css" href = "./css/readtheorg.css" / >
2020-04-17 10:25:44 +02:00
< 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 >
2020-04-08 22:53:43 +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" >
< h1 class = "title" > Control of the NASS with optimal stiffness< / h1 >
< div id = "table-of-contents" >
< h2 > Table of Contents< / h2 >
< div id = "text-table-of-contents" >
< ul >
2020-04-17 10:25:44 +02:00
< li > < a href = "#org99c5b6d" > 1. Low Authority Control - Decentralized Direct Velocity Feedback< / a >
2020-04-08 22:53:43 +02:00
< ul >
< li > < a href = "#orgf3f8aed" > 1.1. Initialization< / a > < / li >
2020-04-17 10:25:44 +02:00
< li > < a href = "#orgc5a1e81" > 1.2. Identification< / a > < / li >
< li > < a href = "#orgfef1a3f" > 1.3. Controller Design< / a > < / li >
< li > < a href = "#org3c73014" > 1.4. Effect of the Low Authority Control on the Primary Plant< / a > < / li >
< li > < a href = "#orgee5dbee" > 1.5. Effect of the Low Authority Control on the Sensibility to Disturbances< / a > < / li >
2020-05-05 11:38:52 +02:00
< li > < a href = "#org8c0882d" > 1.6. Conclusion< / a > < / li >
2020-04-08 22:53:43 +02:00
< / ul >
< / li >
2020-04-17 10:25:44 +02:00
< li > < a href = "#org81dc0a8" > 2. Primary Control in the leg space< / a >
2020-04-08 22:53:43 +02:00
< ul >
2020-04-17 10:25:44 +02:00
< li > < a href = "#org1e7a412" > 2.1. Plant in the leg space< / a > < / li >
< li > < a href = "#orgf39520c" > 2.2. Control in the leg space< / a > < / li >
< li > < a href = "#org16d192f" > 2.3. Sensibility to Disturbances and Noise Budget< / a > < / li >
2020-05-05 11:38:52 +02:00
< li > < a href = "#org8f34c09" > 2.4. Simulations of Tomography Experiment< / a > < / li >
2020-04-17 10:25:44 +02:00
< li > < a href = "#orgbeadec8" > 2.5. Results< / a > < / li >
2020-05-05 11:38:52 +02:00
< li > < a href = "#orgf709759" > 2.6. Actuator Stroke and Forces< / a > < / li >
< li > < a href = "#orgb0f5db9" > 2.7. Conclusion< / a > < / li >
2020-04-17 10:25:44 +02:00
< / ul >
< / li >
2020-05-05 11:38:52 +02:00
< li > < a href = "#org56b28cd" > 3. Further More complex simulations< / a >
2020-04-17 10:25:44 +02:00
< ul >
2020-05-05 11:38:52 +02:00
< li > < a href = "#org6c1ddb5" > 3.1. Simulation with Micro-Hexapod Offset< / a >
2020-04-17 10:25:44 +02:00
< ul >
2020-05-05 11:38:52 +02:00
< li > < a href = "#org57e2cfd" > 3.1.1. Simulation< / a > < / li >
< li > < a href = "#org2c93370" > 3.1.2. Results< / a > < / li >
2020-04-17 10:25:44 +02:00
< / ul >
< / li >
2020-05-05 11:38:52 +02:00
< li > < a href = "#org5cb899b" > 3.2. Simultaneous Translation scans and Spindle’ s rotation< / a >
< ul >
< li > < a href = "#org6710f28" > 3.2.1. Simulation< / a > < / li >
< li > < a href = "#org035df39" > 3.2.2. Results< / a > < / li >
< / ul >
< / li >
< / ul >
< / li >
< li > < a href = "#org9bd2bf8" > 4. Primary Control in the task space< / a >
< ul >
< li > < a href = "#org07b4a9d" > 4.1. Plant in the task space< / a > < / li >
< li > < a href = "#org7d888f9" > 4.2. Control in the task space< / a >
< ul >
< li > < a href = "#orgb28634b" > 4.2.1. Stability< / a > < / li >
< / ul >
< / li >
< li > < a href = "#org9ea6a0a" > 4.3. Simulation< / a > < / li >
< li > < a href = "#org21304f7" > 4.4. Conclusion< / a > < / li >
2020-04-08 22:53:43 +02:00
< / ul >
< / li >
< / ul >
< / div >
< / div >
2020-04-17 10:25:44 +02:00
< div id = "outline-container-org99c5b6d" class = "outline-2" >
< h2 id = "org99c5b6d" > < span class = "section-number-2" > 1< / span > Low Authority Control - Decentralized Direct Velocity Feedback< / h2 >
2020-04-08 22:53:43 +02:00
< div class = "outline-text-2" id = "text-1" >
2020-04-17 10:25:44 +02:00
< p >
< a id = "orgfec42cb" > < / a >
< / p >
< div id = "org7f11a74" class = "figure" >
< p > < img src = "figs/control_architecture_dvf.png" alt = "control_architecture_dvf.png" / >
< / p >
< p > < span class = "figure-number" > Figure 1: < / span > Low Authority Control: Decentralized Direct Velocity Feedback< / p >
< / div >
2020-04-08 22:53:43 +02:00
< / div >
< div id = "outline-container-orgf3f8aed" class = "outline-3" >
< h3 id = "orgf3f8aed" > < span class = "section-number-3" > 1.1< / span > Initialization< / h3 >
< div class = "outline-text-3" id = "text-1-1" >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeGround();
initializeGranite();
initializeTy();
initializeRy();
initializeRz();
initializeMicroHexapod();
initializeAxisc();
initializeMirror();
initializeSimscapeConfiguration();
2020-05-05 11:38:52 +02:00
initializeDisturbances('enable', false);
initializeLoggingConfiguration('log', 'none');
2020-04-17 10:25:44 +02:00
2020-05-05 11:38:52 +02:00
initializeController('type', 'hac-dvf');
2020-04-08 22:53:43 +02:00
< / pre >
< / div >
2020-04-17 10:25:44 +02:00
< p >
We set the stiffness of the payload fixation:
< / p >
2020-04-08 22:53:43 +02:00
< div class = "org-src-container" >
2020-05-05 11:38:52 +02:00
< pre class = "src src-matlab" > Kp = 1e8; % [N/m]
2020-04-08 22:53:43 +02:00
< / pre >
< / div >
< / div >
< / div >
2020-04-17 10:25:44 +02:00
< div id = "outline-container-orgc5a1e81" class = "outline-3" >
< h3 id = "orgc5a1e81" > < span class = "section-number-3" > 1.2< / span > Identification< / h3 >
2020-04-08 22:53:43 +02:00
< div class = "outline-text-3" id = "text-1-2" >
< div class = "org-src-container" >
2020-04-17 10:25:44 +02:00
< pre class = "src src-matlab" > K = tf(zeros(6));
Kdvf = tf(zeros(6));
2020-04-08 22:53:43 +02:00
< / pre >
< / div >
2020-04-17 10:25:44 +02:00
< p >
We identify the system for the following payload masses:
< / p >
2020-04-08 22:53:43 +02:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > Ms = [1, 10, 50];
< / pre >
< / div >
2020-04-17 10:25:44 +02:00
< p >
The nano-hexapod has the following leg’ s stiffness and damping.
< / p >
2020-04-08 22:53:43 +02:00
< div class = "org-src-container" >
2020-05-05 11:38:52 +02:00
< pre class = "src src-matlab" > initializeNanoHexapod('k', 1e5, 'c', 2e2);
2020-04-08 22:53:43 +02:00
< / pre >
< / div >
< / div >
< / div >
2020-04-17 10:25:44 +02:00
< div id = "outline-container-orgfef1a3f" class = "outline-3" >
< h3 id = "orgfef1a3f" > < span class = "section-number-3" > 1.3< / span > Controller Design< / h3 >
2020-04-08 22:53:43 +02:00
< div class = "outline-text-3" id = "text-1-3" >
< p >
2020-04-17 10:25:44 +02:00
The obtain dynamics from actuators forces \(\tau_i\) to the relative motion of the legs \(d\mathcal{L}_i\) is shown in Figure < a href = "#orgdb7af3b" > 2< / a > for the three considered payload masses.
< / p >
< p >
The Root Locus is shown in Figure < a href = "#org5814b4f" > 3< / a > and wee see that we have unconditional stability.
< / p >
< p >
In order to choose the gain such that we obtain good damping for all the three payload masses, we plot the damping ration of the modes as a function of the gain for all three payload masses in Figure < a href = "#orgb16b2c3" > 4< / a > .
< / p >
< div id = "orgdb7af3b" class = "figure" >
< p > < img src = "figs/opt_stiff_dvf_plant.png" alt = "opt_stiff_dvf_plant.png" / >
2020-04-08 22:53:43 +02:00
< / p >
2020-04-17 10:25:44 +02:00
< p > < span class = "figure-number" > Figure 2: < / span > Dynamics for the Direct Velocity Feedback active damping for three payload masses< / p >
< / div >
2020-04-08 22:53:43 +02:00
2020-04-17 10:25:44 +02:00
< div id = "org5814b4f" class = "figure" >
< p > < img src = "figs/opt_stiff_dvf_root_locus.png" alt = "opt_stiff_dvf_root_locus.png" / >
2020-04-08 22:53:43 +02:00
< / p >
2020-04-17 10:25:44 +02:00
< p > < span class = "figure-number" > Figure 3: < / span > Root Locus for the DVF controll for three payload masses< / p >
2020-04-08 22:53:43 +02:00
< / div >
< p >
Damping as function of the gain
< / p >
2020-04-17 10:25:44 +02:00
< div id = "orgb16b2c3" class = "figure" >
< p > < img src = "figs/opt_stiff_dvf_damping_gain.png" alt = "opt_stiff_dvf_damping_gain.png" / >
< / p >
< p > < span class = "figure-number" > Figure 4: < / span > Damping ratio of the poles as a function of the DVF gain< / p >
< / div >
< p >
Finally, we use the following controller for the Decentralized Direct Velocity Feedback:
< / p >
< div class = "org-src-container" >
2020-05-05 11:38:52 +02:00
< pre class = "src src-matlab" > Kdvf = 5e3*s/(1+s/2/pi/1e3)*eye(6);
2020-04-17 10:25:44 +02:00
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org3c73014" class = "outline-3" >
< h3 id = "org3c73014" > < span class = "section-number-3" > 1.4< / span > Effect of the Low Authority Control on the Primary Plant< / h3 >
< div class = "outline-text-3" id = "text-1-4" >
< p >
Let’ s identify the dynamics from actuator forces \(\bm{\tau}\) to displacement as measured by the metrology \(\bm{\mathcal{X}}\):
\[ \bm{G}(s) = \frac{\bm{\mathcal{X}}}{\bm{\tau}} \]
We do so both when the DVF is applied and when it is not applied.
< / p >
< p >
Then, we compute the transfer function from forces applied by the actuators \(\bm{\mathcal{F}}\) to the measured position error in the frame of the nano-hexapod \(\bm{\epsilon}_{\mathcal{X}_n}\):
\[ \bm{G}_\mathcal{X}(s) = \frac{\bm{\epsilon}_{\mathcal{X}_n}}{\bm{\mathcal{F}}} = \bm{G}(s) \bm{J}^{-T} \]
The obtained dynamics is shown in Figure < a href = "#org45c1265" > 5< / a > .
< / p >
2020-04-17 14:11:34 +02:00
< div class = "important" >
< p >
A zero with a positive real part is introduced in the transfer function from \(\mathcal{F}_y\) to \(\mathcal{X}_y\) after Decentralized Direct Velocity Feedback is applied.
< / p >
< / div >
2020-04-17 10:25:44 +02:00
< p >
And we compute the transfer function from actuator forces \(\bm{\tau}\) to position error of each leg \(\bm{\epsilon}_\mathcal{L}\):
\[ \bm{G}_\mathcal{L} = \frac{\bm{\epsilon}_\mathcal{L}}{\bm{\tau}} = \bm{J} \bm{G}(s) \]
The obtained dynamics is shown in Figure < a href = "#org069e296" > 6< / a > .
< / p >
< div id = "org45c1265" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_plant_damped_X.png" alt = "opt_stiff_primary_plant_damped_X.png" / >
< / p >
< p > < span class = "figure-number" > Figure 5: < / span > Primary plant in the task space with (dashed) and without (solid) Direct Velocity Feedback< / p >
< / div >
< div id = "org069e296" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_plant_damped_L.png" alt = "opt_stiff_primary_plant_damped_L.png" / >
< / p >
< p > < span class = "figure-number" > Figure 6: < / span > Primary plant in the space of the legs with (dashed) and without (solid) Direct Velocity Feedback< / p >
< / div >
< p >
The coupling (off diagonal elements) of \(\bm{G}_\mathcal{X}\) are shown in Figure < a href = "#orgbb4e497" > 7< / a > both when DVF is applied and when it is not.
< / p >
< p >
The coupling does not change a lot with DVF.
< / p >
< p >
The coupling in the space of the legs \(\bm{G}_\mathcal{L}\) are shown in Figure < a href = "#orgc43d759" > 8< / a > .
< / p >
2020-04-17 14:11:34 +02:00
< div class = "important" >
< p >
The magnitude of the coupling between \(\tau_i\) and \(d\mathcal{L}_j\) (Figure < a href = "#orgc43d759" > 8< / a > ) around the resonance of the nano-hexapod (where the coupling is the highest) is considerably reduced when DVF is applied.
< / p >
< / div >
2020-04-17 10:25:44 +02:00
< div id = "orgbb4e497" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_plant_damped_coupling_X.png" alt = "opt_stiff_primary_plant_damped_coupling_X.png" / >
< / p >
< p > < span class = "figure-number" > Figure 7: < / span > Coupling in the primary plant in the task with (dashed) and without (solid) Direct Velocity Feedback< / p >
< / div >
< div id = "orgc43d759" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_plant_damped_coupling_L.png" alt = "opt_stiff_primary_plant_damped_coupling_L.png" / >
< / p >
< p > < span class = "figure-number" > Figure 8: < / span > Coupling in the primary plant in the space of the legs with (dashed) and without (solid) Direct Velocity Feedback< / p >
< / div >
< / div >
< / div >
< div id = "outline-container-orgee5dbee" class = "outline-3" >
< h3 id = "orgee5dbee" > < span class = "section-number-3" > 1.5< / span > Effect of the Low Authority Control on the Sensibility to Disturbances< / h3 >
< div class = "outline-text-3" id = "text-1-5" >
< p >
We may now see how Decentralized Direct Velocity Feedback changes the sensibility to disturbances, namely:
< / p >
< ul class = "org-ul" >
< li > Ground motion< / li >
< li > Spindle and Translation stage vibrations< / li >
< li > Direct forces applied to the sample< / li >
< / ul >
< p >
To simplify the analysis, we here only consider the vertical direction, thus, we will look at the transfer functions:
< / p >
< ul class = "org-ul" >
< li > from vertical ground motion \(D_{w,z}\) to the vertical position error of the sample \(E_z\)< / li >
< li > from vertical vibration forces of the spindle \(F_{R_z,z}\) to \(E_z\)< / li >
< li > from vertical vibration forces of the translation stage \(F_{T_y,z}\) to \(E_z\)< / li >
< li > from vertical direct forces (such as cable forces) \(F_{d,z}\) to \(E_z\)< / li >
< / ul >
< p >
The norm of these transfer functions are shown in Figure < a href = "#org199898b" > 9< / a > .
< / p >
< div id = "org199898b" class = "figure" >
< p > < img src = "figs/opt_stiff_sensibility_dist_dvf.png" alt = "opt_stiff_sensibility_dist_dvf.png" / >
< / p >
< p > < span class = "figure-number" > Figure 9: < / span > Norm of the transfer function from vertical disturbances to vertical position error with (dashed) and without (solid) Direct Velocity Feedback applied< / p >
2020-04-17 14:11:34 +02:00
< / div >
< div class = "important" >
< p >
Decentralized Direct Velocity Feedback is shown to increase the effect of stages vibrations at high frequency and to reduce the effect of ground motion and direct forces at low frequency.
< / p >
2020-04-17 10:25:44 +02:00
< / div >
< / div >
< / div >
2020-05-05 11:38:52 +02:00
< div id = "outline-container-org8c0882d" class = "outline-3" >
< h3 id = "org8c0882d" > < span class = "section-number-3" > 1.6< / span > Conclusion< / h3 >
2020-04-17 10:25:44 +02:00
< div class = "outline-text-3" id = "text-1-6" >
< div class = "important" >
< p >
< / p >
2020-04-08 22:53:43 +02:00
< / div >
< / div >
< / div >
2020-04-17 10:25:44 +02:00
< / div >
< div id = "outline-container-org81dc0a8" class = "outline-2" >
< h2 id = "org81dc0a8" > < span class = "section-number-2" > 2< / span > Primary Control in the leg space< / h2 >
2020-04-08 22:53:43 +02:00
< div class = "outline-text-2" id = "text-2" >
2020-04-17 10:25:44 +02:00
< p >
< a id = "orgd0beb6a" > < / a >
< / p >
< p >
In this section we implement the control architecture shown in Figure < a href = "#org7d5c8bc" > 10< / a > consisting of:
< / p >
< ul class = "org-ul" >
< li > an inner loop with a decentralized direct velocity feedback control< / li >
< li > an outer loop where the controller \(\bm{K}_\mathcal{L}\) is designed in the frame of the legs< / li >
< / ul >
< div id = "org7d5c8bc" class = "figure" >
< p > < img src = "figs/control_architecture_hac_dvf_pos_L.png" alt = "control_architecture_hac_dvf_pos_L.png" / >
< / p >
< p > < span class = "figure-number" > Figure 10: < / span > Cascade Control Architecture. The inner loop consist of a decentralized Direct Velocity Feedback. The outer loop consist of position control in the leg’ s space< / p >
2020-04-08 22:53:43 +02:00
< / div >
2020-04-17 10:25:44 +02:00
< p >
The controller for decentralized direct velocity feedback is the one designed in Section < a href = "#orgfec42cb" > 1< / a > .
< / p >
2020-04-08 22:53:43 +02:00
< / div >
2020-04-17 10:25:44 +02:00
< div id = "outline-container-org1e7a412" class = "outline-3" >
< h3 id = "org1e7a412" > < span class = "section-number-3" > 2.1< / span > Plant in the leg space< / h3 >
< div class = "outline-text-3" id = "text-2-1" >
< p >
2020-04-17 14:11:34 +02:00
We now look at the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the design of \(\bm{K}_\mathcal{L}\).
2020-04-17 10:25:44 +02:00
< / p >
2020-04-08 22:53:43 +02:00
2020-04-17 10:25:44 +02:00
< p >
The diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the three considered masses are shown in Figure < a href = "#org23d23ae" > 11< / a > .
< / p >
< p >
The plant dynamics below \(100\ [Hz]\) is only slightly dependent on the payload mass.
< / p >
< div id = "org23d23ae" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_plant_L.png" alt = "opt_stiff_primary_plant_L.png" / >
< / p >
< p > < span class = "figure-number" > Figure 11: < / span > Diagonal elements of the transfer function matrix from \(\bm{\tau}^\prime\) to \(\bm{\epsilon}_{\mathcal{X}_n}\) for the three considered masses< / p >
2020-04-08 22:53:43 +02:00
< / div >
< / div >
2020-04-17 10:25:44 +02:00
< / div >
< div id = "outline-container-orgf39520c" class = "outline-3" >
< h3 id = "orgf39520c" > < span class = "section-number-3" > 2.2< / span > Control in the leg space< / h3 >
< div class = "outline-text-3" id = "text-2-2" >
< p >
We design a diagonal controller with all the same diagonal elements.
< / p >
2020-04-08 22:53:43 +02:00
2020-04-17 10:25:44 +02:00
< p >
The requirements for the controller are:
< / p >
< ul class = "org-ul" >
< li > Crossover frequency of around 100Hz< / li >
< li > Stable for all the considered payload masses< / li >
< li > Sufficient phase and gain margin< / li >
< li > Integral action at low frequency< / li >
< / ul >
< p >
The design controller is as follows:
< / p >
< ul class = "org-ul" >
< li > Lead centered around the crossover< / li >
< li > An integrator below 10Hz< / li >
< li > A low pass filter at 250Hz< / li >
< / ul >
< p >
The loop gain is shown in Figure < a href = "#orgbcc0acb" > 12< / a > .
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > h = 2.0;
2020-05-05 11:38:52 +02:00
Kl = 2e7 * eye(6) * ...
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
1/h*(s/(2*pi*200/h) + 1)/(s/(2*pi*200*h) + 1) * ...
(s/2/pi/10 + 1)/(s/2/pi/10) * ...
1/(1 + s/2/pi/300);
2020-04-17 10:25:44 +02:00
< / pre >
< / div >
< div id = "orgbcc0acb" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_loop_gain_L.png" alt = "opt_stiff_primary_loop_gain_L.png" / >
< / p >
< p > < span class = "figure-number" > Figure 12: < / span > Loop gain for the primary plant< / p >
< / div >
2020-04-17 14:11:34 +02:00
< p >
Finally, we include the Jacobian in the control and we ignore the measurement of the vertical rotation as for the real system.
< / p >
2020-04-17 10:25:44 +02:00
< div class = "org-src-container" >
2020-05-05 11:38:52 +02:00
< pre class = "src src-matlab" > load('mat/stages.mat', 'nano_hexapod');
K = Kl*nano_hexapod.kinematics.J*diag([1, 1, 1, 1, 1, 0]);
2020-04-17 10:25:44 +02:00
< / pre >
< / div >
< / div >
< / div >
2020-04-17 14:11:34 +02:00
2020-04-17 10:25:44 +02:00
< div id = "outline-container-org16d192f" class = "outline-3" >
< h3 id = "org16d192f" > < span class = "section-number-3" > 2.3< / span > Sensibility to Disturbances and Noise Budget< / h3 >
< div class = "outline-text-3" id = "text-2-3" >
< p >
We identify the transfer function from disturbances to the position error of the sample when the HAC-LAC control is applied.
< / p >
< p >
We compare the norm of these transfer function for the vertical direction when no control is applied and when HAC-LAC control is applied: Figure < a href = "#org9650e03" > 13< / a > .
< / p >
< div id = "org9650e03" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_control_L_senbility_dist.png" alt = "opt_stiff_primary_control_L_senbility_dist.png" / >
< / p >
< p > < span class = "figure-number" > Figure 13: < / span > Sensibility to disturbances when the HAC-LAC control is applied< / p >
< / div >
< p >
Then, we load the Power Spectral Density of the perturbations and we look at the obtained PSD of the displacement error in the vertical direction due to the disturbances:
< / p >
< ul class = "org-ul" >
< li > Figure < a href = "#org32928e0" > 14< / a > : Amplitude Spectral Density of the vertical position error due to both the vertical ground motion and the vertical vibrations of the spindle< / li >
< li > Figure < a href = "#org7fda8f7" > 15< / a > : Comparison of the Amplitude Spectral Density of the vertical position error in Open Loop and with the HAC-DVF Control< / li >
< li > Figure < a href = "#org073608b" > 16< / a > : Comparison of the Cumulative Amplitude Spectrum of the vertical position error in Open Loop and with the HAC-DVF Control< / li >
< / ul >
< div id = "org32928e0" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_control_L_psd_dist.png" alt = "opt_stiff_primary_control_L_psd_dist.png" / >
< / p >
< p > < span class = "figure-number" > Figure 14: < / span > Amplitude Spectral Density of the vertical position error of the sample when the HAC-DVF control is applied due to both the ground motion and spindle vibrations< / p >
< / div >
< div id = "org7fda8f7" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_control_L_psd_tot.png" alt = "opt_stiff_primary_control_L_psd_tot.png" / >
< / p >
< p > < span class = "figure-number" > Figure 15: < / span > Amplitude Spectral Density of the vertical position error of the sample in Open-Loop and when the HAC-DVF control is applied< / p >
< / div >
< div id = "org073608b" class = "figure" >
< p > < img src = "figs/opt_stiff_primary_control_L_cas_tot.png" alt = "opt_stiff_primary_control_L_cas_tot.png" / >
< / p >
< p > < span class = "figure-number" > Figure 16: < / span > Cumulative Amplitude Spectrum of the vertical position error of the sample in Open-Loop and when the HAC-DVF control is applied< / p >
< / div >
< / div >
< / div >
2020-05-05 11:38:52 +02:00
< div id = "outline-container-org8f34c09" class = "outline-3" >
< h3 id = "org8f34c09" > < span class = "section-number-3" > 2.4< / span > Simulations of Tomography Experiment< / h3 >
2020-04-17 10:25:44 +02:00
< div class = "outline-text-3" id = "text-2-4" >
< p >
Let’ s now simulate a tomography experiment.
To do so, we include all disturbances except vibrations of the translation stage.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeDisturbances();
2020-05-05 11:38:52 +02:00
initializeSimscapeConfiguration('gravity', false);
initializeLoggingConfiguration('log', 'all');
2020-04-17 10:25:44 +02:00
< / pre >
< / div >
< p >
And we run the simulation for all three payload Masses.
< / p >
< / div >
< / div >
< div id = "outline-container-orgbeadec8" class = "outline-3" >
< h3 id = "orgbeadec8" > < span class = "section-number-3" > 2.5< / span > Results< / h3 >
< div class = "outline-text-3" id = "text-2-5" >
< p >
Let’ s now see how this controller performs.
< / p >
< p >
First, we compute the Power Spectral Density of the sample’ s position error and we compare it with the open loop case in Figure < a href = "#org6cab6ef" > 17< / a > .
< / p >
< p >
Similarly, the Cumulative Amplitude Spectrum is shown in Figure < a href = "#org33e9f1a" > 18< / a > .
< / p >
< p >
Finally, the time domain position error signals are shown in Figure < a href = "#orgf0f1950" > 19< / a > .
< / p >
< div id = "org6cab6ef" class = "figure" >
< p > < img src = "figs/opt_stiff_hac_dvf_L_psd_disp_error.png" alt = "opt_stiff_hac_dvf_L_psd_disp_error.png" / >
< / p >
< p > < span class = "figure-number" > Figure 17: < / span > Amplitude Spectral Density of the position error in Open Loop and with the HAC-LAC controller< / p >
< / div >
< div id = "org33e9f1a" class = "figure" >
< p > < img src = "figs/opt_stiff_hac_dvf_L_cas_disp_error.png" alt = "opt_stiff_hac_dvf_L_cas_disp_error.png" / >
< / p >
< p > < span class = "figure-number" > Figure 18: < / span > Cumulative Amplitude Spectrum of the position error in Open Loop and with the HAC-LAC controller< / p >
< / div >
< div id = "orgf0f1950" class = "figure" >
< p > < img src = "figs/opt_stiff_hac_dvf_L_pos_error.png" alt = "opt_stiff_hac_dvf_L_pos_error.png" / >
< / p >
< p > < span class = "figure-number" > Figure 19: < / span > Position Error of the sample during a tomography experiment when no control is applied and with the HAC-DVF control architecture< / p >
< / div >
< / div >
< / div >
2020-05-05 11:38:52 +02:00
< div id = "outline-container-orgf709759" class = "outline-3" >
< h3 id = "orgf709759" > < span class = "section-number-3" > 2.6< / span > Actuator Stroke and Forces< / h3 >
2020-04-17 10:25:44 +02:00
< div class = "outline-text-3" id = "text-2-6" >
2020-05-05 11:38:52 +02:00
< div id = "orgf9d6367" class = "figure" >
< p > < img src = "figs/opt_stiff_hac_dvf_L_act_force.png" alt = "opt_stiff_hac_dvf_L_act_force.png" / >
< / p >
< p > < span class = "figure-number" > Figure 20: < / span > Force applied by the actuator during the simulation< / p >
< / div >
< div id = "org11b8730" class = "figure" >
< p > < img src = "figs/opt_stiff_hac_dvf_L_act_stroke.png" alt = "opt_stiff_hac_dvf_L_act_stroke.png" / >
< / p >
< p > < span class = "figure-number" > Figure 21: < / span > Leg’ s stroke during the simulation< / p >
< / div >
< / div >
< / div >
< div id = "outline-container-orgb0f5db9" class = "outline-3" >
< h3 id = "orgb0f5db9" > < span class = "section-number-3" > 2.7< / span > Conclusion< / h3 >
< div class = "outline-text-3" id = "text-2-7" >
2020-04-17 10:25:44 +02:00
< div class = "important" >
< p >
< / p >
< / div >
< / div >
< / div >
< / div >
2020-05-05 11:38:52 +02:00
< div id = "outline-container-org56b28cd" class = "outline-2" >
< h2 id = "org56b28cd" > < span class = "section-number-2" > 3< / span > Further More complex simulations< / h2 >
2020-04-17 10:25:44 +02:00
< div class = "outline-text-2" id = "text-3" >
2020-05-05 11:38:52 +02:00
< / div >
< div id = "outline-container-org6c1ddb5" class = "outline-3" >
< h3 id = "org6c1ddb5" > < span class = "section-number-3" > 3.1< / span > Simulation with Micro-Hexapod Offset< / h3 >
< div class = "outline-text-3" id = "text-3-1" >
< / div >
< div id = "outline-container-org57e2cfd" class = "outline-4" >
< h4 id = "org57e2cfd" > < span class = "section-number-4" > 3.1.1< / span > Simulation< / h4 >
< div class = "outline-text-4" id = "text-3-1-1" >
< p >
The micro-hexapod is inducing a 10mm offset of the sample center of mass with the rotation axis.
A tomography experiment is then simulated.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeDisturbances();
initializeSimscapeConfiguration('gravity', false);
initializeLoggingConfiguration('log', 'all');
initializeSample('mass', 1, 'freq', 200);
initializeMicroHexapod('AP', [10e-3 0 0]);
initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
'Dh_pos', [10e-3; 0; 0; 0; 0; 0]);
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > load('mat/conf_simulink.mat');
set_param(conf_simulink, 'StopTime', '3');
sim('nass_model');
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org2c93370" class = "outline-4" >
< h4 id = "org2c93370" > < span class = "section-number-4" > 3.1.2< / span > Results< / h4 >
< div class = "outline-text-4" id = "text-3-1-2" >
< div id = "org6be7e46" class = "figure" >
< p > < img src = "figs/opt_stiff_hac_dvf_Dh_offset_disp_error.png" alt = "opt_stiff_hac_dvf_Dh_offset_disp_error.png" / >
< / p >
< / div >
< div id = "org07fa12d" class = "figure" >
< p > < img src = "figs/opt_stiff_hac_dvf_Dh_offset_F.png" alt = "opt_stiff_hac_dvf_Dh_offset_F.png" / >
< / p >
< / div >
< div id = "orga4d03c5" class = "figure" >
< p > < img src = "figs/opt_stiff_hac_dvf_Dh_offset_dL.png" alt = "opt_stiff_hac_dvf_Dh_offset_dL.png" / >
< / p >
< / div >
< / div >
< / div >
< / div >
< div id = "outline-container-org5cb899b" class = "outline-3" >
< h3 id = "org5cb899b" > < span class = "section-number-3" > 3.2< / span > Simultaneous Translation scans and Spindle’ s rotation< / h3 >
< div class = "outline-text-3" id = "text-3-2" >
< / div >
< div id = "outline-container-org6710f28" class = "outline-4" >
< h4 id = "org6710f28" > < span class = "section-number-4" > 3.2.1< / span > Simulation< / h4 >
< div class = "outline-text-4" id = "text-3-2-1" >
< p >
A simulation is now performed with translation scans and spindle rotation at the same time.
< / p >
< p >
The sample has a mass one 1kg, the spindle rotation speed is 60rpm and the translation scans have a period of 4s and a triangular shape.
< / p >
< div class = "org-src-container" >
< pre class = "src src-matlab" > initializeDisturbances();
initializeSimscapeConfiguration('gravity', false);
initializeLoggingConfiguration('log', 'all');
initializeSample('mass', 1, 'freq', 200);
initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
'Dy_type', 'triangular', 'Dy_amplitude', 5e-3, 'Dy_period', 4);
< / pre >
< / div >
< / div >
< / div >
< div id = "outline-container-org035df39" class = "outline-4" >
< h4 id = "org035df39" > < span class = "section-number-4" > 3.2.2< / span > Results< / h4 >
< div class = "outline-text-4" id = "text-3-2-2" >
< div id = "orgbfa1d02" class = "figure" >
< p > < img src = "figs/opt_stiff_hac_dvf_Dy_scans_disp_error.png" alt = "opt_stiff_hac_dvf_Dy_scans_disp_error.png" / >
< / p >
< / div >
< div id = "org760b96c" class = "figure" >
< p > < img src = "figs/opt_stiff_hac_dvf_Dy_scans_F.png" alt = "opt_stiff_hac_dvf_Dy_scans_F.png" / >
< / p >
< / div >
< div id = "orgae36e3d" class = "figure" >
< p > < img src = "figs/opt_stiff_hac_dvf_Dy_scans_dL.png" alt = "opt_stiff_hac_dvf_Dy_scans_dL.png" / >
< / p >
< / div >
< / div >
< / div >
< / div >
< / div >
< div id = "outline-container-org9bd2bf8" class = "outline-2" >
< h2 id = "org9bd2bf8" > < span class = "section-number-2" > 4< / span > Primary Control in the task space< / h2 >
< div class = "outline-text-2" id = "text-4" >
2020-04-17 10:25:44 +02:00
< p >
< a id = "orge9c2f9a" > < / a >
< / p >
< p >
2020-05-05 11:38:52 +02:00
In this section, the control architecture shown in Figure < a href = "#org7e70ccc" > 28< / a > is applied and consists of:
2020-04-17 10:25:44 +02:00
< / p >
< ul class = "org-ul" >
< li > an inner Low Authority Control loop consisting of a decentralized direct velocity control controller< / li >
< li > an outer loop with the primary controller \(\bm{K}_\mathcal{X}\) designed in the task space< / li >
< / ul >
< div id = "org7e70ccc" class = "figure" >
< p > < img src = "figs/control_architecture_hac_dvf_pos_X.png" alt = "control_architecture_hac_dvf_pos_X.png" / >
< / p >
2020-05-05 11:38:52 +02:00
< p > < span class = "figure-number" > Figure 28: < / span > HAC-LAC architecture< / p >
2020-04-17 10:25:44 +02:00
< / div >
< / div >
< div id = "outline-container-org07b4a9d" class = "outline-3" >
2020-05-05 11:38:52 +02:00
< h3 id = "org07b4a9d" > < span class = "section-number-3" > 4.1< / span > Plant in the task space< / h3 >
< div class = "outline-text-3" id = "text-4-1" >
2020-04-17 10:25:44 +02:00
< p >
Let’ s look \(\bm{G}_\mathcal{X}(s)\).
< / p >
< / div >
< / div >
< div id = "outline-container-org7d888f9" class = "outline-3" >
2020-05-05 11:38:52 +02:00
< h3 id = "org7d888f9" > < span class = "section-number-3" > 4.2< / span > Control in the task space< / h3 >
< div class = "outline-text-3" id = "text-4-2" >
2020-04-17 10:25:44 +02:00
< div class = "org-src-container" >
< pre class = "src src-matlab" > Kx = tf(zeros(6));
h = 2.5;
2020-05-05 11:38:52 +02:00
Kx(1,1) = 3e7 * ...
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
(s/2/pi/1 + 1)/(s/2/pi/1);
2020-04-17 10:25:44 +02:00
2020-05-05 11:38:52 +02:00
Kx(2,2) = Kx(1,1);
2020-04-17 10:25:44 +02:00
h = 2.5;
2020-05-05 11:38:52 +02:00
Kx(3,3) = 3e7 * ...
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
(s/2/pi/1 + 1)/(s/2/pi/1);
2020-04-17 10:25:44 +02:00
< / pre >
< / div >
< div class = "org-src-container" >
< pre class = "src src-matlab" > h = 1.5;
2020-05-05 11:38:52 +02:00
Kx(4,4) = 5e5 * ...
1/h*(s/(2*pi*100/h) + 1)/(s/(2*pi*100*h) + 1) * ...
(s/2/pi/1 + 1)/(s/2/pi/1);
2020-04-17 10:25:44 +02:00
2020-05-05 11:38:52 +02:00
Kx(5,5) = Kx(4,4);
2020-04-17 10:25:44 +02:00
h = 1.5;
2020-05-05 11:38:52 +02:00
Kx(6,6) = 5e4 * ...
1/h*(s/(2*pi*30/h) + 1)/(s/(2*pi*30*h) + 1) * ...
(s/2/pi/1 + 1)/(s/2/pi/1);
2020-04-17 10:25:44 +02:00
< / pre >
< / div >
< / div >
< div id = "outline-container-orgb28634b" class = "outline-4" >
2020-05-05 11:38:52 +02:00
< h4 id = "orgb28634b" > < span class = "section-number-4" > 4.2.1< / span > Stability< / h4 >
< div class = "outline-text-4" id = "text-4-2-1" >
2020-04-17 10:25:44 +02:00
< div class = "org-src-container" >
2020-05-05 11:38:52 +02:00
< pre class = "src src-matlab" > for i = 1:length(Ms)
isstable(feedback(Gm_x{i}*Kx, eye(6), -1))
end
2020-04-17 10:25:44 +02:00
< / pre >
< / div >
< / div >
< / div >
< / div >
2020-05-05 11:38:52 +02:00
< div id = "outline-container-org9ea6a0a" class = "outline-3" >
< h3 id = "org9ea6a0a" > < span class = "section-number-3" > 4.3< / span > Simulation< / h3 >
2020-04-17 10:25:44 +02:00
< / div >
2020-05-05 11:38:52 +02:00
< div id = "outline-container-org21304f7" class = "outline-3" >
< h3 id = "org21304f7" > < span class = "section-number-3" > 4.4< / span > Conclusion< / h3 >
< div class = "outline-text-3" id = "text-4-4" >
2020-04-17 10:25:44 +02:00
< div class = "important" >
< p >
< / p >
< / div >
< / div >
< / div >
2020-04-08 22:53:43 +02:00
< / div >
< / div >
< div id = "postamble" class = "status" >
< p class = "author" > Author: Dehaeze Thomas< / p >
2020-05-05 11:38:52 +02:00
< p class = "date" > Created: 2020-05-05 mar. 10:34< / p >
2020-04-08 22:53:43 +02:00
< / div >
< / body >
< / html >