Update the cubic configuration analysis
This commit is contained in:
parent
3002bd2589
commit
8197bb4eb8
@ -4,7 +4,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-02-06 jeu. 17:29 -->
|
<!-- 2020-02-06 jeu. 18:22 -->
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Cubic configuration for the Stewart Platform</title>
|
<title>Cubic configuration for the Stewart Platform</title>
|
||||||
@ -268,25 +268,25 @@ for the JavaScript code in this tag.
|
|||||||
<h2>Table of Contents</h2>
|
<h2>Table of Contents</h2>
|
||||||
<div id="text-table-of-contents">
|
<div id="text-table-of-contents">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org75c6951">1. <span class="todo TODO">TODO</span> Configuration Analysis - Stiffness Matrix</a>
|
<li><a href="#org8350a45">1. Configuration Analysis - Stiffness Matrix</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#orga823f72">1.1. Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center</a></li>
|
<li><a href="#org6b34363">1.1. Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center</a></li>
|
||||||
<li><a href="#org4261310">1.2. Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</a></li>
|
<li><a href="#orgd59e9f0">1.2. Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</a></li>
|
||||||
<li><a href="#orgf297eb8">1.3. Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center</a></li>
|
<li><a href="#org27bd91a">1.3. Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center</a></li>
|
||||||
<li><a href="#orgfeaf9c1">1.4. Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</a></li>
|
<li><a href="#org4adea52">1.4. Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</a></li>
|
||||||
<li><a href="#org24bdf29">1.5. Conclusion</a></li>
|
<li><a href="#org5defe19">1.5. Conclusion</a></li>
|
||||||
|
<li><a href="#org905f726">1.6. Having Cube’s center above the top platform</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="#org2cb2ab0">2. <span class="todo TODO">TODO</span> Cubic size analysis</a></li>
|
<li><a href="#org6746f61">2. Functions</a>
|
||||||
<li><a href="#orgeec7b47">3. Functions</a>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org92224ef">3.1. <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</a>
|
<li><a href="#org80fcb20">2.1. <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</a>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#org715472d">Function description</a></li>
|
<li><a href="#orgd3654f4">Function description</a></li>
|
||||||
<li><a href="#orgbab37f8">Documentation</a></li>
|
<li><a href="#orgf1c4374">Documentation</a></li>
|
||||||
<li><a href="#orgddbe42e">Optional Parameters</a></li>
|
<li><a href="#org7703a4a">Optional Parameters</a></li>
|
||||||
<li><a href="#org66dd074">Position of the Cube</a></li>
|
<li><a href="#org43039c1">Position of the Cube</a></li>
|
||||||
<li><a href="#org388f35d">Compute the pose</a></li>
|
<li><a href="#orga18e804">Compute the pose</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -313,7 +313,7 @@ According to <a class='org-ref-reference' href="#preumont07_six_axis_singl_stage
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
To generate and study the Cubic configuration, <code>generateCubicConfiguration</code> is used (description in section <a href="#orgb0ae4eb">3.1</a>).
|
To generate and study the Cubic configuration, <code>generateCubicConfiguration</code> is used (description in section <a href="#orgfe8cdfe">2.1</a>).
|
||||||
The goal is to study the benefits of using a cubic configuration:
|
The goal is to study the benefits of using a cubic configuration:
|
||||||
</p>
|
</p>
|
||||||
<ul class="org-ul">
|
<ul class="org-ul">
|
||||||
@ -322,48 +322,34 @@ The goal is to study the benefits of using a cubic configuration:
|
|||||||
<li>Is the center of the cube an important point?</li>
|
<li>Is the center of the cube an important point?</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div id="outline-container-org75c6951" class="outline-2">
|
<div id="outline-container-org8350a45" class="outline-2">
|
||||||
<h2 id="org75c6951"><span class="section-number-2">1</span> <span class="todo TODO">TODO</span> Configuration Analysis - Stiffness Matrix</h2>
|
<h2 id="org8350a45"><span class="section-number-2">1</span> Configuration Analysis - Stiffness Matrix</h2>
|
||||||
<div class="outline-text-2" id="text-1">
|
<div class="outline-text-2" id="text-1">
|
||||||
</div>
|
</div>
|
||||||
<div id="outline-container-orga823f72" class="outline-3">
|
<div id="outline-container-org6b34363" class="outline-3">
|
||||||
<h3 id="orga823f72"><span class="section-number-3">1.1</span> Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center</h3>
|
<h3 id="org6b34363"><span class="section-number-3">1.1</span> Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center</h3>
|
||||||
<div class="outline-text-3" id="text-1-1">
|
<div class="outline-text-3" id="text-1-1">
|
||||||
<p>
|
<p>
|
||||||
We create a cubic Stewart platform (figure <a href="#org66ade8d">1</a>) in such a way that the center of the cube (black dot) is located at the center of the Stewart platform (blue dot).
|
We create a cubic Stewart platform (figure <a href="#org964919a">1</a>) in such a way that the center of the cube (black dot) is located at the center of the Stewart platform (blue dot).
|
||||||
The Jacobian matrix is estimated at the location of the center of the cube.
|
The Jacobian matrix is estimated at the location of the center of the cube.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, <span class="org-type">-</span>50e<span class="org-type">-</span>3);
|
||||||
|
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 50e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
|
||||||
|
stewart = computeJointsPose(stewart);
|
||||||
|
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1));
|
||||||
|
stewart = computeJacobian(stewart);
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div id="org66ade8d" class="figure">
|
|
||||||
|
<div id="org964919a" class="figure">
|
||||||
<p><img src="./figs/3d-cubic-stewart-aligned.png" alt="3d-cubic-stewart-aligned.png" />
|
<p><img src="./figs/3d-cubic-stewart-aligned.png" alt="3d-cubic-stewart-aligned.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 1: </span>Centered cubic configuration</p>
|
<p><span class="figure-number">Figure 1: </span>Centered cubic configuration</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">opts = struct(...
|
|
||||||
<span class="org-string">'H_tot'</span>, 100, ...<span class="org-comment"> % Total height of the Hexapod [mm]</span>
|
|
||||||
<span class="org-string">'L'</span>, 200<span class="org-type">/</span>sqrt(3), ...<span class="org-comment"> % Size of the Cube [mm]</span>
|
|
||||||
<span class="org-string">'H'</span>, 60, ...<span class="org-comment"> % Height between base joints and platform joints [mm]</span>
|
|
||||||
<span class="org-string">'H0'</span>, 200<span class="org-type">/</span>2<span class="org-type">-</span>60<span class="org-type">/</span>2 ...<span class="org-comment"> % Height between the corner of the cube and the plane containing the base joints [mm]</span>
|
|
||||||
);
|
|
||||||
stewart = initializeCubicConfiguration(opts);
|
|
||||||
opts = struct(...
|
|
||||||
<span class="org-string">'Jd_pos'</span>, [0, 0, <span class="org-type">-</span>50], ...<span class="org-comment"> % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]</span>
|
|
||||||
<span class="org-string">'Jf_pos'</span>, [0, 0, <span class="org-type">-</span>50] ...<span class="org-comment"> % Position of the Jacobian for force location from the top of the mobile platform [mm]</span>
|
|
||||||
);
|
|
||||||
stewart = computeGeometricalProperties(stewart, opts);
|
|
||||||
|
|
||||||
save(<span class="org-string">'./mat/stewart.mat'</span>, <span class="org-string">'stewart'</span>);
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">K = stewart.Jf<span class="org-type">'*</span>stewart.Jf;
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||||
|
|
||||||
|
|
||||||
@ -383,88 +369,76 @@ save(<span class="org-string">'./mat/stewart.mat'</span>, <span class="org-strin
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">1.9e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-2.3e-17</td>
|
<td class="org-right">-2.5e-16</td>
|
||||||
<td class="org-right">1.8e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">5.5e-17</td>
|
<td class="org-right">2.1e-17</td>
|
||||||
<td class="org-right">-1.5e-17</td>
|
<td class="org-right">0</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">1.9e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">6.8e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-6.1e-17</td>
|
<td class="org-right">-7.8e-19</td>
|
||||||
<td class="org-right">-1.6e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">4.8e-18</td>
|
<td class="org-right">0</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">-2.3e-17</td>
|
<td class="org-right">-2.5e-16</td>
|
||||||
<td class="org-right">6.8e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">-6.7e-18</td>
|
<td class="org-right">-2.4e-18</td>
|
||||||
<td class="org-right">4.9e-18</td>
|
<td class="org-right">-1.4e-17</td>
|
||||||
<td class="org-right">5.3e-19</td>
|
<td class="org-right">0</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">1.8e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-6.1e-17</td>
|
<td class="org-right">-7.8e-19</td>
|
||||||
<td class="org-right">-6.7e-18</td>
|
<td class="org-right">-2.4e-18</td>
|
||||||
<td class="org-right">0.0067</td>
|
<td class="org-right">0.015</td>
|
||||||
<td class="org-right">-2.3e-20</td>
|
<td class="org-right">-4.3e-19</td>
|
||||||
<td class="org-right">-6.1e-20</td>
|
<td class="org-right">1.7e-18</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">5.5e-17</td>
|
<td class="org-right">1.8e-17</td>
|
||||||
<td class="org-right">-1.6e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">4.9e-18</td>
|
<td class="org-right">-1.1e-17</td>
|
||||||
<td class="org-right">-2.3e-20</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">0.0067</td>
|
<td class="org-right">0.015</td>
|
||||||
<td class="org-right">1e-18</td>
|
<td class="org-right">0</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">-1.5e-17</td>
|
<td class="org-right">6.6e-18</td>
|
||||||
<td class="org-right">4.8e-18</td>
|
<td class="org-right">-3.3e-18</td>
|
||||||
<td class="org-right">5.3e-19</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-6.1e-20</td>
|
<td class="org-right">1.7e-18</td>
|
||||||
<td class="org-right">1e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">0.027</td>
|
<td class="org-right">0.06</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org4261310" class="outline-3">
|
<div id="outline-container-orgd59e9f0" class="outline-3">
|
||||||
<h3 id="org4261310"><span class="section-number-3">1.2</span> Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</h3>
|
<h3 id="orgd59e9f0"><span class="section-number-3">1.2</span> Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</h3>
|
||||||
<div class="outline-text-3" id="text-1-2">
|
<div class="outline-text-3" id="text-1-2">
|
||||||
<p>
|
<p>
|
||||||
We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure <a href="#org66ade8d">1</a>).
|
We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure <a href="#org964919a">1</a>).
|
||||||
The Jacobian matrix is not estimated at the location of the center of the cube.
|
The Jacobian matrix is not estimated at the location of the center of the cube.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">opts = struct(...
|
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 0);
|
||||||
<span class="org-string">'H_tot'</span>, 100, ...<span class="org-comment"> % Total height of the Hexapod [mm]</span>
|
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 50e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
|
||||||
<span class="org-string">'L'</span>, 200<span class="org-type">/</span>sqrt(3), ...<span class="org-comment"> % Size of the Cube [mm]</span>
|
stewart = computeJointsPose(stewart);
|
||||||
<span class="org-string">'H'</span>, 60, ...<span class="org-comment"> % Height between base joints and platform joints [mm]</span>
|
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1));
|
||||||
<span class="org-string">'H0'</span>, 200<span class="org-type">/</span>2<span class="org-type">-</span>60<span class="org-type">/</span>2 ...<span class="org-comment"> % Height between the corner of the cube and the plane containing the base joints [mm]</span>
|
stewart = computeJacobian(stewart);
|
||||||
);
|
|
||||||
stewart = initializeCubicConfiguration(opts);
|
|
||||||
opts = struct(...
|
|
||||||
<span class="org-string">'Jd_pos'</span>, [0, 0, 0], ...<span class="org-comment"> % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]</span>
|
|
||||||
<span class="org-string">'Jf_pos'</span>, [0, 0, 0] ...<span class="org-comment"> % Position of the Jacobian for force location from the top of the mobile platform [mm]</span>
|
|
||||||
);
|
|
||||||
stewart = computeGeometricalProperties(stewart, opts);
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">K = stewart.Jf<span class="org-type">'*</span>stewart.Jf;
|
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -487,102 +461,83 @@ stewart = computeGeometricalProperties(stewart, opts);
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">1.9e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-2.3e-17</td>
|
<td class="org-right">-2.5e-16</td>
|
||||||
<td class="org-right">1.5e-18</td>
|
<td class="org-right">1.4e-17</td>
|
||||||
<td class="org-right">-0.1</td>
|
<td class="org-right">-0.1</td>
|
||||||
<td class="org-right">-1.5e-17</td>
|
<td class="org-right">0</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">1.9e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">6.8e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">0.1</td>
|
<td class="org-right">0.1</td>
|
||||||
<td class="org-right">-1.6e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">4.8e-18</td>
|
<td class="org-right">0</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">-2.3e-17</td>
|
<td class="org-right">-2.5e-16</td>
|
||||||
<td class="org-right">6.8e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">-5.1e-19</td>
|
<td class="org-right">3.4e-18</td>
|
||||||
<td class="org-right">-5.5e-18</td>
|
<td class="org-right">-1.4e-17</td>
|
||||||
<td class="org-right">5.3e-19</td>
|
<td class="org-right">0</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">1.5e-18</td>
|
<td class="org-right">1.4e-17</td>
|
||||||
<td class="org-right">0.1</td>
|
<td class="org-right">0.1</td>
|
||||||
<td class="org-right">-5.1e-19</td>
|
<td class="org-right">3.4e-18</td>
|
||||||
<td class="org-right">0.012</td>
|
<td class="org-right">0.02</td>
|
||||||
<td class="org-right">-3e-19</td>
|
<td class="org-right">1.1e-20</td>
|
||||||
<td class="org-right">3.1e-19</td>
|
<td class="org-right">3.4e-18</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">-0.1</td>
|
<td class="org-right">-0.1</td>
|
||||||
<td class="org-right">-1.6e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-5.5e-18</td>
|
<td class="org-right">-1.4e-17</td>
|
||||||
<td class="org-right">-3e-19</td>
|
<td class="org-right">1.4e-19</td>
|
||||||
<td class="org-right">0.012</td>
|
<td class="org-right">0.02</td>
|
||||||
<td class="org-right">1.9e-18</td>
|
<td class="org-right">-1.7e-18</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">-1.5e-17</td>
|
<td class="org-right">6.6e-18</td>
|
||||||
<td class="org-right">4.8e-18</td>
|
<td class="org-right">-3.3e-18</td>
|
||||||
<td class="org-right">5.3e-19</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">3.1e-19</td>
|
<td class="org-right">3.6e-18</td>
|
||||||
<td class="org-right">1.9e-18</td>
|
<td class="org-right">-1.7e-18</td>
|
||||||
<td class="org-right">0.027</td>
|
<td class="org-right">0.06</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgf297eb8" class="outline-3">
|
<div id="outline-container-org27bd91a" class="outline-3">
|
||||||
<h3 id="orgf297eb8"><span class="section-number-3">1.3</span> Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center</h3>
|
<h3 id="org27bd91a"><span class="section-number-3">1.3</span> Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center</h3>
|
||||||
<div class="outline-text-3" id="text-1-3">
|
<div class="outline-text-3" id="text-1-3">
|
||||||
<p>
|
<p>
|
||||||
Here, the “center” of the Stewart platform is not at the cube center (figure <a href="#org4492663">2</a>).
|
Here, the “center” of the Stewart platform is not at the cube center (figure <a href="#orgeceb55c">2</a>).
|
||||||
The Jacobian is estimated at the cube center.
|
The Jacobian is estimated at the cube center.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<div id="org4492663" class="figure">
|
<div id="orgeceb55c" class="figure">
|
||||||
<p><img src="./figs/3d-cubic-stewart-misaligned.png" alt="3d-cubic-stewart-misaligned.png" />
|
<p><img src="./figs/3d-cubic-stewart-misaligned.png" alt="3d-cubic-stewart-misaligned.png" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 2: </span>Not centered cubic configuration</p>
|
<p><span class="figure-number">Figure 2: </span>Not centered cubic configuration</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
|
||||||
The center of the cube is at \(z = 110\).
|
|
||||||
The Stewart platform is from \(z = H_0 = 75\) to \(z = H_0 + H_{tot} = 175\).
|
|
||||||
The center height of the Stewart platform is then at \(z = \frac{175-75}{2} = 50\).
|
|
||||||
The center of the cube from the top platform is at \(z = 110 - 175 = -65\).
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">opts = struct(...
|
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 80e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, <span class="org-type">-</span>40e<span class="org-type">-</span>3);
|
||||||
<span class="org-string">'H_tot'</span>, 100, ...<span class="org-comment"> % Total height of the Hexapod [mm]</span>
|
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 50e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
|
||||||
<span class="org-string">'L'</span>, 220<span class="org-type">/</span>sqrt(3), ...<span class="org-comment"> % Size of the Cube [mm]</span>
|
stewart = computeJointsPose(stewart);
|
||||||
<span class="org-string">'H'</span>, 60, ...<span class="org-comment"> % Height between base joints and platform joints [mm]</span>
|
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1));
|
||||||
<span class="org-string">'H0'</span>, 75 ...<span class="org-comment"> % Height between the corner of the cube and the plane containing the base joints [mm]</span>
|
stewart = computeJacobian(stewart);
|
||||||
);
|
|
||||||
stewart = initializeCubicConfiguration(opts);
|
|
||||||
opts = struct(...
|
|
||||||
<span class="org-string">'Jd_pos'</span>, [0, 0, <span class="org-type">-</span>65], ...<span class="org-comment"> % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]</span>
|
|
||||||
<span class="org-string">'Jf_pos'</span>, [0, 0, <span class="org-type">-</span>65] ...<span class="org-comment"> % Position of the Jacobian for force location from the top of the mobile platform [mm]</span>
|
|
||||||
);
|
|
||||||
stewart = computeGeometricalProperties(stewart, opts);
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">K = stewart.Jf<span class="org-type">'*</span>stewart.Jf;
|
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -605,56 +560,56 @@ stewart = computeGeometricalProperties(stewart, opts);
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">-1.8e-17</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">2.6e-17</td>
|
<td class="org-right">-1.5e-16</td>
|
||||||
<td class="org-right">3.3e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">0.04</td>
|
<td class="org-right">0.04</td>
|
||||||
<td class="org-right">1.7e-19</td>
|
<td class="org-right">0</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">-1.8e-17</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">1.9e-16</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-0.04</td>
|
<td class="org-right">-0.04</td>
|
||||||
<td class="org-right">2.2e-19</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-5.3e-19</td>
|
<td class="org-right">-2.8e-17</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">2.6e-17</td>
|
<td class="org-right">-1.5e-16</td>
|
||||||
<td class="org-right">1.9e-16</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">-8.9e-18</td>
|
<td class="org-right">1.2e-18</td>
|
||||||
<td class="org-right">6.5e-19</td>
|
<td class="org-right">-1e-17</td>
|
||||||
<td class="org-right">-5.8e-19</td>
|
<td class="org-right">0</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">3.3e-18</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-0.04</td>
|
<td class="org-right">-0.04</td>
|
||||||
<td class="org-right">-8.9e-18</td>
|
<td class="org-right">1.2e-18</td>
|
||||||
<td class="org-right">0.0089</td>
|
<td class="org-right">0.016</td>
|
||||||
<td class="org-right">-9.3e-20</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">9.8e-20</td>
|
<td class="org-right">8.7e-19</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">0.04</td>
|
<td class="org-right">0.04</td>
|
||||||
<td class="org-right">2.2e-19</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">6.5e-19</td>
|
<td class="org-right">-6.2e-18</td>
|
||||||
<td class="org-right">-9.3e-20</td>
|
<td class="org-right">-1.1e-19</td>
|
||||||
<td class="org-right">0.0089</td>
|
<td class="org-right">0.016</td>
|
||||||
<td class="org-right">-2.4e-18</td>
|
<td class="org-right">8.7e-19</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">1.7e-19</td>
|
<td class="org-right">-3.7e-19</td>
|
||||||
<td class="org-right">-5.3e-19</td>
|
<td class="org-right">-2.5e-17</td>
|
||||||
<td class="org-right">-5.8e-19</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">9.8e-20</td>
|
<td class="org-right">1.2e-18</td>
|
||||||
<td class="org-right">-2.4e-18</td>
|
<td class="org-right">8.7e-19</td>
|
||||||
<td class="org-right">0.032</td>
|
<td class="org-right">0.06</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@ -665,8 +620,8 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgfeaf9c1" class="outline-3">
|
<div id="outline-container-org4adea52" class="outline-3">
|
||||||
<h3 id="orgfeaf9c1"><span class="section-number-3">1.4</span> Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</h3>
|
<h3 id="org4adea52"><span class="section-number-3">1.4</span> Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</h3>
|
||||||
<div class="outline-text-3" id="text-1-4">
|
<div class="outline-text-3" id="text-1-4">
|
||||||
<p>
|
<p>
|
||||||
Here, the “center” of the Stewart platform is not at the cube center.
|
Here, the “center” of the Stewart platform is not at the cube center.
|
||||||
@ -681,23 +636,11 @@ The center of the cube from the top platform is at \(z = 110 - 175 = -65\).
|
|||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab">opts = struct(...
|
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 80e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, <span class="org-type">-</span>30e<span class="org-type">-</span>3);
|
||||||
<span class="org-string">'H_tot'</span>, 100, ...<span class="org-comment"> % Total height of the Hexapod [mm]</span>
|
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 50e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
|
||||||
<span class="org-string">'L'</span>, 220<span class="org-type">/</span>sqrt(3), ...<span class="org-comment"> % Size of the Cube [mm]</span>
|
stewart = computeJointsPose(stewart);
|
||||||
<span class="org-string">'H'</span>, 60, ...<span class="org-comment"> % Height between base joints and platform joints [mm]</span>
|
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1));
|
||||||
<span class="org-string">'H0'</span>, 75 ...<span class="org-comment"> % Height between the corner of the cube and the plane containing the base joints [mm]</span>
|
stewart = computeJacobian(stewart);
|
||||||
);
|
|
||||||
stewart = initializeCubicConfiguration(opts);
|
|
||||||
opts = struct(...
|
|
||||||
<span class="org-string">'Jd_pos'</span>, [0, 0, <span class="org-type">-</span>60], ...<span class="org-comment"> % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]</span>
|
|
||||||
<span class="org-string">'Jf_pos'</span>, [0, 0, <span class="org-type">-</span>60] ...<span class="org-comment"> % Position of the Jacobian for force location from the top of the mobile platform [mm]</span>
|
|
||||||
);
|
|
||||||
stewart = computeGeometricalProperties(stewart, opts);
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">K = stewart.Jf<span class="org-type">'*</span>stewart.Jf;
|
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -720,56 +663,177 @@ stewart = computeGeometricalProperties(stewart, opts);
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">-1.8e-17</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">2.6e-17</td>
|
<td class="org-right">-1.7e-16</td>
|
||||||
<td class="org-right">-5.7e-19</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">0.03</td>
|
<td class="org-right">4.9e-17</td>
|
||||||
<td class="org-right">1.7e-19</td>
|
<td class="org-right">0</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">-1.8e-17</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">1.9e-16</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-0.03</td>
|
<td class="org-right">-2.2e-17</td>
|
||||||
<td class="org-right">2.2e-19</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-5.3e-19</td>
|
<td class="org-right">2.8e-17</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">2.6e-17</td>
|
<td class="org-right">-1.7e-16</td>
|
||||||
<td class="org-right">1.9e-16</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">2</td>
|
<td class="org-right">2</td>
|
||||||
<td class="org-right">-1.5e-17</td>
|
<td class="org-right">1.1e-18</td>
|
||||||
<td class="org-right">6.5e-19</td>
|
<td class="org-right">-1.4e-17</td>
|
||||||
<td class="org-right">-5.8e-19</td>
|
<td class="org-right">1.4e-17</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">-5.7e-19</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">-0.03</td>
|
<td class="org-right">-2.2e-17</td>
|
||||||
<td class="org-right">-1.5e-17</td>
|
<td class="org-right">1.1e-18</td>
|
||||||
<td class="org-right">0.0085</td>
|
<td class="org-right">0.015</td>
|
||||||
<td class="org-right">4.9e-20</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">1.7e-19</td>
|
<td class="org-right">3.5e-18</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">0.03</td>
|
<td class="org-right">4.4e-17</td>
|
||||||
<td class="org-right">2.2e-19</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">6.5e-19</td>
|
<td class="org-right">-1.4e-17</td>
|
||||||
<td class="org-right">4.9e-20</td>
|
<td class="org-right">-5.7e-20</td>
|
||||||
<td class="org-right">0.0085</td>
|
<td class="org-right">0.015</td>
|
||||||
<td class="org-right">-1.1e-18</td>
|
<td class="org-right">-8.7e-19</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="org-right">1.7e-19</td>
|
<td class="org-right">6.6e-18</td>
|
||||||
<td class="org-right">-5.3e-19</td>
|
<td class="org-right">2.5e-17</td>
|
||||||
<td class="org-right">-5.8e-19</td>
|
<td class="org-right">0</td>
|
||||||
<td class="org-right">1.7e-19</td>
|
<td class="org-right">3.5e-18</td>
|
||||||
<td class="org-right">-1.1e-18</td>
|
<td class="org-right">-8.7e-19</td>
|
||||||
<td class="org-right">0.032</td>
|
<td class="org-right">0.06</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), and the Stiffness matrix is diagonal.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org5defe19" class="outline-3">
|
||||||
|
<h3 id="org5defe19"><span class="section-number-3">1.5</span> Conclusion</h3>
|
||||||
|
<div class="outline-text-3" id="text-1-5">
|
||||||
|
<div class="important">
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>The cubic configuration permits to have \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\)</li>
|
||||||
|
<li>The stiffness matrix \(K\) is diagonal for the cubic configuration if the Jacobian is estimated at the cube center.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="outline-container-org905f726" class="outline-3">
|
||||||
|
<h3 id="org905f726"><span class="section-number-3">1.6</span> Having Cube’s center above the top platform</h3>
|
||||||
|
<div class="outline-text-3" id="text-1-6">
|
||||||
|
<p>
|
||||||
|
Let’s say we want to have a decouple dynamics above the top platform.
|
||||||
|
Thus, we want the cube’s center to be located above the top center.
|
||||||
|
This is possible, to do so:
|
||||||
|
</p>
|
||||||
|
<ul class="org-ul">
|
||||||
|
<li>The position of the center of the cube should be positioned at A</li>
|
||||||
|
<li>The Height of the “useful” part of the cube should be at least equal to two times the distance from F to A.
|
||||||
|
It is possible to have small cube, but then to configuration is a little bit strange.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="org-src-container">
|
||||||
|
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 50e<span class="org-type">-</span>3);
|
||||||
|
FOc = stewart.H <span class="org-type">+</span> stewart.MO_B(3);
|
||||||
|
Hc = 2<span class="org-type">*</span>(stewart.H <span class="org-type">+</span> stewart.MO_B(3));
|
||||||
|
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, Hc, <span class="org-string">'FOc'</span>, FOc, <span class="org-string">'FHa'</span>, 10e<span class="org-type">-</span>3, <span class="org-string">'MHb'</span>, 10e<span class="org-type">-</span>3);
|
||||||
|
stewart = computeJointsPose(stewart);
|
||||||
|
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1));
|
||||||
|
stewart = initializeJointDynamics(stewart, <span class="org-string">'disable'</span>, <span class="org-constant">true</span>);
|
||||||
|
stewart = initializeCylindricalPlatforms(stewart);
|
||||||
|
stewart = initializeCylindricalStruts(stewart);
|
||||||
|
stewart = computeJacobian(stewart);
|
||||||
|
stewart = initializeStewartPose(stewart);
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||||
|
|
||||||
|
|
||||||
|
<colgroup>
|
||||||
|
<col class="org-right" />
|
||||||
|
|
||||||
|
<col class="org-right" />
|
||||||
|
|
||||||
|
<col class="org-right" />
|
||||||
|
|
||||||
|
<col class="org-right" />
|
||||||
|
|
||||||
|
<col class="org-right" />
|
||||||
|
|
||||||
|
<col class="org-right" />
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="org-right">2</td>
|
||||||
|
<td class="org-right">0</td>
|
||||||
|
<td class="org-right">-4.6e-16</td>
|
||||||
|
<td class="org-right">0</td>
|
||||||
|
<td class="org-right">4e-17</td>
|
||||||
|
<td class="org-right">0</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="org-right">0</td>
|
||||||
|
<td class="org-right">2</td>
|
||||||
|
<td class="org-right">0</td>
|
||||||
|
<td class="org-right">-4.8e-17</td>
|
||||||
|
<td class="org-right">0</td>
|
||||||
|
<td class="org-right">-3.5e-17</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="org-right">-4.6e-16</td>
|
||||||
|
<td class="org-right">0</td>
|
||||||
|
<td class="org-right">2</td>
|
||||||
|
<td class="org-right">1.5e-20</td>
|
||||||
|
<td class="org-right">4e-17</td>
|
||||||
|
<td class="org-right">0</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="org-right">0</td>
|
||||||
|
<td class="org-right">-4.8e-17</td>
|
||||||
|
<td class="org-right">1.5e-20</td>
|
||||||
|
<td class="org-right">0.00034</td>
|
||||||
|
<td class="org-right">6.8e-21</td>
|
||||||
|
<td class="org-right">4.2e-19</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="org-right">4e-17</td>
|
||||||
|
<td class="org-right">0</td>
|
||||||
|
<td class="org-right">4e-17</td>
|
||||||
|
<td class="org-right">-3e-21</td>
|
||||||
|
<td class="org-right">0.00034</td>
|
||||||
|
<td class="org-right">-2.7e-20</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="org-right">-1.7e-19</td>
|
||||||
|
<td class="org-right">-3.6e-17</td>
|
||||||
|
<td class="org-right">0</td>
|
||||||
|
<td class="org-right">4.2e-19</td>
|
||||||
|
<td class="org-right">-2.7e-20</td>
|
||||||
|
<td class="org-right">0.0014</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@ -779,131 +843,21 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org24bdf29" class="outline-3">
|
|
||||||
<h3 id="org24bdf29"><span class="section-number-3">1.5</span> Conclusion</h3>
|
|
||||||
<div class="outline-text-3" id="text-1-5">
|
|
||||||
<div class="important">
|
|
||||||
<ul class="org-ul">
|
|
||||||
<li>The cubic configuration permits to have \(k_x = k_y = k_z\) and \(k_{\theta\x} = k_{\theta_y}\)</li>
|
|
||||||
<li>The stiffness matrix \(K\) is diagonal for the cubic configuration if the Stewart platform and the cube are centered <b>and</b> the Jacobian is estimated at the cube center</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org2cb2ab0" class="outline-2">
|
<div id="outline-container-org6746f61" class="outline-2">
|
||||||
<h2 id="org2cb2ab0"><span class="section-number-2">2</span> <span class="todo TODO">TODO</span> Cubic size analysis</h2>
|
<h2 id="org6746f61"><span class="section-number-2">2</span> Functions</h2>
|
||||||
<div class="outline-text-2" id="text-2">
|
<div class="outline-text-2" id="text-2">
|
||||||
<p>
|
<p>
|
||||||
We here study the effect of the size of the cube used for the Stewart configuration.
|
<a id="org2a4885e"></a>
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
We fix the height of the Stewart platform, the center of the cube is at the center of the Stewart platform.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
We only vary the size of the cube.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">H_cubes = 250<span class="org-type">:</span>20<span class="org-type">:</span>350;
|
|
||||||
stewarts = {zeros(length(H_cubes), 1)};
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab"><span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(H_cubes)</span>
|
|
||||||
H_cube = H_cubes(<span class="org-constant">i</span>);
|
|
||||||
H_tot = 100;
|
|
||||||
H = 80;
|
|
||||||
|
|
||||||
opts = struct(...
|
|
||||||
<span class="org-string">'H_tot'</span>, H_tot, ...<span class="org-comment"> % Total height of the Hexapod [mm]</span>
|
|
||||||
<span class="org-string">'L'</span>, H_cube<span class="org-type">/</span>sqrt(3), ...<span class="org-comment"> % Size of the Cube [mm]</span>
|
|
||||||
<span class="org-string">'H'</span>, H, ...<span class="org-comment"> % Height between base joints and platform joints [mm]</span>
|
|
||||||
<span class="org-string">'H0'</span>, H_cube<span class="org-type">/</span>2<span class="org-type">-</span>H<span class="org-type">/</span>2 ...<span class="org-comment"> % Height between the corner of the cube and the plane containing the base joints [mm]</span>
|
|
||||||
);
|
|
||||||
stewart = initializeCubicConfiguration(opts);
|
|
||||||
|
|
||||||
opts = struct(...
|
|
||||||
<span class="org-string">'Jd_pos'</span>, [0, 0, H_cube<span class="org-type">/</span>2<span class="org-type">-</span>opts.H0<span class="org-type">-</span>opts.H_tot], ...<span class="org-comment"> % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]</span>
|
|
||||||
<span class="org-string">'Jf_pos'</span>, [0, 0, H_cube<span class="org-type">/</span>2<span class="org-type">-</span>opts.H0<span class="org-type">-</span>opts.H_tot] ...<span class="org-comment"> % Position of the Jacobian for force location from the top of the mobile platform [mm]</span>
|
|
||||||
);
|
|
||||||
stewart = computeGeometricalProperties(stewart, opts);
|
|
||||||
stewarts(<span class="org-constant">i</span>) = {stewart};
|
|
||||||
<span class="org-keyword">end</span>
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The Stiffness matrix is computed for all generated Stewart platforms.
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab">Ks = zeros(6, 6, length(H_cube));
|
|
||||||
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:length(H_cubes)</span>
|
|
||||||
Ks(<span class="org-type">:</span>, <span class="org-type">:</span>, <span class="org-constant">i</span>) = stewarts{<span class="org-constant">i</span>}.Jd<span class="org-type">'*</span>stewarts{<span class="org-constant">i</span>}.Jd;
|
|
||||||
<span class="org-keyword">end</span>
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
The only elements of \(K\) that vary are \(k_{\theta_x} = k_{\theta_y}\) and \(k_{\theta_z}\).
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Finally, we plot \(k_{\theta_x} = k_{\theta_y}\) and \(k_{\theta_z}\)
|
|
||||||
</p>
|
|
||||||
<div class="org-src-container">
|
|
||||||
<pre class="src src-matlab"><span class="org-type">figure</span>;
|
|
||||||
hold on;
|
|
||||||
plot(H_cubes, squeeze(Ks(4, 4, <span class="org-type">:</span>)), <span class="org-string">'DisplayName'</span>, <span class="org-string">'$k_{\theta_x}$'</span>);
|
|
||||||
plot(H_cubes, squeeze(Ks(6, 6, <span class="org-type">:</span>)), <span class="org-string">'DisplayName'</span>, <span class="org-string">'$k_{\theta_z}$'</span>);
|
|
||||||
hold off;
|
|
||||||
legend(<span class="org-string">'location'</span>, <span class="org-string">'northwest'</span>);
|
|
||||||
xlabel(<span class="org-string">'Cube Size [mm]'</span>); ylabel(<span class="org-string">'Rotational stiffnes [normalized]'</span>);
|
|
||||||
</pre>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div id="org009489e" class="figure">
|
|
||||||
<p><img src="figs/stiffness_cube_size.png" alt="stiffness_cube_size.png" />
|
|
||||||
</p>
|
|
||||||
<p><span class="figure-number">Figure 3: </span>\(k_{\theta_x} = k_{\theta_y}\) and \(k_{\theta_z}\) function of the size of the cube</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<p>
|
|
||||||
We observe that \(k_{\theta_x} = k_{\theta_y}\) and \(k_{\theta_z}\) increase linearly with the cube size.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div class="important">
|
|
||||||
<p>
|
|
||||||
In order to maximize the rotational stiffness of the Stewart platform, the size of the cube should be the highest possible.
|
|
||||||
In that case, the legs will the further separated. Size of the cube is then limited by allowed space.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="outline-container-orgeec7b47" class="outline-2">
|
|
||||||
<h2 id="orgeec7b47"><span class="section-number-2">3</span> Functions</h2>
|
|
||||||
<div class="outline-text-2" id="text-3">
|
|
||||||
<p>
|
|
||||||
<a id="orgb108018"></a>
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org92224ef" class="outline-3">
|
<div id="outline-container-org80fcb20" class="outline-3">
|
||||||
<h3 id="org92224ef"><span class="section-number-3">3.1</span> <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</h3>
|
<h3 id="org80fcb20"><span class="section-number-3">2.1</span> <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</h3>
|
||||||
<div class="outline-text-3" id="text-3-1">
|
<div class="outline-text-3" id="text-2-1">
|
||||||
<p>
|
<p>
|
||||||
<a id="orgb0ae4eb"></a>
|
<a id="orgfe8cdfe"></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@ -911,9 +865,9 @@ This Matlab function is accessible <a href="src/generateCubicConfiguration.m">he
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org715472d" class="outline-4">
|
<div id="outline-container-orgd3654f4" class="outline-4">
|
||||||
<h4 id="org715472d">Function description</h4>
|
<h4 id="orgd3654f4">Function description</h4>
|
||||||
<div class="outline-text-4" id="text-org715472d">
|
<div class="outline-text-4" id="text-orgd3654f4">
|
||||||
<div class="org-src-container">
|
<div class="org-src-container">
|
||||||
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[stewart]</span> = <span class="org-function-name">generateCubicConfiguration</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
|
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[stewart]</span> = <span class="org-function-name">generateCubicConfiguration</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
|
||||||
<span class="org-comment">% generateCubicConfiguration - Generate a Cubic Configuration</span>
|
<span class="org-comment">% generateCubicConfiguration - Generate a Cubic Configuration</span>
|
||||||
@ -938,37 +892,37 @@ This Matlab function is accessible <a href="src/generateCubicConfiguration.m">he
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgbab37f8" class="outline-4">
|
<div id="outline-container-orgf1c4374" class="outline-4">
|
||||||
<h4 id="orgbab37f8">Documentation</h4>
|
<h4 id="orgf1c4374">Documentation</h4>
|
||||||
<div class="outline-text-4" id="text-orgbab37f8">
|
<div class="outline-text-4" id="text-orgf1c4374">
|
||||||
|
|
||||||
<div id="org946a873" class="figure">
|
<div id="org8d1a2f5" 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" />
|
||||||
</p>
|
</p>
|
||||||
<p><span class="figure-number">Figure 4: </span>Cubic Configuration</p>
|
<p><span class="figure-number">Figure 3: </span>Cubic Configuration</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-orgddbe42e" class="outline-4">
|
<div id="outline-container-org7703a4a" class="outline-4">
|
||||||
<h4 id="orgddbe42e">Optional Parameters</h4>
|
<h4 id="org7703a4a">Optional Parameters</h4>
|
||||||
<div class="outline-text-4" id="text-orgddbe42e">
|
<div class="outline-text-4" id="text-org7703a4a">
|
||||||
<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.Hc (1,1) double {mustBeNumeric, mustBePositive} = 60e<span class="org-type">-</span>3
|
args.Hc (1,1) double {mustBeNumeric, mustBePositive} = 60e<span class="org-type">-</span>3
|
||||||
args.FOc (1,1) double {mustBeNumeric} = 50e<span class="org-type">-</span>3
|
args.FOc (1,1) double {mustBeNumeric} = 50e<span class="org-type">-</span>3
|
||||||
args.FHa (1,1) double {mustBeNumeric, mustBePositive} = 15e<span class="org-type">-</span>3
|
args.FHa (1,1) double {mustBeNumeric, mustBeNonnegative} = 15e<span class="org-type">-</span>3
|
||||||
args.MHb (1,1) double {mustBeNumeric, mustBePositive} = 15e<span class="org-type">-</span>3
|
args.MHb (1,1) double {mustBeNumeric, mustBeNonnegative} = 15e<span class="org-type">-</span>3
|
||||||
<span class="org-keyword">end</span>
|
<span class="org-keyword">end</span>
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org66dd074" class="outline-4">
|
<div id="outline-container-org43039c1" class="outline-4">
|
||||||
<h4 id="org66dd074">Position of the Cube</h4>
|
<h4 id="org43039c1">Position of the Cube</h4>
|
||||||
<div class="outline-text-4" id="text-org66dd074">
|
<div class="outline-text-4" id="text-org43039c1">
|
||||||
<p>
|
<p>
|
||||||
We define the useful points of the cube with respect to the Cube’s center.
|
We define the useful points of the cube with respect to the Cube’s center.
|
||||||
\({}^{C}C\) are the 6 vertices of the cubes expressed in a frame {C} which is
|
\({}^{C}C\) are the 6 vertices of the cubes expressed in a frame {C} which is
|
||||||
@ -993,9 +947,9 @@ CCm = [Cc(<span class="org-type">:</span>,2), Cc(<span class="org-type">:</span>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="outline-container-org388f35d" class="outline-4">
|
<div id="outline-container-orga18e804" class="outline-4">
|
||||||
<h4 id="org388f35d">Compute the pose</h4>
|
<h4 id="orga18e804">Compute the pose</h4>
|
||||||
<div class="outline-text-4" id="text-org388f35d">
|
<div class="outline-text-4" id="text-orga18e804">
|
||||||
<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>
|
||||||
@ -1028,7 +982,7 @@ stewart.Mb = CCf <span class="org-type">+</span> [0; 0; args.FOc<span class="org
|
|||||||
</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-02-06 jeu. 17:29</p>
|
<p class="date">Created: 2020-02-06 jeu. 18:22</p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
#+PROPERTY: header-args:matlab+ :output-dir figs
|
#+PROPERTY: header-args:matlab+ :output-dir figs
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
* Introduction :ignore:
|
* Introduction :ignore:
|
||||||
The discovery of the Cubic configuration is done in cite:geng94_six_degree_of_freed_activ.
|
The discovery of the Cubic configuration is done in cite:geng94_six_degree_of_freed_activ.
|
||||||
Further analysis is conducted in
|
Further analysis is conducted in
|
||||||
|
|
||||||
@ -37,7 +37,8 @@ The goal is to study the benefits of using a cubic configuration:
|
|||||||
- No coupling between the actuators?
|
- No coupling between the actuators?
|
||||||
- Is the center of the cube an important point?
|
- Is the center of the cube an important point?
|
||||||
|
|
||||||
* Matlab Init :noexport:ignore:
|
* Configuration Analysis - Stiffness Matrix
|
||||||
|
** Matlab Init :noexport:ignore:
|
||||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
|
#+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
|
#+end_src
|
||||||
@ -50,84 +51,57 @@ The goal is to study the benefits of using a cubic configuration:
|
|||||||
simulinkproject('./');
|
simulinkproject('./');
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* TODO Configuration Analysis - Stiffness Matrix
|
|
||||||
** Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center
|
** Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center
|
||||||
We create a cubic Stewart platform (figure [[fig:3d-cubic-stewart-aligned]]) in such a way that the center of the cube (black dot) is located at the center of the Stewart platform (blue dot).
|
We create a cubic Stewart platform (figure [[fig:3d-cubic-stewart-aligned]]) in such a way that the center of the cube (black dot) is located at the center of the Stewart platform (blue dot).
|
||||||
The Jacobian matrix is estimated at the location of the center of the cube.
|
The Jacobian matrix is estimated at the location of the center of the cube.
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart = initializeFramesPositions('H', 100e-3, 'MO_B', -50e-3);
|
||||||
|
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
|
||||||
|
stewart = computeJointsPose(stewart);
|
||||||
|
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
|
||||||
|
stewart = computeJacobian(stewart);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+name: fig:3d-cubic-stewart-aligned
|
#+name: fig:3d-cubic-stewart-aligned
|
||||||
#+caption: Centered cubic configuration
|
#+caption: Centered cubic configuration
|
||||||
[[file:./figs/3d-cubic-stewart-aligned.png]]
|
[[file:./figs/3d-cubic-stewart-aligned.png]]
|
||||||
|
|
||||||
#+begin_src matlab :results silent
|
#+begin_src matlab :exports results :results value table replace :tangle no
|
||||||
opts = struct(...
|
data2orgtable(stewart.K, {}, {}, ' %.2g ');
|
||||||
'H_tot', 100, ... % Total height of the Hexapod [mm]
|
|
||||||
'L', 200/sqrt(3), ... % Size of the Cube [mm]
|
|
||||||
'H', 60, ... % Height between base joints and platform joints [mm]
|
|
||||||
'H0', 200/2-60/2 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
|
||||||
);
|
|
||||||
stewart = initializeCubicConfiguration(opts);
|
|
||||||
opts = struct(...
|
|
||||||
'Jd_pos', [0, 0, -50], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
|
||||||
'Jf_pos', [0, 0, -50] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
|
||||||
);
|
|
||||||
stewart = computeGeometricalProperties(stewart, opts);
|
|
||||||
|
|
||||||
save('./mat/stewart.mat', 'stewart');
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab :results none :exports code
|
|
||||||
K = stewart.Jf'*stewart.Jf;
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab :results value table :exports results
|
|
||||||
data = K;
|
|
||||||
data2orgtable(data, {}, {}, ' %.2g ');
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
| 2 | 1.9e-18 | -2.3e-17 | 1.8e-18 | 5.5e-17 | -1.5e-17 |
|
| 2 | 0 | -2.5e-16 | 0 | 2.1e-17 | 0 |
|
||||||
| 1.9e-18 | 2 | 6.8e-18 | -6.1e-17 | -1.6e-18 | 4.8e-18 |
|
| 0 | 2 | 0 | -7.8e-19 | 0 | 0 |
|
||||||
| -2.3e-17 | 6.8e-18 | 2 | -6.7e-18 | 4.9e-18 | 5.3e-19 |
|
| -2.5e-16 | 0 | 2 | -2.4e-18 | -1.4e-17 | 0 |
|
||||||
| 1.8e-18 | -6.1e-17 | -6.7e-18 | 0.0067 | -2.3e-20 | -6.1e-20 |
|
| 0 | -7.8e-19 | -2.4e-18 | 0.015 | -4.3e-19 | 1.7e-18 |
|
||||||
| 5.5e-17 | -1.6e-18 | 4.9e-18 | -2.3e-20 | 0.0067 | 1e-18 |
|
| 1.8e-17 | 0 | -1.1e-17 | 0 | 0.015 | 0 |
|
||||||
| -1.5e-17 | 4.8e-18 | 5.3e-19 | -6.1e-20 | 1e-18 | 0.027 |
|
| 6.6e-18 | -3.3e-18 | 0 | 1.7e-18 | 0 | 0.06 |
|
||||||
|
|
||||||
** Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center
|
** Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center
|
||||||
We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure [[fig:3d-cubic-stewart-aligned]]).
|
We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure [[fig:3d-cubic-stewart-aligned]]).
|
||||||
The Jacobian matrix is not estimated at the location of the center of the cube.
|
The Jacobian matrix is not estimated at the location of the center of the cube.
|
||||||
|
|
||||||
#+begin_src matlab :results silent
|
#+begin_src matlab
|
||||||
opts = struct(...
|
stewart = initializeFramesPositions('H', 100e-3, 'MO_B', 0);
|
||||||
'H_tot', 100, ... % Total height of the Hexapod [mm]
|
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
|
||||||
'L', 200/sqrt(3), ... % Size of the Cube [mm]
|
stewart = computeJointsPose(stewart);
|
||||||
'H', 60, ... % Height between base joints and platform joints [mm]
|
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
|
||||||
'H0', 200/2-60/2 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
stewart = computeJacobian(stewart);
|
||||||
);
|
|
||||||
stewart = initializeCubicConfiguration(opts);
|
|
||||||
opts = struct(...
|
|
||||||
'Jd_pos', [0, 0, 0], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
|
||||||
'Jf_pos', [0, 0, 0] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
|
||||||
);
|
|
||||||
stewart = computeGeometricalProperties(stewart, opts);
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none :exports code
|
#+begin_src matlab :exports results :results value table replace :tangle no
|
||||||
K = stewart.Jf'*stewart.Jf;
|
data2orgtable(stewart.K, {}, {}, ' %.2g ');
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab :results value table :exports results
|
|
||||||
data = K;
|
|
||||||
data2orgtable(data', {}, {}, ' %.2g ');
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
| 2 | 1.9e-18 | -2.3e-17 | 1.5e-18 | -0.1 | -1.5e-17 |
|
| 2 | 0 | -2.5e-16 | 1.4e-17 | -0.1 | 0 |
|
||||||
| 1.9e-18 | 2 | 6.8e-18 | 0.1 | -1.6e-18 | 4.8e-18 |
|
| 0 | 2 | 0 | 0.1 | 0 | 0 |
|
||||||
| -2.3e-17 | 6.8e-18 | 2 | -5.1e-19 | -5.5e-18 | 5.3e-19 |
|
| -2.5e-16 | 0 | 2 | 3.4e-18 | -1.4e-17 | 0 |
|
||||||
| 1.5e-18 | 0.1 | -5.1e-19 | 0.012 | -3e-19 | 3.1e-19 |
|
| 1.4e-17 | 0.1 | 3.4e-18 | 0.02 | 1.1e-20 | 3.4e-18 |
|
||||||
| -0.1 | -1.6e-18 | -5.5e-18 | -3e-19 | 0.012 | 1.9e-18 |
|
| -0.1 | 0 | -1.4e-17 | 1.4e-19 | 0.02 | -1.7e-18 |
|
||||||
| -1.5e-17 | 4.8e-18 | 5.3e-19 | 3.1e-19 | 1.9e-18 | 0.027 |
|
| 6.6e-18 | -3.3e-18 | 0 | 3.6e-18 | -1.7e-18 | 0.06 |
|
||||||
|
|
||||||
** Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center
|
** Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center
|
||||||
Here, the "center" of the Stewart platform is not at the cube center (figure [[fig:3d-cubic-stewart-misaligned]]).
|
Here, the "center" of the Stewart platform is not at the cube center (figure [[fig:3d-cubic-stewart-misaligned]]).
|
||||||
@ -137,42 +111,25 @@ The Jacobian is estimated at the cube center.
|
|||||||
#+caption: Not centered cubic configuration
|
#+caption: Not centered cubic configuration
|
||||||
[[file:./figs/3d-cubic-stewart-misaligned.png]]
|
[[file:./figs/3d-cubic-stewart-misaligned.png]]
|
||||||
|
|
||||||
The center of the cube is at $z = 110$.
|
#+begin_src matlab
|
||||||
The Stewart platform is from $z = H_0 = 75$ to $z = H_0 + H_{tot} = 175$.
|
stewart = initializeFramesPositions('H', 80e-3, 'MO_B', -40e-3);
|
||||||
The center height of the Stewart platform is then at $z = \frac{175-75}{2} = 50$.
|
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
|
||||||
The center of the cube from the top platform is at $z = 110 - 175 = -65$.
|
stewart = computeJointsPose(stewart);
|
||||||
|
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
|
||||||
#+begin_src matlab :results silent
|
stewart = computeJacobian(stewart);
|
||||||
opts = struct(...
|
|
||||||
'H_tot', 100, ... % Total height of the Hexapod [mm]
|
|
||||||
'L', 220/sqrt(3), ... % Size of the Cube [mm]
|
|
||||||
'H', 60, ... % Height between base joints and platform joints [mm]
|
|
||||||
'H0', 75 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
|
||||||
);
|
|
||||||
stewart = initializeCubicConfiguration(opts);
|
|
||||||
opts = struct(...
|
|
||||||
'Jd_pos', [0, 0, -65], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
|
||||||
'Jf_pos', [0, 0, -65] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
|
||||||
);
|
|
||||||
stewart = computeGeometricalProperties(stewart, opts);
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none :exports code
|
#+begin_src matlab :exports results :results value table replace :tangle no
|
||||||
K = stewart.Jf'*stewart.Jf;
|
data2orgtable(stewart.K, {}, {}, ' %.2g ');
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab :results value table :exports results
|
|
||||||
data = K;
|
|
||||||
data2orgtable(data', {}, {}, ' %.2g ');
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
| 2 | -1.8e-17 | 2.6e-17 | 3.3e-18 | 0.04 | 1.7e-19 |
|
| 2 | 0 | -1.5e-16 | 0 | 0.04 | 0 |
|
||||||
| -1.8e-17 | 2 | 1.9e-16 | -0.04 | 2.2e-19 | -5.3e-19 |
|
| 0 | 2 | 0 | -0.04 | 0 | -2.8e-17 |
|
||||||
| 2.6e-17 | 1.9e-16 | 2 | -8.9e-18 | 6.5e-19 | -5.8e-19 |
|
| -1.5e-16 | 0 | 2 | 1.2e-18 | -1e-17 | 0 |
|
||||||
| 3.3e-18 | -0.04 | -8.9e-18 | 0.0089 | -9.3e-20 | 9.8e-20 |
|
| 0 | -0.04 | 1.2e-18 | 0.016 | 0 | 8.7e-19 |
|
||||||
| 0.04 | 2.2e-19 | 6.5e-19 | -9.3e-20 | 0.0089 | -2.4e-18 |
|
| 0.04 | 0 | -6.2e-18 | -1.1e-19 | 0.016 | 8.7e-19 |
|
||||||
| 1.7e-19 | -5.3e-19 | -5.8e-19 | 9.8e-20 | -2.4e-18 | 0.032 |
|
| -3.7e-19 | -2.5e-17 | 0 | 1.2e-18 | 8.7e-19 | 0.06 |
|
||||||
|
|
||||||
We obtain $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$, but the Stiffness matrix is not diagonal.
|
We obtain $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$, but the Stiffness matrix is not diagonal.
|
||||||
|
|
||||||
@ -185,47 +142,71 @@ The Stewart platform is from $z = H_0 = 75$ to $z = H_0 + H_{tot} = 175$.
|
|||||||
The center height of the Stewart platform is then at $z = \frac{175-75}{2} = 50$.
|
The center height of the Stewart platform is then at $z = \frac{175-75}{2} = 50$.
|
||||||
The center of the cube from the top platform is at $z = 110 - 175 = -65$.
|
The center of the cube from the top platform is at $z = 110 - 175 = -65$.
|
||||||
|
|
||||||
#+begin_src matlab :results silent
|
#+begin_src matlab
|
||||||
opts = struct(...
|
stewart = initializeFramesPositions('H', 80e-3, 'MO_B', -30e-3);
|
||||||
'H_tot', 100, ... % Total height of the Hexapod [mm]
|
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0);
|
||||||
'L', 220/sqrt(3), ... % Size of the Cube [mm]
|
stewart = computeJointsPose(stewart);
|
||||||
'H', 60, ... % Height between base joints and platform joints [mm]
|
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
|
||||||
'H0', 75 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
stewart = computeJacobian(stewart);
|
||||||
);
|
|
||||||
stewart = initializeCubicConfiguration(opts);
|
|
||||||
opts = struct(...
|
|
||||||
'Jd_pos', [0, 0, -60], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
|
||||||
'Jf_pos', [0, 0, -60] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
|
||||||
);
|
|
||||||
stewart = computeGeometricalProperties(stewart, opts);
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src matlab :results none :exports code
|
#+begin_src matlab :exports results :results value table replace :tangle no
|
||||||
K = stewart.Jf'*stewart.Jf;
|
data2orgtable(stewart.K, {}, {}, ' %.2g ');
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src matlab :results value table :exports results
|
|
||||||
data = K;
|
|
||||||
data2orgtable(data', {}, {}, ' %.2g ');
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+RESULTS:
|
#+RESULTS:
|
||||||
| 2 | -1.8e-17 | 2.6e-17 | -5.7e-19 | 0.03 | 1.7e-19 |
|
| 2 | 0 | -1.7e-16 | 0 | 4.9e-17 | 0 |
|
||||||
| -1.8e-17 | 2 | 1.9e-16 | -0.03 | 2.2e-19 | -5.3e-19 |
|
| 0 | 2 | 0 | -2.2e-17 | 0 | 2.8e-17 |
|
||||||
| 2.6e-17 | 1.9e-16 | 2 | -1.5e-17 | 6.5e-19 | -5.8e-19 |
|
| -1.7e-16 | 0 | 2 | 1.1e-18 | -1.4e-17 | 1.4e-17 |
|
||||||
| -5.7e-19 | -0.03 | -1.5e-17 | 0.0085 | 4.9e-20 | 1.7e-19 |
|
| 0 | -2.2e-17 | 1.1e-18 | 0.015 | 0 | 3.5e-18 |
|
||||||
| 0.03 | 2.2e-19 | 6.5e-19 | 4.9e-20 | 0.0085 | -1.1e-18 |
|
| 4.4e-17 | 0 | -1.4e-17 | -5.7e-20 | 0.015 | -8.7e-19 |
|
||||||
| 1.7e-19 | -5.3e-19 | -5.8e-19 | 1.7e-19 | -1.1e-18 | 0.032 |
|
| 6.6e-18 | 2.5e-17 | 0 | 3.5e-18 | -8.7e-19 | 0.06 |
|
||||||
|
|
||||||
We obtain $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$, but the Stiffness matrix is not diagonal.
|
We obtain $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$, and the Stiffness matrix is diagonal.
|
||||||
|
|
||||||
** Conclusion
|
** Conclusion
|
||||||
#+begin_important
|
#+begin_important
|
||||||
- The cubic configuration permits to have $k_x = k_y = k_z$ and $k_{\theta\x} = k_{\theta_y}$
|
- The cubic configuration permits to have $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$
|
||||||
- The stiffness matrix $K$ is diagonal for the cubic configuration if the Stewart platform and the cube are centered *and* the Jacobian is estimated at the cube center
|
- The stiffness matrix $K$ is diagonal for the cubic configuration if the Jacobian is estimated at the cube center.
|
||||||
#+end_important
|
#+end_important
|
||||||
|
|
||||||
* TODO Cubic size analysis
|
** Having Cube's center above the top platform
|
||||||
|
Let's say we want to have a decouple dynamics above the top platform.
|
||||||
|
Thus, we want the cube's center to be located above the top center.
|
||||||
|
This is possible, to do so:
|
||||||
|
- The position of the center of the cube should be positioned at A
|
||||||
|
- The Height of the "useful" part of the cube should be at least equal to two times the distance from F to A.
|
||||||
|
It is possible to have small cube, but then to configuration is a little bit strange.
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
stewart = initializeFramesPositions('H', 100e-3, 'MO_B', 50e-3);
|
||||||
|
FOc = stewart.H + stewart.MO_B(3);
|
||||||
|
Hc = 2*(stewart.H + stewart.MO_B(3));
|
||||||
|
stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 10e-3, 'MHb', 10e-3);
|
||||||
|
stewart = computeJointsPose(stewart);
|
||||||
|
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1));
|
||||||
|
stewart = initializeJointDynamics(stewart, 'disable', true);
|
||||||
|
stewart = initializeCylindricalPlatforms(stewart);
|
||||||
|
stewart = initializeCylindricalStruts(stewart);
|
||||||
|
stewart = computeJacobian(stewart);
|
||||||
|
stewart = initializeStewartPose(stewart);
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src matlab :exports results :results value table replace :tangle no
|
||||||
|
data2orgtable(stewart.K, {}, {}, ' %.2g ');
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
| 2 | 0 | -4.6e-16 | 0 | 4e-17 | 0 |
|
||||||
|
| 0 | 2 | 0 | -4.8e-17 | 0 | -3.5e-17 |
|
||||||
|
| -4.6e-16 | 0 | 2 | 1.5e-20 | 4e-17 | 0 |
|
||||||
|
| 0 | -4.8e-17 | 1.5e-20 | 0.00034 | 6.8e-21 | 4.2e-19 |
|
||||||
|
| 4e-17 | 0 | 4e-17 | -3e-21 | 0.00034 | -2.7e-20 |
|
||||||
|
| -1.7e-19 | -3.6e-17 | 0 | 4.2e-19 | -2.7e-20 | 0.0014 |
|
||||||
|
|
||||||
|
We obtain $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$, but the Stiffness matrix is not diagonal.
|
||||||
|
|
||||||
|
* TODO Cubic size analysis :noexport:
|
||||||
We here study the effect of the size of the cube used for the Stewart configuration.
|
We here study the effect of the size of the cube used for the Stewart configuration.
|
||||||
|
|
||||||
We fix the height of the Stewart platform, the center of the cube is at the center of the Stewart platform.
|
We fix the height of the Stewart platform, the center of the cube is at the center of the Stewart platform.
|
||||||
@ -260,7 +241,6 @@ We only vary the size of the cube.
|
|||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
|
||||||
The Stiffness matrix is computed for all generated Stewart platforms.
|
The Stiffness matrix is computed for all generated Stewart platforms.
|
||||||
#+begin_src matlab :results none :exports code
|
#+begin_src matlab :results none :exports code
|
||||||
Ks = zeros(6, 6, length(H_cube));
|
Ks = zeros(6, 6, length(H_cube));
|
||||||
@ -355,8 +335,8 @@ This Matlab function is accessible [[file:src/generateCubicConfiguration.m][here
|
|||||||
stewart
|
stewart
|
||||||
args.Hc (1,1) double {mustBeNumeric, mustBePositive} = 60e-3
|
args.Hc (1,1) double {mustBeNumeric, mustBePositive} = 60e-3
|
||||||
args.FOc (1,1) double {mustBeNumeric} = 50e-3
|
args.FOc (1,1) double {mustBeNumeric} = 50e-3
|
||||||
args.FHa (1,1) double {mustBeNumeric, mustBePositive} = 15e-3
|
args.FHa (1,1) double {mustBeNumeric, mustBeNonnegative} = 15e-3
|
||||||
args.MHb (1,1) double {mustBeNumeric, mustBePositive} = 15e-3
|
args.MHb (1,1) double {mustBeNumeric, mustBeNonnegative} = 15e-3
|
||||||
end
|
end
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
@ -21,8 +21,8 @@ arguments
|
|||||||
stewart
|
stewart
|
||||||
args.Hc (1,1) double {mustBeNumeric, mustBePositive} = 60e-3
|
args.Hc (1,1) double {mustBeNumeric, mustBePositive} = 60e-3
|
||||||
args.FOc (1,1) double {mustBeNumeric} = 50e-3
|
args.FOc (1,1) double {mustBeNumeric} = 50e-3
|
||||||
args.FHa (1,1) double {mustBeNumeric, mustBePositive} = 15e-3
|
args.FHa (1,1) double {mustBeNumeric, mustBeNonnegative} = 15e-3
|
||||||
args.MHb (1,1) double {mustBeNumeric, mustBePositive} = 15e-3
|
args.MHb (1,1) double {mustBeNumeric, mustBeNonnegative} = 15e-3
|
||||||
end
|
end
|
||||||
|
|
||||||
sx = [ 2; -1; -1];
|
sx = [ 2; -1; -1];
|
||||||
|
Loading…
Reference in New Issue
Block a user