Update one controller
This commit is contained in:
parent
c0d59f731f
commit
8fe6e814f2
@ -4,7 +4,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-03-13 ven. 13:12 -->
|
<!-- 2020-03-13 ven. 13:23 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Stewart Platform - Tracking Control</title>
|
<title>Stewart Platform - Tracking Control</title>
|
||||||
@ -248,42 +248,42 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgd7b25e5">1. Decentralized Control Architecture using Strut Length</a>
|
<li><a href="#orgd7b25e5">1. Decentralized Control Architecture using Strut Length</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org0e138be">1.1. Control Schematic</a></li>
|
<li><a href="#orga470275">1.1. Control Schematic</a></li>
|
||||||
<li><a href="#org627b63c">1.2. Initialize the Stewart platform</a></li>
|
<li><a href="#org3cdd958">1.2. Initialize the Stewart platform</a></li>
|
||||||
<li><a href="#org131ba62">1.3. Identification of the plant</a></li>
|
<li><a href="#org8ae8979">1.3. Identification of the plant</a></li>
|
||||||
<li><a href="#org7eca1bc">1.4. Plant Analysis</a></li>
|
<li><a href="#org486a2e4">1.4. Plant Analysis</a></li>
|
||||||
<li><a href="#org3a9b8c2">1.5. Controller Design</a></li>
|
<li><a href="#org484c823">1.5. Controller Design</a></li>
|
||||||
<li><a href="#org48cd0ec">1.6. Simulation</a></li>
|
<li><a href="#org013a9ba">1.6. Simulation</a></li>
|
||||||
<li><a href="#org974b430">1.7. Results</a></li>
|
<li><a href="#org974b430">1.7. Results</a></li>
|
||||||
<li><a href="#org35a41e9">1.8. Conclusion</a></li>
|
<li><a href="#org19a6760">1.8. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orga519721">2. Centralized Control Architecture using Pose Measurement</a>
|
<li><a href="#orga519721">2. Centralized Control Architecture using Pose Measurement</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgc7e9cce">2.1. Control Schematic</a></li>
|
<li><a href="#orga5acf65">2.1. Control Schematic</a></li>
|
||||||
<li><a href="#orga66901c">2.2. Initialize the Stewart platform</a></li>
|
<li><a href="#org0250b01">2.2. Initialize the Stewart platform</a></li>
|
||||||
<li><a href="#org8ae8979">2.3. Identification of the plant</a></li>
|
<li><a href="#orgf2a4e09">2.3. Identification of the plant</a></li>
|
||||||
<li><a href="#org2223469">2.4. Diagonal Control - Leg’s Frame</a>
|
<li><a href="#org2223469">2.4. Diagonal Control - Leg’s Frame</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org19de50e">2.4.1. Control Architecture</a></li>
|
<li><a href="#org8e1e62c">2.4.1. Control Architecture</a></li>
|
||||||
<li><a href="#org316c717">2.4.2. Plant Analysis</a></li>
|
<li><a href="#org133ca61">2.4.2. Plant Analysis</a></li>
|
||||||
<li><a href="#org4013133">2.4.3. Controller Design</a></li>
|
<li><a href="#org6afc297">2.4.3. Controller Design</a></li>
|
||||||
<li><a href="#orgf5ded7d">2.4.4. Simulation</a></li>
|
<li><a href="#orgdb24c37">2.4.4. Simulation</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org26a8857">2.5. Diagonal Control - Cartesian Frame</a>
|
<li><a href="#org26a8857">2.5. Diagonal Control - Cartesian Frame</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org8603690">2.5.1. Control Architecture</a></li>
|
<li><a href="#org0f41ce9">2.5.1. Control Architecture</a></li>
|
||||||
<li><a href="#org36797a3">2.5.2. Plant Analysis</a></li>
|
<li><a href="#org9691244">2.5.2. Plant Analysis</a></li>
|
||||||
<li><a href="#org6f32955">2.5.3. Controller Design</a></li>
|
<li><a href="#org7f32f8e">2.5.3. Controller Design</a></li>
|
||||||
<li><a href="#org013a9ba">2.5.4. Simulation</a></li>
|
<li><a href="#orgac9e2fb">2.5.4. Simulation</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgad7bc54">2.6. Diagonal Control - Steady State Decoupling</a>
|
<li><a href="#orgad7bc54">2.6. Diagonal Control - Steady State Decoupling</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org8e1e62c">2.6.1. Control Architecture</a></li>
|
<li><a href="#org42dc407">2.6.1. Control Architecture</a></li>
|
||||||
<li><a href="#org486a2e4">2.6.2. Plant Analysis</a></li>
|
<li><a href="#org346704a">2.6.2. Plant Analysis</a></li>
|
||||||
<li><a href="#org5e8fddd">2.6.3. Controller Design</a></li>
|
<li><a href="#org8b2a544">2.6.3. Controller Design</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orga2eadeb">2.7. Comparison</a>
|
<li><a href="#orga2eadeb">2.7. Comparison</a>
|
||||||
@ -292,29 +292,29 @@
|
|||||||
<li><a href="#org23ae479">2.7.2. Simulation Results</a></li>
|
<li><a href="#org23ae479">2.7.2. Simulation Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgacc6e75">2.8. Conclusion</a></li>
|
<li><a href="#orgc7e00b3">2.8. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org4b8c360">3. Hybrid Control Architecture - HAC-LAC with relative DVF</a>
|
<li><a href="#org4b8c360">3. Hybrid Control Architecture - HAC-LAC with relative DVF</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orga470275">3.1. Control Schematic</a></li>
|
<li><a href="#orgaf4f125">3.1. Control Schematic</a></li>
|
||||||
<li><a href="#org3cdd958">3.2. Initialize the Stewart platform</a></li>
|
<li><a href="#org5efa5dc">3.2. Initialize the Stewart platform</a></li>
|
||||||
<li><a href="#org3274a98">3.3. First Control Loop - \(\bm{K}_\mathcal{L}\)</a>
|
<li><a href="#org3274a98">3.3. First Control Loop - \(\bm{K}_\mathcal{L}\)</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orge29b065">3.3.1. Identification</a></li>
|
<li><a href="#orgfb552d7">3.3.1. Identification</a></li>
|
||||||
<li><a href="#org78e6e29">3.3.2. Obtained Plant</a></li>
|
<li><a href="#orge84aa66">3.3.2. Obtained Plant</a></li>
|
||||||
<li><a href="#org117de1d">3.3.3. Controller Design</a></li>
|
<li><a href="#orgfeef351">3.3.3. Controller Design</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org8440c0b">3.4. Second Control Loop - \(\bm{K}_\mathcal{X}\)</a>
|
<li><a href="#org8440c0b">3.4. Second Control Loop - \(\bm{K}_\mathcal{X}\)</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgfb552d7">3.4.1. Identification</a></li>
|
<li><a href="#orgd69b37c">3.4.1. Identification</a></li>
|
||||||
<li><a href="#orge84aa66">3.4.2. Obtained Plant</a></li>
|
<li><a href="#org2a634da">3.4.2. Obtained Plant</a></li>
|
||||||
<li><a href="#org484c823">3.4.3. Controller Design</a></li>
|
<li><a href="#org303d728">3.4.3. Controller Design</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org74d3dcd">3.5. Simulations</a></li>
|
<li><a href="#org74d3dcd">3.5. Simulations</a></li>
|
||||||
<li><a href="#org19a6760">3.6. Conclusion</a></li>
|
<li><a href="#org8f3d960">3.6. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org798d54f">4. Comparison of all the methods</a></li>
|
<li><a href="#org798d54f">4. Comparison of all the methods</a></li>
|
||||||
@ -351,8 +351,8 @@ The control configuration are compare in section <a href="#orgb3403cb">4</a>.
|
|||||||
<a id="orgea7df6c"></a>
|
<a id="orgea7df6c"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org0e138be" class="outline-3">
|
<div id="outline-container-orga470275" class="outline-3">
|
||||||
<h3 id="org0e138be"><span class="section-number-3">1.1</span> Control Schematic</h3>
|
<h3 id="orga470275"><span class="section-number-3">1.1</span> Control Schematic</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<p>
|
||||||
The control architecture is shown in Figure <a href="#org4f704a1">1</a>.
|
The control architecture is shown in Figure <a href="#org4f704a1">1</a>.
|
||||||
@ -375,8 +375,8 @@ Then, a diagonal (decentralized) controller \(\bm{K}_\mathcal{L}\) is used such
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org627b63c" class="outline-3">
|
<div id="outline-container-org3cdd958" class="outline-3">
|
||||||
<h3 id="org627b63c"><span class="section-number-3">1.2</span> Initialize the Stewart platform</h3>
|
<h3 id="org3cdd958"><span class="section-number-3">1.2</span> Initialize the Stewart platform</h3>
|
||||||
<div class="outline-text-3" id="text-1-2">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-comment">% Stewart Platform</span>
|
<pre class="src src-matlab"><span class="org-comment">% Stewart Platform</span>
|
||||||
@ -407,8 +407,8 @@ references = initializeReferences(stewart);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org131ba62" class="outline-3">
|
<div id="outline-container-org8ae8979" class="outline-3">
|
||||||
<h3 id="org131ba62"><span class="section-number-3">1.3</span> Identification of the plant</h3>
|
<h3 id="org8ae8979"><span class="section-number-3">1.3</span> Identification of the plant</h3>
|
||||||
<div class="outline-text-3" id="text-1-3">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
Let’s identify the transfer function from \(\bm{\tau}\) to \(\bm{\mathcal{L}}\).
|
Let’s identify the transfer function from \(\bm{\tau}\) to \(\bm{\mathcal{L}}\).
|
||||||
@ -431,8 +431,8 @@ G.OutputName = {<span class="org-string">'L1'</span>, <span class="org-string">'
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7eca1bc" class="outline-3">
|
<div id="outline-container-org486a2e4" class="outline-3">
|
||||||
<h3 id="org7eca1bc"><span class="section-number-3">1.4</span> Plant Analysis</h3>
|
<h3 id="org486a2e4"><span class="section-number-3">1.4</span> Plant Analysis</h3>
|
||||||
<div class="outline-text-3" id="text-1-4">
|
<div class="outline-text-3" id="text-1-4">
|
||||||
<p>
|
<p>
|
||||||
The diagonal terms of the plant is shown in Figure <a href="#org8c82316">2</a>.
|
The diagonal terms of the plant is shown in Figure <a href="#org8c82316">2</a>.
|
||||||
@ -466,8 +466,8 @@ We see that the plant is decoupled at low frequency which indicate that decentra
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3a9b8c2" class="outline-3">
|
<div id="outline-container-org484c823" class="outline-3">
|
||||||
<h3 id="org3a9b8c2"><span class="section-number-3">1.5</span> Controller Design</h3>
|
<h3 id="org484c823"><span class="section-number-3">1.5</span> Controller Design</h3>
|
||||||
<div class="outline-text-3" id="text-1-5">
|
<div class="outline-text-3" id="text-1-5">
|
||||||
<p>
|
<p>
|
||||||
The controller consists of:
|
The controller consists of:
|
||||||
@ -496,8 +496,8 @@ Kl = diag(1<span class="org-type">./</span>diag(abs(freqresp(G, wc)))) <span cla
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org48cd0ec" class="outline-3">
|
<div id="outline-container-org013a9ba" class="outline-3">
|
||||||
<h3 id="org48cd0ec"><span class="section-number-3">1.6</span> Simulation</h3>
|
<h3 id="org013a9ba"><span class="section-number-3">1.6</span> Simulation</h3>
|
||||||
<div class="outline-text-3" id="text-1-6">
|
<div class="outline-text-3" id="text-1-6">
|
||||||
<p>
|
<p>
|
||||||
Let’s define some reference path to follow.
|
Let’s define some reference path to follow.
|
||||||
@ -596,8 +596,8 @@ zlim([0, <span class="org-constant">inf</span>]);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org35a41e9" class="outline-3">
|
<div id="outline-container-org19a6760" class="outline-3">
|
||||||
<h3 id="org35a41e9"><span class="section-number-3">1.8</span> Conclusion</h3>
|
<h3 id="org19a6760"><span class="section-number-3">1.8</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-1-8">
|
<div class="outline-text-3" id="text-1-8">
|
||||||
<p>
|
<p>
|
||||||
Such control architecture is easy to implement and give good results.
|
Such control architecture is easy to implement and give good results.
|
||||||
@ -618,8 +618,8 @@ However, as \(\mathcal{X}\) is not directly measured, it is possible that import
|
|||||||
<a id="org48604d1"></a>
|
<a id="org48604d1"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgc7e9cce" class="outline-3">
|
<div id="outline-container-orga5acf65" class="outline-3">
|
||||||
<h3 id="orgc7e9cce"><span class="section-number-3">2.1</span> Control Schematic</h3>
|
<h3 id="orga5acf65"><span class="section-number-3">2.1</span> Control Schematic</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<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">9</a>).
|
||||||
@ -657,8 +657,8 @@ It is indeed a more complex computation explained in section <a href="#org5f6154
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga66901c" class="outline-3">
|
<div id="outline-container-org0250b01" class="outline-3">
|
||||||
<h3 id="orga66901c"><span class="section-number-3">2.2</span> Initialize the Stewart platform</h3>
|
<h3 id="org0250b01"><span class="section-number-3">2.2</span> Initialize the Stewart platform</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-comment">% Stewart Platform</span>
|
<pre class="src src-matlab"><span class="org-comment">% Stewart Platform</span>
|
||||||
@ -689,8 +689,8 @@ references = initializeReferences(stewart);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8ae8979" class="outline-3">
|
<div id="outline-container-orgf2a4e09" class="outline-3">
|
||||||
<h3 id="org8ae8979"><span class="section-number-3">2.3</span> Identification of the plant</h3>
|
<h3 id="orgf2a4e09"><span class="section-number-3">2.3</span> Identification of the plant</h3>
|
||||||
<div class="outline-text-3" id="text-2-3">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
<p>
|
<p>
|
||||||
Let’s identify the transfer function from \(\bm{\tau}\) to \(\bm{\mathcal{X}}\).
|
Let’s identify the transfer function from \(\bm{\tau}\) to \(\bm{\mathcal{X}}\).
|
||||||
@ -720,8 +720,8 @@ G.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-string">'
|
|||||||
<a id="org31fd942"></a>
|
<a id="org31fd942"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org19de50e" class="outline-4">
|
<div id="outline-container-org8e1e62c" class="outline-4">
|
||||||
<h4 id="org19de50e"><span class="section-number-4">2.4.1</span> Control Architecture</h4>
|
<h4 id="org8e1e62c"><span class="section-number-4">2.4.1</span> Control Architecture</h4>
|
||||||
<div class="outline-text-4" id="text-2-4-1">
|
<div class="outline-text-4" id="text-2-4-1">
|
||||||
<p>
|
<p>
|
||||||
The pose error \(\bm{\epsilon}_\mathcal{X}\) is first converted in the frame of the leg by using the Jacobian matrix.
|
The pose error \(\bm{\epsilon}_\mathcal{X}\) is first converted in the frame of the leg by using the Jacobian matrix.
|
||||||
@ -742,8 +742,8 @@ Note here that the transformation from the pose error \(\bm{\epsilon}_\mathcal{X
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org316c717" class="outline-4">
|
<div id="outline-container-org133ca61" class="outline-4">
|
||||||
<h4 id="org316c717"><span class="section-number-4">2.4.2</span> Plant Analysis</h4>
|
<h4 id="org133ca61"><span class="section-number-4">2.4.2</span> Plant Analysis</h4>
|
||||||
<div class="outline-text-4" id="text-2-4-2">
|
<div class="outline-text-4" id="text-2-4-2">
|
||||||
<p>
|
<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">10</a> to obtain a more diagonal plant.
|
||||||
@ -793,8 +793,8 @@ Thus \(J \cdot G(\omega = 0) = J \cdot \frac{\delta\bm{\mathcal{X}}}{\delta\bm{\
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4013133" class="outline-4">
|
<div id="outline-container-org6afc297" class="outline-4">
|
||||||
<h4 id="org4013133"><span class="section-number-4">2.4.3</span> Controller Design</h4>
|
<h4 id="org6afc297"><span class="section-number-4">2.4.3</span> Controller Design</h4>
|
||||||
<div class="outline-text-4" id="text-2-4-3">
|
<div class="outline-text-4" id="text-2-4-3">
|
||||||
<p>
|
<p>
|
||||||
The controller consists of:
|
The controller consists of:
|
||||||
@ -831,8 +831,8 @@ The controller \(\bm{K} = \bm{K}_\mathcal{L} \bm{J}\) is computed.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf5ded7d" class="outline-4">
|
<div id="outline-container-orgdb24c37" class="outline-4">
|
||||||
<h4 id="orgf5ded7d"><span class="section-number-4">2.4.4</span> Simulation</h4>
|
<h4 id="orgdb24c37"><span class="section-number-4">2.4.4</span> Simulation</h4>
|
||||||
<div class="outline-text-4" id="text-2-4-4">
|
<div class="outline-text-4" id="text-2-4-4">
|
||||||
<p>
|
<p>
|
||||||
We specify the reference path to follow.
|
We specify the reference path to follow.
|
||||||
@ -876,8 +876,8 @@ save(<span class="org-string">'./mat/control_tracking.mat'</span>, <span class="
|
|||||||
<a id="orgfd201c3"></a>
|
<a id="orgfd201c3"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org8603690" class="outline-4">
|
<div id="outline-container-org0f41ce9" class="outline-4">
|
||||||
<h4 id="org8603690"><span class="section-number-4">2.5.1</span> Control Architecture</h4>
|
<h4 id="org0f41ce9"><span class="section-number-4">2.5.1</span> Control Architecture</h4>
|
||||||
<div class="outline-text-4" id="text-2-5-1">
|
<div class="outline-text-4" id="text-2-5-1">
|
||||||
<p>
|
<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">14</a>.
|
||||||
@ -896,8 +896,8 @@ The final implemented controller is \(\bm{K} = \bm{J}^{-T} \cdot \bm{K}_\mathcal
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org36797a3" class="outline-4">
|
<div id="outline-container-org9691244" class="outline-4">
|
||||||
<h4 id="org36797a3"><span class="section-number-4">2.5.2</span> Plant Analysis</h4>
|
<h4 id="org9691244"><span class="section-number-4">2.5.2</span> Plant Analysis</h4>
|
||||||
<div class="outline-text-4" id="text-2-5-2">
|
<div class="outline-text-4" id="text-2-5-2">
|
||||||
<p>
|
<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">14</a> to obtain a more diagonal plant.
|
||||||
@ -1019,8 +1019,8 @@ This control architecture can also give a dynamically decoupled plant if the Cen
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6f32955" class="outline-4">
|
<div id="outline-container-org7f32f8e" class="outline-4">
|
||||||
<h4 id="org6f32955"><span class="section-number-4">2.5.3</span> Controller Design</h4>
|
<h4 id="org7f32f8e"><span class="section-number-4">2.5.3</span> Controller Design</h4>
|
||||||
<div class="outline-text-4" id="text-2-5-3">
|
<div class="outline-text-4" id="text-2-5-3">
|
||||||
<p>
|
<p>
|
||||||
The controller consists of:
|
The controller consists of:
|
||||||
@ -1057,8 +1057,8 @@ The controller \(\bm{K} = \bm{J}^{-T} \bm{K}_\mathcal{X}\) is computed.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org013a9ba" class="outline-4">
|
<div id="outline-container-orgac9e2fb" class="outline-4">
|
||||||
<h4 id="org013a9ba"><span class="section-number-4">2.5.4</span> Simulation</h4>
|
<h4 id="orgac9e2fb"><span class="section-number-4">2.5.4</span> Simulation</h4>
|
||||||
<div class="outline-text-4" id="text-2-5-4">
|
<div class="outline-text-4" id="text-2-5-4">
|
||||||
<p>
|
<p>
|
||||||
We specify the reference path to follow.
|
We specify the reference path to follow.
|
||||||
@ -1102,8 +1102,8 @@ save(<span class="org-string">'./mat/control_tracking.mat'</span>, <span class="
|
|||||||
<a id="org789ba4a"></a>
|
<a id="org789ba4a"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org8e1e62c" class="outline-4">
|
<div id="outline-container-org42dc407" class="outline-4">
|
||||||
<h4 id="org8e1e62c"><span class="section-number-4">2.6.1</span> Control Architecture</h4>
|
<h4 id="org42dc407"><span class="section-number-4">2.6.1</span> Control Architecture</h4>
|
||||||
<div class="outline-text-4" id="text-2-6-1">
|
<div class="outline-text-4" id="text-2-6-1">
|
||||||
<p>
|
<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.
|
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.
|
||||||
@ -1126,8 +1126,8 @@ The control architecture is shown in Figure <a href="#orgb226e44">18</a>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org486a2e4" class="outline-4">
|
<div id="outline-container-org346704a" class="outline-4">
|
||||||
<h4 id="org486a2e4"><span class="section-number-4">2.6.2</span> Plant Analysis</h4>
|
<h4 id="org346704a"><span class="section-number-4">2.6.2</span> Plant Analysis</h4>
|
||||||
<div class="outline-text-4" id="text-2-6-2">
|
<div class="outline-text-4" id="text-2-6-2">
|
||||||
<p>
|
<p>
|
||||||
The plant is pre-multiplied by \(\bm{G}^{-1}(\omega = 0)\).
|
The plant is pre-multiplied by \(\bm{G}^{-1}(\omega = 0)\).
|
||||||
@ -1155,8 +1155,8 @@ The diagonal elements of the shaped plant are shown in Figure <a href="#orgc15aa
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5e8fddd" class="outline-4">
|
<div id="outline-container-org8b2a544" class="outline-4">
|
||||||
<h4 id="org5e8fddd"><span class="section-number-4">2.6.3</span> Controller Design</h4>
|
<h4 id="org8b2a544"><span class="section-number-4">2.6.3</span> Controller Design</h4>
|
||||||
<div class="outline-text-4" id="text-2-6-3">
|
<div class="outline-text-4" id="text-2-6-3">
|
||||||
<p>
|
<p>
|
||||||
We have that:
|
We have that:
|
||||||
@ -1222,8 +1222,8 @@ This error is much lower when using the diagonal control in the frame of the leg
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgacc6e75" class="outline-3">
|
<div id="outline-container-orgc7e00b3" class="outline-3">
|
||||||
<h3 id="orgacc6e75"><span class="section-number-3">2.8</span> Conclusion</h3>
|
<h3 id="orgc7e00b3"><span class="section-number-3">2.8</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-8">
|
<div class="outline-text-3" id="text-2-8">
|
||||||
<p>
|
<p>
|
||||||
Both control architecture gives similar results even tough the control in the Leg’s frame gives slightly better results.
|
Both control architecture gives similar results even tough the control in the Leg’s frame gives slightly better results.
|
||||||
@ -1306,8 +1306,8 @@ Thus, this method should be quite robust against parameter variation (e.g. the p
|
|||||||
<a id="org14e3e5f"></a>
|
<a id="org14e3e5f"></a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orga470275" class="outline-3">
|
<div id="outline-container-orgaf4f125" class="outline-3">
|
||||||
<h3 id="orga470275"><span class="section-number-3">3.1</span> Control Schematic</h3>
|
<h3 id="orgaf4f125"><span class="section-number-3">3.1</span> Control Schematic</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<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">23</a>.
|
||||||
@ -1348,8 +1348,8 @@ This second loop is responsible for the reference tracking.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3cdd958" class="outline-3">
|
<div id="outline-container-org5efa5dc" class="outline-3">
|
||||||
<h3 id="org3cdd958"><span class="section-number-3">3.2</span> Initialize the Stewart platform</h3>
|
<h3 id="org5efa5dc"><span class="section-number-3">3.2</span> Initialize the Stewart platform</h3>
|
||||||
<div class="outline-text-3" id="text-3-2">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-comment">% Stewart Platform</span>
|
<pre class="src src-matlab"><span class="org-comment">% Stewart Platform</span>
|
||||||
@ -1384,8 +1384,8 @@ references = initializeReferences(stewart);
|
|||||||
<h3 id="org3274a98"><span class="section-number-3">3.3</span> First Control Loop - \(\bm{K}_\mathcal{L}\)</h3>
|
<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 class="outline-text-3" id="text-3-3">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orge29b065" class="outline-4">
|
<div id="outline-container-orgfb552d7" class="outline-4">
|
||||||
<h4 id="orge29b065"><span class="section-number-4">3.3.1</span> Identification</h4>
|
<h4 id="orgfb552d7"><span class="section-number-4">3.3.1</span> Identification</h4>
|
||||||
<div class="outline-text-4" id="text-3-3-1">
|
<div class="outline-text-4" id="text-3-3-1">
|
||||||
<p>
|
<p>
|
||||||
Let’s identify the transfer function from \(\bm{\tau}\) to \(\bm{L}\).
|
Let’s identify the transfer function from \(\bm{\tau}\) to \(\bm{L}\).
|
||||||
@ -1408,8 +1408,8 @@ Gl.OutputName = {<span class="org-string">'L1'</span>, <span class="org-string">
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org78e6e29" class="outline-4">
|
<div id="outline-container-orge84aa66" class="outline-4">
|
||||||
<h4 id="org78e6e29"><span class="section-number-4">3.3.2</span> Obtained Plant</h4>
|
<h4 id="orge84aa66"><span class="section-number-4">3.3.2</span> Obtained Plant</h4>
|
||||||
<div class="outline-text-4" id="text-3-3-2">
|
<div class="outline-text-4" id="text-3-3-2">
|
||||||
<p>
|
<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 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>.
|
||||||
@ -1431,8 +1431,8 @@ The diagonal elements of the plant are shown in Figure <a href="#org687a922">24<
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org117de1d" class="outline-4">
|
<div id="outline-container-orgfeef351" class="outline-4">
|
||||||
<h4 id="org117de1d"><span class="section-number-4">3.3.3</span> Controller Design</h4>
|
<h4 id="orgfeef351"><span class="section-number-4">3.3.3</span> Controller Design</h4>
|
||||||
<div class="outline-text-4" id="text-3-3-3">
|
<div class="outline-text-4" id="text-3-3-3">
|
||||||
<p>
|
<p>
|
||||||
We apply a decentralized (diagonal) direct velocity feedback.
|
We apply a decentralized (diagonal) direct velocity feedback.
|
||||||
@ -1464,8 +1464,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>
|
<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 class="outline-text-3" id="text-3-4">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgfb552d7" class="outline-4">
|
<div id="outline-container-orgd69b37c" class="outline-4">
|
||||||
<h4 id="orgfb552d7"><span class="section-number-4">3.4.1</span> Identification</h4>
|
<h4 id="orgd69b37c"><span class="section-number-4">3.4.1</span> Identification</h4>
|
||||||
<div class="outline-text-4" id="text-3-4-1">
|
<div class="outline-text-4" id="text-3-4-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Kx = tf(zeros(6));
|
<pre class="src src-matlab">Kx = tf(zeros(6));
|
||||||
@ -1492,8 +1492,8 @@ G.OutputName = {<span class="org-string">'Dx'</span>, <span class="org-string">'
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge84aa66" class="outline-4">
|
<div id="outline-container-org2a634da" class="outline-4">
|
||||||
<h4 id="orge84aa66"><span class="section-number-4">3.4.2</span> Obtained Plant</h4>
|
<h4 id="org2a634da"><span class="section-number-4">3.4.2</span> Obtained Plant</h4>
|
||||||
<div class="outline-text-4" id="text-3-4-2">
|
<div class="outline-text-4" id="text-3-4-2">
|
||||||
<p>
|
<p>
|
||||||
We use the Jacobian matrix to apply forces in the cartesian frame.
|
We use the Jacobian matrix to apply forces in the cartesian frame.
|
||||||
@ -1516,15 +1516,17 @@ The obtained plant is shown in Figure <a href="#org2517e3d">27</a>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org484c823" class="outline-4">
|
<div id="outline-container-org303d728" class="outline-4">
|
||||||
<h4 id="org484c823"><span class="section-number-4">3.4.3</span> Controller Design</h4>
|
<h4 id="org303d728"><span class="section-number-4">3.4.3</span> Controller Design</h4>
|
||||||
<div class="outline-text-4" id="text-3-4-3">
|
<div class="outline-text-4" id="text-3-4-3">
|
||||||
<p>
|
<p>
|
||||||
The controller consists of:
|
The controller consists of:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>A pure integrator</li>
|
<li>A pure integrator</li>
|
||||||
<li>A low pass filter with a cut-off frequency 3 times the crossover to increase the gain margin</li>
|
<li>A Second integrator up to half the wanted bandwidth</li>
|
||||||
|
<li>A Lead around the cross-over frequency</li>
|
||||||
|
<li>A low pass filter with a cut-off equal to three times the wanted bandwidth</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
@ -1532,7 +1534,7 @@ The controller consists of:
|
|||||||
|
|
||||||
h = 3; <span class="org-comment">% Lead parameter</span>
|
h = 3; <span class="org-comment">% Lead parameter</span>
|
||||||
|
|
||||||
Kx = (1<span class="org-type">/</span>h) <span class="org-type">*</span> (1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">*</span>h)<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">/</span>h) <span class="org-type">*</span> wc<span class="org-type">/</span>s <span class="org-type">*</span> ((s<span class="org-type">/</span>wc<span class="org-type">/</span>2 <span class="org-type">+</span> 1)<span class="org-type">/</span>(s<span class="org-type">/</span>wc<span class="org-type">/</span>2));
|
Kx = (1<span class="org-type">/</span>h) <span class="org-type">*</span> (1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">*</span>h)<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">/</span>h) <span class="org-type">*</span> wc<span class="org-type">/</span>s <span class="org-type">*</span> ((s<span class="org-type">/</span>wc<span class="org-type">*</span>2 <span class="org-type">+</span> 1)<span class="org-type">/</span>(s<span class="org-type">/</span>wc<span class="org-type">*</span>2)) <span class="org-type">*</span> (1<span class="org-type">/</span>(1 <span class="org-type">+</span> s<span class="org-type">/</span>wc<span class="org-type">/</span>3));
|
||||||
|
|
||||||
<span class="org-comment">% Normalization of the gain of have a loop gain of 1 at frequency wc</span>
|
<span class="org-comment">% Normalization of the gain of have a loop gain of 1 at frequency wc</span>
|
||||||
Kx = Kx<span class="org-type">.*</span>diag(1<span class="org-type">./</span>diag(abs(freqresp(Gx<span class="org-type">*</span>Kx, wc))));
|
Kx = Kx<span class="org-type">.*</span>diag(1<span class="org-type">./</span>diag(abs(freqresp(Gx<span class="org-type">*</span>Kx, wc))));
|
||||||
@ -1600,8 +1602,8 @@ The obtained position error is shown in Figure <a href="#org19456cf">29</a>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org19a6760" class="outline-3">
|
<div id="outline-container-org8f3d960" class="outline-3">
|
||||||
<h3 id="org19a6760"><span class="section-number-3">3.6</span> Conclusion</h3>
|
<h3 id="org8f3d960"><span class="section-number-3">3.6</span> Conclusion</h3>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -1765,7 +1767,7 @@ Erz = atan2(<span class="org-type">-</span>T(1, 2)<span class="org-type">/</span
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-03-13 ven. 13:12</p>
|
<p class="date">Created: 2020-03-13 ven. 13:23</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 88 KiB |
@ -1529,14 +1529,16 @@ The obtained plant is shown in Figure [[fig:hybrid_control_Kx_plant]].
|
|||||||
*** Controller Design
|
*** Controller Design
|
||||||
The controller consists of:
|
The controller consists of:
|
||||||
- A pure integrator
|
- A pure integrator
|
||||||
- A low pass filter with a cut-off frequency 3 times the crossover to increase the gain margin
|
- A Second integrator up to half the wanted bandwidth
|
||||||
|
- A Lead around the cross-over frequency
|
||||||
|
- A low pass filter with a cut-off equal to three times the wanted bandwidth
|
||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
wc = 2*pi*200; % Bandwidth Bandwidth [rad/s]
|
wc = 2*pi*200; % Bandwidth Bandwidth [rad/s]
|
||||||
|
|
||||||
h = 3; % Lead parameter
|
h = 3; % Lead parameter
|
||||||
|
|
||||||
Kx = (1/h) * (1 + s/wc*h)/(1 + s/wc/h) * wc/s * ((s/wc/2 + 1)/(s/wc/2));
|
Kx = (1/h) * (1 + s/wc*h)/(1 + s/wc/h) * wc/s * ((s/wc*2 + 1)/(s/wc*2)) * (1/(1 + s/wc/3));
|
||||||
|
|
||||||
% Normalization of the gain of have a loop gain of 1 at frequency wc
|
% Normalization of the gain of have a loop gain of 1 at frequency wc
|
||||||
Kx = Kx.*diag(1./diag(abs(freqresp(Gx*Kx, wc))));
|
Kx = Kx.*diag(1./diag(abs(freqresp(Gx*Kx, wc))));
|
||||||
|
Loading…
Reference in New Issue
Block a user