Compare commits
2 Commits
ff0e0bf73e
...
f4d9fe6f66
Author | SHA1 | Date | |
---|---|---|---|
f4d9fe6f66 | |||
8425c1d613 |
14
css/custom.css
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
.figure p{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.figure img{
|
||||||
|
max-width:100%;
|
||||||
|
display: block;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
@ -513,7 +513,7 @@ legend{
|
|||||||
padding:0;
|
padding:0;
|
||||||
white-space:normal}
|
white-space:normal}
|
||||||
|
|
||||||
.fa:before,#content .admonition-title:before,#content h1 .headerlink:before,#content h2 .headerlink:before,#content h3 .headerlink:before,#content h4 .headerlink:before,#content h5 .headerlink:before,#content h6 .headerlink:before,#content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .hint,#content .important,#content .tip,#content .warning,#content .seealso,#content .admonitiontodo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,#table-of-contents li.on a,#table-of-contents li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{
|
.fa:before,#content .admonition-title:before,#content h1 .headerlink:before,#content h2 .headerlink:before,#content h3 .headerlink:before,#content h4 .headerlink:before,#content h5 .headerlink:before,#content h6 .headerlink:before,#content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .summary,#content .hint,#content .important,#content .tip,#content .warning,#content .question,#content .seealso,#content .admonitiontodo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,#table-of-contents li.on a,#table-of-contents li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{
|
||||||
-webkit-font-smoothing:antialiased}
|
-webkit-font-smoothing:antialiased}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -576,7 +576,7 @@ a .fa,a #content .admonition-title,#content a .admonition-title{
|
|||||||
.nav #content .admonition-title,#content .nav .admonition-title,.nav .icon{
|
.nav #content .admonition-title,#content .nav .admonition-title,.nav .icon{
|
||||||
display:inline}
|
display:inline}
|
||||||
|
|
||||||
.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .hint,#content .important,#content .tip,#content .warning,#content .seealso,#content .admonitiontodo{
|
.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .summary,#content .hint,#content .important,#content .tip,#content .warning,#content .question,#content .seealso,#content .admonitiontodo{
|
||||||
padding:12px;
|
padding:12px;
|
||||||
line-height:24px;
|
line-height:24px;
|
||||||
margin-bottom:24px;
|
margin-bottom:24px;
|
||||||
@ -596,32 +596,45 @@ a .fa,a #content .admonition-title,#content a .admonition-title{
|
|||||||
#content .danger,#content .error{
|
#content .danger,#content .error{
|
||||||
background:#fdf3f2}
|
background:#fdf3f2}
|
||||||
|
|
||||||
.wy-alert.wy-alert-warning,#content .wy-alert-warning.note,#content .attention,#content .caution,#content .wy-alert-warning.danger,#content .wy-alert-warning.error,#content .wy-alert-warning.hint,#content .wy-alert-warning.important,#content .wy-alert-warning.tip,#content .warning,#content .wy-alert-warning.seealso,#content .admonitiontodo{
|
.wy-alert.wy-alert-warning,#content .wy-alert-warning.note,#content .attention,#content .caution,#content .wy-alert-warning.danger,#content .wy-alert-warning.error,#content .wy-alert-warning.summary,#content .wy-alert-warning.hint,#content .wy-alert-warning.important,#content .wy-alert-warning.tip,#content .warning,#content .wy-alert-warning.seealso,#content .admonitiontodo{
|
||||||
background:#ffedcc}
|
background:#ffedcc}
|
||||||
|
|
||||||
#content .admonition-title.note:before, #content .admonition-title.seealso:before,
|
#content .admonition-title.warning:before,
|
||||||
#content .admonition-title.warning:before, #content .admonition-title.caution:before,
|
#content .admonition-title.caution:before,
|
||||||
#content .admonition-title.attention:before,
|
#content .admonition-title.attention:before,
|
||||||
#content .admonition-title.tip:before, #content .admonition-title.hint:before,
|
|
||||||
#content .admonition-title.important:before,
|
#content .admonition-title.important:before,
|
||||||
#content .admonition-title.error:before, #content .admonition-title.danger:before{
|
#content .admonition-title.error:before,
|
||||||
|
#content .admonition-title.danger:before{
|
||||||
font-family:FontAwesome;
|
font-family:FontAwesome;
|
||||||
content: "";}
|
content: "";}
|
||||||
|
|
||||||
#content .note,#content .seealso{
|
#content .admonition-title.question:before{
|
||||||
|
font-family:FontAwesome;
|
||||||
|
content: "";}
|
||||||
|
|
||||||
|
#content .admonition-title.note:before,
|
||||||
|
#content .admonition-title.seealso:before,
|
||||||
|
#content .admonition-title.tip:before,
|
||||||
|
#content .admonition-title.summary:before,
|
||||||
|
#content .admonition-title.hint:before{
|
||||||
|
font-family:FontAwesome;
|
||||||
|
content: "";}
|
||||||
|
|
||||||
|
|
||||||
|
#content .note,#content .question,#content .seealso{
|
||||||
background:#e7f2fa}
|
background:#e7f2fa}
|
||||||
|
|
||||||
.wy-alert p:last-child,#content .note p:last-child,#content .attention p:last-child,#content .caution p:last-child,#content .danger p:last-child,#content .error p:last-child,#content .hint p:last-child,#content .important p:last-child,#content .tip p:last-child,#content .warning p:last-child,#content .seealso p:last-child,#content .admonitiontodo p:last-child{
|
.wy-alert p:last-child,#content .note p:last-child,#content .attention p:last-child,#content .caution p:last-child,#content .danger p:last-child,#content .error p:last-child,#content .summary p:last-child,#content .hint p:last-child,#content .important p:last-child,#content .tip p:last-child,#content .warning p:last-child,#content .question p:last-child,#content .seealso p:last-child,#content .admonitiontodo p:last-child{
|
||||||
margin-bottom:0}
|
margin-bottom:0}
|
||||||
|
|
||||||
#content .admonition-title.tip,#content .admonition-title.important,#content .admonition-title.hint{
|
#content .admonition-title.tip,#content .admonition-title.important,#content .admonition-title.summary,#content .admonition-title.hint{
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
background:#1abc9c}
|
background:#1abc9c}
|
||||||
|
|
||||||
#content .important,#content .tip,#content .hint{
|
#content .important,#content .tip,#content .summary,#content .hint{
|
||||||
background:#dbfaf4}
|
background:#dbfaf4}
|
||||||
|
|
||||||
#content .admonition-title.note,#content .admonition-title.seealso{
|
#content .admonition-title.note,#content .admonition-title.question,#content .admonition-title.seealso{
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
background:#6ab0de}
|
background:#6ab0de}
|
||||||
|
|
||||||
@ -938,7 +951,7 @@ footer p{
|
|||||||
font-style:italic;
|
font-style:italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
#content .note .last,#content .attention .last,#content .caution .last,#content .danger .last,#content .error .last,#content .hint .last,#content .important .last,#content .tip .last,#content .warning .last,#content .seealso .last,#content .admonitiontodo .last{
|
#content .note .last,#content .attention .last,#content .caution .last,#content .danger .last,#content .error .last,#content .hint .summary,#content .hint .last,#content .important .last,#content .tip .last,#content .warning .last,#content .question .last,#content .seealso .last,#content .admonitiontodo .last{
|
||||||
margin-bottom:0}
|
margin-bottom:0}
|
||||||
|
|
||||||
#content .admonition-title:before{
|
#content .admonition-title:before{
|
||||||
|
BIN
figs/simscape_model_decoupled_plant_jacobian.eps
Normal file
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 162 KiB |
BIN
figs/simscape_model_decoupled_plant_svd.eps
Normal file
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 167 KiB |
BIN
figs/simscape_model_gershgorin_radii.eps
Normal file
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 145 KiB |
BIN
figs/stewart_platform_simscape_cl_transmissibility.eps
Normal file
Before Width: | Height: | Size: 195 KiB After Width: | Height: | Size: 244 KiB |
236
index.html
@ -3,14 +3,14 @@
|
|||||||
"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-11-06 ven. 11:59 -->
|
<!-- 2020-11-06 ven. 12:22 -->
|
||||||
<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" />
|
||||||
<meta name="author" content="Dehaeze Thomas" />
|
<meta name="author" content="Dehaeze Thomas" />
|
||||||
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||||
<link rel="stylesheet" type="text/css" href="./css/zenburn.css"/>
|
<link rel="stylesheet" type="text/css" href="./css/custom.css"/>
|
||||||
<script type="text/javascript" src="./js/jquery.min.js"></script>
|
<script type="text/javascript" src="./js/jquery.min.js"></script>
|
||||||
<script type="text/javascript" src="./js/bootstrap.min.js"></script>
|
<script type="text/javascript" src="./js/bootstrap.min.js"></script>
|
||||||
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
|
<script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
|
||||||
@ -35,56 +35,56 @@
|
|||||||
<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="#org9a4d410">1. Gravimeter - Simscape Model</a>
|
<li><a href="#org40c86ca">1. Gravimeter - Simscape Model</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org5411e8d">1.1. Introduction</a></li>
|
<li><a href="#orgac27a65">1.1. Introduction</a></li>
|
||||||
<li><a href="#orgda2cb96">1.2. Simscape Model - Parameters</a></li>
|
<li><a href="#org991b9ad">1.2. Simscape Model - Parameters</a></li>
|
||||||
<li><a href="#orgf880bca">1.3. System Identification - Without Gravity</a></li>
|
<li><a href="#org7417c14">1.3. System Identification - Without Gravity</a></li>
|
||||||
<li><a href="#orga8f3792">1.4. System Identification - With Gravity</a></li>
|
<li><a href="#org3ac74c3">1.4. System Identification - With Gravity</a></li>
|
||||||
<li><a href="#orge91b7c5">1.5. Analytical Model</a>
|
<li><a href="#org13de6f7">1.5. Analytical Model</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org1843007">1.5.1. Parameters</a></li>
|
<li><a href="#orgef157da">1.5.1. Parameters</a></li>
|
||||||
<li><a href="#orgf341de2">1.5.2. Generation of the State Space Model</a></li>
|
<li><a href="#orgb72d17d">1.5.2. Generation of the State Space Model</a></li>
|
||||||
<li><a href="#org19b49ae">1.5.3. Comparison with the Simscape Model</a></li>
|
<li><a href="#org3b77585">1.5.3. Comparison with the Simscape Model</a></li>
|
||||||
<li><a href="#orgd4f737f">1.5.4. Analysis</a></li>
|
<li><a href="#org2f7cb8f">1.5.4. Analysis</a></li>
|
||||||
<li><a href="#org1f3bdc6">1.5.5. Control Section</a></li>
|
<li><a href="#org218243e">1.5.5. Control Section</a></li>
|
||||||
<li><a href="#orgbe1dd80">1.5.6. Greshgorin radius</a></li>
|
<li><a href="#orgad11a63">1.5.6. Greshgorin radius</a></li>
|
||||||
<li><a href="#orgf7383e9">1.5.7. Injecting ground motion in the system to have the output</a></li>
|
<li><a href="#orga23d907">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="#org9303df5">2. Gravimeter - Functions</a>
|
<li><a href="#org23fa18d">2. Gravimeter - Functions</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgbac772c">2.1. <code>align</code></a></li>
|
<li><a href="#org81c3333">2.1. <code>align</code></a></li>
|
||||||
<li><a href="#org77a1eca">2.2. <code>pzmap_testCL</code></a></li>
|
<li><a href="#org8b6878d">2.2. <code>pzmap_testCL</code></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org4fe31f1">3. Stewart Platform - Simscape Model</a>
|
<li><a href="#org50746f8">3. Stewart Platform - Simscape Model</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org3a0372c">3.1. Simscape Model - Parameters</a></li>
|
<li><a href="#orga12724f">3.1. Simscape Model - Parameters</a></li>
|
||||||
<li><a href="#orgb7ea9cc">3.2. Identification of the plant</a></li>
|
<li><a href="#org820527f">3.2. Identification of the plant</a></li>
|
||||||
<li><a href="#org14b6381">3.3. Obtained Dynamics</a></li>
|
<li><a href="#orga58761b">3.3. Obtained Dynamics</a></li>
|
||||||
<li><a href="#orgbb09f73">3.4. Real Approximation of \(G\) at the decoupling frequency</a></li>
|
<li><a href="#orgb3d55c6">3.4. Real Approximation of \(G\) at the decoupling frequency</a></li>
|
||||||
<li><a href="#orgd6de0da">3.5. Verification of the decoupling using the “Gershgorin Radii”</a></li>
|
<li><a href="#org2f2890a">3.5. Verification of the decoupling using the “Gershgorin Radii”</a></li>
|
||||||
<li><a href="#orge2bb3a7">3.6. Decoupled Plant</a></li>
|
<li><a href="#org70b5fa2">3.6. Decoupled Plant</a></li>
|
||||||
<li><a href="#org2308148">3.7. Diagonal Controller</a></li>
|
<li><a href="#orgc23974f">3.7. Diagonal Controller</a></li>
|
||||||
<li><a href="#orgcd2163a">3.8. Closed-Loop system Performances</a></li>
|
<li><a href="#org6e4ced6">3.8. Closed-Loop system Performances</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9a4d410" class="outline-2">
|
<div id="outline-container-org40c86ca" class="outline-2">
|
||||||
<h2 id="org9a4d410"><span class="section-number-2">1</span> Gravimeter - Simscape Model</h2>
|
<h2 id="org40c86ca"><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-org5411e8d" class="outline-3">
|
<div id="outline-container-orgac27a65" class="outline-3">
|
||||||
<h3 id="org5411e8d"><span class="section-number-3">1.1</span> Introduction</h3>
|
<h3 id="orgac27a65"><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="org7952bff" class="figure">
|
<div id="orgfaa8196" 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>
|
||||||
@ -92,8 +92,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgda2cb96" class="outline-3">
|
<div id="outline-container-org991b9ad" class="outline-3">
|
||||||
<h3 id="orgda2cb96"><span class="section-number-3">1.2</span> Simscape Model - Parameters</h3>
|
<h3 id="org991b9ad"><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>)
|
||||||
@ -124,8 +124,8 @@ g = 0; <span class="org-comment">% Gravity [m/s2]</span>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf880bca" class="outline-3">
|
<div id="outline-container-org7417c14" class="outline-3">
|
||||||
<h3 id="orgf880bca"><span class="section-number-3">1.3</span> System Identification - Without Gravity</h3>
|
<h3 id="org7417c14"><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>
|
||||||
@ -147,7 +147,7 @@ G.OutputName = {<span class="org-string">'Ax1'</span>, <span class="org-string">
|
|||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<pre class="example" id="org8470c34">
|
<pre class="example" id="orgefbf7cd">
|
||||||
pole(G)
|
pole(G)
|
||||||
ans =
|
ans =
|
||||||
-0.000473481142385795 + 21.7596190728632i
|
-0.000473481142385795 + 21.7596190728632i
|
||||||
@ -172,7 +172,7 @@ State-space model with 4 outputs, 3 inputs, and 6 states.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div id="orge61197a" class="figure">
|
<div id="orgfe2be7d" 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>
|
||||||
@ -180,8 +180,8 @@ State-space model with 4 outputs, 3 inputs, and 6 states.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga8f3792" class="outline-3">
|
<div id="outline-container-org3ac74c3" class="outline-3">
|
||||||
<h3 id="orga8f3792"><span class="section-number-3">1.4</span> System Identification - With Gravity</h3>
|
<h3 id="org3ac74c3"><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>
|
||||||
@ -198,7 +198,7 @@ Gg.OutputName = {<span class="org-string">'Ax1'</span>, <span class="org-string"
|
|||||||
<p>
|
<p>
|
||||||
We can now see that the system is unstable due to gravity.
|
We can now see that the system is unstable due to gravity.
|
||||||
</p>
|
</p>
|
||||||
<pre class="example" id="org75a5ebf">
|
<pre class="example" id="org9de3a30">
|
||||||
pole(Gg)
|
pole(Gg)
|
||||||
ans =
|
ans =
|
||||||
-10.9848275341252 + 0i
|
-10.9848275341252 + 0i
|
||||||
@ -210,7 +210,7 @@ ans =
|
|||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
<div id="org5b5c53a" class="figure">
|
<div id="org295f713" 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>
|
||||||
@ -218,12 +218,12 @@ ans =
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge91b7c5" class="outline-3">
|
<div id="outline-container-org13de6f7" class="outline-3">
|
||||||
<h3 id="orge91b7c5"><span class="section-number-3">1.5</span> Analytical Model</h3>
|
<h3 id="org13de6f7"><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-org1843007" class="outline-4">
|
<div id="outline-container-orgef157da" class="outline-4">
|
||||||
<h4 id="org1843007"><span class="section-number-4">1.5.1</span> Parameters</h4>
|
<h4 id="orgef157da"><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.
|
||||||
@ -255,8 +255,8 @@ Frequency vector.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf341de2" class="outline-4">
|
<div id="outline-container-orgb72d17d" class="outline-4">
|
||||||
<h4 id="orgf341de2"><span class="section-number-4">1.5.2</span> Generation of the State Space Model</h4>
|
<h4 id="orgb72d17d"><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
|
||||||
@ -357,11 +357,11 @@ State-space model with 12 outputs, 6 inputs, and 6 states.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org19b49ae" class="outline-4">
|
<div id="outline-container-org3b77585" class="outline-4">
|
||||||
<h4 id="org19b49ae"><span class="section-number-4">1.5.3</span> Comparison with the Simscape Model</h4>
|
<h4 id="org3b77585"><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="org12c0516" class="figure">
|
<div id="org8f52253" 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>
|
||||||
@ -369,8 +369,8 @@ State-space model with 12 outputs, 6 inputs, and 6 states.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd4f737f" class="outline-4">
|
<div id="outline-container-org2f7cb8f" class="outline-4">
|
||||||
<h4 id="orgd4f737f"><span class="section-number-4">1.5.4</span> Analysis</h4>
|
<h4 id="org2f7cb8f"><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>
|
||||||
@ -438,8 +438,8 @@ State-space model with 12 outputs, 6 inputs, and 6 states.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1f3bdc6" class="outline-4">
|
<div id="outline-container-org218243e" class="outline-4">
|
||||||
<h4 id="org1f3bdc6"><span class="section-number-4">1.5.5</span> Control Section</h4>
|
<h4 id="org218243e"><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);
|
||||||
@ -579,8 +579,8 @@ legend(<span class="org-string">'Control OFF'</span>,<span class="org-string">'D
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbe1dd80" class="outline-4">
|
<div id="outline-container-orgad11a63" class="outline-4">
|
||||||
<h4 id="orgbe1dd80"><span class="section-number-4">1.5.6</span> Greshgorin radius</h4>
|
<h4 id="orgad11a63"><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);
|
||||||
@ -626,8 +626,8 @@ ylabel(<span class="org-string">'Greshgorin radius [-]'</span>);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf7383e9" class="outline-4">
|
<div id="outline-container-orga23d907" class="outline-4">
|
||||||
<h4 id="orgf7383e9"><span class="section-number-4">1.5.7</span> Injecting ground motion in the system to have the output</h4>
|
<h4 id="orga23d907"><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);
|
||||||
@ -683,15 +683,15 @@ rot = PHI(<span class="org-type">:</span>,11,11);
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9303df5" class="outline-2">
|
<div id="outline-container-org23fa18d" class="outline-2">
|
||||||
<h2 id="org9303df5"><span class="section-number-2">2</span> Gravimeter - Functions</h2>
|
<h2 id="org23fa18d"><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-orgbac772c" class="outline-3">
|
<div id="outline-container-org81c3333" class="outline-3">
|
||||||
<h3 id="orgbac772c"><span class="section-number-3">2.1</span> <code>align</code></h3>
|
<h3 id="org81c3333"><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="orgd4332c0"></a>
|
<a id="org303d818"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -720,11 +720,11 @@ This Matlab function is accessible <a href="gravimeter/align.m">here</a>.
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="outline-container-org77a1eca" class="outline-3">
|
<div id="outline-container-org8b6878d" class="outline-3">
|
||||||
<h3 id="org77a1eca"><span class="section-number-3">2.2</span> <code>pzmap_testCL</code></h3>
|
<h3 id="org8b6878d"><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="org27c7e0b"></a>
|
<a id="org7c6ecb8"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -773,15 +773,15 @@ This Matlab function is accessible <a href="gravimeter/pzmap_testCL.m">here</a>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4fe31f1" class="outline-2">
|
<div id="outline-container-org50746f8" class="outline-2">
|
||||||
<h2 id="org4fe31f1"><span class="section-number-2">3</span> Stewart Platform - Simscape Model</h2>
|
<h2 id="org50746f8"><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">
|
||||||
<p>
|
<p>
|
||||||
In this analysis, we wish to applied SVD control to the Stewart Platform shown in Figure <a href="#org6ec05bd">5</a>.
|
In this analysis, we wish to applied SVD control to the Stewart Platform shown in Figure <a href="#org9c6bf2d">5</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org6ec05bd" class="figure">
|
<div id="org9c6bf2d" class="figure">
|
||||||
<p><img src="figs/SP_assembly.png" alt="SP_assembly.png" />
|
<p><img src="figs/SP_assembly.png" alt="SP_assembly.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 5: </span>Stewart Platform CAD View</p>
|
<p><span class="figure-number">Figure 5: </span>Stewart Platform CAD View</p>
|
||||||
@ -791,21 +791,21 @@ In this analysis, we wish to applied SVD control to the Stewart Platform shown i
|
|||||||
The analysis of the SVD control applied to the Stewart platform is performed in the following sections:
|
The analysis of the SVD control applied to the Stewart platform is performed in the following sections:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
<li>Section <a href="#org18c9a86">3.1</a>: The parameters of the Simscape model of the Stewart platform are defined</li>
|
<li>Section <a href="#org5932d29">3.1</a>: The parameters of the Simscape model of the Stewart platform are defined</li>
|
||||||
<li>Section <a href="#orga8d5029">3.2</a>: The plant is identified from the Simscape model and the centralized plant is computed thanks to the Jacobian</li>
|
<li>Section <a href="#org7980ba7">3.2</a>: The plant is identified from the Simscape model and the centralized plant is computed thanks to the Jacobian</li>
|
||||||
<li>Section <a href="#org6c8e356">3.3</a>: The identified Dynamics is shown</li>
|
<li>Section <a href="#orgb9c44bf">3.3</a>: The identified Dynamics is shown</li>
|
||||||
<li>Section <a href="#org5369ce8">3.4</a>: A real approximation of the plant is computed for further decoupling using the Singular Value Decomposition (SVD)</li>
|
<li>Section <a href="#orgea1a70b">3.4</a>: A real approximation of the plant is computed for further decoupling using the Singular Value Decomposition (SVD)</li>
|
||||||
<li>Section <a href="#org8aaf502">3.5</a>: The decoupling is performed thanks to the SVD. The effectiveness of the decoupling is verified using the Gershorin Radii</li>
|
<li>Section <a href="#org0cd9585">3.5</a>: The decoupling is performed thanks to the SVD. The effectiveness of the decoupling is verified using the Gershorin Radii</li>
|
||||||
<li>Section <a href="#org9aecb63">3.6</a>: The dynamics of the decoupled plant is shown</li>
|
<li>Section <a href="#org6e20bec">3.6</a>: The dynamics of the decoupled plant is shown</li>
|
||||||
<li>Section <a href="#org8f38a00">3.7</a>: A diagonal controller is defined to control the decoupled plant</li>
|
<li>Section <a href="#org7c9ebe2">3.7</a>: A diagonal controller is defined to control the decoupled plant</li>
|
||||||
<li>Section <a href="#org0a61882">3.8</a>: Finally, the closed loop system properties are studied</li>
|
<li>Section <a href="#orgfaeace7">3.8</a>: Finally, the closed loop system properties are studied</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org3a0372c" class="outline-3">
|
<div id="outline-container-orga12724f" class="outline-3">
|
||||||
<h3 id="org3a0372c"><span class="section-number-3">3.1</span> Simscape Model - Parameters</h3>
|
<h3 id="orga12724f"><span class="section-number-3">3.1</span> Simscape Model - Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-3-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="org18c9a86"></a>
|
<a id="org5932d29"></a>
|
||||||
</p>
|
</p>
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">open(<span class="org-string">'drone_platform.slx'</span>);
|
<pre class="src src-matlab">open(<span class="org-string">'drone_platform.slx'</span>);
|
||||||
@ -844,11 +844,11 @@ We load the Jacobian (previously computed from the geometry).
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb7ea9cc" class="outline-3">
|
<div id="outline-container-org820527f" class="outline-3">
|
||||||
<h3 id="orgb7ea9cc"><span class="section-number-3">3.2</span> Identification of the plant</h3>
|
<h3 id="org820527f"><span class="section-number-3">3.2</span> Identification of the plant</h3>
|
||||||
<div class="outline-text-3" id="text-3-2">
|
<div class="outline-text-3" id="text-3-2">
|
||||||
<p>
|
<p>
|
||||||
<a id="orga8d5029"></a>
|
<a id="org7980ba7"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -885,11 +885,11 @@ State-space model with 6 outputs, 12 inputs, and 24 states.
|
|||||||
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The “centralized” plant \(\bm{G}_x\) is now computed (Figure <a href="#orgdc8eb92">6</a>).
|
The “centralized” plant \(\bm{G}_x\) is now computed (Figure <a href="#org249f9cd">6</a>).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="orgdc8eb92" class="figure">
|
<div id="org249f9cd" class="figure">
|
||||||
<p><img src="figs/centralized_control.png" alt="centralized_control.png" />
|
<p><img src="figs/centralized_control.png" alt="centralized_control.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 6: </span>Centralized control architecture</p>
|
<p><span class="figure-number">Figure 6: </span>Centralized control architecture</p>
|
||||||
@ -907,22 +907,22 @@ Gx.InputName = {<span class="org-string">'Dwx'</span>, <span class="org-string"
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org14b6381" class="outline-3">
|
<div id="outline-container-orga58761b" class="outline-3">
|
||||||
<h3 id="org14b6381"><span class="section-number-3">3.3</span> Obtained Dynamics</h3>
|
<h3 id="orga58761b"><span class="section-number-3">3.3</span> Obtained Dynamics</h3>
|
||||||
<div class="outline-text-3" id="text-3-3">
|
<div class="outline-text-3" id="text-3-3">
|
||||||
<p>
|
<p>
|
||||||
<a id="org6c8e356"></a>
|
<a id="orgb9c44bf"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org9b3956c" class="figure">
|
<div id="org6d21a96" 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 7: </span>Stewart Platform Plant from forces applied by the legs to the acceleration of the platform</p>
|
<p><span class="figure-number">Figure 7: </span>Stewart Platform Plant from forces applied by the legs to the acceleration of the platform</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org2ca723a" class="figure">
|
<div id="orge724936" 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 8: </span>Stewart Platform Plant from torques applied by the legs to the angular acceleration of the platform</p>
|
<p><span class="figure-number">Figure 8: </span>Stewart Platform Plant from torques applied by the legs to the angular acceleration of the platform</p>
|
||||||
@ -930,11 +930,11 @@ Gx.InputName = {<span class="org-string">'Dwx'</span>, <span class="org-string"
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbb09f73" class="outline-3">
|
<div id="outline-container-orgb3d55c6" class="outline-3">
|
||||||
<h3 id="orgbb09f73"><span class="section-number-3">3.4</span> Real Approximation of \(G\) at the decoupling frequency</h3>
|
<h3 id="orgb3d55c6"><span class="section-number-3">3.4</span> Real Approximation of \(G\) at the decoupling frequency</h3>
|
||||||
<div class="outline-text-3" id="text-3-4">
|
<div class="outline-text-3" id="text-3-4">
|
||||||
<p>
|
<p>
|
||||||
<a id="org5369ce8"></a>
|
<a id="orgea1a70b"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -1034,7 +1034,7 @@ H1 = inv(D<span class="org-type">*</span>real(H1<span class="org-type">'*</span>
|
|||||||
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Please not that the plant \(G\) at \(\omega_c\) is already an almost real matrix.
|
Note that the plant \(G\) at \(\omega_c\) is already an almost real matrix.
|
||||||
This can be seen on the Bode plots where the phase is close to 1.
|
This can be seen on the Bode plots where the phase is close to 1.
|
||||||
This can be verified below where only the real value of \(G(\omega_c)\) is shown
|
This can be verified below where only the real value of \(G(\omega_c)\) is shown
|
||||||
</p>
|
</p>
|
||||||
@ -1114,11 +1114,11 @@ This can be verified below where only the real value of \(G(\omega_c)\) is shown
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd6de0da" class="outline-3">
|
<div id="outline-container-org2f2890a" class="outline-3">
|
||||||
<h3 id="orgd6de0da"><span class="section-number-3">3.5</span> Verification of the decoupling using the “Gershgorin Radii”</h3>
|
<h3 id="org2f2890a"><span class="section-number-3">3.5</span> Verification of the decoupling using the “Gershgorin Radii”</h3>
|
||||||
<div class="outline-text-3" id="text-3-5">
|
<div class="outline-text-3" id="text-3-5">
|
||||||
<p>
|
<p>
|
||||||
<a id="org8aaf502"></a>
|
<a id="org0cd9585"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -1187,7 +1187,7 @@ H = abs(squeeze(freqresp(Gj, freqs, <span class="org-string">'Hz'</span>)));
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="org466a903" class="figure">
|
<div id="org4e85b3b" 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>
|
||||||
@ -1195,11 +1195,11 @@ H = abs(squeeze(freqresp(Gj, freqs, <span class="org-string">'Hz'</span>)));
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orge2bb3a7" class="outline-3">
|
<div id="outline-container-org70b5fa2" class="outline-3">
|
||||||
<h3 id="orge2bb3a7"><span class="section-number-3">3.6</span> Decoupled Plant</h3>
|
<h3 id="org70b5fa2"><span class="section-number-3">3.6</span> Decoupled Plant</h3>
|
||||||
<div class="outline-text-3" id="text-3-6">
|
<div class="outline-text-3" id="text-3-6">
|
||||||
<p>
|
<p>
|
||||||
<a id="org9aecb63"></a>
|
<a id="org6e20bec"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -1208,14 +1208,14 @@ Let’s see the bode plot of the decoupled plant \(G_d(s)\).
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org95eefca" class="figure">
|
<div id="org82227b9" 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="org0b741a8" class="figure">
|
<div id="org2cf3f8e" 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>
|
||||||
@ -1223,11 +1223,11 @@ Let’s see the bode plot of the decoupled plant \(G_d(s)\).
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2308148" class="outline-3">
|
<div id="outline-container-orgc23974f" class="outline-3">
|
||||||
<h3 id="org2308148"><span class="section-number-3">3.7</span> Diagonal Controller</h3>
|
<h3 id="orgc23974f"><span class="section-number-3">3.7</span> Diagonal Controller</h3>
|
||||||
<div class="outline-text-3" id="text-3-7">
|
<div class="outline-text-3" id="text-3-7">
|
||||||
<p>
|
<p>
|
||||||
<a id="org8f38a00"></a>
|
<a id="org7c9ebe2"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -1243,7 +1243,7 @@ K = eye(6)<span class="org-type">*</span>C_g<span class="org-type">/</span>(s<sp
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The control diagram for the centralized control is shown in Figure <a href="#orgdc8eb92">6</a>.
|
The control diagram for the centralized control is shown in Figure <a href="#org249f9cd">6</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -1252,7 +1252,7 @@ The Jacobian is used to convert forces in the cartesian frame to forces applied
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org6306bec" class="figure">
|
<div id="org6e49f6b" class="figure">
|
||||||
<p><img src="figs/centralized_control.png" alt="centralized_control.png" />
|
<p><img src="figs/centralized_control.png" alt="centralized_control.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 12: </span>Control Diagram for the Centralized control</p>
|
<p><span class="figure-number">Figure 12: </span>Control Diagram for the Centralized control</p>
|
||||||
@ -1267,11 +1267,11 @@ The feedback system is computed as shown below.
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The SVD control architecture is shown in Figure <a href="#orgd86732f">13</a>.
|
The SVD control architecture is shown in Figure <a href="#org98507fe">13</a>.
|
||||||
The matrices \(U\) and \(V\) are used to decoupled the plant \(G\).
|
The matrices \(U\) and \(V\) are used to decoupled the plant \(G\).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div id="orgd86732f" class="figure">
|
<div id="org98507fe" class="figure">
|
||||||
<p><img src="figs/svd_control.png" alt="svd_control.png" />
|
<p><img src="figs/svd_control.png" alt="svd_control.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 13: </span>Control Diagram for the SVD control</p>
|
<p><span class="figure-number">Figure 13: </span>Control Diagram for the SVD control</p>
|
||||||
@ -1287,11 +1287,11 @@ The feedback system is computed as shown below.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgcd2163a" class="outline-3">
|
<div id="outline-container-org6e4ced6" class="outline-3">
|
||||||
<h3 id="orgcd2163a"><span class="section-number-3">3.8</span> Closed-Loop system Performances</h3>
|
<h3 id="org6e4ced6"><span class="section-number-3">3.8</span> Closed-Loop system Performances</h3>
|
||||||
<div class="outline-text-3" id="text-3-8">
|
<div class="outline-text-3" id="text-3-8">
|
||||||
<p>
|
<p>
|
||||||
<a id="org0a61882"></a>
|
<a id="orgfaeace7"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -1322,11 +1322,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="#orga86987f">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="#org500fc7e">14</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="orga86987f" class="figure">
|
<div id="org500fc7e" 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>
|
||||||
@ -1337,7 +1337,7 @@ The obtained transmissibility in Open-loop, for the centralized control as well
|
|||||||
</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-11-06 ven. 11:59</p>
|
<p class="date">Created: 2020-11-06 ven. 12:22</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
75
index.org
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
|
||||||
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/zenburn.css"/>
|
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./css/custom.css"/>
|
||||||
#+HTML_HEAD: <script type="text/javascript" src="./js/jquery.min.js"></script>
|
#+HTML_HEAD: <script type="text/javascript" src="./js/jquery.min.js"></script>
|
||||||
#+HTML_HEAD: <script type="text/javascript" src="./js/bootstrap.min.js"></script>
|
#+HTML_HEAD: <script type="text/javascript" src="./js/bootstrap.min.js"></script>
|
||||||
#+HTML_HEAD: <script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
|
#+HTML_HEAD: <script type="text/javascript" src="./js/jquery.stickytableheaders.min.js"></script>
|
||||||
@ -945,7 +945,7 @@ The real approximation is computed as follows:
|
|||||||
| 220.6 | -220.6 | 220.6 | -220.6 | 220.6 | -220.6 |
|
| 220.6 | -220.6 | 220.6 | -220.6 | 220.6 | -220.6 |
|
||||||
|
|
||||||
|
|
||||||
Please not that the plant $G$ at $\omega_c$ is already an almost real matrix.
|
Note that the plant $G$ at $\omega_c$ is already an almost real matrix.
|
||||||
This can be seen on the Bode plots where the phase is close to 1.
|
This can be seen on the Bode plots where the phase is close to 1.
|
||||||
This can be verified below where only the real value of $G(\omega_c)$ is shown
|
This can be verified below where only the real value of $G(\omega_c)$ is shown
|
||||||
|
|
||||||
@ -1031,10 +1031,11 @@ Gershgorin Radii for the decoupled plant using the Jacobian:
|
|||||||
hold off;
|
hold off;
|
||||||
xlabel('Frequency (Hz)'); ylabel('Gershgorin Radii')
|
xlabel('Frequency (Hz)'); ylabel('Gershgorin Radii')
|
||||||
legend('location', 'northeast');
|
legend('location', 'northeast');
|
||||||
|
ylim([1e-3, 1e3]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/simscape_model_gershgorin_radii.pdf', 'width', 'full', 'height', 'full');
|
exportFig('figs/simscape_model_gershgorin_radii.pdf', 'eps', true, 'width', 'wide', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:simscape_model_gershgorin_radii
|
#+name: fig:simscape_model_gershgorin_radii
|
||||||
@ -1066,11 +1067,12 @@ Let's see the bode plot of the decoupled plant $G_d(s)$.
|
|||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Magnitude'); xlabel('Frequency [Hz]');
|
ylabel('Magnitude'); xlabel('Frequency [Hz]');
|
||||||
legend('location', 'southeast');
|
legend('location', 'northwest');
|
||||||
|
ylim([1e-3, 1e5]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/simscape_model_decoupled_plant_svd.pdf', 'width', 'full', 'height', 'full');
|
exportFig('figs/simscape_model_decoupled_plant_svd.pdf', 'eps', true, 'width', 'wide', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:simscape_model_decoupled_plant_svd
|
#+name: fig:simscape_model_decoupled_plant_svd
|
||||||
@ -1096,11 +1098,12 @@ Let's see the bode plot of the decoupled plant $G_d(s)$.
|
|||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Magnitude'); xlabel('Frequency [Hz]');
|
ylabel('Magnitude'); xlabel('Frequency [Hz]');
|
||||||
legend('location', 'southeast');
|
legend('location', 'northwest');
|
||||||
|
ylim([1e-3, 1e6]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/simscape_model_decoupled_plant_jacobian.pdf', 'width', 'full', 'height', 'full');
|
exportFig('figs/simscape_model_decoupled_plant_jacobian.pdf', 'eps', true, 'width', 'wide', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:simscape_model_decoupled_plant_jacobian
|
#+name: fig:simscape_model_decoupled_plant_jacobian
|
||||||
@ -1212,71 +1215,73 @@ Let's first verify the stability of the closed-loop systems:
|
|||||||
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]].
|
||||||
|
|
||||||
#+begin_src matlab :exports results
|
#+begin_src matlab :exports results
|
||||||
freqs = logspace(-3, 3, 1000);
|
freqs = logspace(-2, 2, 1000);
|
||||||
|
|
||||||
figure
|
figure;
|
||||||
|
tiledlayout(2, 2, 'TileSpacing', 'None', 'Padding', 'None');
|
||||||
|
|
||||||
ax1 = subplot(2, 3, 1);
|
ax1 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
plot(freqs, abs(squeeze(freqresp(G( 'Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', 'Open-Loop');
|
plot(freqs, abs(squeeze(freqresp(G( 'Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', 'Open-Loop');
|
||||||
plot(freqs, abs(squeeze(freqresp(G_cen('Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', 'Centralized');
|
plot(freqs, abs(squeeze(freqresp(G_cen('Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', 'Centralized');
|
||||||
plot(freqs, abs(squeeze(freqresp(G_svd('Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', 'SVD');
|
plot(freqs, abs(squeeze(freqresp(G_svd('Ax', 'Dwx')/s^2, freqs, 'Hz'))), 'DisplayName', 'SVD');
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Transmissibility - $D_x/D_{w,x}$'); xlabel('Frequency [Hz]');
|
ylabel('$D_x/D_{w,x}$, $D_y/D_{w, y}$'); set(gca, 'XTickLabel',[]);
|
||||||
legend('location', 'southwest');
|
legend('location', 'southwest');
|
||||||
|
|
||||||
ax2 = subplot(2, 3, 2);
|
% ax2 = nexttile;
|
||||||
hold on;
|
% hold on;
|
||||||
plot(freqs, abs(squeeze(freqresp(G( 'Ay', 'Dwy')/s^2, freqs, 'Hz'))));
|
% plot(freqs, abs(squeeze(freqresp(G( 'Ay', 'Dwy')/s^2, freqs, 'Hz'))));
|
||||||
plot(freqs, abs(squeeze(freqresp(G_cen('Ay', 'Dwy')/s^2, freqs, 'Hz'))));
|
% plot(freqs, abs(squeeze(freqresp(G_cen('Ay', 'Dwy')/s^2, freqs, 'Hz'))));
|
||||||
plot(freqs, abs(squeeze(freqresp(G_svd('Ay', 'Dwy')/s^2, freqs, 'Hz'))));
|
% plot(freqs, abs(squeeze(freqresp(G_svd('Ay', 'Dwy')/s^2, freqs, 'Hz'))));
|
||||||
hold off;
|
% hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
% set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Transmissibility - $D_y/D_{w,y}$'); xlabel('Frequency [Hz]');
|
% ylabel('Transmissibility - $D_y/D_{w,y}$'); xlabel('Frequency [Hz]');
|
||||||
|
|
||||||
ax3 = subplot(2, 3, 3);
|
ax3 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
plot(freqs, abs(squeeze(freqresp(G( 'Az', 'Dwz')/s^2, freqs, 'Hz'))));
|
plot(freqs, abs(squeeze(freqresp(G( 'Az', 'Dwz')/s^2, freqs, 'Hz'))));
|
||||||
plot(freqs, abs(squeeze(freqresp(G_cen('Az', 'Dwz')/s^2, freqs, 'Hz'))));
|
plot(freqs, abs(squeeze(freqresp(G_cen('Az', 'Dwz')/s^2, freqs, 'Hz'))));
|
||||||
plot(freqs, abs(squeeze(freqresp(G_svd('Az', 'Dwz')/s^2, freqs, 'Hz'))));
|
plot(freqs, abs(squeeze(freqresp(G_svd('Az', 'Dwz')/s^2, freqs, 'Hz'))));
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Transmissibility - $D_z/D_{w,z}$'); xlabel('Frequency [Hz]');
|
ylabel('$D_z/D_{w,z}$'); set(gca, 'XTickLabel',[]);
|
||||||
|
|
||||||
ax4 = subplot(2, 3, 4);
|
ax4 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
plot(freqs, abs(squeeze(freqresp(G( 'Arx', 'Rwx')/s^2, freqs, 'Hz'))));
|
plot(freqs, abs(squeeze(freqresp(G( 'Arx', 'Rwx')/s^2, freqs, 'Hz'))));
|
||||||
plot(freqs, abs(squeeze(freqresp(G_cen('Arx', 'Rwx')/s^2, freqs, 'Hz'))));
|
plot(freqs, abs(squeeze(freqresp(G_cen('Arx', 'Rwx')/s^2, freqs, 'Hz'))));
|
||||||
plot(freqs, abs(squeeze(freqresp(G_svd('Arx', 'Rwx')/s^2, freqs, 'Hz'))));
|
plot(freqs, abs(squeeze(freqresp(G_svd('Arx', 'Rwx')/s^2, freqs, 'Hz'))));
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Transmissibility - $R_x/R_{w,x}$'); xlabel('Frequency [Hz]');
|
ylabel('$R_x/R_{w,x}$, $R_y/R_{w,y}$'); xlabel('Frequency [Hz]');
|
||||||
|
|
||||||
ax5 = subplot(2, 3, 5);
|
% ax5 = nexttile;
|
||||||
hold on;
|
% hold on;
|
||||||
plot(freqs, abs(squeeze(freqresp(G( 'Ary', 'Rwy')/s^2, freqs, 'Hz'))));
|
% plot(freqs, abs(squeeze(freqresp(G( 'Ary', 'Rwy')/s^2, freqs, 'Hz'))));
|
||||||
plot(freqs, abs(squeeze(freqresp(G_cen('Ary', 'Rwy')/s^2, freqs, 'Hz'))));
|
% plot(freqs, abs(squeeze(freqresp(G_cen('Ary', 'Rwy')/s^2, freqs, 'Hz'))));
|
||||||
plot(freqs, abs(squeeze(freqresp(G_svd('Ary', 'Rwy')/s^2, freqs, 'Hz'))));
|
% plot(freqs, abs(squeeze(freqresp(G_svd('Ary', 'Rwy')/s^2, freqs, 'Hz'))));
|
||||||
hold off;
|
% hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
% set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Transmissibility - $R_y/R_{w,y}$'); xlabel('Frequency [Hz]');
|
% ylabel('Transmissibility - $R_y/R_{w,y}$'); xlabel('Frequency [Hz]');
|
||||||
|
|
||||||
ax6 = subplot(2, 3, 6);
|
ax6 = nexttile;
|
||||||
hold on;
|
hold on;
|
||||||
plot(freqs, abs(squeeze(freqresp(G( 'Arz', 'Rwz')/s^2, freqs, 'Hz'))));
|
plot(freqs, abs(squeeze(freqresp(G( 'Arz', 'Rwz')/s^2, freqs, 'Hz'))));
|
||||||
plot(freqs, abs(squeeze(freqresp(G_cen('Arz', 'Rwz')/s^2, freqs, 'Hz'))));
|
plot(freqs, abs(squeeze(freqresp(G_cen('Arz', 'Rwz')/s^2, freqs, 'Hz'))));
|
||||||
plot(freqs, abs(squeeze(freqresp(G_svd('Arz', 'Rwz')/s^2, freqs, 'Hz'))));
|
plot(freqs, abs(squeeze(freqresp(G_svd('Arz', 'Rwz')/s^2, freqs, 'Hz'))));
|
||||||
hold off;
|
hold off;
|
||||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||||
ylabel('Transmissibility - $R_z/R_{w,z}$'); xlabel('Frequency [Hz]');
|
ylabel('$R_z/R_{w,z}$'); xlabel('Frequency [Hz]');
|
||||||
|
|
||||||
linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'x');
|
linkaxes([ax1,ax2,ax3,ax4,ax5,ax6],'xy');
|
||||||
xlim([freqs(1), freqs(end)]);
|
xlim([freqs(1), freqs(end)]);
|
||||||
|
ylim([1e-5, 1e2]);
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :tangle no :exports results :results file replace
|
#+begin_src matlab :tangle no :exports results :results file replace
|
||||||
exportFig('figs/stewart_platform_simscape_cl_transmissibility.pdf', 'width', 1600, 'height', 'full');
|
exportFig('figs/stewart_platform_simscape_cl_transmissibility.pdf', 'eps', true, 'width', 'wide', 'height', 'tall');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:stewart_platform_simscape_cl_transmissibility
|
#+name: fig:stewart_platform_simscape_cl_transmissibility
|
||||||
|
@ -9,6 +9,8 @@ $(function() {
|
|||||||
$('.hint').before("<p class='admonition-title hint'>Hint</p>");
|
$('.hint').before("<p class='admonition-title hint'>Hint</p>");
|
||||||
$('.error').before("<p class='admonition-title error'>Error</p>");
|
$('.error').before("<p class='admonition-title error'>Error</p>");
|
||||||
$('.danger').before("<p class='admonition-title danger'>Danger</p>");
|
$('.danger').before("<p class='admonition-title danger'>Danger</p>");
|
||||||
|
$('.question').before("<p class='admonition-title question'>Question</p>");
|
||||||
|
$('.summary').before("<p class='admonition-title hint'>Summary</p>");
|
||||||
});
|
});
|
||||||
|
|
||||||
$( document ).ready(function() {
|
$( document ).ready(function() {
|
||||||
|