nass-simscape/docs/control_active_damping.html

1688 lines
60 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-05-05 mar. 10:34 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Active Damping applied on the Simscape Model</title>
<meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
<script src="./js/jquery.min.js"></script>
<script src="./js/bootstrap.min.js"></script>
<script src="./js/jquery.stickytableheaders.min.js"></script>
<script src="./js/readtheorg.js"></script>
<script>MathJax = {
tex: {
tags: 'ams',
macros: {bm: ["\\boldsymbol{#1}",1],}
}
};
</script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</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">Active Damping applied on the Simscape Model</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgdb4b16a">1. Undamped System</a>
<ul>
<li><a href="#orgb9bb91c">1.1. Identification of the dynamics for Active Damping</a>
<ul>
<li><a href="#org25cfa54">1.1.1. Identification</a></li>
<li><a href="#org821239d">1.1.2. Obtained Plants for Active Damping</a></li>
</ul>
</li>
<li><a href="#org21a2e91">1.2. Identification of the dynamics for High Authority Control</a>
<ul>
<li><a href="#org3de8d23">1.2.1. Identification</a></li>
<li><a href="#orgff85811">1.2.2. Obtained Plants</a></li>
</ul>
</li>
<li><a href="#org76bbcf0">1.3. Tomography Experiment</a>
<ul>
<li><a href="#orgd5305ce">1.3.1. Simulation</a></li>
<li><a href="#orgd64a4bc">1.3.2. Results</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#org23c4071">2. Variability of the system dynamics for Active Damping</a>
<ul>
<li><a href="#org32d9921">2.1. Variation of the Sample Mass</a></li>
<li><a href="#org03d6bf5">2.2. Variation of the Spindle Angle</a></li>
<li><a href="#org10cb7d3">2.3. Variation of the Spindle Rotation Speed</a>
<ul>
<li><a href="#org49af5a4">2.3.1. Dynamics of the Active Damping plants</a></li>
<li><a href="#org8c4c279">2.3.2. Variation of the poles and zeros with the Spindle rotation frequency</a></li>
</ul>
</li>
<li><a href="#org47c5593">2.4. Variation of the Tilt Angle</a></li>
<li><a href="#org047e39c">2.5. Scans of the Translation Stage</a></li>
<li><a href="#orgdc8e915">2.6. Conclusion</a></li>
</ul>
</li>
<li><a href="#org11ab68f">3. Integral Force Feedback</a>
<ul>
<li><a href="#orgd4c8167">3.1. Control Design</a>
<ul>
<li><a href="#org9ec605a">3.1.1. Plant</a></li>
<li><a href="#org9f4c2b3">3.1.2. Control Design</a></li>
<li><a href="#orgc596f9b">3.1.3. Diagonal Controller</a></li>
</ul>
</li>
<li><a href="#org3169fff">3.2. Tomography Experiment</a>
<ul>
<li><a href="#org132e692">3.2.1. Simulation with IFF Controller</a></li>
<li><a href="#org8cb0050">3.2.2. Compare with Undamped system</a></li>
</ul>
</li>
<li><a href="#org4e185a5">3.3. Conclusion</a></li>
</ul>
</li>
<li><a href="#org13393f4">4. Direct Velocity Feedback</a>
<ul>
<li><a href="#org4d1af95">4.1. Control Design</a>
<ul>
<li><a href="#org431d628">4.1.1. Plant</a></li>
<li><a href="#orgbf0fb21">4.1.2. Control Design</a></li>
<li><a href="#org7323c20">4.1.3. Diagonal Controller</a></li>
</ul>
</li>
<li><a href="#orgba6ba0d">4.2. Tomography Experiment</a>
<ul>
<li><a href="#org45b5800">4.2.1. Initialize the Simulation</a></li>
<li><a href="#org17042b3">4.2.2. Compare with Undamped system</a></li>
</ul>
</li>
<li><a href="#orgc7e7a1c">4.3. Conclusion</a></li>
</ul>
</li>
<li><a href="#org8f2508f">5. Inertial Control</a>
<ul>
<li><a href="#org4dae7be">5.1. Control Design</a>
<ul>
<li><a href="#org434553c">5.1.1. Plant</a></li>
<li><a href="#orgf8547ea">5.1.2. Control Design</a></li>
<li><a href="#orge124d93">5.1.3. Diagonal Controller</a></li>
</ul>
</li>
<li><a href="#org81b259a">5.2. Conclusion</a></li>
</ul>
</li>
<li><a href="#org3557ae9">6. Comparison</a>
<ul>
<li><a href="#org03e2d9a">6.1. Load the plants</a></li>
<li><a href="#org66965aa">6.2. Sensitivity to Disturbance</a></li>
<li><a href="#org05a3fc1">6.3. Damped Plant</a></li>
<li><a href="#org2658efc">6.4. Tomography Experiment - Frequency Domain analysis</a></li>
</ul>
</li>
<li><a href="#orgdd99fe4">7. Useful Functions</a>
<ul>
<li><a href="#org8642cf5">7.1. prepareLinearizeIdentification</a>
<ul>
<li><a href="#org889b896">Function Description</a></li>
<li><a href="#orgf77fd6f">Optional Parameters</a></li>
<li><a href="#orgef97b73">Initialize the Simulation</a></li>
</ul>
</li>
<li><a href="#orgeb73896">7.2. prepareTomographyExperiment</a>
<ul>
<li><a href="#orga6f2ff5">Function Description</a></li>
<li><a href="#org7ea3ae9">Optional Parameters</a></li>
<li><a href="#org9ea9c6d">Initialize the Simulation</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<p>
The goal of this file is to study the use of active damping for the control of the NASS.
</p>
<p>
In general, three sensors can be used for Active Damping:
</p>
<ul class="org-ul">
<li>A force sensor</li>
<li>A relative motion sensor such as a capacitive sensor</li>
<li>An inertial sensor such as an accelerometer of geophone</li>
</ul>
<p>
First, in section <a href="#orga5d5d35">1</a>, we look at the undamped system and we identify the dynamics from the actuators to the three sensor types.
</p>
<p>
Then, in section <a href="#org3763184">2</a>, we study the change of dynamics for the active damping plants with respect to various experimental conditions such as the sample mass and the spindle rotation speed.
</p>
<p>
Then, we will apply and compare the results of three active damping techniques:
</p>
<ul class="org-ul">
<li>In section <a href="#org1098dfb">3</a>: Integral Force Feedback is applied</li>
<li>In section <a href="#org0a68043">4</a>: Direct Velocity Feedback using a relative motion sensor is applied</li>
<li>In section <a href="#org329ca9a">5</a>: Inertial Control using a geophone is applied</li>
</ul>
<p>
For each of the active damping technique, we:
</p>
<ul class="org-ul">
<li>Look at the obtain damped plant that will be used for High Authority control</li>
<li>Simulate tomography experiments</li>
<li>Compare the sensitivity from disturbances</li>
</ul>
<div id="outline-container-orgdb4b16a" class="outline-2">
<h2 id="orgdb4b16a"><span class="section-number-2">1</span> Undamped System</h2>
<div class="outline-text-2" id="text-1">
<p>
<a id="orga5d5d35"></a>
</p>
<p>
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.
</p>
</div>
<div id="outline-container-orgb9bb91c" class="outline-3">
<h3 id="orgb9bb91c"><span class="section-number-3">1.1</span> Identification of the dynamics for Active Damping</h3>
<div class="outline-text-3" id="text-1-1">
</div>
<div id="outline-container-org25cfa54" class="outline-4">
<h4 id="org25cfa54"><span class="section-number-4">1.1.1</span> Identification</h4>
<div class="outline-text-4" id="text-1-1-1">
<p>
We initialize all the stages with the default parameters.
</p>
<div class="org-src-container">
<pre class="src src-matlab">prepareLinearizeIdentification();
</pre>
</div>
<p>
We identify the dynamics of the system using the <code>linearize</code> function.
</p>
<div class="org-src-container">
<pre class="src src-matlab">%% Options for Linearized
options = linearizeOptions;
options.SampleTime = 0;
%% Name of the Simulink File
mdl = 'nass_model';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs
io(io_i) = linio([mdl, '/Micro-Station'], 3, 'openoutput', [], 'Dnlm'); io_i = io_i + 1; % Relative Motion Outputs
io(io_i) = linio([mdl, '/Micro-Station'], 3, 'openoutput', [], 'Fnlm'); io_i = io_i + 1; % Force Sensors
io(io_i) = linio([mdl, '/Micro-Station'], 3, 'openoutput', [], 'Vlm'); io_i = io_i + 1; % Absolute Velocity Outputs
%% Run the linearization
G = linearize(mdl, io, 0.5, options);
G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
G.OutputName = {'Dnlm1', 'Dnlm2', 'Dnlm3', 'Dnlm4', 'Dnlm5', 'Dnlm6', ...
'Fnlm1', 'Fnlm2', 'Fnlm3', 'Fnlm4', 'Fnlm5', 'Fnlm6', ...
'Vnlm1', 'Vnlm2', 'Vnlm3', 'Vnlm4', 'Vnlm5', 'Vnlm6'};
</pre>
</div>
<p>
We then create transfer functions corresponding to the active damping plants.
</p>
<div class="org-src-container">
<pre class="src src-matlab">G_iff = minreal(G({'Fnlm1', 'Fnlm2', 'Fnlm3', 'Fnlm4', 'Fnlm5', 'Fnlm6'}, {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}));
G_dvf = minreal(G({'Dnlm1', 'Dnlm2', 'Dnlm3', 'Dnlm4', 'Dnlm5', 'Dnlm6'}, {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}));
G_ine = minreal(G({'Vnlm1', 'Vnlm2', 'Vnlm3', 'Vnlm4', 'Vnlm5', 'Vnlm6'}, {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'}));
</pre>
</div>
<p>
And we save them for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save('./mat/active_damping_undamped_plants.mat', 'G_iff', 'G_dvf', 'G_ine');
</pre>
</div>
</div>
</div>
<div id="outline-container-org821239d" class="outline-4">
<h4 id="org821239d"><span class="section-number-4">1.1.2</span> Obtained Plants for Active Damping</h4>
<div class="outline-text-4" id="text-1-1-2">
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/active_damping_undamped_plants.mat', 'G_iff', 'G_dvf', 'G_ine');
</pre>
</div>
<div id="org3c46eb3" class="figure">
<p><img src="figs/nass_active_damping_iff_plant.png" alt="nass_active_damping_iff_plant.png" />
</p>
<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>
</div>
<div id="org538fbeb" class="figure">
<p><img src="figs/nass_active_damping_dvf_plant.png" alt="nass_active_damping_dvf_plant.png" />
</p>
<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>
</div>
<div id="org48a95a0" class="figure">
<p><img src="figs/nass_active_damping_inertial_plant.png" alt="nass_active_damping_inertial_plant.png" />
</p>
<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>
</div>
</div>
</div>
</div>
<div id="outline-container-org21a2e91" class="outline-3">
<h3 id="org21a2e91"><span class="section-number-3">1.2</span> Identification of the dynamics for High Authority Control</h3>
<div class="outline-text-3" id="text-1-2">
</div>
<div id="outline-container-org3de8d23" class="outline-4">
<h4 id="org3de8d23"><span class="section-number-4">1.2.1</span> Identification</h4>
<div class="outline-text-4" id="text-1-2-1">
<p>
We initialize all the stages with the default parameters.
</p>
<div class="org-src-container">
<pre class="src src-matlab">prepareLinearizeIdentification();
</pre>
</div>
<p>
We identify the dynamics of the system using the <code>linearize</code> function.
</p>
<div class="org-src-container">
<pre class="src src-matlab">%% Options for Linearized
options = linearizeOptions;
options.SampleTime = 0;
%% Name of the Simulink File
mdl = 'nass_model';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs
io(io_i) = linio([mdl, '/Tracking Error'], 1, 'openoutput', [], 'En'); io_i = io_i + 1; % Metrology Outputs
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">masses = [1, 10, 50]; % [kg]
</pre>
</div>
<p>
And we save them for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save('./mat/active_damping_cart_plants.mat', 'G_cart', 'masses');
</pre>
</div>
</div>
</div>
<div id="outline-container-orgff85811" class="outline-4">
<h4 id="orgff85811"><span class="section-number-4">1.2.2</span> Obtained Plants</h4>
<div class="outline-text-4" id="text-1-2-2">
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/active_damping_cart_plants.mat', 'G_cart', 'masses');
</pre>
</div>
<div id="org1736380" class="figure">
<p><img src="figs/undamped_hac_plant_translations.png" alt="undamped_hac_plant_translations.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Undamped Plant - Translations (<a href="./figs/undamped_hac_plant_translations.png">png</a>, <a href="./figs/undamped_hac_plant_translations.pdf">pdf</a>)</p>
</div>
<div id="org88894a8" class="figure">
<p><img src="figs/undamped_hac_plant_rotations.png" alt="undamped_hac_plant_rotations.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Undamped Plant - Rotations (<a href="./figs/undamped_hac_plant_rotations.png">png</a>, <a href="./figs/undamped_hac_plant_rotations.pdf">pdf</a>)</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org76bbcf0" class="outline-3">
<h3 id="org76bbcf0"><span class="section-number-3">1.3</span> Tomography Experiment</h3>
<div class="outline-text-3" id="text-1-3">
</div>
<div id="outline-container-orgd5305ce" class="outline-4">
<h4 id="orgd5305ce"><span class="section-number-4">1.3.1</span> Simulation</h4>
<div class="outline-text-4" id="text-1-3-1">
<p>
We initialize elements for the tomography experiment.
</p>
<div class="org-src-container">
<pre class="src src-matlab">prepareTomographyExperiment();
</pre>
</div>
<p>
We change the simulation stop time.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load('mat/conf_simulink.mat');
set_param(conf_simulink, 'StopTime', '4.5');
</pre>
</div>
<p>
And we simulate the system.
</p>
<div class="org-src-container">
<pre class="src src-matlab">sim('nass_model');
</pre>
</div>
<p>
Finally, we save the simulation results for further analysis
</p>
<div class="org-src-container">
<pre class="src src-matlab">save('./mat/active_damping_tomo_exp.mat', 'En', 'Eg', '-append');
</pre>
</div>
</div>
</div>
<div id="outline-container-orgd64a4bc" class="outline-4">
<h4 id="orgd64a4bc"><span class="section-number-4">1.3.2</span> Results</h4>
<div class="outline-text-4" id="text-1-3-2">
<p>
We load the results of tomography experiments.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/active_damping_tomo_exp.mat', 'En');
Fs = 1e3; % Sampling Frequency of the Data
t = (1/Fs)*[0:length(En(:,1))-1];
</pre>
</div>
<div id="orge02842c" class="figure">
<p><img src="figs/nass_act_damp_undamped_sim_tomo_trans.png" alt="nass_act_damp_undamped_sim_tomo_trans.png" />
</p>
<p><span class="figure-number">Figure 6: </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>
<div id="org16d226b" class="figure">
<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 7: </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>
</div>
</div>
</div>
</div>
<div id="outline-container-org23c4071" class="outline-2">
<h2 id="org23c4071"><span class="section-number-2">2</span> Variability of the system dynamics for Active Damping</h2>
<div class="outline-text-2" id="text-2">
<p>
<a id="org3763184"></a>
</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">
<li>The mass of the sample (section <a href="#orgfff71fb">2.1</a>)</li>
<li>The spindle angle with a null rotating speed (section <a href="#org0de1bce">2.2</a>)</li>
<li>The spindle rotation speed (section <a href="#orgd3e9166">2.3</a>)</li>
<li>The tilt angle (section <a href="#org141e8f8">2.4</a>)</li>
<li>The scans of the translation stage (section <a href="#org46eafa9">2.5</a>)</li>
</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>
<div id="outline-container-org32d9921" class="outline-3">
<h3 id="org32d9921"><span class="section-number-3">2.1</span> Variation of the Sample Mass</h3>
<div class="outline-text-3" id="text-2-1">
<p>
<a id="orgfff71fb"></a>
</p>
<p>
For all the identifications, the disturbances are disabled and no controller are used.
</p>
<p>
We initialize all the stages with the default parameters.
</p>
<div class="org-src-container">
<pre class="src src-matlab">prepareLinearizeIdentification();
</pre>
</div>
<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]; % [kg]
</pre>
</div>
<div id="org2257d42" class="figure">
<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 8: </span>Variability of the dynamics from actuator force to force sensor 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>
<div id="orga3d3580" class="figure">
<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 9: </span>Variability of the dynamics from actuator force to relative motion sensor 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>
<div id="orgcea4344" class="figure">
<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 10: </span>Variability of the dynamics from actuator force to absolute velocity 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>
<div id="outline-container-org03d6bf5" class="outline-3">
<h3 id="org03d6bf5"><span class="section-number-3">2.2</span> Variation of the Spindle Angle</h3>
<div class="outline-text-3" id="text-2-2">
<p>
<a id="org0de1bce"></a>
</p>
<p>
We initialize all the stages with the default parameters.
</p>
<div class="org-src-container">
<pre class="src src-matlab">prepareLinearizeIdentification();
</pre>
</div>
<p>
We identify the dynamics for the following Spindle angles.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Rz_amplitudes = [0, pi/4, pi/2, pi]; % [rad]
</pre>
</div>
<div id="org581a394" class="figure">
<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 11: </span>Variability of the dynamics from the actuator force to the force sensor 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>
<div id="orged806a0" class="figure">
<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 12: </span>Variability of the dynamics from actuator force to relative motion sensor 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>
<div id="orga8a37fc" class="figure">
<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 13: </span>Variability of the dynamics from actuator force to absolute velocity 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>
<div id="outline-container-org10cb7d3" class="outline-3">
<h3 id="org10cb7d3"><span class="section-number-3">2.3</span> Variation of the Spindle Rotation Speed</h3>
<div class="outline-text-3" id="text-2-3">
<p>
<a id="orgd3e9166"></a>
</p>
<p>
We initialize all the stages with the default parameters.
</p>
<div class="org-src-container">
<pre class="src src-matlab">prepareLinearizeIdentification();
</pre>
</div>
<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]; % [s]
</pre>
</div>
<p>
The identification of the dynamics is done at the same Spindle angle position.
</p>
</div>
<div id="outline-container-org49af5a4" class="outline-4">
<h4 id="org49af5a4"><span class="section-number-4">2.3.1</span> Dynamics of the Active Damping plants</h4>
<div class="outline-text-4" id="text-2-3-1">
<div id="orgceb916f" class="figure">
<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 14: </span>Variability of the dynamics from the actuator force to the force sensor 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>
<div id="org0131749" class="figure">
<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 15: </span>Variability of the dynamics from the actuator force to the force sensor 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>
<div id="org3b16e2b" class="figure">
<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 16: </span>Variability of the dynamics from the actuator force to the relative motion sensor 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>
<div id="org6bbef2e" class="figure">
<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 17: </span>Variability of the dynamics from the actuator force to the relative motion sensor 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>
<div id="org1cb451d" class="figure">
<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 18: </span>Variability of the dynamics from the actuator force to the absolute velocity sensor 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>
<div id="orgd0c6d0e" class="figure">
<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 19: </span>Variability of the dynamics from the actuator force to the absolute velocity sensor 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>
<div id="outline-container-org8c4c279" class="outline-4">
<h4 id="org8c4c279"><span class="section-number-4">2.3.2</span> Variation of the poles and zeros with the Spindle rotation frequency</h4>
<div class="outline-text-4" id="text-2-3-2">
<div id="orgd2762c2" class="figure">
<p><img src="figs/campbell_diagram_spindle_rotation.png" alt="campbell_diagram_spindle_rotation.png" />
</p>
<p><span class="figure-number">Figure 20: </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>
<div id="orge90beeb" class="figure">
<p><img src="figs/variation_zeros_active_damping_plants.png" alt="variation_zeros_active_damping_plants.png" />
</p>
<p><span class="figure-number">Figure 21: </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>
<div id="outline-container-org47c5593" class="outline-3">
<h3 id="org47c5593"><span class="section-number-3">2.4</span> Variation of the Tilt Angle</h3>
<div class="outline-text-3" id="text-2-4">
<p>
<a id="org141e8f8"></a>
</p>
<p>
We initialize all the stages with the default parameters.
</p>
<div class="org-src-container">
<pre class="src src-matlab">prepareLinearizeIdentification();
</pre>
</div>
<p>
We identify the dynamics for the following Tilt stage angles.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Ry_amplitudes = [-3*pi/180, 3*pi/180]; % [rad]
</pre>
</div>
<div id="org8bf2195" class="figure">
<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 22: </span>Variability of the dynamics from the actuator force to the force sensor 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>
<div id="org276b753" class="figure">
<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 23: </span>Variability of the dynamics from the actuator force to the relative motion sensor 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>
<div id="org20f9bc8" class="figure">
<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 24: </span>Variability of the dynamics from the actuator force to the absolute velocity sensor 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>
<div id="outline-container-org047e39c" class="outline-3">
<h3 id="org047e39c"><span class="section-number-3">2.5</span> Scans of the Translation Stage</h3>
<div class="outline-text-3" id="text-2-5">
<p>
<a id="org46eafa9"></a>
</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>
We initialize all the stages with the default parameters.
</p>
<div class="org-src-container">
<pre class="src src-matlab">prepareLinearizeIdentification();
</pre>
</div>
<p>
We initialize the translation stage reference to be a sinus with an amplitude of 5mm and a period of 1s (Figure <a href="#org476fbf1">25</a>).
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeReferences('Dy_type', 'sinusoidal', ...
'Dy_amplitude', 5e-3, ... % [m]
'Dy_period', 1); % [s]
</pre>
</div>
<div id="org476fbf1" class="figure">
<p><img src="figs/ty_scanning_reference_sinus.png" alt="ty_scanning_reference_sinus.png" />
</p>
<p><span class="figure-number">Figure 25: </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>
<div id="orgbebc5e1" class="figure">
<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 26: </span>Variability of the dynamics from the actuator force to the absolute velocity sensor 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>
<div id="org15f6689" class="figure">
<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 27: </span>Variability of the dynamics from actuator force to relative displacement sensor 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>
<div id="orge1ea4f5" class="figure">
<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 28: </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>
<div id="outline-container-orgdc8e915" class="outline-3">
<h3 id="orgdc8e915"><span class="section-number-3">2.6</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-6">
<table id="orgbd1a9f9" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<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">&#xa0;</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 &ldquo;parameter&rdquo; 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>
<div id="outline-container-org11ab68f" class="outline-2">
<h2 id="org11ab68f"><span class="section-number-2">3</span> Integral Force Feedback</h2>
<div class="outline-text-2" id="text-3">
<p>
<a id="org1098dfb"></a>
</p>
<div class="note">
<p>
All the files (data and Matlab scripts) are accessible <a href="data/iff.zip">here</a>.
</p>
</div>
<p>
Here, we study the use of <b>Integral Force Feedback</b> (IFF) to actively damp the resonances.
</p>
<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="#org3a1dbf1">29</a> where one of the 6 nano-hexapod legs is represented.
</p>
<div id="org3a1dbf1" class="figure">
<p><img src="figs/iff_1dof.png" alt="iff_1dof.png" />
</p>
<p><span class="figure-number">Figure 29: </span>Integral Force Feedback applied to a 1dof system</p>
</div>
</div>
<div id="outline-container-orgd4c8167" class="outline-3">
<h3 id="orgd4c8167"><span class="section-number-3">3.1</span> Control Design</h3>
<div class="outline-text-3" id="text-3-1">
</div>
<div id="outline-container-org9ec605a" class="outline-4">
<h4 id="org9ec605a"><span class="section-number-4">3.1.1</span> Plant</h4>
<div class="outline-text-4" id="text-3-1-1">
<p>
Let&rsquo;s load the previously identified undamped plant:
</p>
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/active_damping_undamped_plants.mat', 'G_iff');
load('./mat/active_damping_plants_variable.mat', 'masses', 'Gm_iff');
</pre>
</div>
<p>
Let&rsquo;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="#org8703bd0">30</a>).
</p>
<div id="org8703bd0" class="figure">
<p><img src="figs/iff_plant.png" alt="iff_plant.png" />
</p>
<p><span class="figure-number">Figure 30: </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>
</div>
</div>
</div>
<div id="outline-container-org9f4c2b3" class="outline-4">
<h4 id="org9f4c2b3"><span class="section-number-4">3.1.2</span> Control Design</h4>
<div class="outline-text-4" id="text-3-1-2">
<p>
The controller for each pair of actuator/sensor is:
</p>
<div class="org-src-container">
<pre class="src src-matlab">w0 = 2*pi*50;
K_iff = -5000/s * (s/w0)/(1 + s/w0);
</pre>
</div>
<p>
The corresponding loop gains are shown in figure <a href="#org1f5c623">31</a>.
</p>
<div id="org1f5c623" class="figure">
<p><img src="figs/iff_open_loop.png" alt="iff_open_loop.png" />
</p>
<p><span class="figure-number">Figure 31: </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>
</div>
</div>
</div>
<div id="outline-container-orgc596f9b" class="outline-4">
<h4 id="orgc596f9b"><span class="section-number-4">3.1.3</span> Diagonal Controller</h4>
<div class="outline-text-4" id="text-3-1-3">
<p>
We create the diagonal controller and we add a minus sign as we have a positive
feedback architecture.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K_iff = -K_iff*eye(6);
</pre>
</div>
<p>
We save the controller for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save('./mat/active_damping_K_iff.mat', 'K_iff');
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org3169fff" class="outline-3">
<h3 id="org3169fff"><span class="section-number-3">3.2</span> Tomography Experiment</h3>
<div class="outline-text-3" id="text-3-2">
</div>
<div id="outline-container-org132e692" class="outline-4">
<h4 id="org132e692"><span class="section-number-4">3.2.1</span> Simulation with IFF Controller</h4>
<div class="outline-text-4" id="text-3-2-1">
<p>
We initialize elements for the tomography experiment.
</p>
<div class="org-src-container">
<pre class="src src-matlab">prepareTomographyExperiment();
</pre>
</div>
<p>
We set the IFF controller.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/active_damping_K_iff.mat', 'K_iff');
initializeController('type', 'iff');
</pre>
</div>
<p>
We change the simulation stop time.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load('mat/conf_simulink.mat');
set_param(conf_simulink, 'StopTime', '4.5');
</pre>
</div>
<p>
And we simulate the system.
</p>
<div class="org-src-container">
<pre class="src src-matlab">sim('nass_model');
</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 = En;
Eg_iff = Eg;
save('./mat/active_damping_tomo_exp.mat', 'En_iff', 'Eg_iff', '-append');
</pre>
</div>
</div>
</div>
<div id="outline-container-org8cb0050" class="outline-4">
<h4 id="org8cb0050"><span class="section-number-4">3.2.2</span> Compare with Undamped system</h4>
<div class="outline-text-4" id="text-3-2-2">
<div id="org7547861" class="figure">
<p><img src="figs/nass_act_damp_iff_sim_tomo_xy.png" alt="nass_act_damp_iff_sim_tomo_xy.png" />
</p>
<p><span class="figure-number">Figure 32: </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>
</div>
<div id="orgfb21a7f" class="figure">
<p><img src="figs/nass_act_damp_iff_sim_tomo_trans.png" alt="nass_act_damp_iff_sim_tomo_trans.png" />
</p>
<p><span class="figure-number">Figure 33: </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>
</div>
<div id="org5147a1f" class="figure">
<p><img src="figs/nass_act_damp_iff_sim_tomo_rot.png" alt="nass_act_damp_iff_sim_tomo_rot.png" />
</p>
<p><span class="figure-number">Figure 34: </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>
</div>
</div>
</div>
</div>
<div id="outline-container-org4e185a5" class="outline-3">
<h3 id="org4e185a5"><span class="section-number-3">3.3</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-3">
<div class="important">
<p>
Integral Force Feedback using a force sensor:
</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>
<div id="outline-container-org13393f4" class="outline-2">
<h2 id="org13393f4"><span class="section-number-2">4</span> Direct Velocity Feedback</h2>
<div class="outline-text-2" id="text-4">
<p>
<a id="org0a68043"></a>
</p>
<div class="note">
<p>
All the files (data and Matlab scripts) are accessible <a href="data/dvf.zip">here</a>.
</p>
</div>
<p>
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.
</p>
</div>
<div id="outline-container-org4d1af95" class="outline-3">
<h3 id="org4d1af95"><span class="section-number-3">4.1</span> Control Design</h3>
<div class="outline-text-3" id="text-4-1">
</div>
<div id="outline-container-org431d628" class="outline-4">
<h4 id="org431d628"><span class="section-number-4">4.1.1</span> Plant</h4>
<div class="outline-text-4" id="text-4-1-1">
<p>
Let&rsquo;s load the undamped plant:
</p>
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/active_damping_undamped_plants.mat', 'G_dvf');
load('./mat/active_damping_plants_variable.mat', 'masses', 'Gm_dvf');
</pre>
</div>
<p>
Let&rsquo;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="#orga430723">35</a>).
</p>
<div id="orga430723" class="figure">
<p><img src="figs/dvf_plant.png" alt="dvf_plant.png" />
</p>
<p><span class="figure-number">Figure 35: </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>
</div>
</div>
</div>
<div id="outline-container-orgbf0fb21" class="outline-4">
<h4 id="orgbf0fb21"><span class="section-number-4">4.1.2</span> Control Design</h4>
<div class="outline-text-4" id="text-4-1-2">
<p>
The Direct Velocity Feedback is defined below.
A Low pass Filter is added to make the controller transfer function proper.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K_dvf = s*30000/(1 + s/2/pi/10000);
</pre>
</div>
<p>
The obtained loop gains are shown in figure <a href="#org3568457">36</a>.
</p>
<div id="org3568457" class="figure">
<p><img src="figs/dvf_open_loop.png" alt="dvf_open_loop.png" />
</p>
<p><span class="figure-number">Figure 36: </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>
</div>
</div>
</div>
<div id="outline-container-org7323c20" class="outline-4">
<h4 id="org7323c20"><span class="section-number-4">4.1.3</span> Diagonal Controller</h4>
<div class="outline-text-4" id="text-4-1-3">
<p>
We create the diagonal controller and we add a minus sign as we have a positive feedback architecture.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K_dvf = -K_dvf*eye(6);
</pre>
</div>
<p>
We save the controller for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save('./mat/active_damping_K_dvf.mat', 'K_dvf');
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-orgba6ba0d" class="outline-3">
<h3 id="orgba6ba0d"><span class="section-number-3">4.2</span> Tomography Experiment</h3>
<div class="outline-text-3" id="text-4-2">
</div>
<div id="outline-container-org45b5800" class="outline-4">
<h4 id="org45b5800"><span class="section-number-4">4.2.1</span> Initialize the Simulation</h4>
<div class="outline-text-4" id="text-4-2-1">
<p>
We initialize elements for the tomography experiment.
</p>
<div class="org-src-container">
<pre class="src src-matlab">prepareTomographyExperiment();
</pre>
</div>
<p>
We set the DVF controller.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/active_damping_K_dvf.mat', 'K_dvf');
initializeController('type', 'dvf');
</pre>
</div>
<p>
We change the simulation stop time.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load('mat/conf_simulink.mat');
set_param(conf_simulink, 'StopTime', '4.5');
</pre>
</div>
<p>
And we simulate the system.
</p>
<div class="org-src-container">
<pre class="src src-matlab">sim('nass_model');
</pre>
</div>
<p>
Finally, we save the simulation results for further analysis
</p>
<div class="org-src-container">
<pre class="src src-matlab">En_dvf = En;
Eg_dvf = Eg;
save('./mat/active_damping_tomo_exp.mat', 'En_dvf', 'Eg_dvf', '-append');
</pre>
</div>
</div>
</div>
<div id="outline-container-org17042b3" class="outline-4">
<h4 id="org17042b3"><span class="section-number-4">4.2.2</span> Compare with Undamped system</h4>
<div class="outline-text-4" id="text-4-2-2">
<div id="orgfe01054" class="figure">
<p><img src="figs/nass_act_damp_dvf_sim_tomo_xy.png" alt="nass_act_damp_dvf_sim_tomo_xy.png" />
</p>
<p><span class="figure-number">Figure 37: </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>
</div>
<div id="orgd0040cf" class="figure">
<p><img src="figs/nass_act_damp_dvf_sim_tomo_trans.png" alt="nass_act_damp_dvf_sim_tomo_trans.png" />
</p>
<p><span class="figure-number">Figure 38: </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>
</div>
<div id="org2c13cb2" class="figure">
<p><img src="figs/nass_act_damp_dvf_sim_tomo_rot.png" alt="nass_act_damp_dvf_sim_tomo_rot.png" />
</p>
<p><span class="figure-number">Figure 39: </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>
</div>
</div>
</div>
</div>
<div id="outline-container-orgc7e7a1c" class="outline-3">
<h3 id="orgc7e7a1c"><span class="section-number-3">4.3</span> Conclusion</h3>
<div class="outline-text-3" id="text-4-3">
<div class="important">
<p>
Direct Velocity Feedback using a relative motion sensor:
</p>
<ul class="org-ul">
<li>Robust (guaranteed stability)</li>
</ul>
</div>
</div>
</div>
</div>
<div id="outline-container-org8f2508f" class="outline-2">
<h2 id="org8f2508f"><span class="section-number-2">5</span> Inertial Control</h2>
<div class="outline-text-2" id="text-5">
<p>
<a id="org329ca9a"></a>
</p>
<div class="note">
<p>
All the files (data and Matlab scripts) are accessible <a href="data/ine.zip">here</a>.
</p>
</div>
<p>
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.
</p>
</div>
<div id="outline-container-org4dae7be" class="outline-3">
<h3 id="org4dae7be"><span class="section-number-3">5.1</span> Control Design</h3>
<div class="outline-text-3" id="text-5-1">
</div>
<div id="outline-container-org434553c" class="outline-4">
<h4 id="org434553c"><span class="section-number-4">5.1.1</span> Plant</h4>
<div class="outline-text-4" id="text-5-1-1">
<p>
Let&rsquo;s load the undamped plant:
</p>
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/active_damping_undamped_plants.mat', 'G_ine');
load('./mat/active_damping_plants_variable.mat', 'masses', 'Gm_ine');
</pre>
</div>
<p>
Let&rsquo;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="#org20052f5">40</a>).
</p>
<div id="org20052f5" class="figure">
<p><img src="figs/ine_plant.png" alt="ine_plant.png" />
</p>
<p><span class="figure-number">Figure 40: </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>
</div>
</div>
</div>
<div id="outline-container-orgf8547ea" class="outline-4">
<h4 id="orgf8547ea"><span class="section-number-4">5.1.2</span> Control Design</h4>
<div class="outline-text-4" id="text-5-1-2">
<p>
The controller is defined below and the obtained loop gain is shown in figure <a href="#orga2f6fdb">41</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K_ine = 2.5e4;
</pre>
</div>
<div id="orga2f6fdb" class="figure">
<p><img src="figs/ine_open_loop_gain.png" alt="ine_open_loop_gain.png" />
</p>
<p><span class="figure-number">Figure 41: </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>
</div>
</div>
</div>
<div id="outline-container-orge124d93" class="outline-4">
<h4 id="orge124d93"><span class="section-number-4">5.1.3</span> Diagonal Controller</h4>
<div class="outline-text-4" id="text-5-1-3">
<p>
We create the diagonal controller and we add a minus sign as we have a positive feedback architecture.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K_ine = -K_ine*eye(6);
</pre>
</div>
<p>
We save the controller for further analysis.
</p>
<div class="org-src-container">
<pre class="src src-matlab">save('./mat/active_damping_K_ine.mat', 'K_ine');
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org81b259a" class="outline-3">
<h3 id="org81b259a"><span class="section-number-3">5.2</span> Conclusion</h3>
<div class="outline-text-3" id="text-5-2">
<div class="important">
<p>
Inertial Control should not be used.
</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org3557ae9" class="outline-2">
<h2 id="org3557ae9"><span class="section-number-2">6</span> Comparison</h2>
<div class="outline-text-2" id="text-6">
<p>
<a id="org0dfa15e"></a>
</p>
</div>
<div id="outline-container-org03e2d9a" class="outline-3">
<h3 id="org03e2d9a"><span class="section-number-3">6.1</span> Load the plants</h3>
<div class="outline-text-3" id="text-6-1">
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/active_damping_plants.mat', 'G', 'G_iff', 'G_ine', 'G_dvf');
</pre>
</div>
</div>
</div>
<div id="outline-container-org66965aa" class="outline-3">
<h3 id="org66965aa"><span class="section-number-3">6.2</span> Sensitivity to Disturbance</h3>
<div class="outline-text-3" id="text-6-2">
<div id="orga3eef07" class="figure">
<p><img src="figs/sensitivity_comp_ground_motion_z.png" alt="sensitivity_comp_ground_motion_z.png" />
</p>
<p><span class="figure-number">Figure 42: </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>
</div>
<div id="org5cd56c0" class="figure">
<p><img src="figs/sensitivity_comp_direct_forces_z.png" alt="sensitivity_comp_direct_forces_z.png" />
</p>
<p><span class="figure-number">Figure 43: </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>
</div>
<div id="orgf84d2bf" class="figure">
<p><img src="figs/sensitivity_comp_spindle_z.png" alt="sensitivity_comp_spindle_z.png" />
</p>
<p><span class="figure-number">Figure 44: </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>
</div>
<div id="org1cc18a2" class="figure">
<p><img src="figs/sensitivity_comp_ty_z.png" alt="sensitivity_comp_ty_z.png" />
</p>
<p><span class="figure-number">Figure 45: </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>
</div>
<div id="org3674f4e" class="figure">
<p><img src="figs/sensitivity_comp_ty_x.png" alt="sensitivity_comp_ty_x.png" />
</p>
<p><span class="figure-number">Figure 46: </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>
</div>
</div>
</div>
<div id="outline-container-org05a3fc1" class="outline-3">
<h3 id="org05a3fc1"><span class="section-number-3">6.3</span> Damped Plant</h3>
<div class="outline-text-3" id="text-6-3">
<div id="orgf4fa583" class="figure">
<p><img src="figs/plant_comp_damping_z.png" alt="plant_comp_damping_z.png" />
</p>
<p><span class="figure-number">Figure 47: </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>
</div>
<div id="orgfa1a1f6" class="figure">
<p><img src="figs/plant_comp_damping_x.png" alt="plant_comp_damping_x.png" />
</p>
<p><span class="figure-number">Figure 48: </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>
</div>
<div id="org36e9266" class="figure">
<p><img src="figs/plant_comp_damping_coupling.png" alt="plant_comp_damping_coupling.png" />
</p>
<p><span class="figure-number">Figure 49: </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>
</div>
</div>
</div>
<div id="outline-container-org2658efc" class="outline-3">
<h3 id="org2658efc"><span class="section-number-3">6.4</span> Tomography Experiment - Frequency Domain analysis</h3>
<div class="outline-text-3" id="text-6-4">
<div class="org-src-container">
<pre class="src src-matlab">load('./mat/active_damping_tomo_exp.mat', 'En', 'En_iff', 'En_dvf');
Fs = 1e3; % Sampling Frequency of the Data
t = (1/Fs)*[0:length(En(:,1))-1];
</pre>
</div>
<p>
We remove the first 0.5 seconds where the transient behavior is fading out.
</p>
<div class="org-src-container">
<pre class="src src-matlab">[~, i_start] = min(abs(t - 0.5)); % find the indice corresponding to 0.5s
t = t(i_start:end) - t(i_start);
En = En(i_start:end, :);
En_dvf = En_dvf(i_start:end, :);
En_iff = En_iff(i_start:end, :);
</pre>
</div>
<p>
Window used for <code>pwelch</code> function.
</p>
<div class="org-src-container">
<pre class="src src-matlab">n_av = 4;
han_win = hanning(ceil(length(En(:, 1))/n_av));
</pre>
</div>
<div id="org973bf55" class="figure">
<p><img src="figs/act_damp_tomo_exp_comp_psd_trans.png" alt="act_damp_tomo_exp_comp_psd_trans.png" />
</p>
<p><span class="figure-number">Figure 50: </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>
</div>
<div id="org760f2f5" class="figure">
<p><img src="figs/act_damp_tomo_exp_comp_psd_rot.png" alt="act_damp_tomo_exp_comp_psd_rot.png" />
</p>
<p><span class="figure-number">Figure 51: </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>
</div>
<div id="org7eaaef1" class="figure">
<p><img src="figs/act_damp_tomo_exp_comp_cps_trans.png" alt="act_damp_tomo_exp_comp_cps_trans.png" />
</p>
<p><span class="figure-number">Figure 52: </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>
</div>
<div id="orgbb17e5f" class="figure">
<p><img src="figs/act_damp_tomo_exp_comp_cps_rot.png" alt="act_damp_tomo_exp_comp_cps_rot.png" />
</p>
<p><span class="figure-number">Figure 53: </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>
</div>
</div>
</div>
</div>
<div id="outline-container-orgdd99fe4" class="outline-2">
<h2 id="orgdd99fe4"><span class="section-number-2">7</span> Useful Functions</h2>
<div class="outline-text-2" id="text-7">
</div>
<div id="outline-container-org8642cf5" class="outline-3">
<h3 id="org8642cf5"><span class="section-number-3">7.1</span> prepareLinearizeIdentification</h3>
<div class="outline-text-3" id="text-7-1">
<p>
<a id="org914c7d7"></a>
</p>
<p>
This Matlab function is accessible <a href="src/prepareLinearizeIdentification.m">here</a>.
</p>
</div>
<div id="outline-container-org889b896" class="outline-4">
<h4 id="org889b896">Function Description</h4>
<div class="outline-text-4" id="text-org889b896">
<div class="org-src-container">
<pre class="src src-matlab">function [] = prepareLinearizeIdentification(args)
</pre>
</div>
</div>
</div>
<div id="outline-container-orgf77fd6f" class="outline-4">
<h4 id="orgf77fd6f">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgf77fd6f">
<div class="org-src-container">
<pre class="src src-matlab">arguments
args.nass_actuator char {mustBeMember(args.nass_actuator,{'piezo', 'lorentz'})} = 'piezo'
args.sample_mass (1,1) double {mustBeNumeric, mustBePositive} = 50 % [kg]
end
</pre>
</div>
</div>
</div>
<div id="outline-container-orgef97b73" class="outline-4">
<h4 id="orgef97b73">Initialize the Simulation</h4>
<div class="outline-text-4" id="text-orgef97b73">
<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('actuator', args.nass_actuator);
initializeSample('mass', args.sample_mass);
</pre>
</div>
<p>
We set the references and disturbances to zero.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeReferences();
initializeDisturbances('enable', false);
</pre>
</div>
<p>
We set the controller type to Open-Loop.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeController('type', 'open-loop');
</pre>
</div>
<p>
And we put some gravity.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeSimscapeConfiguration('gravity', true);
</pre>
</div>
<p>
We do not need to log any signal.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeLoggingConfiguration('log', 'none');
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-orgeb73896" class="outline-3">
<h3 id="orgeb73896"><span class="section-number-3">7.2</span> prepareTomographyExperiment</h3>
<div class="outline-text-3" id="text-7-2">
<p>
<a id="orgf57caa6"></a>
</p>
<p>
This Matlab function is accessible <a href="src/prepareTomographyExperiment.m">here</a>.
</p>
</div>
<div id="outline-container-orga6f2ff5" class="outline-4">
<h4 id="orga6f2ff5">Function Description</h4>
<div class="outline-text-4" id="text-orga6f2ff5">
<div class="org-src-container">
<pre class="src src-matlab">function [] = prepareTomographyExperiment(args)
</pre>
</div>
</div>
</div>
<div id="outline-container-org7ea3ae9" class="outline-4">
<h4 id="org7ea3ae9">Optional Parameters</h4>
<div class="outline-text-4" id="text-org7ea3ae9">
<div class="org-src-container">
<pre class="src src-matlab">arguments
args.nass_actuator char {mustBeMember(args.nass_actuator,{'piezo', 'lorentz'})} = 'piezo'
args.sample_mass (1,1) double {mustBeNumeric, mustBePositive} = 50 % [kg]
args.Rz_period (1,1) double {mustBeNumeric, mustBePositive} = 1 % [s]
end
</pre>
</div>
</div>
</div>
<div id="outline-container-org9ea9c6d" class="outline-4">
<h4 id="org9ea9c6d">Initialize the Simulation</h4>
<div class="outline-text-4" id="text-org9ea9c6d">
<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('actuator', args.nass_actuator);
initializeSample('mass', args.sample_mass);
</pre>
</div>
<p>
We set the references that corresponds to a tomography experiment.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeReferences('Rz_type', 'rotating', 'Rz_period', args.Rz_period);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">initializeDisturbances();
</pre>
</div>
<p>
Open Loop.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeController('type', 'open-loop');
</pre>
</div>
<p>
And we put some gravity.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeSimscapeConfiguration('gravity', true);
</pre>
</div>
<p>
We log the signals.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeLoggingConfiguration('log', 'all');
</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-05-05 mar. 10:34</p>
</div>
</body>
</html>