Work on HAC-LAC, Control architectures
This commit is contained in:
@@ -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-27 jeu. 14:16 -->
|
||||
<!-- 2020-02-28 ven. 17:33 -->
|
||||
<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>
|
||||
@@ -249,25 +249,25 @@
|
||||
<li><a href="#orgd59c804">1. Inertial Control</a>
|
||||
<ul>
|
||||
<li><a href="#org5f749c8">1.1. Identification of the Dynamics</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>
|
||||
<li><a href="#org3014959">1.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||
<li><a href="#orga144352">1.3. Obtained Damping</a></li>
|
||||
<li><a href="#org004b094">1.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org74c7eb4">2. Integral Force Feedback</a>
|
||||
<ul>
|
||||
<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>
|
||||
<li><a href="#org7313778">2.1. Identification of the Dynamics with perfect Joints</a></li>
|
||||
<li><a href="#org462c581">2.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||
<li><a href="#org943bf7b">2.3. Obtained Damping</a></li>
|
||||
<li><a href="#orga677c7d">2.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org08917d6">3. Direct Velocity Feedback</a>
|
||||
<ul>
|
||||
<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>
|
||||
<li><a href="#orgcd99b62">3.1. Identification of the Dynamics with perfect Joints</a></li>
|
||||
<li><a href="#orgd0f78f7">3.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
|
||||
<li><a href="#org3f64d96">3.3. Obtained Damping</a></li>
|
||||
<li><a href="#org8e1ece7">3.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org183f3f2">4. Compliance and Transmissibility Comparison</a>
|
||||
@@ -330,6 +330,7 @@ stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</spa
|
||||
<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>);
|
||||
controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -365,8 +366,8 @@ The transfer function from actuator forces to force sensors is shown in Figure <
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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 id="outline-container-org3014959" class="outline-3">
|
||||
<h3 id="org3014959"><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.
|
||||
@@ -402,8 +403,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd895eeb" class="outline-3">
|
||||
<h3 id="orgd895eeb"><span class="section-number-3">1.3</span> Obtained Damping</h3>
|
||||
<div id="outline-container-orga144352" class="outline-3">
|
||||
<h3 id="orga144352"><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.
|
||||
@@ -428,8 +429,8 @@ The root locus is shown in figure <a href="#org9af9e33">3</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgeaf5ef8" class="outline-3">
|
||||
<h3 id="orgeaf5ef8"><span class="section-number-3">1.4</span> Conclusion</h3>
|
||||
<div id="outline-container-org004b094" class="outline-3">
|
||||
<h3 id="org004b094"><span class="section-number-3">1.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<div class="important">
|
||||
<p>
|
||||
@@ -460,8 +461,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">2.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">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.
|
||||
@@ -484,11 +485,7 @@ stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</spa
|
||||
<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 class="org-src-container">
|
||||
<pre class="src src-matlab">controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -496,11 +493,7 @@ payload = initializePayload(<span class="org-string">'type'</span>, <span class=
|
||||
And we identify the dynamics from force actuators to force sensors.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
<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>
|
||||
mdl = <span class="org-string">'stewart_platform_model'</span>;
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
|
||||
@@ -509,7 +502,7 @@ io(io_i) = linio([mdl, <span class="org-string">'/Controller'</span>], 1,
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/Stewart Platform'</span>], 1, <span class="org-string">'openoutput'</span>, [], <span class="org-string">'Taum'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Force Sensor Outputs [N]</span>
|
||||
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
|
||||
G = linearize(mdl, io, options);
|
||||
G = linearize(mdl, io);
|
||||
G.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
G.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">'Fm2'</span>, <span class="org-string">'Fm3'</span>, <span class="org-string">'Fm4'</span>, <span class="org-string">'Fm5'</span>, <span class="org-string">'Fm6'</span>};
|
||||
</pre>
|
||||
@@ -527,15 +520,15 @@ The transfer function from actuator forces to force sensors is shown in Figure <
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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 id="outline-container-org462c581" class="outline-3">
|
||||
<h3 id="org462c581"><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.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical'</span>);
|
||||
Gf = linearize(mdl, io, options);
|
||||
Gf = linearize(mdl, io);
|
||||
Gf.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
Gf.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">'Fm2'</span>, <span class="org-string">'Fm3'</span>, <span class="org-string">'Fm4'</span>, <span class="org-string">'Fm5'</span>, <span class="org-string">'Fm6'</span>};
|
||||
</pre>
|
||||
@@ -546,7 +539,7 @@ We now use the amplified actuators and re-identify the dynamics
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeAmplifiedStrutDynamics(stewart);
|
||||
Ga = linearize(mdl, io, options);
|
||||
Ga = linearize(mdl, io);
|
||||
Ga.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
|
||||
Ga.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">'Fm2'</span>, <span class="org-string">'Fm3'</span>, <span class="org-string">'Fm4'</span>, <span class="org-string">'Fm5'</span>, <span class="org-string">'Fm6'</span>};
|
||||
</pre>
|
||||
@@ -564,8 +557,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9e1f2e2" class="outline-3">
|
||||
<h3 id="org9e1f2e2"><span class="section-number-3">2.3</span> Obtained Damping</h3>
|
||||
<div id="outline-container-org943bf7b" class="outline-3">
|
||||
<h3 id="org943bf7b"><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.
|
||||
@@ -597,8 +590,8 @@ The root locus is shown in figure <a href="#orge21bbea">6</a> and the obtained p
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org405813e" class="outline-3">
|
||||
<h3 id="org405813e"><span class="section-number-3">2.4</span> Conclusion</h3>
|
||||
<div id="outline-container-orga677c7d" class="outline-3">
|
||||
<h3 id="orga677c7d"><span class="section-number-3">2.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<div class="important">
|
||||
<p>
|
||||
@@ -630,8 +623,8 @@ To run the script, open the Simulink Project, and type <code>run active_damping_
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<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 id="outline-container-orgcd99b62" class="outline-3">
|
||||
<h3 id="orgcd99b62"><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.
|
||||
@@ -654,6 +647,7 @@ stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</spa
|
||||
<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>);
|
||||
controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@@ -693,8 +687,8 @@ The transfer function from actuator forces to relative motion sensors is shown i
|
||||
</div>
|
||||
|
||||
|
||||
<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 id="outline-container-orgd0f78f7" class="outline-3">
|
||||
<h3 id="orgd0f78f7"><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.
|
||||
@@ -730,8 +724,8 @@ The new dynamics from force actuator to relative motion sensor is shown in Figur
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga144352" class="outline-3">
|
||||
<h3 id="orga144352"><span class="section-number-3">3.3</span> Obtained Damping</h3>
|
||||
<div id="outline-container-org3f64d96" class="outline-3">
|
||||
<h3 id="org3f64d96"><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.
|
||||
@@ -756,8 +750,8 @@ The root locus is shown in figure <a href="#org277d60d">10</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org004b094" class="outline-3">
|
||||
<h3 id="org004b094"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||
<div id="outline-container-org8e1ece7" class="outline-3">
|
||||
<h3 id="org8e1ece7"><span class="section-number-3">3.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-3-4">
|
||||
<div class="important">
|
||||
<p>
|
||||
@@ -799,6 +793,7 @@ The rotation point of the ground is located at the origin of frame \(\{A\}\).
|
||||
<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>);
|
||||
controller = initializeController(<span class="org-string">'type'</span>, <span class="org-string">'open-loop'</span>);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@@ -822,7 +817,7 @@ Now, let’s identify the transmissibility and compliance for the Integral F
|
||||
</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);
|
||||
K_iff = (1e4<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();
|
||||
@@ -834,7 +829,7 @@ 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);
|
||||
K_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();
|
||||
@@ -872,7 +867,7 @@ G_dvf = 1e4<span class="org-type">*</span>s<span class="org-type">/</span>(1<spa
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-02-27 jeu. 14:16</p>
|
||||
<p class="date">Created: 2020-02-28 ven. 17:33</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
Reference in New Issue
Block a user