Merge few figures

This commit is contained in:
Thomas Dehaeze 2020-03-16 11:23:15 +01:00
parent 8fe6e814f2
commit cdecb24470
34 changed files with 252 additions and 374 deletions

View File

@ -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-03-13 ven. 13:23 -->
<!-- 2020-03-16 lun. 11:22 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Tracking Control</title>
@ -248,42 +248,42 @@
<ul>
<li><a href="#orgd7b25e5">1. Decentralized Control Architecture using Strut Length</a>
<ul>
<li><a href="#orga470275">1.1. Control Schematic</a></li>
<li><a href="#org3cdd958">1.2. Initialize the Stewart platform</a></li>
<li><a href="#org8ae8979">1.3. Identification of the plant</a></li>
<li><a href="#org486a2e4">1.4. Plant Analysis</a></li>
<li><a href="#org484c823">1.5. Controller Design</a></li>
<li><a href="#org013a9ba">1.6. Simulation</a></li>
<li><a href="#orgaf4f125">1.1. Control Schematic</a></li>
<li><a href="#org5efa5dc">1.2. Initialize the Stewart platform</a></li>
<li><a href="#orgf2a4e09">1.3. Identification of the plant</a></li>
<li><a href="#org346704a">1.4. Plant Analysis</a></li>
<li><a href="#org303d728">1.5. Controller Design</a></li>
<li><a href="#orgac9e2fb">1.6. Simulation</a></li>
<li><a href="#org974b430">1.7. Results</a></li>
<li><a href="#org19a6760">1.8. Conclusion</a></li>
<li><a href="#org8f3d960">1.8. Conclusion</a></li>
</ul>
</li>
<li><a href="#orga519721">2. Centralized Control Architecture using Pose Measurement</a>
<ul>
<li><a href="#orga5acf65">2.1. Control Schematic</a></li>
<li><a href="#org0250b01">2.2. Initialize the Stewart platform</a></li>
<li><a href="#orgf2a4e09">2.3. Identification of the plant</a></li>
<li><a href="#org373826d">2.1. Control Schematic</a></li>
<li><a href="#orgdb540d4">2.2. Initialize the Stewart platform</a></li>
<li><a href="#org7e2bbea">2.3. Identification of the plant</a></li>
<li><a href="#org2223469">2.4. Diagonal Control - Leg&rsquo;s Frame</a>
<ul>
<li><a href="#org8e1e62c">2.4.1. Control Architecture</a></li>
<li><a href="#org133ca61">2.4.2. Plant Analysis</a></li>
<li><a href="#org6afc297">2.4.3. Controller Design</a></li>
<li><a href="#orgdb24c37">2.4.4. Simulation</a></li>
<li><a href="#org42dc407">2.4.1. Control Architecture</a></li>
<li><a href="#org33774e9">2.4.2. Plant Analysis</a></li>
<li><a href="#orgc7ddab1">2.4.3. Controller Design</a></li>
<li><a href="#org3021cf3">2.4.4. Simulation</a></li>
</ul>
</li>
<li><a href="#org26a8857">2.5. Diagonal Control - Cartesian Frame</a>
<ul>
<li><a href="#org0f41ce9">2.5.1. Control Architecture</a></li>
<li><a href="#org9691244">2.5.2. Plant Analysis</a></li>
<li><a href="#org7f32f8e">2.5.3. Controller Design</a></li>
<li><a href="#orgac9e2fb">2.5.4. Simulation</a></li>
<li><a href="#org185190b">2.5.1. Control Architecture</a></li>
<li><a href="#orgac4e8f3">2.5.2. Plant Analysis</a></li>
<li><a href="#org87c1a48">2.5.3. Controller Design</a></li>
<li><a href="#org73875ca">2.5.4. Simulation</a></li>
</ul>
</li>
<li><a href="#orgad7bc54">2.6. Diagonal Control - Steady State Decoupling</a>
<ul>
<li><a href="#org42dc407">2.6.1. Control Architecture</a></li>
<li><a href="#org346704a">2.6.2. Plant Analysis</a></li>
<li><a href="#org8b2a544">2.6.3. Controller Design</a></li>
<li><a href="#orgdeee29c">2.6.1. Control Architecture</a></li>
<li><a href="#org4c98210">2.6.2. Plant Analysis</a></li>
<li><a href="#orgbf66d4c">2.6.3. Controller Design</a></li>
</ul>
</li>
<li><a href="#orga2eadeb">2.7. Comparison</a>
@ -292,29 +292,29 @@
<li><a href="#org23ae479">2.7.2. Simulation Results</a></li>
</ul>
</li>
<li><a href="#orgc7e00b3">2.8. Conclusion</a></li>
<li><a href="#orgd2764a2">2.8. Conclusion</a></li>
</ul>
</li>
<li><a href="#org4b8c360">3. Hybrid Control Architecture - HAC-LAC with relative DVF</a>
<ul>
<li><a href="#orgaf4f125">3.1. Control Schematic</a></li>
<li><a href="#org5efa5dc">3.2. Initialize the Stewart platform</a></li>
<li><a href="#org539565c">3.1. Control Schematic</a></li>
<li><a href="#orga9bdd4e">3.2. Initialize the Stewart platform</a></li>
<li><a href="#org3274a98">3.3. First Control Loop - \(\bm{K}_\mathcal{L}\)</a>
<ul>
<li><a href="#orgfb552d7">3.3.1. Identification</a></li>
<li><a href="#orge84aa66">3.3.2. Obtained Plant</a></li>
<li><a href="#orgfeef351">3.3.3. Controller Design</a></li>
<li><a href="#orgd69b37c">3.3.1. Identification</a></li>
<li><a href="#org2a634da">3.3.2. Obtained Plant</a></li>
<li><a href="#org23695fa">3.3.3. Controller Design</a></li>
</ul>
</li>
<li><a href="#org8440c0b">3.4. Second Control Loop - \(\bm{K}_\mathcal{X}\)</a>
<ul>
<li><a href="#orgd69b37c">3.4.1. Identification</a></li>
<li><a href="#org2a634da">3.4.2. Obtained Plant</a></li>
<li><a href="#org303d728">3.4.3. Controller Design</a></li>
<li><a href="#orgeec6c35">3.4.1. Identification</a></li>
<li><a href="#org57836ee">3.4.2. Obtained Plant</a></li>
<li><a href="#orgcebb0d5">3.4.3. Controller Design</a></li>
</ul>
</li>
<li><a href="#org74d3dcd">3.5. Simulations</a></li>
<li><a href="#org8f3d960">3.6. Conclusion</a></li>
<li><a href="#org771bea0">3.6. Conclusion</a></li>
</ul>
</li>
<li><a href="#org798d54f">4. Comparison of all the methods</a></li>
@ -351,11 +351,11 @@ The control configuration are compare in section <a href="#orgb3403cb">4</a>.
<a id="orgea7df6c"></a>
</p>
</div>
<div id="outline-container-orga470275" class="outline-3">
<h3 id="orga470275"><span class="section-number-3">1.1</span> Control Schematic</h3>
<div id="outline-container-orgaf4f125" class="outline-3">
<h3 id="orgaf4f125"><span class="section-number-3">1.1</span> Control Schematic</h3>
<div class="outline-text-3" id="text-1-1">
<p>
The control architecture is shown in Figure <a href="#org4f704a1">1</a>.
The control architecture is shown in Figure <a href="#org897886b">1</a>.
</p>
<p>
@ -367,16 +367,16 @@ Then, a diagonal (decentralized) controller \(\bm{K}_\mathcal{L}\) is used such
</p>
<div id="org4f704a1" class="figure">
<p><img src="figs/control_measure_rotating_2dof.png" alt="control_measure_rotating_2dof.png" />
<div id="org897886b" class="figure">
<p><img src="figs/decentralized_reference_tracking_L.png" alt="decentralized_reference_tracking_L.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Decentralized control for reference tracking</p>
</div>
</div>
</div>
<div id="outline-container-org3cdd958" class="outline-3">
<h3 id="org3cdd958"><span class="section-number-3">1.2</span> Initialize the Stewart platform</h3>
<div id="outline-container-org5efa5dc" class="outline-3">
<h3 id="org5efa5dc"><span class="section-number-3">1.2</span> Initialize the Stewart platform</h3>
<div class="outline-text-3" id="text-1-2">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-comment">% Stewart Platform</span>
@ -407,8 +407,8 @@ references = initializeReferences(stewart);
</div>
</div>
<div id="outline-container-org8ae8979" class="outline-3">
<h3 id="org8ae8979"><span class="section-number-3">1.3</span> Identification of the plant</h3>
<div id="outline-container-orgf2a4e09" class="outline-3">
<h3 id="orgf2a4e09"><span class="section-number-3">1.3</span> Identification of the plant</h3>
<div class="outline-text-3" id="text-1-3">
<p>
Let&rsquo;s identify the transfer function from \(\bm{\tau}\) to \(\bm{\mathcal{L}}\).
@ -431,43 +431,29 @@ G.OutputName = {<span class="org-string">'L1'</span>, <span class="org-string">'
</div>
</div>
<div id="outline-container-org486a2e4" class="outline-3">
<h3 id="org486a2e4"><span class="section-number-3">1.4</span> Plant Analysis</h3>
<div id="outline-container-org346704a" class="outline-3">
<h3 id="org346704a"><span class="section-number-3">1.4</span> Plant Analysis</h3>
<div class="outline-text-3" id="text-1-4">
<p>
The diagonal terms of the plant is shown in Figure <a href="#org8c82316">2</a>.
The diagonal and off-diagonal terms of the plant are shown in Figure <a href="#org50fb6db">2</a>.
</p>
<p>
All the diagonal terms are equal.
</p>
<div id="org8c82316" class="figure">
<p><img src="figs/plant_decentralized_diagonal.png" alt="plant_decentralized_diagonal.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Diagonal Elements of the Plant (<a href="./figs/plant_decentralized_diagonal.png">png</a>, <a href="./figs/plant_decentralized_diagonal.pdf">pdf</a>)</p>
</div>
<p>
The off-diagonal terms are shown in Figure <a href="#org2ba5482">3</a>.
</p>
<p>
We see that the plant is decoupled at low frequency which indicate that decentralized control may be a good idea.
</p>
<div id="org2ba5482" class="figure">
<p><img src="figs/plant_decentralized_off_diagonal.png" alt="plant_decentralized_off_diagonal.png" />
<div id="org50fb6db" class="figure">
<p><img src="figs/plant_decentralized_L.png" alt="plant_decentralized_L.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Diagonal Elements of the Plant (<a href="./figs/plant_decentralized_off_diagonal.png">png</a>, <a href="./figs/plant_decentralized_off_diagonal.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 2: </span>Obtain Diagonal and off diagonal dynamics (<a href="./figs/plant_decentralized_L.png">png</a>, <a href="./figs/plant_decentralized_L.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org484c823" class="outline-3">
<h3 id="org484c823"><span class="section-number-3">1.5</span> Controller Design</h3>
<div id="outline-container-org303d728" class="outline-3">
<h3 id="org303d728"><span class="section-number-3">1.5</span> Controller Design</h3>
<div class="outline-text-3" id="text-1-5">
<p>
The controller consists of:
@ -478,7 +464,7 @@ The controller consists of:
</ul>
<p>
The obtained loop gains corresponding to the diagonal elements are shown in Figure <a href="#org08e591a">4</a>.
The obtained loop gains corresponding to the diagonal elements are shown in Figure <a href="#org08e591a">3</a>.
</p>
<div class="org-src-container">
@ -491,13 +477,13 @@ Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(G, wc)))) <span cla
<div id="org08e591a" class="figure">
<p><img src="figs/loop_gain_decentralized_L.png" alt="loop_gain_decentralized_L.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Loop Gain of the diagonal elements (<a href="./figs/loop_gain_decentralized_L.png">png</a>, <a href="./figs/loop_gain_decentralized_L.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 3: </span>Loop Gain of the diagonal elements (<a href="./figs/loop_gain_decentralized_L.png">png</a>, <a href="./figs/loop_gain_decentralized_L.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org013a9ba" class="outline-3">
<h3 id="org013a9ba"><span class="section-number-3">1.6</span> Simulation</h3>
<div id="outline-container-orgac9e2fb" class="outline-3">
<h3 id="orgac9e2fb"><span class="section-number-3">1.6</span> Simulation</h3>
<div class="outline-text-3" id="text-1-6">
<p>
Let&rsquo;s define some reference path to follow.
@ -516,7 +502,7 @@ references = initializeReferences(stewart, <span class="org-string">'t'</span>,
</div>
<p>
The reference path is shown in Figure <a href="#orga6384f7">5</a>.
The reference path is shown in Figure <a href="#orga6384f7">4</a>.
</p>
<div class="org-src-container">
@ -532,7 +518,7 @@ zlabel(<span class="org-string">'Z [m]'</span>);
<div id="orga6384f7" class="figure">
<p><img src="figs/tracking_control_reference_path.png" alt="tracking_control_reference_path.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Reference path used for Tracking control (<a href="./figs/tracking_control_reference_path.png">png</a>, <a href="./figs/tracking_control_reference_path.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 4: </span>Reference path used for Tracking control (<a href="./figs/tracking_control_reference_path.png">png</a>, <a href="./figs/tracking_control_reference_path.pdf">pdf</a>)</p>
</div>
<div class="org-src-container">
@ -558,7 +544,7 @@ simout_D = simout;
<h3 id="org974b430"><span class="section-number-3">1.7</span> Results</h3>
<div class="outline-text-3" id="text-1-7">
<p>
The reference path and the position of the mobile platform are shown in Figure <a href="#orge497f54">6</a>.
The reference path and the position of the mobile platform are shown in Figure <a href="#orge497f54">5</a>.
</p>
<div class="org-src-container">
@ -577,27 +563,27 @@ zlim([0, <span class="org-constant">inf</span>]);
<div id="orge497f54" class="figure">
<p><img src="figs/decentralized_control_3d_pos.png" alt="decentralized_control_3d_pos.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Reference path and Obtained Position (<a href="./figs/decentralized_control_3d_pos.png">png</a>, <a href="./figs/decentralized_control_3d_pos.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 5: </span>Reference path and Obtained Position (<a href="./figs/decentralized_control_3d_pos.png">png</a>, <a href="./figs/decentralized_control_3d_pos.pdf">pdf</a>)</p>
</div>
<div id="org1ac9124" class="figure">
<p><img src="figs/decentralized_control_Ex.png" alt="decentralized_control_Ex.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Position error \(\bm{\epsilon}_\mathcal{X}\) (<a href="./figs/decentralized_control_Ex.png">png</a>, <a href="./figs/decentralized_control_Ex.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 6: </span>Position error \(\bm{\epsilon}_\mathcal{X}\) (<a href="./figs/decentralized_control_Ex.png">png</a>, <a href="./figs/decentralized_control_Ex.pdf">pdf</a>)</p>
</div>
<div id="org10eb8ae" class="figure">
<p><img src="figs/decentralized_control_El.png" alt="decentralized_control_El.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Position error \(\bm{\epsilon}_\mathcal{L}\) (<a href="./figs/decentralized_control_El.png">png</a>, <a href="./figs/decentralized_control_El.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 7: </span>Position error \(\bm{\epsilon}_\mathcal{L}\) (<a href="./figs/decentralized_control_El.png">png</a>, <a href="./figs/decentralized_control_El.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org19a6760" class="outline-3">
<h3 id="org19a6760"><span class="section-number-3">1.8</span> Conclusion</h3>
<div id="outline-container-org8f3d960" class="outline-3">
<h3 id="org8f3d960"><span class="section-number-3">1.8</span> Conclusion</h3>
<div class="outline-text-3" id="text-1-8">
<p>
Such control architecture is easy to implement and give good results.
@ -618,11 +604,11 @@ However, as \(\mathcal{X}\) is not directly measured, it is possible that import
<a id="org48604d1"></a>
</p>
</div>
<div id="outline-container-orga5acf65" class="outline-3">
<h3 id="orga5acf65"><span class="section-number-3">2.1</span> Control Schematic</h3>
<div id="outline-container-org373826d" class="outline-3">
<h3 id="org373826d"><span class="section-number-3">2.1</span> Control Schematic</h3>
<div class="outline-text-3" id="text-2-1">
<p>
The centralized controller takes the position error \(\bm{\epsilon}_\mathcal{X}\) as an inputs and generate actuator forces \(\bm{\tau}\) (see Figure <a href="#org97ec686">9</a>).
The centralized controller takes the position error \(\bm{\epsilon}_\mathcal{X}\) as an inputs and generate actuator forces \(\bm{\tau}\) (see Figure <a href="#org97ec686">8</a>).
The signals are:
</p>
<ul class="org-ul">
@ -636,7 +622,7 @@ The signals are:
<div id="org97ec686" class="figure">
<p><img src="figs/centralized_reference_tracking.png" alt="centralized_reference_tracking.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Centralized Controller</p>
<p><span class="figure-number">Figure 8: </span>Centralized Controller</p>
</div>
<p>
@ -649,7 +635,7 @@ We can think of two ways to make the plant more diagonal that are described in s
<div class="important">
<p>
Note here that the subtraction shown in Figure <a href="#org97ec686">9</a> is not a real subtraction.
Note here that the subtraction shown in Figure <a href="#org97ec686">8</a> is not a real subtraction.
It is indeed a more complex computation explained in section <a href="#org5f61540">5</a>.
</p>
@ -657,8 +643,8 @@ It is indeed a more complex computation explained in section <a href="#org5f6154
</div>
</div>
<div id="outline-container-org0250b01" class="outline-3">
<h3 id="org0250b01"><span class="section-number-3">2.2</span> Initialize the Stewart platform</h3>
<div id="outline-container-orgdb540d4" class="outline-3">
<h3 id="orgdb540d4"><span class="section-number-3">2.2</span> Initialize the Stewart platform</h3>
<div class="outline-text-3" id="text-2-2">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-comment">% Stewart Platform</span>
@ -689,8 +675,8 @@ references = initializeReferences(stewart);
</div>
</div>
<div id="outline-container-orgf2a4e09" class="outline-3">
<h3 id="orgf2a4e09"><span class="section-number-3">2.3</span> Identification of the plant</h3>
<div id="outline-container-org7e2bbea" class="outline-3">
<h3 id="org7e2bbea"><span class="section-number-3">2.3</span> Identification of the plant</h3>
<div class="outline-text-3" id="text-2-3">
<p>
Let&rsquo;s identify the transfer function from \(\bm{\tau}\) to \(\bm{\mathcal{X}}\).
@ -720,13 +706,13 @@ G.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-string">'
<a id="org31fd942"></a>
</p>
</div>
<div id="outline-container-org8e1e62c" class="outline-4">
<h4 id="org8e1e62c"><span class="section-number-4">2.4.1</span> Control Architecture</h4>
<div id="outline-container-org42dc407" class="outline-4">
<h4 id="org42dc407"><span class="section-number-4">2.4.1</span> Control Architecture</h4>
<div class="outline-text-4" id="text-2-4-1">
<p>
The pose error \(\bm{\epsilon}_\mathcal{X}\) is first converted in the frame of the leg by using the Jacobian matrix.
Then a diagonal controller \(\bm{K}_\mathcal{L}\) is designed.
The final implemented controller is \(\bm{K} = \bm{K}_\mathcal{L} \cdot \bm{J}\) as shown in Figure <a href="#orgb1f5ad2">10</a>
The final implemented controller is \(\bm{K} = \bm{K}_\mathcal{L} \cdot \bm{J}\) as shown in Figure <a href="#orgb1f5ad2">9</a>
</p>
<p>
@ -737,16 +723,16 @@ Note here that the transformation from the pose error \(\bm{\epsilon}_\mathcal{X
<div id="orgb1f5ad2" class="figure">
<p><img src="figs/centralized_reference_tracking_L.png" alt="centralized_reference_tracking_L.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Controller in the frame of the legs</p>
<p><span class="figure-number">Figure 9: </span>Controller in the frame of the legs</p>
</div>
</div>
</div>
<div id="outline-container-org133ca61" class="outline-4">
<h4 id="org133ca61"><span class="section-number-4">2.4.2</span> Plant Analysis</h4>
<div id="outline-container-org33774e9" class="outline-4">
<h4 id="org33774e9"><span class="section-number-4">2.4.2</span> Plant Analysis</h4>
<div class="outline-text-4" id="text-2-4-2">
<p>
We now multiply the plant by the Jacobian matrix as shown in Figure <a href="#orgb1f5ad2">10</a> to obtain a more diagonal plant.
We now multiply the plant by the Jacobian matrix as shown in Figure <a href="#orgb1f5ad2">9</a> to obtain a more diagonal plant.
</p>
<div class="org-src-container">
@ -755,27 +741,17 @@ Gl.OutputName = {<span class="org-string">'D1'</span>, <span class="org-string"
</pre>
</div>
<div id="org6658ce5" class="figure">
<p><img src="figs/plant_centralized_diagonal_L.png" alt="plant_centralized_diagonal_L.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Diagonal Elements of the plant \(\bm{J} \bm{G}\) (<a href="./figs/plant_centralized_diagonal_L.png">png</a>, <a href="./figs/plant_centralized_diagonal_L.pdf">pdf</a>)</p>
</div>
<p>
All the diagonal elements are identical.
The bode plot of the plant is shown in Figure <a href="#org6c8d99f">10</a>.
We can see that the diagonal elements are identical.
This will simplify the design of the controller as all the elements of the diagonal controller can be made identical.
</p>
<p>
The off-diagonal terms of the controller are shown in Figure <a href="#orgba050e4">12</a>.
</p>
<div id="orgba050e4" class="figure">
<p><img src="figs/plant_centralized_off_diagonal_L.png" alt="plant_centralized_off_diagonal_L.png" />
<div id="org6c8d99f" class="figure">
<p><img src="figs/plant_centralized_L.png" alt="plant_centralized_L.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Off Diagonal Elements of the plant \(\bm{J} \bm{G}\) (<a href="./figs/plant_centralized_off_diagonal_L.png">png</a>, <a href="./figs/plant_centralized_off_diagonal_L.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 10: </span>Diagonal and off-diagonal elements of the plant \(\bm{K}\bm{G}\) (<a href="./figs/plant_centralized_L.png">png</a>, <a href="./figs/plant_centralized_L.pdf">pdf</a>)</p>
</div>
<p>
@ -793,8 +769,8 @@ Thus \(J \cdot G(\omega = 0) = J \cdot \frac{\delta\bm{\mathcal{X}}}{\delta\bm{\
</div>
</div>
<div id="outline-container-org6afc297" class="outline-4">
<h4 id="org6afc297"><span class="section-number-4">2.4.3</span> Controller Design</h4>
<div id="outline-container-orgc7ddab1" class="outline-4">
<h4 id="orgc7ddab1"><span class="section-number-4">2.4.3</span> Controller Design</h4>
<div class="outline-text-4" id="text-2-4-3">
<p>
The controller consists of:
@ -805,7 +781,7 @@ The controller consists of:
</ul>
<p>
The obtained loop gains corresponding to the diagonal elements are shown in Figure <a href="#orga803083">13</a>.
The obtained loop gains corresponding to the diagonal elements are shown in Figure <a href="#orga803083">11</a>.
</p>
<div class="org-src-container">
@ -818,7 +794,7 @@ Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(Gl, wc)))) <span cl
<div id="orga803083" class="figure">
<p><img src="figs/loop_gain_centralized_L.png" alt="loop_gain_centralized_L.png" />
</p>
<p><span class="figure-number">Figure 13: </span>Loop Gain of the diagonal elements (<a href="./figs/loop_gain_centralized_L.png">png</a>, <a href="./figs/loop_gain_centralized_L.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 11: </span>Loop Gain of the diagonal elements (<a href="./figs/loop_gain_centralized_L.png">png</a>, <a href="./figs/loop_gain_centralized_L.pdf">pdf</a>)</p>
</div>
<p>
@ -831,8 +807,8 @@ The controller \(\bm{K} = \bm{K}_\mathcal{L} \bm{J}\) is computed.
</div>
</div>
<div id="outline-container-orgdb24c37" class="outline-4">
<h4 id="orgdb24c37"><span class="section-number-4">2.4.4</span> Simulation</h4>
<div id="outline-container-org3021cf3" class="outline-4">
<h4 id="org3021cf3"><span class="section-number-4">2.4.4</span> Simulation</h4>
<div class="outline-text-4" id="text-2-4-4">
<p>
We specify the reference path to follow.
@ -876,11 +852,11 @@ save(<span class="org-string">'./mat/control_tracking.mat'</span>, <span class="
<a id="orgfd201c3"></a>
</p>
</div>
<div id="outline-container-org0f41ce9" class="outline-4">
<h4 id="org0f41ce9"><span class="section-number-4">2.5.1</span> Control Architecture</h4>
<div id="outline-container-org185190b" class="outline-4">
<h4 id="org185190b"><span class="section-number-4">2.5.1</span> Control Architecture</h4>
<div class="outline-text-4" id="text-2-5-1">
<p>
A diagonal controller \(\bm{K}_\mathcal{X}\) take the pose error \(\bm{\epsilon}_\mathcal{X}\) and generate cartesian forces \(\bm{\mathcal{F}}\) that are then converted to actuators forces using the Jacobian as shown in Figure e <a href="#org6b158db">14</a>.
A diagonal controller \(\bm{K}_\mathcal{X}\) take the pose error \(\bm{\epsilon}_\mathcal{X}\) and generate cartesian forces \(\bm{\mathcal{F}}\) that are then converted to actuators forces using the Jacobian as shown in Figure e <a href="#org6b158db">12</a>.
</p>
<p>
@ -891,16 +867,16 @@ The final implemented controller is \(\bm{K} = \bm{J}^{-T} \cdot \bm{K}_\mathcal
<div id="org6b158db" class="figure">
<p><img src="figs/centralized_reference_tracking_X.png" alt="centralized_reference_tracking_X.png" />
</p>
<p><span class="figure-number">Figure 14: </span>Controller in the cartesian frame</p>
<p><span class="figure-number">Figure 12: </span>Controller in the cartesian frame</p>
</div>
</div>
</div>
<div id="outline-container-org9691244" class="outline-4">
<h4 id="org9691244"><span class="section-number-4">2.5.2</span> Plant Analysis</h4>
<div id="outline-container-orgac4e8f3" class="outline-4">
<h4 id="orgac4e8f3"><span class="section-number-4">2.5.2</span> Plant Analysis</h4>
<div class="outline-text-4" id="text-2-5-2">
<p>
We now multiply the plant by the Jacobian matrix as shown in Figure <a href="#org6b158db">14</a> to obtain a more diagonal plant.
We now multiply the plant by the Jacobian matrix as shown in Figure <a href="#org6b158db">12</a> to obtain a more diagonal plant.
</p>
<div class="org-src-container">
@ -910,10 +886,10 @@ Gx.InputName = {<span class="org-string">'Fx'</span>, <span class="org-string">
</div>
<div id="org2b61181" class="figure">
<p><img src="figs/plant_centralized_diagonal_X.png" alt="plant_centralized_diagonal_X.png" />
<div id="org0173211" class="figure">
<p><img src="figs/plant_centralized_X.png" alt="plant_centralized_X.png" />
</p>
<p><span class="figure-number">Figure 15: </span>Diagonal Elements of the plant \(\bm{G} \bm{J}^{-T}\) (<a href="./figs/plant_centralized_diagonal_X.png">png</a>, <a href="./figs/plant_centralized_diagonal_X.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 13: </span>Diagonal and off-diagonal elements of the plant \(\bm{G} \bm{J}^{-T}\) (<a href="./figs/plant_centralized_X.png">png</a>, <a href="./figs/plant_centralized_X.pdf">pdf</a>)</p>
</div>
<p>
@ -922,13 +898,6 @@ The resonances of the system are &ldquo;decoupled&rdquo;.
For instance, the vertical resonance of the system is only present on the diagonal term corresponding to \(D_z/\mathcal{F}_z\).
</p>
<div id="org1ff5b9c" class="figure">
<p><img src="figs/plant_centralized_off_diagonal_X.png" alt="plant_centralized_off_diagonal_X.png" />
</p>
<p><span class="figure-number">Figure 16: </span>Off Diagonal Elements of the plant \(\bm{G} \bm{J}^{-T}\) (<a href="./figs/plant_centralized_off_diagonal_X.png">png</a>, <a href="./figs/plant_centralized_off_diagonal_X.pdf">pdf</a>)</p>
</div>
<p>
Here the system is almost decoupled at all frequencies except for the transfer functions \(\frac{R_y}{\mathcal{F}_x}\) and \(\frac{R_x}{\mathcal{F}_y}\).
</p>
@ -1019,8 +988,8 @@ This control architecture can also give a dynamically decoupled plant if the Cen
</div>
</div>
<div id="outline-container-org7f32f8e" class="outline-4">
<h4 id="org7f32f8e"><span class="section-number-4">2.5.3</span> Controller Design</h4>
<div id="outline-container-org87c1a48" class="outline-4">
<h4 id="org87c1a48"><span class="section-number-4">2.5.3</span> Controller Design</h4>
<div class="outline-text-4" id="text-2-5-3">
<p>
The controller consists of:
@ -1031,7 +1000,7 @@ The controller consists of:
</ul>
<p>
The obtained loop gains corresponding to the diagonal elements are shown in Figure <a href="#org9051c86">17</a>.
The obtained loop gains corresponding to the diagonal elements are shown in Figure <a href="#org9051c86">14</a>.
</p>
<div class="org-src-container">
@ -1044,7 +1013,7 @@ Kx = diag(1<span class="org-type">./</span>diag(abs(freqresp(Gx, wc)))) <span cl
<div id="org9051c86" class="figure">
<p><img src="figs/loop_gain_centralized_X.png" alt="loop_gain_centralized_X.png" />
</p>
<p><span class="figure-number">Figure 17: </span>Loop Gain of the diagonal elements (<a href="./figs/loop_gain_centralized_X.png">png</a>, <a href="./figs/loop_gain_centralized_X.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 14: </span>Loop Gain of the diagonal elements (<a href="./figs/loop_gain_centralized_X.png">png</a>, <a href="./figs/loop_gain_centralized_X.pdf">pdf</a>)</p>
</div>
<p>
@ -1057,8 +1026,8 @@ The controller \(\bm{K} = \bm{J}^{-T} \bm{K}_\mathcal{X}\) is computed.
</div>
</div>
<div id="outline-container-orgac9e2fb" class="outline-4">
<h4 id="orgac9e2fb"><span class="section-number-4">2.5.4</span> Simulation</h4>
<div id="outline-container-org73875ca" class="outline-4">
<h4 id="org73875ca"><span class="section-number-4">2.5.4</span> Simulation</h4>
<div class="outline-text-4" id="text-2-5-4">
<p>
We specify the reference path to follow.
@ -1102,8 +1071,8 @@ save(<span class="org-string">'./mat/control_tracking.mat'</span>, <span class="
<a id="org789ba4a"></a>
</p>
</div>
<div id="outline-container-org42dc407" class="outline-4">
<h4 id="org42dc407"><span class="section-number-4">2.6.1</span> Control Architecture</h4>
<div id="outline-container-orgdeee29c" class="outline-4">
<h4 id="orgdeee29c"><span class="section-number-4">2.6.1</span> Control Architecture</h4>
<div class="outline-text-4" id="text-2-6-1">
<p>
The plant \(\bm{G}\) is pre-multiply by \(\bm{G}^{-1}(\omega = 0)\) such that the &ldquo;shaped plant&rdquo; \(\bm{G}_0 = \bm{G} \bm{G}^{-1}(\omega = 0)\) is diagonal at low frequency.
@ -1114,24 +1083,24 @@ Then a diagonal controller \(\bm{K}_0\) is designed.
</p>
<p>
The control architecture is shown in Figure <a href="#orgb226e44">18</a>.
The control architecture is shown in Figure <a href="#orgb226e44">15</a>.
</p>
<div id="orgb226e44" class="figure">
<p><img src="figs/centralized_reference_tracking_S.png" alt="centralized_reference_tracking_S.png" />
</p>
<p><span class="figure-number">Figure 18: </span>Static Decoupling of the Plant</p>
<p><span class="figure-number">Figure 15: </span>Static Decoupling of the Plant</p>
</div>
</div>
</div>
<div id="outline-container-org346704a" class="outline-4">
<h4 id="org346704a"><span class="section-number-4">2.6.2</span> Plant Analysis</h4>
<div id="outline-container-org4c98210" class="outline-4">
<h4 id="org4c98210"><span class="section-number-4">2.6.2</span> Plant Analysis</h4>
<div class="outline-text-4" id="text-2-6-2">
<p>
The plant is pre-multiplied by \(\bm{G}^{-1}(\omega = 0)\).
The diagonal elements of the shaped plant are shown in Figure <a href="#orgc15aa83">19</a>.
The diagonal and off-diagonal elements of the shaped plant are shown in Figure <a href="#org0b73eca">16</a>.
</p>
<div class="org-src-container">
@ -1140,23 +1109,16 @@ The diagonal elements of the shaped plant are shown in Figure <a href="#orgc15aa
</div>
<div id="orgc15aa83" class="figure">
<p><img src="figs/plant_centralized_diagonal_SD.png" alt="plant_centralized_diagonal_SD.png" />
<div id="org0b73eca" class="figure">
<p><img src="figs/plant_centralized_SD.png" alt="plant_centralized_SD.png" />
</p>
<p><span class="figure-number">Figure 19: </span>Diagonal Elements of the plant \(\bm{G} \bm{G}^{-1}(\omega = 0)\) (<a href="./figs/plant_centralized_diagonal_SD.png">png</a>, <a href="./figs/plant_centralized_diagonal_SD.pdf">pdf</a>)</p>
</div>
<div id="orga6b8b41" class="figure">
<p><img src="figs/plant_centralized_off_diagonal_SD.png" alt="plant_centralized_off_diagonal_SD.png" />
</p>
<p><span class="figure-number">Figure 20: </span>Off Diagonal Elements of the plant \(\bm{G} \bm{J}^{-T}\) (<a href="./figs/plant_centralized_off_diagonal_SD.png">png</a>, <a href="./figs/plant_centralized_off_diagonal_SD.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 16: </span>Diagonal and off-diagonal elements of the plant \(\bm{G} \bm{G}^{-1}(\omega = 0)\) (<a href="./figs/plant_centralized_SD.png">png</a>, <a href="./figs/plant_centralized_SD.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org8b2a544" class="outline-4">
<h4 id="org8b2a544"><span class="section-number-4">2.6.3</span> Controller Design</h4>
<div id="outline-container-orgbf66d4c" class="outline-4">
<h4 id="orgbf66d4c"><span class="section-number-4">2.6.3</span> Controller Design</h4>
<div class="outline-text-4" id="text-2-6-3">
<p>
We have that:
@ -1188,7 +1150,7 @@ We have that \(\bm{K}_0(s)\) commutes with \(\bm{G}^{-1}(\omega = 0)\) and thus
<div id="orgf4c7f15" class="figure">
<p><img src="figs/centralized_control_comp_K.png" alt="centralized_control_comp_K.png" />
</p>
<p><span class="figure-number">Figure 21: </span>Comparison of the MIMO controller \(\bm{K}\) for both centralized architectures (<a href="./figs/centralized_control_comp_K.png">png</a>, <a href="./figs/centralized_control_comp_K.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 17: </span>Comparison of the MIMO controller \(\bm{K}\) for both centralized architectures (<a href="./figs/centralized_control_comp_K.png">png</a>, <a href="./figs/centralized_control_comp_K.pdf">pdf</a>)</p>
</div>
</div>
</div>
@ -1197,11 +1159,11 @@ We have that \(\bm{K}_0(s)\) commutes with \(\bm{G}^{-1}(\omega = 0)\) and thus
<h4 id="org23ae479"><span class="section-number-4">2.7.2</span> Simulation Results</h4>
<div class="outline-text-4" id="text-2-7-2">
<p>
The position error \(\bm{\epsilon}_\mathcal{X}\) for both centralized architecture are shown in Figure <a href="#org9fa8c8a">22</a>.
The position error \(\bm{\epsilon}_\mathcal{X}\) for both centralized architecture are shown in Figure <a href="#org9fa8c8a">18</a>.
</p>
<p>
Based on Figure <a href="#org9fa8c8a">22</a>, we can see that:
Based on Figure <a href="#org9fa8c8a">18</a>, we can see that:
</p>
<ul class="org-ul">
<li>There is some tracking error \(\epsilon_x\)</li>
@ -1216,14 +1178,14 @@ This error is much lower when using the diagonal control in the frame of the leg
<div id="org9fa8c8a" class="figure">
<p><img src="figs/centralized_control_comp_Ex.png" alt="centralized_control_comp_Ex.png" />
</p>
<p><span class="figure-number">Figure 22: </span>Comparison of the position error \(\bm{\epsilon}_\mathcal{X}\) for both centralized controllers (<a href="./figs/centralized_control_comp_Ex.png">png</a>, <a href="./figs/centralized_control_comp_Ex.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 18: </span>Comparison of the position error \(\bm{\epsilon}_\mathcal{X}\) for both centralized controllers (<a href="./figs/centralized_control_comp_Ex.png">png</a>, <a href="./figs/centralized_control_comp_Ex.pdf">pdf</a>)</p>
</div>
</div>
</div>
</div>
<div id="outline-container-orgc7e00b3" class="outline-3">
<h3 id="orgc7e00b3"><span class="section-number-3">2.8</span> Conclusion</h3>
<div id="outline-container-orgd2764a2" class="outline-3">
<h3 id="orgd2764a2"><span class="section-number-3">2.8</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-8">
<p>
Both control architecture gives similar results even tough the control in the Leg&rsquo;s frame gives slightly better results.
@ -1306,11 +1268,11 @@ Thus, this method should be quite robust against parameter variation (e.g. the p
<a id="org14e3e5f"></a>
</p>
</div>
<div id="outline-container-orgaf4f125" class="outline-3">
<h3 id="orgaf4f125"><span class="section-number-3">3.1</span> Control Schematic</h3>
<div id="outline-container-org539565c" class="outline-3">
<h3 id="org539565c"><span class="section-number-3">3.1</span> Control Schematic</h3>
<div class="outline-text-3" id="text-3-1">
<p>
Let&rsquo;s consider the control schematic shown in Figure <a href="#org3a1b1db">23</a>.
Let&rsquo;s consider the control schematic shown in Figure <a href="#org3a1b1db">19</a>.
</p>
<p>
@ -1343,13 +1305,13 @@ This second loop is responsible for the reference tracking.
<div id="org3a1b1db" class="figure">
<p><img src="figs/hybrid_reference_tracking.png" alt="hybrid_reference_tracking.png" />
</p>
<p><span class="figure-number">Figure 23: </span>Hybrid Control Architecture</p>
<p><span class="figure-number">Figure 19: </span>Hybrid Control Architecture</p>
</div>
</div>
</div>
<div id="outline-container-org5efa5dc" class="outline-3">
<h3 id="org5efa5dc"><span class="section-number-3">3.2</span> Initialize the Stewart platform</h3>
<div id="outline-container-orga9bdd4e" class="outline-3">
<h3 id="orga9bdd4e"><span class="section-number-3">3.2</span> Initialize the Stewart platform</h3>
<div class="outline-text-3" id="text-3-2">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-comment">% Stewart Platform</span>
@ -1384,8 +1346,8 @@ references = initializeReferences(stewart);
<h3 id="org3274a98"><span class="section-number-3">3.3</span> First Control Loop - \(\bm{K}_\mathcal{L}\)</h3>
<div class="outline-text-3" id="text-3-3">
</div>
<div id="outline-container-orgfb552d7" class="outline-4">
<h4 id="orgfb552d7"><span class="section-number-4">3.3.1</span> Identification</h4>
<div id="outline-container-orgd69b37c" class="outline-4">
<h4 id="orgd69b37c"><span class="section-number-4">3.3.1</span> Identification</h4>
<div class="outline-text-4" id="text-3-3-1">
<p>
Let&rsquo;s identify the transfer function from \(\bm{\tau}\) to \(\bm{L}\).
@ -1408,31 +1370,24 @@ Gl.OutputName = {<span class="org-string">'L1'</span>, <span class="org-string">
</div>
</div>
<div id="outline-container-orge84aa66" class="outline-4">
<h4 id="orge84aa66"><span class="section-number-4">3.3.2</span> Obtained Plant</h4>
<div id="outline-container-org2a634da" class="outline-4">
<h4 id="org2a634da"><span class="section-number-4">3.3.2</span> Obtained Plant</h4>
<div class="outline-text-4" id="text-3-3-2">
<p>
The diagonal elements of the plant are shown in Figure <a href="#org687a922">24</a> while the off diagonal terms are shown in Figure <a href="#orge568b8a">25</a>.
The obtained plant is shown in Figure <a href="#orgf627577">20</a>.
</p>
<div id="org687a922" class="figure">
<p><img src="figs/hybrid_control_Kl_plant_diagonal.png" alt="hybrid_control_Kl_plant_diagonal.png" />
<div id="orgf627577" class="figure">
<p><img src="figs/hybrid_control_Kl_plant.png" alt="hybrid_control_Kl_plant.png" />
</p>
<p><span class="figure-number">Figure 24: </span>Diagonal elements of the plant for the design of \(\bm{K}_\mathcal{L}\) (<a href="./figs/hybrid_control_Kl_plant_diagonal.png">png</a>, <a href="./figs/hybrid_control_Kl_plant_diagonal.pdf">pdf</a>)</p>
</div>
<div id="orge568b8a" class="figure">
<p><img src="figs/hybrid_control_Kl_plant_off_diagonal.png" alt="hybrid_control_Kl_plant_off_diagonal.png" />
</p>
<p><span class="figure-number">Figure 25: </span>Off-diagonal elements of the plant for the design of \(\bm{K}_\mathcal{L}\) (<a href="./figs/hybrid_control_Kl_plant_off_diagonal.png">png</a>, <a href="./figs/hybrid_control_Kl_plant_off_diagonal.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 20: </span>Diagonal and off-diagonal elements of the plant for the design of \(\bm{K}_\mathcal{L}\) (<a href="./figs/hybrid_control_Kl_plant.png">png</a>, <a href="./figs/hybrid_control_Kl_plant.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-orgfeef351" class="outline-4">
<h4 id="orgfeef351"><span class="section-number-4">3.3.3</span> Controller Design</h4>
<div id="outline-container-org23695fa" class="outline-4">
<h4 id="org23695fa"><span class="section-number-4">3.3.3</span> Controller Design</h4>
<div class="outline-text-4" id="text-3-3-3">
<p>
We apply a decentralized (diagonal) direct velocity feedback.
@ -1442,7 +1397,7 @@ The gain of the controller is chosen such that the resonances are critically dam
</p>
<p>
The obtain loop gain is shown in Figure <a href="#orgb74befe">26</a>.
The obtain loop gain is shown in Figure <a href="#orgb74befe">21</a>.
</p>
<div class="org-src-container">
@ -1454,7 +1409,7 @@ The obtain loop gain is shown in Figure <a href="#orgb74befe">26</a>.
<div id="orgb74befe" class="figure">
<p><img src="figs/hybrid_control_Kl_loop_gain.png" alt="hybrid_control_Kl_loop_gain.png" />
</p>
<p><span class="figure-number">Figure 26: </span>Obtain Loop Gain for the DVF control loop (<a href="./figs/hybrid_control_Kl_loop_gain.png">png</a>, <a href="./figs/hybrid_control_Kl_loop_gain.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 21: </span>Obtain Loop Gain for the DVF control loop (<a href="./figs/hybrid_control_Kl_loop_gain.png">png</a>, <a href="./figs/hybrid_control_Kl_loop_gain.pdf">pdf</a>)</p>
</div>
</div>
</div>
@ -1464,8 +1419,8 @@ The obtain loop gain is shown in Figure <a href="#orgb74befe">26</a>.
<h3 id="org8440c0b"><span class="section-number-3">3.4</span> Second Control Loop - \(\bm{K}_\mathcal{X}\)</h3>
<div class="outline-text-3" id="text-3-4">
</div>
<div id="outline-container-orgd69b37c" class="outline-4">
<h4 id="orgd69b37c"><span class="section-number-4">3.4.1</span> Identification</h4>
<div id="outline-container-orgeec6c35" class="outline-4">
<h4 id="orgeec6c35"><span class="section-number-4">3.4.1</span> Identification</h4>
<div class="outline-text-4" id="text-3-4-1">
<div class="org-src-container">
<pre class="src src-matlab">Kx = tf(zeros(6));
@ -1492,8 +1447,8 @@ G.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-string">'
</div>
</div>
<div id="outline-container-org2a634da" class="outline-4">
<h4 id="org2a634da"><span class="section-number-4">3.4.2</span> Obtained Plant</h4>
<div id="outline-container-org57836ee" class="outline-4">
<h4 id="org57836ee"><span class="section-number-4">3.4.2</span> Obtained Plant</h4>
<div class="outline-text-4" id="text-3-4-2">
<p>
We use the Jacobian matrix to apply forces in the cartesian frame.
@ -1505,19 +1460,19 @@ Gx.InputName = {<span class="org-string">'Fx'</span>, <span class="org-string">
</div>
<p>
The obtained plant is shown in Figure <a href="#org2517e3d">27</a>.
The obtained plant is shown in Figure <a href="#org2517e3d">22</a>.
</p>
<div id="org2517e3d" class="figure">
<p><img src="figs/hybrid_control_Kx_plant.png" alt="hybrid_control_Kx_plant.png" />
</p>
<p><span class="figure-number">Figure 27: </span>Diagonal and Off-diagonal elements of the plant for the design of \(\bm{K}_\mathcal{L}\) (<a href="./figs/hybrid_control_Kx_plant.png">png</a>, <a href="./figs/hybrid_control_Kx_plant.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 22: </span>Diagonal and Off-diagonal elements of the plant for the design of \(\bm{K}_\mathcal{L}\) (<a href="./figs/hybrid_control_Kx_plant.png">png</a>, <a href="./figs/hybrid_control_Kx_plant.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org303d728" class="outline-4">
<h4 id="org303d728"><span class="section-number-4">3.4.3</span> Controller Design</h4>
<div id="outline-container-orgcebb0d5" class="outline-4">
<h4 id="orgcebb0d5"><span class="section-number-4">3.4.3</span> Controller Design</h4>
<div class="outline-text-4" id="text-3-4-3">
<p>
The controller consists of:
@ -1545,7 +1500,7 @@ Kx = Kx<span class="org-type">.*</span>diag(1<span class="org-type">./</span>dia
<div id="org30ad867" class="figure">
<p><img src="figs/hybrid_control_Kx_loop_gain.png" alt="hybrid_control_Kx_loop_gain.png" />
</p>
<p><span class="figure-number">Figure 28: </span>Obtained Loop Gain for the controller \(\bm{K}_\mathcal{X}\) (<a href="./figs/hybrid_control_Kx_loop_gain.png">png</a>, <a href="./figs/hybrid_control_Kx_loop_gain.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 23: </span>Obtained Loop Gain for the controller \(\bm{K}_\mathcal{X}\) (<a href="./figs/hybrid_control_Kx_loop_gain.png">png</a>, <a href="./figs/hybrid_control_Kx_loop_gain.pdf">pdf</a>)</p>
</div>
<p>
@ -1590,20 +1545,20 @@ save(<span class="org-string">'./mat/control_tracking.mat'</span>, <span class="
</div>
<p>
The obtained position error is shown in Figure <a href="#org19456cf">29</a>.
The obtained position error is shown in Figure <a href="#org19456cf">24</a>.
</p>
<div id="org19456cf" class="figure">
<p><img src="figs/hybrid_control_Ex.png" alt="hybrid_control_Ex.png" />
</p>
<p><span class="figure-number">Figure 29: </span>Obtained position error \(\bm{\epsilon}_\mathcal{X}\) (<a href="./figs/hybrid_control_Ex.png">png</a>, <a href="./figs/hybrid_control_Ex.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 24: </span>Obtained position error \(\bm{\epsilon}_\mathcal{X}\) (<a href="./figs/hybrid_control_Ex.png">png</a>, <a href="./figs/hybrid_control_Ex.pdf">pdf</a>)</p>
</div>
</div>
</div>
<div id="outline-container-org8f3d960" class="outline-3">
<h3 id="org8f3d960"><span class="section-number-3">3.6</span> Conclusion</h3>
<div id="outline-container-org771bea0" class="outline-3">
<h3 id="org771bea0"><span class="section-number-3">3.6</span> Conclusion</h3>
</div>
</div>
@ -1615,7 +1570,7 @@ The obtained position error is shown in Figure <a href="#org19456cf">29</a>.
</p>
<p>
Let&rsquo;s load the simulation results and compare them in Figure <a href="#org6fa53fa">30</a>.
Let&rsquo;s load the simulation results and compare them in Figure <a href="#org6fa53fa">25</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./mat/control_tracking.mat'</span>, <span class="org-string">'simout_D'</span>, <span class="org-string">'simout_L'</span>, <span class="org-string">'simout_X'</span>, <span class="org-string">'simout_H'</span>);
@ -1626,7 +1581,7 @@ Let&rsquo;s load the simulation results and compare them in Figure <a href="#org
<div id="org6fa53fa" class="figure">
<p><img src="figs/reference_tracking_performance_comparison.png" alt="reference_tracking_performance_comparison.png" />
</p>
<p><span class="figure-number">Figure 30: </span>Comparison of the position errors for all the Control architecture used (<a href="./figs/reference_tracking_performance_comparison.png">png</a>, <a href="./figs/reference_tracking_performance_comparison.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 25: </span>Comparison of the position errors for all the Control architecture used (<a href="./figs/reference_tracking_performance_comparison.png">png</a>, <a href="./figs/reference_tracking_performance_comparison.pdf">pdf</a>)</p>
</div>
</div>
</div>
@ -1767,7 +1722,7 @@ Erz = atan2(<span class="org-type">-</span>T(1, 2)<span class="org-type">/</span
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-03-13 ven. 13:23</p>
<p class="date">Created: 2020-03-16 lun. 11:22</p>
</div>
</body>
</html>

View File

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

View File

@ -70,13 +70,13 @@ The control configuration are compare in section [[sec:comparison]].
#+end_src
** Control Schematic
The control architecture is shown in Figure [[fig:control_measure_rotating_2dof]].
The control architecture is shown in Figure [[fig:decentralized_reference_tracking_L]].
The required leg length $\bm{r}_\mathcal{L}$ is computed from the reference path $\bm{r}_\mathcal{X}$ using the inverse kinematics.
Then, a diagonal (decentralized) controller $\bm{K}_\mathcal{L}$ is used such that each leg lengths stays close to its required length.
#+begin_src latex :file control_measure_rotating_2dof.pdf
#+begin_src latex :file decentralized_reference_tracking_L.pdf
\begin{tikzpicture}
% Blocs
\node[block, align=center] (J) at (0, 0) {Inverse\\Kinematics};
@ -93,10 +93,10 @@ Then, a diagonal (decentralized) controller $\bm{K}_\mathcal{L}$ is used such th
\end{tikzpicture}
#+end_src
#+name: fig:control_measure_rotating_2dof
#+name: fig:decentralized_reference_tracking_L
#+caption: Decentralized control for reference tracking
#+RESULTS:
[[file:figs/control_measure_rotating_2dof.png]]
[[file:figs/decentralized_reference_tracking_L.png]]
** Initialize the Stewart platform
#+begin_src matlab :noweb yes
@ -121,49 +121,9 @@ Let's identify the transfer function from $\bm{\tau}$ to $\bm{\mathcal{L}}$.
#+end_src
** Plant Analysis
The diagonal terms of the plant is shown in Figure [[fig:plant_decentralized_diagonal]].
The diagonal and off-diagonal terms of the plant are shown in Figure [[fig:plant_decentralized_L]].
All the diagonal terms are equal.
#+begin_src matlab :exports none
freqs = logspace(1, 4, 1000);
figure;
ax1 = subplot(2, 1, 1);
hold on;
for i = 1:6
plot(freqs, abs(squeeze(freqresp(G(i, i), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
ax2 = subplot(2, 1, 2);
hold on;
for i = 1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(G(i, i), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_decentralized_diagonal.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_decentralized_diagonal
#+caption: Diagonal Elements of the Plant ([[./figs/plant_decentralized_diagonal.png][png]], [[./figs/plant_decentralized_diagonal.pdf][pdf]])
[[file:figs/plant_decentralized_diagonal.png]]
The off-diagonal terms are shown in Figure [[fig:plant_decentralized_off_diagonal]].
We see that the plant is decoupled at low frequency which indicate that decentralized control may be a good idea.
#+begin_src matlab :exports none
@ -171,7 +131,29 @@ We see that the plant is decoupled at low frequency which indicate that decentra
figure;
ax1 = subplot(2, 1, 1);
ax1 = subplot(2, 2, 1);
hold on;
for i = 1:6
plot(freqs, abs(squeeze(freqresp(G(i, i), freqs, 'Hz'))));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title('Diagonal elements of the Plant');
ax2 = subplot(2, 2, 3);
hold on;
for i = 1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(G(i, i), freqs, 'Hz'))), 'DisplayName', sprintf('$d\\mathcal{L}_%i/\\tau_%i$', i, i));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'northwest');
ax3 = subplot(2, 2, 2);
hold on;
for i = 1:5
for j = i+1:6
@ -183,8 +165,9 @@ We see that the plant is decoupled at low frequency which indicate that decentra
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title('Off-Diagonal elements of the Plant');
ax2 = subplot(2, 1, 2);
ax4 = subplot(2, 2, 4);
hold on;
for i = 1:5
for j = i+1:6
@ -199,17 +182,17 @@ We see that the plant is decoupled at low frequency which indicate that decentra
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
linkaxes([ax1,ax2,ax3,ax4],'x');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_decentralized_off_diagonal.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
#+begin_src matlab :var filepath="figs/plant_decentralized_L.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_decentralized_off_diagonal
#+caption: Diagonal Elements of the Plant ([[./figs/plant_decentralized_off_diagonal.png][png]], [[./figs/plant_decentralized_off_diagonal.pdf][pdf]])
[[file:figs/plant_decentralized_off_diagonal.png]]
#+name: fig:plant_decentralized_L
#+caption: Obtain Diagonal and off diagonal dynamics ([[./figs/plant_decentralized_L.png][png]], [[./figs/plant_decentralized_L.pdf][pdf]])
[[file:figs/plant_decentralized_L.png]]
** Controller Design
The controller consists of:
@ -558,12 +541,16 @@ We now multiply the plant by the Jacobian matrix as shown in Figure [[fig:centra
Gl.OutputName = {'D1', 'D2', 'D3', 'D4', 'D5', 'D6'};
#+end_src
The bode plot of the plant is shown in Figure [[fig:plant_centralized_L]].
We can see that the diagonal elements are identical.
This will simplify the design of the controller as all the elements of the diagonal controller can be made identical.
#+begin_src matlab :exports none
freqs = logspace(1, 4, 1000);
figure;
ax1 = subplot(2, 1, 1);
ax1 = subplot(2, 2, 1);
hold on;
for i = 1:6
plot(freqs, abs(squeeze(freqresp(Gl(i, i), freqs, 'Hz'))));
@ -571,42 +558,21 @@ We now multiply the plant by the Jacobian matrix as shown in Figure [[fig:centra
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title('Diagonal elements of the Plant');
ax2 = subplot(2, 1, 2);
ax2 = subplot(2, 2, 3);
hold on;
for i = 1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(Gl(i, i), freqs, 'Hz'))), 'DisplayName', ['$d\mathcal{L}_' num2str(i) '/\tau_' num2str(i) '$']);
plot(freqs, 180/pi*angle(squeeze(freqresp(Gl(i, i), freqs, 'Hz'))), 'DisplayName', sprintf('$\\epsilon_{\\mathcal{L}_%i}/\\tau_%i$', i, i));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend();
legend('location', 'northwest');
linkaxes([ax1,ax2],'x');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_centralized_diagonal_L.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_centralized_diagonal_L
#+caption: Diagonal Elements of the plant $\bm{J} \bm{G}$ ([[./figs/plant_centralized_diagonal_L.png][png]], [[./figs/plant_centralized_diagonal_L.pdf][pdf]])
[[file:figs/plant_centralized_diagonal_L.png]]
All the diagonal elements are identical.
This will simplify the design of the controller as all the elements of the diagonal controller can be made identical.
The off-diagonal terms of the controller are shown in Figure [[fig:plant_centralized_off_diagonal_L]].
#+begin_src matlab :exports none
freqs = logspace(1, 4, 1000);
figure;
ax1 = subplot(2, 1, 1);
ax3 = subplot(2, 2, 2);
hold on;
for i = 1:5
for j = i+1:6
@ -618,8 +584,9 @@ The off-diagonal terms of the controller are shown in Figure [[fig:plant_central
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title('Off-Diagonal elements of the Plant');
ax2 = subplot(2, 1, 2);
ax4 = subplot(2, 2, 4);
hold on;
for i = 1:5
for j = i+1:6
@ -634,17 +601,17 @@ The off-diagonal terms of the controller are shown in Figure [[fig:plant_central
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
linkaxes([ax1,ax2,ax3,ax4],'x');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_centralized_off_diagonal_L.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
#+begin_src matlab :var filepath="figs/plant_centralized_L.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_centralized_off_diagonal_L
#+caption: Off Diagonal Elements of the plant $\bm{J} \bm{G}$ ([[./figs/plant_centralized_off_diagonal_L.png][png]], [[./figs/plant_centralized_off_diagonal_L.pdf][pdf]])
[[file:figs/plant_centralized_off_diagonal_L.png]]
#+name: fig:plant_centralized_L
#+caption: Diagonal and off-diagonal elements of the plant $\bm{K}\bm{G}$ ([[./figs/plant_centralized_L.png][png]], [[./figs/plant_centralized_L.pdf][pdf]])
[[file:figs/plant_centralized_L.png]]
We can see that this *totally decouples the system at low frequency*.
@ -774,7 +741,7 @@ We now multiply the plant by the Jacobian matrix as shown in Figure [[fig:centra
figure;
ax1 = subplot(2, 1, 1);
ax1 = subplot(2, 2, 1);
hold on;
for i = 1:6
plot(freqs, abs(squeeze(freqresp(Gx(i, i), freqs, 'Hz'))));
@ -782,8 +749,9 @@ We now multiply the plant by the Jacobian matrix as shown in Figure [[fig:centra
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title('Diagonal elements of the Plant');
ax2 = subplot(2, 1, 2);
ax2 = subplot(2, 2, 3);
hold on;
for i = 1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(Gx(i, i), freqs, 'Hz'))), 'DisplayName', labels{i});
@ -793,30 +761,9 @@ We now multiply the plant by the Jacobian matrix as shown in Figure [[fig:centra
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend();
legend('location', 'northwest');
linkaxes([ax1,ax2],'x');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_centralized_diagonal_X.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_centralized_diagonal_X
#+caption: Diagonal Elements of the plant $\bm{G} \bm{J}^{-T}$ ([[./figs/plant_centralized_diagonal_X.png][png]], [[./figs/plant_centralized_diagonal_X.pdf][pdf]])
[[file:figs/plant_centralized_diagonal_X.png]]
The diagonal terms are not the same.
The resonances of the system are "decoupled".
For instance, the vertical resonance of the system is only present on the diagonal term corresponding to $D_z/\mathcal{F}_z$.
#+begin_src matlab :exports none
freqs = logspace(1, 4, 1000);
figure;
ax1 = subplot(2, 1, 1);
ax3 = subplot(2, 2, 2);
hold on;
for i = 1:5
for j = i+1:6
@ -828,8 +775,9 @@ For instance, the vertical resonance of the system is only present on the diagon
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title('Off-Diagonal elements of the Plant');
ax2 = subplot(2, 1, 2);
ax4 = subplot(2, 2, 4);
hold on;
for i = 1:5
for j = i+1:6
@ -844,17 +792,21 @@ For instance, the vertical resonance of the system is only present on the diagon
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
linkaxes([ax1,ax2,ax3,ax4],'x');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_centralized_off_diagonal_X.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
#+begin_src matlab :var filepath="figs/plant_centralized_X.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_centralized_off_diagonal_X
#+caption: Off Diagonal Elements of the plant $\bm{G} \bm{J}^{-T}$ ([[./figs/plant_centralized_off_diagonal_X.png][png]], [[./figs/plant_centralized_off_diagonal_X.pdf][pdf]])
[[file:figs/plant_centralized_off_diagonal_X.png]]
#+name: fig:plant_centralized_X
#+caption: Diagonal and off-diagonal elements of the plant $\bm{G} \bm{J}^{-T}$ ([[./figs/plant_centralized_X.png][png]], [[./figs/plant_centralized_X.pdf][pdf]])
[[file:figs/plant_centralized_X.png]]
The diagonal terms are not the same.
The resonances of the system are "decoupled".
For instance, the vertical resonance of the system is only present on the diagonal term corresponding to $D_z/\mathcal{F}_z$.
Here the system is almost decoupled at all frequencies except for the transfer functions $\frac{R_y}{\mathcal{F}_x}$ and $\frac{R_x}{\mathcal{F}_y}$.
@ -985,7 +937,7 @@ The control architecture is shown in Figure [[fig:centralized_reference_tracking
*** Plant Analysis
The plant is pre-multiplied by $\bm{G}^{-1}(\omega = 0)$.
The diagonal elements of the shaped plant are shown in Figure [[fig:plant_centralized_diagonal_SD]].
The diagonal and off-diagonal elements of the shaped plant are shown in Figure [[fig:plant_centralized_SD]].
#+begin_src matlab
G0 = G*inv(freqresp(G, 0));
@ -996,7 +948,7 @@ The diagonal elements of the shaped plant are shown in Figure [[fig:plant_centra
figure;
ax1 = subplot(2, 1, 1);
ax1 = subplot(2, 2, 1);
hold on;
for i = 1:6
plot(freqs, abs(squeeze(freqresp(G0(i, i), freqs, 'Hz'))));
@ -1004,37 +956,21 @@ The diagonal elements of the shaped plant are shown in Figure [[fig:plant_centra
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title('Diagonal elements of the Plant');
ax2 = subplot(2, 1, 2);
ax2 = subplot(2, 2, 3);
hold on;
for i = 1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(G0(i, i), freqs, 'Hz'))), 'DisplayName', ['$G_0(' num2str(i) ',' num2str(i) ')$']);
plot(freqs, 180/pi*angle(squeeze(freqresp(G0(i, i), freqs, 'Hz'))), 'DisplayName', sprintf('$G_0(%i,%i)$', i, i));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend();
legend('location', 'northwest');
linkaxes([ax1,ax2],'x');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_centralized_diagonal_SD.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_centralized_diagonal_SD
#+caption: Diagonal Elements of the plant $\bm{G} \bm{G}^{-1}(\omega = 0)$ ([[./figs/plant_centralized_diagonal_SD.png][png]], [[./figs/plant_centralized_diagonal_SD.pdf][pdf]])
[[file:figs/plant_centralized_diagonal_SD.png]]
#+begin_src matlab :exports none
freqs = logspace(1, 4, 1000);
figure;
ax1 = subplot(2, 1, 1);
ax3 = subplot(2, 2, 2);
hold on;
for i = 1:5
for j = i+1:6
@ -1046,8 +982,9 @@ The diagonal elements of the shaped plant are shown in Figure [[fig:plant_centra
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title('Off-Diagonal elements of the Plant');
ax2 = subplot(2, 1, 2);
ax4 = subplot(2, 2, 4);
hold on;
for i = 1:5
for j = i+1:6
@ -1062,17 +999,17 @@ The diagonal elements of the shaped plant are shown in Figure [[fig:plant_centra
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
linkaxes([ax1,ax2,ax3,ax4],'x');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/plant_centralized_off_diagonal_SD.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
#+begin_src matlab :var filepath="figs/plant_centralized_SD.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:plant_centralized_off_diagonal_SD
#+caption: Off Diagonal Elements of the plant $\bm{G} \bm{J}^{-T}$ ([[./figs/plant_centralized_off_diagonal_SD.png][png]], [[./figs/plant_centralized_off_diagonal_SD.pdf][pdf]])
[[file:figs/plant_centralized_off_diagonal_SD.png]]
#+name: fig:plant_centralized_SD
#+caption: Diagonal and off-diagonal elements of the plant $\bm{G} \bm{G}^{-1}(\omega = 0)$ ([[./figs/plant_centralized_SD.png][png]], [[./figs/plant_centralized_SD.pdf][pdf]])
[[file:figs/plant_centralized_SD.png]]
*** Controller Design
We have that:
@ -1296,14 +1233,14 @@ Let's identify the transfer function from $\bm{\tau}$ to $\bm{L}$.
#+end_src
*** Obtained Plant
The diagonal elements of the plant are shown in Figure [[fig:hybrid_control_Kl_plant_diagonal]] while the off diagonal terms are shown in Figure [[fig:hybrid_control_Kl_plant_off_diagonal]].
The obtained plant is shown in Figure [[fig:hybrid_control_Kl_plant]].
#+begin_src matlab :exports none
freqs = logspace(1, 4, 1000);
figure;
ax1 = subplot(2, 1, 1);
ax1 = subplot(2, 2, 1);
hold on;
for i = 1:6
plot(freqs, abs(squeeze(freqresp(Gl(i, i), freqs, 'Hz'))));
@ -1311,36 +1248,21 @@ The diagonal elements of the plant are shown in Figure [[fig:hybrid_control_Kl_p
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title('Diagonal elements of the Plant');
ax2 = subplot(2, 1, 2);
ax2 = subplot(2, 2, 3);
hold on;
for i = 1:6
plot(freqs, 180/pi*angle(squeeze(freqresp(Gl(i, i), freqs, 'Hz'))));
plot(freqs, 180/pi*angle(squeeze(freqresp(Gl(i, i), freqs, 'Hz'))), 'DisplayName', sprintf('$\\epsilon_{\\mathcal{L}_%i}/\\tau_%i$', i, i));
end
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
legend('location', 'northwest');
linkaxes([ax1,ax2],'x');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/hybrid_control_Kl_plant_diagonal.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:hybrid_control_Kl_plant_diagonal
#+caption: Diagonal elements of the plant for the design of $\bm{K}_\mathcal{L}$ ([[./figs/hybrid_control_Kl_plant_diagonal.png][png]], [[./figs/hybrid_control_Kl_plant_diagonal.pdf][pdf]])
[[file:figs/hybrid_control_Kl_plant_diagonal.png]]
#+begin_src matlab :exports none
freqs = logspace(1, 4, 1000);
figure;
ax1 = subplot(2, 1, 1);
ax3 = subplot(2, 2, 2);
hold on;
for i = 1:5
for j = i+1:6
@ -1352,8 +1274,9 @@ The diagonal elements of the plant are shown in Figure [[fig:hybrid_control_Kl_p
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title('Off-Diagonal elements of the Plant');
ax2 = subplot(2, 1, 2);
ax4 = subplot(2, 2, 4);
hold on;
for i = 1:5
for j = i+1:6
@ -1368,17 +1291,17 @@ The diagonal elements of the plant are shown in Figure [[fig:hybrid_control_Kl_p
ylim([-180, 180]);
yticks([-180, -90, 0, 90, 180]);
linkaxes([ax1,ax2],'x');
linkaxes([ax1,ax2,ax3,ax4],'x');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/hybrid_control_Kl_plant_off_diagonal.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
#+begin_src matlab :var filepath="figs/hybrid_control_Kl_plant.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:hybrid_control_Kl_plant_off_diagonal
#+caption: Off-diagonal elements of the plant for the design of $\bm{K}_\mathcal{L}$ ([[./figs/hybrid_control_Kl_plant_off_diagonal.png][png]], [[./figs/hybrid_control_Kl_plant_off_diagonal.pdf][pdf]])
[[file:figs/hybrid_control_Kl_plant_off_diagonal.png]]
#+name: fig:hybrid_control_Kl_plant
#+caption: Diagonal and off-diagonal elements of the plant for the design of $\bm{K}_\mathcal{L}$ ([[./figs/hybrid_control_Kl_plant.png][png]], [[./figs/hybrid_control_Kl_plant.pdf][pdf]])
[[file:figs/hybrid_control_Kl_plant.png]]
*** Controller Design
We apply a decentralized (diagonal) direct velocity feedback.