Different Cubic Architecture study

This commit is contained in:
Thomas Dehaeze 2020-02-12 10:22:51 +01:00
parent 9659e5a507
commit 747fe5549c
16 changed files with 581 additions and 189 deletions

View File

@ -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-11 mar. 17:52 --> <!-- 2020-02-12 mer. 10: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>
@ -299,20 +299,29 @@ for the JavaScript code in this tag.
<p> <p>
The discovery of the Cubic configuration is done in <a class='org-ref-reference' href="#geng94_six_degree_of_freed_activ">geng94_six_degree_of_freed_activ</a>. The discovery of the Cubic configuration is done in <a class='org-ref-reference' href="#geng94_six_degree_of_freed_activ">geng94_six_degree_of_freed_activ</a>.
Further analysis is conducted in
</p> </p>
<p> <p>
The specificity of the Cubic configuration is that each actuator is orthogonal with the others. The specificity of the Cubic configuration is that each actuator is orthogonal with the others:
</p> </p>
<blockquote>
<p>
the active struts are arranged in a mutually orthogonal configuration connecting the corners of a cube.
</p>
</blockquote>
<p> <p>
The cubic (or orthogonal) configuration of the Stewart platform is now widely used (<a class='org-ref-reference' href="#preumont07_six_axis_singl_stage_activ">preumont07_six_axis_singl_stage_activ</a>,<a class='org-ref-reference' href="#jafari03_orthog_gough_stewar_platf_microm">jafari03_orthog_gough_stewar_platf_microm</a>). The cubic (or orthogonal) configuration of the Stewart platform is now widely used (<a class='org-ref-reference' href="#preumont07_six_axis_singl_stage_activ">preumont07_six_axis_singl_stage_activ</a>,<a class='org-ref-reference' href="#jafari03_orthog_gough_stewar_platf_microm">jafari03_orthog_gough_stewar_platf_microm</a>).
</p> </p>
<p> <p>
According to <a class='org-ref-reference' href="#preumont07_six_axis_singl_stage_activ">preumont07_six_axis_singl_stage_activ</a>, the cubic configuration provides a uniform stiffness in all directions and <b>minimizes the crosscoupling</b> from actuator to sensor of different legs (being orthogonal to each other). According to <a class='org-ref-reference' href="#preumont07_six_axis_singl_stage_activ">preumont07_six_axis_singl_stage_activ</a>:
</p> </p>
<blockquote>
<p>
This topology provides a uniform control capability and a uniform stiffness in all directions, and it minimizes the cross-coupling amongst actuators and sensors of different legs (being orthogonal to each other).
</p>
</blockquote>
<p> <p>
To generate and study the Cubic configuration, <code>generateCubicConfiguration</code> is used (description in section <a href="#orga8311d3">2.1</a>). To generate and study the Cubic configuration, <code>generateCubicConfiguration</code> is used (description in section <a href="#orga8311d3">2.1</a>).
@ -327,7 +336,37 @@ The goal is to study the benefits of using a cubic configuration:
<div id="outline-container-org8c6677e" class="outline-2"> <div id="outline-container-org8c6677e" class="outline-2">
<h2 id="org8c6677e"><span class="section-number-2">1</span> Configuration Analysis - Stiffness Matrix</h2> <h2 id="org8c6677e"><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">
<p>
First, we have to understand what is the physical meaning of the Stiffness matrix \(\bm{K}\).
</p>
<p>
The Stiffness matrix links forces \(\bm{f}\) and torques \(\bm{n}\) applied on the mobile platform at \(\{B\}\) to the displacement \(\Delta\bm{\mathcal{X}}\) of the mobile platform represented by \(\{B\}\) with respect to \(\{A\}\):
\[ \bm{\mathcal{F}} = \bm{K} \Delta\bm{\mathcal{X}} \]
</p>
<p>
with:
</p>
<ul class="org-ul">
<li>\(\bm{\mathcal{F}} = [\bm{f}\ \bm{n}]^{T}\)</li>
<li>\(\Delta\bm{\mathcal{X}} = [\delta x, \delta y, \delta z, \delta \theta_{x}, \delta \theta_{y}, \delta \theta_{z}]^{T}\)</li>
</ul>
<p>
If the stiffness matrix is inversible, its inverse is the compliance matrix: \(\bm{C} = \bm{K}^{-1\) and:
\[ \Delta \bm{\mathcal{X}} = C \bm{\mathcal{F}} \]
</p>
<p>
Thus, if the stiffness matrix is diagonal, the compliance matrix is also diagonal and a force (resp. torque) \(\bm{\mathcal{F}}_i\) applied on the mobile platform at \(\{B\}\) will induce a pure translation (resp. rotation) of the mobile platform represented by \(\{B\}\) with respect to \(\{A\}\).
</p>
<p>
One has to note that this is only valid in a static way.
</p>
</div> </div>
<div id="outline-container-orgf6f7ad2" class="outline-3"> <div id="outline-container-orgf6f7ad2" class="outline-3">
<h3 id="orgf6f7ad2"><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="orgf6f7ad2"><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">
@ -336,12 +375,20 @@ We create a cubic Stewart platform (figure <a href="#org9454f54">1</a>) in such
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">H = 100e<span class="org-type">-</span>3; <span class="org-comment">% height of the Stewart platform [m]</span>
MO_B = <span class="org-type">-</span>H<span class="org-type">/</span>2; <span class="org-comment">% Position {B} with respect to {M} [m]</span>
Hc = H; <span class="org-comment">% Size of the useful part of the cube [m]</span>
FOc = H <span class="org-type">+</span> MO_B; <span class="org-comment">% Center of the cube with respect to {F}</span>
</pre>
</div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, <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 = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, H, <span class="org-string">'MO_B'</span>, MO_B);
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 = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, Hc, <span class="org-string">'FOc'</span>, FOc, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1)); stewart = initializeStrutDynamics(stewart, <span class="org-string">'K'</span>, ones(6,1));
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'</span>, 175e<span class="org-type">-</span>3, <span class="org-string">'Mpr'</span>, 150e<span class="org-type">-</span>3); stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'</span>, 175e<span class="org-type">-</span>3, <span class="org-string">'Mpr'</span>, 150e<span class="org-type">-</span>3);
</pre> </pre>
@ -444,12 +491,20 @@ We create a cubic Stewart platform with center of the cube located at the center
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">
<pre class="src src-matlab">H = 100e<span class="org-type">-</span>3; <span class="org-comment">% height of the Stewart platform [m]</span>
MO_B = 20e<span class="org-type">-</span>3; <span class="org-comment">% Position {B} with respect to {M} [m]</span>
Hc = H; <span class="org-comment">% Size of the useful part of the cube [m]</span>
FOc = H<span class="org-type">/</span>2; <span class="org-comment">% Center of the cube with respect to {F}</span>
</pre>
</div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 0); stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, H, <span class="org-string">'MO_B'</span>, MO_B);
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 = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, Hc, <span class="org-string">'FOc'</span>, FOc, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1)); stewart = initializeStrutDynamics(stewart, <span class="org-string">'K'</span>, ones(6,1));
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'</span>, 175e<span class="org-type">-</span>3, <span class="org-string">'Mpr'</span>, 150e<span class="org-type">-</span>3); stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'</span>, 175e<span class="org-type">-</span>3, <span class="org-string">'Mpr'</span>, 150e<span class="org-type">-</span>3);
</pre> </pre>
@ -483,8 +538,8 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<td class="org-right">2</td> <td class="org-right">2</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-2.5e-16</td> <td class="org-right">-2.5e-16</td>
<td class="org-right">1.4e-17</td> <td class="org-right">0</td>
<td class="org-right">-0.1</td> <td class="org-right">-0.14</td>
<td class="org-right">0</td> <td class="org-right">0</td>
</tr> </tr>
@ -492,7 +547,7 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">2</td> <td class="org-right">2</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">0.1</td> <td class="org-right">0.14</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">0</td> <td class="org-right">0</td>
</tr> </tr>
@ -501,35 +556,35 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<td class="org-right">-2.5e-16</td> <td class="org-right">-2.5e-16</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">2</td> <td class="org-right">2</td>
<td class="org-right">3.4e-18</td> <td class="org-right">-5.3e-19</td>
<td class="org-right">-1.4e-17</td> <td class="org-right">0</td>
<td class="org-right">0</td> <td class="org-right">0</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">1.4e-17</td> <td class="org-right">0</td>
<td class="org-right">0.1</td> <td class="org-right">0.14</td>
<td class="org-right">3.4e-18</td> <td class="org-right">-5.3e-19</td>
<td class="org-right">0.02</td> <td class="org-right">0.025</td>
<td class="org-right">1.1e-20</td> <td class="org-right">0</td>
<td class="org-right">3.4e-18</td> <td class="org-right">8.7e-19</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">-0.1</td> <td class="org-right">-0.14</td>
<td class="org-right">0</td>
<td class="org-right">2.6e-18</td>
<td class="org-right">1.6e-19</td>
<td class="org-right">0.025</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-1.4e-17</td>
<td class="org-right">1.4e-19</td>
<td class="org-right">0.02</td>
<td class="org-right">-1.7e-18</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">6.6e-18</td> <td class="org-right">6.6e-18</td>
<td class="org-right">-3.3e-18</td> <td class="org-right">-3.3e-18</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">3.6e-18</td> <td class="org-right">8.9e-19</td>
<td class="org-right">-1.7e-18</td> <td class="org-right">0</td>
<td class="org-right">0.06</td> <td class="org-right">0.06</td>
</tr> </tr>
</tbody> </tbody>
@ -541,23 +596,24 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<h3 id="orge02ec88"><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="orge02ec88"><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 &ldquo;center&rdquo; of the Stewart platform is not at the cube center (figure <a href="#org97b319c">4</a>). Here, the &ldquo;center&rdquo; of the Stewart platform is not at the cube center (figure <a href="#org0235d3a">4</a>).
The Jacobian is estimated at the cube center. The Jacobian is estimated at the cube center.
</p> </p>
<div class="org-src-container">
<div id="org97b319c" class="figure"> <pre class="src src-matlab">H = 80e<span class="org-type">-</span>3; <span class="org-comment">% height of the Stewart platform [m]</span>
<p><img src="figs/3d-cubic-stewart-misaligned.png" alt="3d-cubic-stewart-misaligned.png" /> MO_B = <span class="org-type">-</span>30e<span class="org-type">-</span>3; <span class="org-comment">% Position {B} with respect to {M} [m]</span>
</p> Hc = 100e<span class="org-type">-</span>3; <span class="org-comment">% Size of the useful part of the cube [m]</span>
<p><span class="figure-number">Figure 4: </span>Not centered cubic configuration</p> FOc = H <span class="org-type">+</span> MO_B; <span class="org-comment">% Center of the cube with respect to {F}</span>
</pre>
</div> </div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, <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); stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, H, <span class="org-string">'MO_B'</span>, MO_B);
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 = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, Hc, <span class="org-string">'FOc'</span>, FOc, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1)); stewart = initializeStrutDynamics(stewart, <span class="org-string">'K'</span>, ones(6,1));
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'</span>, 175e<span class="org-type">-</span>3, <span class="org-string">'Mpr'</span>, 150e<span class="org-type">-</span>3); stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'</span>, 175e<span class="org-type">-</span>3, <span class="org-string">'Mpr'</span>, 150e<span class="org-type">-</span>3);
</pre> </pre>
@ -567,7 +623,7 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<div id="org0235d3a" class="figure"> <div id="org0235d3a" class="figure">
<p><img src="figs/cubic_conf_not_centered_J_center.png" alt="cubic_conf_not_centered_J_center.png" /> <p><img src="figs/cubic_conf_not_centered_J_center.png" alt="cubic_conf_not_centered_J_center.png" />
</p> </p>
<p><span class="figure-number">Figure 5: </span>Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center (<a href="./figs/cubic_conf_not_centered_J_center.png">png</a>, <a href="./figs/cubic_conf_not_centered_J_center.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 4: </span>Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center (<a href="./figs/cubic_conf_not_centered_J_center.png">png</a>, <a href="./figs/cubic_conf_not_centered_J_center.pdf">pdf</a>)</p>
</div> </div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -592,7 +648,7 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-1.7e-16</td> <td class="org-right">-1.7e-16</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">0.02</td> <td class="org-right">4.9e-17</td>
<td class="org-right">0</td> <td class="org-right">0</td>
</tr> </tr>
@ -600,7 +656,7 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">2</td> <td class="org-right">2</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-0.02</td> <td class="org-right">-2.2e-17</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">2.8e-17</td> <td class="org-right">2.8e-17</td>
</tr> </tr>
@ -609,35 +665,35 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<td class="org-right">-1.7e-16</td> <td class="org-right">-1.7e-16</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">2</td> <td class="org-right">2</td>
<td class="org-right">1.2e-19</td> <td class="org-right">1.1e-18</td>
<td class="org-right">-1.4e-17</td> <td class="org-right">-1.4e-17</td>
<td class="org-right">1.4e-17</td> <td class="org-right">1.4e-17</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-0.02</td> <td class="org-right">-2.2e-17</td>
<td class="org-right">1.2e-19</td> <td class="org-right">1.1e-18</td>
<td class="org-right">0.015</td> <td class="org-right">0.015</td>
<td class="org-right">-4.3e-19</td> <td class="org-right">0</td>
<td class="org-right">1.7e-18</td> <td class="org-right">3.5e-18</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">0.02</td> <td class="org-right">4.4e-17</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-7.3e-18</td> <td class="org-right">-1.4e-17</td>
<td class="org-right">-3.3e-21</td> <td class="org-right">-5.7e-20</td>
<td class="org-right">0.015</td> <td class="org-right">0.015</td>
<td class="org-right">0</td> <td class="org-right">-8.7e-19</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">6.6e-18</td> <td class="org-right">6.6e-18</td>
<td class="org-right">2.5e-17</td> <td class="org-right">2.5e-17</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">2e-18</td> <td class="org-right">3.5e-18</td>
<td class="org-right">0</td> <td class="org-right">-8.7e-19</td>
<td class="org-right">0.06</td> <td class="org-right">0.06</td>
</tr> </tr>
</tbody> </tbody>
@ -664,14 +720,22 @@ 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\).
</p> </p>
<div class="org-src-container">
<pre class="src src-matlab">H = 100e<span class="org-type">-</span>3; <span class="org-comment">% height of the Stewart platform [m]</span>
MO_B = <span class="org-type">-</span>H<span class="org-type">/</span>2; <span class="org-comment">% Position {B} with respect to {M} [m]</span>
Hc = 1.5<span class="org-type">*</span>H; <span class="org-comment">% Size of the useful part of the cube [m]</span>
FOc = H<span class="org-type">/</span>2 <span class="org-type">+</span> 10e<span class="org-type">-</span>3; <span class="org-comment">% Center of the cube with respect to {F}</span>
</pre>
</div>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, <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); stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, H, <span class="org-string">'MO_B'</span>, MO_B);
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 = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, Hc, <span class="org-string">'FOc'</span>, FOc, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1)); stewart = initializeStrutDynamics(stewart, <span class="org-string">'K'</span>, ones(6,1));
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'</span>, 175e<span class="org-type">-</span>3, <span class="org-string">'Mpr'</span>, 150e<span class="org-type">-</span>3); stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'</span>, 215e<span class="org-type">-</span>3, <span class="org-string">'Mpr'</span>, 195e<span class="org-type">-</span>3);
</pre> </pre>
</div> </div>
@ -679,7 +743,7 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<div id="orgbe766b3" class="figure"> <div id="orgbe766b3" class="figure">
<p><img src="figs/cubic_conf_not_centered_J_stewart_center.png" alt="cubic_conf_not_centered_J_stewart_center.png" /> <p><img src="figs/cubic_conf_not_centered_J_stewart_center.png" alt="cubic_conf_not_centered_J_stewart_center.png" />
</p> </p>
<p><span class="figure-number">Figure 6: </span>Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center (<a href="./figs/cubic_conf_not_centered_J_stewart_center.png">png</a>, <a href="./figs/cubic_conf_not_centered_J_stewart_center.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 5: </span>Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center (<a href="./figs/cubic_conf_not_centered_J_stewart_center.png">png</a>, <a href="./figs/cubic_conf_not_centered_J_stewart_center.pdf">pdf</a>)</p>
</div> </div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -702,7 +766,7 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<tr> <tr>
<td class="org-right">2</td> <td class="org-right">2</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-1.7e-16</td> <td class="org-right">1.5e-16</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">0.02</td> <td class="org-right">0.02</td>
<td class="org-right">0</td> <td class="org-right">0</td>
@ -714,43 +778,43 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-0.02</td> <td class="org-right">-0.02</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">2.8e-17</td> <td class="org-right">0</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">-1.7e-16</td> <td class="org-right">1.5e-16</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">2</td> <td class="org-right">2</td>
<td class="org-right">1.2e-19</td> <td class="org-right">-3e-18</td>
<td class="org-right">-1.4e-17</td> <td class="org-right">-2.8e-17</td>
<td class="org-right">1.4e-17</td> <td class="org-right">0</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-0.02</td> <td class="org-right">-0.02</td>
<td class="org-right">1.2e-19</td> <td class="org-right">-3e-18</td>
<td class="org-right">0.015</td> <td class="org-right">0.034</td>
<td class="org-right">-4.3e-19</td> <td class="org-right">-8.7e-19</td>
<td class="org-right">1.7e-18</td> <td class="org-right">5.2e-18</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">0.02</td> <td class="org-right">0.02</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-7.3e-18</td> <td class="org-right">-2.2e-17</td>
<td class="org-right">-3.3e-21</td> <td class="org-right">-4.4e-19</td>
<td class="org-right">0.015</td> <td class="org-right">0.034</td>
<td class="org-right">0</td> <td class="org-right">0</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">6.6e-18</td> <td class="org-right">5.9e-18</td>
<td class="org-right">2.5e-17</td> <td class="org-right">-7.5e-18</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">2e-18</td> <td class="org-right">3.5e-18</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">0.06</td> <td class="org-right">0.14</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -761,6 +825,9 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<h3 id="orgd35acc0"><span class="section-number-3">1.5</span> Conclusion</h3> <h3 id="orgd35acc0"><span class="section-number-3">1.5</span> Conclusion</h3>
<div class="outline-text-3" id="text-1-5"> <div class="outline-text-3" id="text-1-5">
<div class="important"> <div class="important">
<p>
Here are the conclusion about the Stiffness matrix for the Cubic configuration:
</p>
<ul class="org-ul"> <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 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> <li>The stiffness matrix \(K\) is diagonal for the cubic configuration if the Jacobian is estimated at the cube center.</li>
@ -774,32 +841,47 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<h3 id="org8afa645"><span class="section-number-3">1.6</span> Having Cube&rsquo;s center above the top platform</h3> <h3 id="org8afa645"><span class="section-number-3">1.6</span> Having Cube&rsquo;s center above the top platform</h3>
<div class="outline-text-3" id="text-1-6"> <div class="outline-text-3" id="text-1-6">
<p> <p>
Let&rsquo;s say we want to have a decouple dynamics above the top platform. Let&rsquo;s say we want to have a diagonal stiffness matrix when \(\{A\}\) and \(\{B\}\) are located above the top platform.
Thus, we want the cube&rsquo;s center to be located above the top center. Thus, we want the cube&rsquo;s center to be located above the top center.
This is possible, to do so: </p>
<p>
Let&rsquo;s fix the Height of the Stewart platform and the position of frames \(\{A\}\) and \(\{B\}\):
</p>
<div class="org-src-container">
<pre class="src src-matlab">H = 100e<span class="org-type">-</span>3; <span class="org-comment">% height of the Stewart platform [m]</span>
MO_B = 20e<span class="org-type">-</span>3; <span class="org-comment">% Position {B} with respect to {M} [m]</span>
</pre>
</div>
<p>
We find the several Cubic configuration for the Stewart platform where the center of the cube is located at frame \(\{A\}\).
The differences between the configuration are the cube&rsquo;s size:
</p> </p>
<ul class="org-ul"> <ul class="org-ul">
<li>The position of the center of the cube should be positioned at A</li> <li>Small Cube Size in Figure <a href="#org105635f">6</a></li>
<li>The Height of the &ldquo;useful&rdquo; part of the cube should be at least equal to two times the distance from F to A. <li>Medium Cube Size in Figure <a href="#org264ab9c">7</a></li>
It is possible to have small cube, but then to configuration is a little bit strange.</li> <li>Large Cube Size in Figure <a href="#org52254fe">8</a></li>
</ul> </ul>
<p>
For each of the configuration, the Stiffness matrix is diagonal with \(k_x = k_y = k_y = 2k\) with \(k\) is the stiffness of each strut.
However, the rotational stiffnesses are increasing with the cube&rsquo;s size but the required size of the platform is also increasing, so there is a trade-off here.
</p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab">Hc = 0.4<span class="org-type">*</span>H; <span class="org-comment">% Size of the useful part of the cube [m]</span>
stewart = initializeFramesPositions(stewart, <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 = H <span class="org-type">+</span> MO_B; <span class="org-comment">% Center of the cube with respect to {F}</span>
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> </pre>
</div> </div>
<div id="org105635f" class="figure">
<p><img src="figs/stewart_cubic_conf_type_1.png" alt="stewart_cubic_conf_type_1.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Cubic Configuration for the Stewart Platform - Small Cube Size (<a href="./figs/stewart_cubic_conf_type_1.png">png</a>, <a href="./figs/stewart_cubic_conf_type_1.pdf">pdf</a>)</p>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -820,9 +902,9 @@ stewart = initializeStewartPose(stewart);
<tr> <tr>
<td class="org-right">2</td> <td class="org-right">2</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-3.2e-16</td> <td class="org-right">-2.8e-16</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">3.1e-16</td> <td class="org-right">2.4e-17</td>
<td class="org-right">0</td> <td class="org-right">0</td>
</tr> </tr>
@ -830,52 +912,222 @@ stewart = initializeStewartPose(stewart);
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">2</td> <td class="org-right">2</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-1.2e-16</td> <td class="org-right">-2.3e-17</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">0</td> <td class="org-right">0</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">-3.2e-16</td> <td class="org-right">-2.8e-16</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">2</td> <td class="org-right">2</td>
<td class="org-right">5e-18</td> <td class="org-right">-2.1e-19</td>
<td class="org-right">-5.6e-17</td> <td class="org-right">0</td>
<td class="org-right">0</td> <td class="org-right">0</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-1.2e-16</td> <td class="org-right">-2.3e-17</td>
<td class="org-right">5e-18</td> <td class="org-right">-2.1e-19</td>
<td class="org-right">0.14</td> <td class="org-right">0.0024</td>
<td class="org-right">3.5e-18</td> <td class="org-right">-5.4e-20</td>
<td class="org-right">1.4e-17</td> <td class="org-right">6.5e-19</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">3e-16</td> <td class="org-right">2.4e-17</td>
<td class="org-right">0</td>
<td class="org-right">4.9e-19</td>
<td class="org-right">-2.3e-20</td>
<td class="org-right">0.0024</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">-5.4e-17</td>
<td class="org-right">2.1e-19</td>
<td class="org-right">0.14</td>
<td class="org-right">-6.9e-18</td>
</tr> </tr>
<tr> <tr>
<td class="org-right">7.4e-19</td> <td class="org-right">-1.2e-18</td>
<td class="org-right">-2.6e-17</td> <td class="org-right">1.1e-18</td>
<td class="org-right">0</td> <td class="org-right">0</td>
<td class="org-right">1.3e-17</td> <td class="org-right">6.2e-19</td>
<td class="org-right">-6.9e-18</td> <td class="org-right">0</td>
<td class="org-right">0.54</td> <td class="org-right">0.0096</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<p> <div class="org-src-container">
We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiffness matrix is not diagonal. <pre class="src src-matlab">Hc = 1.5<span class="org-type">*</span>H; <span class="org-comment">% Size of the useful part of the cube [m]</span>
FOc = H <span class="org-type">+</span> MO_B; <span class="org-comment">% Center of the cube with respect to {F}</span>
</pre>
</div>
<div id="org264ab9c" class="figure">
<p><img src="figs/stewart_cubic_conf_type_2.png" alt="stewart_cubic_conf_type_2.png" />
</p> </p>
<p><span class="figure-number">Figure 7: </span>Cubic Configuration for the Stewart Platform - Medium Cube Size (<a href="./figs/stewart_cubic_conf_type_2.png">png</a>, <a href="./figs/stewart_cubic_conf_type_2.pdf">pdf</a>)</p>
</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">-1.9e-16</td>
<td class="org-right">0</td>
<td class="org-right">5.6e-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">-7.6e-17</td>
<td class="org-right">0</td>
<td class="org-right">0</td>
</tr>
<tr>
<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.5e-18</td>
<td class="org-right">2.8e-17</td>
<td class="org-right">0</td>
</tr>
<tr>
<td class="org-right">0</td>
<td class="org-right">-7.6e-17</td>
<td class="org-right">2.5e-18</td>
<td class="org-right">0.034</td>
<td class="org-right">8.7e-19</td>
<td class="org-right">8.7e-18</td>
</tr>
<tr>
<td class="org-right">5.7e-17</td>
<td class="org-right">0</td>
<td class="org-right">3.2e-17</td>
<td class="org-right">2.9e-19</td>
<td class="org-right">0.034</td>
<td class="org-right">0</td>
</tr>
<tr>
<td class="org-right">-1e-18</td>
<td class="org-right">-1.3e-17</td>
<td class="org-right">5.6e-17</td>
<td class="org-right">8.4e-18</td>
<td class="org-right">0</td>
<td class="org-right">0.14</td>
</tr>
</tbody>
</table>
<div class="org-src-container">
<pre class="src src-matlab">Hc = 2.5<span class="org-type">*</span>H; <span class="org-comment">% Size of the useful part of the cube [m]</span>
FOc = H <span class="org-type">+</span> MO_B; <span class="org-comment">% Center of the cube with respect to {F}</span>
</pre>
</div>
<div id="org52254fe" class="figure">
<p><img src="figs/stewart_cubic_conf_type_3.png" alt="stewart_cubic_conf_type_3.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Cubic Configuration for the Stewart Platform - Large Cube Size (<a href="./figs/stewart_cubic_conf_type_3.png">png</a>, <a href="./figs/stewart_cubic_conf_type_3.pdf">pdf</a>)</p>
</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">-3e-16</td>
<td class="org-right">0</td>
<td class="org-right">-8.3e-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">-2.2e-17</td>
<td class="org-right">0</td>
<td class="org-right">5.6e-17</td>
</tr>
<tr>
<td class="org-right">-3e-16</td>
<td class="org-right">0</td>
<td class="org-right">2</td>
<td class="org-right">-9.3e-19</td>
<td class="org-right">-2.8e-17</td>
<td class="org-right">0</td>
</tr>
<tr>
<td class="org-right">0</td>
<td class="org-right">-2.2e-17</td>
<td class="org-right">-9.3e-19</td>
<td class="org-right">0.094</td>
<td class="org-right">0</td>
<td class="org-right">2.1e-17</td>
</tr>
<tr>
<td class="org-right">-8e-17</td>
<td class="org-right">0</td>
<td class="org-right">-3e-17</td>
<td class="org-right">-6.1e-19</td>
<td class="org-right">0.094</td>
<td class="org-right">0</td>
</tr>
<tr>
<td class="org-right">-6.2e-18</td>
<td class="org-right">7.2e-17</td>
<td class="org-right">5.6e-17</td>
<td class="org-right">2.3e-17</td>
<td class="org-right">0</td>
<td class="org-right">0.37</td>
</tr>
</tbody>
</table>
</div> </div>
</div> </div>
</div> </div>
@ -934,7 +1186,7 @@ This Matlab function is accessible <a href="../src/generateCubicConfiguration.m"
<div id="org8a7f3d8" class="figure"> <div id="org8a7f3d8" 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 7: </span>Cubic Configuration</p> <p><span class="figure-number">Figure 9: </span>Cubic Configuration</p>
</div> </div>
</div> </div>
</div> </div>
@ -1039,7 +1291,7 @@ stewart.platform_M.Mb = Mb;
</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-11 mar. 17:52</p> <p class="date">Created: 2020-02-12 mer. 10:22</p>
</div> </div>
</body> </body>
</html> </html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -40,13 +40,18 @@
* 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
The specificity of the Cubic configuration is that each actuator is orthogonal with the others. The specificity of the Cubic configuration is that each actuator is orthogonal with the others:
#+begin_quote
the active struts are arranged in a mutually orthogonal configuration connecting the corners of a cube.
#+end_quote
The cubic (or orthogonal) configuration of the Stewart platform is now widely used (cite:preumont07_six_axis_singl_stage_activ,jafari03_orthog_gough_stewar_platf_microm). The cubic (or orthogonal) configuration of the Stewart platform is now widely used (cite:preumont07_six_axis_singl_stage_activ,jafari03_orthog_gough_stewar_platf_microm).
According to cite:preumont07_six_axis_singl_stage_activ, the cubic configuration provides a uniform stiffness in all directions and *minimizes the crosscoupling* from actuator to sensor of different legs (being orthogonal to each other). According to cite:preumont07_six_axis_singl_stage_activ:
#+begin_quote
This topology provides a uniform control capability and a uniform stiffness in all directions, and it minimizes the cross-coupling amongst actuators and sensors of different legs (being orthogonal to each other).
#+end_quote
To generate and study the Cubic configuration, =generateCubicConfiguration= is used (description in section [[sec:generateCubicConfiguration]]). To generate and study the Cubic configuration, =generateCubicConfiguration= is used (description in section [[sec:generateCubicConfiguration]]).
The goal is to study the benefits of using a cubic configuration: The goal is to study the benefits of using a cubic configuration:
@ -55,6 +60,23 @@ The goal is to study the benefits of using a cubic configuration:
- Is the center of the cube an important point? - Is the center of the cube an important point?
* Configuration Analysis - Stiffness Matrix * Configuration Analysis - Stiffness Matrix
** Introduction :ignore:
First, we have to understand what is the physical meaning of the Stiffness matrix $\bm{K}$.
The Stiffness matrix links forces $\bm{f}$ and torques $\bm{n}$ applied on the mobile platform at $\{B\}$ to the displacement $\Delta\bm{\mathcal{X}}$ of the mobile platform represented by $\{B\}$ with respect to $\{A\}$:
\[ \bm{\mathcal{F}} = \bm{K} \Delta\bm{\mathcal{X}} \]
with:
- $\bm{\mathcal{F}} = [\bm{f}\ \bm{n}]^{T}$
- $\Delta\bm{\mathcal{X}} = [\delta x, \delta y, \delta z, \delta \theta_{x}, \delta \theta_{y}, \delta \theta_{z}]^{T}$
If the stiffness matrix is inversible, its inverse is the compliance matrix: $\bm{C} = \bm{K}^{-1$ and:
\[ \Delta \bm{\mathcal{X}} = C \bm{\mathcal{F}} \]
Thus, if the stiffness matrix is diagonal, the compliance matrix is also diagonal and a force (resp. torque) $\bm{\mathcal{F}}_i$ applied on the mobile platform at $\{B\}$ will induce a pure translation (resp. rotation) of the mobile platform represented by $\{B\}$ with respect to $\{A\}$.
One has to note that this is only valid in a static way.
** Matlab Init :noexport:ignore: ** 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>>
@ -72,12 +94,19 @@ The goal is to study the benefits of using a cubic configuration:
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
H = 100e-3; % height of the Stewart platform [m]
MO_B = -H/2; % Position {B} with respect to {M} [m]
Hc = H; % Size of the useful part of the cube [m]
FOc = H + MO_B; % Center of the cube with respect to {F}
#+end_src
#+begin_src matlab #+begin_src matlab
stewart = initializeStewartPlatform(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 100e-3, 'MO_B', -50e-3); stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0); stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1)); stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 175e-3, 'Mpr', 150e-3); stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 175e-3, 'Mpr', 150e-3);
#+end_src #+end_src
@ -88,7 +117,7 @@ The Jacobian matrix is estimated at the location of the center of the cube.
#+begin_src matlab :exports none #+begin_src matlab :exports none
displayArchitecture(stewart, 'labels', false); displayArchitecture(stewart, 'labels', false);
scatter3(0, 0, 50e-3, 200, 'kh'); scatter3(0, 0, FOc, 200, 'kh');
#+end_src #+end_src
#+header: :tangle no :exports results :results none :noweb yes #+header: :tangle no :exports results :results none :noweb yes
@ -101,7 +130,7 @@ The Jacobian matrix is estimated at the location of the center of the cube.
[[file:figs/cubic_conf_centered_J_center.png]] [[file:figs/cubic_conf_centered_J_center.png]]
#+begin_src matlab :exports results :results value table replace :tangle no #+begin_src matlab :exports results :results value table replace :tangle no
data2orgtable(stewart.K, {}, {}, ' %.2g '); data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
#+end_src #+end_src
#+RESULTS: #+RESULTS:
@ -116,19 +145,26 @@ The Jacobian matrix is estimated at the location of the center of the cube.
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
H = 100e-3; % height of the Stewart platform [m]
MO_B = 20e-3; % Position {B} with respect to {M} [m]
Hc = H; % Size of the useful part of the cube [m]
FOc = H/2; % Center of the cube with respect to {F}
#+end_src
#+begin_src matlab #+begin_src matlab
stewart = initializeStewartPlatform(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 100e-3, 'MO_B', 0); stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0); stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1)); stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 175e-3, 'Mpr', 150e-3); stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 175e-3, 'Mpr', 150e-3);
#+end_src #+end_src
#+begin_src matlab :exports none #+begin_src matlab :exports none
displayArchitecture(stewart, 'labels', false); displayArchitecture(stewart, 'labels', false);
scatter3(0, 0, 50e-3, 200, 'kh'); scatter3(0, 0, FOc, 200, 'kh');
#+end_src #+end_src
#+header: :tangle no :exports results :results none :noweb yes #+header: :tangle no :exports results :results none :noweb yes
@ -141,38 +177,41 @@ The Jacobian matrix is not estimated at the location of the center of the cube.
[[file:figs/cubic_conf_centered_J_not_center.png]] [[file:figs/cubic_conf_centered_J_not_center.png]]
#+begin_src matlab :exports results :results value table replace :tangle no #+begin_src matlab :exports results :results value table replace :tangle no
data2orgtable(stewart.K, {}, {}, ' %.2g '); data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
#+end_src #+end_src
#+RESULTS: #+RESULTS:
| 2 | 0 | -2.5e-16 | 1.4e-17 | -0.1 | 0 | | 2 | 0 | -2.5e-16 | 0 | -0.14 | 0 |
| 0 | 2 | 0 | 0.1 | 0 | 0 | | 0 | 2 | 0 | 0.14 | 0 | 0 |
| -2.5e-16 | 0 | 2 | 3.4e-18 | -1.4e-17 | 0 | | -2.5e-16 | 0 | 2 | -5.3e-19 | 0 | 0 |
| 1.4e-17 | 0.1 | 3.4e-18 | 0.02 | 1.1e-20 | 3.4e-18 | | 0 | 0.14 | -5.3e-19 | 0.025 | 0 | 8.7e-19 |
| -0.1 | 0 | -1.4e-17 | 1.4e-19 | 0.02 | -1.7e-18 | | -0.14 | 0 | 2.6e-18 | 1.6e-19 | 0.025 | 0 |
| 6.6e-18 | -3.3e-18 | 0 | 3.6e-18 | -1.7e-18 | 0.06 | | 6.6e-18 | -3.3e-18 | 0 | 8.9e-19 | 0 | 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:cubic_conf_not_centered_J_center]]).
The Jacobian is estimated at the cube center. The Jacobian is estimated at the cube center.
#+name: fig:3d-cubic-stewart-misaligned #+begin_src matlab
#+caption: Not centered cubic configuration H = 80e-3; % height of the Stewart platform [m]
[[file:figs/3d-cubic-stewart-misaligned.png]] MO_B = -30e-3; % Position {B} with respect to {M} [m]
Hc = 100e-3; % Size of the useful part of the cube [m]
FOc = H + MO_B; % Center of the cube with respect to {F}
#+end_src
#+begin_src matlab #+begin_src matlab
stewart = initializeStewartPlatform(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 80e-3, 'MO_B', -40e-3); stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0); stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1)); stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 175e-3, 'Mpr', 150e-3); stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 175e-3, 'Mpr', 150e-3);
#+end_src #+end_src
#+begin_src matlab :exports none #+begin_src matlab :exports none
displayArchitecture(stewart, 'labels', false); displayArchitecture(stewart, 'labels', false);
scatter3(0, 0, 50e-3, 200, 'kh'); scatter3(0, 0, FOc, 200, 'kh');
#+end_src #+end_src
#+header: :tangle no :exports results :results none :noweb yes #+header: :tangle no :exports results :results none :noweb yes
@ -185,16 +224,16 @@ The Jacobian is estimated at the cube center.
[[file:figs/cubic_conf_not_centered_J_center.png]] [[file:figs/cubic_conf_not_centered_J_center.png]]
#+begin_src matlab :exports results :results value table replace :tangle no #+begin_src matlab :exports results :results value table replace :tangle no
data2orgtable(stewart.K, {}, {}, ' %.2g '); data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
#+end_src #+end_src
#+RESULTS: #+RESULTS:
| 2 | 0 | -1.7e-16 | 0 | 0.02 | 0 | | 2 | 0 | -1.7e-16 | 0 | 4.9e-17 | 0 |
| 0 | 2 | 0 | -0.02 | 0 | 2.8e-17 | | 0 | 2 | 0 | -2.2e-17 | 0 | 2.8e-17 |
| -1.7e-16 | 0 | 2 | 1.2e-19 | -1.4e-17 | 1.4e-17 | | -1.7e-16 | 0 | 2 | 1.1e-18 | -1.4e-17 | 1.4e-17 |
| 0 | -0.02 | 1.2e-19 | 0.015 | -4.3e-19 | 1.7e-18 | | 0 | -2.2e-17 | 1.1e-18 | 0.015 | 0 | 3.5e-18 |
| 0.02 | 0 | -7.3e-18 | -3.3e-21 | 0.015 | 0 | | 4.4e-17 | 0 | -1.4e-17 | -5.7e-20 | 0.015 | -8.7e-19 |
| 6.6e-18 | 2.5e-17 | 0 | 2e-18 | 0 | 0.06 | | 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}$, but the Stiffness matrix is not diagonal.
@ -207,19 +246,26 @@ 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
H = 100e-3; % height of the Stewart platform [m]
MO_B = -H/2; % Position {B} with respect to {M} [m]
Hc = 1.5*H; % Size of the useful part of the cube [m]
FOc = H/2 + 10e-3; % Center of the cube with respect to {F}
#+end_src
#+begin_src matlab #+begin_src matlab
stewart = initializeStewartPlatform(); stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', 80e-3, 'MO_B', -40e-3); stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
stewart = generateCubicConfiguration(stewart, 'Hc', 100e-3, 'FOc', 50e-3, 'FHa', 0, 'MHb', 0); stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, 'Ki', ones(6,1)); stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 175e-3, 'Mpr', 150e-3); stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 215e-3, 'Mpr', 195e-3);
#+end_src #+end_src
#+begin_src matlab :exports none #+begin_src matlab :exports none
displayArchitecture(stewart, 'labels', false); displayArchitecture(stewart, 'labels', false);
scatter3(0, 0, 50e-3, 200, 'kh'); scatter3(0, 0, FOc, 200, 'kh');
#+end_src #+end_src
#+header: :tangle no :exports results :results none :noweb yes #+header: :tangle no :exports results :results none :noweb yes
@ -232,64 +278,158 @@ The center of the cube from the top platform is at $z = 110 - 175 = -65$.
[[file:figs/cubic_conf_not_centered_J_stewart_center.png]] [[file:figs/cubic_conf_not_centered_J_stewart_center.png]]
#+begin_src matlab :exports results :results value table replace :tangle no #+begin_src matlab :exports results :results value table replace :tangle no
data2orgtable(stewart.K, {}, {}, ' %.2g '); data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
#+end_src #+end_src
#+RESULTS: #+RESULTS:
| 2 | 0 | -1.7e-16 | 0 | 0.02 | 0 | | 2 | 0 | 1.5e-16 | 0 | 0.02 | 0 |
| 0 | 2 | 0 | -0.02 | 0 | 2.8e-17 | | 0 | 2 | 0 | -0.02 | 0 | 0 |
| -1.7e-16 | 0 | 2 | 1.2e-19 | -1.4e-17 | 1.4e-17 | | 1.5e-16 | 0 | 2 | -3e-18 | -2.8e-17 | 0 |
| 0 | -0.02 | 1.2e-19 | 0.015 | -4.3e-19 | 1.7e-18 | | 0 | -0.02 | -3e-18 | 0.034 | -8.7e-19 | 5.2e-18 |
| 0.02 | 0 | -7.3e-18 | -3.3e-21 | 0.015 | 0 | | 0.02 | 0 | -2.2e-17 | -4.4e-19 | 0.034 | 0 |
| 6.6e-18 | 2.5e-17 | 0 | 2e-18 | 0 | 0.06 | | 5.9e-18 | -7.5e-18 | 0 | 3.5e-18 | 0 | 0.14 |
** Conclusion ** Conclusion
#+begin_important #+begin_important
Here are the conclusion about the Stiffness matrix for the Cubic configuration:
- 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 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
** Having Cube's center above the top platform ** Having Cube's center above the top platform
Let's say we want to have a decouple dynamics above the top platform. Let's say we want to have a diagonal stiffness matrix when $\{A\}$ and $\{B\}$ are located above the top platform.
Thus, we want the cube's center to be located above the top center. 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 Let's fix the Height of the Stewart platform and the position of frames $\{A\}$ and $\{B\}$:
- The Height of the "useful" part of the cube should be at least equal to two times the distance from F to A. #+begin_src matlab
It is possible to have small cube, but then to configuration is a little bit strange. H = 100e-3; % height of the Stewart platform [m]
MO_B = 20e-3; % Position {B} with respect to {M} [m]
#+end_src
We find the several Cubic configuration for the Stewart platform where the center of the cube is located at frame $\{A\}$.
The differences between the configuration are the cube's size:
- Small Cube Size in Figure [[fig:stewart_cubic_conf_type_1]]
- Medium Cube Size in Figure [[fig:stewart_cubic_conf_type_2]]
- Large Cube Size in Figure [[fig:stewart_cubic_conf_type_3]]
For each of the configuration, the Stiffness matrix is diagonal with $k_x = k_y = k_y = 2k$ with $k$ is the stiffness of each strut.
However, the rotational stiffnesses are increasing with the cube's size but the required size of the platform is also increasing, so there is a trade-off here.
#+begin_src matlab #+begin_src matlab
stewart = initializeStewartPlatform(); Hc = 0.4*H; % Size of the useful part of the cube [m]
stewart = initializeFramesPositions(stewart, 'H', 100e-3, 'MO_B', 50e-3); FOc = H + MO_B; % Center of the cube with respect to {F}
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 #+end_src
#+begin_src matlab :exports none #+begin_src matlab :exports none
stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
stewart = computeJacobian(stewart);
stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 1.2*max(vecnorm(stewart.platform_F.Fa)), 'Mpr', 1.2*max(vecnorm(stewart.platform_M.Mb)));
displayArchitecture(stewart, 'labels', false); displayArchitecture(stewart, 'labels', false);
scatter3(0, 0, 50e-3, 200, 'kh'); scatter3(0, 0, FOc, 200, 'kh');
#+end_src #+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/stewart_cubic_conf_type_1.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:stewart_cubic_conf_type_1
#+caption: Cubic Configuration for the Stewart Platform - Small Cube Size ([[./figs/stewart_cubic_conf_type_1.png][png]], [[./figs/stewart_cubic_conf_type_1.pdf][pdf]])
[[file:figs/stewart_cubic_conf_type_1.png]]
#+begin_src matlab :exports results :results value table replace :tangle no #+begin_src matlab :exports results :results value table replace :tangle no
data2orgtable(stewart.K, {}, {}, ' %.2g '); data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
#+end_src #+end_src
#+RESULTS: #+RESULTS:
| 2 | 0 | -3.2e-16 | 0 | 3.1e-16 | 0 | | 2 | 0 | -2.8e-16 | 0 | 2.4e-17 | 0 |
| 0 | 2 | 0 | -1.2e-16 | 0 | 0 | | 0 | 2 | 0 | -2.3e-17 | 0 | 0 |
| -3.2e-16 | 0 | 2 | 5e-18 | -5.6e-17 | 0 | | -2.8e-16 | 0 | 2 | -2.1e-19 | 0 | 0 |
| 0 | -1.2e-16 | 5e-18 | 0.14 | 3.5e-18 | 1.4e-17 | | 0 | -2.3e-17 | -2.1e-19 | 0.0024 | -5.4e-20 | 6.5e-19 |
| 3e-16 | 0 | -5.4e-17 | 2.1e-19 | 0.14 | -6.9e-18 | | 2.4e-17 | 0 | 4.9e-19 | -2.3e-20 | 0.0024 | 0 |
| 7.4e-19 | -2.6e-17 | 0 | 1.3e-17 | -6.9e-18 | 0.54 | | -1.2e-18 | 1.1e-18 | 0 | 6.2e-19 | 0 | 0.0096 |
We obtain $k_x = k_y = k_z$ and $k_{\theta_x} = k_{\theta_y}$, but the Stiffness matrix is not diagonal. #+begin_src matlab
Hc = 1.5*H; % Size of the useful part of the cube [m]
FOc = H + MO_B; % Center of the cube with respect to {F}
#+end_src
#+begin_src matlab :exports none
stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
stewart = computeJacobian(stewart);
stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 1.2*max(vecnorm(stewart.platform_F.Fa)), 'Mpr', 1.2*max(vecnorm(stewart.platform_M.Mb)));
displayArchitecture(stewart, 'labels', false);
scatter3(0, 0, FOc, 200, 'kh');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/stewart_cubic_conf_type_2.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:stewart_cubic_conf_type_2
#+caption: Cubic Configuration for the Stewart Platform - Medium Cube Size ([[./figs/stewart_cubic_conf_type_2.png][png]], [[./figs/stewart_cubic_conf_type_2.pdf][pdf]])
[[file:figs/stewart_cubic_conf_type_2.png]]
#+begin_src matlab :exports results :results value table replace :tangle no
data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
#+end_src
#+RESULTS:
| 2 | 0 | -1.9e-16 | 0 | 5.6e-17 | 0 |
| 0 | 2 | 0 | -7.6e-17 | 0 | 0 |
| -1.9e-16 | 0 | 2 | 2.5e-18 | 2.8e-17 | 0 |
| 0 | -7.6e-17 | 2.5e-18 | 0.034 | 8.7e-19 | 8.7e-18 |
| 5.7e-17 | 0 | 3.2e-17 | 2.9e-19 | 0.034 | 0 |
| -1e-18 | -1.3e-17 | 5.6e-17 | 8.4e-18 | 0 | 0.14 |
#+begin_src matlab
Hc = 2.5*H; % Size of the useful part of the cube [m]
FOc = H + MO_B; % Center of the cube with respect to {F}
#+end_src
#+begin_src matlab :exports none
stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, 'H', H, 'MO_B', MO_B);
stewart = generateCubicConfiguration(stewart, 'Hc', Hc, 'FOc', FOc, 'FHa', 0, 'MHb', 0);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, 'K', ones(6,1));
stewart = computeJacobian(stewart);
stewart = initializeCylindricalPlatforms(stewart, 'Fpr', 1.2*max(vecnorm(stewart.platform_F.Fa)), 'Mpr', 1.2*max(vecnorm(stewart.platform_M.Mb)));
displayArchitecture(stewart, 'labels', false);
scatter3(0, 0, FOc, 200, 'kh');
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/stewart_cubic_conf_type_3.pdf" :var figsize="full-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:stewart_cubic_conf_type_3
#+caption: Cubic Configuration for the Stewart Platform - Large Cube Size ([[./figs/stewart_cubic_conf_type_3.png][png]], [[./figs/stewart_cubic_conf_type_3.pdf][pdf]])
[[file:figs/stewart_cubic_conf_type_3.png]]
#+begin_src matlab :exports results :results value table replace :tangle no
data2orgtable(stewart.kinematics.K, {}, {}, ' %.2g ');
#+end_src
#+RESULTS:
| 2 | 0 | -3e-16 | 0 | -8.3e-17 | 0 |
| 0 | 2 | 0 | -2.2e-17 | 0 | 5.6e-17 |
| -3e-16 | 0 | 2 | -9.3e-19 | -2.8e-17 | 0 |
| 0 | -2.2e-17 | -9.3e-19 | 0.094 | 0 | 2.1e-17 |
| -8e-17 | 0 | -3e-17 | -6.1e-19 | 0.094 | 0 |
| -6.2e-18 | 7.2e-17 | 5.6e-17 | 2.3e-17 | 0 | 0.37 |
* TODO Cubic size analysis :noexport: * 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.