Merge few figures
@ -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’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’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’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’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 “decoupled”.
|
||||
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 “shaped plant” \(\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’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’s consider the control schematic shown in Figure <a href="#org3a1b1db">23</a>.
|
||||
Let’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’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’s load the simulation results and compare them in Figure <a href="#org6fa53fa">30</a>.
|
||||
Let’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’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>
|
||||
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB |
BIN
docs/figs/hybrid_control_Kl_plant.pdf
Normal file
BIN
docs/figs/hybrid_control_Kl_plant.png
Normal file
After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 90 KiB |
BIN
docs/figs/plant_centralized_L.pdf
Normal file
BIN
docs/figs/plant_centralized_L.png
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
docs/figs/plant_centralized_SD.pdf
Normal file
BIN
docs/figs/plant_centralized_SD.png
Normal file
After Width: | Height: | Size: 169 KiB |
BIN
docs/figs/plant_centralized_X.pdf
Normal file
BIN
docs/figs/plant_centralized_X.png
Normal file
After Width: | Height: | Size: 157 KiB |
Before Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 95 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 96 KiB |
BIN
docs/figs/plant_decentralized_L.pdf
Normal file
BIN
docs/figs/plant_decentralized_L.png
Normal file
After Width: | Height: | Size: 144 KiB |
Before Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 90 KiB |
@ -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.
|
||||
|