Update files for new definition of hexapods
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2020-04-17 ven. 09:36 -->
|
||||
<!-- 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" />
|
||||
@@ -39,17 +39,17 @@
|
||||
<ul>
|
||||
<li><a href="#orgb9bb91c">1.1. Identification of the dynamics for Active Damping</a>
|
||||
<ul>
|
||||
<li><a href="#org0e0278d">1.1.1. Identification</a></li>
|
||||
<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="#org25cfa54">1.2.1. Identification</a></li>
|
||||
<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="#org2540d06">1.3. Tomography Experiment</a>
|
||||
<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>
|
||||
@@ -69,55 +69,55 @@
|
||||
</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="#org6e25821">2.6. Conclusion</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="#orga4d47de">3.1. Control Design</a>
|
||||
<li><a href="#orgd4c8167">3.1. Control Design</a>
|
||||
<ul>
|
||||
<li><a href="#org506864d">3.1.1. Plant</a></li>
|
||||
<li><a href="#orgd147055">3.1.2. Control Design</a></li>
|
||||
<li><a href="#orgeed5a23">3.1.3. Diagonal Controller</a></li>
|
||||
<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="#orge4bf8c1">3.2. Tomography Experiment</a>
|
||||
<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="#org9c3f302">3.2.2. Compare with Undamped system</a></li>
|
||||
<li><a href="#org8cb0050">3.2.2. Compare with Undamped system</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgd53cc4e">3.3. Conclusion</a></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="#org22d12df">4.1. Control Design</a>
|
||||
<li><a href="#org4d1af95">4.1. Control Design</a>
|
||||
<ul>
|
||||
<li><a href="#org0b48ca9">4.1.1. Plant</a></li>
|
||||
<li><a href="#org59030a3">4.1.2. Control Design</a></li>
|
||||
<li><a href="#org59cf352">4.1.3. Diagonal Controller</a></li>
|
||||
<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="#org76bbcf0">4.2. Tomography Experiment</a>
|
||||
<li><a href="#orgba6ba0d">4.2. Tomography Experiment</a>
|
||||
<ul>
|
||||
<li><a href="#orge2c011b">4.2.1. Initialize the Simulation</a></li>
|
||||
<li><a href="#org8cb0050">4.2.2. Compare with Undamped system</a></li>
|
||||
<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="#org5f85708">4.3. Conclusion</a></li>
|
||||
<li><a href="#orgc7e7a1c">4.3. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org8f2508f">5. Inertial Control</a>
|
||||
<ul>
|
||||
<li><a href="#org9f4c2b3">5.1. Control Design</a>
|
||||
<li><a href="#org4dae7be">5.1. Control Design</a>
|
||||
<ul>
|
||||
<li><a href="#org9ec605a">5.1.1. Plant</a></li>
|
||||
<li><a href="#org94a1419">5.1.2. Control Design</a></li>
|
||||
<li><a href="#orgc596f9b">5.1.3. Diagonal Controller</a></li>
|
||||
<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="#orgdc8e915">5.2. Conclusion</a></li>
|
||||
<li><a href="#org81b259a">5.2. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org3557ae9">6. Comparison</a>
|
||||
@@ -132,16 +132,16 @@
|
||||
<ul>
|
||||
<li><a href="#org8642cf5">7.1. prepareLinearizeIdentification</a>
|
||||
<ul>
|
||||
<li><a href="#orga028903">Function Description</a></li>
|
||||
<li><a href="#orgbda1bf4">Optional Parameters</a></li>
|
||||
<li><a href="#org2131c58">Initialize the Simulation</a></li>
|
||||
<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="#org889b896">Function Description</a></li>
|
||||
<li><a href="#orgf77fd6f">Optional Parameters</a></li>
|
||||
<li><a href="#org45b5800">Initialize the Simulation</a></li>
|
||||
<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>
|
||||
@@ -213,8 +213,8 @@ After that, a tomography experiment is simulation without any active damping tec
|
||||
<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-org0e0278d" class="outline-4">
|
||||
<h4 id="org0e0278d"><span class="section-number-4">1.1.1</span> Identification</h4>
|
||||
<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.
|
||||
@@ -228,26 +228,26 @@ We initialize all the stages with the default parameters.
|
||||
We identify the dynamics of the system using the <code>linearize</code> function.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||
<pre class="src src-matlab">%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Controller'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Inputs</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station'</span>], 3, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'Dnlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Relative Motion Outputs</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station'</span>], 3, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'Fnlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Force Sensors</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Micro-Station'</span>], 3, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'Vlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Absolute Velocity Outputs</span>
|
||||
io(io_i) = linio([mdl, '/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
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
%% Run the linearization
|
||||
G = linearize(mdl, io, 0.5, options);
|
||||
G.InputName = {<span class="org-string">'Fnl1'</span>, <span class="org-string">'Fnl2'</span>, <span class="org-string">'Fnl3'</span>, <span class="org-string">'Fnl4'</span>, <span class="org-string">'Fnl5'</span>, <span class="org-string">'Fnl6'</span>};
|
||||
G.OutputName = {<span class="org-string">'Dnlm1'</span>, <span class="org-string">'Dnlm2'</span>, <span class="org-string">'Dnlm3'</span>, <span class="org-string">'Dnlm4'</span>, <span class="org-string">'Dnlm5'</span>, <span class="org-string">'Dnlm6'</span>, ...
|
||||
<span class="org-string">'Fnlm1'</span>, <span class="org-string">'Fnlm2'</span>, <span class="org-string">'Fnlm3'</span>, <span class="org-string">'Fnlm4'</span>, <span class="org-string">'Fnlm5'</span>, <span class="org-string">'Fnlm6'</span>, ...
|
||||
<span class="org-string">'Vnlm1'</span>, <span class="org-string">'Vnlm2'</span>, <span class="org-string">'Vnlm3'</span>, <span class="org-string">'Vnlm4'</span>, <span class="org-string">'Vnlm5'</span>, <span class="org-string">'Vnlm6'</span>};
|
||||
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>
|
||||
|
||||
@@ -255,9 +255,9 @@ G.OutputName = {<span class="org-string">'Dnlm1'</span>, <span class="org-string
|
||||
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({<span class="org-string">'Fnlm1'</span>, <span class="org-string">'Fnlm2'</span>, <span class="org-string">'Fnlm3'</span>, <span class="org-string">'Fnlm4'</span>, <span class="org-string">'Fnlm5'</span>, <span class="org-string">'Fnlm6'</span>}, {<span class="org-string">'Fnl1'</span>, <span class="org-string">'Fnl2'</span>, <span class="org-string">'Fnl3'</span>, <span class="org-string">'Fnl4'</span>, <span class="org-string">'Fnl5'</span>, <span class="org-string">'Fnl6'</span>}));
|
||||
G_dvf = minreal(G({<span class="org-string">'Dnlm1'</span>, <span class="org-string">'Dnlm2'</span>, <span class="org-string">'Dnlm3'</span>, <span class="org-string">'Dnlm4'</span>, <span class="org-string">'Dnlm5'</span>, <span class="org-string">'Dnlm6'</span>}, {<span class="org-string">'Fnl1'</span>, <span class="org-string">'Fnl2'</span>, <span class="org-string">'Fnl3'</span>, <span class="org-string">'Fnl4'</span>, <span class="org-string">'Fnl5'</span>, <span class="org-string">'Fnl6'</span>}));
|
||||
G_ine = minreal(G({<span class="org-string">'Vnlm1'</span>, <span class="org-string">'Vnlm2'</span>, <span class="org-string">'Vnlm3'</span>, <span class="org-string">'Vnlm4'</span>, <span class="org-string">'Vnlm5'</span>, <span class="org-string">'Vnlm6'</span>}, {<span class="org-string">'Fnl1'</span>, <span class="org-string">'Fnl2'</span>, <span class="org-string">'Fnl3'</span>, <span class="org-string">'Fnl4'</span>, <span class="org-string">'Fnl5'</span>, <span class="org-string">'Fnl6'</span>}));
|
||||
<pre 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>
|
||||
|
||||
@@ -265,7 +265,7 @@ G_ine = minreal(G({<span class="org-string">'Vnlm1'</span>, <span class="org-str
|
||||
And we save them for further analysis.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_undamped_plants.mat'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_dvf'</span>, <span class="org-string">'G_ine'</span>);
|
||||
<pre class="src src-matlab">save('./mat/active_damping_undamped_plants.mat', 'G_iff', 'G_dvf', 'G_ine');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -275,7 +275,7 @@ And we save them for further analysis.
|
||||
<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(<span class="org-string">'./mat/active_damping_undamped_plants.mat'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_dvf'</span>, <span class="org-string">'G_ine'</span>);
|
||||
<pre class="src src-matlab">load('./mat/active_damping_undamped_plants.mat', 'G_iff', 'G_dvf', 'G_ine');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -307,8 +307,8 @@ And we save them for further analysis.
|
||||
<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-org25cfa54" class="outline-4">
|
||||
<h4 id="org25cfa54"><span class="section-number-4">1.2.1</span> Identification</h4>
|
||||
<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.
|
||||
@@ -322,22 +322,22 @@ We initialize all the stages with the default parameters.
|
||||
We identify the dynamics of the system using the <code>linearize</code> function.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||
<pre class="src src-matlab">%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
|
||||
mdl = <span class="org-string">'nass_model'</span>;
|
||||
%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Controller'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Inputs</span>
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Tracking Error'</span>], 1, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'En'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Metrology Outputs</span>
|
||||
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]; <span class="org-comment">% [kg]</span>
|
||||
<pre class="src src-matlab">masses = [1, 10, 50]; % [kg]
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -345,7 +345,7 @@ io(io_i) = linio([mdl, <span class="org-string">'/Tracking Error'</span>], 1, <s
|
||||
And we save them for further analysis.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_cart_plants.mat'</span>, <span class="org-string">'G_cart'</span>, <span class="org-string">'masses'</span>);
|
||||
<pre class="src src-matlab">save('./mat/active_damping_cart_plants.mat', 'G_cart', 'masses');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -355,7 +355,7 @@ And we save them for further analysis.
|
||||
<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(<span class="org-string">'./mat/active_damping_cart_plants.mat'</span>, <span class="org-string">'G_cart'</span>, <span class="org-string">'masses'</span>);
|
||||
<pre class="src src-matlab">load('./mat/active_damping_cart_plants.mat', 'G_cart', 'masses');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -377,8 +377,8 @@ And we save them for further analysis.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2540d06" class="outline-3">
|
||||
<h3 id="org2540d06"><span class="section-number-3">1.3</span> Tomography Experiment</h3>
|
||||
<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">
|
||||
@@ -396,8 +396,8 @@ We initialize elements for the tomography experiment.
|
||||
We change the simulation stop time.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simulink.mat'</span>);
|
||||
<span class="org-matlab-simulink-keyword">set_param</span>(<span class="org-variable-name">conf_simulink</span>, <span class="org-string">'StopTime'</span>, <span class="org-string">'4.5'</span>);
|
||||
<pre class="src src-matlab">load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '4.5');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -405,7 +405,7 @@ We change the simulation stop time.
|
||||
And we simulate the system.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
<pre class="src src-matlab">sim('nass_model');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -413,7 +413,7 @@ And we simulate the system.
|
||||
Finally, we save the simulation results for further analysis
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span class="org-string">'En'</span>, <span class="org-string">'Eg'</span>, <span class="org-string">'-append'</span>);
|
||||
<pre class="src src-matlab">save('./mat/active_damping_tomo_exp.mat', 'En', 'Eg', '-append');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -426,9 +426,9 @@ Finally, we save the simulation results for further analysis
|
||||
We load the results of tomography experiments.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span class="org-string">'En'</span>);
|
||||
Fs = 1e3; <span class="org-comment">% Sampling Frequency of the Data</span>
|
||||
t = (1<span class="org-type">/</span>Fs)<span class="org-type">*</span>[0<span class="org-type">:</span>length(En(<span class="org-type">:</span>,1))<span class="org-type">-</span>1];
|
||||
<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>
|
||||
|
||||
@@ -495,7 +495,7 @@ We initialize all the stages with the default parameters.
|
||||
We identify the dynamics for the following sample mass.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">masses = [1, 10, 50]; <span class="org-comment">% [kg]</span>
|
||||
<pre class="src src-matlab">masses = [1, 10, 50]; % [kg]
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -539,7 +539,7 @@ We initialize all the stages with the default parameters.
|
||||
We identify the dynamics for the following Spindle angles.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Rz_amplitudes = [0, <span class="org-constant">pi</span><span class="org-type">/</span>4, <span class="org-constant">pi</span><span class="org-type">/</span>2, <span class="org-constant">pi</span>]; <span class="org-comment">% [rad]</span>
|
||||
<pre class="src src-matlab">Rz_amplitudes = [0, pi/4, pi/2, pi]; % [rad]
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -583,7 +583,7 @@ We initialize all the stages with the default parameters.
|
||||
We identify the dynamics for the following Spindle rotation periods.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Rz_periods = [60, 6, 2, 1]; <span class="org-comment">% [s]</span>
|
||||
<pre class="src src-matlab">Rz_periods = [60, 6, 2, 1]; % [s]
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -676,7 +676,7 @@ We initialize all the stages with the default parameters.
|
||||
We identify the dynamics for the following Tilt stage angles.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ry_amplitudes = [<span class="org-type">-</span>3<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180, 3<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">/</span>180]; <span class="org-comment">% [rad]</span>
|
||||
<pre class="src src-matlab">Ry_amplitudes = [-3*pi/180, 3*pi/180]; % [rad]
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -723,9 +723,9 @@ We initialize all the stages with the default parameters.
|
||||
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(<span class="org-string">'Dy_type'</span>, <span class="org-string">'sinusoidal'</span>, ...
|
||||
<span class="org-string">'Dy_amplitude'</span>, 5e<span class="org-type">-</span>3, ...<span class="org-comment"> % [m]</span>
|
||||
<span class="org-string">'Dy_period'</span>, 1); <span class="org-comment">% [s]</span>
|
||||
<pre class="src src-matlab">initializeReferences('Dy_type', 'sinusoidal', ...
|
||||
'Dy_amplitude', 5e-3, ... % [m]
|
||||
'Dy_period', 1); % [s]
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -766,8 +766,8 @@ We identify the dynamics at different positions (times) when scanning with the T
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6e25821" class="outline-3">
|
||||
<h3 id="org6e25821"><span class="section-number-3">2.6</span> Conclusion</h3>
|
||||
<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>
|
||||
@@ -858,19 +858,19 @@ The control architecture is represented in figure <a href="#org3a1dbf1">29</a> w
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga4d47de" class="outline-3">
|
||||
<h3 id="orga4d47de"><span class="section-number-3">3.1</span> Control Design</h3>
|
||||
<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-org506864d" class="outline-4">
|
||||
<h4 id="org506864d"><span class="section-number-4">3.1.1</span> Plant</h4>
|
||||
<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’s load the previously identified undamped plant:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_undamped_plants.mat'</span>, <span class="org-string">'G_iff'</span>);
|
||||
load(<span class="org-string">'./mat/active_damping_plants_variable.mat'</span>, <span class="org-string">'masses'</span>, <span class="org-string">'Gm_iff'</span>);
|
||||
<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>
|
||||
|
||||
@@ -887,15 +887,15 @@ Let’s look at the transfer function from actuator forces in the nano-hexap
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd147055" class="outline-4">
|
||||
<h4 id="orgd147055"><span class="section-number-4">3.1.2</span> Control Design</h4>
|
||||
<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<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>50;
|
||||
K_iff = <span class="org-type">-</span>5000<span class="org-type">/</span>s <span class="org-type">*</span> (s<span class="org-type">/</span>w0)<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>w0);
|
||||
<pre class="src src-matlab">w0 = 2*pi*50;
|
||||
K_iff = -5000/s * (s/w0)/(1 + s/w0);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -912,15 +912,15 @@ The corresponding loop gains are shown in figure <a href="#org1f5c623">31</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgeed5a23" class="outline-4">
|
||||
<h4 id="orgeed5a23"><span class="section-number-4">3.1.3</span> Diagonal Controller</h4>
|
||||
<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 = <span class="org-type">-</span>K_iff<span class="org-type">*</span>eye(6);
|
||||
<pre class="src src-matlab">K_iff = -K_iff*eye(6);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -928,15 +928,15 @@ feedback architecture.
|
||||
We save the controller for further analysis.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_K_iff.mat'</span>, <span class="org-string">'K_iff'</span>);
|
||||
<pre class="src src-matlab">save('./mat/active_damping_K_iff.mat', 'K_iff');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge4bf8c1" class="outline-3">
|
||||
<h3 id="orge4bf8c1"><span class="section-number-3">3.2</span> Tomography Experiment</h3>
|
||||
<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">
|
||||
@@ -954,8 +954,8 @@ We initialize elements for the tomography experiment.
|
||||
We set the IFF controller.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_K_iff.mat'</span>, <span class="org-string">'K_iff'</span>);
|
||||
initializeController(<span class="org-string">'type'</span>, <span class="org-string">'iff'</span>);
|
||||
<pre class="src src-matlab">load('./mat/active_damping_K_iff.mat', 'K_iff');
|
||||
initializeController('type', 'iff');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -963,8 +963,8 @@ initializeController(<span class="org-string">'type'</span>, <span class="org-st
|
||||
We change the simulation stop time.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simulink.mat'</span>);
|
||||
<span class="org-matlab-simulink-keyword">set_param</span>(<span class="org-variable-name">conf_simulink</span>, <span class="org-string">'StopTime'</span>, <span class="org-string">'4.5'</span>);
|
||||
<pre class="src src-matlab">load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '4.5');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -972,7 +972,7 @@ We change the simulation stop time.
|
||||
And we simulate the system.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
<pre class="src src-matlab">sim('nass_model');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -982,14 +982,14 @@ Finally, we save the simulation results for further analysis
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">En_iff = En;
|
||||
Eg_iff = Eg;
|
||||
save(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span class="org-string">'En_iff'</span>, <span class="org-string">'Eg_iff'</span>, <span class="org-string">'-append'</span>);
|
||||
save('./mat/active_damping_tomo_exp.mat', 'En_iff', 'Eg_iff', '-append');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9c3f302" class="outline-4">
|
||||
<h4 id="org9c3f302"><span class="section-number-4">3.2.2</span> Compare with Undamped system</h4>
|
||||
<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">
|
||||
@@ -1015,8 +1015,8 @@ save(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd53cc4e" class="outline-3">
|
||||
<h3 id="orgd53cc4e"><span class="section-number-3">3.3</span> Conclusion</h3>
|
||||
<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>
|
||||
@@ -1051,19 +1051,19 @@ The actuator displacement can be measured with a capacitive sensor for instance.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org22d12df" class="outline-3">
|
||||
<h3 id="org22d12df"><span class="section-number-3">4.1</span> Control Design</h3>
|
||||
<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-org0b48ca9" class="outline-4">
|
||||
<h4 id="org0b48ca9"><span class="section-number-4">4.1.1</span> Plant</h4>
|
||||
<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’s load the undamped plant:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_undamped_plants.mat'</span>, <span class="org-string">'G_dvf'</span>);
|
||||
load(<span class="org-string">'./mat/active_damping_plants_variable.mat'</span>, <span class="org-string">'masses'</span>, <span class="org-string">'Gm_dvf'</span>);
|
||||
<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>
|
||||
|
||||
@@ -1080,15 +1080,15 @@ Let’s look at the transfer function from actuator forces in the nano-hexap
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org59030a3" class="outline-4">
|
||||
<h4 id="org59030a3"><span class="section-number-4">4.1.2</span> Control Design</h4>
|
||||
<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<span class="org-type">*</span>30000<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span>10000);
|
||||
<pre class="src src-matlab">K_dvf = s*30000/(1 + s/2/pi/10000);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1105,14 +1105,14 @@ The obtained loop gains are shown in figure <a href="#org3568457">36</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org59cf352" class="outline-4">
|
||||
<h4 id="org59cf352"><span class="section-number-4">4.1.3</span> Diagonal Controller</h4>
|
||||
<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 = <span class="org-type">-</span>K_dvf<span class="org-type">*</span>eye(6);
|
||||
<pre class="src src-matlab">K_dvf = -K_dvf*eye(6);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1120,19 +1120,19 @@ We create the diagonal controller and we add a minus sign as we have a positive
|
||||
We save the controller for further analysis.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_K_dvf.mat'</span>, <span class="org-string">'K_dvf'</span>);
|
||||
<pre class="src src-matlab">save('./mat/active_damping_K_dvf.mat', 'K_dvf');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org76bbcf0" class="outline-3">
|
||||
<h3 id="org76bbcf0"><span class="section-number-3">4.2</span> Tomography Experiment</h3>
|
||||
<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-orge2c011b" class="outline-4">
|
||||
<h4 id="orge2c011b"><span class="section-number-4">4.2.1</span> Initialize the Simulation</h4>
|
||||
<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.
|
||||
@@ -1146,8 +1146,8 @@ We initialize elements for the tomography experiment.
|
||||
We set the DVF controller.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_K_dvf.mat'</span>, <span class="org-string">'K_dvf'</span>);
|
||||
initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
|
||||
<pre class="src src-matlab">load('./mat/active_damping_K_dvf.mat', 'K_dvf');
|
||||
initializeController('type', 'dvf');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1155,8 +1155,8 @@ initializeController(<span class="org-string">'type'</span>, <span class="org-st
|
||||
We change the simulation stop time.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simulink.mat'</span>);
|
||||
<span class="org-matlab-simulink-keyword">set_param</span>(<span class="org-variable-name">conf_simulink</span>, <span class="org-string">'StopTime'</span>, <span class="org-string">'4.5'</span>);
|
||||
<pre class="src src-matlab">load('mat/conf_simulink.mat');
|
||||
set_param(conf_simulink, 'StopTime', '4.5');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1164,7 +1164,7 @@ We change the simulation stop time.
|
||||
And we simulate the system.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
|
||||
<pre class="src src-matlab">sim('nass_model');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1174,14 +1174,14 @@ Finally, we save the simulation results for further analysis
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">En_dvf = En;
|
||||
Eg_dvf = Eg;
|
||||
save(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span class="org-string">'En_dvf'</span>, <span class="org-string">'Eg_dvf'</span>, <span class="org-string">'-append'</span>);
|
||||
save('./mat/active_damping_tomo_exp.mat', 'En_dvf', 'Eg_dvf', '-append');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8cb0050" class="outline-4">
|
||||
<h4 id="org8cb0050"><span class="section-number-4">4.2.2</span> Compare with Undamped system</h4>
|
||||
<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">
|
||||
@@ -1207,8 +1207,8 @@ save(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5f85708" class="outline-3">
|
||||
<h3 id="org5f85708"><span class="section-number-3">4.3</span> Conclusion</h3>
|
||||
<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>
|
||||
@@ -1240,19 +1240,19 @@ In Inertial Control, a feedback is applied between the measured <b>absolute</b>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9f4c2b3" class="outline-3">
|
||||
<h3 id="org9f4c2b3"><span class="section-number-3">5.1</span> Control Design</h3>
|
||||
<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-org9ec605a" class="outline-4">
|
||||
<h4 id="org9ec605a"><span class="section-number-4">5.1.1</span> Plant</h4>
|
||||
<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’s load the undamped plant:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">load(<span class="org-string">'./mat/active_damping_undamped_plants.mat'</span>, <span class="org-string">'G_ine'</span>);
|
||||
load(<span class="org-string">'./mat/active_damping_plants_variable.mat'</span>, <span class="org-string">'masses'</span>, <span class="org-string">'Gm_ine'</span>);
|
||||
<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>
|
||||
|
||||
@@ -1269,8 +1269,8 @@ Let’s look at the transfer function from actuator forces in the nano-hexap
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org94a1419" class="outline-4">
|
||||
<h4 id="org94a1419"><span class="section-number-4">5.1.2</span> Control Design</h4>
|
||||
<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>.
|
||||
@@ -1290,14 +1290,14 @@ The controller is defined below and the obtained loop gain is shown in figure <a
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc596f9b" class="outline-4">
|
||||
<h4 id="orgc596f9b"><span class="section-number-4">5.1.3</span> Diagonal Controller</h4>
|
||||
<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 = <span class="org-type">-</span>K_ine<span class="org-type">*</span>eye(6);
|
||||
<pre class="src src-matlab">K_ine = -K_ine*eye(6);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1305,15 +1305,15 @@ We create the diagonal controller and we add a minus sign as we have a positive
|
||||
We save the controller for further analysis.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">save(<span class="org-string">'./mat/active_damping_K_ine.mat'</span>, <span class="org-string">'K_ine'</span>);
|
||||
<pre class="src src-matlab">save('./mat/active_damping_K_ine.mat', 'K_ine');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdc8e915" class="outline-3">
|
||||
<h3 id="orgdc8e915"><span class="section-number-3">5.2</span> Conclusion</h3>
|
||||
<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>
|
||||
@@ -1336,7 +1336,7 @@ Inertial Control should not be used.
|
||||
<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(<span class="org-string">'./mat/active_damping_plants.mat'</span>, <span class="org-string">'G'</span>, <span class="org-string">'G_iff'</span>, <span class="org-string">'G_ine'</span>, <span class="org-string">'G_dvf'</span>);
|
||||
<pre class="src src-matlab">load('./mat/active_damping_plants.mat', 'G', 'G_iff', 'G_ine', 'G_dvf');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1414,9 +1414,9 @@ Inertial Control should not be used.
|
||||
<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(<span class="org-string">'./mat/active_damping_tomo_exp.mat'</span>, <span class="org-string">'En'</span>, <span class="org-string">'En_iff'</span>, <span class="org-string">'En_dvf'</span>);
|
||||
Fs = 1e3; <span class="org-comment">% Sampling Frequency of the Data</span>
|
||||
t = (1<span class="org-type">/</span>Fs)<span class="org-type">*</span>[0<span class="org-type">:</span>length(En(<span class="org-type">:</span>,1))<span class="org-type">-</span>1];
|
||||
<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>
|
||||
|
||||
@@ -1424,12 +1424,12 @@ t = (1<span class="org-type">/</span>Fs)<span class="org-type">*</span>[0<span c
|
||||
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">[<span class="org-type">~</span>, i_start] = min(abs(t <span class="org-type">-</span> 0.5)); <span class="org-comment">% find the indice corresponding to 0.5s</span>
|
||||
<pre class="src src-matlab">[~, i_start] = min(abs(t - 0.5)); % find the indice corresponding to 0.5s
|
||||
|
||||
t = t(i_start<span class="org-type">:</span>end) <span class="org-type">-</span> t(i_start);
|
||||
En = En(i_start<span class="org-type">:</span>end, <span class="org-type">:</span>);
|
||||
En_dvf = En_dvf(i_start<span class="org-type">:</span>end, <span class="org-type">:</span>);
|
||||
En_iff = En_iff(i_start<span class="org-type">:</span>end, <span class="org-type">:</span>);
|
||||
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>
|
||||
|
||||
@@ -1438,7 +1438,7 @@ 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(<span class="org-type">:</span>, 1))<span class="org-type">/</span>n_av));
|
||||
han_win = hanning(ceil(length(En(:, 1))/n_av));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1489,32 +1489,32 @@ This Matlab function is accessible <a href="src/prepareLinearizeIdentification.m
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga028903" class="outline-4">
|
||||
<h4 id="orga028903">Function Description</h4>
|
||||
<div class="outline-text-4" id="text-orga028903">
|
||||
<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"><span class="org-keyword">function</span> <span class="org-variable-name">[]</span> = <span class="org-function-name">prepareLinearizeIdentification</span>(<span class="org-variable-name">args</span>)
|
||||
<pre class="src src-matlab">function [] = prepareLinearizeIdentification(args)
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbda1bf4" class="outline-4">
|
||||
<h4 id="orgbda1bf4">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgbda1bf4">
|
||||
<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,{<span class="org-string">'piezo'</span>, <span class="org-string">'lorentz'</span>})} = <span class="org-string">'piezo'</span>
|
||||
args.sample_mass (1,1) double {mustBeNumeric, mustBePositive} = 50 <span class="org-comment">% [kg]</span>
|
||||
<span class="org-keyword">end</span>
|
||||
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-org2131c58" class="outline-4">
|
||||
<h4 id="org2131c58">Initialize the Simulation</h4>
|
||||
<div class="outline-text-4" id="text-org2131c58">
|
||||
<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>
|
||||
@@ -1534,8 +1534,8 @@ initializeMirror();
|
||||
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeNanoHexapod(<span class="org-string">'actuator'</span>, args.nass_actuator);
|
||||
initializeSample(<span class="org-string">'mass'</span>, args.sample_mass);
|
||||
<pre class="src src-matlab">initializeNanoHexapod('actuator', args.nass_actuator);
|
||||
initializeSample('mass', args.sample_mass);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1544,7 +1544,7 @@ We set the references and disturbances to zero.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences();
|
||||
initializeDisturbances(<span class="org-string">'enable'</span>, <span class="org-constant">false</span>);
|
||||
initializeDisturbances('enable', false);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1552,7 +1552,7 @@ initializeDisturbances(<span class="org-string">'enable'</span>, <span class="or
|
||||
We set the controller type to Open-Loop.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
<pre class="src src-matlab">initializeController('type', 'open-loop');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1560,7 +1560,7 @@ We set the controller type to Open-Loop.
|
||||
And we put some gravity.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration('gravity', true);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1568,7 +1568,7 @@ And we put some gravity.
|
||||
We do not need to log any signal.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'none'</span>);
|
||||
<pre class="src src-matlab">initializeLoggingConfiguration('log', 'none');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1587,33 +1587,33 @@ This Matlab function is accessible <a href="src/prepareTomographyExperiment.m">h
|
||||
</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 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"><span class="org-keyword">function</span> <span class="org-variable-name">[]</span> = <span class="org-function-name">prepareTomographyExperiment</span>(<span class="org-variable-name">args</span>)
|
||||
<pre class="src src-matlab">function [] = prepareTomographyExperiment(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 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,{<span class="org-string">'piezo'</span>, <span class="org-string">'lorentz'</span>})} = <span class="org-string">'piezo'</span>
|
||||
args.sample_mass (1,1) double {mustBeNumeric, mustBePositive} = 50 <span class="org-comment">% [kg]</span>
|
||||
args.Rz_period (1,1) double {mustBeNumeric, mustBePositive} = 1 <span class="org-comment">% [s]</span>
|
||||
<span class="org-keyword">end</span>
|
||||
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-org45b5800" class="outline-4">
|
||||
<h4 id="org45b5800">Initialize the Simulation</h4>
|
||||
<div class="outline-text-4" id="text-org45b5800">
|
||||
<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>
|
||||
@@ -1633,8 +1633,8 @@ initializeMirror();
|
||||
The nano-hexapod is a piezoelectric hexapod and the sample has a mass of 50kg.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeNanoHexapod(<span class="org-string">'actuator'</span>, args.nass_actuator);
|
||||
initializeSample(<span class="org-string">'mass'</span>, args.sample_mass);
|
||||
<pre class="src src-matlab">initializeNanoHexapod('actuator', args.nass_actuator);
|
||||
initializeSample('mass', args.sample_mass);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1642,7 +1642,7 @@ initializeSample(<span class="org-string">'mass'</span>, args.sample_mass);
|
||||
We set the references that corresponds to a tomography experiment.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeReferences(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating'</span>, <span class="org-string">'Rz_period'</span>, args.Rz_period);
|
||||
<pre class="src src-matlab">initializeReferences('Rz_type', 'rotating', 'Rz_period', args.Rz_period);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1655,7 +1655,7 @@ We set the references that corresponds to a tomography experiment.
|
||||
Open Loop.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
<pre class="src src-matlab">initializeController('type', 'open-loop');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1663,7 +1663,7 @@ Open Loop.
|
||||
And we put some gravity.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
|
||||
<pre class="src src-matlab">initializeSimscapeConfiguration('gravity', true);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -1671,7 +1671,7 @@ And we put some gravity.
|
||||
We log the signals.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeLoggingConfiguration(<span class="org-string">'log'</span>, <span class="org-string">'all'</span>);
|
||||
<pre class="src src-matlab">initializeLoggingConfiguration('log', 'all');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1681,7 +1681,7 @@ We log the signals.
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-04-17 ven. 09:36</p>
|
||||
<p class="date">Created: 2020-05-05 mar. 10:34</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
Reference in New Issue
Block a user