[WIP] add amplified piezo for the nano-hexapod

This commit is contained in:
Thomas Dehaeze 2020-05-20 16:04:05 +02:00
parent 04c2ee06dc
commit 945741a795
21 changed files with 324 additions and 301 deletions

View File

@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-05-05 mar. 10:34 -->
<!-- 2020-05-07 jeu. 14:05 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Centrifugal Forces</title>
<meta name="generator" content="Org mode" />
@ -98,7 +97,7 @@ w_heavy = 2*pi/60; % rotational speed [rad/s]
Finally, we consider a mass eccentricity of \(10\,mm\).
</p>
<div class="org-src-container">
<pre class="src src-matlab">R = 0.1; % Excentricity [m]
<pre class="src src-matlab">R = 0.01; % Excentricity [m]
</pre>
</div>
</div>
@ -128,12 +127,12 @@ From the formula \(F_c = m \omega^2 r\), we obtain the values shown below.
<tbody>
<tr>
<td class="org-left">light</td>
<td class="org-right">63.2</td>
<td class="org-right">6.32</td>
</tr>
<tr>
<td class="org-left">heavy</td>
<td class="org-right">0.1</td>
<td class="org-right">0.01</td>
</tr>
</tbody>
</table>
@ -164,13 +163,13 @@ We plot the maximum rotation speed as a function of the mass for different maxim
</p>
<p>
From a specified maximum allowed centrifugal force (here set to \(100\,[N]\)), the maximum rotation speed as a function of the sample&rsquo;s mass is shown in Figure <a href="#org6ee8f38">3</a>.
From a specified maximum allowed centrifugal force (here set to \(10\,[N]\)), the maximum rotation speed as a function of the sample&rsquo;s mass is shown in Figure <a href="#org6ee8f38">3</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">F_max = 100; % Maximum accepted centrifugal forces [N]
<pre class="src src-matlab">F_max = 10; % Maximum accepted centrifugal forces [N]
R = 0.1;
R = 0.01;
M_sample = 0:1:100;
M_reflector = 15;
@ -188,7 +187,7 @@ M_reflector = 15;
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-05-05 mar. 10:34</p>
<p class="date">Created: 2020-05-07 jeu. 14:05</p>
</div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

After

Width:  |  Height:  |  Size: 150 KiB

View File

