Estimate Stewart actuator stroke / Stewart maneuverability relationship
This commit is contained in:
parent
7fb03f7b90
commit
dda9ce734a
@ -3,7 +3,7 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2019-03-25 lun. 18:11 -->
|
||||
<!-- 2019-03-26 mar. 08:47 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Cubic configuration for the Stewart Platform</title>
|
||||
@ -275,33 +275,33 @@ for the JavaScript code in this tag.
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgec4f5e2">1. Questions we wish to answer with this analysis</a></li>
|
||||
<li><a href="#orgef11581">2. Configuration Analysis - Stiffness Matrix</a>
|
||||
<li><a href="#org43e3f4a">1. Questions we wish to answer with this analysis</a></li>
|
||||
<li><a href="#org9890470">2. Configuration Analysis - Stiffness Matrix</a>
|
||||
<ul>
|
||||
<li><a href="#org4203cad">2.1. Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center</a></li>
|
||||
<li><a href="#org3344772">2.2. Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</a></li>
|
||||
<li><a href="#org52de20d">2.3. Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center</a></li>
|
||||
<li><a href="#orgd7e1449">2.4. Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</a></li>
|
||||
<li><a href="#orgf16b788">2.5. Conclusion</a></li>
|
||||
<li><a href="#org5d80bd3">2.1. Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center</a></li>
|
||||
<li><a href="#orga5ac347">2.2. Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</a></li>
|
||||
<li><a href="#org47743ef">2.3. Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center</a></li>
|
||||
<li><a href="#orgd0daf23">2.4. Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</a></li>
|
||||
<li><a href="#org6729b53">2.5. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orga2cd408">3. Cubic size analysis</a></li>
|
||||
<li><a href="#org9220275">4. initializeCubicConfiguration</a>
|
||||
<li><a href="#org0969b06">3. Cubic size analysis</a></li>
|
||||
<li><a href="#org0f56064">4. initializeCubicConfiguration</a>
|
||||
<ul>
|
||||
<li><a href="#orgdee5436">4.1. Function description</a></li>
|
||||
<li><a href="#org68794ca">4.2. Optional Parameters</a></li>
|
||||
<li><a href="#org93d8028">4.3. Cube Creation</a></li>
|
||||
<li><a href="#org00e16e1">4.4. Vectors of each leg</a></li>
|
||||
<li><a href="#orgd7df0cc">4.5. Verification of Height of the Stewart Platform</a></li>
|
||||
<li><a href="#orgc4b765a">4.6. Determinate the location of the joints</a></li>
|
||||
<li><a href="#org0a84b4d">4.7. Returns Stewart Structure</a></li>
|
||||
<li><a href="#orge3f31b8">4.1. Function description</a></li>
|
||||
<li><a href="#org2580fde">4.2. Optional Parameters</a></li>
|
||||
<li><a href="#org230a253">4.3. Cube Creation</a></li>
|
||||
<li><a href="#orgd1a04ef">4.4. Vectors of each leg</a></li>
|
||||
<li><a href="#orgfec0778">4.5. Verification of Height of the Stewart Platform</a></li>
|
||||
<li><a href="#orgc3cd1d1">4.6. Determinate the location of the joints</a></li>
|
||||
<li><a href="#org9063896">4.7. Returns Stewart Structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgcb21f88">5. Tests</a>
|
||||
<li><a href="#org5807740">5. Tests</a>
|
||||
<ul>
|
||||
<li><a href="#orgc47f87d">5.1. First attempt to parametrisation</a></li>
|
||||
<li><a href="#orgff4f69c">5.2. Second attempt</a></li>
|
||||
<li><a href="#org011ab94">5.3. Generate the Stewart platform for a Cubic configuration</a></li>
|
||||
<li><a href="#org8809c47">5.1. First attempt to parametrisation</a></li>
|
||||
<li><a href="#org71c64bc">5.2. Second attempt</a></li>
|
||||
<li><a href="#orgc132128">5.3. Generate the Stewart platform for a Cubic configuration</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -309,16 +309,25 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The discovery of the Cubic configuration is done in. 1
|
||||
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 <a class='org-ref-reference' href="#jafari03_orthog_gough_stewar_platf_microm">jafari03_orthog_gough_stewar_platf_microm</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
People using orthogonal/cubic configuration: <a class='org-ref-reference' href="#preumont07_six_axis_singl_stage_activ">preumont07_six_axis_singl_stage_activ</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
The specificity of the Cubic configuration is that each actuator is orthogonal with the others.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
To generate and study the Cubic configuration, <code>initializeCubicConfiguration</code> is used (description in section <a href="#org8876664">4</a>).
|
||||
To generate and study the Cubic configuration, <code>initializeCubicConfiguration</code> is used (description in section <a href="#org7e73a4b">4</a>).
|
||||
</p>
|
||||
|
||||
<div id="outline-container-orgec4f5e2" class="outline-2">
|
||||
<h2 id="orgec4f5e2"><span class="section-number-2">1</span> Questions we wish to answer with this analysis</h2>
|
||||
<div id="outline-container-org43e3f4a" class="outline-2">
|
||||
<h2 id="org43e3f4a"><span class="section-number-2">1</span> Questions we wish to answer with this analysis</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
The goal is to study the benefits of using a cubic configuration:
|
||||
@ -331,20 +340,20 @@ The goal is to study the benefits of using a cubic configuration:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgef11581" class="outline-2">
|
||||
<h2 id="orgef11581"><span class="section-number-2">2</span> Configuration Analysis - Stiffness Matrix</h2>
|
||||
<div id="outline-container-org9890470" class="outline-2">
|
||||
<h2 id="org9890470"><span class="section-number-2">2</span> Configuration Analysis - Stiffness Matrix</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
</div>
|
||||
<div id="outline-container-org4203cad" class="outline-3">
|
||||
<h3 id="org4203cad"><span class="section-number-3">2.1</span> Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center</h3>
|
||||
<div id="outline-container-org5d80bd3" class="outline-3">
|
||||
<h3 id="org5d80bd3"><span class="section-number-3">2.1</span> Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
We create a cubic Stewart platform (figure <a href="#org620d9b9">1</a>) in such a way that the center of the cube (black dot) is located at the center of the Stewart platform (blue dot).
|
||||
We create a cubic Stewart platform (figure <a href="#org813c22d">1</a>) in such a way that the center of the cube (black dot) is located at the center of the Stewart platform (blue dot).
|
||||
The Jacobian matrix is estimated at the location of the center of the cube.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org620d9b9" class="figure">
|
||||
<div id="org813c22d" class="figure">
|
||||
<p><img src="./figs/3d-cubic-stewart-aligned.png" alt="3d-cubic-stewart-aligned.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Centered cubic configuration</p>
|
||||
@ -448,11 +457,11 @@ save<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'./mat/s
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3344772" class="outline-3">
|
||||
<h3 id="org3344772"><span class="section-number-3">2.2</span> Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</h3>
|
||||
<div id="outline-container-orga5ac347" class="outline-3">
|
||||
<h3 id="orga5ac347"><span class="section-number-3">2.2</span> Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure <a href="#org620d9b9">1</a>).
|
||||
We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure <a href="#org813c22d">1</a>).
|
||||
The Jacobian matrix is not estimated at the location of the center of the cube.
|
||||
</p>
|
||||
|
||||
@ -552,16 +561,16 @@ stewart = computeGeometricalProperties<span style="color: #DCDCCC;">(</span>stew
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org52de20d" class="outline-3">
|
||||
<h3 id="org52de20d"><span class="section-number-3">2.3</span> Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center</h3>
|
||||
<div id="outline-container-org47743ef" class="outline-3">
|
||||
<h3 id="org47743ef"><span class="section-number-3">2.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-2-3">
|
||||
<p>
|
||||
Here, the "center" of the Stewart platform is not at the cube center (figure <a href="#org283dc40">2</a>).
|
||||
Here, the "center" of the Stewart platform is not at the cube center (figure <a href="#org8a2bd4c">2</a>).
|
||||
The Jacobian is estimated at the cube center.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org283dc40" class="figure">
|
||||
<div id="org8a2bd4c" class="figure">
|
||||
<p><img src="./figs/3d-cubic-stewart-misaligned.png" alt="3d-cubic-stewart-misaligned.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Not centered cubic configuration</p>
|
||||
@ -674,8 +683,8 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd7e1449" class="outline-3">
|
||||
<h3 id="orgd7e1449"><span class="section-number-3">2.4</span> Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</h3>
|
||||
<div id="outline-container-orgd0daf23" class="outline-3">
|
||||
<h3 id="orgd0daf23"><span class="section-number-3">2.4</span> Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<p>
|
||||
Here, the "center" of the Stewart platform is not at the cube center.
|
||||
@ -789,8 +798,8 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf16b788" class="outline-3">
|
||||
<h3 id="orgf16b788"><span class="section-number-3">2.5</span> Conclusion</h3>
|
||||
<div id="outline-container-org6729b53" class="outline-3">
|
||||
<h3 id="org6729b53"><span class="section-number-3">2.5</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-2-5">
|
||||
<div class="important">
|
||||
<ul class="org-ul">
|
||||
@ -803,8 +812,8 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga2cd408" class="outline-2">
|
||||
<h2 id="orga2cd408"><span class="section-number-2">3</span> Cubic size analysis</h2>
|
||||
<div id="outline-container-org0969b06" class="outline-2">
|
||||
<h2 id="org0969b06"><span class="section-number-2">3</span> Cubic size analysis</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
<p>
|
||||
We here study the effect of the size of the cube used for the Stewart configuration.
|
||||
@ -879,7 +888,7 @@ xlabel<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'Cube
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org859b371" class="figure">
|
||||
<div id="orgad7fc21" class="figure">
|
||||
<p><img src="figs/stiffness_cube_size.png" alt="stiffness_cube_size.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>\(k_{\theta_x} = k_{\theta_y}\) and \(k_{\theta_z}\) function of the size of the cube</p>
|
||||
@ -900,16 +909,16 @@ In that case, the legs will the further separated. Size of the cube is then limi
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9220275" class="outline-2">
|
||||
<h2 id="org9220275"><span class="section-number-2">4</span> initializeCubicConfiguration</h2>
|
||||
<div id="outline-container-org0f56064" class="outline-2">
|
||||
<h2 id="org0f56064"><span class="section-number-2">4</span> initializeCubicConfiguration</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
<p>
|
||||
<a id="org8876664"></a>
|
||||
<a id="org7e73a4b"></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdee5436" class="outline-3">
|
||||
<h3 id="orgdee5436"><span class="section-number-3">4.1</span> Function description</h3>
|
||||
<div id="outline-container-orge3f31b8" class="outline-3">
|
||||
<h3 id="orge3f31b8"><span class="section-number-3">4.1</span> Function description</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">function</span> <span style="color: #DCDCCC;">[</span><span style="color: #DFAF8F;">stewart</span><span style="color: #DCDCCC;">]</span> = <span style="color: #93E0E3;">initializeCubicConfiguration</span><span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">opts_param</span><span style="color: #DCDCCC;">)</span>
|
||||
@ -918,8 +927,8 @@ In that case, the legs will the further separated. Size of the cube is then limi
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org68794ca" class="outline-3">
|
||||
<h3 id="org68794ca"><span class="section-number-3">4.2</span> Optional Parameters</h3>
|
||||
<div id="outline-container-org2580fde" class="outline-3">
|
||||
<h3 id="org2580fde"><span class="section-number-3">4.2</span> Optional Parameters</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<p>
|
||||
Default values for opts.
|
||||
@ -948,8 +957,8 @@ Populate opts with input parameters
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org93d8028" class="outline-3">
|
||||
<h3 id="org93d8028"><span class="section-number-3">4.3</span> Cube Creation</h3>
|
||||
<div id="outline-container-org230a253" class="outline-3">
|
||||
<h3 id="org230a253"><span class="section-number-3">4.3</span> Cube Creation</h3>
|
||||
<div class="outline-text-3" id="text-4-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">points = <span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span>; <span style="text-decoration: underline;">...</span>
|
||||
@ -994,8 +1003,8 @@ We use to rotation matrix to rotate the cube
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org00e16e1" class="outline-3">
|
||||
<h3 id="org00e16e1"><span class="section-number-3">4.4</span> Vectors of each leg</h3>
|
||||
<div id="outline-container-orgd1a04ef" class="outline-3">
|
||||
<h3 id="orgd1a04ef"><span class="section-number-3">4.4</span> Vectors of each leg</h3>
|
||||
<div class="outline-text-3" id="text-4-4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">leg_indices = <span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">3</span>, <span style="color: #BFEBBF;">4</span>; <span style="text-decoration: underline;">...</span>
|
||||
@ -1023,8 +1032,8 @@ legs_start = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFE
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd7df0cc" class="outline-3">
|
||||
<h3 id="orgd7df0cc"><span class="section-number-3">4.5</span> Verification of Height of the Stewart Platform</h3>
|
||||
<div id="outline-container-orgfec0778" class="outline-3">
|
||||
<h3 id="orgfec0778"><span class="section-number-3">4.5</span> Verification of Height of the Stewart Platform</h3>
|
||||
<div class="outline-text-3" id="text-4-5">
|
||||
<p>
|
||||
If the Stewart platform is not contained in the cube, throw an error.
|
||||
@ -1043,8 +1052,8 @@ If the Stewart platform is not contained in the cube, throw an error.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc4b765a" class="outline-3">
|
||||
<h3 id="orgc4b765a"><span class="section-number-3">4.6</span> Determinate the location of the joints</h3>
|
||||
<div id="outline-container-orgc3cd1d1" class="outline-3">
|
||||
<h3 id="orgc3cd1d1"><span class="section-number-3">4.6</span> Determinate the location of the joints</h3>
|
||||
<div class="outline-text-3" id="text-4-6">
|
||||
<p>
|
||||
We now determine the location of the joints on the fixed platform w.r.t the fixed frame \(\{A\}\).
|
||||
@ -1089,8 +1098,8 @@ Ab = Ab <span style="color: #7CB8BB;">-</span> h<span style="color: #7CB8BB;">*<
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0a84b4d" class="outline-3">
|
||||
<h3 id="org0a84b4d"><span class="section-number-3">4.7</span> Returns Stewart Structure</h3>
|
||||
<div id="outline-container-org9063896" class="outline-3">
|
||||
<h3 id="org9063896"><span class="section-number-3">4.7</span> Returns Stewart Structure</h3>
|
||||
<div class="outline-text-3" id="text-4-7">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"> stewart = struct<span style="color: #DCDCCC;">()</span>;
|
||||
@ -1105,15 +1114,15 @@ Ab = Ab <span style="color: #7CB8BB;">-</span> h<span style="color: #7CB8BB;">*<
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcb21f88" class="outline-2">
|
||||
<h2 id="orgcb21f88"><span class="section-number-2">5</span> Tests</h2>
|
||||
<div id="outline-container-org5807740" class="outline-2">
|
||||
<h2 id="org5807740"><span class="section-number-2">5</span> Tests</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
</div>
|
||||
<div id="outline-container-orgc47f87d" class="outline-3">
|
||||
<h3 id="orgc47f87d"><span class="section-number-3">5.1</span> First attempt to parametrisation</h3>
|
||||
<div id="outline-container-org8809c47" class="outline-3">
|
||||
<h3 id="org8809c47"><span class="section-number-3">5.1</span> First attempt to parametrisation</h3>
|
||||
<div class="outline-text-3" id="text-5-1">
|
||||
|
||||
<div id="orgb15dddd" class="figure">
|
||||
<div id="org520c5d6" class="figure">
|
||||
<p><img src="./figs/stewart_bottom_plate.png" alt="stewart_bottom_plate.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Schematic of the bottom plates with all the parameters</p>
|
||||
@ -1148,8 +1157,8 @@ Lets express \(a_i\), \(b_i\) and \(a_j\):
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgff4f69c" class="outline-3">
|
||||
<h3 id="orgff4f69c"><span class="section-number-3">5.2</span> Second attempt</h3>
|
||||
<div id="outline-container-org71c64bc" class="outline-3">
|
||||
<h3 id="org71c64bc"><span class="section-number-3">5.2</span> Second attempt</h3>
|
||||
<div class="outline-text-3" id="text-5-2">
|
||||
<p>
|
||||
We start with the point of a cube in space:
|
||||
@ -1276,8 +1285,8 @@ Let's then estimate the middle position of the platform
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org011ab94" class="outline-3">
|
||||
<h3 id="org011ab94"><span class="section-number-3">5.3</span> Generate the Stewart platform for a Cubic configuration</h3>
|
||||
<div id="outline-container-orgc132128" class="outline-3">
|
||||
<h3 id="orgc132128"><span class="section-number-3">5.3</span> Generate the Stewart platform for a Cubic configuration</h3>
|
||||
<div class="outline-text-3" id="text-5-3">
|
||||
<p>
|
||||
First we defined the height of the Hexapod.
|
||||
@ -1336,13 +1345,18 @@ zlim<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">[</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ol class="org-ol">
|
||||
<li>Z.J. Geng, and L.S. Haynes, , <i>Six Degree-Of-Freedom Active Vibration Control Using the Stewart Platforms</i>, IEEE Transactions on Control Systems Technology, 2<b>(1)</b>, pp. 45-53 (1994). <a href="http://dx.doi.org/10.1109/87.273110">http://dx.doi.org/10.1109/87.273110</a>.</li>
|
||||
</ol>
|
||||
<p>
|
||||
|
||||
<h1 class='org-ref-bib-h1'>Bibliography</h1>
|
||||
<ul class='org-ref-bib'><li><a id="geng94_six_degree_of_freed_activ">[geng94_six_degree_of_freed_activ]</a> <a name="geng94_six_degree_of_freed_activ"></a>Geng & Haynes, Six Degree-Of-Freedom Active Vibration Control Using the Stewart Platforms, <i>IEEE Transactions on Control Systems Technology</i>, <b>2(1)</b>, 45-53 (1994). <a href="https://doi.org/10.1109/87.273110">link</a>. <a href="http://dx.doi.org/10.1109/87.273110">doi</a>.</li>
|
||||
<li><a id="jafari03_orthog_gough_stewar_platf_microm">[jafari03_orthog_gough_stewar_platf_microm]</a> <a name="jafari03_orthog_gough_stewar_platf_microm"></a>Jafari & McInroy, Orthogonal Gough-Stewart Platforms for Micromanipulation, <i>IEEE Transactions on Robotics and Automation</i>, <b>19(4)</b>, 595-603 (2003). <a href="https://doi.org/10.1109/tra.2003.814506">link</a>. <a href="http://dx.doi.org/10.1109/tra.2003.814506">doi</a>.</li>
|
||||
<li><a id="preumont07_six_axis_singl_stage_activ">[preumont07_six_axis_singl_stage_activ]</a> <a name="preumont07_six_axis_singl_stage_activ"></a>Preumont, Horodinca, Romanescu, de, Marneffe, Avraam, Deraemaeker, Bossens, & Abu Hanieh, A Six-Axis Single-Stage Active Vibration Isolator Based on Stewart Platform, <i>Journal of Sound and Vibration</i>, <b>300(3-5)</b>, 644-661 (2007). <a href="https://doi.org/10.1016/j.jsv.2006.07.050">link</a>. <a href="http://dx.doi.org/10.1016/j.jsv.2006.07.050">doi</a>.</li>
|
||||
</ul>
|
||||
</p>
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Thomas Dehaeze</p>
|
||||
<p class="date">Created: 2019-03-25 lun. 18:11</p>
|
||||
<p class="date">Created: 2019-03-26 mar. 08:47</p>
|
||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||
</div>
|
||||
</body>
|
||||
|
@ -31,6 +31,11 @@
|
||||
#+end_src
|
||||
|
||||
The discovery of the Cubic configuration is done in citenum:geng94_six_degree_of_freed_activ.
|
||||
Further analysis is conducted in cite:jafari03_orthog_gough_stewar_platf_microm.
|
||||
|
||||
People using orthogonal/cubic configuration: cite:preumont07_six_axis_singl_stage_activ.
|
||||
|
||||
|
||||
The specificity of the Cubic configuration is that each actuator is orthogonal with the others.
|
||||
|
||||
To generate and study the Cubic configuration, =initializeCubicConfiguration= is used (description in section [[sec:initializeCubicConfiguration]]).
|
||||
@ -68,7 +73,7 @@ The Jacobian matrix is estimated at the location of the center of the cube.
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none :exports code
|
||||
K = stewart.Jd'*stewart.Jd;
|
||||
K = stewart.Jf'*stewart.Jf;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results value table :exports results
|
||||
@ -104,7 +109,7 @@ The Jacobian matrix is not estimated at the location of the center of the cube.
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none :exports code
|
||||
K = stewart.Jd'*stewart.Jd;
|
||||
K = stewart.Jf'*stewart.Jf;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results value table :exports results
|
||||
@ -149,7 +154,7 @@ The center of the cube from the top platform is at $z = 110 - 175 = -65$.
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none :exports code
|
||||
K = stewart.Jd'*stewart.Jd;
|
||||
K = stewart.Jf'*stewart.Jf;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results value table :exports results
|
||||
@ -192,7 +197,7 @@ The center of the cube from the top platform is at $z = 110 - 175 = -65$.
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results none :exports code
|
||||
K = stewart.Jd'*stewart.Jd;
|
||||
K = stewart.Jf'*stewart.Jf;
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results value table :exports results
|
||||
|
@ -3,7 +3,7 @@
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<!-- 2019-03-22 ven. 12:03 -->
|
||||
<!-- 2019-03-26 mar. 09:24 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>Kinematic Study of the Stewart Platform</title>
|
||||
@ -193,6 +193,12 @@
|
||||
.org-svg { width: 90%; }
|
||||
/*]]>*/-->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" href="css/htmlize.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="css/readtheorg.css"/>
|
||||
<script src="js/jquery.min.js"></script>
|
||||
<script src="js/bootstrap.min.js"></script>
|
||||
<script type="text/javascript" src="js/jquery.stickytableheaders.min.js"></script>
|
||||
<script type="text/javascript" src="js/readtheorg.js"></script>
|
||||
<script type="text/javascript">
|
||||
/*
|
||||
@licstart The following is the entire license notice for the
|
||||
@ -247,27 +253,170 @@ for the JavaScript code in this tag.
|
||||
<h2>Table of Contents</h2>
|
||||
<div id="text-table-of-contents">
|
||||
<ul>
|
||||
<li><a href="#orgc1c40d5">1. Functions</a>
|
||||
<li><a href="#org2e1bd58">1. Needed Actuator Stroke</a>
|
||||
<ul>
|
||||
<li><a href="#org3d6cf9e">1.1. getMaxPositions</a></li>
|
||||
<li><a href="#orge3ee3ac">1.2. getMaxPureDisplacement</a></li>
|
||||
<li><a href="#org16d1370">1.1. Stewart architecture definition</a></li>
|
||||
<li><a href="#orgaf07b82">1.2. Wanted translations and rotations</a></li>
|
||||
<li><a href="#org920b62b">1.3. Needed stroke for "pure" rotations or translations</a></li>
|
||||
<li><a href="#org27bf97e">1.4. Needed stroke for combined translations and rotations</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgaebf111">2. Maximum Stroke</a></li>
|
||||
<li><a href="#orgfb8a1e7">3. Functions</a>
|
||||
<ul>
|
||||
<li><a href="#org465746a">3.1. getMaxPositions</a></li>
|
||||
<li><a href="#org527f7ca">3.2. getMaxPureDisplacement</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc1c40d5" class="outline-2">
|
||||
<h2 id="orgc1c40d5"><span class="section-number-2">1</span> Functions</h2>
|
||||
<div id="outline-container-org2e1bd58" class="outline-2">
|
||||
<h2 id="org2e1bd58"><span class="section-number-2">1</span> Needed Actuator Stroke</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
<p>
|
||||
The goal is to determine the needed stroke of the actuators to obtain wanted translations and rotations.
|
||||
</p>
|
||||
</div>
|
||||
<div id="outline-container-org3d6cf9e" class="outline-3">
|
||||
<h3 id="org3d6cf9e"><span class="section-number-3">1.1</span> getMaxPositions</h3>
|
||||
|
||||
<div id="outline-container-org16d1370" class="outline-3">
|
||||
<h3 id="org16d1370"><span class="section-number-3">1.1</span> Stewart architecture definition</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<p>
|
||||
We use a cubic architecture.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">opts = struct<span style="color: #DCDCCC;">(</span><span style="text-decoration: underline;">...</span>
|
||||
<span style="color: #CC9393;">'H_tot'</span>, <span style="color: #BFEBBF;">90</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Total height of the Hexapod [mm]</span>
|
||||
<span style="color: #CC9393;">'L'</span>, <span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">/</span>sqrt<span style="color: #BFEBBF;">(</span><span style="color: #BFEBBF;">3</span><span style="color: #BFEBBF;">)</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Size of the Cube [mm]</span>
|
||||
<span style="color: #CC9393;">'H'</span>, <span style="color: #BFEBBF;">60</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Height between base joints and platform joints [mm]</span>
|
||||
<span style="color: #CC9393;">'H0'</span>, <span style="color: #BFEBBF;">180</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">60</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">2</span> <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Height between the corner of the cube and the plane containing the base joints [mm]</span>
|
||||
<span style="color: #DCDCCC;">)</span>;
|
||||
stewart = initializeCubicConfiguration<span style="color: #DCDCCC;">(</span>opts<span style="color: #DCDCCC;">)</span>;
|
||||
opts = struct<span style="color: #DCDCCC;">(</span><span style="text-decoration: underline;">...</span>
|
||||
<span style="color: #CC9393;">'Jd_pos'</span>, <span style="color: #BFEBBF;">[</span><span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">100</span><span style="color: #BFEBBF;">]</span>, <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]</span>
|
||||
<span style="color: #CC9393;">'Jf_pos'</span>, <span style="color: #BFEBBF;">[</span><span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span>, <span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">50</span><span style="color: #BFEBBF;">]</span> <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Position of the Jacobian for force location from the top of the mobile platform [mm]</span>
|
||||
<span style="color: #DCDCCC;">)</span>;
|
||||
stewart = computeGeometricalProperties<span style="color: #DCDCCC;">(</span>stewart, opts<span style="color: #DCDCCC;">)</span>;
|
||||
opts = struct<span style="color: #DCDCCC;">(</span><span style="text-decoration: underline;">...</span>
|
||||
<span style="color: #CC9393;">'stroke'</span>, <span style="color: #BFEBBF;">50e</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">6</span> <span style="text-decoration: underline;">...</span> <span style="color: #7F9F7F;">% Maximum stroke of each actuator [m]</span>
|
||||
<span style="color: #DCDCCC;">)</span>;
|
||||
stewart = initializeMechanicalElements<span style="color: #DCDCCC;">(</span>stewart, opts<span style="color: #DCDCCC;">)</span>;
|
||||
|
||||
save<span style="color: #DCDCCC;">(</span><span style="color: #CC9393;">'./mat/stewart.mat', 'stewart'</span><span style="color: #DCDCCC;">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgaf07b82" class="outline-3">
|
||||
<h3 id="orgaf07b82"><span class="section-number-3">1.2</span> Wanted translations and rotations</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
We define wanted translations and rotations
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Tx_max = <span style="color: #BFEBBF;">15e</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">6</span>; <span style="color: #7F9F7F;">% Translation [m]</span>
|
||||
Ty_max = <span style="color: #BFEBBF;">15e</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">6</span>; <span style="color: #7F9F7F;">% Translation [m]</span>
|
||||
Tz_max = <span style="color: #BFEBBF;">15e</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">6</span>; <span style="color: #7F9F7F;">% Translation [m]</span>
|
||||
Rx_max = <span style="color: #BFEBBF;">30e</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">6</span>; <span style="color: #7F9F7F;">% Rotation [rad]</span>
|
||||
Ry_max = <span style="color: #BFEBBF;">30e</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">6</span>; <span style="color: #7F9F7F;">% Rotation [rad]</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org920b62b" class="outline-3">
|
||||
<h3 id="org920b62b"><span class="section-number-3">1.3</span> Needed stroke for "pure" rotations or translations</h3>
|
||||
<div class="outline-text-3" id="text-1-3">
|
||||
<p>
|
||||
First, we estimate the needed actuator stroke for "pure" rotations and translation.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">LTx = stewart.Jd<span style="color: #7CB8BB;">*</span><span style="color: #DCDCCC;">[</span>Tx_max <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span><span style="color: #DCDCCC;">]</span>';
|
||||
LTy = stewart.Jd<span style="color: #7CB8BB;">*</span><span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">0</span> Ty_max <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span><span style="color: #DCDCCC;">]</span>';
|
||||
LTz = stewart.Jd<span style="color: #7CB8BB;">*</span><span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> Tz_max <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span><span style="color: #DCDCCC;">]</span>';
|
||||
LRx = stewart.Jd<span style="color: #7CB8BB;">*</span><span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> Rx_max <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span><span style="color: #DCDCCC;">]</span>';
|
||||
LRy = stewart.Jd<span style="color: #7CB8BB;">*</span><span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> <span style="color: #BFEBBF;">0</span> Ry_max <span style="color: #BFEBBF;">0</span><span style="color: #DCDCCC;">]</span>';
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="example">
|
||||
1.0607e-05
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org27bf97e" class="outline-3">
|
||||
<h3 id="org27bf97e"><span class="section-number-3">1.4</span> Needed stroke for combined translations and rotations</h3>
|
||||
<div class="outline-text-3" id="text-1-4">
|
||||
<p>
|
||||
Now, we combine translations and rotations, and we try to find the worst case (that we suppose to happen at the border).
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Lmax = <span style="color: #BFEBBF;">0</span>;
|
||||
pos = <span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">0</span><span style="color: #DCDCCC;">]</span>;
|
||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">Tx</span> = <span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">-Tx_max</span>,Tx_max<span style="color: #DCDCCC;">]</span>
|
||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">Ty</span> = <span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">-Ty_max</span>,Ty_max<span style="color: #DCDCCC;">]</span>
|
||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">Tz</span> = <span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">-Tz_max</span>,Tz_max<span style="color: #DCDCCC;">]</span>
|
||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">Rx</span> = <span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">-Rx_max</span>,Rx_max<span style="color: #DCDCCC;">]</span>
|
||||
<span style="color: #F0DFAF; font-weight: bold;">for</span> <span style="color: #DFAF8F;">Ry</span> = <span style="color: #DCDCCC;">[</span><span style="color: #BFEBBF;">-Ry_max</span>,Ry_max<span style="color: #DCDCCC;">]</span>
|
||||
L = max<span style="color: #DCDCCC;">(</span>stewart.Jd<span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">[</span>Tx Ty Tz Rx Ry <span style="color: #BFEBBF;">0</span><span style="color: #BFEBBF;">]</span>'<span style="color: #DCDCCC;">)</span>;
|
||||
<span style="color: #F0DFAF; font-weight: bold;">if</span> L <span style="color: #7CB8BB;">></span> Lmax
|
||||
Lmax = L;
|
||||
pos = <span style="color: #DCDCCC;">[</span>Tx Ty Tz Rx Ry<span style="color: #DCDCCC;">]</span>;
|
||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||
<span style="color: #F0DFAF; font-weight: bold;">end</span>
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
We obtain a needed stroke shown below (almost two times the needed stroke for "pure" rotations and translations).
|
||||
</p>
|
||||
<pre class="example">
|
||||
3.0927e-05
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgaebf111" class="outline-2">
|
||||
<h2 id="orgaebf111"><span class="section-number-2">2</span> Maximum Stroke</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
<p>
|
||||
From a specified actuator stroke, we try to estimate the available maneuverability of the Stewart platform.
|
||||
</p>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span style="color: #DCDCCC;">[</span>X, Y, Z<span style="color: #DCDCCC;">]</span> = getMaxPositions<span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">stewart</span><span style="color: #DCDCCC;">)</span>;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span style="color: #7CB8BB;">figure</span>;
|
||||
plot3<span style="color: #DCDCCC;">(</span>X, Y, Z, <span style="color: #CC9393;">'k-'</span><span style="color: #DCDCCC;">)</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgfb8a1e7" class="outline-2">
|
||||
<h2 id="orgfb8a1e7"><span class="section-number-2">3</span> Functions</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
</div>
|
||||
<div id="outline-container-org465746a" class="outline-3">
|
||||
<h3 id="org465746a"><span class="section-number-3">3.1</span> getMaxPositions</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">function</span> <span style="color: #DCDCCC;">[</span><span style="color: #DFAF8F;">X, Y, Z</span><span style="color: #DCDCCC;">]</span> = <span style="color: #93E0E3;">getMaxPositions</span><span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">stewart</span><span style="color: #DCDCCC;">)</span>
|
||||
Leg = stewart.Leg;
|
||||
J = stewart.J;
|
||||
J = stewart.Jd;
|
||||
theta = linspace<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">0</span>, <span style="color: #BFEBBF;">2</span><span style="color: #7CB8BB;">*</span><span style="color: #BFEBBF;">pi</span>, <span style="color: #BFEBBF;">100</span><span style="color: #DCDCCC;">)</span>;
|
||||
phi = linspace<span style="color: #DCDCCC;">(</span><span style="color: #7CB8BB;">-</span><span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">2</span> , <span style="color: #BFEBBF;">pi</span><span style="color: #7CB8BB;">/</span><span style="color: #BFEBBF;">2</span>, <span style="color: #BFEBBF;">100</span><span style="color: #DCDCCC;">)</span>;
|
||||
dmax = zeros<span style="color: #DCDCCC;">(</span>length<span style="color: #BFEBBF;">(</span>theta<span style="color: #BFEBBF;">)</span>, length<span style="color: #BFEBBF;">(</span>phi<span style="color: #BFEBBF;">)</span><span style="color: #DCDCCC;">)</span>;
|
||||
@ -288,9 +437,9 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge3ee3ac" class="outline-3">
|
||||
<h3 id="orge3ee3ac"><span class="section-number-3">1.2</span> getMaxPureDisplacement</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<div id="outline-container-org527f7ca" class="outline-3">
|
||||
<h3 id="org527f7ca"><span class="section-number-3">3.2</span> getMaxPureDisplacement</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab"><span style="color: #F0DFAF; font-weight: bold;">function</span> <span style="color: #DCDCCC;">[</span><span style="color: #DFAF8F;">max_disp</span><span style="color: #DCDCCC;">]</span> = <span style="color: #93E0E3;">getMaxPureDisplacement</span><span style="color: #DCDCCC;">(</span><span style="color: #DFAF8F;">Leg</span>, <span style="color: #DFAF8F;">J</span><span style="color: #DCDCCC;">)</span>
|
||||
max_disp = zeros<span style="color: #DCDCCC;">(</span><span style="color: #BFEBBF;">6</span>, <span style="color: #BFEBBF;">1</span><span style="color: #DCDCCC;">)</span>;
|
||||
@ -309,7 +458,7 @@ for the JavaScript code in this tag.
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Thomas Dehaeze</p>
|
||||
<p class="date">Created: 2019-03-22 ven. 12:03</p>
|
||||
<p class="date">Created: 2019-03-26 mar. 09:24</p>
|
||||
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
||||
</div>
|
||||
</body>
|
||||
|
@ -24,6 +24,108 @@
|
||||
#+PROPERTY: header-args:matlab+ :mkdirp yes
|
||||
:END:
|
||||
|
||||
#+begin_src matlab :results none :exports none :noweb yes
|
||||
<<matlab-init>>
|
||||
addpath('src');
|
||||
addpath('library');
|
||||
#+end_src
|
||||
|
||||
* Needed Actuator Stroke
|
||||
The goal is to determine the needed stroke of the actuators to obtain wanted translations and rotations.
|
||||
|
||||
** Stewart architecture definition
|
||||
We use a cubic architecture.
|
||||
|
||||
#+begin_src matlab :results silent
|
||||
opts = struct(...
|
||||
'H_tot', 90, ... % Total height of the Hexapod [mm]
|
||||
'L', 180/sqrt(3), ... % Size of the Cube [mm]
|
||||
'H', 60, ... % Height between base joints and platform joints [mm]
|
||||
'H0', 180/2-60/2 ... % Height between the corner of the cube and the plane containing the base joints [mm]
|
||||
);
|
||||
stewart = initializeCubicConfiguration(opts);
|
||||
opts = struct(...
|
||||
'Jd_pos', [0, 0, 100], ... % Position of the Jacobian for displacement estimation from the top of the mobile platform [mm]
|
||||
'Jf_pos', [0, 0, -50] ... % Position of the Jacobian for force location from the top of the mobile platform [mm]
|
||||
);
|
||||
stewart = computeGeometricalProperties(stewart, opts);
|
||||
opts = struct(...
|
||||
'stroke', 50e-6 ... % Maximum stroke of each actuator [m]
|
||||
);
|
||||
stewart = initializeMechanicalElements(stewart, opts);
|
||||
|
||||
save('./mat/stewart.mat', 'stewart');
|
||||
#+end_src
|
||||
|
||||
** Wanted translations and rotations
|
||||
We define wanted translations and rotations
|
||||
#+begin_src matlab :results silent
|
||||
Tx_max = 15e-6; % Translation [m]
|
||||
Ty_max = 15e-6; % Translation [m]
|
||||
Tz_max = 15e-6; % Translation [m]
|
||||
Rx_max = 30e-6; % Rotation [rad]
|
||||
Ry_max = 30e-6; % Rotation [rad]
|
||||
#+end_src
|
||||
|
||||
** Needed stroke for "pure" rotations or translations
|
||||
First, we estimate the needed actuator stroke for "pure" rotations and translation.
|
||||
#+begin_src matlab :results silent
|
||||
LTx = stewart.Jd*[Tx_max 0 0 0 0 0]';
|
||||
LTy = stewart.Jd*[0 Ty_max 0 0 0 0]';
|
||||
LTz = stewart.Jd*[0 0 Tz_max 0 0 0]';
|
||||
LRx = stewart.Jd*[0 0 0 Rx_max 0 0]';
|
||||
LRy = stewart.Jd*[0 0 0 0 Ry_max 0]';
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results value :exports results
|
||||
ans = max(max([LTx, LTy, LTz, LRx, LRy]))
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: 1.0607e-05
|
||||
|
||||
** Needed stroke for combined translations and rotations
|
||||
Now, we combine translations and rotations, and we try to find the worst case (that we suppose to happen at the border).
|
||||
#+begin_src matlab :results none
|
||||
Lmax = 0;
|
||||
pos = [0, 0, 0, 0, 0];
|
||||
for Tx = [-Tx_max,Tx_max]
|
||||
for Ty = [-Ty_max,Ty_max]
|
||||
for Tz = [-Tz_max,Tz_max]
|
||||
for Rx = [-Rx_max,Rx_max]
|
||||
for Ry = [-Ry_max,Ry_max]
|
||||
L = max(stewart.Jd*[Tx Ty Tz Rx Ry 0]');
|
||||
if L > Lmax
|
||||
Lmax = L;
|
||||
pos = [Tx Ty Tz Rx Ry];
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
#+end_src
|
||||
|
||||
We obtain a needed stroke shown below (almost two times the needed stroke for "pure" rotations and translations).
|
||||
#+begin_src matlab :results value :exports results
|
||||
ans = Lmax
|
||||
#+end_src
|
||||
|
||||
#+RESULTS:
|
||||
: 3.0927e-05
|
||||
|
||||
* Maximum Stroke
|
||||
From a specified actuator stroke, we try to estimate the available maneuverability of the Stewart platform.
|
||||
|
||||
#+begin_src matlab :results silent
|
||||
[X, Y, Z] = getMaxPositions(stewart);
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :results silent
|
||||
figure;
|
||||
plot3(X, Y, Z, 'k-')
|
||||
#+end_src
|
||||
|
||||
* Functions
|
||||
:PROPERTIES:
|
||||
:HEADER-ARGS:matlab+: :exports code
|
||||
@ -38,7 +140,7 @@
|
||||
#+begin_src matlab
|
||||
function [X, Y, Z] = getMaxPositions(stewart)
|
||||
Leg = stewart.Leg;
|
||||
J = stewart.J;
|
||||
J = stewart.Jd;
|
||||
theta = linspace(0, 2*pi, 100);
|
||||
phi = linspace(-pi/2 , pi/2, 100);
|
||||
dmax = zeros(length(theta), length(phi));
|
||||
|
BIN
mat/stewart.mat
BIN
mat/stewart.mat
Binary file not shown.
@ -34,4 +34,36 @@
|
||||
doi = {10.1109/87.273110},
|
||||
url = {https://doi.org/10.1109/87.273110},
|
||||
keywords = {},
|
||||
}
|
||||
|
||||
@article{jafari03_orthog_gough_stewar_platf_microm,
|
||||
author = {Jafari, F. and McInroy, J.E.},
|
||||
title = {Orthogonal Gough-Stewart Platforms for Micromanipulation},
|
||||
journal = {IEEE Transactions on Robotics and Automation},
|
||||
volume = 19,
|
||||
number = 4,
|
||||
pages = {595-603},
|
||||
year = 2003,
|
||||
doi = {10.1109/tra.2003.814506},
|
||||
url = {https://doi.org/10.1109/tra.2003.814506},
|
||||
issn = {1042-296X},
|
||||
month = {Aug},
|
||||
publisher = {Institute of Electrical and Electronics Engineers (IEEE)},
|
||||
keywords = {},
|
||||
}
|
||||
|
||||
@article{preumont07_six_axis_singl_stage_activ,
|
||||
author = {A. Preumont and M. Horodinca and I. Romanescu and B. de
|
||||
Marneffe and M. Avraam and A. Deraemaeker and F. Bossens and
|
||||
A. Abu Hanieh},
|
||||
title = {A Six-Axis Single-Stage Active Vibration Isolator Based on
|
||||
Stewart Platform},
|
||||
journal = {Journal of Sound and Vibration},
|
||||
volume = 300,
|
||||
number = {3-5},
|
||||
pages = {644-661},
|
||||
year = 2007,
|
||||
doi = {10.1016/j.jsv.2006.07.050},
|
||||
url = {https://doi.org/10.1016/j.jsv.2006.07.050},
|
||||
keywords = {},
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
function [X, Y, Z] = getMaxPositions(stewart)
|
||||
Leg = stewart.Leg;
|
||||
J = stewart.J;
|
||||
J = stewart.Jd;
|
||||
theta = linspace(0, 2*pi, 100);
|
||||
phi = linspace(-pi/2 , pi/2, 100);
|
||||
dmax = zeros(length(theta), length(phi));
|
||||
|
BIN
stewart.slx
BIN
stewart.slx
Binary file not shown.
Loading…
Reference in New Issue
Block a user