Transmissibility and Compliance comp IFF/DVF/OL

This commit is contained in:
2020-02-27 14:23:09 +01:00
parent 1321d12e4d
commit c1ca4b3b78
18 changed files with 1663 additions and 783 deletions

View File

@@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-13 jeu. 16:46 -->
<!-- 2020-02-27 jeu. 14:16 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Decentralized Active Damping</title>
@@ -201,50 +201,28 @@
<script src="./js/jquery.stickytableheaders.min.js"></script>
<script src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
// @license-end
</script>
<script>
MathJax = {
@@ -271,25 +249,32 @@ for the JavaScript code in this tag.
<li><a href="#orgd59c804">1. Inertial Control</a>
<ul>
<li><a href="#org5f749c8">1.1. Identification of the Dynamics</a></li>
<li><a href="#org07e81b1">1.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
<li><a href="#org53a0870">1.3. Obtained Damping</a></li>
<li><a href="#org51b20eb">1.4. Conclusion</a></li>
<li><a href="#orgd637197">1.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
<li><a href="#orgd895eeb">1.3. Obtained Damping</a></li>
<li><a href="#orgeaf5ef8">1.4. Conclusion</a></li>
</ul>
</li>
<li><a href="#org74c7eb4">2. Integral Force Feedback</a>
<ul>
<li><a href="#org9e45139">2.1. Identification of the Dynamics with perfect Joints</a></li>
<li><a href="#org494bb35">2.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
<li><a href="#org947ca92">2.3. Obtained Damping</a></li>
<li><a href="#orgade2418">2.4. Conclusion</a></li>
<li><a href="#orgcaa6199">2.1. Identification of the Dynamics with perfect Joints</a></li>
<li><a href="#org1910546">2.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
<li><a href="#org9e1f2e2">2.3. Obtained Damping</a></li>
<li><a href="#org405813e">2.4. Conclusion</a></li>
</ul>
</li>
<li><a href="#org08917d6">3. Direct Velocity Feedback</a>
<ul>
<li><a href="#orgcaa6199">3.1. Identification of the Dynamics with perfect Joints</a></li>
<li><a href="#orgd637197">3.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
<li><a href="#orgd895eeb">3.3. Obtained Damping</a></li>
<li><a href="#orgeaf5ef8">3.4. Conclusion</a></li>
<li><a href="#org7313778">3.1. Identification of the Dynamics with perfect Joints</a></li>
<li><a href="#org3014959">3.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
<li><a href="#orga144352">3.3. Obtained Damping</a></li>
<li><a href="#org004b094">3.4. Conclusion</a></li>
</ul>
</li>
<li><a href="#org183f3f2">4. Compliance and Transmissibility Comparison</a>
<ul>
<li><a href="#org0ed1499">4.1. Initialization</a></li>
<li><a href="#orgcd64c04">4.2. Identification</a></li>
<li><a href="#orgd30c62d">4.3. Results</a></li>
</ul>
</li>
</ul>
@@ -343,7 +328,7 @@ stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</spa
</div>
<div class="org-src-container">
<pre class="src src-matlab">ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
<pre class="src src-matlab">ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'rot_point'</span>, stewart.platform_F.FO_A);
payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre>
</div>
@@ -380,8 +365,8 @@ The transfer function from actuator forces to force sensors is shown in Figure <
</div>
</div>
<div id="outline-container-org07e81b1" class="outline-3">
<h3 id="org07e81b1"><span class="section-number-3">1.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
<div id="outline-container-orgd637197" class="outline-3">
<h3 id="orgd637197"><span class="section-number-3">1.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
<div class="outline-text-3" id="text-1-2">
<p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
@@ -417,8 +402,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
</div>
</div>
<div id="outline-container-org53a0870" class="outline-3">
<h3 id="org53a0870"><span class="section-number-3">1.3</span> Obtained Damping</h3>
<div id="outline-container-orgd895eeb" class="outline-3">
<h3 id="orgd895eeb"><span class="section-number-3">1.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-1-3">
<p>
The control is a performed in a decentralized manner.
@@ -443,8 +428,8 @@ The root locus is shown in figure <a href="#org9af9e33">3</a>.
</div>
</div>
<div id="outline-container-org51b20eb" class="outline-3">
<h3 id="org51b20eb"><span class="section-number-3">1.4</span> Conclusion</h3>
<div id="outline-container-orgeaf5ef8" class="outline-3">
<h3 id="orgeaf5ef8"><span class="section-number-3">1.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-1-4">
<div class="important">
<p>
@@ -475,8 +460,8 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
</div>
</div>
<div id="outline-container-org9e45139" class="outline-3">
<h3 id="org9e45139"><span class="section-number-3">2.1</span> Identification of the Dynamics with perfect Joints</h3>
<div id="outline-container-orgcaa6199" class="outline-3">
<h3 id="orgcaa6199"><span class="section-number-3">2.1</span> Identification of the Dynamics with perfect Joints</h3>
<div class="outline-text-3" id="text-2-1">
<p>
We first initialize the Stewart platform without joint stiffness.
@@ -497,11 +482,16 @@ stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</spa
</div>
<div class="org-src-container">
<pre class="src src-matlab">ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
<pre class="src src-matlab">ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'rot_point'</span>, stewart.platform_F.FO_A);
payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
</pre>
</div>
<p>
And we identify the dynamics from force actuators to force sensors.
</p>
@@ -537,8 +527,8 @@ The transfer function from actuator forces to force sensors is shown in Figure <
</div>
</div>
<div id="outline-container-org494bb35" class="outline-3">
<h3 id="org494bb35"><span class="section-number-3">2.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
<div id="outline-container-org1910546" class="outline-3">
<h3 id="org1910546"><span class="section-number-3">2.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
<div class="outline-text-3" id="text-2-2">
<p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
@@ -574,8 +564,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
</div>
</div>
<div id="outline-container-org947ca92" class="outline-3">
<h3 id="org947ca92"><span class="section-number-3">2.3</span> Obtained Damping</h3>
<div id="outline-container-org9e1f2e2" class="outline-3">
<h3 id="org9e1f2e2"><span class="section-number-3">2.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-2-3">
<p>
The control is a performed in a decentralized manner.
@@ -607,8 +597,8 @@ The root locus is shown in figure <a href="#orge21bbea">6</a> and the obtained p
</div>
</div>
<div id="outline-container-orgade2418" class="outline-3">
<h3 id="orgade2418"><span class="section-number-3">2.4</span> Conclusion</h3>
<div id="outline-container-org405813e" class="outline-3">
<h3 id="org405813e"><span class="section-number-3">2.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-4">
<div class="important">
<p>
@@ -640,8 +630,8 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
</div>
</div>
<div id="outline-container-orgcaa6199" class="outline-3">
<h3 id="orgcaa6199"><span class="section-number-3">3.1</span> Identification of the Dynamics with perfect Joints</h3>
<div id="outline-container-org7313778" class="outline-3">
<h3 id="org7313778"><span class="section-number-3">3.1</span> Identification of the Dynamics with perfect Joints</h3>
<div class="outline-text-3" id="text-3-1">
<p>
We first initialize the Stewart platform without joint stiffness.
@@ -662,7 +652,7 @@ stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</spa
</div>
<div class="org-src-container">
<pre class="src src-matlab">ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
<pre class="src src-matlab">ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'rot_point'</span>, stewart.platform_F.FO_A);
payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre>
</div>
@@ -703,8 +693,8 @@ The transfer function from actuator forces to relative motion sensors is shown i
</div>
<div id="outline-container-orgd637197" class="outline-3">
<h3 id="orgd637197"><span class="section-number-3">3.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
<div id="outline-container-org3014959" class="outline-3">
<h3 id="org3014959"><span class="section-number-3">3.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
<div class="outline-text-3" id="text-3-2">
<p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
@@ -740,8 +730,8 @@ The new dynamics from force actuator to relative motion sensor is shown in Figur
</div>
</div>
<div id="outline-container-orgd895eeb" class="outline-3">
<h3 id="orgd895eeb"><span class="section-number-3">3.3</span> Obtained Damping</h3>
<div id="outline-container-orga144352" class="outline-3">
<h3 id="orga144352"><span class="section-number-3">3.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-3-3">
<p>
The control is a performed in a decentralized manner.
@@ -766,14 +756,115 @@ The root locus is shown in figure <a href="#org277d60d">10</a>.
</div>
</div>
<div id="outline-container-orgeaf5ef8" class="outline-3">
<h3 id="orgeaf5ef8"><span class="section-number-3">3.4</span> Conclusion</h3>
<div id="outline-container-org004b094" class="outline-3">
<h3 id="org004b094"><span class="section-number-3">3.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-4">
<div class="important">
<p>
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors.
</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org183f3f2" class="outline-2">
<h2 id="org183f3f2"><span class="section-number-2">4</span> Compliance and Transmissibility Comparison</h2>
<div class="outline-text-2" id="text-4">
</div>
<div id="outline-container-org0ed1499" class="outline-3">
<h3 id="org0ed1499"><span class="section-number-3">4.1</span> Initialization</h3>
<div class="outline-text-3" id="text-4-1">
<p>
We first initialize the Stewart platform without joint stiffness.
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical_p'</span>);
stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre>
</div>
<p>
The rotation point of the ground is located at the origin of frame \(\{A\}\).
</p>
<div class="org-src-container">
<pre class="src src-matlab">ground = initializeGround(<span class="org-string">'type'</span>, <span class="org-string">'rigid'</span>, <span class="org-string">'rot_point'</span>, stewart.platform_F.FO_A);
payload = initializePayload(<span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgcd64c04" class="outline-3">
<h3 id="orgcd64c04"><span class="section-number-3">4.2</span> Identification</h3>
<div class="outline-text-3" id="text-4-2">
<p>
Let&rsquo;s first identify the transmissibility and compliance in the open-loop case.
</p>
<div class="org-src-container">
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
[T_ol, T_norm_ol, freqs] = computeTransmissibility();
[C_ol, C_norm_ol, freqs] = computeCompliance();
</pre>
</div>
<p>
Now, let&rsquo;s identify the transmissibility and compliance for the Integral Force Feedback architecture.
</p>
<div class="org-src-container">
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'iff'</span>);
G_iff = (2e4<span class="org-type">/</span>s)<span class="org-type">*</span>eye(6);
[T_iff, T_norm_iff, <span class="org-type">~</span>] = computeTransmissibility();
[C_iff, C_norm_iff, <span class="org-type">~</span>] = computeCompliance();
</pre>
</div>
<p>
And for the Direct Velocity Feedback.
</p>
<div class="org-src-container">
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'dvf'</span>);
G_dvf = 1e4<span class="org-type">*</span>s<span class="org-type">/</span>(1<span class="org-type">+</span>s<span class="org-type">/</span>2<span class="org-type">/</span><span class="org-constant">pi</span><span class="org-type">/</span>5000)<span class="org-type">*</span>eye(6);
[T_dvf, T_norm_dvf, <span class="org-type">~</span>] = computeTransmissibility();
[C_dvf, C_norm_dvf, <span class="org-type">~</span>] = computeCompliance();
</pre>
</div>
</div>
</div>
<div id="outline-container-orgd30c62d" class="outline-3">
<h3 id="orgd30c62d"><span class="section-number-3">4.3</span> Results</h3>
<div class="outline-text-3" id="text-4-3">
<div id="org6691389" class="figure">
<p><img src="figs/transmissibility_iff_dvf.png" alt="transmissibility_iff_dvf.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Obtained transmissibility for Open-Loop Control (Blue), Integral Force Feedback (Red) and Direct Velocity Feedback (Yellow) (<a href="./figs/transmissibility_iff_dvf.png">png</a>, <a href="./figs/transmissibility_iff_dvf.pdf">pdf</a>)</p>
</div>
<div id="orgd29218a" class="figure">
<p><img src="figs/compliance_iff_dvf.png" alt="compliance_iff_dvf.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Obtained compliance for Open-Loop Control (Blue), Integral Force Feedback (Red) and Direct Velocity Feedback (Yellow) (<a href="./figs/compliance_iff_dvf.png">png</a>, <a href="./figs/compliance_iff_dvf.pdf">pdf</a>)</p>
</div>
<div id="org2ee9711" class="figure">
<p><img src="figs/frobenius_norm_T_C_iff_dvf.png" alt="frobenius_norm_T_C_iff_dvf.png" />
</p>
<p><span class="figure-number">Figure 13: </span>Frobenius norm of the Transmissibility and Compliance Matrices (<a href="./figs/frobenius_norm_T_C_iff_dvf.png">png</a>, <a href="./figs/frobenius_norm_T_C_iff_dvf.pdf">pdf</a>)</p>
</div>
</div>
</div>
@@ -781,7 +872,7 @@ Joint stiffness does increase the resonance frequencies of the system but does n
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-13 jeu. 16:46</p>
<p class="date">Created: 2020-02-27 jeu. 14:16</p>
</div>
</body>
</html>