@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-05-05 mar. 10:34 -->
<!-- 2020-05-20 mer. 15:49 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Control of the NASS with optimal stiffness</title>
<meta name="generator" content="Org mode" />
@ -42,7 +41,7 @@
<li><a href="#orgfef1a3f">1.3. Controller Design</a></li>
<li><a href="#org3c73014">1.4. Effect of the Low Authority Control on the Primary Plant</a></li>
<li><a href="#orgee5dbee">1.5. Effect of the Low Authority Control on the Sensibility to Disturbances</a></li>
<li><a href="#org8c0882d">1.6. Conclusion</a></li>
<li><a href="#orgd9e52e3">1.6. Conclusion</a></li>
</ul>
</li>
<li><a href="#org81dc0a8">2. Primary Control in the leg space</a>
@ -51,23 +50,23 @@
<li><a href="#orgf39520c">2.2. Control in the leg space</a></li>
<li><a href="#org16d192f">2.3. Sensibility to Disturbances and Noise Budget</a></li>
<li><a href="#org8f34c09">2.4. Simulations of Tomography Experiment</a></li>
<li><a href="#orgbeadec8">2.5. Results</a></li>
<li><a href="#org66b4613">2.5. Results</a></li>
<li><a href="#orgf709759">2.6. Actuator Stroke and Forces</a></li>
<li><a href="#orgb0f5db9">2.7. Conclusion</a></li>
<li><a href="#org3b6d331">2.7. Conclusion</a></li>
</ul>
</li>
<li><a href="#org56b28cd">3. Further More complex simulations</a>
<ul>
<li><a href="#org6c1ddb5">3.1. Simulation with Micro-Hexapod Offset</a>
<ul>
<li><a href="#org57e2cfd">3.1.1. Simulation</a></li>
<li><a href="#org2c93370">3.1.2. Results</a></li>
<li><a href="#orgcd1c705">3.1.1. Simulation</a></li>
<li><a href="#org3387265">3.1.2. Results</a></li>
</ul>
</li>
<li><a href="#org5cb899b">3.2. Simultaneous Translation scans and Spindle&rsquo;s rotation</a>
<ul>
<li><a href="#org6710f28">3.2.1. Simulation</a></li>
<li><a href="#org035df39">3.2.2. Results</a></li>
<li><a href="#org48f5ed8">3.2.1. Simulation</a></li>
<li><a href="#orgcc19864">3.2.2. Results</a></li>
</ul>
</li>
</ul>
@ -80,8 +79,8 @@
<li><a href="#orgb28634b">4.2.1. Stability</a></li>
</ul>
</li>
<li><a href="#org9ea6a0a">4.3. Simulation</a></li>
<li><a href="#org21304f7">4.4. Conclusion</a></li>
<li><a href="#org78cec1a">4.3. Simulation</a></li>
<li><a href="#orgdc2eb5a">4.4. Conclusion</a></li>
</ul>
</li>
</ul>
@ -325,8 +324,8 @@ Decentralized Direct Velocity Feedback is shown to increase the effect of stages
</div>
</div>
<div id="outline-container-org8c0882d" class="outline-3">
<h3 id="org8c0882d"><span class="section-number-3">1.6</span> Conclusion</h3>
<div id="outline-container-orgd9e52e3" class="outline-3">
<h3 id="orgd9e52e3"><span class="section-number-3">1.6</span> Conclusion</h3>
<div class="outline-text-3" id="text-1-6">
<div class="important">
<p>
@ -513,8 +512,8 @@ And we run the simulation for all three payload Masses.
</p>
</div>
</div>
<div id="outline-container-orgbeadec8" class="outline-3">
<h3 id="orgbeadec8"><span class="section-number-3">2.5</span> Results</h3>
<div id="outline-container-org66b4613" class="outline-3">
<h3 id="org66b4613"><span class="section-number-3">2.5</span> Results</h3>
<div class="outline-text-3" id="text-2-5">
<p>
Let&rsquo;s now see how this controller performs.
@ -573,8 +572,8 @@ Finally, the time domain position error signals are shown in Figure <a href="#or
</div>
</div>
<div id="outline-container-orgb0f5db9" class="outline-3">
<h3 id="orgb0f5db9"><span class="section-number-3">2.7</span> Conclusion</h3>
<div id="outline-container-org3b6d331" class="outline-3">
<h3 id="org3b6d331"><span class="section-number-3">2.7</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-7">
<div class="important">
<p>
@ -594,8 +593,8 @@ Finally, the time domain position error signals are shown in Figure <a href="#or
<h3 id="org6c1ddb5"><span class="section-number-3">3.1</span> Simulation with Micro-Hexapod Offset</h3>
<div class="outline-text-3" id="text-3-1">
</div>
<div id="outline-container-org57e2cfd" class="outline-4">
<h4 id="org57e2cfd"><span class="section-number-4">3.1.1</span> Simulation</h4>
<div id="outline-container-orgcd1c705" class="outline-4">
<h4 id="orgcd1c705"><span class="section-number-4">3.1.1</span> Simulation</h4>
<div class="outline-text-4" id="text-3-1-1">
<p>
The micro-hexapod is inducing a 10mm offset of the sample center of mass with the rotation axis.
@ -623,8 +622,8 @@ sim('nass_model');
</div>
</div>
<div id="outline-container-org2c93370" class="outline-4">
<h4 id="org2c93370"><span class="section-number-4">3.1.2</span> Results</h4>
<div id="outline-container-org3387265" class="outline-4">
<h4 id="org3387265"><span class="section-number-4">3.1.2</span> Results</h4>
<div class="outline-text-4" id="text-3-1-2">
<div id="org6be7e46" class="figure">
@ -651,15 +650,15 @@ sim('nass_model');
<h3 id="org5cb899b"><span class="section-number-3">3.2</span> Simultaneous Translation scans and Spindle&rsquo;s rotation</h3>
<div class="outline-text-3" id="text-3-2">
</div>
<div id="outline-container-org6710f28" class="outline-4">
<h4 id="org6710f28"><span class="section-number-4">3.2.1</span> Simulation</h4>
<div id="outline-container-org48f5ed8" class="outline-4">
<h4 id="org48f5ed8"><span class="section-number-4">3.2.1</span> Simulation</h4>
<div class="outline-text-4" id="text-3-2-1">
<p>
A simulation is now performed with translation scans and spindle rotation at the same time.
</p>
<p>
The sample has a mass one 1kg, the spindle rotation speed is 60rpm and the translation scans have a period of 4s and a triangular shape.
The sample has a mass of 1kg, the spindle rotation speed is 60rpm and the translation scans have a period of 4s and a triangular shape.
</p>
<div class="org-src-container">
@ -675,8 +674,8 @@ initializeReferences('Rz_type', 'rotating', 'Rz_period', 1, ...
</div>
</div>
<div id="outline-container-org035df39" class="outline-4">
<h4 id="org035df39"><span class="section-number-4">3.2.2</span> Results</h4>
<div id="outline-container-orgcc19864" class="outline-4">
<h4 id="orgcc19864"><span class="section-number-4">3.2.2</span> Results</h4>
<div class="outline-text-4" id="text-3-2-2">
<div id="orgbfa1d02" class="figure">
@ -779,11 +778,11 @@ end
</div>
</div>
<div id="outline-container-org9ea6a0a" class="outline-3">
<h3 id="org9ea6a0a"><span class="section-number-3">4.3</span> Simulation</h3>
<div id="outline-container-org78cec1a" class="outline-3">
<h3 id="org78cec1a"><span class="section-number-3">4.3</span> Simulation</h3>
</div>
<div id="outline-container-org21304f7" class="outline-3">
<h3 id="org21304f7"><span class="section-number-3">4.4</span> Conclusion</h3>
<div id="outline-container-orgdc2eb5a" class="outline-3">
<h3 id="orgdc2eb5a"><span class="section-number-3">4.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-4-4">
<div class="important">
<p>
@ -797,7 +796,7 @@ end
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-05-05 mar. 10:34</p>
<p class="date">Created: 2020-05-20 mer. 15:49</p>
</div>
</body>
</html>

View File

@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-05-05 mar. 10:34 -->
<!-- 2020-05-20 mer. 15:49 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Stewart Platform - Simscape Model</title>
<meta name="generator" content="Org mode" />
@ -37,85 +36,85 @@
<ul>
<li><a href="#orgcaca5e0">1. <code>initializeStewartPlatform</code>: Initialize the Stewart Platform structure</a>
<ul>
<li><a href="#orgc11609b">Documentation</a></li>
<li><a href="#org37e6edf">Function description</a></li>
<li><a href="#org5817617">Documentation</a></li>
<li><a href="#org7d81110">Function description</a></li>
<li><a href="#org3622825">Initialize the Stewart structure</a></li>
</ul>
</li>
<li><a href="#orgac25f89">2. <code>initializeFramesPositions</code>: Initialize the positions of frames {A}, {B}, {F} and {M}</a>
<ul>
<li><a href="#org2011b55">Documentation</a></li>
<li><a href="#org40fe9e8">Function description</a></li>
<li><a href="#org6441308">Optional Parameters</a></li>
<li><a href="#org60fadfe">Documentation</a></li>
<li><a href="#org3f0f259">Function description</a></li>
<li><a href="#orgada2d6f">Optional Parameters</a></li>
<li><a href="#org7d50d54">Compute the position of each frame</a></li>
<li><a href="#orgf6ce3ee">Populate the <code>stewart</code> structure</a></li>
<li><a href="#orgd7c92be">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#orgccb31c6">3. <code>generateGeneralConfiguration</code>: Generate a Very General Configuration</a>
<ul>
<li><a href="#org0759816">Documentation</a></li>
<li><a href="#orgaac37b6">Function description</a></li>
<li><a href="#org2af2f34">Optional Parameters</a></li>
<li><a href="#orgfac23f3">Compute the pose</a></li>
<li><a href="#org69f4916">Populate the <code>stewart</code> structure</a></li>
<li><a href="#org722f89f">Documentation</a></li>
<li><a href="#org37642a9">Function description</a></li>
<li><a href="#org8175ecb">Optional Parameters</a></li>
<li><a href="#orgc9244b9">Compute the pose</a></li>
<li><a href="#org010e928">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#org9944c04">4. <code>computeJointsPose</code>: Compute the Pose of the Joints</a>
<ul>
<li><a href="#org2d1a6c0">Documentation</a></li>
<li><a href="#org50f74a1">Function description</a></li>
<li><a href="#orgf462a70">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org1084538">Documentation</a></li>
<li><a href="#org1da2a38">Function description</a></li>
<li><a href="#org02f1320">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orge87b302">Compute the position of the Joints</a></li>
<li><a href="#org3a7e3c5">Compute the strut length and orientation</a></li>
<li><a href="#org9e1258f">Compute the orientation of the Joints</a></li>
<li><a href="#org2c160bb">Populate the <code>stewart</code> structure</a></li>
<li><a href="#orgab9893e">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#org1315282">5. <code>initializeStewartPose</code>: Determine the initial stroke in each leg to have the wanted pose</a>
<ul>
<li><a href="#org1e2fafd">Function description</a></li>
<li><a href="#org034bf20">Optional Parameters</a></li>
<li><a href="#org3df7fa5">Function description</a></li>
<li><a href="#org7ad7e23">Optional Parameters</a></li>
<li><a href="#orgbb9abb5">Use the Inverse Kinematic function</a></li>
<li><a href="#orgf124a3e">Populate the <code>stewart</code> structure</a></li>
<li><a href="#org8f6d297">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#org4674203">6. <code>initializeCylindricalPlatforms</code>: Initialize the geometry of the Fixed and Mobile Platforms</a>
<ul>
<li><a href="#org84a14a5">Function description</a></li>
<li><a href="#orge580054">Optional Parameters</a></li>
<li><a href="#org600d8b6">Function description</a></li>
<li><a href="#org7126edc">Optional Parameters</a></li>
<li><a href="#orgf654de0">Compute the Inertia matrices of platforms</a></li>
<li><a href="#orge34849b">Populate the <code>stewart</code> structure</a></li>
<li><a href="#org1282acb">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#orgb0a1d7b">7. <code>initializeCylindricalStruts</code>: Define the inertia of cylindrical struts</a>
<ul>
<li><a href="#org27c9756">Function description</a></li>
<li><a href="#org060b144">Optional Parameters</a></li>
<li><a href="#org415806e">Function description</a></li>
<li><a href="#org46ba207">Optional Parameters</a></li>
<li><a href="#orgd943059">Compute the properties of the cylindrical struts</a></li>
<li><a href="#org5d7924e">Populate the <code>stewart</code> structure</a></li>
<li><a href="#orgec9a313">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#orgae8d0dc">8. <code>initializeStrutDynamics</code>: Add Stiffness and Damping properties of each strut</a>
<ul>
<li><a href="#org70888ee">Documentation</a></li>
<li><a href="#org2fd9286">Function description</a></li>
<li><a href="#orgebba910">Optional Parameters</a></li>
<li><a href="#org1e0bcd1">Documentation</a></li>
<li><a href="#org70074aa">Function description</a></li>
<li><a href="#orgc77ced4">Optional Parameters</a></li>
<li><a href="#org3c2e550">Add Stiffness and Damping properties of each strut</a></li>
</ul>
</li>
<li><a href="#org682a09c">9. <code>initializeAmplifiedStrutDynamics</code>: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator</a>
<ul>
<li><a href="#org70c61fd">Documentation</a></li>
<li><a href="#org4b8bd84">Function description</a></li>
<li><a href="#org94cace2">Optional Parameters</a></li>
<li><a href="#orgb4491ea">Documentation</a></li>
<li><a href="#org32024c4">Function description</a></li>
<li><a href="#orgb9c096a">Optional Parameters</a></li>
<li><a href="#org2e42182">Compute the total stiffness and damping</a></li>
<li><a href="#orgee22bea">Populate the <code>stewart</code> structure</a></li>
<li><a href="#orgd8d2d38">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#orgbc5232e">10. <code>initializeJointDynamics</code>: Add Stiffness and Damping properties for spherical joints</a>
<ul>
<li><a href="#orgc806fca">Function description</a></li>
<li><a href="#org4403345">Optional Parameters</a></li>
<li><a href="#org9987af0">Function description</a></li>
<li><a href="#orgfa09700">Optional Parameters</a></li>
<li><a href="#orgd5b8278">Add Actuator Type</a></li>
<li><a href="#org51cf135">Add Stiffness and Damping in Translation of each strut</a></li>
<li><a href="#org1e8eceb">Add Stiffness and Damping in Rotation of each strut</a></li>
@ -125,17 +124,17 @@
<ul>
<li><a href="#orgcfc37af">Geophone - Working Principle</a></li>
<li><a href="#org986e38f">Accelerometer - Working Principle</a></li>
<li><a href="#orgdf893fa">Function description</a></li>
<li><a href="#org1a86834">Optional Parameters</a></li>
<li><a href="#orgf891c99">Function description</a></li>
<li><a href="#org3120ee8">Optional Parameters</a></li>
<li><a href="#org1c3d7c8">Compute the properties of the sensor</a></li>
<li><a href="#org5ee57cc">Populate the <code>stewart</code> structure</a></li>
<li><a href="#org81ff88b">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#orgd6baa46">12. <code>displayArchitecture</code>: 3D plot of the Stewart platform architecture</a>
<ul>
<li><a href="#org763a2e4">Function description</a></li>
<li><a href="#orgfefbc0b">Optional Parameters</a></li>
<li><a href="#org49ecb6b">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org84f3d13">Function description</a></li>
<li><a href="#org74d4ce4">Optional Parameters</a></li>
<li><a href="#org3b35a3d">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orgb11fd92">Figure Creation, Frames and Homogeneous transformations</a></li>
<li><a href="#org7cd8fee">Fixed Base elements</a></li>
<li><a href="#orgacb8eb7">Mobile Platform elements</a></li>
@ -146,8 +145,8 @@
</li>
<li><a href="#orgecfd55f">13. <code>describeStewartPlatform</code>: Display some text describing the current defined Stewart Platform</a>
<ul>
<li><a href="#orgea76862">Function description</a></li>
<li><a href="#org8ead6fb">Optional Parameters</a></li>
<li><a href="#org6e4f9f6">Function description</a></li>
<li><a href="#org1dcd763">Optional Parameters</a></li>
<li><a href="#org1d49caa">13.1. Geometry</a></li>
<li><a href="#orgcb66771">13.2. Actuators</a></li>
<li><a href="#org4630b77">13.3. Joints</a></li>
@ -156,39 +155,39 @@
</li>
<li><a href="#org65fc289">14. <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</a>
<ul>
<li><a href="#org458448a">Function description</a></li>
<li><a href="#org5817617">Documentation</a></li>
<li><a href="#org56ed950">Optional Parameters</a></li>
<li><a href="#org341a5bd">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org56bb069">Function description</a></li>
<li><a href="#org8dc2620">Documentation</a></li>
<li><a href="#org9269fce">Optional Parameters</a></li>
<li><a href="#org90eac03">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orge94a885">Position of the Cube</a></li>
<li><a href="#orgc9244b9">Compute the pose</a></li>
<li><a href="#org503addd">Populate the <code>stewart</code> structure</a></li>
<li><a href="#org3231a85">Compute the pose</a></li>
<li><a href="#orgb046d7e">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#org9e8cbfa">15. <code>computeJacobian</code>: Compute the Jacobian Matrix</a>
<ul>
<li><a href="#orga999616">Function description</a></li>
<li><a href="#orgac50fa7">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org9b984be">Function description</a></li>
<li><a href="#orga0158ff">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org9bcd9b9">Compute Jacobian Matrix</a></li>
<li><a href="#orgf08eda6">Compute Stiffness Matrix</a></li>
<li><a href="#orgd164132">Compute Compliance Matrix</a></li>
<li><a href="#orgd7c92be">Populate the <code>stewart</code> structure</a></li>
<li><a href="#orgecc27b3">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#org03168fc">16. <code>inverseKinematics</code>: Compute Inverse Kinematics</a>
<ul>
<li><a href="#orgbdc5fb1">Theory</a></li>
<li><a href="#orgd247ad5">Function description</a></li>
<li><a href="#org3259665">Optional Parameters</a></li>
<li><a href="#org4ca8cd1">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org988305f">Function description</a></li>
<li><a href="#org954d921">Optional Parameters</a></li>
<li><a href="#org2e35685">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org8b70a76">Compute</a></li>
</ul>
</li>
<li><a href="#org278d55b">17. <code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</a>
<ul>
<li><a href="#org7d81110">Function description</a></li>
<li><a href="#orgada2d6f">Optional Parameters</a></li>
<li><a href="#org02f1320">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orgb2b186c">Function description</a></li>
<li><a href="#org8e4bfab">Optional Parameters</a></li>
<li><a href="#org87cdb4a">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orgf17cab9">Computation</a></li>
</ul>
</li>
@ -274,11 +273,11 @@ This Matlab function is accessible <a href="../src/initializeStewartPlatform.m">
</p>
</div>
<div id="outline-container-orgc11609b" class="outline-3">
<h3 id="orgc11609b">Documentation</h3>
<div class="outline-text-3" id="text-orgc11609b">
<div id="outline-container-org5817617" class="outline-3">
<h3 id="org5817617">Documentation</h3>
<div class="outline-text-3" id="text-org5817617">
<div id="orgebd0f49" class="figure">
<div id="orgb66cd49" class="figure">
<p><img src="figs/stewart-frames-position.png" alt="stewart-frames-position.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Definition of the position of the frames</p>
@ -286,9 +285,9 @@ This Matlab function is accessible <a href="../src/initializeStewartPlatform.m">
</div>
</div>
<div id="outline-container-org37e6edf" class="outline-3">
<h3 id="org37e6edf">Function description</h3>
<div class="outline-text-3" id="text-org37e6edf">
<div id="outline-container-org7d81110" class="outline-3">
<h3 id="org7d81110">Function description</h3>
<div class="outline-text-3" id="text-org7d81110">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = initializeStewartPlatform()
% initializeStewartPlatform - Initialize the stewart structure
@ -347,11 +346,11 @@ This Matlab function is accessible <a href="../src/initializeFramesPositions.m">
</p>
</div>
<div id="outline-container-org2011b55" class="outline-3">
<h3 id="org2011b55">Documentation</h3>
<div class="outline-text-3" id="text-org2011b55">
<div id="outline-container-org60fadfe" class="outline-3">
<h3 id="org60fadfe">Documentation</h3>
<div class="outline-text-3" id="text-org60fadfe">
<div id="orgb66cd49" class="figure">
<div id="org321fc67" class="figure">
<p><img src="figs/stewart-frames-position.png" alt="stewart-frames-position.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Definition of the position of the frames</p>
@ -359,9 +358,9 @@ This Matlab function is accessible <a href="../src/initializeFramesPositions.m">
</div>
</div>
<div id="outline-container-org40fe9e8" class="outline-3">
<h3 id="org40fe9e8">Function description</h3>
<div class="outline-text-3" id="text-org40fe9e8">
<div id="outline-container-org3f0f259" class="outline-3">
<h3 id="org3f0f259">Function description</h3>
<div class="outline-text-3" id="text-org3f0f259">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = initializeFramesPositions(stewart, args)
% initializeFramesPositions - Initialize the positions of frames {A}, {B}, {F} and {M}
@ -384,9 +383,9 @@ This Matlab function is accessible <a href="../src/initializeFramesPositions.m">
</div>
</div>
<div id="outline-container-org6441308" class="outline-3">
<h3 id="org6441308">Optional Parameters</h3>
<div class="outline-text-3" id="text-org6441308">
<div id="outline-container-orgada2d6f" class="outline-3">
<h3 id="orgada2d6f">Optional Parameters</h3>
<div class="outline-text-3" id="text-orgada2d6f">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -414,9 +413,9 @@ FO_A = MO_B + FO_M; % Position of {A} with respect to {F} [m]
</div>
</div>
<div id="outline-container-orgf6ce3ee" class="outline-3">
<h3 id="orgf6ce3ee">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-orgf6ce3ee">
<div id="outline-container-orgd7c92be" class="outline-3">
<h3 id="orgd7c92be">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-orgd7c92be">
<div class="org-src-container">
<pre class="src src-matlab">stewart.geometry.H = H;
stewart.geometry.FO_M = FO_M;
@ -440,9 +439,9 @@ This Matlab function is accessible <a href="../src/generateGeneralConfiguration.
</p>
</div>
<div id="outline-container-org0759816" class="outline-3">
<h3 id="org0759816">Documentation</h3>
<div class="outline-text-3" id="text-org0759816">
<div id="outline-container-org722f89f" class="outline-3">
<h3 id="org722f89f">Documentation</h3>
<div class="outline-text-3" id="text-org722f89f">
<p>
Joints are positions on a circle centered with the Z axis of {F} and {M} and at a chosen distance from {F} and {M}.
The radius of the circles can be chosen as well as the angles where the joints are located (see Figure <a href="#org449c886">3</a>).
@ -457,9 +456,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
</div>
</div>
<div id="outline-container-orgaac37b6" class="outline-3">
<h3 id="orgaac37b6">Function description</h3>
<div class="outline-text-3" id="text-orgaac37b6">
<div id="outline-container-org37642a9" class="outline-3">
<h3 id="org37642a9">Function description</h3>
<div class="outline-text-3" id="text-org37642a9">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = generateGeneralConfiguration(stewart, args)
% generateGeneralConfiguration - Generate a Very General Configuration
@ -484,9 +483,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
</div>
</div>
<div id="outline-container-org2af2f34" class="outline-3">
<h3 id="org2af2f34">Optional Parameters</h3>
<div class="outline-text-3" id="text-org2af2f34">
<div id="outline-container-org8175ecb" class="outline-3">
<h3 id="org8175ecb">Optional Parameters</h3>
<div class="outline-text-3" id="text-org8175ecb">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -502,9 +501,9 @@ end
</div>
</div>
<div id="outline-container-orgfac23f3" class="outline-3">
<h3 id="orgfac23f3">Compute the pose</h3>
<div class="outline-text-3" id="text-orgfac23f3">
<div id="outline-container-orgc9244b9" class="outline-3">
<h3 id="orgc9244b9">Compute the pose</h3>
<div class="outline-text-3" id="text-orgc9244b9">
<div class="org-src-container">
<pre class="src src-matlab">Fa = zeros(3,6);
Mb = zeros(3,6);
@ -521,9 +520,9 @@ end
</div>
</div>
<div id="outline-container-org69f4916" class="outline-3">
<h3 id="org69f4916">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-org69f4916">
<div id="outline-container-org010e928" class="outline-3">
<h3 id="org010e928">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-org010e928">
<div class="org-src-container">
<pre class="src src-matlab">stewart.platform_F.Fa = Fa;
stewart.platform_M.Mb = Mb;
@ -545,9 +544,9 @@ This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>
</p>
</div>
<div id="outline-container-org2d1a6c0" class="outline-3">
<h3 id="org2d1a6c0">Documentation</h3>
<div class="outline-text-3" id="text-org2d1a6c0">
<div id="outline-container-org1084538" class="outline-3">
<h3 id="org1084538">Documentation</h3>
<div class="outline-text-3" id="text-org1084538">
<div id="org20f7106" class="figure">
<p><img src="figs/stewart-struts.png" alt="stewart-struts.png" />
@ -557,9 +556,9 @@ This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>
</div>
</div>
<div id="outline-container-org50f74a1" class="outline-3">
<h3 id="org50f74a1">Function description</h3>
<div class="outline-text-3" id="text-org50f74a1">
<div id="outline-container-org1da2a38" class="outline-3">
<h3 id="org1da2a38">Function description</h3>
<div class="outline-text-3" id="text-org1da2a38">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = computeJointsPose(stewart)
% computeJointsPose -
@ -592,9 +591,9 @@ This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>
</div>
</div>
<div id="outline-container-orgf462a70" class="outline-3">
<h3 id="orgf462a70">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-orgf462a70">
<div id="outline-container-org02f1320" class="outline-3">
<h3 id="org02f1320">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-org02f1320">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.platform_F, 'Fa'), 'stewart.platform_F should have attribute Fa')
Fa = stewart.platform_F.Fa;
@ -665,9 +664,9 @@ end
</div>
</div>
<div id="outline-container-org2c160bb" class="outline-3">
<h3 id="org2c160bb">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-org2c160bb">
<div id="outline-container-orgab9893e" class="outline-3">
<h3 id="orgab9893e">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-orgab9893e">
<div class="org-src-container">
<pre class="src src-matlab">stewart.geometry.Aa = Aa;
stewart.geometry.Ab = Ab;
@ -700,9 +699,9 @@ This Matlab function is accessible <a href="../src/initializeStewartPose.m">here
</p>
</div>
<div id="outline-container-org1e2fafd" class="outline-3">
<h3 id="org1e2fafd">Function description</h3>
<div class="outline-text-3" id="text-org1e2fafd">
<div id="outline-container-org3df7fa5" class="outline-3">
<h3 id="org3df7fa5">Function description</h3>
<div class="outline-text-3" id="text-org3df7fa5">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = initializeStewartPose(stewart, args)
% initializeStewartPose - Determine the initial stroke in each leg to have the wanted pose
@ -726,9 +725,9 @@ This Matlab function is accessible <a href="../src/initializeStewartPose.m">here
</div>
</div>
<div id="outline-container-org034bf20" class="outline-3">
<h3 id="org034bf20">Optional Parameters</h3>
<div class="outline-text-3" id="text-org034bf20">
<div id="outline-container-org7ad7e23" class="outline-3">
<h3 id="org7ad7e23">Optional Parameters</h3>
<div class="outline-text-3" id="text-org7ad7e23">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -750,9 +749,9 @@ end
</div>
</div>
<div id="outline-container-orgf124a3e" class="outline-3">
<h3 id="orgf124a3e">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-orgf124a3e">
<div id="outline-container-org8f6d297" class="outline-3">
<h3 id="org8f6d297">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-org8f6d297">
<div class="org-src-container">
<pre class="src src-matlab">stewart.actuators.Leq = dLi;
</pre>
@ -773,9 +772,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalPlatform
</p>
</div>
<div id="outline-container-org84a14a5" class="outline-3">
<h3 id="org84a14a5">Function description</h3>
<div class="outline-text-3" id="text-org84a14a5">
<div id="outline-container-org600d8b6" class="outline-3">
<h3 id="org600d8b6">Function description</h3>
<div class="outline-text-3" id="text-org600d8b6">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = initializeCylindricalPlatforms(stewart, args)
% initializeCylindricalPlatforms - Initialize the geometry of the Fixed and Mobile Platforms
@ -809,9 +808,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalPlatform
</div>
</div>
<div id="outline-container-orge580054" class="outline-3">
<h3 id="orge580054">Optional Parameters</h3>
<div class="outline-text-3" id="text-orge580054">
<div id="outline-container-org7126edc" class="outline-3">
<h3 id="org7126edc">Optional Parameters</h3>
<div class="outline-text-3" id="text-org7126edc">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -846,9 +845,9 @@ end
</div>
</div>
<div id="outline-container-orge34849b" class="outline-3">
<h3 id="orge34849b">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-orge34849b">
<div id="outline-container-org1282acb" class="outline-3">
<h3 id="org1282acb">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-org1282acb">
<div class="org-src-container">
<pre class="src src-matlab">stewart.platform_F.type = 1;
@ -884,9 +883,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalStruts.m
</p>
</div>
<div id="outline-container-org27c9756" class="outline-3">
<h3 id="org27c9756">Function description</h3>
<div class="outline-text-3" id="text-org27c9756">
<div id="outline-container-org415806e" class="outline-3">
<h3 id="org415806e">Function description</h3>
<div class="outline-text-3" id="text-org415806e">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = initializeCylindricalStruts(stewart, args)
% initializeCylindricalStruts - Define the mass and moment of inertia of cylindrical struts
@ -919,9 +918,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalStruts.m
</div>
</div>
<div id="outline-container-org060b144" class="outline-3">
<h3 id="org060b144">Optional Parameters</h3>
<div class="outline-text-3" id="text-org060b144">
<div id="outline-container-org46ba207" class="outline-3">
<h3 id="org46ba207">Optional Parameters</h3>
<div class="outline-text-3" id="text-org46ba207">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -969,9 +968,9 @@ end
</div>
</div>
<div id="outline-container-org5d7924e" class="outline-3">
<h3 id="org5d7924e">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-org5d7924e">
<div id="outline-container-orgec9a313" class="outline-3">
<h3 id="orgec9a313">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-orgec9a313">
<div class="org-src-container">
<pre class="src src-matlab">stewart.struts_M.type = 1;
@ -1007,9 +1006,9 @@ This Matlab function is accessible <a href="../src/initializeStrutDynamics.m">he
</p>
</div>
<div id="outline-container-org70888ee" class="outline-3">
<h3 id="org70888ee">Documentation</h3>
<div class="outline-text-3" id="text-org70888ee">
<div id="outline-container-org1e0bcd1" class="outline-3">
<h3 id="org1e0bcd1">Documentation</h3>
<div class="outline-text-3" id="text-org1e0bcd1">
<div id="org99aef3e" class="figure">
<p><img src="figs/piezoelectric_stack.jpg" alt="piezoelectric_stack.jpg" width="500px" />
@ -1038,9 +1037,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#orgd4
</div>
</div>
<div id="outline-container-org2fd9286" class="outline-3">
<h3 id="org2fd9286">Function description</h3>
<div class="outline-text-3" id="text-org2fd9286">
<div id="outline-container-org70074aa" class="outline-3">
<h3 id="org70074aa">Function description</h3>
<div class="outline-text-3" id="text-org70074aa">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = initializeStrutDynamics(stewart, args)
% initializeStrutDynamics - Add Stiffness and Damping properties of each strut
@ -1062,9 +1061,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#orgd4
</div>
</div>
<div id="outline-container-orgebba910" class="outline-3">
<h3 id="orgebba910">Optional Parameters</h3>
<div class="outline-text-3" id="text-orgebba910">
<div id="outline-container-orgc77ced4" class="outline-3">
<h3 id="orgc77ced4">Optional Parameters</h3>
<div class="outline-text-3" id="text-orgc77ced4">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1102,9 +1101,9 @@ This Matlab function is accessible <a href="../src/initializeAmplifiedStrutDynam
</p>
</div>
<div id="outline-container-org70c61fd" class="outline-3">
<h3 id="org70c61fd">Documentation</h3>
<div class="outline-text-3" id="text-org70c61fd">
<div id="outline-container-orgb4491ea" class="outline-3">
<h3 id="orgb4491ea">Documentation</h3>
<div class="outline-text-3" id="text-orgb4491ea">
<p>
An amplified piezoelectric actuator is shown in Figure <a href="#orgab58ac0">7</a>.
</p>
@ -1137,9 +1136,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#org7a
</div>
</div>
<div id="outline-container-org4b8bd84" class="outline-3">
<h3 id="org4b8bd84">Function description</h3>
<div class="outline-text-3" id="text-org4b8bd84">
<div id="outline-container-org32024c4" class="outline-3">
<h3 id="org32024c4">Function description</h3>
<div class="outline-text-3" id="text-org32024c4">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = initializeAmplifiedStrutDynamics(stewart, args)
% initializeAmplifiedStrutDynamics - Add Stiffness and Damping properties of each strut
@ -1167,9 +1166,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#org7a
</div>
</div>
<div id="outline-container-org94cace2" class="outline-3">
<h3 id="org94cace2">Optional Parameters</h3>
<div class="outline-text-3" id="text-org94cace2">
<div id="outline-container-orgb9c096a" class="outline-3">
<h3 id="orgb9c096a">Optional Parameters</h3>
<div class="outline-text-3" id="text-orgb9c096a">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1194,9 +1193,9 @@ C = args.Ca + args.Cr;
</div>
</div>
<div id="outline-container-orgee22bea" class="outline-3">
<h3 id="orgee22bea">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-orgee22bea">
<div id="outline-container-orgd8d2d38" class="outline-3">
<h3 id="orgd8d2d38">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-orgd8d2d38">
<div class="org-src-container">
<pre class="src src-matlab">stewart.actuators.type = 2;
@ -1226,9 +1225,9 @@ This Matlab function is accessible <a href="../src/initializeJointDynamics.m">he
</p>
</div>
<div id="outline-container-orgc806fca" class="outline-3">
<h3 id="orgc806fca">Function description</h3>
<div class="outline-text-3" id="text-orgc806fca">
<div id="outline-container-org9987af0" class="outline-3">
<h3 id="org9987af0">Function description</h3>
<div class="outline-text-3" id="text-org9987af0">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = initializeJointDynamics(stewart, args)
% initializeJointDynamics - Add Stiffness and Damping properties for the spherical joints
@ -1267,9 +1266,9 @@ This Matlab function is accessible <a href="../src/initializeJointDynamics.m">he
</div>
</div>
<div id="outline-container-org4403345" class="outline-3">
<h3 id="org4403345">Optional Parameters</h3>
<div class="outline-text-3" id="text-org4403345">
<div id="outline-container-orgfa09700" class="outline-3">
<h3 id="orgfa09700">Optional Parameters</h3>
<div class="outline-text-3" id="text-orgfa09700">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1477,9 +1476,9 @@ Note that there is trade-off between:
</div>
</div>
<div id="outline-container-orgdf893fa" class="outline-3">
<h3 id="orgdf893fa">Function description</h3>
<div class="outline-text-3" id="text-orgdf893fa">
<div id="outline-container-orgf891c99" class="outline-3">
<h3 id="orgf891c99">Function description</h3>
<div class="outline-text-3" id="text-orgf891c99">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = initializeInertialSensor(stewart, args)
% initializeInertialSensor - Initialize the inertial sensor in each strut
@ -1505,9 +1504,9 @@ Note that there is trade-off between:
</div>
</div>
<div id="outline-container-org1a86834" class="outline-3">
<h3 id="org1a86834">Optional Parameters</h3>
<div class="outline-text-3" id="text-org1a86834">
<div id="outline-container-org3120ee8" class="outline-3">
<h3 id="org3120ee8">Optional Parameters</h3>
<div class="outline-text-3" id="text-org3120ee8">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1548,9 +1547,9 @@ end
</div>
</div>
<div id="outline-container-org5ee57cc" class="outline-3">
<h3 id="org5ee57cc">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-org5ee57cc">
<div id="outline-container-org81ff88b" class="outline-3">
<h3 id="org81ff88b">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-org81ff88b">
<div class="org-src-container">
<pre class="src src-matlab">stewart.sensors.inertial = sensor;
</pre>
@ -1571,9 +1570,9 @@ This Matlab function is accessible <a href="../src/displayArchitecture.m">here</
</p>
</div>
<div id="outline-container-org763a2e4" class="outline-3">
<h3 id="org763a2e4">Function description</h3>
<div class="outline-text-3" id="text-org763a2e4">
<div id="outline-container-org84f3d13" class="outline-3">
<h3 id="org84f3d13">Function description</h3>
<div class="outline-text-3" id="text-org84f3d13">
<div class="org-src-container">
<pre class="src src-matlab">function [] = displayArchitecture(stewart, args)
% displayArchitecture - 3D plot of the Stewart platform architecture
@ -1602,9 +1601,9 @@ This Matlab function is accessible <a href="../src/displayArchitecture.m">here</
</div>
</div>
<div id="outline-container-orgfefbc0b" class="outline-3">
<h3 id="orgfefbc0b">Optional Parameters</h3>
<div class="outline-text-3" id="text-orgfefbc0b">
<div id="outline-container-org74d4ce4" class="outline-3">
<h3 id="org74d4ce4">Optional Parameters</h3>
<div class="outline-text-3" id="text-org74d4ce4">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1625,9 +1624,9 @@ end
</div>
</div>
<div id="outline-container-org49ecb6b" class="outline-3">
<h3 id="org49ecb6b">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-org49ecb6b">
<div id="outline-container-org3b35a3d" class="outline-3">
<h3 id="org3b35a3d">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-org3b35a3d">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.platform_F, 'FO_A'), 'stewart.platform_F should have attribute FO_A')
FO_A = stewart.platform_F.FO_A;
@ -1965,9 +1964,9 @@ This Matlab function is accessible <a href="../src/describeStewartPlatform.m">he
</p>
</div>
<div id="outline-container-orgea76862" class="outline-3">
<h3 id="orgea76862">Function description</h3>
<div class="outline-text-3" id="text-orgea76862">
<div id="outline-container-org6e4f9f6" class="outline-3">
<h3 id="org6e4f9f6">Function description</h3>
<div class="outline-text-3" id="text-org6e4f9f6">
<div class="org-src-container">
<pre class="src src-matlab">function [] = describeStewartPlatform(stewart)
% describeStewartPlatform - Display some text describing the current defined Stewart Platform
@ -1983,9 +1982,9 @@ This Matlab function is accessible <a href="../src/describeStewartPlatform.m">he
</div>
</div>
<div id="outline-container-org8ead6fb" class="outline-3">
<h3 id="org8ead6fb">Optional Parameters</h3>
<div class="outline-text-3" id="text-org8ead6fb">
<div id="outline-container-org1dcd763" class="outline-3">
<h3 id="org1dcd763">Optional Parameters</h3>
<div class="outline-text-3" id="text-org1dcd763">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -2134,9 +2133,9 @@ This Matlab function is accessible <a href="../src/generateCubicConfiguration.m"
</p>
</div>
<div id="outline-container-org458448a" class="outline-3">
<h3 id="org458448a">Function description</h3>
<div class="outline-text-3" id="text-org458448a">
<div id="outline-container-org56bb069" class="outline-3">
<h3 id="org56bb069">Function description</h3>
<div class="outline-text-3" id="text-org56bb069">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = generateCubicConfiguration(stewart, args)
% generateCubicConfiguration - Generate a Cubic Configuration
@ -2161,9 +2160,9 @@ This Matlab function is accessible <a href="../src/generateCubicConfiguration.m"
</div>
</div>
<div id="outline-container-org5817617" class="outline-3">
<h3 id="org5817617">Documentation</h3>
<div class="outline-text-3" id="text-org5817617">
<div id="outline-container-org8dc2620" class="outline-3">
<h3 id="org8dc2620">Documentation</h3>
<div class="outline-text-3" id="text-org8dc2620">
<div id="org70070f0" class="figure">
<p><img src="figs/cubic-configuration-definition.png" alt="cubic-configuration-definition.png" />
@ -2173,9 +2172,9 @@ This Matlab function is accessible <a href="../src/generateCubicConfiguration.m"
</div>
</div>
<div id="outline-container-org56ed950" class="outline-3">
<h3 id="org56ed950">Optional Parameters</h3>
<div class="outline-text-3" id="text-org56ed950">
<div id="outline-container-org9269fce" class="outline-3">
<h3 id="org9269fce">Optional Parameters</h3>
<div class="outline-text-3" id="text-org9269fce">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -2189,9 +2188,9 @@ end
</div>
</div>
<div id="outline-container-org341a5bd" class="outline-3">
<h3 id="org341a5bd">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-org341a5bd">
<div id="outline-container-org90eac03" class="outline-3">
<h3 id="org90eac03">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-org90eac03">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'H'), 'stewart.geometry should have attribute H')
H = stewart.geometry.H;
@ -2226,9 +2225,9 @@ CCm = [Cc(:,2), Cc(:,2), Cc(:,4), Cc(:,4), Cc(:,6), Cc(:,6)]; % CCm(:,i) corresp
</div>
</div>
<div id="outline-container-orgc9244b9" class="outline-3">
<h3 id="orgc9244b9">Compute the pose</h3>
<div class="outline-text-3" id="text-orgc9244b9">
<div id="outline-container-org3231a85" class="outline-3">
<h3 id="org3231a85">Compute the pose</h3>
<div class="outline-text-3" id="text-org3231a85">
<p>
We can compute the vector of each leg \({}^{C}\hat{\bm{s}}_{i}\) (unit vector from \({}^{C}C_{f}\) to \({}^{C}C_{m}\)).
</p>
@ -2248,9 +2247,9 @@ Mb = CCf + [0; 0; args.FOc-H] + ((H-args.MHb-(args.FOc-args.Hc/2))./CSi(3,:)).*C
</div>
</div>
<div id="outline-container-org503addd" class="outline-3">
<h3 id="org503addd">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-org503addd">
<div id="outline-container-orgb046d7e" class="outline-3">
<h3 id="orgb046d7e">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-orgb046d7e">
<div class="org-src-container">
<pre class="src src-matlab">stewart.platform_F.Fa = Fa;
stewart.platform_M.Mb = Mb;
@ -2272,9 +2271,9 @@ This Matlab function is accessible <a href="../src/computeJacobian.m">here</a>.
</p>
</div>
<div id="outline-container-orga999616" class="outline-3">
<h3 id="orga999616">Function description</h3>
<div class="outline-text-3" id="text-orga999616">
<div id="outline-container-org9b984be" class="outline-3">
<h3 id="org9b984be">Function description</h3>
<div class="outline-text-3" id="text-org9b984be">
<div class="org-src-container">
<pre class="src src-matlab">function [stewart] = computeJacobian(stewart)
% computeJacobian -
@ -2297,9 +2296,9 @@ This Matlab function is accessible <a href="../src/computeJacobian.m">here</a>.
</div>
</div>
<div id="outline-container-orgac50fa7" class="outline-3">
<h3 id="orgac50fa7">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-orgac50fa7">
<div id="outline-container-orga0158ff" class="outline-3">
<h3 id="orga0158ff">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-orga0158ff">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'As'), 'stewart.geometry should have attribute As')
As = stewart.geometry.As;
@ -2345,9 +2344,9 @@ Ki = stewart.actuators.K;
</div>
</div>
<div id="outline-container-orgd7c92be" class="outline-3">
<h3 id="orgd7c92be">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-orgd7c92be">
<div id="outline-container-orgecc27b3" class="outline-3">
<h3 id="orgecc27b3">Populate the <code>stewart</code> structure</h3>
<div class="outline-text-3" id="text-orgecc27b3">
<div class="org-src-container">
<pre class="src src-matlab">stewart.kinematics.J = J;
stewart.kinematics.K = K;
@ -2407,9 +2406,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div>
</div>
<div id="outline-container-orgd247ad5" class="outline-3">
<h3 id="orgd247ad5">Function description</h3>
<div class="outline-text-3" id="text-orgd247ad5">
<div id="outline-container-org988305f" class="outline-3">
<h3 id="org988305f">Function description</h3>
<div class="outline-text-3" id="text-org988305f">
<div class="org-src-container">
<pre class="src src-matlab">function [Li, dLi] = inverseKinematics(stewart, args)
% inverseKinematics - Compute the needed length of each strut to have the wanted position and orientation of {B} with respect to {A}
@ -2433,9 +2432,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div>
</div>
<div id="outline-container-org3259665" class="outline-3">
<h3 id="org3259665">Optional Parameters</h3>
<div class="outline-text-3" id="text-org3259665">
<div id="outline-container-org954d921" class="outline-3">
<h3 id="org954d921">Optional Parameters</h3>
<div class="outline-text-3" id="text-org954d921">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -2447,9 +2446,9 @@ end
</div>
</div>
<div id="outline-container-org4ca8cd1" class="outline-3">
<h3 id="org4ca8cd1">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-org4ca8cd1">
<div id="outline-container-org2e35685" class="outline-3">
<h3 id="org2e35685">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-org2e35685">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.geometry, 'Aa'), 'stewart.geometry should have attribute Aa')
Aa = stewart.geometry.Aa;
@ -2493,9 +2492,9 @@ This Matlab function is accessible <a href="../src/forwardKinematicsApprox.m">he
</p>
</div>
<div id="outline-container-org7d81110" class="outline-3">
<h3 id="org7d81110">Function description</h3>
<div class="outline-text-3" id="text-org7d81110">
<div id="outline-container-orgb2b186c" class="outline-3">
<h3 id="orgb2b186c">Function description</h3>
<div class="outline-text-3" id="text-orgb2b186c">
<div class="org-src-container">
<pre class="src src-matlab">function [P, R] = forwardKinematicsApprox(stewart, args)
% forwardKinematicsApprox - Computed the approximate pose of {B} with respect to {A} from the length of each strut and using
@ -2517,9 +2516,9 @@ This Matlab function is accessible <a href="../src/forwardKinematicsApprox.m">he
</div>
</div>
<div id="outline-container-orgada2d6f" class="outline-3">
<h3 id="orgada2d6f">Optional Parameters</h3>
<div class="outline-text-3" id="text-orgada2d6f">
<div id="outline-container-org8e4bfab" class="outline-3">
<h3 id="org8e4bfab">Optional Parameters</h3>
<div class="outline-text-3" id="text-org8e4bfab">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -2530,9 +2529,9 @@ end
</div>
</div>
<div id="outline-container-org02f1320" class="outline-3">
<h3 id="org02f1320">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-org02f1320">
<div id="outline-container-org87cdb4a" class="outline-3">
<h3 id="org87cdb4a">Check the <code>stewart</code> structure elements</h3>
<div class="outline-text-3" id="text-org87cdb4a">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.kinematics, 'J'), 'stewart.kinematics should have attribute J')
J = stewart.kinematics.J;
@ -2587,7 +2586,7 @@ We then compute the corresponding rotation matrix.
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-05-05 mar. 10:34</p>
<p class="date">Created: 2020-05-20 mer. 15:49</p>
</div>
</body>
</html>

