Tangle scripts

This commit is contained in:
Thomas Dehaeze 2020-10-13 14:51:15 +02:00
parent 7304025e79
commit da9f3ed7ad
19 changed files with 1253 additions and 872 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 KiB

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 89 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 112 KiB

View File

@ -3,7 +3,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-10-05 lun. 18:28 --> <!-- 2020-10-09 ven. 16:21 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>SVD Control</title> <title>SVD Control</title>
<meta name="generator" content="Org mode" /> <meta name="generator" content="Org mode" />
@ -35,59 +35,75 @@
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#org67dc64e">1. Gravimeter - Simscape Model</a> <li><a href="#org90d7008">1. Gravimeter - Simscape Model</a>
<ul> <ul>
<li><a href="#orgbc83858">1.1. Introduction</a></li> <li><a href="#org29b9308">1.1. Introduction</a></li>
<li><a href="#org6a10d93">1.2. Simscape Model - Parameters</a></li> <li><a href="#orgd333b87">1.2. Simscape Model - Parameters</a></li>
<li><a href="#org0efee8e">1.3. System Identification - Without Gravity</a></li> <li><a href="#org09b581d">1.3. System Identification - Without Gravity</a></li>
<li><a href="#org98fd3fd">1.4. System Identification - With Gravity</a></li> <li><a href="#org4f091cc">1.4. System Identification - With Gravity</a></li>
<li><a href="#org6400b2e">1.5. Analytical Model</a> <li><a href="#org7c4effc">1.5. Analytical Model</a>
<ul> <ul>
<li><a href="#orgd401b7a">1.5.1. Parameters</a></li> <li><a href="#org20ea2aa">1.5.1. Parameters</a></li>
<li><a href="#orgdc4cf04">1.5.2. Generation of the State Space Model</a></li> <li><a href="#org02cb447">1.5.2. Generation of the State Space Model</a></li>
<li><a href="#org2f36845">1.5.3. Comparison with the Simscape Model</a></li> <li><a href="#org9417f40">1.5.3. Comparison with the Simscape Model</a></li>
<li><a href="#org028f15a">1.5.4. Analysis</a></li> <li><a href="#org6c56e64">1.5.4. Analysis</a></li>
<li><a href="#orgaf39b24">1.5.5. Control Section</a></li> <li><a href="#orgeb20c08">1.5.5. Control Section</a></li>
<li><a href="#orga450746">1.5.6. Greshgorin radius</a></li> <li><a href="#org931022f">1.5.6. Greshgorin radius</a></li>
<li><a href="#orgd41a3f6">1.5.7. Injecting ground motion in the system to have the output</a></li> <li><a href="#org1d56ec4">1.5.7. Injecting ground motion in the system to have the output</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
<li><a href="#org866fa85">2. Gravimeter - Functions</a> <li><a href="#org36d6b85">2. Gravimeter - Functions</a>
<ul> <ul>
<li><a href="#orgcf775e2">2.1. <code>align</code></a></li> <li><a href="#orgbb4529b">2.1. <code>align</code></a></li>
<li><a href="#org78f2c7e">2.2. <code>pzmap_testCL</code></a></li> <li><a href="#orge0ed8bf">2.2. <code>pzmap_testCL</code></a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgd5b9491">3. Stewart Platform - Simscape Model</a> <li><a href="#org5afd29d">3. Stewart Platform - Simscape Model</a>
<ul> <ul>
<li><a href="#org6d58a07">3.1. Jacobian</a></li> <li><a href="#orgff944f3">3.1. Jacobian</a></li>
<li><a href="#org4f58a34">3.2. Simscape Model</a></li> <li><a href="#org07ffe6c">3.2. Simscape Model</a></li>
<li><a href="#org51c99d1">3.3. Identification of the plant</a></li> <li><a href="#org9aaf0d3">3.3. Identification of the plant</a></li>
<li><a href="#org84418dd">3.4. Obtained Dynamics</a></li> <li><a href="#orgb0b01e3">3.4. Obtained Dynamics</a></li>
<li><a href="#org315ca7e">3.5. Real Approximation of \(G\) at the decoupling frequency</a></li> <li><a href="#org1de55ce">3.5. Real Approximation of \(G\) at the decoupling frequency</a></li>
<li><a href="#org91c0ed9">3.6. Verification of the decoupling using the &ldquo;Gershgorin Radii&rdquo;</a></li> <li><a href="#org53d60e1">3.6. Verification of the decoupling using the &ldquo;Gershgorin Radii&rdquo;</a></li>
<li><a href="#org0bd0b38">3.7. Decoupled Plant</a></li> <li><a href="#org40c1d24">3.7. Decoupled Plant</a></li>
<li><a href="#org4b22e32">3.8. Diagonal Controller</a></li> <li><a href="#orgdfcd158">3.8. Diagonal Controller</a></li>
<li><a href="#orgac4cf9b">3.9. Centralized Control</a></li> <li><a href="#org25e3b35">3.9. Centralized Control</a></li>
<li><a href="#org4ae317c">3.10. SVD Control</a></li> <li><a href="#org4d83793">3.10. SVD Control</a></li>
<li><a href="#orgabc897d">3.11. Results</a></li> <li><a href="#org7cece79">3.11. Results</a></li>
</ul>
</li>
<li><a href="#org8b11aba">4. Stewart Platform - Analytical Model</a>
<ul>
<li><a href="#org2a175f6">4.1. Characteristics</a></li>
<li><a href="#org9efa4f4">4.2. Mass Matrix</a></li>
<li><a href="#org97bc497">4.3. Jacobian Matrix</a></li>
<li><a href="#org7c9679d">4.4. Stifnness matrix and Damping matrix</a></li>
<li><a href="#org00e8691">4.5. State Space System</a></li>
<li><a href="#org8a70996">4.6. Transmissibility</a></li>
<li><a href="#org12c95c9">4.7. Real approximation of \(G(j\omega)\) at decoupling frequency</a></li>
<li><a href="#orgc58b81c">4.8. Coupled and Decoupled Plant &ldquo;Gershgorin Radii&rdquo;</a></li>
<li><a href="#org2ba91f6">4.9. Decoupled Plant</a></li>
<li><a href="#orgc73a283">4.10. Controller</a></li>
<li><a href="#org9c82ee4">4.11. Closed Loop System</a></li>
<li><a href="#org80cd406">4.12. Results</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="outline-container-org67dc64e" class="outline-2"> <div id="outline-container-org90d7008" class="outline-2">
<h2 id="org67dc64e"><span class="section-number-2">1</span> Gravimeter - Simscape Model</h2> <h2 id="org90d7008"><span class="section-number-2">1</span> Gravimeter - Simscape Model</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
</div> </div>
<div id="outline-container-orgbc83858" class="outline-3"> <div id="outline-container-org29b9308" class="outline-3">
<h3 id="orgbc83858"><span class="section-number-3">1.1</span> Introduction</h3> <h3 id="org29b9308"><span class="section-number-3">1.1</span> Introduction</h3>
<div class="outline-text-3" id="text-1-1"> <div class="outline-text-3" id="text-1-1">
<div id="orge6f0a72" class="figure"> <div id="org7df72f4" class="figure">
<p><img src="figs/gravimeter_model.png" alt="gravimeter_model.png" /> <p><img src="figs/gravimeter_model.png" alt="gravimeter_model.png" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Model of the gravimeter</p> <p><span class="figure-number">Figure 1: </span>Model of the gravimeter</p>
@ -95,8 +111,8 @@
</div> </div>
</div> </div>
<div id="outline-container-org6a10d93" class="outline-3"> <div id="outline-container-orgd333b87" class="outline-3">
<h3 id="org6a10d93"><span class="section-number-3">1.2</span> Simscape Model - Parameters</h3> <h3 id="orgd333b87"><span class="section-number-3">1.2</span> Simscape Model - Parameters</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">open(<span class="org-string">'gravimeter.slx'</span>) <pre class="src src-matlab">open(<span class="org-string">'gravimeter.slx'</span>)
@ -127,8 +143,8 @@ g = 0; <span class="org-comment">% Gravity [m/s2]</span>
</div> </div>
</div> </div>
<div id="outline-container-org0efee8e" class="outline-3"> <div id="outline-container-org09b581d" class="outline-3">
<h3 id="org0efee8e"><span class="section-number-3">1.3</span> System Identification - Without Gravity</h3> <h3 id="org09b581d"><span class="section-number-3">1.3</span> System Identification - Without Gravity</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-1-3">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span> <pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
@ -175,7 +191,7 @@ State-space model with 4 outputs, 3 inputs, and 6 states.
<div id="orgf223fb8" class="figure"> <div id="orgdd275bb" class="figure">
<p><img src="figs/open_loop_tf.png" alt="open_loop_tf.png" /> <p><img src="figs/open_loop_tf.png" alt="open_loop_tf.png" />
</p> </p>
<p><span class="figure-number">Figure 2: </span>Open Loop Transfer Function from 3 Actuators to 4 Accelerometers</p> <p><span class="figure-number">Figure 2: </span>Open Loop Transfer Function from 3 Actuators to 4 Accelerometers</p>
@ -183,8 +199,8 @@ State-space model with 4 outputs, 3 inputs, and 6 states.
</div> </div>
</div> </div>
<div id="outline-container-org98fd3fd" class="outline-3"> <div id="outline-container-org4f091cc" class="outline-3">
<h3 id="org98fd3fd"><span class="section-number-3">1.4</span> System Identification - With Gravity</h3> <h3 id="org4f091cc"><span class="section-number-3">1.4</span> System Identification - With Gravity</h3>
<div class="outline-text-3" id="text-1-4"> <div class="outline-text-3" id="text-1-4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">g = 9.80665; <span class="org-comment">% Gravity [m/s2]</span> <pre class="src src-matlab">g = 9.80665; <span class="org-comment">% Gravity [m/s2]</span>
@ -213,7 +229,7 @@ ans =
</pre> </pre>
<div id="org4d66bba" class="figure"> <div id="org392bf82" class="figure">
<p><img src="figs/open_loop_tf_g.png" alt="open_loop_tf_g.png" /> <p><img src="figs/open_loop_tf_g.png" alt="open_loop_tf_g.png" />
</p> </p>
<p><span class="figure-number">Figure 3: </span>Open Loop Transfer Function from 3 Actuators to 4 Accelerometers with an without gravity</p> <p><span class="figure-number">Figure 3: </span>Open Loop Transfer Function from 3 Actuators to 4 Accelerometers with an without gravity</p>
@ -221,12 +237,12 @@ ans =
</div> </div>
</div> </div>
<div id="outline-container-org6400b2e" class="outline-3"> <div id="outline-container-org7c4effc" class="outline-3">
<h3 id="org6400b2e"><span class="section-number-3">1.5</span> Analytical Model</h3> <h3 id="org7c4effc"><span class="section-number-3">1.5</span> Analytical Model</h3>
<div class="outline-text-3" id="text-1-5"> <div class="outline-text-3" id="text-1-5">
</div> </div>
<div id="outline-container-orgd401b7a" class="outline-4"> <div id="outline-container-org20ea2aa" class="outline-4">
<h4 id="orgd401b7a"><span class="section-number-4">1.5.1</span> Parameters</h4> <h4 id="org20ea2aa"><span class="section-number-4">1.5.1</span> Parameters</h4>
<div class="outline-text-4" id="text-1-5-1"> <div class="outline-text-4" id="text-1-5-1">
<p> <p>
Bode options. Bode options.
@ -258,8 +274,8 @@ Frequency vector.
</div> </div>
</div> </div>
<div id="outline-container-orgdc4cf04" class="outline-4"> <div id="outline-container-org02cb447" class="outline-4">
<h4 id="orgdc4cf04"><span class="section-number-4">1.5.2</span> Generation of the State Space Model</h4> <h4 id="org02cb447"><span class="section-number-4">1.5.2</span> Generation of the State Space Model</h4>
<div class="outline-text-4" id="text-1-5-2"> <div class="outline-text-4" id="text-1-5-2">
<p> <p>
Mass matrix Mass matrix
@ -360,11 +376,11 @@ State-space model with 12 outputs, 6 inputs, and 6 states.
</div> </div>
</div> </div>
<div id="outline-container-org2f36845" class="outline-4"> <div id="outline-container-org9417f40" class="outline-4">
<h4 id="org2f36845"><span class="section-number-4">1.5.3</span> Comparison with the Simscape Model</h4> <h4 id="org9417f40"><span class="section-number-4">1.5.3</span> Comparison with the Simscape Model</h4>
<div class="outline-text-4" id="text-1-5-3"> <div class="outline-text-4" id="text-1-5-3">
<div id="orgd96c232" class="figure"> <div id="orga6f165d" class="figure">
<p><img src="figs/gravimeter_analytical_system_open_loop_models.png" alt="gravimeter_analytical_system_open_loop_models.png" /> <p><img src="figs/gravimeter_analytical_system_open_loop_models.png" alt="gravimeter_analytical_system_open_loop_models.png" />
</p> </p>
<p><span class="figure-number">Figure 4: </span>Comparison of the analytical and the Simscape models</p> <p><span class="figure-number">Figure 4: </span>Comparison of the analytical and the Simscape models</p>
@ -372,8 +388,8 @@ State-space model with 12 outputs, 6 inputs, and 6 states.
</div> </div>
</div> </div>
<div id="outline-container-org028f15a" class="outline-4"> <div id="outline-container-org6c56e64" class="outline-4">
<h4 id="org028f15a"><span class="section-number-4">1.5.4</span> Analysis</h4> <h4 id="org6c56e64"><span class="section-number-4">1.5.4</span> Analysis</h4>
<div class="outline-text-4" id="text-1-5-4"> <div class="outline-text-4" id="text-1-5-4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-comment">% figure</span> <pre class="src src-matlab"><span class="org-comment">% figure</span>
@ -441,8 +457,8 @@ State-space model with 12 outputs, 6 inputs, and 6 states.
</div> </div>
</div> </div>
<div id="outline-container-orgaf39b24" class="outline-4"> <div id="outline-container-orgeb20c08" class="outline-4">
<h4 id="orgaf39b24"><span class="section-number-4">1.5.5</span> Control Section</h4> <h4 id="orgeb20c08"><span class="section-number-4">1.5.5</span> Control Section</h4>
<div class="outline-text-4" id="text-1-5-5"> <div class="outline-text-4" id="text-1-5-5">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">system_dec_10Hz = freqresp(system_dec,2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>10); <pre class="src src-matlab">system_dec_10Hz = freqresp(system_dec,2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>10);
@ -582,8 +598,8 @@ legend(<span class="org-string">'Control OFF'</span>,<span class="org-string">'D
</div> </div>
</div> </div>
<div id="outline-container-orga450746" class="outline-4"> <div id="outline-container-org931022f" class="outline-4">
<h4 id="orga450746"><span class="section-number-4">1.5.6</span> Greshgorin radius</h4> <h4 id="org931022f"><span class="section-number-4">1.5.6</span> Greshgorin radius</h4>
<div class="outline-text-4" id="text-1-5-6"> <div class="outline-text-4" id="text-1-5-6">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">system_dec_freq = freqresp(system_dec,w); <pre class="src src-matlab">system_dec_freq = freqresp(system_dec,w);
@ -629,8 +645,8 @@ ylabel(<span class="org-string">'Greshgorin radius [-]'</span>);
</div> </div>
</div> </div>
<div id="outline-container-orgd41a3f6" class="outline-4"> <div id="outline-container-org1d56ec4" class="outline-4">
<h4 id="orgd41a3f6"><span class="section-number-4">1.5.7</span> Injecting ground motion in the system to have the output</h4> <h4 id="org1d56ec4"><span class="section-number-4">1.5.7</span> Injecting ground motion in the system to have the output</h4>
<div class="outline-text-4" id="text-1-5-7"> <div class="outline-text-4" id="text-1-5-7">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">Fr = logspace(<span class="org-type">-</span>2,3,1e3); <pre class="src src-matlab">Fr = logspace(<span class="org-type">-</span>2,3,1e3);
@ -686,15 +702,15 @@ rot = PHI(<span class="org-type">:</span>,11,11);
</div> </div>
</div> </div>
<div id="outline-container-org866fa85" class="outline-2"> <div id="outline-container-org36d6b85" class="outline-2">
<h2 id="org866fa85"><span class="section-number-2">2</span> Gravimeter - Functions</h2> <h2 id="org36d6b85"><span class="section-number-2">2</span> Gravimeter - Functions</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
</div> </div>
<div id="outline-container-orgcf775e2" class="outline-3"> <div id="outline-container-orgbb4529b" class="outline-3">
<h3 id="orgcf775e2"><span class="section-number-3">2.1</span> <code>align</code></h3> <h3 id="orgbb4529b"><span class="section-number-3">2.1</span> <code>align</code></h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-2-1">
<p> <p>
<a id="orgbb32c31"></a> <a id="orgf2b803a"></a>
</p> </p>
<p> <p>
@ -723,11 +739,11 @@ This Matlab function is accessible <a href="gravimeter/align.m">here</a>.
</div> </div>
<div id="outline-container-org78f2c7e" class="outline-3"> <div id="outline-container-orge0ed8bf" class="outline-3">
<h3 id="org78f2c7e"><span class="section-number-3">2.2</span> <code>pzmap_testCL</code></h3> <h3 id="orge0ed8bf"><span class="section-number-3">2.2</span> <code>pzmap_testCL</code></h3>
<div class="outline-text-3" id="text-2-2"> <div class="outline-text-3" id="text-2-2">
<p> <p>
<a id="org655412c"></a> <a id="orgf08bacf"></a>
</p> </p>
<p> <p>
@ -776,18 +792,18 @@ This Matlab function is accessible <a href="gravimeter/pzmap_testCL.m">here</a>.
</div> </div>
</div> </div>
<div id="outline-container-orgd5b9491" class="outline-2"> <div id="outline-container-org5afd29d" class="outline-2">
<h2 id="orgd5b9491"><span class="section-number-2">3</span> Stewart Platform - Simscape Model</h2> <h2 id="org5afd29d"><span class="section-number-2">3</span> Stewart Platform - Simscape Model</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-3">
</div> </div>
<div id="outline-container-org6d58a07" class="outline-3"> <div id="outline-container-orgff944f3" class="outline-3">
<h3 id="org6d58a07"><span class="section-number-3">3.1</span> Jacobian</h3> <h3 id="orgff944f3"><span class="section-number-3">3.1</span> Jacobian</h3>
<div class="outline-text-3" id="text-3-1"> <div class="outline-text-3" id="text-3-1">
<p> <p>
First, the position of the &ldquo;joints&rdquo; (points of force application) are estimated and the Jacobian computed. First, the position of the &ldquo;joints&rdquo; (points of force application) are estimated and the Jacobian computed.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">open(<span class="org-string">'stewart_platform/drone_platform_jacobian.slx'</span>); <pre class="src src-matlab">open(<span class="org-string">'drone_platform_jacobian.slx'</span>);
</pre> </pre>
</div> </div>
@ -823,8 +839,8 @@ save(<span class="org-string">'./jacobian.mat'</span>, <span class="org-string">
</div> </div>
</div> </div>
<div id="outline-container-org4f58a34" class="outline-3"> <div id="outline-container-org07ffe6c" class="outline-3">
<h3 id="org4f58a34"><span class="section-number-3">3.2</span> Simscape Model</h3> <h3 id="org07ffe6c"><span class="section-number-3">3.2</span> Simscape Model</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">open(<span class="org-string">'stewart_platform/drone_platform.slx'</span>); <pre class="src src-matlab">open(<span class="org-string">'stewart_platform/drone_platform.slx'</span>);
@ -855,8 +871,8 @@ We load the Jacobian.
</div> </div>
</div> </div>
<div id="outline-container-org51c99d1" class="outline-3"> <div id="outline-container-org9aaf0d3" class="outline-3">
<h3 id="org51c99d1"><span class="section-number-3">3.3</span> Identification of the plant</h3> <h3 id="org9aaf0d3"><span class="section-number-3">3.3</span> Identification of the plant</h3>
<div class="outline-text-3" id="text-3-3"> <div class="outline-text-3" id="text-3-3">
<p> <p>
The dynamics is identified from forces applied by each legs to the measured acceleration of the top platform. The dynamics is identified from forces applied by each legs to the measured acceleration of the top platform.
@ -913,32 +929,32 @@ Gl.OutputName = {<span class="org-string">'A1'</span>, <span class="org-string"
</div> </div>
</div> </div>
<div id="outline-container-org84418dd" class="outline-3"> <div id="outline-container-orgb0b01e3" class="outline-3">
<h3 id="org84418dd"><span class="section-number-3">3.4</span> Obtained Dynamics</h3> <h3 id="orgb0b01e3"><span class="section-number-3">3.4</span> Obtained Dynamics</h3>
<div class="outline-text-3" id="text-3-4"> <div class="outline-text-3" id="text-3-4">
<div id="org77aab4b" class="figure"> <div id="org15e1aeb" class="figure">
<p><img src="figs/stewart_platform_translations.png" alt="stewart_platform_translations.png" /> <p><img src="figs/stewart_platform_translations.png" alt="stewart_platform_translations.png" />
</p> </p>
<p><span class="figure-number">Figure 5: </span>Stewart Platform Plant from forces applied by the legs to the acceleration of the platform</p> <p><span class="figure-number">Figure 5: </span>Stewart Platform Plant from forces applied by the legs to the acceleration of the platform</p>
</div> </div>
<div id="org9222b17" class="figure"> <div id="org1a9b1c6" class="figure">
<p><img src="figs/stewart_platform_rotations.png" alt="stewart_platform_rotations.png" /> <p><img src="figs/stewart_platform_rotations.png" alt="stewart_platform_rotations.png" />
</p> </p>
<p><span class="figure-number">Figure 6: </span>Stewart Platform Plant from torques applied by the legs to the angular acceleration of the platform</p> <p><span class="figure-number">Figure 6: </span>Stewart Platform Plant from torques applied by the legs to the angular acceleration of the platform</p>
</div> </div>
<div id="org9d77253" class="figure"> <div id="org2c0cea0" class="figure">
<p><img src="figs/stewart_platform_legs.png" alt="stewart_platform_legs.png" /> <p><img src="figs/stewart_platform_legs.png" alt="stewart_platform_legs.png" />
</p> </p>
<p><span class="figure-number">Figure 7: </span>Stewart Platform Plant from forces applied by the legs to displacement of the legs</p> <p><span class="figure-number">Figure 7: </span>Stewart Platform Plant from forces applied by the legs to displacement of the legs</p>
</div> </div>
<div id="org4cce08b" class="figure"> <div id="org46a471a" class="figure">
<p><img src="figs/stewart_platform_transmissibility.png" alt="stewart_platform_transmissibility.png" /> <p><img src="figs/stewart_platform_transmissibility.png" alt="stewart_platform_transmissibility.png" />
</p> </p>
<p><span class="figure-number">Figure 8: </span>Transmissibility</p> <p><span class="figure-number">Figure 8: </span>Transmissibility</p>
@ -946,8 +962,8 @@ Gl.OutputName = {<span class="org-string">'A1'</span>, <span class="org-string"
</div> </div>
</div> </div>
<div id="outline-container-org315ca7e" class="outline-3"> <div id="outline-container-org1de55ce" class="outline-3">
<h3 id="org315ca7e"><span class="section-number-3">3.5</span> Real Approximation of \(G\) at the decoupling frequency</h3> <h3 id="org1de55ce"><span class="section-number-3">3.5</span> Real Approximation of \(G\) at the decoupling frequency</h3>
<div class="outline-text-3" id="text-3-5"> <div class="outline-text-3" id="text-3-5">
<p> <p>
Let&rsquo;s compute a real approximation of the complex matrix \(H_1\) which corresponds to the the transfer function \(G_c(j\omega_c)\) from forces applied by the actuators to the measured acceleration of the top platform evaluated at the frequency \(\omega_c\). Let&rsquo;s compute a real approximation of the complex matrix \(H_1\) which corresponds to the the transfer function \(G_c(j\omega_c)\) from forces applied by the actuators to the measured acceleration of the top platform evaluated at the frequency \(\omega_c\).
@ -973,8 +989,8 @@ H1 = inv(D<span class="org-type">*</span>real(H1<span class="org-type">'*</span>
</div> </div>
</div> </div>
<div id="outline-container-org91c0ed9" class="outline-3"> <div id="outline-container-org53d60e1" class="outline-3">
<h3 id="org91c0ed9"><span class="section-number-3">3.6</span> Verification of the decoupling using the &ldquo;Gershgorin Radii&rdquo;</h3> <h3 id="org53d60e1"><span class="section-number-3">3.6</span> Verification of the decoupling using the &ldquo;Gershgorin Radii&rdquo;</h3>
<div class="outline-text-3" id="text-3-6"> <div class="outline-text-3" id="text-3-6">
<p> <p>
First, the Singular Value Decomposition of \(H_1\) is performed: First, the Singular Value Decomposition of \(H_1\) is performed:
@ -1042,7 +1058,7 @@ H = abs(squeeze(freqresp(Gj, freqs, <span class="org-string">'Hz'</span>)));
</div> </div>
<div id="orgda863a3" class="figure"> <div id="org6065705" class="figure">
<p><img src="figs/simscape_model_gershgorin_radii.png" alt="simscape_model_gershgorin_radii.png" /> <p><img src="figs/simscape_model_gershgorin_radii.png" alt="simscape_model_gershgorin_radii.png" />
</p> </p>
<p><span class="figure-number">Figure 9: </span>Gershgorin Radii of the Coupled and Decoupled plants</p> <p><span class="figure-number">Figure 9: </span>Gershgorin Radii of the Coupled and Decoupled plants</p>
@ -1050,8 +1066,8 @@ H = abs(squeeze(freqresp(Gj, freqs, <span class="org-string">'Hz'</span>)));
</div> </div>
</div> </div>
<div id="outline-container-org0bd0b38" class="outline-3"> <div id="outline-container-org40c1d24" class="outline-3">
<h3 id="org0bd0b38"><span class="section-number-3">3.7</span> Decoupled Plant</h3> <h3 id="org40c1d24"><span class="section-number-3">3.7</span> Decoupled Plant</h3>
<div class="outline-text-3" id="text-3-7"> <div class="outline-text-3" id="text-3-7">
<p> <p>
Let&rsquo;s see the bode plot of the decoupled plant \(G_d(s)\). Let&rsquo;s see the bode plot of the decoupled plant \(G_d(s)\).
@ -1059,14 +1075,14 @@ Let&rsquo;s see the bode plot of the decoupled plant \(G_d(s)\).
</p> </p>
<div id="org6ba4690" class="figure"> <div id="orgbfa07c9" class="figure">
<p><img src="figs/simscape_model_decoupled_plant_svd.png" alt="simscape_model_decoupled_plant_svd.png" /> <p><img src="figs/simscape_model_decoupled_plant_svd.png" alt="simscape_model_decoupled_plant_svd.png" />
</p> </p>
<p><span class="figure-number">Figure 10: </span>Decoupled Plant using SVD</p> <p><span class="figure-number">Figure 10: </span>Decoupled Plant using SVD</p>
</div> </div>
<div id="org5342ca6" class="figure"> <div id="org28978a4" class="figure">
<p><img src="figs/simscape_model_decoupled_plant_jacobian.png" alt="simscape_model_decoupled_plant_jacobian.png" /> <p><img src="figs/simscape_model_decoupled_plant_jacobian.png" alt="simscape_model_decoupled_plant_jacobian.png" />
</p> </p>
<p><span class="figure-number">Figure 11: </span>Decoupled Plant using the Jacobian</p> <p><span class="figure-number">Figure 11: </span>Decoupled Plant using the Jacobian</p>
@ -1074,8 +1090,8 @@ Let&rsquo;s see the bode plot of the decoupled plant \(G_d(s)\).
</div> </div>
</div> </div>
<div id="outline-container-org4b22e32" class="outline-3"> <div id="outline-container-orgdfcd158" class="outline-3">
<h3 id="org4b22e32"><span class="section-number-3">3.8</span> Diagonal Controller</h3> <h3 id="orgdfcd158"><span class="section-number-3">3.8</span> Diagonal Controller</h3>
<div class="outline-text-3" id="text-3-8"> <div class="outline-text-3" id="text-3-8">
<p> <p>
The controller \(K\) is a diagonal controller consisting a low pass filters with a crossover frequency \(\omega_c\) and a DC gain \(C_g\). The controller \(K\) is a diagonal controller consisting a low pass filters with a crossover frequency \(\omega_c\) and a DC gain \(C_g\).
@ -1091,8 +1107,8 @@ K = eye(6)<span class="org-type">*</span>C_g<span class="org-type">/</span>(s<sp
</div> </div>
</div> </div>
<div id="outline-container-orgac4cf9b" class="outline-3"> <div id="outline-container-org25e3b35" class="outline-3">
<h3 id="orgac4cf9b"><span class="section-number-3">3.9</span> Centralized Control</h3> <h3 id="org25e3b35"><span class="section-number-3">3.9</span> Centralized Control</h3>
<div class="outline-text-3" id="text-3-9"> <div class="outline-text-3" id="text-3-9">
<p> <p>
The control diagram for the centralized control is shown below. The control diagram for the centralized control is shown below.
@ -1116,8 +1132,8 @@ The Jacobian is used to convert forces in the cartesian frame to forces applied
</div> </div>
</div> </div>
<div id="outline-container-org4ae317c" class="outline-3"> <div id="outline-container-org4d83793" class="outline-3">
<h3 id="org4ae317c"><span class="section-number-3">3.10</span> SVD Control</h3> <h3 id="org4d83793"><span class="section-number-3">3.10</span> SVD Control</h3>
<div class="outline-text-3" id="text-3-10"> <div class="outline-text-3" id="text-3-10">
<p> <p>
The SVD control architecture is shown below. The SVD control architecture is shown below.
@ -1140,8 +1156,8 @@ SVD Control
</div> </div>
</div> </div>
<div id="outline-container-orgabc897d" class="outline-3"> <div id="outline-container-org7cece79" class="outline-3">
<h3 id="orgabc897d"><span class="section-number-3">3.11</span> Results</h3> <h3 id="org7cece79"><span class="section-number-3">3.11</span> Results</h3>
<div class="outline-text-3" id="text-3-11"> <div class="outline-text-3" id="text-3-11">
<p> <p>
Let&rsquo;s first verify the stability of the closed-loop systems: Let&rsquo;s first verify the stability of the closed-loop systems:
@ -1171,11 +1187,11 @@ ans =
<p> <p>
The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure <a href="#org92a495c">14</a>. The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure <a href="#org62fae46">14</a>.
</p> </p>
<div id="org92a495c" class="figure"> <div id="org62fae46" class="figure">
<p><img src="figs/stewart_platform_simscape_cl_transmissibility.png" alt="stewart_platform_simscape_cl_transmissibility.png" /> <p><img src="figs/stewart_platform_simscape_cl_transmissibility.png" alt="stewart_platform_simscape_cl_transmissibility.png" />
</p> </p>
<p><span class="figure-number">Figure 14: </span>Obtained Transmissibility</p> <p><span class="figure-number">Figure 14: </span>Obtained Transmissibility</p>
@ -1183,10 +1199,305 @@ The obtained transmissibility in Open-loop, for the centralized control as well
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org8b11aba" class="outline-2">
<h2 id="org8b11aba"><span class="section-number-2">4</span> Stewart Platform - Analytical Model</h2>
<div class="outline-text-2" id="text-4">
</div>
<div id="outline-container-org2a175f6" class="outline-3">
<h3 id="org2a175f6"><span class="section-number-3">4.1</span> Characteristics</h3>
<div class="outline-text-3" id="text-4-1">
<div class="org-src-container">
<pre class="src src-matlab">L = 0.055;
Zc = 0;
m = 0.2;
k = 1e3;
c = 2<span class="org-type">*</span>0.1<span class="org-type">*</span>sqrt(k<span class="org-type">*</span>m);
Rx = 0.04;
Rz = 0.04;
Ix = m<span class="org-type">*</span>Rx<span class="org-type">^</span>2;
Iy = m<span class="org-type">*</span>Rx<span class="org-type">^</span>2;
Iz = m<span class="org-type">*</span>Rz<span class="org-type">^</span>2;
</pre>
</div>
</div>
</div>
<div id="outline-container-org9efa4f4" class="outline-3">
<h3 id="org9efa4f4"><span class="section-number-3">4.2</span> Mass Matrix</h3>
<div class="outline-text-3" id="text-4-2">
<div class="org-src-container">
<pre class="src src-matlab">M = m<span class="org-type">*</span>[1 0 0 0 Zc 0;
0 1 0 <span class="org-type">-</span>Zc 0 0;
0 0 1 0 0 0;
0 <span class="org-type">-</span>Zc 0 Rx<span class="org-type">^</span>2<span class="org-type">+</span>Zc<span class="org-type">^</span>2 0 0;
Zc 0 0 0 Rx<span class="org-type">^</span>2<span class="org-type">+</span>Zc<span class="org-type">^</span>2 0;
0 0 0 0 0 Rz<span class="org-type">^</span>2];
</pre>
</div>
</div>
</div>
<div id="outline-container-org97bc497" class="outline-3">
<h3 id="org97bc497"><span class="section-number-3">4.3</span> Jacobian Matrix</h3>
<div class="outline-text-3" id="text-4-3">
<div class="org-src-container">
<pre class="src src-matlab">Bj=1<span class="org-type">/</span>sqrt(6)<span class="org-type">*</span>[ 1 1 <span class="org-type">-</span>2 1 1 <span class="org-type">-</span>2;
sqrt<span class="org-type">(3) -sqrt(3) 0 sqrt(3) -sqrt(3) 0;</span>
sqrt<span class="org-type">(2) sqrt(2) sqrt(2) sqrt(2) sqrt(2) sqrt(2);</span>
0 0 L L <span class="org-type">-</span>L <span class="org-type">-</span>L;
<span class="org-type">-</span>L<span class="org-type">*</span>2<span class="org-type">/</span>sqrt(3) <span class="org-type">-</span>L<span class="org-type">*</span>2<span class="org-type">/</span>sqrt(3) L<span class="org-type">/</span>sqrt(3) L<span class="org-type">/</span>sqrt(3) L<span class="org-type">/</span>sqrt(3) L<span class="org-type">/</span>sqrt(3);
L<span class="org-type">*</span>sqrt(2) <span class="org-type">-</span>L<span class="org-type">*</span>sqrt(2) L<span class="org-type">*</span>sqrt(2) <span class="org-type">-</span>L<span class="org-type">*</span>sqrt(2) L<span class="org-type">*</span>sqrt(2) <span class="org-type">-</span>L<span class="org-type">*</span>sqrt(2)];
</pre>
</div>
</div>
</div>
<div id="outline-container-org7c9679d" class="outline-3">
<h3 id="org7c9679d"><span class="section-number-3">4.4</span> Stifnness matrix and Damping matrix</h3>
<div class="outline-text-3" id="text-4-4">
<div class="org-src-container">
<pre class="src src-matlab">kv = k<span class="org-type">/</span>3; <span class="org-comment">% [N/m]</span>
kh = 0.5<span class="org-type">*</span>k<span class="org-type">/</span>3; <span class="org-comment">% [N/m]</span>
K = diag([3<span class="org-type">*</span>kh,3<span class="org-type">*</span>kh,3<span class="org-type">*</span>kv,3<span class="org-type">*</span>kv<span class="org-type">*</span>Rx<span class="org-type">^</span>2<span class="org-type">/</span>2,3<span class="org-type">*</span>kv<span class="org-type">*</span>Rx<span class="org-type">^</span>2<span class="org-type">/</span>2,3<span class="org-type">*</span>kh<span class="org-type">*</span>Rx<span class="org-type">^</span>2]); <span class="org-comment">% Stiffness Matrix</span>
C = c<span class="org-type">*</span>K<span class="org-type">/</span>100000; <span class="org-comment">% Damping Matrix</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org00e8691" class="outline-3">
<h3 id="org00e8691"><span class="section-number-3">4.5</span> State Space System</h3>
<div class="outline-text-3" id="text-4-5">
<div class="org-src-container">
<pre class="src src-matlab">A = [zeros(6) eye(6); <span class="org-type">-</span>M<span class="org-type">\</span>K <span class="org-type">-</span>M<span class="org-type">\</span>C];
Bw = [zeros(6); <span class="org-type">-</span>eye(6)];
Bu = [zeros(6); M<span class="org-type">\</span>Bj];
Co = [<span class="org-type">-</span>M<span class="org-type">\</span>K <span class="org-type">-</span>M<span class="org-type">\</span>C];
D = [zeros(6) M<span class="org-type">\</span>Bj];
ST = ss(A,[Bw Bu],Co,D);
</pre>
</div>
<ul class="org-ul">
<li>OUT 1-6: 6 dof</li>
<li>IN 1-6 : ground displacement in the directions of the legs</li>
<li>IN 7-12: forces in the actuators.</li>
</ul>
<div class="org-src-container">
<pre class="src src-matlab">ST.StateName = {<span class="org-string">'x'</span>;<span class="org-string">'y'</span>;<span class="org-string">'z'</span>;<span class="org-string">'theta_x'</span>;<span class="org-string">'theta_y'</span>;<span class="org-string">'theta_z'</span>;...
<span class="org-string">'dx'</span>;<span class="org-string">'dy'</span>;<span class="org-string">'dz'</span>;<span class="org-string">'dtheta_x'</span>;<span class="org-string">'dtheta_y'</span>;<span class="org-string">'dtheta_z'</span>};
ST.InputName = {<span class="org-string">'w1'</span>;<span class="org-string">'w2'</span>;<span class="org-string">'w3'</span>;<span class="org-string">'w4'</span>;<span class="org-string">'w5'</span>;<span class="org-string">'w6'</span>;...
<span class="org-string">'u1'</span>;<span class="org-string">'u2'</span>;<span class="org-string">'u3'</span>;<span class="org-string">'u4'</span>;<span class="org-string">'u5'</span>;<span class="org-string">'u6'</span>};
ST.OutputName = {<span class="org-string">'ax'</span>;<span class="org-string">'ay'</span>;<span class="org-string">'az'</span>;<span class="org-string">'atheta_x'</span>;<span class="org-string">'atheta_y'</span>;<span class="org-string">'atheta_z'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-org8a70996" class="outline-3">
<h3 id="org8a70996"><span class="section-number-3">4.6</span> Transmissibility</h3>
<div class="outline-text-3" id="text-4-6">
<div class="org-src-container">
<pre class="src src-matlab">TR=ST<span class="org-type">*</span>[eye(6); zeros(6)];
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>
subplot(231)
bodemag(TR(1,1),opts);
subplot(232)
bodemag(TR(2,2),opts);
subplot(233)
bodemag(TR(3,3),opts);
subplot(234)
bodemag(TR(4,4),opts);
subplot(235)
bodemag(TR(5,5),opts);
subplot(236)
bodemag(TR(6,6),opts);
</pre>
</div>
<div id="org6ce913c" class="figure">
<p><img src="figs/stewart_platform_analytical_transmissibility.png" alt="stewart_platform_analytical_transmissibility.png" />
</p>
<p><span class="figure-number">Figure 15: </span>Transmissibility</p>
</div>
</div>
</div>
<div id="outline-container-org12c95c9" class="outline-3">
<h3 id="org12c95c9"><span class="section-number-3">4.7</span> Real approximation of \(G(j\omega)\) at decoupling frequency</h3>
<div class="outline-text-3" id="text-4-7">
<div class="org-src-container">
<pre class="src src-matlab">sys1 = ST<span class="org-type">*</span>[zeros(6); eye(6)]; <span class="org-comment">% take only the forces inputs</span>
dec_fr = 20;
H1 = evalfr(sys1,<span class="org-constant">j</span><span class="org-type">*</span>2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>dec_fr);
H2 = H1;
D = pinv(real(H2<span class="org-type">'*</span>H2));
H1 = inv(D<span class="org-type">*</span>real(H2<span class="org-type">'*</span>diag(exp(<span class="org-constant">j</span><span class="org-type">*</span>angle(diag(H2<span class="org-type">*</span>D<span class="org-type">*</span>H2<span class="org-type">.'</span>))<span class="org-type">/</span>2)))) ;
[U,S,V] = svd(H1);
wf = logspace(<span class="org-type">-</span>1,2,1000);
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(wf)</span>
H = abs(evalfr(sys1,<span class="org-constant">j</span><span class="org-type">*</span>2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>wf(<span class="org-constant">i</span>)));
H_dec = abs(evalfr(U<span class="org-type">'*</span>sys1<span class="org-type">*</span>V,<span class="org-constant">j</span><span class="org-type">*</span>2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>wf(<span class="org-constant">i</span>)));
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">j</span></span> = <span class="org-constant">1:size(H,2)</span>
g_r1(<span class="org-constant">i</span>,<span class="org-constant">j</span>) = (sum(H(<span class="org-constant">j</span>,<span class="org-type">:</span>))<span class="org-type">-</span>H(<span class="org-constant">j</span>,<span class="org-constant">j</span>))<span class="org-type">/</span>H(<span class="org-constant">j</span>,<span class="org-constant">j</span>);
g_r2(<span class="org-constant">i</span>,<span class="org-constant">j</span>) = (sum(H_dec(<span class="org-constant">j</span>,<span class="org-type">:</span>))<span class="org-type">-</span>H_dec(<span class="org-constant">j</span>,<span class="org-constant">j</span>))<span class="org-type">/</span>H_dec(<span class="org-constant">j</span>,<span class="org-constant">j</span>);
<span class="org-comment">% keyboard</span>
<span class="org-keyword">end</span>
g_lim(<span class="org-constant">i</span>) = 0.5;
<span class="org-keyword">end</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgc58b81c" class="outline-3">
<h3 id="orgc58b81c"><span class="section-number-3">4.8</span> Coupled and Decoupled Plant &ldquo;Gershgorin Radii&rdquo;</h3>
<div class="outline-text-3" id="text-4-8">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
title(<span class="org-string">'Coupled plant'</span>)
loglog(wf,g_r1(<span class="org-type">:</span>,1),wf,g_r1(<span class="org-type">:</span>,2),wf,g_r1(<span class="org-type">:</span>,3),wf,g_r1(<span class="org-type">:</span>,4),wf,g_r1(<span class="org-type">:</span>,5),wf,g_r1(<span class="org-type">:</span>,6),wf,g_lim,<span class="org-string">'--'</span>);
legend(<span class="org-string">'$a_x$'</span>,<span class="org-string">'$a_y$'</span>,<span class="org-string">'$a_z$'</span>,<span class="org-string">'$\theta_x$'</span>,<span class="org-string">'$\theta_y$'</span>,<span class="org-string">'$\theta_z$'</span>,<span class="org-string">'Limit'</span>);
xlabel(<span class="org-string">'Frequency (Hz)'</span>); ylabel(<span class="org-string">'Gershgorin Radii'</span>)
</pre>
</div>
<div id="org20fc2fd" class="figure">
<p><img src="figs/gershorin_raddii_coupled_analytical.png" alt="gershorin_raddii_coupled_analytical.png" />
</p>
<p><span class="figure-number">Figure 16: </span>Gershorin Raddi for the coupled plant</p>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
title(<span class="org-string">'Decoupled plant (10 Hz)'</span>)
loglog(wf,g_r2(<span class="org-type">:</span>,1),wf,g_r2(<span class="org-type">:</span>,2),wf,g_r2(<span class="org-type">:</span>,3),wf,g_r2(<span class="org-type">:</span>,4),wf,g_r2(<span class="org-type">:</span>,5),wf,g_r2(<span class="org-type">:</span>,6),wf,g_lim,<span class="org-string">'--'</span>);
legend(<span class="org-string">'$S_1$'</span>,<span class="org-string">'$S_2$'</span>,<span class="org-string">'$S_3$'</span>,<span class="org-string">'$S_4$'</span>,<span class="org-string">'$S_5$'</span>,<span class="org-string">'$S_6$'</span>,<span class="org-string">'Limit'</span>);
xlabel(<span class="org-string">'Frequency (Hz)'</span>); ylabel(<span class="org-string">'Gershgorin Radii'</span>)
</pre>
</div>
<div id="org586d327" class="figure">
<p><img src="figs/gershorin_raddii_decoupled_analytical.png" alt="gershorin_raddii_decoupled_analytical.png" />
</p>
<p><span class="figure-number">Figure 17: </span>Gershorin Raddi for the decoupled plant</p>
</div>
</div>
</div>
<div id="outline-container-org2ba91f6" class="outline-3">
<h3 id="org2ba91f6"><span class="section-number-3">4.9</span> Decoupled Plant</h3>
<div class="outline-text-3" id="text-4-9">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
bodemag(U<span class="org-type">'*</span>sys1<span class="org-type">*</span>V,opts)
</pre>
</div>
<div id="org5cd203f" class="figure">
<p><img src="figs/stewart_platform_analytical_decoupled_plant.png" alt="stewart_platform_analytical_decoupled_plant.png" />
</p>
<p><span class="figure-number">Figure 18: </span>Decoupled Plant</p>
</div>
</div>
</div>
<div id="outline-container-orgc73a283" class="outline-3">
<h3 id="orgc73a283"><span class="section-number-3">4.10</span> Controller</h3>
<div class="outline-text-3" id="text-4-10">
<div class="org-src-container">
<pre class="src src-matlab">fc = 2<span class="org-type">*</span><span class="org-constant">pi</span><span class="org-type">*</span>0.1; <span class="org-comment">% Crossover Frequency [rad/s]</span>
c_gain = 50; <span class="org-comment">%</span>
cont = eye(6)<span class="org-type">*</span>c_gain<span class="org-type">/</span>(s<span class="org-type">+</span>fc);
</pre>
</div>
</div>
</div>
<div id="outline-container-org9c82ee4" class="outline-3">
<h3 id="org9c82ee4"><span class="section-number-3">4.11</span> Closed Loop System</h3>
<div class="outline-text-3" id="text-4-11">
<div class="org-src-container">
<pre class="src src-matlab">FEEDIN = [7<span class="org-type">:</span>12]; <span class="org-comment">% Input of controller</span>
FEEDOUT = [1<span class="org-type">:</span>6]; <span class="org-comment">% Output of controller</span>
</pre>
</div>
<p>
Centralized Control
</p>
<div class="org-src-container">
<pre class="src src-matlab">STcen = feedback(ST, inv(Bj)<span class="org-type">*</span>cont, FEEDIN, FEEDOUT);
TRcen = STcen<span class="org-type">*</span>[eye(6); zeros(6)];
</pre>
</div>
<p>
SVD Control
</p>
<div class="org-src-container">
<pre class="src src-matlab">STsvd = feedback(ST, pinv(V<span class="org-type">'</span>)<span class="org-type">*</span>cont<span class="org-type">*</span>pinv(U), FEEDIN, FEEDOUT);
TRsvd = STsvd<span class="org-type">*</span>[eye(6); zeros(6)];
</pre>
</div>
</div>
</div>
<div id="outline-container-org80cd406" class="outline-3">
<h3 id="org80cd406"><span class="section-number-3">4.12</span> Results</h3>
<div class="outline-text-3" id="text-4-12">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>
subplot(231)
bodemag(TR(1,1),TRcen(1,1),TRsvd(1,1),opts)
legend(<span class="org-string">'OL'</span>,<span class="org-string">'Centralized'</span>,<span class="org-string">'SVD'</span>)
subplot(232)
bodemag(TR(2,2),TRcen(2,2),TRsvd(2,2),opts)
legend(<span class="org-string">'OL'</span>,<span class="org-string">'Centralized'</span>,<span class="org-string">'SVD'</span>)
subplot(233)
bodemag(TR(3,3),TRcen(3,3),TRsvd(3,3),opts)
legend(<span class="org-string">'OL'</span>,<span class="org-string">'Centralized'</span>,<span class="org-string">'SVD'</span>)
subplot(234)
bodemag(TR(4,4),TRcen(4,4),TRsvd(4,4),opts)
legend(<span class="org-string">'OL'</span>,<span class="org-string">'Centralized'</span>,<span class="org-string">'SVD'</span>)
subplot(235)
bodemag(TR(5,5),TRcen(5,5),TRsvd(5,5),opts)
legend(<span class="org-string">'OL'</span>,<span class="org-string">'Centralized'</span>,<span class="org-string">'SVD'</span>)
subplot(236)
bodemag(TR(6,6),TRcen(6,6),TRsvd(6,6),opts)
legend(<span class="org-string">'OL'</span>,<span class="org-string">'Centralized'</span>,<span class="org-string">'SVD'</span>)
</pre>
</div>
<div id="orgfadf6e5" class="figure">
<p><img src="figs/stewart_platform_analytical_svd_cen_comp.png" alt="stewart_platform_analytical_svd_cen_comp.png" />
</p>
<p><span class="figure-number">Figure 19: </span>Comparison of the obtained transmissibility for the centralized control and the SVD control</p>
</div>
</div>
</div>
</div>
</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-10-05 lun. 18:28</p> <p class="date">Created: 2020-10-09 ven. 16:21</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -695,10 +695,15 @@ This Matlab function is accessible [[file:gravimeter/pzmap_testCL.m][here]].
<<matlab-init>> <<matlab-init>>
#+end_src #+end_src
#+begin_src matlab :tangle no
addpath('stewart_platform');
addpath('stewart_platform/STEP');
#+end_src
** Jacobian ** Jacobian
First, the position of the "joints" (points of force application) are estimated and the Jacobian computed. First, the position of the "joints" (points of force application) are estimated and the Jacobian computed.
#+begin_src matlab #+begin_src matlab
open('stewart_platform/drone_platform_jacobian.slx'); open('drone_platform_jacobian.slx');
#+end_src #+end_src
#+begin_src matlab #+begin_src matlab
@ -731,14 +736,14 @@ First, the position of the "joints" (points of force application) are estimated
** Simscape Model ** Simscape Model
#+begin_src matlab #+begin_src matlab
open('stewart_platform/drone_platform.slx'); open('drone_platform.slx');
#+end_src #+end_src
Definition of spring parameters Definition of spring parameters
#+begin_src matlab #+begin_src matlab
kx = 50; % [N/m] kx = 0.5*1e3/3; % [N/m]
ky = 50; ky = 0.5*1e3/3;
kz = 50; kz = 1e3/3;
cx = 0.025; % [Nm/rad] cx = 0.025; % [Nm/rad]
cy = 0.025; cy = 0.025;
@ -876,14 +881,14 @@ Thanks to the Jacobian, we compute the transfer functions in the frame of the le
ax1 = subplot(2, 1, 1); ax1 = subplot(2, 1, 1);
hold on; hold on;
for ch_i = 1:6
plot(freqs, abs(squeeze(freqresp(Gl(sprintf('A%i', ch_i), sprintf('F%i', ch_i)), freqs, 'Hz'))));
end
for out_i = 1:5 for out_i = 1:5
for in_i = i+1:6 for in_i = i+1:6
plot(freqs, abs(squeeze(freqresp(Gl(sprintf('A%i', out_i), sprintf('F%i', in_i)), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2]); plot(freqs, abs(squeeze(freqresp(Gl(sprintf('A%i', out_i), sprintf('F%i', in_i)), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2]);
end end
end end
for ch_i = 1:6
plot(freqs, abs(squeeze(freqresp(Gl(sprintf('A%i', ch_i), sprintf('F%i', ch_i)), freqs, 'Hz'))));
end
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
@ -918,9 +923,13 @@ Thanks to the Jacobian, we compute the transfer functions in the frame of the le
ax1 = subplot(2, 1, 1); ax1 = subplot(2, 1, 1);
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(Gx('Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', '$D_x/D_{w,x}$'); % plot(freqs, abs(squeeze(freqresp(Gx('Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', '$D_x/D_{w,x}$');
plot(freqs, abs(squeeze(freqresp(Gx('Ay', 'Dwy')/s^2, freqs, 'Hz'))), 'DisplayName', '$D_y/D_{w,y}$'); % plot(freqs, abs(squeeze(freqresp(Gx('Ay', 'Dwy')/s^2, freqs, 'Hz'))), 'DisplayName', '$D_y/D_{w,y}$');
plot(freqs, abs(squeeze(freqresp(Gx('Az', 'Dwz')/s^2, freqs, 'Hz'))), 'DisplayName', '$D_z/D_{w,z}$'); % plot(freqs, abs(squeeze(freqresp(Gx('Az', 'Dwz')/s^2, freqs, 'Hz'))), 'DisplayName', '$D_z/D_{w,z}$');
set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(TR(1,1), freqs, 'Hz'))), '--', 'DisplayName', '$D_x/D_{w,x}$');
plot(freqs, abs(squeeze(freqresp(TR(2,2), freqs, 'Hz'))), '--', 'DisplayName', '$D_x/D_{w,x}$');
plot(freqs, abs(squeeze(freqresp(TR(3,3), freqs, 'Hz'))), '--', 'DisplayName', '$D_x/D_{w,x}$');
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Transmissibility - Translations'); xlabel('Frequency [Hz]'); ylabel('Transmissibility - Translations'); xlabel('Frequency [Hz]');
@ -928,9 +937,13 @@ Thanks to the Jacobian, we compute the transfer functions in the frame of the le
ax2 = subplot(2, 1, 2); ax2 = subplot(2, 1, 2);
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(Gx('Arx', 'Rwx')/s^2, freqs, 'Hz'))), 'DisplayName', '$R_x/R_{w,x}$'); % plot(freqs, abs(squeeze(freqresp(Gx('Arx', 'Rwx')/s^2, freqs, 'Hz'))), 'DisplayName', '$R_x/R_{w,x}$');
plot(freqs, abs(squeeze(freqresp(Gx('Ary', 'Rwy')/s^2, freqs, 'Hz'))), 'DisplayName', '$R_y/R_{w,y}$'); % plot(freqs, abs(squeeze(freqresp(Gx('Ary', 'Rwy')/s^2, freqs, 'Hz'))), 'DisplayName', '$R_y/R_{w,y}$');
plot(freqs, abs(squeeze(freqresp(Gx('Arz', 'Rwz')/s^2, freqs, 'Hz'))), 'DisplayName', '$R_z/R_{w,z}$'); % plot(freqs, abs(squeeze(freqresp(Gx('Arz', 'Rwz')/s^2, freqs, 'Hz'))), 'DisplayName', '$R_z/R_{w,z}$');
set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(TR(4,4), freqs, 'Hz'))), '--', 'DisplayName', '$D_x/D_{w,x}$');
plot(freqs, abs(squeeze(freqresp(TR(5,5), freqs, 'Hz'))), '--', 'DisplayName', '$D_x/D_{w,x}$');
plot(freqs, abs(squeeze(freqresp(TR(6,6), freqs, 'Hz'))), '--', 'DisplayName', '$D_x/D_{w,x}$');
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Transmissibility - Rotations'); xlabel('Frequency [Hz]'); ylabel('Transmissibility - Rotations'); xlabel('Frequency [Hz]');
@ -1124,7 +1137,7 @@ The control diagram for the centralized control is shown below.
The controller $K_c$ is "working" in an cartesian frame. The controller $K_c$ is "working" in an cartesian frame.
The Jacobian is used to convert forces in the cartesian frame to forces applied by the actuators. The Jacobian is used to convert forces in the cartesian frame to forces applied by the actuators.
#+begin_src latex :file centralized_control.pdf #+begin_src latex :file centralized_control.pdf :tangle no
\begin{tikzpicture} \begin{tikzpicture}
\node[block={2cm}{1.5cm}] (G) {$G$}; \node[block={2cm}{1.5cm}] (G) {$G$};
\node[block, below right=0.6 and -0.5 of G] (K) {$K_c$}; \node[block, below right=0.6 and -0.5 of G] (K) {$K_c$};
@ -1154,7 +1167,7 @@ The Jacobian is used to convert forces in the cartesian frame to forces applied
The SVD control architecture is shown below. The SVD control architecture is shown below.
The matrices $U$ and $V$ are used to decoupled the plant $G$. The matrices $U$ and $V$ are used to decoupled the plant $G$.
#+begin_src latex :file svd_control.pdf #+begin_src latex :file svd_control.pdf :tangle no
\begin{tikzpicture} \begin{tikzpicture}
\node[block={2cm}{1.5cm}] (G) {$G$}; \node[block={2cm}{1.5cm}] (G) {$G$};
\node[block, below right=0.6 and 0 of G] (U) {$U^{-1}$}; \node[block, below right=0.6 and 0 of G] (U) {$U^{-1}$};
@ -1201,7 +1214,7 @@ Let's first verify the stability of the closed-loop systems:
#+RESULTS: #+RESULTS:
: ans = : ans =
: logical : logical
: 1 : 0
The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure [[fig:stewart_platform_simscape_cl_transmissibility]]. The obtained transmissibility in Open-loop, for the centralized control as well as for the SVD control are shown in Figure [[fig:stewart_platform_simscape_cl_transmissibility]].
@ -1278,7 +1291,7 @@ The obtained transmissibility in Open-loop, for the centralized control as well
#+RESULTS: #+RESULTS:
[[file:figs/stewart_platform_simscape_cl_transmissibility.png]] [[file:figs/stewart_platform_simscape_cl_transmissibility.png]]
* Stewart Platform - Analytical Model :noexport: * Stewart Platform - Analytical Model
** Matlab Init :noexport:ignore: ** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>> <<matlab-dir>>
@ -1300,17 +1313,17 @@ The obtained transmissibility in Open-loop, for the centralized control as well
** Characteristics ** Characteristics
#+begin_src matlab #+begin_src matlab
L = 0.055; L = 0.055; % Leg length [m]
Zc = 0; Zc = 0; % ?
m = 0.2; m = 0.2; % Top platform mass [m]
k = 1e3; k = 1e3; % Total vertical stiffness [N/m]
c = 2*0.1*sqrt(k*m); c = 2*0.1*sqrt(k*m); % Damping ? [N/(m/s)]
Rx = 0.04; Rx = 0.04; % ?
Rz = 0.04; Rz = 0.04; % ?
Ix = m*Rx^2; Ix = m*Rx^2; % ?
Iy = m*Rx^2; Iy = m*Rx^2; % ?
Iz = m*Rz^2; Iz = m*Rz^2; % ?
#+end_src #+end_src
** Mass Matrix ** Mass Matrix
@ -1333,22 +1346,24 @@ The obtained transmissibility in Open-loop, for the centralized control as well
L*sqrt(2) -L*sqrt(2) L*sqrt(2) -L*sqrt(2) L*sqrt(2) -L*sqrt(2)]; L*sqrt(2) -L*sqrt(2) L*sqrt(2) -L*sqrt(2) L*sqrt(2) -L*sqrt(2)];
#+end_src #+end_src
** Stifnness matrix and Damping matrix ** Stifnness and Damping matrices
#+begin_src matlab #+begin_src matlab
kv = k/3; % [N/m] kv = k/3; % Vertical Stiffness of the springs [N/m]
kh = 0.5*k/3; % [N/m] kh = 0.5*k/3; % Horizontal Stiffness of the springs [N/m]
K = diag([3*kh, 3*kh, 3*kv, 3*kv*Rx^2/2, 3*kv*Rx^2/2, 3*kh*Rx^2]); % Stiffness Matrix K = diag([3*kh, 3*kh, 3*kv, 3*kv*Rx^2/2, 3*kv*Rx^2/2, 3*kh*Rx^2]); % Stiffness Matrix
C = c*K/100000; % Damping Matrix C = c*K/100000; % Damping Matrix
#+end_src #+end_src
** State Space System ** State Space System
#+begin_src matlab #+begin_src matlab
A = [zeros(6) eye(6); -M\K -M\C]; A = [ zeros(6) eye(6); ...
-M\K -M\C];
Bw = [zeros(6); -eye(6)]; Bw = [zeros(6); -eye(6)];
Bu = [zeros(6); M\Bj]; Bu = [zeros(6); M\Bj];
Co = [-M\K -M\C]; Co = [-M\K -M\C];
D = [zeros(6) M\Bj]; D = [zeros(6) M\Bj];
ST = ss(A,[Bw Bu],Co,D); ST = ss(A,[Bw Bu],Co,D);
@ -1360,8 +1375,10 @@ The obtained transmissibility in Open-loop, for the centralized control as well
#+begin_src matlab #+begin_src matlab
ST.StateName = {'x';'y';'z';'theta_x';'theta_y';'theta_z';... ST.StateName = {'x';'y';'z';'theta_x';'theta_y';'theta_z';...
'dx';'dy';'dz';'dtheta_x';'dtheta_y';'dtheta_z'}; 'dx';'dy';'dz';'dtheta_x';'dtheta_y';'dtheta_z'};
ST.InputName = {'w1';'w2';'w3';'w4';'w5';'w6';... ST.InputName = {'w1';'w2';'w3';'w4';'w5';'w6';...
'u1';'u2';'u3';'u4';'u5';'u6'}; 'u1';'u2';'u3';'u4';'u5';'u6'};
ST.OutputName = {'ax';'ay';'az';'atheta_x';'atheta_y';'atheta_z'}; ST.OutputName = {'ax';'ay';'az';'atheta_x';'atheta_y';'atheta_z'};
#+end_src #+end_src
@ -1373,17 +1390,17 @@ The obtained transmissibility in Open-loop, for the centralized control as well
#+begin_src matlab #+begin_src matlab
figure figure
subplot(231) subplot(231)
bodemag(TR(1,1),opts); bodemag(TR(1,1));
subplot(232) subplot(232)
bodemag(TR(2,2),opts); bodemag(TR(2,2));
subplot(233) subplot(233)
bodemag(TR(3,3),opts); bodemag(TR(3,3));
subplot(234) subplot(234)
bodemag(TR(4,4),opts); bodemag(TR(4,4));
subplot(235) subplot(235)
bodemag(TR(5,5),opts); bodemag(TR(5,5));
subplot(236) subplot(236)
bodemag(TR(6,6),opts); bodemag(TR(6,6));
#+end_src #+end_src
#+begin_src matlab :tangle no :exports results :results file replace #+begin_src matlab :tangle no :exports results :results file replace

Binary file not shown.

Binary file not shown.