Implemented amplified actuators
This commit is contained in:
parent
945741a795
commit
1466105c77
@ -3,7 +3,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-05-20 mer. 15:49 -->
|
||||
<!-- 2020-05-20 mer. 16:41 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Amplified Piezoelectric Stack Actuator</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
@ -36,19 +36,27 @@
|
||||
<ul>
|
||||
<li><a href="#org996fd7c">1. Simplified Model</a>
|
||||
<ul>
|
||||
<li><a href="#org47cc3c4">1.1. Parameters</a></li>
|
||||
<li><a href="#org3b3c7ac">1.2. Identification</a></li>
|
||||
<li><a href="#org97f356d">1.3. Root Locus</a></li>
|
||||
<li><a href="#org0dc544d">1.1. Parameters</a></li>
|
||||
<li><a href="#org08e3567">1.2. Identification</a></li>
|
||||
<li><a href="#orgbba342e">1.3. Root Locus</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgf1a765f">2. Rotating X-Y platform</a>
|
||||
<ul>
|
||||
<li><a href="#org0dc544d">2.1. Parameters</a></li>
|
||||
<li><a href="#org08e3567">2.2. Identification</a></li>
|
||||
<li><a href="#orgbba342e">2.3. Root Locus</a></li>
|
||||
<li><a href="#org1e2b26f">2.1. Parameters</a></li>
|
||||
<li><a href="#orgb0841c5">2.2. Identification</a></li>
|
||||
<li><a href="#orgd6c324c">2.3. Root Locus</a></li>
|
||||
<li><a href="#org069f401">2.4. Analysis</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org3c74f7f">3. Stewart Platform with Amplified Actuators</a>
|
||||
<ul>
|
||||
<li><a href="#org5a7c6dc">3.1. Initialization</a></li>
|
||||
<li><a href="#orgac18acf">3.2. Identification</a></li>
|
||||
<li><a href="#org14c7063">3.3. Controller Design</a></li>
|
||||
<li><a href="#org043ce40">3.4. Effect of the Low Authority Control on the Primary Plant</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@ -123,8 +131,8 @@ The parameters are shown in the table below.
|
||||
<h2 id="org996fd7c"><span class="section-number-2">1</span> Simplified Model</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
</div>
|
||||
<div id="outline-container-org47cc3c4" class="outline-3">
|
||||
<h3 id="org47cc3c4"><span class="section-number-3">1.1</span> Parameters</h3>
|
||||
<div id="outline-container-org0dc544d" class="outline-3">
|
||||
<h3 id="org0dc544d"><span class="section-number-3">1.1</span> Parameters</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">m = 1; % [kg]
|
||||
@ -154,8 +162,8 @@ IFF Controller:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3b3c7ac" class="outline-3">
|
||||
<h3 id="org3b3c7ac"><span class="section-number-3">1.2</span> Identification</h3>
|
||||
<div id="outline-container-org08e3567" class="outline-3">
|
||||
<h3 id="org08e3567"><span class="section-number-3">1.2</span> Identification</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
Identification in open-loop.
|
||||
@ -210,8 +218,8 @@ Giff.OutputName = {'Fs', 'x1'};
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org97f356d" class="outline-3">
|
||||
<h3 id="org97f356d"><span class="section-number-3">1.3</span> Root Locus</h3>
|
||||
<div id="outline-container-orgbba342e" class="outline-3">
|
||||
<h3 id="orgbba342e"><span class="section-number-3">1.3</span> Root Locus</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
|
||||
<div id="org85cd6e5" class="figure">
|
||||
@ -227,8 +235,8 @@ Giff.OutputName = {'Fs', 'x1'};
|
||||
<h2 id="orgf1a765f"><span class="section-number-2">2</span> Rotating X-Y platform</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
</div>
|
||||
<div id="outline-container-org0dc544d" class="outline-3">
|
||||
<h3 id="org0dc544d"><span class="section-number-3">2.1</span> Parameters</h3>
|
||||
<div id="outline-container-org1e2b26f" class="outline-3">
|
||||
<h3 id="org1e2b26f"><span class="section-number-3">2.1</span> Parameters</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">m = 1; % [kg]
|
||||
@ -255,8 +263,8 @@ h = 0.2; % [m]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org08e3567" class="outline-3">
|
||||
<h3 id="org08e3567"><span class="section-number-3">2.2</span> Identification</h3>
|
||||
<div id="outline-container-orgb0841c5" class="outline-3">
|
||||
<h3 id="orgb0841c5"><span class="section-number-3">2.2</span> Identification</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
Rotating speed in rad/s:
|
||||
@ -305,8 +313,8 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbba342e" class="outline-3">
|
||||
<h3 id="orgbba342e"><span class="section-number-3">2.3</span> Root Locus</h3>
|
||||
<div id="outline-container-orgd6c324c" class="outline-3">
|
||||
<h3 id="orgd6c324c"><span class="section-number-3">2.3</span> Root Locus</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
|
||||
<div id="orgccd3396" class="figure">
|
||||
@ -368,10 +376,115 @@ end
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3c74f7f" class="outline-2">
|
||||
<h2 id="org3c74f7f"><span class="section-number-2">3</span> Stewart Platform with Amplified Actuators</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
</div>
|
||||
<div id="outline-container-org5a7c6dc" class="outline-3">
|
||||
<h3 id="org5a7c6dc"><span class="section-number-3">3.1</span> Initialization</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
|
||||
initializeSimscapeConfiguration();
|
||||
initializeDisturbances('enable', false);
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
|
||||
initializeController('type', 'hac-iff');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We set the stiffness of the payload fixation:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kp = 1e8; % [N/m]
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgac18acf" class="outline-3">
|
||||
<h3 id="orgac18acf"><span class="section-number-3">3.2</span> Identification</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">K = tf(zeros(6));
|
||||
Kiff = tf(zeros(6));
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We identify the system for the following payload masses:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Ms = [1, 10, 50];
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The nano-hexapod has the following leg’s stiffness and damping.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">initializeNanoHexapod('actuator', 'amplified');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org14c7063" class="outline-3">
|
||||
<h3 id="org14c7063"><span class="section-number-3">3.3</span> Controller Design</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
|
||||
<div id="org0e2911a" class="figure">
|
||||
<p><img src="figs/amplified_piezo_iff_loop_gain.png" alt="amplified_piezo_iff_loop_gain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Dynamics for the Integral Force Feedback for three payload masses</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="org5d7f6d3" class="figure">
|
||||
<p><img src="figs/amplified_piezo_iff_root_locus.png" alt="amplified_piezo_iff_root_locus.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Root Locus for the IFF control for three payload masses</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Damping as function of the gain
|
||||
</p>
|
||||
|
||||
<div id="org4743c83" class="figure">
|
||||
<p><img src="figs/amplified_piezo_iff_damping_gain.png" alt="amplified_piezo_iff_damping_gain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Damping ratio of the poles as a function of the IFF gain</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Finally, we use the following controller for the Decentralized Direct Velocity Feedback:
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kiff = -1e4/s*eye(6);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org043ce40" class="outline-3">
|
||||
<h3 id="org043ce40"><span class="section-number-3">3.4</span> Effect of the Low Authority Control on the Primary Plant</h3>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-20 mer. 15:49</p>
|
||||
<p class="date">Created: 2020-05-20 mer. 16:41</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
BIN
docs/figs/amplified_piezo_iff_damping_gain.pdf
Normal file
BIN
docs/figs/amplified_piezo_iff_damping_gain.pdf
Normal file
Binary file not shown.
BIN
docs/figs/amplified_piezo_iff_damping_gain.png
Normal file
BIN
docs/figs/amplified_piezo_iff_damping_gain.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 242 KiB |
BIN
docs/figs/amplified_piezo_iff_loop_gain.pdf
Normal file
BIN
docs/figs/amplified_piezo_iff_loop_gain.pdf
Normal file
Binary file not shown.
BIN
docs/figs/amplified_piezo_iff_loop_gain.png
Normal file
BIN
docs/figs/amplified_piezo_iff_loop_gain.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 144 KiB |
BIN
docs/figs/amplified_piezo_iff_root_locus.pdf
Normal file
BIN
docs/figs/amplified_piezo_iff_root_locus.pdf
Normal file
Binary file not shown.
BIN
docs/figs/amplified_piezo_iff_root_locus.png
Normal file
BIN
docs/figs/amplified_piezo_iff_root_locus.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 100 KiB |
@ -3,7 +3,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-05-20 mer. 15:49 -->
|
||||
<!-- 2020-05-20 mer. 16:41 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Control of the NASS with optimal stiffness</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
@ -41,7 +41,7 @@
|
||||
<li><a href="#orgfef1a3f">1.3. Controller Design</a></li>
|
||||
<li><a href="#org3c73014">1.4. Effect of the Low Authority Control on the Primary Plant</a></li>
|
||||
<li><a href="#orgee5dbee">1.5. Effect of the Low Authority Control on the Sensibility to Disturbances</a></li>
|
||||
<li><a href="#orgd9e52e3">1.6. Conclusion</a></li>
|
||||
<li><a href="#orgdc2eb5a">1.6. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org81dc0a8">2. Primary Control in the leg space</a>
|
||||
@ -50,23 +50,23 @@
|
||||
<li><a href="#orgf39520c">2.2. Control in the leg space</a></li>
|
||||
<li><a href="#org16d192f">2.3. Sensibility to Disturbances and Noise Budget</a></li>
|
||||
<li><a href="#org8f34c09">2.4. Simulations of Tomography Experiment</a></li>
|
||||
<li><a href="#org66b4613">2.5. Results</a></li>
|
||||
<li><a href="#orgcc19864">2.5. Results</a></li>
|
||||
<li><a href="#orgf709759">2.6. Actuator Stroke and Forces</a></li>
|
||||
<li><a href="#org3b6d331">2.7. Conclusion</a></li>
|
||||
<li><a href="#orgcf22d67">2.7. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org56b28cd">3. Further More complex simulations</a>
|
||||
<ul>
|
||||
<li><a href="#org6c1ddb5">3.1. Simulation with Micro-Hexapod Offset</a>
|
||||
<ul>
|
||||
<li><a href="#orgcd1c705">3.1.1. Simulation</a></li>
|
||||
<li><a href="#org3387265">3.1.2. Results</a></li>
|
||||
<li><a href="#org78cec1a">3.1.1. Simulation</a></li>
|
||||
<li><a href="#org53a553d">3.1.2. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org5cb899b">3.2. Simultaneous Translation scans and Spindle’s rotation</a>
|
||||
<ul>
|
||||
<li><a href="#org48f5ed8">3.2.1. Simulation</a></li>
|
||||
<li><a href="#orgcc19864">3.2.2. Results</a></li>
|
||||
<li><a href="#orgf715899">3.2.1. Simulation</a></li>
|
||||
<li><a href="#org056af12">3.2.2. Results</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -79,8 +79,8 @@
|
||||
<li><a href="#orgb28634b">4.2.1. Stability</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org78cec1a">4.3. Simulation</a></li>
|
||||
<li><a href="#orgdc2eb5a">4.4. Conclusion</a></li>
|
||||
<li><a href="#org8bd1f9d">4.3. Simulation</a></li>
|
||||
<li><a href="#org3cfdfa3">4.4. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -184,7 +184,7 @@ In order to choose the gain such that we obtain good damping for all the three p
|
||||
<div id="org5814b4f" class="figure">
|
||||
<p><img src="figs/opt_stiff_dvf_root_locus.png" alt="opt_stiff_dvf_root_locus.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Root Locus for the DVF controll for three payload masses</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Root Locus for the DVF control for three payload masses</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
@ -324,8 +324,8 @@ Decentralized Direct Velocity Feedback is shown to increase the effect of stages
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd9e52e3" class="outline-3">
|
||||
<h3 id="orgd9e52e3"><span class="section-number-3">1.6</span> Conclusion</h3>
|
||||
<div id="outline-container-orgdc2eb5a" class="outline-3">
|
||||
<h3 id="orgdc2eb5a"><span class="section-number-3">1.6</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-1-6">
|
||||
<div class="important">
|
||||
<p>
|
||||
@ -512,8 +512,8 @@ And we run the simulation for all three payload Masses.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org66b4613" class="outline-3">
|
||||
<h3 id="org66b4613"><span class="section-number-3">2.5</span> Results</h3>
|
||||
<div id="outline-container-orgcc19864" class="outline-3">
|
||||
<h3 id="orgcc19864"><span class="section-number-3">2.5</span> Results</h3>
|
||||
<div class="outline-text-3" id="text-2-5">
|
||||
<p>
|
||||
Let’s now see how this controller performs.
|
||||
@ -572,8 +572,8 @@ Finally, the time domain position error signals are shown in Figure <a href="#or
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3b6d331" class="outline-3">
|
||||
<h3 id="org3b6d331"><span class="section-number-3">2.7</span> Conclusion</h3>
|
||||
<div id="outline-container-orgcf22d67" class="outline-3">
|
||||
<h3 id="orgcf22d67"><span class="section-number-3">2.7</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-7">
|
||||
<div class="important">
|
||||
<p>
|
||||
@ -593,8 +593,8 @@ Finally, the time domain position error signals are shown in Figure <a href="#or
|
||||
<h3 id="org6c1ddb5"><span class="section-number-3">3.1</span> Simulation with Micro-Hexapod Offset</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
</div>
|
||||
<div id="outline-container-orgcd1c705" class="outline-4">
|
||||
<h4 id="orgcd1c705"><span class="section-number-4">3.1.1</span> Simulation</h4>
|
||||
<div id="outline-container-org78cec1a" class="outline-4">
|
||||
<h4 id="org78cec1a"><span class="section-number-4">3.1.1</span> Simulation</h4>
|
||||
<div class="outline-text-4" id="text-3-1-1">
|
||||
<p>
|
||||
The micro-hexapod is inducing a 10mm offset of the sample center of mass with the rotation axis.
|
||||
@ -622,8 +622,8 @@ sim('nass_model');
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3387265" class="outline-4">
|
||||
<h4 id="org3387265"><span class="section-number-4">3.1.2</span> Results</h4>
|
||||
<div id="outline-container-org53a553d" class="outline-4">
|
||||
<h4 id="org53a553d"><span class="section-number-4">3.1.2</span> Results</h4>
|
||||
<div class="outline-text-4" id="text-3-1-2">
|
||||
|
||||
<div id="org6be7e46" class="figure">
|
||||
@ -650,8 +650,8 @@ sim('nass_model');
|
||||
<h3 id="org5cb899b"><span class="section-number-3">3.2</span> Simultaneous Translation scans and Spindle’s rotation</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
</div>
|
||||
<div id="outline-container-org48f5ed8" class="outline-4">
|
||||
<h4 id="org48f5ed8"><span class="section-number-4">3.2.1</span> Simulation</h4>
|
||||
<div id="outline-container-orgf715899" class="outline-4">
|
||||
<h4 id="orgf715899"><span class="section-number-4">3.2.1</span> Simulation</h4>
|
||||
<div class="outline-text-4" id="text-3-2-1">
|
||||
<p>
|
||||
A simulation is now performed with translation scans and spindle rotation at the same time.
|
||||
@ -674,8 +674,8 @@ initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcc19864" class="outline-4">
|
||||
<h4 id="orgcc19864"><span class="section-number-4">3.2.2</span> Results</h4>
|
||||
<div id="outline-container-org056af12" class="outline-4">
|
||||
<h4 id="org056af12"><span class="section-number-4">3.2.2</span> Results</h4>
|
||||
<div class="outline-text-4" id="text-3-2-2">
|
||||
|
||||
<div id="orgbfa1d02" class="figure">
|
||||
@ -778,11 +778,11 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org78cec1a" class="outline-3">
|
||||
<h3 id="org78cec1a"><span class="section-number-3">4.3</span> Simulation</h3>
|
||||
<div id="outline-container-org8bd1f9d" class="outline-3">
|
||||
<h3 id="org8bd1f9d"><span class="section-number-3">4.3</span> Simulation</h3>
|
||||
</div>
|
||||
<div id="outline-container-orgdc2eb5a" class="outline-3">
|
||||
<h3 id="orgdc2eb5a"><span class="section-number-3">4.4</span> Conclusion</h3>
|
||||
<div id="outline-container-org3cfdfa3" class="outline-3">
|
||||
<h3 id="org3cfdfa3"><span class="section-number-3">4.4</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-4-4">
|
||||
<div class="important">
|
||||
<p>
|
||||
@ -796,7 +796,7 @@ end
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-20 mer. 15:49</p>
|
||||
<p class="date">Created: 2020-05-20 mer. 16:41</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -3,7 +3,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-05-20 mer. 15:49 -->
|
||||
<!-- 2020-05-20 mer. 16:41 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Stewart Platform - Simscape Model</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
@ -36,85 +36,85 @@
|
||||
<ul>
|
||||
<li><a href="#orgcaca5e0">1. <code>initializeStewartPlatform</code>: Initialize the Stewart Platform structure</a>
|
||||
<ul>
|
||||
<li><a href="#org5817617">Documentation</a></li>
|
||||
<li><a href="#org7d81110">Function description</a></li>
|
||||
<li><a href="#org8dc2620">Documentation</a></li>
|
||||
<li><a href="#orgb2b186c">Function description</a></li>
|
||||
<li><a href="#org3622825">Initialize the Stewart structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgac25f89">2. <code>initializeFramesPositions</code>: Initialize the positions of frames {A}, {B}, {F} and {M}</a>
|
||||
<ul>
|
||||
<li><a href="#org60fadfe">Documentation</a></li>
|
||||
<li><a href="#org3f0f259">Function description</a></li>
|
||||
<li><a href="#orgada2d6f">Optional Parameters</a></li>
|
||||
<li><a href="#org736bb40">Documentation</a></li>
|
||||
<li><a href="#orgb82d77f">Function description</a></li>
|
||||
<li><a href="#org8e4bfab">Optional Parameters</a></li>
|
||||
<li><a href="#org7d50d54">Compute the position of each frame</a></li>
|
||||
<li><a href="#orgd7c92be">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#orgecc27b3">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgccb31c6">3. <code>generateGeneralConfiguration</code>: Generate a Very General Configuration</a>
|
||||
<ul>
|
||||
<li><a href="#org722f89f">Documentation</a></li>
|
||||
<li><a href="#org37642a9">Function description</a></li>
|
||||
<li><a href="#org8175ecb">Optional Parameters</a></li>
|
||||
<li><a href="#orgc9244b9">Compute the pose</a></li>
|
||||
<li><a href="#org010e928">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#orgd270a86">Documentation</a></li>
|
||||
<li><a href="#org22aadcf">Function description</a></li>
|
||||
<li><a href="#orga6492a4">Optional Parameters</a></li>
|
||||
<li><a href="#org3231a85">Compute the pose</a></li>
|
||||
<li><a href="#org13d89d2">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org9944c04">4. <code>computeJointsPose</code>: Compute the Pose of the Joints</a>
|
||||
<ul>
|
||||
<li><a href="#org1084538">Documentation</a></li>
|
||||
<li><a href="#org1da2a38">Function description</a></li>
|
||||
<li><a href="#org02f1320">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#orgf8b573b">Documentation</a></li>
|
||||
<li><a href="#org85d30c9">Function description</a></li>
|
||||
<li><a href="#org87cdb4a">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#orge87b302">Compute the position of the Joints</a></li>
|
||||
<li><a href="#org3a7e3c5">Compute the strut length and orientation</a></li>
|
||||
<li><a href="#org9e1258f">Compute the orientation of the Joints</a></li>
|
||||
<li><a href="#orgab9893e">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#org47a4205">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org1315282">5. <code>initializeStewartPose</code>: Determine the initial stroke in each leg to have the wanted pose</a>
|
||||
<ul>
|
||||
<li><a href="#org3df7fa5">Function description</a></li>
|
||||
<li><a href="#org7ad7e23">Optional Parameters</a></li>
|
||||
<li><a href="#org9a7c718">Function description</a></li>
|
||||
<li><a href="#orga7f6cb4">Optional Parameters</a></li>
|
||||
<li><a href="#orgbb9abb5">Use the Inverse Kinematic function</a></li>
|
||||
<li><a href="#org8f6d297">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#orga35dd52">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org4674203">6. <code>initializeCylindricalPlatforms</code>: Initialize the geometry of the Fixed and Mobile Platforms</a>
|
||||
<ul>
|
||||
<li><a href="#org600d8b6">Function description</a></li>
|
||||
<li><a href="#org7126edc">Optional Parameters</a></li>
|
||||
<li><a href="#orge53472d">Function description</a></li>
|
||||
<li><a href="#orgc31cfe7">Optional Parameters</a></li>
|
||||
<li><a href="#orgf654de0">Compute the Inertia matrices of platforms</a></li>
|
||||
<li><a href="#org1282acb">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#orga779e2f">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgb0a1d7b">7. <code>initializeCylindricalStruts</code>: Define the inertia of cylindrical struts</a>
|
||||
<ul>
|
||||
<li><a href="#org415806e">Function description</a></li>
|
||||
<li><a href="#org46ba207">Optional Parameters</a></li>
|
||||
<li><a href="#orgf6fcb94">Function description</a></li>
|
||||
<li><a href="#org8990e71">Optional Parameters</a></li>
|
||||
<li><a href="#orgd943059">Compute the properties of the cylindrical struts</a></li>
|
||||
<li><a href="#orgec9a313">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#org53395cc">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgae8d0dc">8. <code>initializeStrutDynamics</code>: Add Stiffness and Damping properties of each strut</a>
|
||||
<ul>
|
||||
<li><a href="#org1e0bcd1">Documentation</a></li>
|
||||
<li><a href="#org70074aa">Function description</a></li>
|
||||
<li><a href="#orgc77ced4">Optional Parameters</a></li>
|
||||
<li><a href="#org15ad3b5">Documentation</a></li>
|
||||
<li><a href="#org5318aec">Function description</a></li>
|
||||
<li><a href="#org153d169">Optional Parameters</a></li>
|
||||
<li><a href="#org3c2e550">Add Stiffness and Damping properties of each strut</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org682a09c">9. <code>initializeAmplifiedStrutDynamics</code>: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator</a>
|
||||
<ul>
|
||||
<li><a href="#orgb4491ea">Documentation</a></li>
|
||||
<li><a href="#org32024c4">Function description</a></li>
|
||||
<li><a href="#orgb9c096a">Optional Parameters</a></li>
|
||||
<li><a href="#orgc4169f8">Documentation</a></li>
|
||||
<li><a href="#org44de918">Function description</a></li>
|
||||
<li><a href="#org3966929">Optional Parameters</a></li>
|
||||
<li><a href="#org2e42182">Compute the total stiffness and damping</a></li>
|
||||
<li><a href="#orgd8d2d38">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#orgfed23b2">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgbc5232e">10. <code>initializeJointDynamics</code>: Add Stiffness and Damping properties for spherical joints</a>
|
||||
<ul>
|
||||
<li><a href="#org9987af0">Function description</a></li>
|
||||
<li><a href="#orgfa09700">Optional Parameters</a></li>
|
||||
<li><a href="#orgcc4b26d">Function description</a></li>
|
||||
<li><a href="#org047804e">Optional Parameters</a></li>
|
||||
<li><a href="#orgd5b8278">Add Actuator Type</a></li>
|
||||
<li><a href="#org51cf135">Add Stiffness and Damping in Translation of each strut</a></li>
|
||||
<li><a href="#org1e8eceb">Add Stiffness and Damping in Rotation of each strut</a></li>
|
||||
@ -124,17 +124,17 @@
|
||||
<ul>
|
||||
<li><a href="#orgcfc37af">Geophone - Working Principle</a></li>
|
||||
<li><a href="#org986e38f">Accelerometer - Working Principle</a></li>
|
||||
<li><a href="#orgf891c99">Function description</a></li>
|
||||
<li><a href="#org3120ee8">Optional Parameters</a></li>
|
||||
<li><a href="#orgcb6bebb">Function description</a></li>
|
||||
<li><a href="#org5ec99a5">Optional Parameters</a></li>
|
||||
<li><a href="#org1c3d7c8">Compute the properties of the sensor</a></li>
|
||||
<li><a href="#org81ff88b">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#org5e33aa2">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgd6baa46">12. <code>displayArchitecture</code>: 3D plot of the Stewart platform architecture</a>
|
||||
<ul>
|
||||
<li><a href="#org84f3d13">Function description</a></li>
|
||||
<li><a href="#org74d4ce4">Optional Parameters</a></li>
|
||||
<li><a href="#org3b35a3d">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#orgc70c9a5">Function description</a></li>
|
||||
<li><a href="#org63006a7">Optional Parameters</a></li>
|
||||
<li><a href="#org86735ca">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#orgb11fd92">Figure Creation, Frames and Homogeneous transformations</a></li>
|
||||
<li><a href="#org7cd8fee">Fixed Base elements</a></li>
|
||||
<li><a href="#orgacb8eb7">Mobile Platform elements</a></li>
|
||||
@ -145,8 +145,8 @@
|
||||
</li>
|
||||
<li><a href="#orgecfd55f">13. <code>describeStewartPlatform</code>: Display some text describing the current defined Stewart Platform</a>
|
||||
<ul>
|
||||
<li><a href="#org6e4f9f6">Function description</a></li>
|
||||
<li><a href="#org1dcd763">Optional Parameters</a></li>
|
||||
<li><a href="#orgb99230a">Function description</a></li>
|
||||
<li><a href="#orged88325">Optional Parameters</a></li>
|
||||
<li><a href="#org1d49caa">13.1. Geometry</a></li>
|
||||
<li><a href="#orgcb66771">13.2. Actuators</a></li>
|
||||
<li><a href="#org4630b77">13.3. Joints</a></li>
|
||||
@ -155,39 +155,39 @@
|
||||
</li>
|
||||
<li><a href="#org65fc289">14. <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</a>
|
||||
<ul>
|
||||
<li><a href="#org56bb069">Function description</a></li>
|
||||
<li><a href="#org8dc2620">Documentation</a></li>
|
||||
<li><a href="#org9269fce">Optional Parameters</a></li>
|
||||
<li><a href="#org90eac03">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#orgc164e8d">Function description</a></li>
|
||||
<li><a href="#org0d467b7">Documentation</a></li>
|
||||
<li><a href="#orgda76f80">Optional Parameters</a></li>
|
||||
<li><a href="#org4a5a3cf">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#orge94a885">Position of the Cube</a></li>
|
||||
<li><a href="#org3231a85">Compute the pose</a></li>
|
||||
<li><a href="#orgb046d7e">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#orge8af7a8">Compute the pose</a></li>
|
||||
<li><a href="#org32b44aa">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org9e8cbfa">15. <code>computeJacobian</code>: Compute the Jacobian Matrix</a>
|
||||
<ul>
|
||||
<li><a href="#org9b984be">Function description</a></li>
|
||||
<li><a href="#orga0158ff">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#org2c08fbd">Function description</a></li>
|
||||
<li><a href="#org8071a1b">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#org9bcd9b9">Compute Jacobian Matrix</a></li>
|
||||
<li><a href="#orgf08eda6">Compute Stiffness Matrix</a></li>
|
||||
<li><a href="#orgd164132">Compute Compliance Matrix</a></li>
|
||||
<li><a href="#orgecc27b3">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#orgbf70f7a">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org03168fc">16. <code>inverseKinematics</code>: Compute Inverse Kinematics</a>
|
||||
<ul>
|
||||
<li><a href="#orgbdc5fb1">Theory</a></li>
|
||||
<li><a href="#org988305f">Function description</a></li>
|
||||
<li><a href="#org954d921">Optional Parameters</a></li>
|
||||
<li><a href="#org2e35685">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#org18c9841">Function description</a></li>
|
||||
<li><a href="#org848fb1f">Optional Parameters</a></li>
|
||||
<li><a href="#org8be974b">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#org8b70a76">Compute</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org278d55b">17. <code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</a>
|
||||
<ul>
|
||||
<li><a href="#orgb2b186c">Function description</a></li>
|
||||
<li><a href="#org8e4bfab">Optional Parameters</a></li>
|
||||
<li><a href="#org87cdb4a">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#org07e11bf">Function description</a></li>
|
||||
<li><a href="#org918179d">Optional Parameters</a></li>
|
||||
<li><a href="#orgf157791">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#orgf17cab9">Computation</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
@ -273,11 +273,11 @@ This Matlab function is accessible <a href="../src/initializeStewartPlatform.m">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org5817617" class="outline-3">
|
||||
<h3 id="org5817617">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-org5817617">
|
||||
<div id="outline-container-org8dc2620" class="outline-3">
|
||||
<h3 id="org8dc2620">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-org8dc2620">
|
||||
|
||||
<div id="orgb66cd49" class="figure">
|
||||
<div id="org321fc67" class="figure">
|
||||
<p><img src="figs/stewart-frames-position.png" alt="stewart-frames-position.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Definition of the position of the frames</p>
|
||||
@ -285,9 +285,9 @@ This Matlab function is accessible <a href="../src/initializeStewartPlatform.m">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7d81110" class="outline-3">
|
||||
<h3 id="org7d81110">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org7d81110">
|
||||
<div id="outline-container-orgb2b186c" class="outline-3">
|
||||
<h3 id="orgb2b186c">Function description</h3>
|
||||
<div class="outline-text-3" id="text-orgb2b186c">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeStewartPlatform()
|
||||
% initializeStewartPlatform - Initialize the stewart structure
|
||||
@ -346,11 +346,11 @@ This Matlab function is accessible <a href="../src/initializeFramesPositions.m">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org60fadfe" class="outline-3">
|
||||
<h3 id="org60fadfe">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-org60fadfe">
|
||||
<div id="outline-container-org736bb40" class="outline-3">
|
||||
<h3 id="org736bb40">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-org736bb40">
|
||||
|
||||
<div id="org321fc67" class="figure">
|
||||
<div id="org805d4f8" class="figure">
|
||||
<p><img src="figs/stewart-frames-position.png" alt="stewart-frames-position.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Definition of the position of the frames</p>
|
||||
@ -358,9 +358,9 @@ This Matlab function is accessible <a href="../src/initializeFramesPositions.m">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3f0f259" class="outline-3">
|
||||
<h3 id="org3f0f259">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org3f0f259">
|
||||
<div id="outline-container-orgb82d77f" class="outline-3">
|
||||
<h3 id="orgb82d77f">Function description</h3>
|
||||
<div class="outline-text-3" id="text-orgb82d77f">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeFramesPositions(stewart, args)
|
||||
% initializeFramesPositions - Initialize the positions of frames {A}, {B}, {F} and {M}
|
||||
@ -383,9 +383,9 @@ This Matlab function is accessible <a href="../src/initializeFramesPositions.m">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgada2d6f" class="outline-3">
|
||||
<h3 id="orgada2d6f">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orgada2d6f">
|
||||
<div id="outline-container-org8e4bfab" class="outline-3">
|
||||
<h3 id="org8e4bfab">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org8e4bfab">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -413,9 +413,9 @@ FO_A = MO_B + FO_M; % Position of {A} with respect to {F} [m]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd7c92be" class="outline-3">
|
||||
<h3 id="orgd7c92be">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-orgd7c92be">
|
||||
<div id="outline-container-orgecc27b3" class="outline-3">
|
||||
<h3 id="orgecc27b3">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-orgecc27b3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.geometry.H = H;
|
||||
stewart.geometry.FO_M = FO_M;
|
||||
@ -439,9 +439,9 @@ This Matlab function is accessible <a href="../src/generateGeneralConfiguration.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org722f89f" class="outline-3">
|
||||
<h3 id="org722f89f">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-org722f89f">
|
||||
<div id="outline-container-orgd270a86" class="outline-3">
|
||||
<h3 id="orgd270a86">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-orgd270a86">
|
||||
<p>
|
||||
Joints are positions on a circle centered with the Z axis of {F} and {M} and at a chosen distance from {F} and {M}.
|
||||
The radius of the circles can be chosen as well as the angles where the joints are located (see Figure <a href="#org449c886">3</a>).
|
||||
@ -456,9 +456,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org37642a9" class="outline-3">
|
||||
<h3 id="org37642a9">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org37642a9">
|
||||
<div id="outline-container-org22aadcf" class="outline-3">
|
||||
<h3 id="org22aadcf">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org22aadcf">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = generateGeneralConfiguration(stewart, args)
|
||||
% generateGeneralConfiguration - Generate a Very General Configuration
|
||||
@ -483,9 +483,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8175ecb" class="outline-3">
|
||||
<h3 id="org8175ecb">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org8175ecb">
|
||||
<div id="outline-container-orga6492a4" class="outline-3">
|
||||
<h3 id="orga6492a4">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orga6492a4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -501,9 +501,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc9244b9" class="outline-3">
|
||||
<h3 id="orgc9244b9">Compute the pose</h3>
|
||||
<div class="outline-text-3" id="text-orgc9244b9">
|
||||
<div id="outline-container-org3231a85" class="outline-3">
|
||||
<h3 id="org3231a85">Compute the pose</h3>
|
||||
<div class="outline-text-3" id="text-org3231a85">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Fa = zeros(3,6);
|
||||
Mb = zeros(3,6);
|
||||
@ -520,9 +520,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org010e928" class="outline-3">
|
||||
<h3 id="org010e928">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-org010e928">
|
||||
<div id="outline-container-org13d89d2" class="outline-3">
|
||||
<h3 id="org13d89d2">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-org13d89d2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.platform_F.Fa = Fa;
|
||||
stewart.platform_M.Mb = Mb;
|
||||
@ -544,9 +544,9 @@ This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1084538" class="outline-3">
|
||||
<h3 id="org1084538">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-org1084538">
|
||||
<div id="outline-container-orgf8b573b" class="outline-3">
|
||||
<h3 id="orgf8b573b">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-orgf8b573b">
|
||||
|
||||
<div id="org20f7106" class="figure">
|
||||
<p><img src="figs/stewart-struts.png" alt="stewart-struts.png" />
|
||||
@ -556,9 +556,9 @@ This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1da2a38" class="outline-3">
|
||||
<h3 id="org1da2a38">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org1da2a38">
|
||||
<div id="outline-container-org85d30c9" class="outline-3">
|
||||
<h3 id="org85d30c9">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org85d30c9">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = computeJointsPose(stewart)
|
||||
% computeJointsPose -
|
||||
@ -591,9 +591,9 @@ This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org02f1320" class="outline-3">
|
||||
<h3 id="org02f1320">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-org02f1320">
|
||||
<div id="outline-container-org87cdb4a" class="outline-3">
|
||||
<h3 id="org87cdb4a">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-org87cdb4a">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">assert(isfield(stewart.platform_F, 'Fa'), 'stewart.platform_F should have attribute Fa')
|
||||
Fa = stewart.platform_F.Fa;
|
||||
@ -664,9 +664,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgab9893e" class="outline-3">
|
||||
<h3 id="orgab9893e">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-orgab9893e">
|
||||
<div id="outline-container-org47a4205" class="outline-3">
|
||||
<h3 id="org47a4205">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-org47a4205">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.geometry.Aa = Aa;
|
||||
stewart.geometry.Ab = Ab;
|
||||
@ -699,9 +699,9 @@ This Matlab function is accessible <a href="../src/initializeStewartPose.m">here
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3df7fa5" class="outline-3">
|
||||
<h3 id="org3df7fa5">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org3df7fa5">
|
||||
<div id="outline-container-org9a7c718" class="outline-3">
|
||||
<h3 id="org9a7c718">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org9a7c718">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeStewartPose(stewart, args)
|
||||
% initializeStewartPose - Determine the initial stroke in each leg to have the wanted pose
|
||||
@ -725,9 +725,9 @@ This Matlab function is accessible <a href="../src/initializeStewartPose.m">here
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7ad7e23" class="outline-3">
|
||||
<h3 id="org7ad7e23">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org7ad7e23">
|
||||
<div id="outline-container-orga7f6cb4" class="outline-3">
|
||||
<h3 id="orga7f6cb4">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orga7f6cb4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -749,9 +749,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8f6d297" class="outline-3">
|
||||
<h3 id="org8f6d297">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-org8f6d297">
|
||||
<div id="outline-container-orga35dd52" class="outline-3">
|
||||
<h3 id="orga35dd52">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-orga35dd52">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.actuators.Leq = dLi;
|
||||
</pre>
|
||||
@ -772,9 +772,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalPlatform
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org600d8b6" class="outline-3">
|
||||
<h3 id="org600d8b6">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org600d8b6">
|
||||
<div id="outline-container-orge53472d" class="outline-3">
|
||||
<h3 id="orge53472d">Function description</h3>
|
||||
<div class="outline-text-3" id="text-orge53472d">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeCylindricalPlatforms(stewart, args)
|
||||
% initializeCylindricalPlatforms - Initialize the geometry of the Fixed and Mobile Platforms
|
||||
@ -808,9 +808,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalPlatform
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7126edc" class="outline-3">
|
||||
<h3 id="org7126edc">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org7126edc">
|
||||
<div id="outline-container-orgc31cfe7" class="outline-3">
|
||||
<h3 id="orgc31cfe7">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orgc31cfe7">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -845,9 +845,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1282acb" class="outline-3">
|
||||
<h3 id="org1282acb">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-org1282acb">
|
||||
<div id="outline-container-orga779e2f" class="outline-3">
|
||||
<h3 id="orga779e2f">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-orga779e2f">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.platform_F.type = 1;
|
||||
|
||||
@ -883,9 +883,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalStruts.m
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org415806e" class="outline-3">
|
||||
<h3 id="org415806e">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org415806e">
|
||||
<div id="outline-container-orgf6fcb94" class="outline-3">
|
||||
<h3 id="orgf6fcb94">Function description</h3>
|
||||
<div class="outline-text-3" id="text-orgf6fcb94">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeCylindricalStruts(stewart, args)
|
||||
% initializeCylindricalStruts - Define the mass and moment of inertia of cylindrical struts
|
||||
@ -918,9 +918,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalStruts.m
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org46ba207" class="outline-3">
|
||||
<h3 id="org46ba207">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org46ba207">
|
||||
<div id="outline-container-org8990e71" class="outline-3">
|
||||
<h3 id="org8990e71">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org8990e71">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -968,9 +968,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgec9a313" class="outline-3">
|
||||
<h3 id="orgec9a313">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-orgec9a313">
|
||||
<div id="outline-container-org53395cc" class="outline-3">
|
||||
<h3 id="org53395cc">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-org53395cc">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.struts_M.type = 1;
|
||||
|
||||
@ -1006,9 +1006,9 @@ This Matlab function is accessible <a href="../src/initializeStrutDynamics.m">he
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1e0bcd1" class="outline-3">
|
||||
<h3 id="org1e0bcd1">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-org1e0bcd1">
|
||||
<div id="outline-container-org15ad3b5" class="outline-3">
|
||||
<h3 id="org15ad3b5">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-org15ad3b5">
|
||||
|
||||
<div id="org99aef3e" class="figure">
|
||||
<p><img src="figs/piezoelectric_stack.jpg" alt="piezoelectric_stack.jpg" width="500px" />
|
||||
@ -1037,9 +1037,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#orgd4
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org70074aa" class="outline-3">
|
||||
<h3 id="org70074aa">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org70074aa">
|
||||
<div id="outline-container-org5318aec" class="outline-3">
|
||||
<h3 id="org5318aec">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org5318aec">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeStrutDynamics(stewart, args)
|
||||
% initializeStrutDynamics - Add Stiffness and Damping properties of each strut
|
||||
@ -1061,14 +1061,23 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#orgd4
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc77ced4" class="outline-3">
|
||||
<h3 id="orgc77ced4">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orgc77ced4">
|
||||
<div id="outline-container-org153d169" class="outline-3">
|
||||
<h3 id="org153d169">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org153d169">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
args.type char {mustBeMember(args.type,{'classical', 'amplified'})} = 'classical'
|
||||
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
|
||||
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1*ones(6,1)
|
||||
args.k1 (6,1) double {mustBeNumeric} = 1e6
|
||||
args.ke (6,1) double {mustBeNumeric} = 5e6
|
||||
args.ka (6,1) double {mustBeNumeric} = 60e6
|
||||
args.c1 (6,1) double {mustBeNumeric} = 10
|
||||
args.ce (6,1) double {mustBeNumeric} = 10
|
||||
args.ca (6,1) double {mustBeNumeric} = 10
|
||||
args.me (6,1) double {mustBeNumeric} = 0.05
|
||||
args.ma (6,1) double {mustBeNumeric} = 0.05
|
||||
end
|
||||
</pre>
|
||||
</div>
|
||||
@ -1079,10 +1088,26 @@ end
|
||||
<h3 id="org3c2e550">Add Stiffness and Damping properties of each strut</h3>
|
||||
<div class="outline-text-3" id="text-org3c2e550">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.actuators.type = 1;
|
||||
<pre class="src src-matlab">if strcmp(args.type, 'classical')
|
||||
stewart.actuators.type = 1;
|
||||
elseif strcmp(args.type, 'amplified')
|
||||
stewart.actuators.type = 2;
|
||||
end
|
||||
|
||||
stewart.actuators.K = args.K;
|
||||
stewart.actuators.C = args.C;
|
||||
|
||||
stewart.actuators.k1 = args.k1;
|
||||
stewart.actuators.c1 = args.c1;
|
||||
|
||||
stewart.actuators.ka = args.ka;
|
||||
stewart.actuators.ca = args.ca;
|
||||
|
||||
stewart.actuators.ke = args.ke;
|
||||
stewart.actuators.ce = args.ce;
|
||||
|
||||
stewart.actuators.ma = args.ma;
|
||||
stewart.actuators.me = args.me;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -1101,9 +1126,9 @@ This Matlab function is accessible <a href="../src/initializeAmplifiedStrutDynam
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb4491ea" class="outline-3">
|
||||
<h3 id="orgb4491ea">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-orgb4491ea">
|
||||
<div id="outline-container-orgc4169f8" class="outline-3">
|
||||
<h3 id="orgc4169f8">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-orgc4169f8">
|
||||
<p>
|
||||
An amplified piezoelectric actuator is shown in Figure <a href="#orgab58ac0">7</a>.
|
||||
</p>
|
||||
@ -1136,9 +1161,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#org7a
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org32024c4" class="outline-3">
|
||||
<h3 id="org32024c4">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org32024c4">
|
||||
<div id="outline-container-org44de918" class="outline-3">
|
||||
<h3 id="org44de918">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org44de918">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeAmplifiedStrutDynamics(stewart, args)
|
||||
% initializeAmplifiedStrutDynamics - Add Stiffness and Damping properties of each strut
|
||||
@ -1166,9 +1191,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#org7a
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb9c096a" class="outline-3">
|
||||
<h3 id="orgb9c096a">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orgb9c096a">
|
||||
<div id="outline-container-org3966929" class="outline-3">
|
||||
<h3 id="org3966929">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org3966929">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -1193,9 +1218,9 @@ C = args.Ca + args.Cr;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd8d2d38" class="outline-3">
|
||||
<h3 id="orgd8d2d38">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-orgd8d2d38">
|
||||
<div id="outline-container-orgfed23b2" class="outline-3">
|
||||
<h3 id="orgfed23b2">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-orgfed23b2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.actuators.type = 2;
|
||||
|
||||
@ -1225,9 +1250,9 @@ This Matlab function is accessible <a href="../src/initializeJointDynamics.m">he
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9987af0" class="outline-3">
|
||||
<h3 id="org9987af0">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org9987af0">
|
||||
<div id="outline-container-orgcc4b26d" class="outline-3">
|
||||
<h3 id="orgcc4b26d">Function description</h3>
|
||||
<div class="outline-text-3" id="text-orgcc4b26d">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeJointDynamics(stewart, args)
|
||||
% initializeJointDynamics - Add Stiffness and Damping properties for the spherical joints
|
||||
@ -1266,9 +1291,9 @@ This Matlab function is accessible <a href="../src/initializeJointDynamics.m">he
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfa09700" class="outline-3">
|
||||
<h3 id="orgfa09700">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orgfa09700">
|
||||
<div id="outline-container-org047804e" class="outline-3">
|
||||
<h3 id="org047804e">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org047804e">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -1476,9 +1501,9 @@ Note that there is trade-off between:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf891c99" class="outline-3">
|
||||
<h3 id="orgf891c99">Function description</h3>
|
||||
<div class="outline-text-3" id="text-orgf891c99">
|
||||
<div id="outline-container-orgcb6bebb" class="outline-3">
|
||||
<h3 id="orgcb6bebb">Function description</h3>
|
||||
<div class="outline-text-3" id="text-orgcb6bebb">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeInertialSensor(stewart, args)
|
||||
% initializeInertialSensor - Initialize the inertial sensor in each strut
|
||||
@ -1504,9 +1529,9 @@ Note that there is trade-off between:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3120ee8" class="outline-3">
|
||||
<h3 id="org3120ee8">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org3120ee8">
|
||||
<div id="outline-container-org5ec99a5" class="outline-3">
|
||||
<h3 id="org5ec99a5">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org5ec99a5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -1547,9 +1572,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org81ff88b" class="outline-3">
|
||||
<h3 id="org81ff88b">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-org81ff88b">
|
||||
<div id="outline-container-org5e33aa2" class="outline-3">
|
||||
<h3 id="org5e33aa2">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-org5e33aa2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.sensors.inertial = sensor;
|
||||
</pre>
|
||||
@ -1570,9 +1595,9 @@ This Matlab function is accessible <a href="../src/displayArchitecture.m">here</
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org84f3d13" class="outline-3">
|
||||
<h3 id="org84f3d13">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org84f3d13">
|
||||
<div id="outline-container-orgc70c9a5" class="outline-3">
|
||||
<h3 id="orgc70c9a5">Function description</h3>
|
||||
<div class="outline-text-3" id="text-orgc70c9a5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [] = displayArchitecture(stewart, args)
|
||||
% displayArchitecture - 3D plot of the Stewart platform architecture
|
||||
@ -1601,9 +1626,9 @@ This Matlab function is accessible <a href="../src/displayArchitecture.m">here</
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org74d4ce4" class="outline-3">
|
||||
<h3 id="org74d4ce4">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org74d4ce4">
|
||||
<div id="outline-container-org63006a7" class="outline-3">
|
||||
<h3 id="org63006a7">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org63006a7">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -1624,9 +1649,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3b35a3d" class="outline-3">
|
||||
<h3 id="org3b35a3d">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-org3b35a3d">
|
||||
<div id="outline-container-org86735ca" class="outline-3">
|
||||
<h3 id="org86735ca">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-org86735ca">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">assert(isfield(stewart.platform_F, 'FO_A'), 'stewart.platform_F should have attribute FO_A')
|
||||
FO_A = stewart.platform_F.FO_A;
|
||||
@ -1964,9 +1989,9 @@ This Matlab function is accessible <a href="../src/describeStewartPlatform.m">he
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6e4f9f6" class="outline-3">
|
||||
<h3 id="org6e4f9f6">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org6e4f9f6">
|
||||
<div id="outline-container-orgb99230a" class="outline-3">
|
||||
<h3 id="orgb99230a">Function description</h3>
|
||||
<div class="outline-text-3" id="text-orgb99230a">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [] = describeStewartPlatform(stewart)
|
||||
% describeStewartPlatform - Display some text describing the current defined Stewart Platform
|
||||
@ -1982,9 +2007,9 @@ This Matlab function is accessible <a href="../src/describeStewartPlatform.m">he
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1dcd763" class="outline-3">
|
||||
<h3 id="org1dcd763">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org1dcd763">
|
||||
<div id="outline-container-orged88325" class="outline-3">
|
||||
<h3 id="orged88325">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orged88325">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -2133,9 +2158,9 @@ This Matlab function is accessible <a href="../src/generateCubicConfiguration.m"
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org56bb069" class="outline-3">
|
||||
<h3 id="org56bb069">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org56bb069">
|
||||
<div id="outline-container-orgc164e8d" class="outline-3">
|
||||
<h3 id="orgc164e8d">Function description</h3>
|
||||
<div class="outline-text-3" id="text-orgc164e8d">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = generateCubicConfiguration(stewart, args)
|
||||
% generateCubicConfiguration - Generate a Cubic Configuration
|
||||
@ -2160,9 +2185,9 @@ This Matlab function is accessible <a href="../src/generateCubicConfiguration.m"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8dc2620" class="outline-3">
|
||||
<h3 id="org8dc2620">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-org8dc2620">
|
||||
<div id="outline-container-org0d467b7" class="outline-3">
|
||||
<h3 id="org0d467b7">Documentation</h3>
|
||||
<div class="outline-text-3" id="text-org0d467b7">
|
||||
|
||||
<div id="org70070f0" class="figure">
|
||||
<p><img src="figs/cubic-configuration-definition.png" alt="cubic-configuration-definition.png" />
|
||||
@ -2172,9 +2197,9 @@ This Matlab function is accessible <a href="../src/generateCubicConfiguration.m"
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9269fce" class="outline-3">
|
||||
<h3 id="org9269fce">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org9269fce">
|
||||
<div id="outline-container-orgda76f80" class="outline-3">
|
||||
<h3 id="orgda76f80">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-orgda76f80">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -2188,9 +2213,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org90eac03" class="outline-3">
|
||||
<h3 id="org90eac03">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-org90eac03">
|
||||
<div id="outline-container-org4a5a3cf" class="outline-3">
|
||||
<h3 id="org4a5a3cf">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-org4a5a3cf">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'H'), 'stewart.geometry should have attribute H')
|
||||
H = stewart.geometry.H;
|
||||
@ -2225,9 +2250,9 @@ CCm = [Cc(:,2), Cc(:,2), Cc(:,4), Cc(:,4), Cc(:,6), Cc(:,6)]; % CCm(:,i) corresp
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3231a85" class="outline-3">
|
||||
<h3 id="org3231a85">Compute the pose</h3>
|
||||
<div class="outline-text-3" id="text-org3231a85">
|
||||
<div id="outline-container-orge8af7a8" class="outline-3">
|
||||
<h3 id="orge8af7a8">Compute the pose</h3>
|
||||
<div class="outline-text-3" id="text-orge8af7a8">
|
||||
<p>
|
||||
We can compute the vector of each leg \({}^{C}\hat{\bm{s}}_{i}\) (unit vector from \({}^{C}C_{f}\) to \({}^{C}C_{m}\)).
|
||||
</p>
|
||||
@ -2247,9 +2272,9 @@ Mb = CCf + [0; 0; args.FOc-H] + ((H-args.MHb-(args.FOc-args.Hc/2))./CSi(3,:)).*C
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb046d7e" class="outline-3">
|
||||
<h3 id="orgb046d7e">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-orgb046d7e">
|
||||
<div id="outline-container-org32b44aa" class="outline-3">
|
||||
<h3 id="org32b44aa">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-org32b44aa">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.platform_F.Fa = Fa;
|
||||
stewart.platform_M.Mb = Mb;
|
||||
@ -2271,9 +2296,9 @@ This Matlab function is accessible <a href="../src/computeJacobian.m">here</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9b984be" class="outline-3">
|
||||
<h3 id="org9b984be">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org9b984be">
|
||||
<div id="outline-container-org2c08fbd" class="outline-3">
|
||||
<h3 id="org2c08fbd">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org2c08fbd">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = computeJacobian(stewart)
|
||||
% computeJacobian -
|
||||
@ -2296,9 +2321,9 @@ This Matlab function is accessible <a href="../src/computeJacobian.m">here</a>.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga0158ff" class="outline-3">
|
||||
<h3 id="orga0158ff">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-orga0158ff">
|
||||
<div id="outline-container-org8071a1b" class="outline-3">
|
||||
<h3 id="org8071a1b">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-org8071a1b">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'As'), 'stewart.geometry should have attribute As')
|
||||
As = stewart.geometry.As;
|
||||
@ -2344,9 +2369,9 @@ Ki = stewart.actuators.K;
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgecc27b3" class="outline-3">
|
||||
<h3 id="orgecc27b3">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-orgecc27b3">
|
||||
<div id="outline-container-orgbf70f7a" class="outline-3">
|
||||
<h3 id="orgbf70f7a">Populate the <code>stewart</code> structure</h3>
|
||||
<div class="outline-text-3" id="text-orgbf70f7a">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.kinematics.J = J;
|
||||
stewart.kinematics.K = K;
|
||||
@ -2406,9 +2431,9 @@ Otherwise, when the limbs’ lengths derived yield complex numbers, then the
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org988305f" class="outline-3">
|
||||
<h3 id="org988305f">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org988305f">
|
||||
<div id="outline-container-org18c9841" class="outline-3">
|
||||
<h3 id="org18c9841">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org18c9841">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [Li, dLi] = inverseKinematics(stewart, args)
|
||||
% inverseKinematics - Compute the needed length of each strut to have the wanted position and orientation of {B} with respect to {A}
|
||||
@ -2432,9 +2457,9 @@ Otherwise, when the limbs’ lengths derived yield complex numbers, then the
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org954d921" class="outline-3">
|
||||
<h3 id="org954d921">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org954d921">
|
||||
<div id="outline-container-org848fb1f" class="outline-3">
|
||||
<h3 id="org848fb1f">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org848fb1f">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -2446,9 +2471,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2e35685" class="outline-3">
|
||||
<h3 id="org2e35685">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-org2e35685">
|
||||
<div id="outline-container-org8be974b" class="outline-3">
|
||||
<h3 id="org8be974b">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-org8be974b">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'Aa'), 'stewart.geometry should have attribute Aa')
|
||||
Aa = stewart.geometry.Aa;
|
||||
@ -2492,9 +2517,9 @@ This Matlab function is accessible <a href="../src/forwardKinematicsApprox.m">he
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb2b186c" class="outline-3">
|
||||
<h3 id="orgb2b186c">Function description</h3>
|
||||
<div class="outline-text-3" id="text-orgb2b186c">
|
||||
<div id="outline-container-org07e11bf" class="outline-3">
|
||||
<h3 id="org07e11bf">Function description</h3>
|
||||
<div class="outline-text-3" id="text-org07e11bf">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [P, R] = forwardKinematicsApprox(stewart, args)
|
||||
% forwardKinematicsApprox - Computed the approximate pose of {B} with respect to {A} from the length of each strut and using
|
||||
@ -2516,9 +2541,9 @@ This Matlab function is accessible <a href="../src/forwardKinematicsApprox.m">he
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8e4bfab" class="outline-3">
|
||||
<h3 id="org8e4bfab">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org8e4bfab">
|
||||
<div id="outline-container-org918179d" class="outline-3">
|
||||
<h3 id="org918179d">Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-org918179d">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -2529,9 +2554,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org87cdb4a" class="outline-3">
|
||||
<h3 id="org87cdb4a">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-org87cdb4a">
|
||||
<div id="outline-container-orgf157791" class="outline-3">
|
||||
<h3 id="orgf157791">Check the <code>stewart</code> structure elements</h3>
|
||||
<div class="outline-text-3" id="text-orgf157791">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">assert(isfield(stewart.kinematics, 'J'), 'stewart.kinematics should have attribute J')
|
||||
J = stewart.kinematics.J;
|
||||
@ -2586,7 +2611,7 @@ We then compute the corresponding rotation matrix.
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-05-20 mer. 15:49</p>
|
||||
<p class="date">Created: 2020-05-20 mer. 16:41</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
BIN
mat/conf_log.mat
BIN
mat/conf_log.mat
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
mat/stages.mat
BIN
mat/stages.mat
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -449,3 +449,423 @@ Identification
|
||||
#+begin_src matlab
|
||||
open('nass_model.slx')
|
||||
#+end_src
|
||||
|
||||
|
||||
** Initialization
|
||||
#+begin_src matlab
|
||||
initializeGround();
|
||||
initializeGranite();
|
||||
initializeTy();
|
||||
initializeRy();
|
||||
initializeRz();
|
||||
initializeMicroHexapod();
|
||||
initializeAxisc();
|
||||
initializeMirror();
|
||||
|
||||
initializeSimscapeConfiguration();
|
||||
initializeDisturbances('enable', false);
|
||||
initializeLoggingConfiguration('log', 'none');
|
||||
|
||||
initializeController('type', 'hac-iff');
|
||||
#+end_src
|
||||
|
||||
We set the stiffness of the payload fixation:
|
||||
#+begin_src matlab
|
||||
Kp = 1e8; % [N/m]
|
||||
#+end_src
|
||||
|
||||
** Identification
|
||||
#+begin_src matlab
|
||||
K = tf(zeros(6));
|
||||
Kiff = tf(zeros(6));
|
||||
#+end_src
|
||||
|
||||
We identify the system for the following payload masses:
|
||||
#+begin_src matlab
|
||||
Ms = [1, 10, 50];
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
Gm_iff = {zeros(length(Ms), 1)};
|
||||
#+end_src
|
||||
|
||||
The nano-hexapod has the following leg's stiffness and damping.
|
||||
#+begin_src matlab
|
||||
initializeNanoHexapod('actuator', 'amplified');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inputs
|
||||
io(io_i) = linio([mdl, '/Micro-Station'], 3, 'openoutput', [], 'Fnlm'); io_i = io_i + 1; % Force Sensors
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
for i = 1:length(Ms)
|
||||
initializeSample('mass', Ms(i), 'freq', sqrt(Kp/Ms(i))/2/pi*ones(6,1));
|
||||
initializeReferences('Rz_type', 'rotating-not-filtered', 'Rz_period', Ms(i));
|
||||
|
||||
%% Run the linearization
|
||||
G_iff = linearize(mdl, io);
|
||||
G_iff.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
|
||||
G_iff.OutputName = {'Fnlm1', 'Fnlm2', 'Fnlm3', 'Fnlm4', 'Fnlm5', 'Fnlm6'};
|
||||
Gm_iff(i) = {G_iff};
|
||||
end
|
||||
#+end_src
|
||||
|
||||
** Controller Design
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
freqs = logspace(-1, 3, 1000);
|
||||
|
||||
figure;
|
||||
|
||||
ax1 = subplot(2, 1, 1);
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
plot(freqs, abs(squeeze(freqresp(Gm_iff{i}(1, 1), freqs, 'Hz'))));
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [N/N]'); set(gca, 'XTickLabel',[]);
|
||||
|
||||
ax2 = subplot(2, 1, 2);
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gm_iff{i}(1, 1), freqs, 'Hz')))), ...
|
||||
'DisplayName', sprintf('$m_p = %.0f$ [kg]', Ms(i)));
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
|
||||
ylim([-270, 90]);
|
||||
yticks([-360:90:360]);
|
||||
legend('location', 'northeast');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/amplified_piezo_iff_loop_gain.pdf', 'width', 'full', 'height', 'full');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:amplified_piezo_iff_loop_gain
|
||||
#+caption: Dynamics for the Integral Force Feedback for three payload masses
|
||||
#+RESULTS:
|
||||
[[file:figs/amplified_piezo_iff_loop_gain.png]]
|
||||
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
figure;
|
||||
|
||||
gains = logspace(2, 5, 300);
|
||||
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(real(pole(Gm_iff{i})), imag(pole(Gm_iff{i})), 'x', ...
|
||||
'DisplayName', sprintf('$m_p = %.0f$ [kg]', Ms(i)));
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(real(tzero(Gm_iff{i})), imag(tzero(Gm_iff{i})), 'o', ...
|
||||
'HandleVisibility', 'off');
|
||||
for k = 1:length(gains)
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
cl_poles = pole(feedback(Gm_iff{i}, -(gains(k)/s)*eye(6)));
|
||||
plot(real(cl_poles), imag(cl_poles), '.', ...
|
||||
'HandleVisibility', 'off');
|
||||
end
|
||||
end
|
||||
hold off;
|
||||
axis square;
|
||||
xlim([-400, 10]); ylim([0, 500]);
|
||||
|
||||
xlabel('Real Part'); ylabel('Imaginary Part');
|
||||
legend('location', 'northwest');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/amplified_piezo_iff_root_locus.pdf', 'width', 'wide', 'height', 'tall');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:amplified_piezo_iff_root_locus
|
||||
#+caption: Root Locus for the IFF control for three payload masses
|
||||
#+RESULTS:
|
||||
[[file:figs/amplified_piezo_iff_root_locus.png]]
|
||||
|
||||
Damping as function of the gain
|
||||
#+begin_src matlab :exports none
|
||||
c1 = [ 0 0.4470 0.7410]; % Blue
|
||||
c2 = [0.8500 0.3250 0.0980]; % Orange
|
||||
c3 = [0.9290 0.6940 0.1250]; % Yellow
|
||||
c4 = [0.4940 0.1840 0.5560]; % Purple
|
||||
c5 = [0.4660 0.6740 0.1880]; % Green
|
||||
c6 = [0.3010 0.7450 0.9330]; % Light Blue
|
||||
c7 = [0.6350 0.0780 0.1840]; % Red
|
||||
colors = [c1; c2; c3; c4; c5; c6; c7];
|
||||
|
||||
figure;
|
||||
|
||||
gains = logspace(2, 5, 100);
|
||||
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
for k = 1:length(gains)
|
||||
cl_poles = pole(feedback(Gm_iff{i}, -(gains(k)/s)*eye(6)));
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(gains(k), sin(-pi/2 + angle(cl_poles)), '.', 'color', colors(i, :));
|
||||
end
|
||||
end
|
||||
hold off;
|
||||
xlabel('IFF Gain'); ylabel('Modal Damping');
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
ylim([0, 1]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :tangle no :exports results :results file replace
|
||||
exportFig('figs/amplified_piezo_iff_damping_gain.pdf', 'width', 'full', 'height', 'full');
|
||||
#+end_src
|
||||
|
||||
#+name: fig:amplified_piezo_iff_damping_gain
|
||||
#+caption: Damping ratio of the poles as a function of the IFF gain
|
||||
#+RESULTS:
|
||||
[[file:figs/amplified_piezo_iff_damping_gain.png]]
|
||||
|
||||
Finally, we use the following controller for the Decentralized Direct Velocity Feedback:
|
||||
#+begin_src matlab
|
||||
Kiff = -1e4/s*eye(6);
|
||||
#+end_src
|
||||
|
||||
** Effect of the Low Authority Control on the Primary Plant
|
||||
*** Introduction :ignore:
|
||||
#+begin_src matlab :exports none
|
||||
%% Name of the Simulink File
|
||||
mdl = 'nass_model';
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Controller'], 1, 'input'); io_i = io_i + 1; % Actuator Inputs
|
||||
io(io_i) = linio([mdl, '/Tracking Error'], 1, 'output', [], 'En'); io_i = io_i + 1; % Position Errror
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
load('mat/stages.mat', 'nano_hexapod');
|
||||
#+end_src
|
||||
|
||||
*** Identification of the undamped plant :ignore:
|
||||
#+begin_src matlab :exports none
|
||||
Kdvf_backup = Kdvf;
|
||||
Kdvf = tf(zeros(6));
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
G_x = {zeros(length(Ms), 1)};
|
||||
G_l = {zeros(length(Ms), 1)};
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
for i = 1:length(Ms)
|
||||
initializeSample('mass', Ms(i), 'freq', sqrt(Kp/Ms(i))/2/pi*ones(6,1));
|
||||
initializeReferences('Rz_type', 'rotating-not-filtered', 'Rz_period', Ms(i));
|
||||
|
||||
%% Run the linearization
|
||||
G = linearize(mdl, io);
|
||||
G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
|
||||
G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'};
|
||||
|
||||
Gx = -G*inv(nano_hexapod.kinematics.J');
|
||||
Gx.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'};
|
||||
G_x(i) = {Gx};
|
||||
|
||||
Gl = -nano_hexapod.kinematics.J*G;
|
||||
Gl.OutputName = {'E1', 'E2', 'E3', 'E4', 'E5', 'E6'};
|
||||
G_l(i) = {Gl};
|
||||
end
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
Kdvf = Kdvf_backup;
|
||||
#+end_src
|
||||
|
||||
*** Identification of the damped plant :ignore:
|
||||
#+begin_src matlab :exports none
|
||||
Gm_x = {zeros(length(Ms), 1)};
|
||||
Gm_l = {zeros(length(Ms), 1)};
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
for i = 1:length(Ms)
|
||||
initializeSample('mass', Ms(i), 'freq', sqrt(Kp/Ms(i))/2/pi*ones(6,1));
|
||||
initializeReferences('Rz_type', 'rotating-not-filtered', 'Rz_period', Ms(i));
|
||||
|
||||
%% Run the linearization
|
||||
G = linearize(mdl, io);
|
||||
G.InputName = {'Fnl1', 'Fnl2', 'Fnl3', 'Fnl4', 'Fnl5', 'Fnl6'};
|
||||
G.OutputName = {'Ex', 'Ey', 'Ez', 'Erx', 'Ery', 'Erz'};
|
||||
|
||||
Gx = -G*inv(nano_hexapod.kinematics.J');
|
||||
Gx.InputName = {'Fx', 'Fy', 'Fz', 'Mx', 'My', 'Mz'};
|
||||
Gm_x(i) = {Gx};
|
||||
|
||||
Gl = -nano_hexapod.kinematics.J*G;
|
||||
Gl.OutputName = {'E1', 'E2', 'E3', 'E4', 'E5', 'E6'};
|
||||
Gm_l(i) = {Gl};
|
||||
end
|
||||
#+end_src
|
||||
|
||||
*** Effect of the Damping on the plant diagonal dynamics :ignore:
|
||||
#+begin_src matlab :exports none
|
||||
freqs = logspace(0, 3, 5000);
|
||||
|
||||
figure;
|
||||
|
||||
ax1 = subplot(2, 2, 1);
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, abs(squeeze(freqresp(G_x{i}(1, 1), freqs, 'Hz'))));
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, abs(squeeze(freqresp(G_x{i}(2, 2), freqs, 'Hz'))));
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, abs(squeeze(freqresp(Gm_x{i}(1, 1), freqs, 'Hz'))), '--');
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, abs(squeeze(freqresp(Gm_x{i}(2, 2), freqs, 'Hz'))), '--');
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
title('$\mathcal{X}_x/\mathcal{F}_x$, $\mathcal{X}_y/\mathcal{F}_y$')
|
||||
|
||||
ax2 = subplot(2, 2, 2);
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, abs(squeeze(freqresp(G_x{i}(3, 3), freqs, 'Hz'))));
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, abs(squeeze(freqresp(Gm_x{i}(3, 3), freqs, 'Hz'))), '--');
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
title('$\mathcal{X}_z/\mathcal{F}_z$')
|
||||
|
||||
ax3 = subplot(2, 2, 3);
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_x{i}(1, 1), freqs, 'Hz')))));
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_x{i}(2, 2), freqs, 'Hz')))));
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gm_x{i}(1, 1), freqs, 'Hz')))), '--');
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gm_x{i}(2, 2), freqs, 'Hz')))), '--');
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
|
||||
ylim([-270, 90]);
|
||||
yticks([-360:90:360]);
|
||||
|
||||
ax4 = subplot(2, 2, 4);
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_x{i}(3, 3), freqs, 'Hz')))), ...
|
||||
'DisplayName', sprintf('$m_p = %.0f [kg]$', Ms(i)));
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gm_x{i}(3, 3), freqs, 'Hz')))), '--', ...
|
||||
'HandleVisibility', 'off');
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
|
||||
ylim([-270, 90]);
|
||||
yticks([-360:90:360]);
|
||||
legend('location', 'southwest');
|
||||
|
||||
linkaxes([ax1,ax2,ax3,ax4],'x');
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
freqs = logspace(0, 3, 5000);
|
||||
|
||||
figure;
|
||||
|
||||
ax1 = subplot(2, 1, 1);
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, abs(squeeze(freqresp(G_l{i}(1, 1), freqs, 'Hz'))));
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, abs(squeeze(freqresp(Gm_l{i}(1, 1), freqs, 'Hz'))), '--');
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
|
||||
ax2 = subplot(2, 1, 2);
|
||||
hold on;
|
||||
for i = 1:length(Ms)
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G_l{i}(1, 1), freqs, 'Hz')))), ...
|
||||
'DisplayName', sprintf('$m_p = %.0f [kg]$', Ms(i)));
|
||||
set(gca,'ColorOrderIndex',i);
|
||||
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gm_l{i}(1, 1), freqs, 'Hz')))), '--', ...
|
||||
'HandleVisibility', 'off');
|
||||
end
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
|
||||
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
|
||||
ylim([-270, 90]);
|
||||
yticks([-360:90:360]);
|
||||
legend('location', 'southwest');
|
||||
|
||||
linkaxes([ax1,ax2],'x');
|
||||
#+end_src
|
||||
|
||||
*** Effect of the Damping on the coupling dynamics :ignore:
|
||||
#+begin_src matlab :exports none
|
||||
freqs = logspace(0, 3, 1000);
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
for i = 1:5
|
||||
for j = i+1:6
|
||||
plot(freqs, abs(squeeze(freqresp(G_x{1}(i, j), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2]);
|
||||
plot(freqs, abs(squeeze(freqresp(Gm_x{1}(i, j), freqs, 'Hz'))), '--', 'color', [0, 0, 0, 0.2]);
|
||||
end
|
||||
end
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(freqs, abs(squeeze(freqresp(G_x{1}(1, 1), freqs, 'Hz'))));
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(freqs, abs(squeeze(freqresp(Gm_x{1}(1, 1), freqs, 'Hz'))), '--');
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-12, inf]);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none
|
||||
freqs = logspace(0, 3, 1000);
|
||||
|
||||
figure;
|
||||
hold on;
|
||||
for i = 1:5
|
||||
for j = i+1:6
|
||||
plot(freqs, abs(squeeze(freqresp(G_l{1}(i, j), freqs, 'Hz'))), 'color', [0, 0, 0, 0.2]);
|
||||
plot(freqs, abs(squeeze(freqresp(Gm_l{1}(i, j), freqs, 'Hz'))), '--', 'color', [0, 0, 0, 0.2]);
|
||||
end
|
||||
end
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(freqs, abs(squeeze(freqresp(G_l{1}(1, 1), freqs, 'Hz'))));
|
||||
set(gca,'ColorOrderIndex',1);
|
||||
plot(freqs, abs(squeeze(freqresp(Gm_l{1}(1, 1), freqs, 'Hz'))), '--');
|
||||
hold off;
|
||||
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
|
||||
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
|
||||
ylim([1e-9, inf]);
|
||||
#+end_src
|
||||
|
@ -174,7 +174,7 @@ exportFig('figs/opt_stiff_dvf_plant.pdf', 'width', 'full', 'height', 'full')
|
||||
#+end_src
|
||||
|
||||
#+name: fig:opt_stiff_dvf_root_locus
|
||||
#+caption: Root Locus for the DVF controll for three payload masses
|
||||
#+caption: Root Locus for the DVF control for three payload masses
|
||||
#+RESULTS:
|
||||
[[file:figs/opt_stiff_dvf_root_locus.png]]
|
||||
|
||||
|
@ -1280,12 +1280,12 @@ The =mirror= structure is saved.
|
||||
args.MTh (6,1) double {mustBeNumeric} = [-60+10, 60-10, 60+10, 180-10, 180+10, -60-10]*(pi/180)
|
||||
% initializeStrutDynamics
|
||||
args.actuator char {mustBeMember(args.actuator,{'piezo', 'lorentz', 'amplified'})} = 'piezo'
|
||||
args.ki (1,1) double {mustBeNumeric} = -1
|
||||
args.ke (1,1) double {mustBeNumeric} = -1
|
||||
args.ka (1,1) double {mustBeNumeric} = -1
|
||||
args.ci (1,1) double {mustBeNumeric} = -1
|
||||
args.ce (1,1) double {mustBeNumeric} = -1
|
||||
args.ca (1,1) double {mustBeNumeric} = -1
|
||||
args.k1 (1,1) double {mustBeNumeric} = 1e6
|
||||
args.ke (1,1) double {mustBeNumeric} = 5e6
|
||||
args.ka (1,1) double {mustBeNumeric} = 60e6
|
||||
args.c1 (1,1) double {mustBeNumeric} = 10
|
||||
args.ce (1,1) double {mustBeNumeric} = 10
|
||||
args.ca (1,1) double {mustBeNumeric} = 10
|
||||
args.k (1,1) double {mustBeNumeric} = -1
|
||||
args.c (1,1) double {mustBeNumeric} = -1
|
||||
% initializeJointDynamics
|
||||
@ -1343,15 +1343,23 @@ The =mirror= structure is saved.
|
||||
|
||||
#+begin_src matlab
|
||||
if args.k > 0 && args.c > 0
|
||||
stewart = initializeStrutDynamics(stewart, 'K', args.k*ones(6,1), 'C', args.c*ones(6,1));
|
||||
stewart = initializeStrutDynamics(stewart, 'type', 'classical', 'K', args.k*ones(6,1), 'C', args.c*ones(6,1));
|
||||
elseif args.k > 0
|
||||
stewart = initializeStrutDynamics(stewart, 'K', args.k*ones(6,1), 'C', 1.5*sqrt(args.k)*ones(6,1));
|
||||
stewart = initializeStrutDynamics(stewart, 'type', 'classical', 'K', args.k*ones(6,1), 'C', 1.5*sqrt(args.k)*ones(6,1));
|
||||
elseif strcmp(args.actuator, 'piezo')
|
||||
stewart = initializeStrutDynamics(stewart, 'K', 1e7*ones(6,1), 'C', 1e2*ones(6,1));
|
||||
stewart = initializeStrutDynamics(stewart, 'type', 'classical', 'K', 1e7*ones(6,1), 'C', 1e2*ones(6,1));
|
||||
elseif strcmp(args.actuator, 'lorentz')
|
||||
stewart = initializeStrutDynamics(stewart, 'K', 1e4*ones(6,1), 'C', 1e2*ones(6,1));
|
||||
stewart = initializeStrutDynamics(stewart, 'type', 'classical', 'K', 1e4*ones(6,1), 'C', 1e2*ones(6,1));
|
||||
elseif strcmp(args.actuator, 'amplified')
|
||||
stewart = initializeStrutDynamics(stewart, 'type', 'amplified', ...
|
||||
'k1', args.k1*ones(6,1), ...
|
||||
'c1', args.c1*ones(6,1), ...
|
||||
'ka', args.ka*ones(6,1), ...
|
||||
'ca', args.ca*ones(6,1), ...
|
||||
'ke', args.ke*ones(6,1), ...
|
||||
'ce', args.ce*ones(6,1));
|
||||
else
|
||||
error('args.actuator should be piezo or lorentz');
|
||||
error('args.actuator should be piezo, lorentz or amplified');
|
||||
end
|
||||
#+end_src
|
||||
|
||||
|
@ -798,8 +798,17 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:actuator_
|
||||
#+begin_src matlab
|
||||
arguments
|
||||
stewart
|
||||
args.type char {mustBeMember(args.type,{'classical', 'amplified'})} = 'classical'
|
||||
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
|
||||
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1*ones(6,1)
|
||||
args.k1 (6,1) double {mustBeNumeric} = 1e6
|
||||
args.ke (6,1) double {mustBeNumeric} = 5e6
|
||||
args.ka (6,1) double {mustBeNumeric} = 60e6
|
||||
args.c1 (6,1) double {mustBeNumeric} = 10
|
||||
args.ce (6,1) double {mustBeNumeric} = 10
|
||||
args.ca (6,1) double {mustBeNumeric} = 10
|
||||
args.me (6,1) double {mustBeNumeric} = 0.05
|
||||
args.ma (6,1) double {mustBeNumeric} = 0.05
|
||||
end
|
||||
#+end_src
|
||||
|
||||
@ -808,10 +817,26 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:actuator_
|
||||
:UNNUMBERED: t
|
||||
:END:
|
||||
#+begin_src matlab
|
||||
stewart.actuators.type = 1;
|
||||
if strcmp(args.type, 'classical')
|
||||
stewart.actuators.type = 1;
|
||||
elseif strcmp(args.type, 'amplified')
|
||||
stewart.actuators.type = 2;
|
||||
end
|
||||
|
||||
stewart.actuators.K = args.K;
|
||||
stewart.actuators.C = args.C;
|
||||
|
||||
stewart.actuators.k1 = args.k1;
|
||||
stewart.actuators.c1 = args.c1;
|
||||
|
||||
stewart.actuators.ka = args.ka;
|
||||
stewart.actuators.ca = args.ca;
|
||||
|
||||
stewart.actuators.ke = args.ke;
|
||||
stewart.actuators.ce = args.ce;
|
||||
|
||||
stewart.actuators.ma = args.ma;
|
||||
stewart.actuators.me = args.me;
|
||||
#+end_src
|
||||
|
||||
* =initializeAmplifiedStrutDynamics=: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator
|
||||
|
@ -13,7 +13,13 @@ arguments
|
||||
args.MR (1,1) double {mustBeNumeric, mustBePositive} = 90e-3
|
||||
args.MTh (6,1) double {mustBeNumeric} = [-60+10, 60-10, 60+10, 180-10, 180+10, -60-10]*(pi/180)
|
||||
% initializeStrutDynamics
|
||||
args.actuator char {mustBeMember(args.actuator,{'piezo', 'lorentz'})} = 'piezo'
|
||||
args.actuator char {mustBeMember(args.actuator,{'piezo', 'lorentz', 'amplified'})} = 'piezo'
|
||||
args.k1 (1,1) double {mustBeNumeric} = 1e6
|
||||
args.ke (1,1) double {mustBeNumeric} = 5e6
|
||||
args.ka (1,1) double {mustBeNumeric} = 60e6
|
||||
args.c1 (1,1) double {mustBeNumeric} = 10
|
||||
args.ce (1,1) double {mustBeNumeric} = 10
|
||||
args.ca (1,1) double {mustBeNumeric} = 10
|
||||
args.k (1,1) double {mustBeNumeric} = -1
|
||||
args.c (1,1) double {mustBeNumeric} = -1
|
||||
% initializeJointDynamics
|
||||
@ -63,15 +69,23 @@ stewart = generateGeneralConfiguration(stewart, 'FH', args.FH, 'FR', args.FR, 'F
|
||||
stewart = computeJointsPose(stewart);
|
||||
|
||||
if args.k > 0 && args.c > 0
|
||||
stewart = initializeStrutDynamics(stewart, 'K', args.k*ones(6,1), 'C', args.c*ones(6,1));
|
||||
stewart = initializeStrutDynamics(stewart, 'type', 'classical', 'K', args.k*ones(6,1), 'C', args.c*ones(6,1));
|
||||
elseif args.k > 0
|
||||
stewart = initializeStrutDynamics(stewart, 'K', args.k*ones(6,1), 'C', 1.5*sqrt(args.k)*ones(6,1));
|
||||
stewart = initializeStrutDynamics(stewart, 'type', 'classical', 'K', args.k*ones(6,1), 'C', 1.5*sqrt(args.k)*ones(6,1));
|
||||
elseif strcmp(args.actuator, 'piezo')
|
||||
stewart = initializeStrutDynamics(stewart, 'K', 1e7*ones(6,1), 'C', 1e2*ones(6,1));
|
||||
stewart = initializeStrutDynamics(stewart, 'type', 'classical', 'K', 1e7*ones(6,1), 'C', 1e2*ones(6,1));
|
||||
elseif strcmp(args.actuator, 'lorentz')
|
||||
stewart = initializeStrutDynamics(stewart, 'K', 1e4*ones(6,1), 'C', 1e2*ones(6,1));
|
||||
stewart = initializeStrutDynamics(stewart, 'type', 'classical', 'K', 1e4*ones(6,1), 'C', 1e2*ones(6,1));
|
||||
elseif strcmp(args.actuator, 'amplified')
|
||||
stewart = initializeStrutDynamics(stewart, 'type', 'amplified', ...
|
||||
'k1', args.k1*ones(6,1), ...
|
||||
'c1', args.c1*ones(6,1), ...
|
||||
'ka', args.ka*ones(6,1), ...
|
||||
'ca', args.ca*ones(6,1), ...
|
||||
'ke', args.ke*ones(6,1), ...
|
||||
'ce', args.ce*ones(6,1));
|
||||
else
|
||||
error('args.actuator should be piezo or lorentz');
|
||||
error('args.actuator should be piezo, lorentz or amplified');
|
||||
end
|
||||
|
||||
stewart = initializeJointDynamics(stewart, ...
|
||||
|
@ -16,11 +16,36 @@ function [stewart] = initializeStrutDynamics(stewart, args)
|
||||
|
||||
arguments
|
||||
stewart
|
||||
args.type char {mustBeMember(args.type,{'classical', 'amplified'})} = 'classical'
|
||||
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
|
||||
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1*ones(6,1)
|
||||
args.k1 (6,1) double {mustBeNumeric} = 1e6
|
||||
args.ke (6,1) double {mustBeNumeric} = 5e6
|
||||
args.ka (6,1) double {mustBeNumeric} = 60e6
|
||||
args.c1 (6,1) double {mustBeNumeric} = 10
|
||||
args.ce (6,1) double {mustBeNumeric} = 10
|
||||
args.ca (6,1) double {mustBeNumeric} = 10
|
||||
args.me (6,1) double {mustBeNumeric} = 0.05
|
||||
args.ma (6,1) double {mustBeNumeric} = 0.05
|
||||
end
|
||||
|
||||
stewart.actuators.type = 3;
|
||||
if strcmp(args.type, 'classical')
|
||||
stewart.actuators.type = 1;
|
||||
elseif strcmp(args.type, 'amplified')
|
||||
stewart.actuators.type = 2;
|
||||
end
|
||||
|
||||
stewart.actuators.K = args.K;
|
||||
stewart.actuators.C = args.C;
|
||||
|
||||
stewart.actuators.k1 = args.k1;
|
||||
stewart.actuators.c1 = args.c1;
|
||||
|
||||
stewart.actuators.ka = args.ka;
|
||||
stewart.actuators.ca = args.ca;
|
||||
|
||||
stewart.actuators.ke = args.ke;
|
||||
stewart.actuators.ce = args.ce;
|
||||
|
||||
stewart.actuators.ma = args.ma;
|
||||
stewart.actuators.me = args.me;
|
||||
|
Loading…
Reference in New Issue
Block a user