Different Cubic Architecture study
@ -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 “center” of the Stewart platform is not at the cube center (figure <a href="#org97b319c">4</a>).
|
Here, the “center” 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’s center above the top platform</h3>
|
<h3 id="org8afa645"><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">
|
<div class="outline-text-3" id="text-1-6">
|
||||||
<p>
|
<p>
|
||||||
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:
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Let’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’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 “useful” 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’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>
|
||||||
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
BIN
docs/figs/stewart_cubic_conf_type_1.pdf
Normal file
BIN
docs/figs/stewart_cubic_conf_type_1.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
docs/figs/stewart_cubic_conf_type_2.pdf
Normal file
BIN
docs/figs/stewart_cubic_conf_type_2.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
docs/figs/stewart_cubic_conf_type_3.pdf
Normal file
BIN
docs/figs/stewart_cubic_conf_type_3.png
Normal file
After Width: | Height: | Size: 33 KiB |
@ -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.
|
||||||
|