Update links from index and publish html files

This commit is contained in:
2020-03-25 19:23:22 +01:00
parent ccfe1a3bb8
commit 27f15fdf78
34 changed files with 3135 additions and 484 deletions

View File

@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<?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-03-23 lun. 10:05 -->
<!-- 2020-03-25 mer. 19:22 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Control of the NASS with Voice coil actuators</title>
@@ -248,6 +247,16 @@ for the JavaScript code in this tag.
}
/*]]>*///-->
</script>
<script>
MathJax = {
tex: { macros: {
bm: ["\\boldsymbol{#1}",1],
}
}
};
</script>
<script type="text/javascript"
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<body>
<div id="org-div-home-and-up">
@@ -256,10 +265,537 @@ for the JavaScript code in this tag.
<a accesskey="H" href="./index.html"> HOME </a>
</div><div id="content">
<h1 class="title">Control of the NASS with Voice coil actuators</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org6d5d6b2">1. Initialization</a></li>
<li><a href="#orgf95b045">2. Low Authority Control - Integral Force Feedback \(\bm{K}_\text{IFF}\)</a>
<ul>
<li><a href="#org75ecf55">2.1. Identification</a></li>
<li><a href="#org203d651">2.2. Plant</a></li>
<li><a href="#orgccc21d2">2.3. Root Locus</a></li>
<li><a href="#org1a8ee8a">2.4. Controller and Loop Gain</a></li>
</ul>
</li>
<li><a href="#org2a44e66">3. High Authority Control in the joint space - \(\bm{K}_\mathcal{L}\)</a>
<ul>
<li><a href="#org989c2e9">3.1. Identification of the damped plant</a></li>
<li><a href="#orgd89dc76">3.2. Obtained Plant</a></li>
<li><a href="#orgd1632cf">3.3. Controller Design and Loop Gain</a></li>
</ul>
</li>
<li><a href="#org5e26e70">4. On the usefulness of the High Authority Control loop / Linearization loop</a>
<ul>
<li><a href="#orge9b2f08">4.1. Identification</a></li>
<li><a href="#orgfab8847">4.2. Plant in the Task space</a></li>
<li><a href="#org18aeea5">4.3. Plant in the Leg&rsquo;s space</a></li>
</ul>
</li>
<li><a href="#org0cd0c63">5. Primary Controller in the task space - \(\bm{K}_\mathcal{X}\)</a>
<ul>
<li><a href="#orga960106">5.1. Identification of the linearized plant</a></li>
<li><a href="#org45829b7">5.2. Obtained Plant</a></li>
<li><a href="#org16f56fa">5.3. Controller Design</a></li>
</ul>
</li>
<li><a href="#org0b05a3a">6. Simulation</a></li>
<li><a href="#org16024e0">7. Results</a>
<ul>
<li><a href="#org26b1a39">7.1. Load the simulation results</a></li>
<li><a href="#org0f974ff">7.2. Control effort</a></li>
<li><a href="#orge126fd7">7.3. Load the simulation results</a></li>
</ul>
</li>
</ul>
</div>
</div>
<p>
The goal here is to study the use of a voice coil based nano-hexapod.
That is to say a nano-hexapod with a very small stiffness.
</p>
<div id="org757d77b" class="figure">
<p><img src="figs/cascade_control_architecture.png" alt="cascade_control_architecture.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Cascaded Control consisting of (from inner to outer loop): IFF, Linearization Loop, Tracking Control in the frame of the Legs</p>
</div>
<div id="outline-container-org6d5d6b2" class="outline-2">
<h2 id="org6d5d6b2"><span class="section-number-2">1</span> Initialization</h2>
<div class="outline-text-2" id="text-1">
<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 voice coil based hexapod and the sample has a mass of 1kg.
</p>
<div class="org-src-container">
<pre class="src src-matlab">initializeNanoHexapod(<span class="org-string">'actuator'</span>, <span class="org-string">'lorentz'</span>);
initializeSample(<span class="org-string">'mass'</span>, 1);
</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(<span class="org-string">'Rz_type'</span>, <span class="org-string">'rotating'</span>, <span class="org-string">'Rz_period'</span>, 1);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">initializeDisturbances();
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'cascade-hac-lac'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">initializeSimscapeConfiguration(<span class="org-string">'gravity'</span>, <span class="org-constant">true</span>);
</pre>
</div>
<p>
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>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Kx = tf(zeros(6));
Kl = tf(zeros(6));
Kiff = tf(zeros(6));
</pre>
</div>
</div>
</div>
<div id="outline-container-orgf95b045" class="outline-2">
<h2 id="orgf95b045"><span class="section-number-2">2</span> Low Authority Control - Integral Force Feedback \(\bm{K}_\text{IFF}\)</h2>
<div class="outline-text-2" id="text-2">
<p>
<a id="org224edef"></a>
</p>
</div>
<div id="outline-container-org75ecf55" class="outline-3">
<h3 id="org75ecf55"><span class="section-number-3">2.1</span> Identification</h3>
<div class="outline-text-3" id="text-2-1">
<p>
Let&rsquo;s first identify the plant for the IFF controller.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'nass_model'</span>;
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
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">'Fnlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Force Sensors</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
G_iff = linearize(mdl, io, 0);
G_iff.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_iff.OutputName = {<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>};
</pre>
</div>
</div>
</div>
<div id="outline-container-org203d651" class="outline-3">
<h3 id="org203d651"><span class="section-number-3">2.2</span> Plant</h3>
<div class="outline-text-3" id="text-2-2">
<p>
The obtained plant for IFF is shown in Figure <a href="#orga39f9fa">2</a>.
</p>
<div id="orga39f9fa" class="figure">
<p><img src="figs/cascade_vc_iff_plant.png" alt="cascade_vc_iff_plant.png" />
</p>
<p><span class="figure-number">Figure 2: </span>IFF Plant (<a href="./figs/cascade_vc_iff_plant.png">png</a>, <a href="./figs/cascade_vc_iff_plant.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-orgccc21d2" class="outline-3">
<h3 id="orgccc21d2"><span class="section-number-3">2.3</span> Root Locus</h3>
<div class="outline-text-3" id="text-2-3">
<p>
As seen in the root locus (Figure <a href="#org528b5f0">3</a>, no damping can be added to modes corresponding to the resonance of the micro-station.
</p>
<p>
However, critical damping can be achieve for the resonances of the nano-hexapod as shown in the zoomed part of the root (Figure <a href="#org528b5f0">3</a>, left part).
The maximum damping is obtained for a control gain of \(\approx 70\).
</p>
<div id="org528b5f0" class="figure">
<p><img src="figs/cascade_vc_iff_root_locus.png" alt="cascade_vc_iff_root_locus.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Root Locus for the IFF control (<a href="./figs/cascade_vc_iff_root_locus.png">png</a>, <a href="./figs/cascade_vc_iff_root_locus.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org1a8ee8a" class="outline-3">
<h3 id="org1a8ee8a"><span class="section-number-3">2.4</span> Controller and Loop Gain</h3>
<div class="outline-text-3" id="text-2-4">
<p>
We create the \(6 \times 6\) diagonal Integral Force Feedback controller.
The obtained loop gain is shown in Figure <a href="#orgc890275">4</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = <span class="org-type">-</span>70<span class="org-type">/</span>s<span class="org-type">*</span>eye(6);
</pre>
</div>
<div id="orgc890275" class="figure">
<p><img src="figs/cascade_vc_iff_loop_gain.png" alt="cascade_vc_iff_loop_gain.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Obtained Loop gain the IFF Control (<a href="./figs/cascade_vc_iff_loop_gain.png">png</a>, <a href="./figs/cascade_vc_iff_loop_gain.pdf">pdf</a>)</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org2a44e66" class="outline-2">
<h2 id="org2a44e66"><span class="section-number-2">3</span> High Authority Control in the joint space - \(\bm{K}_\mathcal{L}\)</h2>
<div class="outline-text-2" id="text-3">
<p>
<a id="org1d54e1b"></a>
</p>
</div>
<div id="outline-container-org989c2e9" class="outline-3">
<h3 id="org989c2e9"><span class="section-number-3">3.1</span> Identification of the damped plant</h3>
<div class="outline-text-3" id="text-3-1">
<p>
Let&rsquo;s identify the dynamics from \(\bm{\tau}^\prime\) to \(d\bm{\mathcal{L}}\) as shown in Figure <a href="#org757d77b">1</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'nass_model'</span>;
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1;
io(io_i) = linio([mdl, <span class="org-string">'/Controller'</span>], 1, <span class="org-string">'input'</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">'output'</span>, [], <span class="org-string">'Dnlm'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Leg Displacement</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
Gl = linearize(mdl, io, 0);
Gl.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>};
Gl.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>};
</pre>
</div>
<p>
There are some unstable poles in the Plant with very small imaginary parts.
These unstable poles are probably not physical, and they disappear when taking the minimum realization of the plant.
</p>
<div class="org-src-container">
<pre class="src src-matlab">isstable(Gl)
Gl = minreal(Gl);
isstable(Gl)
</pre>
</div>
</div>
</div>
<div id="outline-container-orgd89dc76" class="outline-3">
<h3 id="orgd89dc76"><span class="section-number-3">3.2</span> Obtained Plant</h3>
<div class="outline-text-3" id="text-3-2">
<p>
The obtained dynamics is shown in Figure <a href="#orgd1818fd">5</a>.
</p>
<p>
Few things can be said on the dynamics:
</p>
<ul class="org-ul">
<li>the dynamics of the diagonal elements are almost all the same</li>
<li>the system is well decoupled below the resonances of the nano-hexapod (1Hz)</li>
<li>the dynamics of the diagonal elements are almost equivalent to a critically damped mass-spring-system with some spurious resonances above 50Hz corresponding to the resonances of the micro-station</li>
</ul>
<div id="orgd1818fd" class="figure">
<p><img src="figs/cascade_vc_hac_joint_plant.png" alt="cascade_vc_hac_joint_plant.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Plant for the High Authority Control in the Joint Space (<a href="./figs/cascade_vc_hac_joint_plant.png">png</a>, <a href="./figs/cascade_vc_hac_joint_plant.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-orgd1632cf" class="outline-3">
<h3 id="orgd1632cf"><span class="section-number-3">3.3</span> Controller Design and Loop Gain</h3>
<div class="outline-text-3" id="text-3-3">
<p>
As the plant is well decoupled, a diagonal plant is designed.
</p>
<div class="org-src-container">
<pre class="src src-matlab">wc = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>5; <span class="org-comment">% Bandwidth Bandwidth [rad/s]</span>
h = 2; <span class="org-comment">% Lead parameter</span>
Kl = (1<span class="org-type">/</span>h) <span class="org-type">*</span> (1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">*</span>h)<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">/</span>h) <span class="org-type">*</span> ...<span class="org-comment"> % Lead</span>
(1<span class="org-type">/</span>h) <span class="org-type">*</span> (1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">*</span>h)<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">/</span>h) <span class="org-type">*</span> ...<span class="org-comment"> % Lead</span>
(s <span class="org-type">+</span> 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>10)<span class="org-type">/</span>s <span class="org-type">*</span> ...<span class="org-comment"> % Weak Integrator</span>
(s <span class="org-type">+</span> 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>1)<span class="org-type">/</span>s <span class="org-type">*</span> ...<span class="org-comment"> % Weak Integrator</span>
1<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span>10); <span class="org-comment">% Low pass filter after crossover</span>
<span class="org-comment">% Normalization of the gain of have a loop gain of 1 at frequency wc</span>
Kl = Kl<span class="org-type">.*</span>diag(1<span class="org-type">./</span>diag(abs(freqresp(Gl<span class="org-type">*</span>Kl, wc))));
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org5e26e70" class="outline-2">
<h2 id="org5e26e70"><span class="section-number-2">4</span> On the usefulness of the High Authority Control loop / Linearization loop</h2>
<div class="outline-text-2" id="text-4">
<p>
Let&rsquo;s see what happens is we omit the HAC loop and we directly try to control the damped plant using the measurement of the sample with respect to the granite \(\bm{\mathcal{X}}\).
</p>
<p>
We can do that in two different ways:
</p>
<ul class="org-ul">
<li>in the task space as shown in Figure <a href="#orge366d0b">6</a></li>
<li>in the space of the legs as shown in Figure <a href="#orgd23329e">7</a></li>
</ul>
<div id="orge366d0b" class="figure">
<p><img src="figs/control_architecture_iff_X.png" alt="control_architecture_iff_X.png" />
</p>
<p><span class="figure-number">Figure 6: </span>IFF control + primary controller in the task space</p>
</div>
<div id="orgd23329e" class="figure">
<p><img src="figs/control_architecture_iff_L.png" alt="control_architecture_iff_L.png" />
</p>
<p><span class="figure-number">Figure 7: </span>HAC-LAC control architecture in the frame of the legs</p>
</div>
</div>
<div id="outline-container-orge9b2f08" class="outline-3">
<h3 id="orge9b2f08"><span class="section-number-3">4.1</span> Identification</h3>
<div class="outline-text-3" id="text-4-1">
<div class="org-src-container">
<pre class="src src-matlab">initializeController(<span class="org-string">'type'</span>, <span class="org-string">'hac-iff'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'nass_model'</span>;
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1;
io(io_i) = linio([mdl, <span class="org-string">'/Controller/HAC-IFF/Kx'</span>], 1, <span class="org-string">'input'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/Tracking Error'</span>], 1, <span class="org-string">'output'</span>, [], <span class="org-string">'En'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Position Errror</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
G = linearize(mdl, io, 0);
G.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
G.OutputName = {<span class="org-string">'Ex'</span>, <span class="org-string">'Ey'</span>, <span class="org-string">'Ez'</span>, <span class="org-string">'Erx'</span>, <span class="org-string">'Ery'</span>, <span class="org-string">'Erz'</span>};
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">isstable(G)
G = <span class="org-type">-</span>minreal(G);
isstable(G)
</pre>
</div>
</div>
</div>
<div id="outline-container-orgfab8847" class="outline-3">
<h3 id="orgfab8847"><span class="section-number-3">4.2</span> Plant in the Task space</h3>
<div class="outline-text-3" id="text-4-2">
<p>
The obtained plant is shown in Figure
</p>
<div class="org-src-container">
<pre class="src src-matlab">Gx = G<span class="org-type">*</span>inv(nano_hexapod.J<span class="org-type">'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org18aeea5" class="outline-3">
<h3 id="org18aeea5"><span class="section-number-3">4.3</span> Plant in the Leg&rsquo;s space</h3>
<div class="outline-text-3" id="text-4-3">
<div class="org-src-container">
<pre class="src src-matlab">Gl = nano_hexapod.J<span class="org-type">*</span>G;
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org0cd0c63" class="outline-2">
<h2 id="org0cd0c63"><span class="section-number-2">5</span> Primary Controller in the task space - \(\bm{K}_\mathcal{X}\)</h2>
<div class="outline-text-2" id="text-5">
<p>
<a id="orga738520"></a>
</p>
</div>
<div id="outline-container-orga960106" class="outline-3">
<h3 id="orga960106"><span class="section-number-3">5.1</span> Identification of the linearized plant</h3>
<div class="outline-text-3" id="text-5-1">
<p>
We know identify the dynamics between \(\bm{r}_{\mathcal{X}_n}\) and \(\bm{r}_\mathcal{X}\).
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'nass_model'</span>;
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1;
io(io_i) = linio([mdl, <span class="org-string">'/Controller/Cascade-HAC-LAC/Kx'</span>], 1, <span class="org-string">'input'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/Tracking Error'</span>], 1, <span class="org-string">'output'</span>, [], <span class="org-string">'En'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Position Errror</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
Gx = linearize(mdl, io, 0);
Gx.InputName = {<span class="org-string">'rL1'</span>, <span class="org-string">'rL2'</span>, <span class="org-string">'rL3'</span>, <span class="org-string">'rL4'</span>, <span class="org-string">'rL5'</span>, <span class="org-string">'rL6'</span>};
Gx.OutputName = {<span class="org-string">'Ex'</span>, <span class="org-string">'Ey'</span>, <span class="org-string">'Ez'</span>, <span class="org-string">'Erx'</span>, <span class="org-string">'Ery'</span>, <span class="org-string">'Erz'</span>};
</pre>
</div>
<p>
As before, we take the minimum realization.
</p>
<div class="org-src-container">
<pre class="src src-matlab">isstable(Gx)
Gx = <span class="org-type">-</span>minreal(Gx);
isstable(Gx)
</pre>
</div>
</div>
</div>
<div id="outline-container-org45829b7" class="outline-3">
<h3 id="org45829b7"><span class="section-number-3">5.2</span> Obtained Plant</h3>
</div>
<div id="outline-container-org16f56fa" class="outline-3">
<h3 id="org16f56fa"><span class="section-number-3">5.3</span> Controller Design</h3>
<div class="outline-text-3" id="text-5-3">
<div class="org-src-container">
<pre class="src src-matlab">wc = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>200; <span class="org-comment">% Bandwidth Bandwidth [rad/s]</span>
h = 2; <span class="org-comment">% Lead parameter</span>
Kx = (1<span class="org-type">/</span>h) <span class="org-type">*</span> (1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">*</span>h)<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">/</span>h) <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>10)<span class="org-type">/</span>s <span class="org-type">*</span> ...
(s <span class="org-type">+</span> 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>100)<span class="org-type">/</span>s <span class="org-type">*</span> ...
1<span class="org-type">/</span>(1<span class="org-type">+</span>s<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span>500); <span class="org-comment">% For Piezo</span>
<span class="org-comment">% Kx = (1/h) * (1 + s/wc*h)/(1 + s/wc/h) * (s + 2*pi*10)/s * (s + 2*pi*1)/s ; % For voice coil</span>
<span class="org-comment">% Normalization of the gain of have a loop gain of 1 at frequency wc</span>
Kx = Kx<span class="org-type">.*</span>diag(1<span class="org-type">./</span>diag(abs(freqresp(Gx<span class="org-type">*</span>Kx, wc))));
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org0b05a3a" class="outline-2">
<h2 id="org0b05a3a"><span class="section-number-2">6</span> Simulation</h2>
<div class="outline-text-2" id="text-6">
<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">'2'</span>);
</pre>
</div>
<p>
And we simulate the system.
</p>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-simulink-keyword">sim</span>(<span class="org-string">'nass_model'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">cascade_hac_lac_lorentz = simout;
save(<span class="org-string">'./mat/cascade_hac_lac.mat'</span>, <span class="org-string">'cascade_hac_lac_lorentz'</span>, <span class="org-string">'-append'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org16024e0" class="outline-2">
<h2 id="org16024e0"><span class="section-number-2">7</span> Results</h2>
<div class="outline-text-2" id="text-7">
</div>
<div id="outline-container-org26b1a39" class="outline-3">
<h3 id="org26b1a39"><span class="section-number-3">7.1</span> Load the simulation results</h3>
<div class="outline-text-3" id="text-7-1">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./mat/experiment_tomography.mat'</span>, <span class="org-string">'tomo_align_dist'</span>);
load(<span class="org-string">'./mat/cascade_hac_lac.mat'</span>, <span class="org-string">'cascade_hac_lac'</span>, <span class="org-string">'cascade_hac_lac_lorentz'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org0f974ff" class="outline-3">
<h3 id="org0f974ff"><span class="section-number-3">7.2</span> Control effort</h3>
</div>
<div id="outline-container-orge126fd7" class="outline-3">
<h3 id="orge126fd7"><span class="section-number-3">7.3</span> Load the simulation results</h3>
<div class="outline-text-3" id="text-7-3">
<div class="org-src-container">
<pre class="src src-matlab">n_av = 4;
han_win = hanning(ceil(length(cascade_hac_lac.Em.En.Data(<span class="org-type">:</span>,1))<span class="org-type">/</span>n_av));
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">t = cascade_hac_lac.Em.En.Time;
Ts = t(2)<span class="org-type">-</span>t(1);
[pxx_ol, f] = pwelch(tomo_align_dist.Em.En.Data, han_win, [], [], 1<span class="org-type">/</span>Ts);
[pxx_ca, <span class="org-type">~</span>] = pwelch(cascade_hac_lac.Em.En.Data, han_win, [], [], 1<span class="org-type">/</span>Ts);
[pxx_vc, <span class="org-type">~</span>] = pwelch(cascade_hac_lac_lorentz.Em.En.Data, han_win, [], [], 1<span class="org-type">/</span>Ts);
</pre>
</div>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-03-23 lun. 10:05</p>
<p class="date">Created: 2020-03-25 mer. 19:22</p>
</div>
</body>
</html>