View File

@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-05-05 mar. 10:33 -->
<!-- 2020-05-20 mer. 15:49 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Determination of the optimal nano-hexapod&rsquo;s stiffness</title>
<meta name="generator" content="Org mode" />
@ -37,7 +36,7 @@
<ul>
<li><a href="#org157c07d">1. Spindle Rotation Speed</a>
<ul>
<li><a href="#orgd45a5be">1.1. Initialization</a></li>
<li><a href="#org654fcb6">1.1. Initialization</a></li>
<li><a href="#org687bdef">1.2. Identification when rotating at maximum speed</a></li>
<li><a href="#org7dcfddb">1.3. Change of dynamics</a></li>
</ul>
@ -52,7 +51,7 @@
</li>
<li><a href="#org19559b0">3. Payload &ldquo;Impedance&rdquo; Effect</a>
<ul>
<li><a href="#org654fcb6">3.1. Initialization</a></li>
<li><a href="#orgd20f43d">3.1. Initialization</a></li>
<li><a href="#org73f1c6e">3.2. Identification of the dynamics while change the payload dynamics</a></li>
<li><a href="#orgd7a519b">3.3. Change of dynamics for the primary controller</a>
<ul>
@ -109,8 +108,8 @@ The rotation speed will have an effect due to the Coriolis effect.
</p>
</div>
<div id="outline-container-orgd45a5be" class="outline-3">
<h3 id="orgd45a5be"><span class="section-number-3">1.1</span> Initialization</h3>
<div id="outline-container-org654fcb6" class="outline-3">
<h3 id="org654fcb6"><span class="section-number-3">1.1</span> Initialization</h3>
<div class="outline-text-3" id="text-1-1">
<p>
We initialize all the stages with the default parameters.
@ -386,8 +385,8 @@ When the nano-hexapod is stiff (\(k>10^7\ [N/m]\)), the compliance of the micro-
</p>
</div>
<div id="outline-container-org654fcb6" class="outline-3">
<h3 id="org654fcb6"><span class="section-number-3">3.1</span> Initialization</h3>
<div id="outline-container-orgd20f43d" class="outline-3">
<h3 id="orgd20f43d"><span class="section-number-3">3.1</span> Initialization</h3>
<div class="outline-text-3" id="text-3-1">
<p>
We initialize all the stages with the default parameters.
@ -470,7 +469,7 @@ We can see two mass lines for the soft nano-hexapod (Figure <a href="#org00db693
<div id="org00db693" class="figure">
<p><img src="figs/opt_stiffness_payload_freq_fz_dz.png" alt="opt_stiffness_payload_freq_fz_dz.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload resonance frequency, both for a soft nano-hexapod and a stiff nano-hexapod (<a href="./figs/opt_stiffness_payload_freq_fz_dz.png">png</a>, <a href="./figs/opt_stiffness_payload_freq_fz_dz.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 11: </span>Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload resonance frequency, both for a soft nano-hexapod and a stiff nano-hexapod</p>
</div>
@ -507,7 +506,7 @@ We can see here that for the soft nano-hexapod:
<div id="orga1343a7" class="figure">
<p><img src="figs/opt_stiffness_payload_mass_fz_dz.png" alt="opt_stiffness_payload_mass_fz_dz.png" />
</p>
<p><span class="figure-number">Figure 13: </span>Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload mass, both for a soft nano-hexapod and a stiff nano-hexapod (<a href="./figs/opt_stiffness_payload_mass_fz_dz.png">png</a>, <a href="./figs/opt_stiffness_payload_mass_fz_dz.pdf">pdf</a>)</p>
<p><span class="figure-number">Figure 13: </span>Dynamics from \(\mathcal{F}_z\) to \(\mathcal{X}_z\) for varying payload mass, both for a soft nano-hexapod and a stiff nano-hexapod</p>
</div>
@ -629,7 +628,7 @@ And finally, in Figures <a href="#orge05feb5">21</a> and <a href="#org17c5c95">2
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-05-05 mar. 10:33</p>
<p class="date">Created: 2020-05-20 mer. 15:49</p>
</div>
</body>
</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.

View File

@ -431,3 +431,21 @@ Identification
#+caption: Root Locus for the two considered rotation speed. For the red curve, the system is unstable.
#+RESULTS:
[[file:figs/amplified_piezo_xy_rotating_unstable_root_locus.png]]
* Stewart Platform with Amplified Actuators
** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>>
#+end_src
#+begin_src matlab :exports none :results silent :noweb yes
<<matlab-init>>
#+end_src
#+begin_src matlab :tangle no
simulinkproject('../');
#+end_src
#+begin_src matlab
open('nass_model.slx')
#+end_src

View File

@ -13,11 +13,11 @@
** Matlab Init :noexport:ignore:
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
<<matlab-dir>>
<<matlab-dir>>
#+end_src
#+begin_src matlab :exports none :results silent :noweb yes
<<matlab-init>>
<<matlab-init>>
#+end_src
#+begin_src matlab :tangle no
@ -141,7 +141,7 @@ exportFig('figs/opt_stiff_dvf_plant.pdf', 'width', 'full', 'height', 'full')
#+RESULTS:
[[file:figs/opt_stiff_dvf_plant.png]]
#+begin_src matlab :exports none :post
#+begin_src matlab :exports none
figure;
gains = logspace(2, 5, 300);
@ -1561,7 +1561,7 @@ exportFig('figs/opt_stiff_hac_dvf_Dh_offset_dL.pdf', 'width', 'normal', 'height'
*** Simulation
A simulation is now performed with translation scans and spindle rotation at the same time.
The sample has a mass one 1kg, the spindle rotation speed is 60rpm and the translation scans have a period of 4s and a triangular shape.
The sample has a mass of 1kg, the spindle rotation speed is 60rpm and the translation scans have a period of 4s and a triangular shape.
#+begin_src matlab
initializeDisturbances();

View File

@ -1279,7 +1279,13 @@ The =mirror= structure is saved.
args.MR (1,1) double {mustBeNumeric, mustBePositive} = 90e-3
args.MTh (6,1) double {mustBeNumeric} = [-60+10, 60-10, 60+10, 180-10, 180+10, -60-10]*(pi/180)
% initializeStrutDynamics
args.actuator char {mustBeMember(args.actuator,{'piezo', 'lorentz'})} = 'piezo'
args.actuator char {mustBeMember(args.actuator,{'piezo', 'lorentz', 'amplified'})} = 'piezo'
args.ki (1,1) double {mustBeNumeric} = -1
args.ke (1,1) double {mustBeNumeric} = -1
args.ka (1,1) double {mustBeNumeric} = -1
args.ci (1,1) double {mustBeNumeric} = -1
args.ce (1,1) double {mustBeNumeric} = -1
args.ca (1,1) double {mustBeNumeric} = -1
args.k (1,1) double {mustBeNumeric} = -1
args.c (1,1) double {mustBeNumeric} = -1
% initializeJointDynamics

View File

@ -1281,14 +1281,13 @@ We can see two mass lines for the soft nano-hexapod (Figure [[fig:opt_stiffness_
ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
ylim([-270, 90]);
yticks([-360:90:360]);
legend('location', 'southwest');
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
i = 7;
ax1 = subplot(2, 2, 2);
ax3 = subplot(2, 2, 2);
hold on;
for j = 1:length(Fs)
plot(freqs, abs(squeeze(freqresp(Gf_err{i,j}('Ez', 'Fz'), freqs, 'Hz'))), '-');
@ -1298,7 +1297,7 @@ We can see two mass lines for the soft nano-hexapod (Figure [[fig:opt_stiffness_
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title(sprintf('$k = %.0e$ [N/m]', Ks(i)))
ax2 = subplot(2, 2, 4);
ax4 = subplot(2, 2, 4);
hold on;
for j = 1:length(Fs)
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gf_err{i,j}('Ez', 'Fz'), freqs, 'Hz')))), '-', ...
@ -1311,17 +1310,19 @@ We can see two mass lines for the soft nano-hexapod (Figure [[fig:opt_stiffness_
yticks([-360:90:360]);
legend('location', 'southwest');
linkaxes([ax1,ax2],'x');
linkaxes([ax3,ax4],'x');
xlim([freqs(1), freqs(end)]);
linkaxes([ax1,ax3],'y');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/opt_stiffness_payload_freq_fz_dz.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/opt_stiffness_payload_freq_fz_dz.pdf', 'width', 'full', 'height', 'tall');
#+end_src
#+name: fig:opt_stiffness_payload_freq_fz_dz
#+caption: Dynamics from $\mathcal{F}_z$ to $\mathcal{X}_z$ for varying payload resonance frequency, both for a soft nano-hexapod and a stiff nano-hexapod ([[./figs/opt_stiffness_payload_freq_fz_dz.png][png]], [[./figs/opt_stiffness_payload_freq_fz_dz.pdf][pdf]])
#+caption: Dynamics from $\mathcal{F}_z$ to $\mathcal{X}_z$ for varying payload resonance frequency, both for a soft nano-hexapod and a stiff nano-hexapod
#+RESULTS:
[[file:figs/opt_stiffness_payload_freq_fz_dz.png]]
#+begin_src matlab :exports none
@ -1419,7 +1420,7 @@ We can see here that for the soft nano-hexapod:
i = 7;
ax1 = subplot(2, 2, 2);
ax3 = subplot(2, 2, 2);
hold on;
for j = 1:length(Ms)
plot(freqs, abs(squeeze(freqresp(Gm_err{i,j}('Ez', 'Fz'), freqs, 'Hz'))), '-');
@ -1429,7 +1430,7 @@ We can see here that for the soft nano-hexapod:
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
title(sprintf('$k = %.0e$ [N/m]', Ks(i)))
ax2 = subplot(2, 2, 4);
ax4 = subplot(2, 2, 4);
hold on;
for j = 1:length(Ms)
plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(Gm_err{i,j}('Ez', 'Fz'), freqs, 'Hz')))), '-', ...
@ -1442,17 +1443,19 @@ We can see here that for the soft nano-hexapod:
yticks([-360:90:360]);
legend('location', 'southwest');
linkaxes([ax1,ax2],'x');
linkaxes([ax3,ax4],'x');
xlim([freqs(1), freqs(end)]);
linkaxes([ax1,ax3],'y');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/opt_stiffness_payload_mass_fz_dz.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/opt_stiffness_payload_mass_fz_dz.pdf', 'width', 'full', 'height', 'tall');
#+end_src
#+name: fig:opt_stiffness_payload_mass_fz_dz
#+caption: Dynamics from $\mathcal{F}_z$ to $\mathcal{X}_z$ for varying payload mass, both for a soft nano-hexapod and a stiff nano-hexapod ([[./figs/opt_stiffness_payload_mass_fz_dz.png][png]], [[./figs/opt_stiffness_payload_mass_fz_dz.pdf][pdf]])
#+caption: Dynamics from $\mathcal{F}_z$ to $\mathcal{X}_z$ for varying payload mass, both for a soft nano-hexapod and a stiff nano-hexapod
#+RESULTS:
[[file:figs/opt_stiffness_payload_mass_fz_dz.png]]
#+begin_src matlab :exports none

View File

@ -20,7 +20,7 @@ arguments
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1*ones(6,1)
end
stewart.actuators.type = 1;
stewart.actuators.type = 3;
stewart.actuators.K = args.K;
stewart.actuators.C = args.C;