Implemented amplified actuators
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-20 mer. 15:49 -->
|
<!-- 2020-05-20 mer. 16:41 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Amplified Piezoelectric Stack Actuator</title>
|
<title>Amplified Piezoelectric Stack Actuator</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
@@ -36,19 +36,27 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org996fd7c">1. Simplified Model</a>
|
<li><a href="#org996fd7c">1. Simplified Model</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org47cc3c4">1.1. Parameters</a></li>
|
<li><a href="#org0dc544d">1.1. Parameters</a></li>
|
||||||
<li><a href="#org3b3c7ac">1.2. Identification</a></li>
|
<li><a href="#org08e3567">1.2. Identification</a></li>
|
||||||
<li><a href="#org97f356d">1.3. Root Locus</a></li>
|
<li><a href="#orgbba342e">1.3. Root Locus</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgf1a765f">2. Rotating X-Y platform</a>
|
<li><a href="#orgf1a765f">2. Rotating X-Y platform</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org0dc544d">2.1. Parameters</a></li>
|
<li><a href="#org1e2b26f">2.1. Parameters</a></li>
|
||||||
<li><a href="#org08e3567">2.2. Identification</a></li>
|
<li><a href="#orgb0841c5">2.2. Identification</a></li>
|
||||||
<li><a href="#orgbba342e">2.3. Root Locus</a></li>
|
<li><a href="#orgd6c324c">2.3. Root Locus</a></li>
|
||||||
<li><a href="#org069f401">2.4. Analysis</a></li>
|
<li><a href="#org069f401">2.4. Analysis</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</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>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</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>
|
<h2 id="org996fd7c"><span class="section-number-2">1</span> Simplified Model</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org47cc3c4" class="outline-3">
|
<div id="outline-container-org0dc544d" class="outline-3">
|
||||||
<h3 id="org47cc3c4"><span class="section-number-3">1.1</span> Parameters</h3>
|
<h3 id="org0dc544d"><span class="section-number-3">1.1</span> Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">m = 1; % [kg]
|
<pre class="src src-matlab">m = 1; % [kg]
|
||||||
@@ -154,8 +162,8 @@ IFF Controller:
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3b3c7ac" class="outline-3">
|
<div id="outline-container-org08e3567" class="outline-3">
|
||||||
<h3 id="org3b3c7ac"><span class="section-number-3">1.2</span> Identification</h3>
|
<h3 id="org08e3567"><span class="section-number-3">1.2</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-1-2">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
Identification in open-loop.
|
Identification in open-loop.
|
||||||
@@ -210,8 +218,8 @@ Giff.OutputName = {'Fs', 'x1'};
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org97f356d" class="outline-3">
|
<div id="outline-container-orgbba342e" class="outline-3">
|
||||||
<h3 id="org97f356d"><span class="section-number-3">1.3</span> Root Locus</h3>
|
<h3 id="orgbba342e"><span class="section-number-3">1.3</span> Root Locus</h3>
|
||||||
<div class="outline-text-3" id="text-1-3">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
|
|
||||||
<div id="org85cd6e5" class="figure">
|
<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>
|
<h2 id="orgf1a765f"><span class="section-number-2">2</span> Rotating X-Y platform</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org0dc544d" class="outline-3">
|
<div id="outline-container-org1e2b26f" class="outline-3">
|
||||||
<h3 id="org0dc544d"><span class="section-number-3">2.1</span> Parameters</h3>
|
<h3 id="org1e2b26f"><span class="section-number-3">2.1</span> Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-2-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">m = 1; % [kg]
|
<pre class="src src-matlab">m = 1; % [kg]
|
||||||
@@ -255,8 +263,8 @@ h = 0.2; % [m]
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org08e3567" class="outline-3">
|
<div id="outline-container-orgb0841c5" class="outline-3">
|
||||||
<h3 id="org08e3567"><span class="section-number-3">2.2</span> Identification</h3>
|
<h3 id="orgb0841c5"><span class="section-number-3">2.2</span> Identification</h3>
|
||||||
<div class="outline-text-3" id="text-2-2">
|
<div class="outline-text-3" id="text-2-2">
|
||||||
<p>
|
<p>
|
||||||
Rotating speed in rad/s:
|
Rotating speed in rad/s:
|
||||||
@@ -305,8 +313,8 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbba342e" class="outline-3">
|
<div id="outline-container-orgd6c324c" class="outline-3">
|
||||||
<h3 id="orgbba342e"><span class="section-number-3">2.3</span> Root Locus</h3>
|
<h3 id="orgd6c324c"><span class="section-number-3">2.3</span> Root Locus</h3>
|
||||||
<div class="outline-text-3" id="text-2-3">
|
<div class="outline-text-3" id="text-2-3">
|
||||||
|
|
||||||
<div id="orgccd3396" class="figure">
|
<div id="orgccd3396" class="figure">
|
||||||
@@ -368,10 +376,115 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</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>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-05-20 mer. 15:49</p>
|
<p class="date">Created: 2020-05-20 mer. 16:41</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 242 KiB |
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 144 KiB |
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 100 KiB |
@@ -3,7 +3,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-20 mer. 15:49 -->
|
<!-- 2020-05-20 mer. 16:41 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Control of the NASS with optimal stiffness</title>
|
<title>Control of the NASS with optimal stiffness</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
<li><a href="#orgfef1a3f">1.3. Controller Design</a></li>
|
<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="#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="#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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org81dc0a8">2. Primary Control in the leg space</a>
|
<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="#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="#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="#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="#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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org56b28cd">3. Further More complex simulations</a>
|
<li><a href="#org56b28cd">3. Further More complex simulations</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org6c1ddb5">3.1. Simulation with Micro-Hexapod Offset</a>
|
<li><a href="#org6c1ddb5">3.1. Simulation with Micro-Hexapod Offset</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgcd1c705">3.1.1. Simulation</a></li>
|
<li><a href="#org78cec1a">3.1.1. Simulation</a></li>
|
||||||
<li><a href="#org3387265">3.1.2. Results</a></li>
|
<li><a href="#org53a553d">3.1.2. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org5cb899b">3.2. Simultaneous Translation scans and Spindle’s rotation</a>
|
<li><a href="#org5cb899b">3.2. Simultaneous Translation scans and Spindle’s rotation</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org48f5ed8">3.2.1. Simulation</a></li>
|
<li><a href="#orgf715899">3.2.1. Simulation</a></li>
|
||||||
<li><a href="#orgcc19864">3.2.2. Results</a></li>
|
<li><a href="#org056af12">3.2.2. Results</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -79,8 +79,8 @@
|
|||||||
<li><a href="#orgb28634b">4.2.1. Stability</a></li>
|
<li><a href="#orgb28634b">4.2.1. Stability</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org78cec1a">4.3. Simulation</a></li>
|
<li><a href="#org8bd1f9d">4.3. Simulation</a></li>
|
||||||
<li><a href="#orgdc2eb5a">4.4. Conclusion</a></li>
|
<li><a href="#org3cfdfa3">4.4. Conclusion</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</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">
|
<div id="org5814b4f" class="figure">
|
||||||
<p><img src="figs/opt_stiff_dvf_root_locus.png" alt="opt_stiff_dvf_root_locus.png" />
|
<p><img src="figs/opt_stiff_dvf_root_locus.png" alt="opt_stiff_dvf_root_locus.png" />
|
||||||
</p>
|
</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>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -324,8 +324,8 @@ Decentralized Direct Velocity Feedback is shown to increase the effect of stages
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd9e52e3" class="outline-3">
|
<div id="outline-container-orgdc2eb5a" class="outline-3">
|
||||||
<h3 id="orgd9e52e3"><span class="section-number-3">1.6</span> Conclusion</h3>
|
<h3 id="orgdc2eb5a"><span class="section-number-3">1.6</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-1-6">
|
<div class="outline-text-3" id="text-1-6">
|
||||||
<div class="important">
|
<div class="important">
|
||||||
<p>
|
<p>
|
||||||
@@ -512,8 +512,8 @@ And we run the simulation for all three payload Masses.
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org66b4613" class="outline-3">
|
<div id="outline-container-orgcc19864" class="outline-3">
|
||||||
<h3 id="org66b4613"><span class="section-number-3">2.5</span> Results</h3>
|
<h3 id="orgcc19864"><span class="section-number-3">2.5</span> Results</h3>
|
||||||
<div class="outline-text-3" id="text-2-5">
|
<div class="outline-text-3" id="text-2-5">
|
||||||
<p>
|
<p>
|
||||||
Let’s now see how this controller performs.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3b6d331" class="outline-3">
|
<div id="outline-container-orgcf22d67" class="outline-3">
|
||||||
<h3 id="org3b6d331"><span class="section-number-3">2.7</span> Conclusion</h3>
|
<h3 id="orgcf22d67"><span class="section-number-3">2.7</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-2-7">
|
<div class="outline-text-3" id="text-2-7">
|
||||||
<div class="important">
|
<div class="important">
|
||||||
<p>
|
<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>
|
<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 class="outline-text-3" id="text-3-1">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgcd1c705" class="outline-4">
|
<div id="outline-container-org78cec1a" class="outline-4">
|
||||||
<h4 id="orgcd1c705"><span class="section-number-4">3.1.1</span> Simulation</h4>
|
<h4 id="org78cec1a"><span class="section-number-4">3.1.1</span> Simulation</h4>
|
||||||
<div class="outline-text-4" id="text-3-1-1">
|
<div class="outline-text-4" id="text-3-1-1">
|
||||||
<p>
|
<p>
|
||||||
The micro-hexapod is inducing a 10mm offset of the sample center of mass with the rotation axis.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3387265" class="outline-4">
|
<div id="outline-container-org53a553d" class="outline-4">
|
||||||
<h4 id="org3387265"><span class="section-number-4">3.1.2</span> Results</h4>
|
<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 class="outline-text-4" id="text-3-1-2">
|
||||||
|
|
||||||
<div id="org6be7e46" class="figure">
|
<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>
|
<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 class="outline-text-3" id="text-3-2">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-org48f5ed8" class="outline-4">
|
<div id="outline-container-orgf715899" class="outline-4">
|
||||||
<h4 id="org48f5ed8"><span class="section-number-4">3.2.1</span> Simulation</h4>
|
<h4 id="orgf715899"><span class="section-number-4">3.2.1</span> Simulation</h4>
|
||||||
<div class="outline-text-4" id="text-3-2-1">
|
<div class="outline-text-4" id="text-3-2-1">
|
||||||
<p>
|
<p>
|
||||||
A simulation is now performed with translation scans and spindle rotation at the same time.
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgcc19864" class="outline-4">
|
<div id="outline-container-org056af12" class="outline-4">
|
||||||
<h4 id="orgcc19864"><span class="section-number-4">3.2.2</span> Results</h4>
|
<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 class="outline-text-4" id="text-3-2-2">
|
||||||
|
|
||||||
<div id="orgbfa1d02" class="figure">
|
<div id="orgbfa1d02" class="figure">
|
||||||
@@ -778,11 +778,11 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org78cec1a" class="outline-3">
|
<div id="outline-container-org8bd1f9d" class="outline-3">
|
||||||
<h3 id="org78cec1a"><span class="section-number-3">4.3</span> Simulation</h3>
|
<h3 id="org8bd1f9d"><span class="section-number-3">4.3</span> Simulation</h3>
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orgdc2eb5a" class="outline-3">
|
<div id="outline-container-org3cfdfa3" class="outline-3">
|
||||||
<h3 id="orgdc2eb5a"><span class="section-number-3">4.4</span> Conclusion</h3>
|
<h3 id="org3cfdfa3"><span class="section-number-3">4.4</span> Conclusion</h3>
|
||||||
<div class="outline-text-3" id="text-4-4">
|
<div class="outline-text-3" id="text-4-4">
|
||||||
<div class="important">
|
<div class="important">
|
||||||
<p>
|
<p>
|
||||||
@@ -796,7 +796,7 @@ end
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-05-20 mer. 15:49</p>
|
<p class="date">Created: 2020-05-20 mer. 16:41</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
+441
-428
File diff suppressed because it is too large
Load Diff
+254
-229
@@ -3,7 +3,7 @@
|
|||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||||
<head>
|
<head>
|
||||||
<!-- 2020-05-20 mer. 15:49 -->
|
<!-- 2020-05-20 mer. 16:41 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<title>Stewart Platform - Simscape Model</title>
|
<title>Stewart Platform - Simscape Model</title>
|
||||||
<meta name="generator" content="Org mode" />
|
<meta name="generator" content="Org mode" />
|
||||||
@@ -36,85 +36,85 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgcaca5e0">1. <code>initializeStewartPlatform</code>: Initialize the Stewart Platform structure</a>
|
<li><a href="#orgcaca5e0">1. <code>initializeStewartPlatform</code>: Initialize the Stewart Platform structure</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org5817617">Documentation</a></li>
|
<li><a href="#org8dc2620">Documentation</a></li>
|
||||||
<li><a href="#org7d81110">Function description</a></li>
|
<li><a href="#orgb2b186c">Function description</a></li>
|
||||||
<li><a href="#org3622825">Initialize the Stewart structure</a></li>
|
<li><a href="#org3622825">Initialize the Stewart structure</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgac25f89">2. <code>initializeFramesPositions</code>: Initialize the positions of frames {A}, {B}, {F} and {M}</a>
|
<li><a href="#orgac25f89">2. <code>initializeFramesPositions</code>: Initialize the positions of frames {A}, {B}, {F} and {M}</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org60fadfe">Documentation</a></li>
|
<li><a href="#org736bb40">Documentation</a></li>
|
||||||
<li><a href="#org3f0f259">Function description</a></li>
|
<li><a href="#orgb82d77f">Function description</a></li>
|
||||||
<li><a href="#orgada2d6f">Optional Parameters</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="#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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgccb31c6">3. <code>generateGeneralConfiguration</code>: Generate a Very General Configuration</a>
|
<li><a href="#orgccb31c6">3. <code>generateGeneralConfiguration</code>: Generate a Very General Configuration</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org722f89f">Documentation</a></li>
|
<li><a href="#orgd270a86">Documentation</a></li>
|
||||||
<li><a href="#org37642a9">Function description</a></li>
|
<li><a href="#org22aadcf">Function description</a></li>
|
||||||
<li><a href="#org8175ecb">Optional Parameters</a></li>
|
<li><a href="#orga6492a4">Optional Parameters</a></li>
|
||||||
<li><a href="#orgc9244b9">Compute the pose</a></li>
|
<li><a href="#org3231a85">Compute the pose</a></li>
|
||||||
<li><a href="#org010e928">Populate the <code>stewart</code> structure</a></li>
|
<li><a href="#org13d89d2">Populate the <code>stewart</code> structure</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org9944c04">4. <code>computeJointsPose</code>: Compute the Pose of the Joints</a>
|
<li><a href="#org9944c04">4. <code>computeJointsPose</code>: Compute the Pose of the Joints</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org1084538">Documentation</a></li>
|
<li><a href="#orgf8b573b">Documentation</a></li>
|
||||||
<li><a href="#org1da2a38">Function description</a></li>
|
<li><a href="#org85d30c9">Function description</a></li>
|
||||||
<li><a href="#org02f1320">Check the <code>stewart</code> structure elements</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="#orge87b302">Compute the position of the Joints</a></li>
|
||||||
<li><a href="#org3a7e3c5">Compute the strut length and orientation</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="#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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org1315282">5. <code>initializeStewartPose</code>: Determine the initial stroke in each leg to have the wanted pose</a>
|
<li><a href="#org1315282">5. <code>initializeStewartPose</code>: Determine the initial stroke in each leg to have the wanted pose</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org3df7fa5">Function description</a></li>
|
<li><a href="#org9a7c718">Function description</a></li>
|
||||||
<li><a href="#org7ad7e23">Optional Parameters</a></li>
|
<li><a href="#orga7f6cb4">Optional Parameters</a></li>
|
||||||
<li><a href="#orgbb9abb5">Use the Inverse Kinematic function</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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org4674203">6. <code>initializeCylindricalPlatforms</code>: Initialize the geometry of the Fixed and Mobile Platforms</a>
|
<li><a href="#org4674203">6. <code>initializeCylindricalPlatforms</code>: Initialize the geometry of the Fixed and Mobile Platforms</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org600d8b6">Function description</a></li>
|
<li><a href="#orge53472d">Function description</a></li>
|
||||||
<li><a href="#org7126edc">Optional Parameters</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="#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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgb0a1d7b">7. <code>initializeCylindricalStruts</code>: Define the inertia of cylindrical struts</a>
|
<li><a href="#orgb0a1d7b">7. <code>initializeCylindricalStruts</code>: Define the inertia of cylindrical struts</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org415806e">Function description</a></li>
|
<li><a href="#orgf6fcb94">Function description</a></li>
|
||||||
<li><a href="#org46ba207">Optional Parameters</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="#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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgae8d0dc">8. <code>initializeStrutDynamics</code>: Add Stiffness and Damping properties of each strut</a>
|
<li><a href="#orgae8d0dc">8. <code>initializeStrutDynamics</code>: Add Stiffness and Damping properties of each strut</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org1e0bcd1">Documentation</a></li>
|
<li><a href="#org15ad3b5">Documentation</a></li>
|
||||||
<li><a href="#org70074aa">Function description</a></li>
|
<li><a href="#org5318aec">Function description</a></li>
|
||||||
<li><a href="#orgc77ced4">Optional Parameters</a></li>
|
<li><a href="#org153d169">Optional Parameters</a></li>
|
||||||
<li><a href="#org3c2e550">Add Stiffness and Damping properties of each strut</a></li>
|
<li><a href="#org3c2e550">Add Stiffness and Damping properties of each strut</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org682a09c">9. <code>initializeAmplifiedStrutDynamics</code>: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator</a>
|
<li><a href="#org682a09c">9. <code>initializeAmplifiedStrutDynamics</code>: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgb4491ea">Documentation</a></li>
|
<li><a href="#orgc4169f8">Documentation</a></li>
|
||||||
<li><a href="#org32024c4">Function description</a></li>
|
<li><a href="#org44de918">Function description</a></li>
|
||||||
<li><a href="#orgb9c096a">Optional Parameters</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="#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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgbc5232e">10. <code>initializeJointDynamics</code>: Add Stiffness and Damping properties for spherical joints</a>
|
<li><a href="#orgbc5232e">10. <code>initializeJointDynamics</code>: Add Stiffness and Damping properties for spherical joints</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org9987af0">Function description</a></li>
|
<li><a href="#orgcc4b26d">Function description</a></li>
|
||||||
<li><a href="#orgfa09700">Optional Parameters</a></li>
|
<li><a href="#org047804e">Optional Parameters</a></li>
|
||||||
<li><a href="#orgd5b8278">Add Actuator Type</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="#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>
|
<li><a href="#org1e8eceb">Add Stiffness and Damping in Rotation of each strut</a></li>
|
||||||
@@ -124,17 +124,17 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgcfc37af">Geophone - Working Principle</a></li>
|
<li><a href="#orgcfc37af">Geophone - Working Principle</a></li>
|
||||||
<li><a href="#org986e38f">Accelerometer - Working Principle</a></li>
|
<li><a href="#org986e38f">Accelerometer - Working Principle</a></li>
|
||||||
<li><a href="#orgf891c99">Function description</a></li>
|
<li><a href="#orgcb6bebb">Function description</a></li>
|
||||||
<li><a href="#org3120ee8">Optional Parameters</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="#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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#orgd6baa46">12. <code>displayArchitecture</code>: 3D plot of the Stewart platform architecture</a>
|
<li><a href="#orgd6baa46">12. <code>displayArchitecture</code>: 3D plot of the Stewart platform architecture</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org84f3d13">Function description</a></li>
|
<li><a href="#orgc70c9a5">Function description</a></li>
|
||||||
<li><a href="#org74d4ce4">Optional Parameters</a></li>
|
<li><a href="#org63006a7">Optional Parameters</a></li>
|
||||||
<li><a href="#org3b35a3d">Check the <code>stewart</code> structure elements</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="#orgb11fd92">Figure Creation, Frames and Homogeneous transformations</a></li>
|
||||||
<li><a href="#org7cd8fee">Fixed Base elements</a></li>
|
<li><a href="#org7cd8fee">Fixed Base elements</a></li>
|
||||||
<li><a href="#orgacb8eb7">Mobile Platform elements</a></li>
|
<li><a href="#orgacb8eb7">Mobile Platform elements</a></li>
|
||||||
@@ -145,8 +145,8 @@
|
|||||||
</li>
|
</li>
|
||||||
<li><a href="#orgecfd55f">13. <code>describeStewartPlatform</code>: Display some text describing the current defined Stewart Platform</a>
|
<li><a href="#orgecfd55f">13. <code>describeStewartPlatform</code>: Display some text describing the current defined Stewart Platform</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org6e4f9f6">Function description</a></li>
|
<li><a href="#orgb99230a">Function description</a></li>
|
||||||
<li><a href="#org1dcd763">Optional Parameters</a></li>
|
<li><a href="#orged88325">Optional Parameters</a></li>
|
||||||
<li><a href="#org1d49caa">13.1. Geometry</a></li>
|
<li><a href="#org1d49caa">13.1. Geometry</a></li>
|
||||||
<li><a href="#orgcb66771">13.2. Actuators</a></li>
|
<li><a href="#orgcb66771">13.2. Actuators</a></li>
|
||||||
<li><a href="#org4630b77">13.3. Joints</a></li>
|
<li><a href="#org4630b77">13.3. Joints</a></li>
|
||||||
@@ -155,39 +155,39 @@
|
|||||||
</li>
|
</li>
|
||||||
<li><a href="#org65fc289">14. <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</a>
|
<li><a href="#org65fc289">14. <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org56bb069">Function description</a></li>
|
<li><a href="#orgc164e8d">Function description</a></li>
|
||||||
<li><a href="#org8dc2620">Documentation</a></li>
|
<li><a href="#org0d467b7">Documentation</a></li>
|
||||||
<li><a href="#org9269fce">Optional Parameters</a></li>
|
<li><a href="#orgda76f80">Optional Parameters</a></li>
|
||||||
<li><a href="#org90eac03">Check the <code>stewart</code> structure elements</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="#orge94a885">Position of the Cube</a></li>
|
||||||
<li><a href="#org3231a85">Compute the pose</a></li>
|
<li><a href="#orge8af7a8">Compute the pose</a></li>
|
||||||
<li><a href="#orgb046d7e">Populate the <code>stewart</code> structure</a></li>
|
<li><a href="#org32b44aa">Populate the <code>stewart</code> structure</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org9e8cbfa">15. <code>computeJacobian</code>: Compute the Jacobian Matrix</a>
|
<li><a href="#org9e8cbfa">15. <code>computeJacobian</code>: Compute the Jacobian Matrix</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org9b984be">Function description</a></li>
|
<li><a href="#org2c08fbd">Function description</a></li>
|
||||||
<li><a href="#orga0158ff">Check the <code>stewart</code> structure elements</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="#org9bcd9b9">Compute Jacobian Matrix</a></li>
|
||||||
<li><a href="#orgf08eda6">Compute Stiffness Matrix</a></li>
|
<li><a href="#orgf08eda6">Compute Stiffness Matrix</a></li>
|
||||||
<li><a href="#orgd164132">Compute Compliance 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>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org03168fc">16. <code>inverseKinematics</code>: Compute Inverse Kinematics</a>
|
<li><a href="#org03168fc">16. <code>inverseKinematics</code>: Compute Inverse Kinematics</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgbdc5fb1">Theory</a></li>
|
<li><a href="#orgbdc5fb1">Theory</a></li>
|
||||||
<li><a href="#org988305f">Function description</a></li>
|
<li><a href="#org18c9841">Function description</a></li>
|
||||||
<li><a href="#org954d921">Optional Parameters</a></li>
|
<li><a href="#org848fb1f">Optional Parameters</a></li>
|
||||||
<li><a href="#org2e35685">Check the <code>stewart</code> structure elements</a></li>
|
<li><a href="#org8be974b">Check the <code>stewart</code> structure elements</a></li>
|
||||||
<li><a href="#org8b70a76">Compute</a></li>
|
<li><a href="#org8b70a76">Compute</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org278d55b">17. <code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</a>
|
<li><a href="#org278d55b">17. <code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orgb2b186c">Function description</a></li>
|
<li><a href="#org07e11bf">Function description</a></li>
|
||||||
<li><a href="#org8e4bfab">Optional Parameters</a></li>
|
<li><a href="#org918179d">Optional Parameters</a></li>
|
||||||
<li><a href="#org87cdb4a">Check the <code>stewart</code> structure elements</a></li>
|
<li><a href="#orgf157791">Check the <code>stewart</code> structure elements</a></li>
|
||||||
<li><a href="#orgf17cab9">Computation</a></li>
|
<li><a href="#orgf17cab9">Computation</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -273,11 +273,11 @@ This Matlab function is accessible <a href="../src/initializeStewartPlatform.m">
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org5817617" class="outline-3">
|
<div id="outline-container-org8dc2620" class="outline-3">
|
||||||
<h3 id="org5817617">Documentation</h3>
|
<h3 id="org8dc2620">Documentation</h3>
|
||||||
<div class="outline-text-3" id="text-org5817617">
|
<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><img src="figs/stewart-frames-position.png" alt="stewart-frames-position.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Definition of the position of the frames</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7d81110" class="outline-3">
|
<div id="outline-container-orgb2b186c" class="outline-3">
|
||||||
<h3 id="org7d81110">Function description</h3>
|
<h3 id="orgb2b186c">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org7d81110">
|
<div class="outline-text-3" id="text-orgb2b186c">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = initializeStewartPlatform()
|
<pre class="src src-matlab">function [stewart] = initializeStewartPlatform()
|
||||||
% initializeStewartPlatform - Initialize the stewart structure
|
% initializeStewartPlatform - Initialize the stewart structure
|
||||||
@@ -346,11 +346,11 @@ This Matlab function is accessible <a href="../src/initializeFramesPositions.m">
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org60fadfe" class="outline-3">
|
<div id="outline-container-org736bb40" class="outline-3">
|
||||||
<h3 id="org60fadfe">Documentation</h3>
|
<h3 id="org736bb40">Documentation</h3>
|
||||||
<div class="outline-text-3" id="text-org60fadfe">
|
<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><img src="figs/stewart-frames-position.png" alt="stewart-frames-position.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Definition of the position of the frames</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3f0f259" class="outline-3">
|
<div id="outline-container-orgb82d77f" class="outline-3">
|
||||||
<h3 id="org3f0f259">Function description</h3>
|
<h3 id="orgb82d77f">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org3f0f259">
|
<div class="outline-text-3" id="text-orgb82d77f">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = initializeFramesPositions(stewart, args)
|
<pre class="src src-matlab">function [stewart] = initializeFramesPositions(stewart, args)
|
||||||
% initializeFramesPositions - Initialize the positions of frames {A}, {B}, {F} and {M}
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgada2d6f" class="outline-3">
|
<div id="outline-container-org8e4bfab" class="outline-3">
|
||||||
<h3 id="orgada2d6f">Optional Parameters</h3>
|
<h3 id="org8e4bfab">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-orgada2d6f">
|
<div class="outline-text-3" id="text-org8e4bfab">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -413,9 +413,9 @@ FO_A = MO_B + FO_M; % Position of {A} with respect to {F} [m]
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd7c92be" class="outline-3">
|
<div id="outline-container-orgecc27b3" class="outline-3">
|
||||||
<h3 id="orgd7c92be">Populate the <code>stewart</code> structure</h3>
|
<h3 id="orgecc27b3">Populate the <code>stewart</code> structure</h3>
|
||||||
<div class="outline-text-3" id="text-orgd7c92be">
|
<div class="outline-text-3" id="text-orgecc27b3">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart.geometry.H = H;
|
<pre class="src src-matlab">stewart.geometry.H = H;
|
||||||
stewart.geometry.FO_M = FO_M;
|
stewart.geometry.FO_M = FO_M;
|
||||||
@@ -439,9 +439,9 @@ This Matlab function is accessible <a href="../src/generateGeneralConfiguration.
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org722f89f" class="outline-3">
|
<div id="outline-container-orgd270a86" class="outline-3">
|
||||||
<h3 id="org722f89f">Documentation</h3>
|
<h3 id="orgd270a86">Documentation</h3>
|
||||||
<div class="outline-text-3" id="text-org722f89f">
|
<div class="outline-text-3" id="text-orgd270a86">
|
||||||
<p>
|
<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}.
|
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>).
|
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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org37642a9" class="outline-3">
|
<div id="outline-container-org22aadcf" class="outline-3">
|
||||||
<h3 id="org37642a9">Function description</h3>
|
<h3 id="org22aadcf">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org37642a9">
|
<div class="outline-text-3" id="text-org22aadcf">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = generateGeneralConfiguration(stewart, args)
|
<pre class="src src-matlab">function [stewart] = generateGeneralConfiguration(stewart, args)
|
||||||
% generateGeneralConfiguration - Generate a Very General Configuration
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8175ecb" class="outline-3">
|
<div id="outline-container-orga6492a4" class="outline-3">
|
||||||
<h3 id="org8175ecb">Optional Parameters</h3>
|
<h3 id="orga6492a4">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-org8175ecb">
|
<div class="outline-text-3" id="text-orga6492a4">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -501,9 +501,9 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc9244b9" class="outline-3">
|
<div id="outline-container-org3231a85" class="outline-3">
|
||||||
<h3 id="orgc9244b9">Compute the pose</h3>
|
<h3 id="org3231a85">Compute the pose</h3>
|
||||||
<div class="outline-text-3" id="text-orgc9244b9">
|
<div class="outline-text-3" id="text-org3231a85">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">Fa = zeros(3,6);
|
<pre class="src src-matlab">Fa = zeros(3,6);
|
||||||
Mb = zeros(3,6);
|
Mb = zeros(3,6);
|
||||||
@@ -520,9 +520,9 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org010e928" class="outline-3">
|
<div id="outline-container-org13d89d2" class="outline-3">
|
||||||
<h3 id="org010e928">Populate the <code>stewart</code> structure</h3>
|
<h3 id="org13d89d2">Populate the <code>stewart</code> structure</h3>
|
||||||
<div class="outline-text-3" id="text-org010e928">
|
<div class="outline-text-3" id="text-org13d89d2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart.platform_F.Fa = Fa;
|
<pre class="src src-matlab">stewart.platform_F.Fa = Fa;
|
||||||
stewart.platform_M.Mb = Mb;
|
stewart.platform_M.Mb = Mb;
|
||||||
@@ -544,9 +544,9 @@ This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1084538" class="outline-3">
|
<div id="outline-container-orgf8b573b" class="outline-3">
|
||||||
<h3 id="org1084538">Documentation</h3>
|
<h3 id="orgf8b573b">Documentation</h3>
|
||||||
<div class="outline-text-3" id="text-org1084538">
|
<div class="outline-text-3" id="text-orgf8b573b">
|
||||||
|
|
||||||
<div id="org20f7106" class="figure">
|
<div id="org20f7106" class="figure">
|
||||||
<p><img src="figs/stewart-struts.png" alt="stewart-struts.png" />
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1da2a38" class="outline-3">
|
<div id="outline-container-org85d30c9" class="outline-3">
|
||||||
<h3 id="org1da2a38">Function description</h3>
|
<h3 id="org85d30c9">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org1da2a38">
|
<div class="outline-text-3" id="text-org85d30c9">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = computeJointsPose(stewart)
|
<pre class="src src-matlab">function [stewart] = computeJointsPose(stewart)
|
||||||
% computeJointsPose -
|
% computeJointsPose -
|
||||||
@@ -591,9 +591,9 @@ This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org02f1320" class="outline-3">
|
<div id="outline-container-org87cdb4a" class="outline-3">
|
||||||
<h3 id="org02f1320">Check the <code>stewart</code> structure elements</h3>
|
<h3 id="org87cdb4a">Check the <code>stewart</code> structure elements</h3>
|
||||||
<div class="outline-text-3" id="text-org02f1320">
|
<div class="outline-text-3" id="text-org87cdb4a">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">assert(isfield(stewart.platform_F, 'Fa'), 'stewart.platform_F should have attribute Fa')
|
<pre class="src src-matlab">assert(isfield(stewart.platform_F, 'Fa'), 'stewart.platform_F should have attribute Fa')
|
||||||
Fa = stewart.platform_F.Fa;
|
Fa = stewart.platform_F.Fa;
|
||||||
@@ -664,9 +664,9 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgab9893e" class="outline-3">
|
<div id="outline-container-org47a4205" class="outline-3">
|
||||||
<h3 id="orgab9893e">Populate the <code>stewart</code> structure</h3>
|
<h3 id="org47a4205">Populate the <code>stewart</code> structure</h3>
|
||||||
<div class="outline-text-3" id="text-orgab9893e">
|
<div class="outline-text-3" id="text-org47a4205">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart.geometry.Aa = Aa;
|
<pre class="src src-matlab">stewart.geometry.Aa = Aa;
|
||||||
stewart.geometry.Ab = Ab;
|
stewart.geometry.Ab = Ab;
|
||||||
@@ -699,9 +699,9 @@ This Matlab function is accessible <a href="../src/initializeStewartPose.m">here
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3df7fa5" class="outline-3">
|
<div id="outline-container-org9a7c718" class="outline-3">
|
||||||
<h3 id="org3df7fa5">Function description</h3>
|
<h3 id="org9a7c718">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org3df7fa5">
|
<div class="outline-text-3" id="text-org9a7c718">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = initializeStewartPose(stewart, args)
|
<pre class="src src-matlab">function [stewart] = initializeStewartPose(stewart, args)
|
||||||
% initializeStewartPose - Determine the initial stroke in each leg to have the wanted pose
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7ad7e23" class="outline-3">
|
<div id="outline-container-orga7f6cb4" class="outline-3">
|
||||||
<h3 id="org7ad7e23">Optional Parameters</h3>
|
<h3 id="orga7f6cb4">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-org7ad7e23">
|
<div class="outline-text-3" id="text-orga7f6cb4">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -749,9 +749,9 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8f6d297" class="outline-3">
|
<div id="outline-container-orga35dd52" class="outline-3">
|
||||||
<h3 id="org8f6d297">Populate the <code>stewart</code> structure</h3>
|
<h3 id="orga35dd52">Populate the <code>stewart</code> structure</h3>
|
||||||
<div class="outline-text-3" id="text-org8f6d297">
|
<div class="outline-text-3" id="text-orga35dd52">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart.actuators.Leq = dLi;
|
<pre class="src src-matlab">stewart.actuators.Leq = dLi;
|
||||||
</pre>
|
</pre>
|
||||||
@@ -772,9 +772,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalPlatform
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org600d8b6" class="outline-3">
|
<div id="outline-container-orge53472d" class="outline-3">
|
||||||
<h3 id="org600d8b6">Function description</h3>
|
<h3 id="orge53472d">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org600d8b6">
|
<div class="outline-text-3" id="text-orge53472d">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = initializeCylindricalPlatforms(stewart, args)
|
<pre class="src src-matlab">function [stewart] = initializeCylindricalPlatforms(stewart, args)
|
||||||
% initializeCylindricalPlatforms - Initialize the geometry of the Fixed and Mobile Platforms
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org7126edc" class="outline-3">
|
<div id="outline-container-orgc31cfe7" class="outline-3">
|
||||||
<h3 id="org7126edc">Optional Parameters</h3>
|
<h3 id="orgc31cfe7">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-org7126edc">
|
<div class="outline-text-3" id="text-orgc31cfe7">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -845,9 +845,9 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1282acb" class="outline-3">
|
<div id="outline-container-orga779e2f" class="outline-3">
|
||||||
<h3 id="org1282acb">Populate the <code>stewart</code> structure</h3>
|
<h3 id="orga779e2f">Populate the <code>stewart</code> structure</h3>
|
||||||
<div class="outline-text-3" id="text-org1282acb">
|
<div class="outline-text-3" id="text-orga779e2f">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart.platform_F.type = 1;
|
<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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org415806e" class="outline-3">
|
<div id="outline-container-orgf6fcb94" class="outline-3">
|
||||||
<h3 id="org415806e">Function description</h3>
|
<h3 id="orgf6fcb94">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org415806e">
|
<div class="outline-text-3" id="text-orgf6fcb94">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = initializeCylindricalStruts(stewart, args)
|
<pre class="src src-matlab">function [stewart] = initializeCylindricalStruts(stewart, args)
|
||||||
% initializeCylindricalStruts - Define the mass and moment of inertia of cylindrical struts
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org46ba207" class="outline-3">
|
<div id="outline-container-org8990e71" class="outline-3">
|
||||||
<h3 id="org46ba207">Optional Parameters</h3>
|
<h3 id="org8990e71">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-org46ba207">
|
<div class="outline-text-3" id="text-org8990e71">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -968,9 +968,9 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgec9a313" class="outline-3">
|
<div id="outline-container-org53395cc" class="outline-3">
|
||||||
<h3 id="orgec9a313">Populate the <code>stewart</code> structure</h3>
|
<h3 id="org53395cc">Populate the <code>stewart</code> structure</h3>
|
||||||
<div class="outline-text-3" id="text-orgec9a313">
|
<div class="outline-text-3" id="text-org53395cc">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart.struts_M.type = 1;
|
<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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1e0bcd1" class="outline-3">
|
<div id="outline-container-org15ad3b5" class="outline-3">
|
||||||
<h3 id="org1e0bcd1">Documentation</h3>
|
<h3 id="org15ad3b5">Documentation</h3>
|
||||||
<div class="outline-text-3" id="text-org1e0bcd1">
|
<div class="outline-text-3" id="text-org15ad3b5">
|
||||||
|
|
||||||
<div id="org99aef3e" class="figure">
|
<div id="org99aef3e" class="figure">
|
||||||
<p><img src="figs/piezoelectric_stack.jpg" alt="piezoelectric_stack.jpg" width="500px" />
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org70074aa" class="outline-3">
|
<div id="outline-container-org5318aec" class="outline-3">
|
||||||
<h3 id="org70074aa">Function description</h3>
|
<h3 id="org5318aec">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org70074aa">
|
<div class="outline-text-3" id="text-org5318aec">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = initializeStrutDynamics(stewart, args)
|
<pre class="src src-matlab">function [stewart] = initializeStrutDynamics(stewart, args)
|
||||||
% initializeStrutDynamics - Add Stiffness and Damping properties of each strut
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgc77ced4" class="outline-3">
|
<div id="outline-container-org153d169" class="outline-3">
|
||||||
<h3 id="orgc77ced4">Optional Parameters</h3>
|
<h3 id="org153d169">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-orgc77ced4">
|
<div class="outline-text-3" id="text-org153d169">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
|
args.type char {mustBeMember(args.type,{'classical', 'amplified'})} = 'classical'
|
||||||
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
|
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
|
||||||
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1*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
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
@@ -1079,10 +1088,26 @@ end
|
|||||||
<h3 id="org3c2e550">Add Stiffness and Damping properties of each strut</h3>
|
<h3 id="org3c2e550">Add Stiffness and Damping properties of each strut</h3>
|
||||||
<div class="outline-text-3" id="text-org3c2e550">
|
<div class="outline-text-3" id="text-org3c2e550">
|
||||||
<div class="org-src-container">
|
<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.K = args.K;
|
||||||
stewart.actuators.C = args.C;
|
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>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1101,9 +1126,9 @@ This Matlab function is accessible <a href="../src/initializeAmplifiedStrutDynam
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb4491ea" class="outline-3">
|
<div id="outline-container-orgc4169f8" class="outline-3">
|
||||||
<h3 id="orgb4491ea">Documentation</h3>
|
<h3 id="orgc4169f8">Documentation</h3>
|
||||||
<div class="outline-text-3" id="text-orgb4491ea">
|
<div class="outline-text-3" id="text-orgc4169f8">
|
||||||
<p>
|
<p>
|
||||||
An amplified piezoelectric actuator is shown in Figure <a href="#orgab58ac0">7</a>.
|
An amplified piezoelectric actuator is shown in Figure <a href="#orgab58ac0">7</a>.
|
||||||
</p>
|
</p>
|
||||||
@@ -1136,9 +1161,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#org7a
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org32024c4" class="outline-3">
|
<div id="outline-container-org44de918" class="outline-3">
|
||||||
<h3 id="org32024c4">Function description</h3>
|
<h3 id="org44de918">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org32024c4">
|
<div class="outline-text-3" id="text-org44de918">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = initializeAmplifiedStrutDynamics(stewart, args)
|
<pre class="src src-matlab">function [stewart] = initializeAmplifiedStrutDynamics(stewart, args)
|
||||||
% initializeAmplifiedStrutDynamics - Add Stiffness and Damping properties of each strut
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb9c096a" class="outline-3">
|
<div id="outline-container-org3966929" class="outline-3">
|
||||||
<h3 id="orgb9c096a">Optional Parameters</h3>
|
<h3 id="org3966929">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-orgb9c096a">
|
<div class="outline-text-3" id="text-org3966929">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -1193,9 +1218,9 @@ C = args.Ca + args.Cr;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgd8d2d38" class="outline-3">
|
<div id="outline-container-orgfed23b2" class="outline-3">
|
||||||
<h3 id="orgd8d2d38">Populate the <code>stewart</code> structure</h3>
|
<h3 id="orgfed23b2">Populate the <code>stewart</code> structure</h3>
|
||||||
<div class="outline-text-3" id="text-orgd8d2d38">
|
<div class="outline-text-3" id="text-orgfed23b2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart.actuators.type = 2;
|
<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>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9987af0" class="outline-3">
|
<div id="outline-container-orgcc4b26d" class="outline-3">
|
||||||
<h3 id="org9987af0">Function description</h3>
|
<h3 id="orgcc4b26d">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org9987af0">
|
<div class="outline-text-3" id="text-orgcc4b26d">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = initializeJointDynamics(stewart, args)
|
<pre class="src src-matlab">function [stewart] = initializeJointDynamics(stewart, args)
|
||||||
% initializeJointDynamics - Add Stiffness and Damping properties for the spherical joints
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgfa09700" class="outline-3">
|
<div id="outline-container-org047804e" class="outline-3">
|
||||||
<h3 id="orgfa09700">Optional Parameters</h3>
|
<h3 id="org047804e">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-orgfa09700">
|
<div class="outline-text-3" id="text-org047804e">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -1476,9 +1501,9 @@ Note that there is trade-off between:
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf891c99" class="outline-3">
|
<div id="outline-container-orgcb6bebb" class="outline-3">
|
||||||
<h3 id="orgf891c99">Function description</h3>
|
<h3 id="orgcb6bebb">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-orgf891c99">
|
<div class="outline-text-3" id="text-orgcb6bebb">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = initializeInertialSensor(stewart, args)
|
<pre class="src src-matlab">function [stewart] = initializeInertialSensor(stewart, args)
|
||||||
% initializeInertialSensor - Initialize the inertial sensor in each strut
|
% initializeInertialSensor - Initialize the inertial sensor in each strut
|
||||||
@@ -1504,9 +1529,9 @@ Note that there is trade-off between:
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3120ee8" class="outline-3">
|
<div id="outline-container-org5ec99a5" class="outline-3">
|
||||||
<h3 id="org3120ee8">Optional Parameters</h3>
|
<h3 id="org5ec99a5">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-org3120ee8">
|
<div class="outline-text-3" id="text-org5ec99a5">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -1547,9 +1572,9 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org81ff88b" class="outline-3">
|
<div id="outline-container-org5e33aa2" class="outline-3">
|
||||||
<h3 id="org81ff88b">Populate the <code>stewart</code> structure</h3>
|
<h3 id="org5e33aa2">Populate the <code>stewart</code> structure</h3>
|
||||||
<div class="outline-text-3" id="text-org81ff88b">
|
<div class="outline-text-3" id="text-org5e33aa2">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart.sensors.inertial = sensor;
|
<pre class="src src-matlab">stewart.sensors.inertial = sensor;
|
||||||
</pre>
|
</pre>
|
||||||
@@ -1570,9 +1595,9 @@ This Matlab function is accessible <a href="../src/displayArchitecture.m">here</
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org84f3d13" class="outline-3">
|
<div id="outline-container-orgc70c9a5" class="outline-3">
|
||||||
<h3 id="org84f3d13">Function description</h3>
|
<h3 id="orgc70c9a5">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org84f3d13">
|
<div class="outline-text-3" id="text-orgc70c9a5">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [] = displayArchitecture(stewart, args)
|
<pre class="src src-matlab">function [] = displayArchitecture(stewart, args)
|
||||||
% displayArchitecture - 3D plot of the Stewart platform architecture
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org74d4ce4" class="outline-3">
|
<div id="outline-container-org63006a7" class="outline-3">
|
||||||
<h3 id="org74d4ce4">Optional Parameters</h3>
|
<h3 id="org63006a7">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-org74d4ce4">
|
<div class="outline-text-3" id="text-org63006a7">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -1624,9 +1649,9 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3b35a3d" class="outline-3">
|
<div id="outline-container-org86735ca" class="outline-3">
|
||||||
<h3 id="org3b35a3d">Check the <code>stewart</code> structure elements</h3>
|
<h3 id="org86735ca">Check the <code>stewart</code> structure elements</h3>
|
||||||
<div class="outline-text-3" id="text-org3b35a3d">
|
<div class="outline-text-3" id="text-org86735ca">
|
||||||
<div class="org-src-container">
|
<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')
|
<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;
|
FO_A = stewart.platform_F.FO_A;
|
||||||
@@ -1964,9 +1989,9 @@ This Matlab function is accessible <a href="../src/describeStewartPlatform.m">he
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org6e4f9f6" class="outline-3">
|
<div id="outline-container-orgb99230a" class="outline-3">
|
||||||
<h3 id="org6e4f9f6">Function description</h3>
|
<h3 id="orgb99230a">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org6e4f9f6">
|
<div class="outline-text-3" id="text-orgb99230a">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [] = describeStewartPlatform(stewart)
|
<pre class="src src-matlab">function [] = describeStewartPlatform(stewart)
|
||||||
% describeStewartPlatform - Display some text describing the current defined Stewart Platform
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org1dcd763" class="outline-3">
|
<div id="outline-container-orged88325" class="outline-3">
|
||||||
<h3 id="org1dcd763">Optional Parameters</h3>
|
<h3 id="orged88325">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-org1dcd763">
|
<div class="outline-text-3" id="text-orged88325">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -2133,9 +2158,9 @@ This Matlab function is accessible <a href="../src/generateCubicConfiguration.m"
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org56bb069" class="outline-3">
|
<div id="outline-container-orgc164e8d" class="outline-3">
|
||||||
<h3 id="org56bb069">Function description</h3>
|
<h3 id="orgc164e8d">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org56bb069">
|
<div class="outline-text-3" id="text-orgc164e8d">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = generateCubicConfiguration(stewart, args)
|
<pre class="src src-matlab">function [stewart] = generateCubicConfiguration(stewart, args)
|
||||||
% generateCubicConfiguration - Generate a Cubic Configuration
|
% generateCubicConfiguration - Generate a Cubic Configuration
|
||||||
@@ -2160,9 +2185,9 @@ This Matlab function is accessible <a href="../src/generateCubicConfiguration.m"
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8dc2620" class="outline-3">
|
<div id="outline-container-org0d467b7" class="outline-3">
|
||||||
<h3 id="org8dc2620">Documentation</h3>
|
<h3 id="org0d467b7">Documentation</h3>
|
||||||
<div class="outline-text-3" id="text-org8dc2620">
|
<div class="outline-text-3" id="text-org0d467b7">
|
||||||
|
|
||||||
<div id="org70070f0" class="figure">
|
<div id="org70070f0" class="figure">
|
||||||
<p><img src="figs/cubic-configuration-definition.png" alt="cubic-configuration-definition.png" />
|
<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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9269fce" class="outline-3">
|
<div id="outline-container-orgda76f80" class="outline-3">
|
||||||
<h3 id="org9269fce">Optional Parameters</h3>
|
<h3 id="orgda76f80">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-org9269fce">
|
<div class="outline-text-3" id="text-orgda76f80">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -2188,9 +2213,9 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org90eac03" class="outline-3">
|
<div id="outline-container-org4a5a3cf" class="outline-3">
|
||||||
<h3 id="org90eac03">Check the <code>stewart</code> structure elements</h3>
|
<h3 id="org4a5a3cf">Check the <code>stewart</code> structure elements</h3>
|
||||||
<div class="outline-text-3" id="text-org90eac03">
|
<div class="outline-text-3" id="text-org4a5a3cf">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'H'), 'stewart.geometry should have attribute H')
|
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'H'), 'stewart.geometry should have attribute H')
|
||||||
H = stewart.geometry.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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org3231a85" class="outline-3">
|
<div id="outline-container-orge8af7a8" class="outline-3">
|
||||||
<h3 id="org3231a85">Compute the pose</h3>
|
<h3 id="orge8af7a8">Compute the pose</h3>
|
||||||
<div class="outline-text-3" id="text-org3231a85">
|
<div class="outline-text-3" id="text-orge8af7a8">
|
||||||
<p>
|
<p>
|
||||||
We can compute the vector of each leg \({}^{C}\hat{\bm{s}}_{i}\) (unit vector from \({}^{C}C_{f}\) to \({}^{C}C_{m}\)).
|
We can compute the vector of each leg \({}^{C}\hat{\bm{s}}_{i}\) (unit vector from \({}^{C}C_{f}\) to \({}^{C}C_{m}\)).
|
||||||
</p>
|
</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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb046d7e" class="outline-3">
|
<div id="outline-container-org32b44aa" class="outline-3">
|
||||||
<h3 id="orgb046d7e">Populate the <code>stewart</code> structure</h3>
|
<h3 id="org32b44aa">Populate the <code>stewart</code> structure</h3>
|
||||||
<div class="outline-text-3" id="text-orgb046d7e">
|
<div class="outline-text-3" id="text-org32b44aa">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart.platform_F.Fa = Fa;
|
<pre class="src src-matlab">stewart.platform_F.Fa = Fa;
|
||||||
stewart.platform_M.Mb = Mb;
|
stewart.platform_M.Mb = Mb;
|
||||||
@@ -2271,9 +2296,9 @@ This Matlab function is accessible <a href="../src/computeJacobian.m">here</a>.
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org9b984be" class="outline-3">
|
<div id="outline-container-org2c08fbd" class="outline-3">
|
||||||
<h3 id="org9b984be">Function description</h3>
|
<h3 id="org2c08fbd">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org9b984be">
|
<div class="outline-text-3" id="text-org2c08fbd">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [stewart] = computeJacobian(stewart)
|
<pre class="src src-matlab">function [stewart] = computeJacobian(stewart)
|
||||||
% computeJacobian -
|
% computeJacobian -
|
||||||
@@ -2296,9 +2321,9 @@ This Matlab function is accessible <a href="../src/computeJacobian.m">here</a>.
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orga0158ff" class="outline-3">
|
<div id="outline-container-org8071a1b" class="outline-3">
|
||||||
<h3 id="orga0158ff">Check the <code>stewart</code> structure elements</h3>
|
<h3 id="org8071a1b">Check the <code>stewart</code> structure elements</h3>
|
||||||
<div class="outline-text-3" id="text-orga0158ff">
|
<div class="outline-text-3" id="text-org8071a1b">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'As'), 'stewart.geometry should have attribute As')
|
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'As'), 'stewart.geometry should have attribute As')
|
||||||
As = stewart.geometry.As;
|
As = stewart.geometry.As;
|
||||||
@@ -2344,9 +2369,9 @@ Ki = stewart.actuators.K;
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgecc27b3" class="outline-3">
|
<div id="outline-container-orgbf70f7a" class="outline-3">
|
||||||
<h3 id="orgecc27b3">Populate the <code>stewart</code> structure</h3>
|
<h3 id="orgbf70f7a">Populate the <code>stewart</code> structure</h3>
|
||||||
<div class="outline-text-3" id="text-orgecc27b3">
|
<div class="outline-text-3" id="text-orgbf70f7a">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">stewart.kinematics.J = J;
|
<pre class="src src-matlab">stewart.kinematics.J = J;
|
||||||
stewart.kinematics.K = K;
|
stewart.kinematics.K = K;
|
||||||
@@ -2406,9 +2431,9 @@ Otherwise, when the limbs’ lengths derived yield complex numbers, then the
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org988305f" class="outline-3">
|
<div id="outline-container-org18c9841" class="outline-3">
|
||||||
<h3 id="org988305f">Function description</h3>
|
<h3 id="org18c9841">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-org988305f">
|
<div class="outline-text-3" id="text-org18c9841">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [Li, dLi] = inverseKinematics(stewart, args)
|
<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}
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org954d921" class="outline-3">
|
<div id="outline-container-org848fb1f" class="outline-3">
|
||||||
<h3 id="org954d921">Optional Parameters</h3>
|
<h3 id="org848fb1f">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-org954d921">
|
<div class="outline-text-3" id="text-org848fb1f">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -2446,9 +2471,9 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2e35685" class="outline-3">
|
<div id="outline-container-org8be974b" class="outline-3">
|
||||||
<h3 id="org2e35685">Check the <code>stewart</code> structure elements</h3>
|
<h3 id="org8be974b">Check the <code>stewart</code> structure elements</h3>
|
||||||
<div class="outline-text-3" id="text-org2e35685">
|
<div class="outline-text-3" id="text-org8be974b">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'Aa'), 'stewart.geometry should have attribute Aa')
|
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'Aa'), 'stewart.geometry should have attribute Aa')
|
||||||
Aa = stewart.geometry.Aa;
|
Aa = stewart.geometry.Aa;
|
||||||
@@ -2492,9 +2517,9 @@ This Matlab function is accessible <a href="../src/forwardKinematicsApprox.m">he
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgb2b186c" class="outline-3">
|
<div id="outline-container-org07e11bf" class="outline-3">
|
||||||
<h3 id="orgb2b186c">Function description</h3>
|
<h3 id="org07e11bf">Function description</h3>
|
||||||
<div class="outline-text-3" id="text-orgb2b186c">
|
<div class="outline-text-3" id="text-org07e11bf">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">function [P, R] = forwardKinematicsApprox(stewart, args)
|
<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
|
% 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>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org8e4bfab" class="outline-3">
|
<div id="outline-container-org918179d" class="outline-3">
|
||||||
<h3 id="org8e4bfab">Optional Parameters</h3>
|
<h3 id="org918179d">Optional Parameters</h3>
|
||||||
<div class="outline-text-3" id="text-org8e4bfab">
|
<div class="outline-text-3" id="text-org918179d">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">arguments
|
<pre class="src src-matlab">arguments
|
||||||
stewart
|
stewart
|
||||||
@@ -2529,9 +2554,9 @@ end
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org87cdb4a" class="outline-3">
|
<div id="outline-container-orgf157791" class="outline-3">
|
||||||
<h3 id="org87cdb4a">Check the <code>stewart</code> structure elements</h3>
|
<h3 id="orgf157791">Check the <code>stewart</code> structure elements</h3>
|
||||||
<div class="outline-text-3" id="text-org87cdb4a">
|
<div class="outline-text-3" id="text-orgf157791">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">assert(isfield(stewart.kinematics, 'J'), 'stewart.kinematics should have attribute J')
|
<pre class="src src-matlab">assert(isfield(stewart.kinematics, 'J'), 'stewart.kinematics should have attribute J')
|
||||||
J = stewart.kinematics.J;
|
J = stewart.kinematics.J;
|
||||||
@@ -2586,7 +2611,7 @@ We then compute the corresponding rotation matrix.
|
|||||||
</div>
|
</div>
|
||||||
<div id="postamble" class="status">
|
<div id="postamble" class="status">
|
||||||
<p class="author">Author: Dehaeze Thomas</p>
|
<p class="author">Author: Dehaeze Thomas</p>
|
||||||
<p class="date">Created: 2020-05-20 mer. 15:49</p>
|
<p class="date">Created: 2020-05-20 mer. 16:41</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -449,3 +449,423 @@ Identification
|
|||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
open('nass_model.slx')
|
open('nass_model.slx')
|
||||||
#+end_src
|
#+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
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:opt_stiff_dvf_root_locus
|
#+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:
|
#+RESULTS:
|
||||||
[[file:figs/opt_stiff_dvf_root_locus.png]]
|
[[file:figs/opt_stiff_dvf_root_locus.png]]
|
||||||
|
|
||||||
|
|||||||
+19
-11
@@ -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)
|
args.MTh (6,1) double {mustBeNumeric} = [-60+10, 60-10, 60+10, 180-10, 180+10, -60-10]*(pi/180)
|
||||||
% initializeStrutDynamics
|
% initializeStrutDynamics
|
||||||
args.actuator char {mustBeMember(args.actuator,{'piezo', 'lorentz', 'amplified'})} = 'piezo'
|
args.actuator char {mustBeMember(args.actuator,{'piezo', 'lorentz', 'amplified'})} = 'piezo'
|
||||||
args.ki (1,1) double {mustBeNumeric} = -1
|
args.k1 (1,1) double {mustBeNumeric} = 1e6
|
||||||
args.ke (1,1) double {mustBeNumeric} = -1
|
args.ke (1,1) double {mustBeNumeric} = 5e6
|
||||||
args.ka (1,1) double {mustBeNumeric} = -1
|
args.ka (1,1) double {mustBeNumeric} = 60e6
|
||||||
args.ci (1,1) double {mustBeNumeric} = -1
|
args.c1 (1,1) double {mustBeNumeric} = 10
|
||||||
args.ce (1,1) double {mustBeNumeric} = -1
|
args.ce (1,1) double {mustBeNumeric} = 10
|
||||||
args.ca (1,1) double {mustBeNumeric} = -1
|
args.ca (1,1) double {mustBeNumeric} = 10
|
||||||
args.k (1,1) double {mustBeNumeric} = -1
|
args.k (1,1) double {mustBeNumeric} = -1
|
||||||
args.c (1,1) double {mustBeNumeric} = -1
|
args.c (1,1) double {mustBeNumeric} = -1
|
||||||
% initializeJointDynamics
|
% initializeJointDynamics
|
||||||
@@ -1343,15 +1343,23 @@ The =mirror= structure is saved.
|
|||||||
|
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
if args.k > 0 && args.c > 0
|
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
|
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')
|
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')
|
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
|
else
|
||||||
error('args.actuator should be piezo or lorentz');
|
error('args.actuator should be piezo, lorentz or amplified');
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|||||||
@@ -798,8 +798,17 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:actuator_
|
|||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
arguments
|
arguments
|
||||||
stewart
|
stewart
|
||||||
|
args.type char {mustBeMember(args.type,{'classical', 'amplified'})} = 'classical'
|
||||||
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
|
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
|
||||||
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1*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
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -808,10 +817,26 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:actuator_
|
|||||||
:UNNUMBERED: t
|
:UNNUMBERED: t
|
||||||
:END:
|
:END:
|
||||||
#+begin_src matlab
|
#+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.K = args.K;
|
||||||
stewart.actuators.C = args.C;
|
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
|
#+end_src
|
||||||
|
|
||||||
* =initializeAmplifiedStrutDynamics=: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator
|
* =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.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)
|
args.MTh (6,1) double {mustBeNumeric} = [-60+10, 60-10, 60+10, 180-10, 180+10, -60-10]*(pi/180)
|
||||||
% initializeStrutDynamics
|
% 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.k (1,1) double {mustBeNumeric} = -1
|
||||||
args.c (1,1) double {mustBeNumeric} = -1
|
args.c (1,1) double {mustBeNumeric} = -1
|
||||||
% initializeJointDynamics
|
% initializeJointDynamics
|
||||||
@@ -63,15 +69,23 @@ stewart = generateGeneralConfiguration(stewart, 'FH', args.FH, 'FR', args.FR, 'F
|
|||||||
stewart = computeJointsPose(stewart);
|
stewart = computeJointsPose(stewart);
|
||||||
|
|
||||||
if args.k > 0 && args.c > 0
|
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
|
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')
|
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')
|
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
|
else
|
||||||
error('args.actuator should be piezo or lorentz');
|
error('args.actuator should be piezo, lorentz or amplified');
|
||||||
end
|
end
|
||||||
|
|
||||||
stewart = initializeJointDynamics(stewart, ...
|
stewart = initializeJointDynamics(stewart, ...
|
||||||
|
|||||||
@@ -16,11 +16,36 @@ function [stewart] = initializeStrutDynamics(stewart, args)
|
|||||||
|
|
||||||
arguments
|
arguments
|
||||||
stewart
|
stewart
|
||||||
|
args.type char {mustBeMember(args.type,{'classical', 'amplified'})} = 'classical'
|
||||||
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
|
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
|
||||||
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1*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
|
||||||
|
|
||||||
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.K = args.K;
|
||||||
stewart.actuators.C = args.C;
|
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;
|
||||||
|
|||||||
Reference in New Issue
Block a user