Org and Docs folders

This commit is contained in:
Thomas Dehaeze 2020-02-11 15:27:39 +01:00
parent 2082bbd580
commit aa61c84eb5
30 changed files with 1541 additions and 1134 deletions

View File

@ -4,7 +4,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>
<!-- 2020-02-06 jeu. 15:39 -->
<!-- 2020-02-11 mar. 15:26 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Decentralized Active Damping</title>
@ -268,28 +268,28 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgfba33d4">1. Inertial Control</a>
<li><a href="#orgd59c804">Inertial Control</a>
<ul>
<li><a href="#org0ea4bd4">1.1. Identification of the Dynamics</a></li>
<li><a href="#org5a29480">1.2. Effect of the Flexible Joint stiffness on the Dynamics</a></li>
<li><a href="#orga92be75">1.3. Obtained Damping</a></li>
<li><a href="#orgb29f377">1.4. Conclusion</a></li>
<li><a href="#org5f749c8">Identification of the Dynamics</a></li>
<li><a href="#org543be7a">Effect of the Flexible Joint stiffness on the Dynamics</a></li>
<li><a href="#org9a605b4">Obtained Damping</a></li>
<li><a href="#org42a74ed">Conclusion</a></li>
</ul>
</li>
<li><a href="#org5fde56d">2. Integral Force Feedback</a>
<li><a href="#org74c7eb4">Integral Force Feedback</a>
<ul>
<li><a href="#org8823e64">2.1. Identification of the Dynamics with perfect Joints</a></li>
<li><a href="#org2aff899">2.2. Effect of the Flexible Joint stiffness on the Dynamics</a></li>
<li><a href="#org40dffdd">2.3. Obtained Damping</a></li>
<li><a href="#org2ae5aaf">2.4. Conclusion</a></li>
<li><a href="#orgc96f772">Identification of the Dynamics with perfect Joints</a></li>
<li><a href="#orgd119d8a">Effect of the Flexible Joint stiffness on the Dynamics</a></li>
<li><a href="#org2b5e45a">Obtained Damping</a></li>
<li><a href="#org39ddf1e">Conclusion</a></li>
</ul>
</li>
<li><a href="#org9425768">3. Direct Velocity Feedback</a>
<li><a href="#org08917d6">Direct Velocity Feedback</a>
<ul>
<li><a href="#org61043ac">3.1. Identification of the Dynamics with perfect Joints</a></li>
<li><a href="#org8f71141">3.2. Effect of the Flexible Joint stiffness on the Dynamics</a></li>
<li><a href="#org87c6911">3.3. Obtained Damping</a></li>
<li><a href="#org516fed1">3.4. Conclusion</a></li>
<li><a href="#org243b924">Identification of the Dynamics with perfect Joints</a></li>
<li><a href="#orgcdb3ee5">Effect of the Flexible Joint stiffness on the Dynamics</a></li>
<li><a href="#orgff0cbf9">Obtained Damping</a></li>
<li><a href="#org4027234">Conclusion</a></li>
</ul>
</li>
</ul>
@ -300,24 +300,25 @@ for the JavaScript code in this tag.
The following decentralized active damping techniques are briefly studied:
</p>
<ul class="org-ul">
<li>Inertial Control (proportional feedback of the absolute velocity): Section <a href="#org3c68d9e">1</a></li>
<li>Integral Force Feedback: Section <a href="#org62cd19c">2</a></li>
<li>Direct feedback of the relative velocity of each strut: Section <a href="#org587277a">3</a></li>
<li>Inertial Control (proportional feedback of the absolute velocity): Section <a href="#orgeb37c7d">No description for this link</a></li>
<li>Integral Force Feedback: Section <a href="#orgab5e6b5">No description for this link</a></li>
<li>Direct feedback of the relative velocity of each strut: Section <a href="#org0aa816a">No description for this link</a></li>
</ul>
<div id="outline-container-orgfba33d4" class="outline-2">
<h2 id="orgfba33d4"><span class="section-number-2">1</span> Inertial Control</h2>
<div class="outline-text-2" id="text-1">
<div id="outline-container-orgd59c804" class="outline-2">
<h2 id="orgd59c804">Inertial Control</h2>
<div class="outline-text-2" id="text-orgd59c804">
<p>
<a id="org3c68d9e"></a>
<a id="orgeb37c7d"></a>
</p>
</div>
<div id="outline-container-org0ea4bd4" class="outline-3">
<h3 id="org0ea4bd4"><span class="section-number-3">1.1</span> Identification of the Dynamics</h3>
<div class="outline-text-3" id="text-1-1">
<div id="outline-container-org5f749c8" class="outline-3">
<h3 id="org5f749c8">Identification of the Dynamics</h3>
<div class="outline-text-3" id="text-org5f749c8">
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart);
@ -350,10 +351,10 @@ G.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string">
</div>
<p>
The transfer function from actuator forces to force sensors is shown in Figure <a href="#orgfc5367b">1</a>.
The transfer function from actuator forces to force sensors is shown in Figure <a href="#org834d990">1</a>.
</p>
<div id="orgfc5367b" class="figure">
<div id="org834d990" class="figure">
<p><img src="figs/inertial_plant_coupling.png" alt="inertial_plant_coupling.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Transfer function from the Actuator force \(F_{i}\) to the absolute velocity of the same leg \(v_{m,i}\) and to the absolute velocity of the other legs \(v_{m,j}\) with \(i \neq j\) in grey (<a href="./figs/inertial_plant_coupling.png">png</a>, <a href="./figs/inertial_plant_coupling.pdf">pdf</a>)</p>
@ -361,9 +362,9 @@ The transfer function from actuator forces to force sensors is shown in Figure <
</div>
</div>
<div id="outline-container-org5a29480" class="outline-3">
<h3 id="org5a29480"><span class="section-number-3">1.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div class="outline-text-3" id="text-1-2">
<div id="outline-container-org543be7a" class="outline-3">
<h3 id="org543be7a">Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div class="outline-text-3" id="text-org543be7a">
<p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p>
@ -376,10 +377,10 @@ Gf.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string"
</div>
<p>
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org2ee5d65">2</a>.
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org683c779">2</a>.
</p>
<div id="org2ee5d65" class="figure">
<div id="org683c779" class="figure">
<p><img src="figs/inertial_plant_flexible_joint_decentralized.png" alt="inertial_plant_flexible_joint_decentralized.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Transfer function from the Actuator force \(F_{i}\) to the absolute velocity sensor \(v_{m,i}\) (<a href="./figs/inertial_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/inertial_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
@ -387,9 +388,9 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
</div>
</div>
<div id="outline-container-orga92be75" class="outline-3">
<h3 id="orga92be75"><span class="section-number-3">1.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-1-3">
<div id="outline-container-org9a605b4" class="outline-3">
<h3 id="org9a605b4">Obtained Damping</h3>
<div class="outline-text-3" id="text-org9a605b4">
<p>
The control is a performed in a decentralized manner.
The \(6 \times 6\) control is a diagonal matrix with pure proportional action on the diagonal:
@ -402,17 +403,17 @@ The \(6 \times 6\) control is a diagonal matrix with pure proportional action on
</p>
<p>
The root locus is shown in figure <a href="#org78a599c">3</a> and the obtained pole damping function of the control gain is shown in figure <a href="#org0b6bb28">4</a>.
The root locus is shown in figure <a href="#org9af9e33">3</a> and the obtained pole damping function of the control gain is shown in figure <a href="#org4e6b73b">4</a>.
</p>
<div id="org78a599c" class="figure">
<div id="org9af9e33" class="figure">
<p><img src="figs/root_locus_inertial_rot_stiffness.png" alt="root_locus_inertial_rot_stiffness.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Root Locus plot with Decentralized Inertial Control when considering the stiffness of flexible joints (<a href="./figs/root_locus_inertial_rot_stiffness.png">png</a>, <a href="./figs/root_locus_inertial_rot_stiffness.pdf">pdf</a>)</p>
</div>
<div id="org0b6bb28" class="figure">
<div id="org4e6b73b" class="figure">
<p><img src="figs/pole_damping_gain_inertial_rot_stiffness.png" alt="pole_damping_gain_inertial_rot_stiffness.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Damping of the poles with respect to the gain of the Decentralized Inertial Control when considering the stiffness of flexible joints (<a href="./figs/pole_damping_gain_inertial_rot_stiffness.png">png</a>, <a href="./figs/pole_damping_gain_inertial_rot_stiffness.pdf">pdf</a>)</p>
@ -420,9 +421,9 @@ The root locus is shown in figure <a href="#org78a599c">3</a> and the obtained p
</div>
</div>
<div id="outline-container-orgb29f377" class="outline-3">
<h3 id="orgb29f377"><span class="section-number-3">1.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-1-4">
<div id="outline-container-org42a74ed" class="outline-3">
<h3 id="org42a74ed">Conclusion</h3>
<div class="outline-text-3" id="text-org42a74ed">
<div class="important">
<p>
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors.
@ -433,25 +434,27 @@ Joint stiffness does increase the resonance frequencies of the system but does n
</div>
</div>
<div id="outline-container-org5fde56d" class="outline-2">
<h2 id="org5fde56d"><span class="section-number-2">2</span> Integral Force Feedback</h2>
<div class="outline-text-2" id="text-2">
<div id="outline-container-org74c7eb4" class="outline-2">
<h2 id="org74c7eb4">Integral Force Feedback</h2>
<div class="outline-text-2" id="text-org74c7eb4">
<p>
<a id="org62cd19c"></a>
<a id="orgab5e6b5"></a>
</p>
</div>
<div id="outline-container-org8823e64" class="outline-3">
<h3 id="org8823e64"><span class="section-number-3">2.1</span> Identification of the Dynamics with perfect Joints</h3>
<div class="outline-text-3" id="text-2-1">
<div id="outline-container-orgc96f772" class="outline-3">
<h3 id="orgc96f772">Identification of the Dynamics with perfect Joints</h3>
<div class="outline-text-3" id="text-orgc96f772">
<p>
We first initialize the Stewart platform without joint stiffness.
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart);
stewart = initializeAmplifiedStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, <span class="org-string">'disable'</span>, <span class="org-constant">true</span>);
stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart);
@ -484,10 +487,10 @@ G.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">
</div>
<p>
The transfer function from actuator forces to force sensors is shown in Figure <a href="#orgae4e327">5</a>.
The transfer function from actuator forces to force sensors is shown in Figure <a href="#org3fca9dd">5</a>.
</p>
<div id="orgae4e327" class="figure">
<div id="org3fca9dd" class="figure">
<p><img src="figs/iff_plant_coupling.png" alt="iff_plant_coupling.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Transfer function from the Actuator force \(F_{i}\) to the Force sensor of the same leg \(F_{m,i}\) and to the force sensor of the other legs \(F_{m,j}\) with \(i \neq j\) in grey (<a href="./figs/iff_plant_coupling.png">png</a>, <a href="./figs/iff_plant_coupling.pdf">pdf</a>)</p>
@ -495,9 +498,9 @@ The transfer function from actuator forces to force sensors is shown in Figure <
</div>
</div>
<div id="outline-container-org2aff899" class="outline-3">
<h3 id="org2aff899"><span class="section-number-3">2.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div class="outline-text-3" id="text-2-2">
<div id="outline-container-orgd119d8a" class="outline-3">
<h3 id="orgd119d8a">Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div class="outline-text-3" id="text-orgd119d8a">
<p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p>
@ -510,10 +513,10 @@ Gf.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string"
</div>
<p>
The new dynamics from force actuator to force sensor is shown in Figure <a href="#orgd21a8a8">6</a>.
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org090868b">6</a>.
</p>
<div id="orgd21a8a8" class="figure">
<div id="org090868b" class="figure">
<p><img src="figs/iff_plant_flexible_joint_decentralized.png" alt="iff_plant_flexible_joint_decentralized.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Transfer function from the Actuator force \(F_{i}\) to the force sensor \(F_{m,i}\) (<a href="./figs/iff_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/iff_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
@ -521,9 +524,9 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
</div>
</div>
<div id="outline-container-org40dffdd" class="outline-3">
<h3 id="org40dffdd"><span class="section-number-3">2.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-2-3">
<div id="outline-container-org2b5e45a" class="outline-3">
<h3 id="org2b5e45a">Obtained Damping</h3>
<div class="outline-text-3" id="text-org2b5e45a">
<p>
The control is a performed in a decentralized manner.
The \(6 \times 6\) control is a diagonal matrix with pure integration action on the diagonal:
@ -536,17 +539,17 @@ The \(6 \times 6\) control is a diagonal matrix with pure integration action on
</p>
<p>
The root locus is shown in figure <a href="#org2cdbf69">7</a> and the obtained pole damping function of the control gain is shown in figure <a href="#orge344229">8</a>.
The root locus is shown in figure <a href="#orge21bbea">7</a> and the obtained pole damping function of the control gain is shown in figure <a href="#org94d6943">8</a>.
</p>
<div id="org2cdbf69" class="figure">
<div id="orge21bbea" class="figure">
<p><img src="figs/root_locus_iff_rot_stiffness.png" alt="root_locus_iff_rot_stiffness.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Root Locus plot with Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/root_locus_iff_rot_stiffness.png">png</a>, <a href="./figs/root_locus_iff_rot_stiffness.pdf">pdf</a>)</p>
</div>
<div id="orge344229" class="figure">
<div id="org94d6943" class="figure">
<p><img src="figs/pole_damping_gain_iff_rot_stiffness.png" alt="pole_damping_gain_iff_rot_stiffness.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Damping of the poles with respect to the gain of the Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/pole_damping_gain_iff_rot_stiffness.png">png</a>, <a href="./figs/pole_damping_gain_iff_rot_stiffness.pdf">pdf</a>)</p>
@ -554,9 +557,9 @@ The root locus is shown in figure <a href="#org2cdbf69">7</a> and the obtained p
</div>
</div>
<div id="outline-container-org2ae5aaf" class="outline-3">
<h3 id="org2ae5aaf"><span class="section-number-3">2.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-4">
<div id="outline-container-org39ddf1e" class="outline-3">
<h3 id="org39ddf1e">Conclusion</h3>
<div class="outline-text-3" id="text-org39ddf1e">
<div class="important">
<p>
The joint stiffness has a huge impact on the attainable active damping performance when using force sensors.
@ -568,22 +571,23 @@ Thus, if Integral Force Feedback is to be used in a Stewart platform with flexib
</div>
</div>
<div id="outline-container-org9425768" class="outline-2">
<h2 id="org9425768"><span class="section-number-2">3</span> Direct Velocity Feedback</h2>
<div class="outline-text-2" id="text-3">
<div id="outline-container-org08917d6" class="outline-2">
<h2 id="org08917d6">Direct Velocity Feedback</h2>
<div class="outline-text-2" id="text-org08917d6">
<p>
<a id="org587277a"></a>
<a id="org0aa816a"></a>
</p>
</div>
<div id="outline-container-org61043ac" class="outline-3">
<h3 id="org61043ac"><span class="section-number-3">3.1</span> Identification of the Dynamics with perfect Joints</h3>
<div class="outline-text-3" id="text-3-1">
<div id="outline-container-org243b924" class="outline-3">
<h3 id="org243b924">Identification of the Dynamics with perfect Joints</h3>
<div class="outline-text-3" id="text-org243b924">
<p>
We first initialize the Stewart platform without joint stiffness.
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart);
@ -619,10 +623,10 @@ G.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string">
</div>
<p>
The transfer function from actuator forces to relative motion sensors is shown in Figure <a href="#orgd8d51db">9</a>.
The transfer function from actuator forces to relative motion sensors is shown in Figure <a href="#orgcc86228">9</a>.
</p>
<div id="orgd8d51db" class="figure">
<div id="orgcc86228" class="figure">
<p><img src="figs/dvf_plant_coupling.png" alt="dvf_plant_coupling.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Transfer function from the Actuator force \(F_{i}\) to the Relative Motion Sensor \(D_{m,j}\) with \(i \neq j\) (<a href="./figs/dvf_plant_coupling.png">png</a>, <a href="./figs/dvf_plant_coupling.pdf">pdf</a>)</p>
@ -631,9 +635,9 @@ The transfer function from actuator forces to relative motion sensors is shown i
</div>
<div id="outline-container-org8f71141" class="outline-3">
<h3 id="org8f71141"><span class="section-number-3">3.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div class="outline-text-3" id="text-3-2">
<div id="outline-container-orgcdb3ee5" class="outline-3">
<h3 id="orgcdb3ee5">Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div class="outline-text-3" id="text-orgcdb3ee5">
<p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p>
@ -646,10 +650,10 @@ Gf.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string"
</div>
<p>
The new dynamics from force actuator to relative motion sensor is shown in Figure <a href="#orgb18f950">10</a>.
The new dynamics from force actuator to relative motion sensor is shown in Figure <a href="#org5a86447">10</a>.
</p>
<div id="orgb18f950" class="figure">
<div id="org5a86447" class="figure">
<p><img src="figs/dvf_plant_flexible_joint_decentralized.png" alt="dvf_plant_flexible_joint_decentralized.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Transfer function from the Actuator force \(F_{i}\) to the relative displacement sensor \(D_{m,i}\) (<a href="./figs/dvf_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/dvf_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
@ -657,9 +661,9 @@ The new dynamics from force actuator to relative motion sensor is shown in Figur
</div>
</div>
<div id="outline-container-org87c6911" class="outline-3">
<h3 id="org87c6911"><span class="section-number-3">3.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-3-3">
<div id="outline-container-orgff0cbf9" class="outline-3">
<h3 id="orgff0cbf9">Obtained Damping</h3>
<div class="outline-text-3" id="text-orgff0cbf9">
<p>
The control is a performed in a decentralized manner.
The \(6 \times 6\) control is a diagonal matrix with pure derivative action on the diagonal:
@ -672,17 +676,17 @@ The \(6 \times 6\) control is a diagonal matrix with pure derivative action on t
</p>
<p>
The root locus is shown in figure <a href="#org5cb31c8">11</a> and the obtained pole damping function of the control gain is shown in figure <a href="#org4618492">12</a>.
The root locus is shown in figure <a href="#org277d60d">11</a> and the obtained pole damping function of the control gain is shown in figure <a href="#orgd673396">12</a>.
</p>
<div id="org5cb31c8" class="figure">
<div id="org277d60d" class="figure">
<p><img src="figs/root_locus_dvf_rot_stiffness.png" alt="root_locus_dvf_rot_stiffness.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Root Locus plot with Direct Velocity Feedback when considering the Stiffness of flexible joints (<a href="./figs/root_locus_dvf_rot_stiffness.png">png</a>, <a href="./figs/root_locus_dvf_rot_stiffness.pdf">pdf</a>)</p>
</div>
<div id="org4618492" class="figure">
<div id="orgd673396" class="figure">
<p><img src="figs/pole_damping_gain_dvf_rot_stiffness.png" alt="pole_damping_gain_dvf_rot_stiffness.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Damping of the poles with respect to the gain of the Direct Velocity Feedback when considering the Stiffness of flexible joints (<a href="./figs/pole_damping_gain_dvf_rot_stiffness.png">png</a>, <a href="./figs/pole_damping_gain_dvf_rot_stiffness.pdf">pdf</a>)</p>
@ -690,9 +694,9 @@ The root locus is shown in figure <a href="#org5cb31c8">11</a> and the obtained
</div>
</div>
<div id="outline-container-org516fed1" class="outline-3">
<h3 id="org516fed1"><span class="section-number-3">3.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-4">
<div id="outline-container-org4027234" class="outline-3">
<h3 id="org4027234">Conclusion</h3>
<div class="outline-text-3" id="text-org4027234">
<div class="important">
<p>
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors.
@ -705,7 +709,7 @@ Joint stiffness does increase the resonance frequencies of the system but does n
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-06 jeu. 15:39</p>
<p class="date">Created: 2020-02-11 mar. 15:26</p>
</div>
</body>
</html>

View File

@ -5,7 +5,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>
<!-- 2020-01-22 mer. 16:31 -->
<!-- 2020-02-11 mar. 15:23 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Control Study</title>
@ -247,31 +247,16 @@ for the JavaScript code in this tag.
}
/*]]>*///-->
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
displayAlign: "center",
displayIndent: "0em",
"HTML-CSS": { scale: 100,
linebreaks: { automatic: "false" },
webFont: "TeX"
},
SVG: {scale: 100,
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em",
Macros: {
bm: ["{\\boldsymbol #1}",1],
<script>
MathJax = {
tex: { macros: {
bm: ["\\boldsymbol{#1}",1],
}
}
});
};
</script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<body>
<div id="org-div-home-and-up">
@ -284,39 +269,38 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgd132186">1. First Control Architecture</a>
<li><a href="#orgc1805a8">First Control Architecture</a>
<ul>
<li><a href="#orgf511610">1.1. Control Schematic</a></li>
<li><a href="#org210df0e">1.2. Initialize the Stewart platform</a></li>
<li><a href="#org2be78af">1.3. Initialize the Simulation</a></li>
<li><a href="#org032eb91">1.4. Identification of the plant</a></li>
<li><a href="#org7cd44a9">1.5. Plant Analysis</a></li>
<li><a href="#orgcff4d92">1.6. Controller Design</a></li>
<li><a href="#org066d914">Control Schematic</a></li>
<li><a href="#org64f6d6b">Initialize the Stewart platform</a></li>
<li><a href="#org4493ec7">Identification of the plant</a></li>
<li><a href="#org72dad5c">Plant Analysis</a></li>
<li><a href="#orga9fb0f5">Controller Design</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-orgd132186" class="outline-2">
<h2 id="orgd132186"><span class="section-number-2">1</span> First Control Architecture</h2>
<div class="outline-text-2" id="text-1">
<div id="outline-container-orgc1805a8" class="outline-2">
<h2 id="orgc1805a8">First Control Architecture</h2>
<div class="outline-text-2" id="text-orgc1805a8">
</div>
<div id="outline-container-orgf511610" class="outline-3">
<h3 id="orgf511610"><span class="section-number-3">1.1</span> Control Schematic</h3>
<div class="outline-text-3" id="text-1-1">
<div id="outline-container-org066d914" class="outline-3">
<h3 id="org066d914">Control Schematic</h3>
<div class="outline-text-3" id="text-org066d914">
<div class="org-src-container">
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
<span class="org-comment">% Blocs</span>
<span class="org-font-latex-sedate">\node</span>[block] (J) at (0, 0) {<span class="org-font-latex-math">$J$</span>};
<span class="org-font-latex-sedate">\node</span>[addb={+}{}{}{}{-}, right=1 of J] (subr) {};
<span class="org-font-latex-sedate">\node</span>[block, right=0.8 of subr] (K) {<span class="org-font-latex-math">$K</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{L}</span></span><span class="org-font-latex-math">$</span>};
<span class="org-font-latex-sedate">\node</span>[block, right=1 of K] (G) {<span class="org-font-latex-math">$G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{L}</span></span><span class="org-font-latex-math">$</span>};
<span class="org-font-latex-sedate">\node</span>[block, right=0.8 of subr] (K) {<span class="org-font-latex-math">$K</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">{L}$</span>};
<span class="org-font-latex-sedate">\node</span>[block, right=1 of K] (G) {<span class="org-font-latex-math">$G</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">{L}$</span>};
<span class="org-comment">% Connections and labels</span>
<span class="org-font-latex-sedate">\draw</span>[&lt;-] (J.west)node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\bm</span></span><span class="org-font-latex-math">{r}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{n}</span></span><span class="org-font-latex-math">$</span>} -- ++(-1, 0);
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (J.east) -- (subr.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\bm</span></span><span class="org-font-latex-math">{r}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{L}</span></span><span class="org-font-latex-math">$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (subr.east) -- (K.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\bm</span></span><span class="org-font-latex-math">{</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\epsilon</span></span><span class="org-font-latex-math">}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_{L}</span></span><span class="org-font-latex-math">$</span>};
<span class="org-font-latex-sedate">\draw</span>[&lt;-] (J.west)node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\bm</span></span><span class="org-font-latex-math">{r}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">{n}$</span>} -- ++(-1, 0);
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (J.east) -- (subr.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\bm</span></span><span class="org-font-latex-math">{r}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">{L}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (subr.east) -- (K.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\bm</span></span><span class="org-font-latex-math">{</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\epsilon</span></span><span class="org-font-latex-math">}</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">{L}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (K.east) -- (G.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\bm</span></span><span class="org-font-latex-math">{</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tau</span></span><span class="org-font-latex-math">}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (G.east) node[above right]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\bm</span></span><span class="org-font-latex-math">{L}$</span>} -| (<span class="org-font-latex-math">$(G.east)+(1, -1)$</span>) -| (subr.south);
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
@ -331,34 +315,27 @@ for the JavaScript code in this tag.
</div>
</div>
<div id="outline-container-org210df0e" class="outline-3">
<h3 id="org210df0e"><span class="section-number-3">1.2</span> Initialize the Stewart platform</h3>
<div class="outline-text-3" id="text-1-2">
<div id="outline-container-org64f6d6b" class="outline-3">
<h3 id="org64f6d6b">Initialize the Stewart platform</h3>
<div class="outline-text-3" id="text-org64f6d6b">
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
<span class="org-comment">% stewart = generateCubicConfiguration(stewart, 'Hc', 60e-3, 'FOc', 45e-3, 'FHa', 5e-3, 'MHb', 5e-3);</span>
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, 1e6<span class="org-type">*</span>ones(6,1), <span class="org-string">'Ci'</span>, 1e2<span class="org-type">*</span>ones(6,1));
stewart = initializeStrutDynamics(stewart);
stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
</pre>
</div>
</div>
</div>
<div id="outline-container-org2be78af" class="outline-3">
<h3 id="org2be78af"><span class="section-number-3">1.3</span> Initialize the Simulation</h3>
<div class="outline-text-3" id="text-1-3">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'mat/conf_simscape.mat'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org032eb91" class="outline-3">
<h3 id="org032eb91"><span class="section-number-3">1.4</span> Identification of the plant</h3>
<div class="outline-text-3" id="text-1-4">
<div id="outline-container-org4493ec7" class="outline-3">
<h3 id="org4493ec7">Identification of the plant</h3>
<div class="outline-text-3" id="text-org4493ec7">
<p>
Let&rsquo;s identify the transfer function from \(\bm{\tau}}\) to \(\bm{L}\).
</p>
@ -384,18 +361,18 @@ G.OutputName = {<span class="org-string">'L1'</span>, <span class="org-string">'
</div>
</div>
<div id="outline-container-org7cd44a9" class="outline-3">
<h3 id="org7cd44a9"><span class="section-number-3">1.5</span> Plant Analysis</h3>
<div class="outline-text-3" id="text-1-5">
<div id="outline-container-org72dad5c" class="outline-3">
<h3 id="org72dad5c">Plant Analysis</h3>
<div class="outline-text-3" id="text-org72dad5c">
<p>
Diagonal terms
Compare to off-diagonal terms
</p>
</div>
</div>
<div id="outline-container-orgcff4d92" class="outline-3">
<h3 id="orgcff4d92"><span class="section-number-3">1.6</span> Controller Design</h3>
<div class="outline-text-3" id="text-1-6">
<div id="outline-container-orga9fb0f5" class="outline-3">
<h3 id="orga9fb0f5">Controller Design</h3>
<div class="outline-text-3" id="text-orga9fb0f5">
<p>
One integrator should be present in the controller.
</p>
@ -424,7 +401,7 @@ Kl = Kl <span class="org-type">*</span> eye(6);
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-01-22 mer. 16:31</p>
<p class="date">Created: 2020-02-11 mar. 15:23</p>
</div>
</body>
</html>

View File

@ -4,7 +4,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>
<!-- 2020-02-07 ven. 17:31 -->
<!-- 2020-02-11 mar. 15:26 -->
<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>
@ -268,25 +268,27 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org16a66cd">1. Configuration Analysis - Stiffness Matrix</a>
<li><a href="#org8c6677e">Configuration Analysis - Stiffness Matrix</a>
<ul>
<li><a href="#orgd83749a">1.1. Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center</a></li>
<li><a href="#org84204db">1.2. Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</a></li>
<li><a href="#orgada859c">1.3. Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center</a></li>
<li><a href="#org8b2c367">1.4. Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</a></li>
<li><a href="#org34d7a0d">1.5. Conclusion</a></li>
<li><a href="#org265d677">1.6. Having Cube&rsquo;s center above the top platform</a></li>
<li><a href="#orgf6f7ad2">Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center</a></li>
<li><a href="#orga88e79a">Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</a></li>
<li><a href="#orge02ec88">Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center</a></li>
<li><a href="#org43fd7e4">Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</a></li>
<li><a href="#orgd35acc0">Conclusion</a></li>
<li><a href="#org8afa645">Having Cube&rsquo;s center above the top platform</a></li>
</ul>
</li>
<li><a href="#org93a8538">2. Functions</a>
<li><a href="#org3044455">Functions</a>
<ul>
<li><a href="#org8786798">2.1. <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</a>
<li><a href="#org56504f1"><code>generateCubicConfiguration</code>: Generate a Cubic Configuration</a>
<ul>
<li><a href="#org0b63bb1">Function description</a></li>
<li><a href="#orgaac7da3">Documentation</a></li>
<li><a href="#org747c61c">Optional Parameters</a></li>
<li><a href="#orgec4e738">Position of the Cube</a></li>
<li><a href="#org97e1d45">Compute the pose</a></li>
<li><a href="#orga5a9ba8">Function description</a></li>
<li><a href="#org3253792">Documentation</a></li>
<li><a href="#org154b5fb">Optional Parameters</a></li>
<li><a href="#orgbb480a6">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org771c630">Position of the Cube</a></li>
<li><a href="#org3a2f468">Compute the pose</a></li>
<li><a href="#org8c1af4f">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
</ul>
@ -313,7 +315,7 @@ According to <a class='org-ref-reference' href="#preumont07_six_axis_singl_stage
</p>
<p>
To generate and study the Cubic configuration, <code>generateCubicConfiguration</code> is used (description in section <a href="#orgf3011db">2.1</a>).
To generate and study the Cubic configuration, <code>generateCubicConfiguration</code> is used (description in section <a href="#orga8311d3">No description for this link</a>).
The goal is to study the benefits of using a cubic configuration:
</p>
<ul class="org-ul">
@ -322,20 +324,21 @@ The goal is to study the benefits of using a cubic configuration:
<li>Is the center of the cube an important point?</li>
</ul>
<div id="outline-container-org16a66cd" class="outline-2">
<h2 id="org16a66cd"><span class="section-number-2">1</span> Configuration Analysis - Stiffness Matrix</h2>
<div class="outline-text-2" id="text-1">
<div id="outline-container-org8c6677e" class="outline-2">
<h2 id="org8c6677e">Configuration Analysis - Stiffness Matrix</h2>
<div class="outline-text-2" id="text-org8c6677e">
</div>
<div id="outline-container-orgd83749a" class="outline-3">
<h3 id="orgd83749a"><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 id="outline-container-orgf6f7ad2" class="outline-3">
<h3 id="orgf6f7ad2">Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center</h3>
<div class="outline-text-3" id="text-orgf6f7ad2">
<p>
We create a cubic Stewart platform (figure <a href="#org0e6176c">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="#org9454f54">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 class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, <span class="org-type">-</span>50e<span class="org-type">-</span>3);
<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 = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 50e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1));
@ -345,14 +348,14 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
</div>
<div id="org0e6176c" class="figure">
<div id="org9454f54" 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>
</div>
<div id="orgf0479ad" class="figure">
<div id="orgaba20c8" class="figure">
<p><img src="figs/cubic_conf_centered_J_center.png" alt="cubic_conf_centered_J_center.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Cubic Stewart platform centered with the cube center - Jacobian estimated at the cube center (<a href="./figs/cubic_conf_centered_J_center.png">png</a>, <a href="./figs/cubic_conf_centered_J_center.pdf">pdf</a>)</p>
@ -433,16 +436,17 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
</div>
</div>
<div id="outline-container-org84204db" class="outline-3">
<h3 id="org84204db"><span class="section-number-3">1.2</span> Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</h3>
<div class="outline-text-3" id="text-1-2">
<div id="outline-container-orga88e79a" class="outline-3">
<h3 id="orga88e79a">Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center</h3>
<div class="outline-text-3" id="text-orga88e79a">
<p>
We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure <a href="#org0e6176c">1</a>).
We create a cubic Stewart platform with center of the cube located at the center of the Stewart platform (figure <a href="#org9454f54">1</a>).
The Jacobian matrix is not estimated at the location of the center of the cube.
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 0);
<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 = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 50e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1));
@ -452,7 +456,7 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
</div>
<div id="org7a8523c" class="figure">
<div id="org47f8142" class="figure">
<p><img src="figs/cubic_conf_centered_J_not_center.png" alt="cubic_conf_centered_J_not_center.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Cubic Stewart platform centered with the cube center - Jacobian not estimated at the cube center (<a href="./figs/cubic_conf_centered_J_not_center.png">png</a>, <a href="./figs/cubic_conf_centered_J_not_center.pdf">pdf</a>)</p>
@ -533,23 +537,24 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
</div>
</div>
<div id="outline-container-orgada859c" class="outline-3">
<h3 id="orgada859c"><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 id="outline-container-orge02ec88" class="outline-3">
<h3 id="orge02ec88">Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center</h3>
<div class="outline-text-3" id="text-orge02ec88">
<p>
Here, the &ldquo;center&rdquo; of the Stewart platform is not at the cube center (figure <a href="#org9e92807">4</a>).
Here, the &ldquo;center&rdquo; of the Stewart platform is not at the cube center (figure <a href="#org97b319c">4</a>).
The Jacobian is estimated at the cube center.
</p>
<div id="org9e92807" class="figure">
<div id="org97b319c" class="figure">
<p><img src="./figs/3d-cubic-stewart-misaligned.png" alt="3d-cubic-stewart-misaligned.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Not centered cubic configuration</p>
</div>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 80e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, <span class="org-type">-</span>40e<span class="org-type">-</span>3);
<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 = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 50e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1));
@ -559,7 +564,7 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
</div>
<div id="orgcc43044" 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>
<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>
@ -644,9 +649,9 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
</div>
</div>
<div id="outline-container-org8b2c367" class="outline-3">
<h3 id="org8b2c367"><span class="section-number-3">1.4</span> Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</h3>
<div class="outline-text-3" id="text-1-4">
<div id="outline-container-org43fd7e4" class="outline-3">
<h3 id="org43fd7e4">Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center</h3>
<div class="outline-text-3" id="text-org43fd7e4">
<p>
Here, the &ldquo;center&rdquo; of the Stewart platform is not at the cube center.
The Jacobian is estimated at the center of the Stewart platform.
@ -660,7 +665,8 @@ The center of the cube from the top platform is at \(z = 110 - 175 = -65\).
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 80e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, <span class="org-type">-</span>40e<span class="org-type">-</span>3);
<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 = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 50e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 0, <span class="org-string">'MHb'</span>, 0);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1));
@ -670,7 +676,7 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
</div>
<div id="org57db017" 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>
<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>
@ -751,9 +757,9 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
</div>
</div>
<div id="outline-container-org34d7a0d" class="outline-3">
<h3 id="org34d7a0d"><span class="section-number-3">1.5</span> Conclusion</h3>
<div class="outline-text-3" id="text-1-5">
<div id="outline-container-orgd35acc0" class="outline-3">
<h3 id="orgd35acc0">Conclusion</h3>
<div class="outline-text-3" id="text-orgd35acc0">
<div class="important">
<ul class="org-ul">
<li>The cubic configuration permits to have \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\)</li>
@ -764,9 +770,9 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
</div>
</div>
<div id="outline-container-org265d677" class="outline-3">
<h3 id="org265d677"><span class="section-number-3">1.6</span> Having Cube&rsquo;s center above the top platform</h3>
<div class="outline-text-3" id="text-1-6">
<div id="outline-container-org8afa645" class="outline-3">
<h3 id="org8afa645">Having Cube&rsquo;s center above the top platform</h3>
<div class="outline-text-3" id="text-org8afa645">
<p>
Let&rsquo;s say we want to have a decouple dynamics above the top platform.
Thus, we want the cube&rsquo;s center to be located above the top center.
@ -779,7 +785,8 @@ It is possible to have small cube, but then to configuration is a little bit str
</ul>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 100e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 50e<span class="org-type">-</span>3);
<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>, 50e<span class="org-type">-</span>3);
FOc = stewart.H <span class="org-type">+</span> stewart.MO_B(3);
Hc = 2<span class="org-type">*</span>(stewart.H <span class="org-type">+</span> stewart.MO_B(3));
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, Hc, <span class="org-string">'FOc'</span>, FOc, <span class="org-string">'FHa'</span>, 10e<span class="org-type">-</span>3, <span class="org-string">'MHb'</span>, 10e<span class="org-type">-</span>3);
@ -873,19 +880,19 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
</div>
</div>
<div id="outline-container-org93a8538" class="outline-2">
<h2 id="org93a8538"><span class="section-number-2">2</span> Functions</h2>
<div class="outline-text-2" id="text-2">
<div id="outline-container-org3044455" class="outline-2">
<h2 id="org3044455">Functions</h2>
<div class="outline-text-2" id="text-org3044455">
<p>
<a id="org44c44dc"></a>
<a id="org28ba607"></a>
</p>
</div>
<div id="outline-container-org8786798" class="outline-3">
<h3 id="org8786798"><span class="section-number-3">2.1</span> <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</h3>
<div class="outline-text-3" id="text-2-1">
<div id="outline-container-org56504f1" class="outline-3">
<h3 id="org56504f1"><code>generateCubicConfiguration</code>: Generate a Cubic Configuration</h3>
<div class="outline-text-3" id="text-org56504f1">
<p>
<a id="orgf3011db"></a>
<a id="orga8311d3"></a>
</p>
<p>
@ -893,9 +900,9 @@ This Matlab function is accessible <a href="src/generateCubicConfiguration.m">he
</p>
</div>
<div id="outline-container-org0b63bb1" class="outline-4">
<h4 id="org0b63bb1">Function description</h4>
<div class="outline-text-4" id="text-org0b63bb1">
<div id="outline-container-orga5a9ba8" class="outline-4">
<h4 id="orga5a9ba8">Function description</h4>
<div class="outline-text-4" id="text-orga5a9ba8">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[stewart]</span> = <span class="org-function-name">generateCubicConfiguration</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% generateCubicConfiguration - Generate a Cubic Configuration</span>
@ -904,7 +911,7 @@ This Matlab function is accessible <a href="src/generateCubicConfiguration.m">he
<span class="org-comment">%</span>
<span class="org-comment">% Inputs:</span>
<span class="org-comment">% - stewart - A structure with the following fields</span>
<span class="org-comment">% - H [1x1] - Total height of the platform [m]</span>
<span class="org-comment">% - geometry.H [1x1] - Total height of the platform [m]</span>
<span class="org-comment">% - args - Can have the following fields:</span>
<span class="org-comment">% - Hc [1x1] - Height of the "useful" part of the cube [m]</span>
<span class="org-comment">% - FOc [1x1] - Height of the center of the cube with respect to {F} [m]</span>
@ -913,18 +920,18 @@ This Matlab function is accessible <a href="src/generateCubicConfiguration.m">he
<span class="org-comment">%</span>
<span class="org-comment">% Outputs:</span>
<span class="org-comment">% - stewart - updated Stewart structure with the added fields:</span>
<span class="org-comment">% - Fa [3x6] - Its i'th column is the position vector of joint ai with respect to {F}</span>
<span class="org-comment">% - Mb [3x6] - Its i'th column is the position vector of joint bi with respect to {M}</span>
<span class="org-comment">% - platform_F.Fa [3x6] - Its i'th column is the position vector of joint ai with respect to {F}</span>
<span class="org-comment">% - platform_M.Mb [3x6] - Its i'th column is the position vector of joint bi with respect to {M}</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgaac7da3" class="outline-4">
<h4 id="orgaac7da3">Documentation</h4>
<div class="outline-text-4" id="text-orgaac7da3">
<div id="outline-container-org3253792" class="outline-4">
<h4 id="org3253792">Documentation</h4>
<div class="outline-text-4" id="text-org3253792">
<div id="orgc2715ee" class="figure">
<div id="org8a7f3d8" class="figure">
<p><img src="figs/cubic-configuration-definition.png" alt="cubic-configuration-definition.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Cubic Configuration</p>
@ -932,9 +939,9 @@ This Matlab function is accessible <a href="src/generateCubicConfiguration.m">he
</div>
</div>
<div id="outline-container-org747c61c" class="outline-4">
<h4 id="org747c61c">Optional Parameters</h4>
<div class="outline-text-4" id="text-org747c61c">
<div id="outline-container-org154b5fb" class="outline-4">
<h4 id="org154b5fb">Optional Parameters</h4>
<div class="outline-text-4" id="text-org154b5fb">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -948,9 +955,20 @@ This Matlab function is accessible <a href="src/generateCubicConfiguration.m">he
</div>
</div>
<div id="outline-container-orgec4e738" class="outline-4">
<h4 id="orgec4e738">Position of the Cube</h4>
<div class="outline-text-4" id="text-orgec4e738">
<div id="outline-container-orgbb480a6" class="outline-4">
<h4 id="orgbb480a6">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-orgbb480a6">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.geometry, <span class="org-string">'H'</span>), <span class="org-string">'stewart.geometry should have attribute H'</span>)
H = stewart.geometry.H;
</pre>
</div>
</div>
</div>
<div id="outline-container-org771c630" class="outline-4">
<h4 id="org771c630">Position of the Cube</h4>
<div class="outline-text-4" id="text-org771c630">
<p>
We define the useful points of the cube with respect to the Cube&rsquo;s center.
\({}^{C}C\) are the 6 vertices of the cubes expressed in a frame {C} which is
@ -975,9 +993,9 @@ CCm = [Cc(<span class="org-type">:</span>,2), Cc(<span class="org-type">:</span>
</div>
</div>
<div id="outline-container-org97e1d45" class="outline-4">
<h4 id="org97e1d45">Compute the pose</h4>
<div class="outline-text-4" id="text-org97e1d45">
<div id="outline-container-org3a2f468" class="outline-4">
<h4 id="org3a2f468">Compute the pose</h4>
<div class="outline-text-4" id="text-org3a2f468">
<p>
We can compute the vector of each leg \({}^{C}\hat{\bm{s}}_{i}\) (unit vector from \({}^{C}C_{f}\) to \({}^{C}C_{m}\)).
</p>
@ -990,8 +1008,19 @@ We can compute the vector of each leg \({}^{C}\hat{\bm{s}}_{i}\) (unit vector fr
We now which to compute the position of the joints \(a_{i}\) and \(b_{i}\).
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart.Fa = CCf <span class="org-type">+</span> [0; 0; args.FOc] <span class="org-type">+</span> ((args.FHa<span class="org-type">-</span>(args.FOc<span class="org-type">-</span>args.Hc<span class="org-type">/</span>2))<span class="org-type">./</span>CSi(3,<span class="org-type">:</span>))<span class="org-type">.*</span>CSi;
stewart.Mb = CCf <span class="org-type">+</span> [0; 0; args.FOc<span class="org-type">-</span>stewart.H] <span class="org-type">+</span> ((stewart.H<span class="org-type">-</span>args.MHb<span class="org-type">-</span>(args.FOc<span class="org-type">-</span>args.Hc<span class="org-type">/</span>2))<span class="org-type">./</span>CSi(3,<span class="org-type">:</span>))<span class="org-type">.*</span>CSi;
<pre class="src src-matlab">Fa = CCf <span class="org-type">+</span> [0; 0; args.FOc] <span class="org-type">+</span> ((args.FHa<span class="org-type">-</span>(args.FOc<span class="org-type">-</span>args.Hc<span class="org-type">/</span>2))<span class="org-type">./</span>CSi(3,<span class="org-type">:</span>))<span class="org-type">.*</span>CSi;
Mb = CCf <span class="org-type">+</span> [0; 0; args.FOc<span class="org-type">-</span>H] <span class="org-type">+</span> ((H<span class="org-type">-</span>args.MHb<span class="org-type">-</span>(args.FOc<span class="org-type">-</span>args.Hc<span class="org-type">/</span>2))<span class="org-type">./</span>CSi(3,<span class="org-type">:</span>))<span class="org-type">.*</span>CSi;
</pre>
</div>
</div>
</div>
<div id="outline-container-org8c1af4f" class="outline-4">
<h4 id="org8c1af4f">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org8c1af4f">
<div class="org-src-container">
<pre class="src src-matlab">stewart.platform_F.Fa = Fa;
stewart.platform_M.Mb = Mb;
</pre>
</div>
</div>
@ -1003,14 +1032,14 @@ stewart.Mb = CCf <span class="org-type">+</span> [0; 0; args.FOc<span class="org
<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="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>
<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>
<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>
</ul>
</p>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-07 ven. 17:31</p>
<p class="date">Created: 2020-02-11 mar. 15:26</p>
</div>
</body>
</html>

View File

@ -1,11 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-01-22 mer. 16:31 -->
<!-- 2020-02-11 mar. 15:27 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Dynamics Study</title>
@ -247,31 +246,16 @@ for the JavaScript code in this tag.
}
/*]]>*///-->
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
displayAlign: "center",
displayIndent: "0em",
"HTML-CSS": { scale: 100,
linebreaks: { automatic: "false" },
webFont: "TeX"
},
SVG: {scale: 100,
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em",
Macros: {
bm: ["{\\boldsymbol #1}",1],
<script>
MathJax = {
tex: { macros: {
bm: ["\\boldsymbol{#1}",1],
}
}
});
};
</script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<body>
<div id="org-div-home-and-up">
@ -284,26 +268,26 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgf59f0f9">1. Some tests</a>
<li><a href="#orgdae5fe1">Some tests</a>
<ul>
<li><a href="#orgaf3d924">1.1. Simscape Model</a></li>
<li><a href="#org7312203">1.2. test</a></li>
<li><a href="#org9daf767">1.3. Compare external forces and forces applied by the actuators</a></li>
<li><a href="#org2a5345f">1.4. Comparison of the static transfer function and the Compliance matrix</a></li>
<li><a href="#org089f223">1.5. Transfer function from forces applied in the legs to the displacement of the legs</a></li>
<li><a href="#orga032902">Simscape Model</a></li>
<li><a href="#orgdbd3cde">test</a></li>
<li><a href="#orgc59e712">Compare external forces and forces applied by the actuators</a></li>
<li><a href="#org81ab204">Comparison of the static transfer function and the Compliance matrix</a></li>
<li><a href="#orge663148">Transfer function from forces applied in the legs to the displacement of the legs</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-orgf59f0f9" class="outline-2">
<h2 id="orgf59f0f9"><span class="section-number-2">1</span> Some tests</h2>
<div class="outline-text-2" id="text-1">
<div id="outline-container-orgdae5fe1" class="outline-2">
<h2 id="orgdae5fe1">Some tests</h2>
<div class="outline-text-2" id="text-orgdae5fe1">
</div>
<div id="outline-container-orgaf3d924" class="outline-3">
<h3 id="orgaf3d924"><span class="section-number-3">1.1</span> Simscape Model</h3>
<div class="outline-text-3" id="text-1-1">
<div id="outline-container-orga032902" class="outline-3">
<h3 id="orga032902">Simscape Model</h3>
<div class="outline-text-3" id="text-orga032902">
<div class="org-src-container">
<pre class="src src-matlab">open(<span class="org-string">'stewart_platform_dynamics.slx'</span>)
</pre>
@ -311,15 +295,19 @@ for the JavaScript code in this tag.
</div>
</div>
<div id="outline-container-org7312203" class="outline-3">
<h3 id="org7312203"><span class="section-number-3">1.2</span> test</h3>
<div class="outline-text-3" id="text-1-2">
<div id="outline-container-orgdbd3cde" class="outline-3">
<h3 id="orgdbd3cde">test</h3>
<div class="outline-text-3" id="text-orgdbd3cde">
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 60e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 45e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 5e<span class="org-type">-</span>3, <span class="org-string">'MHb'</span>, 5e<span class="org-type">-</span>3);
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, 1e6<span class="org-type">*</span>ones(6,1), <span class="org-string">'Ci'</span>, 1e2<span class="org-type">*</span>ones(6,1));
stewart = initializeStrutDynamics(stewart);
stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
</pre>
</div>
@ -408,18 +396,22 @@ bode(Gd, G)
</div>
</div>
<div id="outline-container-org9daf767" class="outline-3">
<h3 id="org9daf767"><span class="section-number-3">1.3</span> Compare external forces and forces applied by the actuators</h3>
<div class="outline-text-3" id="text-1-3">
<div id="outline-container-orgc59e712" class="outline-3">
<h3 id="orgc59e712">Compare external forces and forces applied by the actuators</h3>
<div class="outline-text-3" id="text-orgc59e712">
<p>
Initialization of the Stewart platform.
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 60e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 45e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 5e<span class="org-type">-</span>3, <span class="org-string">'MHb'</span>, 5e<span class="org-type">-</span>3);
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, 1e6<span class="org-type">*</span>ones(6,1), <span class="org-string">'Ci'</span>, 1e2<span class="org-type">*</span>ones(6,1));
stewart = initializeStrutDynamics(stewart);
stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
</pre>
</div>
@ -489,18 +481,22 @@ Seems quite similar.
</div>
</div>
<div id="outline-container-org2a5345f" class="outline-3">
<h3 id="org2a5345f"><span class="section-number-3">1.4</span> Comparison of the static transfer function and the Compliance matrix</h3>
<div class="outline-text-3" id="text-1-4">
<div id="outline-container-org81ab204" class="outline-3">
<h3 id="org81ab204">Comparison of the static transfer function and the Compliance matrix</h3>
<div class="outline-text-3" id="text-org81ab204">
<p>
Initialization of the Stewart platform.
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 60e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 45e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 5e<span class="org-type">-</span>3, <span class="org-string">'MHb'</span>, 5e<span class="org-type">-</span>3);
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, 1e6<span class="org-type">*</span>ones(6,1), <span class="org-string">'Ci'</span>, 1e2<span class="org-type">*</span>ones(6,1));
stewart = initializeStrutDynamics(stewart);
stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
</pre>
</div>
@ -688,18 +684,22 @@ The low frequency transfer function matrix from \(\mathcal{\bm{F}}\) to \(\mathc
</div>
</div>
<div id="outline-container-org089f223" class="outline-3">
<h3 id="org089f223"><span class="section-number-3">1.5</span> Transfer function from forces applied in the legs to the displacement of the legs</h3>
<div class="outline-text-3" id="text-1-5">
<div id="outline-container-orge663148" class="outline-3">
<h3 id="orge663148">Transfer function from forces applied in the legs to the displacement of the legs</h3>
<div class="outline-text-3" id="text-orge663148">
<p>
Initialization of the Stewart platform.
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, 60e<span class="org-type">-</span>3, <span class="org-string">'FOc'</span>, 45e<span class="org-type">-</span>3, <span class="org-string">'FHa'</span>, 5e<span class="org-type">-</span>3, <span class="org-string">'MHb'</span>, 5e<span class="org-type">-</span>3);
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, 1e6<span class="org-type">*</span>ones(6,1), <span class="org-string">'Ci'</span>, 1e2<span class="org-type">*</span>ones(6,1));
stewart = initializeStrutDynamics(stewart);
stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
</pre>
</div>
@ -742,7 +742,7 @@ G.OutputName = {<span class="org-string">'L1'</span>, <span class="org-string">'
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-01-22 mer. 16:31</p>
<p class="date">Created: 2020-02-11 mar. 15:27</p>
</div>
</body>
</html>

1
docs/figs Symbolic link
View File

@ -0,0 +1 @@
../figs

View File

@ -4,7 +4,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>
<!-- 2020-01-29 mer. 17:51 -->
<!-- 2020-02-11 mar. 15:26 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Identification of the Stewart Platform using Simscape</title>
@ -268,37 +268,37 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgbb8fbdb">1. Identification</a>
<li><a href="#orgf65174f">Identification</a>
<ul>
<li><a href="#orgaf697f9">1.1. Simscape Model</a></li>
<li><a href="#org22cb9e4">1.2. Initialize the Stewart Platform</a></li>
<li><a href="#org9768dca">1.3. Identification</a></li>
<li><a href="#org5b89813">Simscape Model</a></li>
<li><a href="#org2bfdf1b">Initialize the Stewart Platform</a></li>
<li><a href="#org0d97b27">Identification</a></li>
</ul>
</li>
<li><a href="#orge931438">2. States as the motion of the mobile platform</a>
<li><a href="#orge464de2">States as the motion of the mobile platform</a>
<ul>
<li><a href="#org601fc1e">2.1. Initialize the Stewart Platform</a></li>
<li><a href="#org85bc459">2.2. Identification</a></li>
<li><a href="#org889aae3">2.3. Coordinate transformation</a></li>
<li><a href="#orgae4b421">2.4. Analysis</a></li>
<li><a href="#orge3b2a28">2.5. Visualizing the modes</a></li>
<li><a href="#orgac2b65a">2.6. Identification</a></li>
<li><a href="#orgd845f17">2.7. Change of states</a></li>
<li><a href="#org987daca">Initialize the Stewart Platform</a></li>
<li><a href="#orgc808316">Identification</a></li>
<li><a href="#orge68adea">Coordinate transformation</a></li>
<li><a href="#org4973ae1">Analysis</a></li>
<li><a href="#orge7b97c8">Visualizing the modes</a></li>
<li><a href="#org5d63457">Identification</a></li>
<li><a href="#orgf7a52cb">Change of states</a></li>
</ul>
</li>
<li><a href="#org4989001">3. Simple Model without any sensor</a>
<li><a href="#org23d7e7b">Simple Model without any sensor</a>
<ul>
<li><a href="#org3ea636a">3.1. Simscape Model</a></li>
<li><a href="#org9a6cc53">3.2. Initialize the Stewart Platform</a></li>
<li><a href="#org13a12f8">3.3. Identification</a></li>
<li><a href="#org69b8a98">Simscape Model</a></li>
<li><a href="#org4aef27a">Initialize the Stewart Platform</a></li>
<li><a href="#orgb9fd532">Identification</a></li>
</ul>
</li>
<li><a href="#org33bdc22">4. Cartesian Plot</a></li>
<li><a href="#org6cfcaf6">5. From a force to force sensor</a></li>
<li><a href="#orge759120">6. From a force applied in the leg to the displacement of the leg</a></li>
<li><a href="#org6165b05">7. Transmissibility</a></li>
<li><a href="#orge32e4db">8. Compliance</a></li>
<li><a href="#org6c094f6">9. Inertial</a></li>
<li><a href="#org0502cd2">Cartesian Plot</a></li>
<li><a href="#org32e2eb3">From a force to force sensor</a></li>
<li><a href="#org8ddfd2c">From a force applied in the leg to the displacement of the leg</a></li>
<li><a href="#org5685537">Transmissibility</a></li>
<li><a href="#org3335d1e">Compliance</a></li>
<li><a href="#org5ca7af8">Inertial</a></li>
</ul>
</div>
</div>
@ -396,19 +396,20 @@ An important difference from basic Simulink models is that the states in a physi
<div id="outline-container-orgbb8fbdb" class="outline-2">
<h2 id="orgbb8fbdb"><span class="section-number-2">1</span> Identification</h2>
<div class="outline-text-2" id="text-1">
<div id="outline-container-orgf65174f" class="outline-2">
<h2 id="orgf65174f">Identification</h2>
<div class="outline-text-2" id="text-orgf65174f">
</div>
<div id="outline-container-orgaf697f9" class="outline-3">
<h3 id="orgaf697f9"><span class="section-number-3">1.1</span> Simscape Model</h3>
<div id="outline-container-org5b89813" class="outline-3">
<h3 id="org5b89813">Simscape Model</h3>
</div>
<div id="outline-container-org22cb9e4" class="outline-3">
<h3 id="org22cb9e4"><span class="section-number-3">1.2</span> Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-1-2">
<div id="outline-container-org2bfdf1b" class="outline-3">
<h3 id="org2bfdf1b">Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-org2bfdf1b">
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions();
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart);
@ -421,9 +422,9 @@ stewart = initializeStewartPose(stewart);
</div>
</div>
<div id="outline-container-org9768dca" class="outline-3">
<h3 id="org9768dca"><span class="section-number-3">1.3</span> Identification</h3>
<div class="outline-text-3" id="text-1-3">
<div id="outline-container-org0d97b27" class="outline-3">
<h3 id="org0d97b27">Identification</h3>
<div class="outline-text-3" id="text-org0d97b27">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions;
@ -456,15 +457,16 @@ G.OutputName = {<span class="org-string">'Xdx'</span>, <span class="org-string">
</div>
</div>
<div id="outline-container-orge931438" class="outline-2">
<h2 id="orge931438"><span class="section-number-2">2</span> States as the motion of the mobile platform</h2>
<div class="outline-text-2" id="text-2">
<div id="outline-container-orge464de2" class="outline-2">
<h2 id="orge464de2">States as the motion of the mobile platform</h2>
<div class="outline-text-2" id="text-orge464de2">
</div>
<div id="outline-container-org601fc1e" class="outline-3">
<h3 id="org601fc1e"><span class="section-number-3">2.1</span> Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-2-1">
<div id="outline-container-org987daca" class="outline-3">
<h3 id="org987daca">Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-org987daca">
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions();
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart);
@ -477,9 +479,9 @@ stewart = initializeStewartPose(stewart);
</div>
</div>
<div id="outline-container-org85bc459" class="outline-3">
<h3 id="org85bc459"><span class="section-number-3">2.2</span> Identification</h3>
<div class="outline-text-3" id="text-2-2">
<div id="outline-container-orgc808316" class="outline-3">
<h3 id="orgc808316">Identification</h3>
<div class="outline-text-3" id="text-orgc808316">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions;
@ -538,9 +540,9 @@ And indeed, we obtain 12 states.
</div>
</div>
<div id="outline-container-org889aae3" class="outline-3">
<h3 id="org889aae3"><span class="section-number-3">2.3</span> Coordinate transformation</h3>
<div class="outline-text-3" id="text-2-3">
<div id="outline-container-orge68adea" class="outline-3">
<h3 id="orge68adea">Coordinate transformation</h3>
<div class="outline-text-3" id="text-orge68adea">
<p>
We can perform the following transformation using the <code>ss2ss</code> command.
</p>
@ -574,9 +576,9 @@ Gt = ss(At, Bt, Ct, Dt);
</div>
</div>
<div id="outline-container-orgae4b421" class="outline-3">
<h3 id="orgae4b421"><span class="section-number-3">2.4</span> Analysis</h3>
<div class="outline-text-3" id="text-2-4">
<div id="outline-container-org4973ae1" class="outline-3">
<h3 id="org4973ae1">Analysis</h3>
<div class="outline-text-3" id="text-org4973ae1">
<div class="org-src-container">
<pre class="src src-matlab">[V,D] = eig(Gt.A);
</pre>
@ -640,9 +642,9 @@ Gt = ss(At, Bt, Ct, Dt);
</div>
</div>
<div id="outline-container-orge3b2a28" class="outline-3">
<h3 id="orge3b2a28"><span class="section-number-3">2.5</span> Visualizing the modes</h3>
<div class="outline-text-3" id="text-2-5">
<div id="outline-container-orge7b97c8" class="outline-3">
<h3 id="orge7b97c8">Visualizing the modes</h3>
<div class="outline-text-3" id="text-orge7b97c8">
<p>
To visualize the i&rsquo;th mode, we may excite the system using the inputs \(U_i\) such that \(B U_i\) is co-linear to \(\xi_i\) (the mode we want to excite).
</p>
@ -721,21 +723,21 @@ Save the movie of the mode shape.
</div>
<div id="org14fd95e" class="figure">
<div id="orgb15855a" class="figure">
<p><img src="figs/mode1.gif" alt="mode1.gif" />
</p>
<p><span class="figure-number">Figure 1: </span>Identified mode - 1</p>
</div>
<div id="orgdece81c" class="figure">
<div id="org1816e59" class="figure">
<p><img src="figs/mode3.gif" alt="mode3.gif" />
</p>
<p><span class="figure-number">Figure 2: </span>Identified mode - 3</p>
</div>
<div id="org618e1ca" class="figure">
<div id="org01c8dca" class="figure">
<p><img src="figs/mode5.gif" alt="mode5.gif" />
</p>
<p><span class="figure-number">Figure 3: </span>Identified mode - 5</p>
@ -743,9 +745,9 @@ Save the movie of the mode shape.
</div>
</div>
<div id="outline-container-orgac2b65a" class="outline-3">
<h3 id="orgac2b65a"><span class="section-number-3">2.6</span> Identification</h3>
<div class="outline-text-3" id="text-2-6">
<div id="outline-container-org5d63457" class="outline-3">
<h3 id="org5d63457">Identification</h3>
<div class="outline-text-3" id="text-org5d63457">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions;
@ -773,9 +775,9 @@ G = linearize(mdl, io, options);
</div>
</div>
<div id="outline-container-orgd845f17" class="outline-3">
<h3 id="orgd845f17"><span class="section-number-3">2.7</span> Change of states</h3>
<div class="outline-text-3" id="text-2-7">
<div id="outline-container-orgf7a52cb" class="outline-3">
<h3 id="orgf7a52cb">Change of states</h3>
<div class="outline-text-3" id="text-orgf7a52cb">
<div class="org-src-container">
<pre class="src src-matlab">At = G.C<span class="org-type">*</span>G.A<span class="org-type">*</span>pinv(G.C);
@ -799,13 +801,13 @@ Dt = zeros(12, 6);
</div>
</div>
<div id="outline-container-org4989001" class="outline-2">
<h2 id="org4989001"><span class="section-number-2">3</span> Simple Model without any sensor</h2>
<div class="outline-text-2" id="text-3">
<div id="outline-container-org23d7e7b" class="outline-2">
<h2 id="org23d7e7b">Simple Model without any sensor</h2>
<div class="outline-text-2" id="text-org23d7e7b">
</div>
<div id="outline-container-org3ea636a" class="outline-3">
<h3 id="org3ea636a"><span class="section-number-3">3.1</span> Simscape Model</h3>
<div class="outline-text-3" id="text-3-1">
<div id="outline-container-org69b8a98" class="outline-3">
<h3 id="org69b8a98">Simscape Model</h3>
<div class="outline-text-3" id="text-org69b8a98">
<div class="org-src-container">
<pre class="src src-matlab">open <span class="org-string">'stewart_identification_simple.slx'</span>
</pre>
@ -814,11 +816,12 @@ Dt = zeros(12, 6);
</div>
<div id="outline-container-org9a6cc53" class="outline-3">
<h3 id="org9a6cc53"><span class="section-number-3">3.2</span> Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-3-2">
<div id="outline-container-org4aef27a" class="outline-3">
<h3 id="org4aef27a">Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-org4aef27a">
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions();
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart);
@ -831,9 +834,9 @@ stewart = initializeStewartPose(stewart);
</div>
</div>
<div id="outline-container-org13a12f8" class="outline-3">
<h3 id="org13a12f8"><span class="section-number-3">3.3</span> Identification</h3>
<div class="outline-text-3" id="text-3-3">
<div id="outline-container-orgb9fd532" class="outline-3">
<h3 id="orgb9fd532">Identification</h3>
<div class="outline-text-3" id="text-orgb9fd532">
<div class="org-src-container">
<pre class="src src-matlab">stateorder = {...
<span class="org-string">'stewart_platform_identification_simple/Solver Configuration/EVAL_KEY/INPUT_1_1_1'</span>,...
@ -919,9 +922,9 @@ G.OutputName = {<span class="org-string">'Xdx'</span>, <span class="org-string">
</div>
</div>
<div id="outline-container-org33bdc22" class="outline-2">
<h2 id="org33bdc22"><span class="section-number-2">4</span> Cartesian Plot</h2>
<div class="outline-text-2" id="text-4">
<div id="outline-container-org0502cd2" class="outline-2">
<h2 id="org0502cd2">Cartesian Plot</h2>
<div class="outline-text-2" id="text-org0502cd2">
<p>
From a force applied in the Cartesian frame to a displacement in the Cartesian frame.
</p>
@ -945,9 +948,9 @@ bode(G.G_cart, freqs);
</div>
</div>
<div id="outline-container-org6cfcaf6" class="outline-2">
<h2 id="org6cfcaf6"><span class="section-number-2">5</span> From a force to force sensor</h2>
<div class="outline-text-2" id="text-5">
<div id="outline-container-org32e2eb3" class="outline-2">
<h2 id="org32e2eb3">From a force to force sensor</h2>
<div class="outline-text-2" id="text-org32e2eb3">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
@ -977,9 +980,9 @@ legend(<span class="org-string">'location'</span>, <span class="org-string">'sou
</div>
</div>
<div id="outline-container-orge759120" class="outline-2">
<h2 id="orge759120"><span class="section-number-2">6</span> From a force applied in the leg to the displacement of the leg</h2>
<div class="outline-text-2" id="text-6">
<div id="outline-container-org8ddfd2c" class="outline-2">
<h2 id="org8ddfd2c">From a force applied in the leg to the displacement of the leg</h2>
<div class="outline-text-2" id="text-org8ddfd2c">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
@ -1008,9 +1011,9 @@ legend(<span class="org-string">'location'</span>, <span class="org-string">'nor
</div>
</div>
<div id="outline-container-org6165b05" class="outline-2">
<h2 id="org6165b05"><span class="section-number-2">7</span> Transmissibility</h2>
<div class="outline-text-2" id="text-7">
<div id="outline-container-org5685537" class="outline-2">
<h2 id="org5685537">Transmissibility</h2>
<div class="outline-text-2" id="text-org5685537">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
@ -1049,9 +1052,9 @@ xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="or
</div>
</div>
<div id="outline-container-orge32e4db" class="outline-2">
<h2 id="orge32e4db"><span class="section-number-2">8</span> Compliance</h2>
<div class="outline-text-2" id="text-8">
<div id="outline-container-org3335d1e" class="outline-2">
<h2 id="org3335d1e">Compliance</h2>
<div class="outline-text-2" id="text-org3335d1e">
<p>
From a force applied in the Cartesian frame to a relative displacement of the mobile platform with respect to the base.
</p>
@ -1070,9 +1073,9 @@ xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="or
</div>
</div>
<div id="outline-container-org6c094f6" class="outline-2">
<h2 id="org6c094f6"><span class="section-number-2">9</span> Inertial</h2>
<div class="outline-text-2" id="text-9">
<div id="outline-container-org5ca7af8" class="outline-2">
<h2 id="org5ca7af8">Inertial</h2>
<div class="outline-text-2" id="text-org5ca7af8">
<p>
From a force applied on the Cartesian frame to the absolute displacement of the mobile platform.
</p>
@ -1093,7 +1096,7 @@ xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="or
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-01-29 mer. 17:51</p>
<p class="date">Created: 2020-02-11 mar. 15:26</p>
</div>
</body>
</html>

View File

@ -4,7 +4,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>
<!-- 2020-01-29 mer. 20:24 -->
<!-- 2020-02-11 mar. 15:27 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platforms</title>
@ -254,14 +254,14 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgd2c29e6">1. Simulink Project (link)</a></li>
<li><a href="#orga1d5aa6">2. Stewart Platform Architecture Definition (link)</a></li>
<li><a href="#orgd599e17">3. Simscape Model of the Stewart Platform (link)</a></li>
<li><a href="#orgb5d80d5">4. Kinematic Analysis (link)</a></li>
<li><a href="#org4a7f3fe">5. Identification of the Stewart Dynamics (link)</a></li>
<li><a href="#org7e43dac">6. Active Damping (link)</a></li>
<li><a href="#org995231f">7. Motion Control of the Stewart Platform (link)</a></li>
<li><a href="#orgea1a8ad">8. Cubic Configuration (link)</a></li>
<li><a href="#orgff0bfd7">Simulink Project (link)</a></li>
<li><a href="#org38b9089">Stewart Platform Architecture Definition (link)</a></li>
<li><a href="#orgf1c7b3b">Simscape Model of the Stewart Platform (link)</a></li>
<li><a href="#org369c8bb">Kinematic Analysis (link)</a></li>
<li><a href="#org2e3169e">Identification of the Stewart Dynamics (link)</a></li>
<li><a href="#orgc3a4c87">Active Damping (link)</a></li>
<li><a href="#org5b4e9b0">Motion Control of the Stewart Platform (link)</a></li>
<li><a href="#org1f468b1">Cubic Configuration (link)</a></li>
</ul>
</div>
</div>
@ -274,9 +274,9 @@ The goal of this project is to provide a Matlab/Simscape Toolbox to study Stewar
The project is divided into several section listed below.
</p>
<div id="outline-container-orgd2c29e6" class="outline-2">
<h2 id="orgd2c29e6"><span class="section-number-2">1</span> Simulink Project (<a href="simulink-project.html">link</a>)</h2>
<div class="outline-text-2" id="text-1">
<div id="outline-container-orgff0bfd7" class="outline-2">
<h2 id="orgff0bfd7">Simulink Project (<a href="simulink-project.html">link</a>)</h2>
<div class="outline-text-2" id="text-orgff0bfd7">
<p>
The project is managed with a <b>Simulink Project</b>.
Such project is briefly presented <a href="simulink-project.html">here</a>.
@ -284,9 +284,9 @@ Such project is briefly presented <a href="simulink-project.html">here</a>.
</div>
</div>
<div id="outline-container-orga1d5aa6" class="outline-2">
<h2 id="orga1d5aa6"><span class="section-number-2">2</span> Stewart Platform Architecture Definition (<a href="stewart-architecture.html">link</a>)</h2>
<div class="outline-text-2" id="text-2">
<div id="outline-container-org38b9089" class="outline-2">
<h2 id="org38b9089">Stewart Platform Architecture Definition (<a href="stewart-architecture.html">link</a>)</h2>
<div class="outline-text-2" id="text-org38b9089">
<p>
The way the Stewart Platform is defined <a href="stewart-architecture.html">here</a>.
</p>
@ -310,9 +310,9 @@ Other parameters are also defined such as:
</div>
</div>
<div id="outline-container-orgd599e17" class="outline-2">
<h2 id="orgd599e17"><span class="section-number-2">3</span> Simscape Model of the Stewart Platform (<a href="simscape-model.html">link</a>)</h2>
<div class="outline-text-2" id="text-3">
<div id="outline-container-orgf1c7b3b" class="outline-2">
<h2 id="orgf1c7b3b">Simscape Model of the Stewart Platform (<a href="simscape-model.html">link</a>)</h2>
<div class="outline-text-2" id="text-orgf1c7b3b">
<p>
The Stewart Platform is then modeled using <a href="https://www.mathworks.com/products/simscape.html">Simscape</a>.
</p>
@ -323,9 +323,9 @@ The way to model is build and works is explained <a href="simscape-model.html">h
</div>
</div>
<div id="outline-container-orgb5d80d5" class="outline-2">
<h2 id="orgb5d80d5"><span class="section-number-2">4</span> Kinematic Analysis (<a href="kinematic-study.html">link</a>)</h2>
<div class="outline-text-2" id="text-4">
<div id="outline-container-org369c8bb" class="outline-2">
<h2 id="org369c8bb">Kinematic Analysis (<a href="kinematic-study.html">link</a>)</h2>
<div class="outline-text-2" id="text-org369c8bb">
<p>
From the defined geometry of the Stewart platform, we can perform static analysis such as:
</p>
@ -344,9 +344,9 @@ All these analysis are described <a href="kinematic-study.html">here</a>.
</div>
</div>
<div id="outline-container-org4a7f3fe" class="outline-2">
<h2 id="org4a7f3fe"><span class="section-number-2">5</span> Identification of the Stewart Dynamics (<a href="identification.html">link</a>)</h2>
<div class="outline-text-2" id="text-5">
<div id="outline-container-org2e3169e" class="outline-2">
<h2 id="org2e3169e">Identification of the Stewart Dynamics (<a href="identification.html">link</a>)</h2>
<div class="outline-text-2" id="text-org2e3169e">
<p>
The Dynamics of the Stewart platform can be identified using the Simscape model.
</p>
@ -366,9 +366,9 @@ The code that is used for identification is explained <a href="identification.ht
</div>
</div>
<div id="outline-container-org7e43dac" class="outline-2">
<h2 id="org7e43dac"><span class="section-number-2">6</span> Active Damping (<a href="active-damping.html">link</a>)</h2>
<div class="outline-text-2" id="text-6">
<div id="outline-container-orgc3a4c87" class="outline-2">
<h2 id="orgc3a4c87">Active Damping (<a href="active-damping.html">link</a>)</h2>
<div class="outline-text-2" id="text-orgc3a4c87">
<p>
The use of different sensors are compared for active damping:
</p>
@ -385,18 +385,18 @@ The result of the analysis is accessible <a href="active-damping.html">here</a>.
</div>
</div>
<div id="outline-container-org995231f" class="outline-2">
<h2 id="org995231f"><span class="section-number-2">7</span> Motion Control of the Stewart Platform (<a href="control-study.html">link</a>)</h2>
<div class="outline-text-2" id="text-7">
<div id="outline-container-org5b4e9b0" class="outline-2">
<h2 id="org5b4e9b0">Motion Control of the Stewart Platform (<a href="control-study.html">link</a>)</h2>
<div class="outline-text-2" id="text-org5b4e9b0">
<p>
Some control architecture for motion control of the Stewart platform are applied on the Simscape model and compared in <a href="control-study.html">this</a> document.
</p>
</div>
</div>
<div id="outline-container-orgea1a8ad" class="outline-2">
<h2 id="orgea1a8ad"><span class="section-number-2">8</span> Cubic Configuration (<a href="cubic-configuration.html">link</a>)</h2>
<div class="outline-text-2" id="text-8">
<div id="outline-container-org1f468b1" class="outline-2">
<h2 id="org1f468b1">Cubic Configuration (<a href="cubic-configuration.html">link</a>)</h2>
<div class="outline-text-2" id="text-org1f468b1">
<p>
The cubic configuration is a special class of Stewart platform that has interesting properties.
</p>
@ -409,7 +409,7 @@ These properties are studied in <a href="cubic-configuration.html">this</a> docu
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-01-29 mer. 20:24</p>
<p class="date">Created: 2020-02-11 mar. 15:27</p>
</div>
</body>
</html>

View File

@ -4,7 +4,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>
<!-- 2020-02-11 mar. 15:10 -->
<!-- 2020-02-11 mar. 15:26 -->
<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>
@ -268,73 +268,73 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org12dba9f">1. Jacobian Analysis</a>
<li><a href="#org6858f1f">Jacobian Analysis</a>
<ul>
<li><a href="#orgf11b2b6">1.1. Jacobian Computation</a></li>
<li><a href="#org77e916f">1.2. Jacobian - Velocity loop closure</a></li>
<li><a href="#orgbd5d473">1.3. Jacobian - Static Force Transformation</a></li>
<li><a href="#org8210cee">Jacobian Computation</a></li>
<li><a href="#org4d71022">Jacobian - Velocity loop closure</a></li>
<li><a href="#org2847e30">Jacobian - Static Force Transformation</a></li>
</ul>
</li>
<li><a href="#orgecbb7b3">2. Stiffness Analysis</a>
<li><a href="#org87bfd11">Stiffness Analysis</a>
<ul>
<li><a href="#orgbea68d5">2.1. Computation of the Stiffness and Compliance Matrix</a></li>
<li><a href="#orgb1956e6">Computation of the Stiffness and Compliance Matrix</a></li>
</ul>
</li>
<li><a href="#org7c304b7">3. Forward and Inverse Kinematics</a>
<li><a href="#org5718735">Forward and Inverse Kinematics</a>
<ul>
<li><a href="#org9b180e9">3.1. Inverse Kinematics</a></li>
<li><a href="#orga3a2319">3.2. Forward Kinematics</a></li>
<li><a href="#org12d14b0">3.3. Approximate solution of the Forward and Inverse Kinematic problem for small displacement using the Jacobian matrix</a></li>
<li><a href="#orgbad3ae9">3.4. Estimation of the range validity of the approximate inverse kinematics</a>
<li><a href="#orgebda1d9">Inverse Kinematics</a></li>
<li><a href="#org1795522">Forward Kinematics</a></li>
<li><a href="#org5a3ce80">Approximate solution of the Forward and Inverse Kinematic problem for small displacement using the Jacobian matrix</a></li>
<li><a href="#org86b4b35">Estimation of the range validity of the approximate inverse kinematics</a>
<ul>
<li><a href="#orge3ab830">3.4.1. Stewart architecture definition</a></li>
<li><a href="#org294ab65">3.4.2. Comparison for &ldquo;pure&rdquo; translations</a></li>
<li><a href="#orgea391a3">3.4.3. Conclusion</a></li>
<li><a href="#orgccddf49">Stewart architecture definition</a></li>
<li><a href="#orgd83ccf3">Comparison for &ldquo;pure&rdquo; translations</a></li>
<li><a href="#org4871c83">Conclusion</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#orgddb8d5d">4. Estimated required actuator stroke from specified platform mobility</a>
<li><a href="#org63255f9">Estimated required actuator stroke from specified platform mobility</a>
<ul>
<li><a href="#orgfb6bdb7">4.1. Stewart architecture definition</a></li>
<li><a href="#orgba0801f">4.2. Wanted translations and rotations</a></li>
<li><a href="#orgdeca909">4.3. Needed stroke for &ldquo;pure&rdquo; rotations or translations</a></li>
<li><a href="#orgb713047">4.4. Needed stroke for &ldquo;combined&rdquo; rotations or translations</a></li>
<li><a href="#org48ee074">Stewart architecture definition</a></li>
<li><a href="#orgde50dd3">Wanted translations and rotations</a></li>
<li><a href="#org24e45ca">Needed stroke for &ldquo;pure&rdquo; rotations or translations</a></li>
<li><a href="#orgf6ba90c">Needed stroke for &ldquo;combined&rdquo; rotations or translations</a></li>
</ul>
</li>
<li><a href="#orge5f80c6">5. Estimated platform mobility from specified actuator stroke</a>
<li><a href="#orgbbbf7b3">Estimated platform mobility from specified actuator stroke</a>
<ul>
<li><a href="#org1865dbc">5.1. Stewart architecture definition</a></li>
<li><a href="#orga4b5e5b">5.2. Pure translations</a></li>
<li><a href="#org486419b">Stewart architecture definition</a></li>
<li><a href="#org2c6819e">Pure translations</a></li>
</ul>
</li>
<li><a href="#org748d42a">6. Functions</a>
<li><a href="#orgc4916dc">Functions</a>
<ul>
<li><a href="#org00ba36f">6.1. <code>computeJacobian</code>: Compute the Jacobian Matrix</a>
<li><a href="#org26e8b28"><code>computeJacobian</code>: Compute the Jacobian Matrix</a>
<ul>
<li><a href="#orgbdf3a2a">Function description</a></li>
<li><a href="#orgd1d8163">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orge54466d">Compute Jacobian Matrix</a></li>
<li><a href="#org560e1a1">Compute Stiffness Matrix</a></li>
<li><a href="#orga853f82">Compute Compliance Matrix</a></li>
<li><a href="#org4e11a57">Populate the <code>stewart</code> structure</a></li>
<li><a href="#org704ab84">Function description</a></li>
<li><a href="#org3990e47">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org0cd57b5">Compute Jacobian Matrix</a></li>
<li><a href="#orge21dcfc">Compute Stiffness Matrix</a></li>
<li><a href="#orgae76071">Compute Compliance Matrix</a></li>
<li><a href="#org78f18d7">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#org6c7006f">6.2. <code>inverseKinematics</code>: Compute Inverse Kinematics</a>
<li><a href="#orgb82066f"><code>inverseKinematics</code>: Compute Inverse Kinematics</a>
<ul>
<li><a href="#org7136bfb">Theory</a></li>
<li><a href="#org75ec482">Function description</a></li>
<li><a href="#orgc83e0f8">Optional Parameters</a></li>
<li><a href="#org3ea2f51">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org210ed60">Compute</a></li>
<li><a href="#org89930b7">Theory</a></li>
<li><a href="#org0d77b2e">Function description</a></li>
<li><a href="#orgda02042">Optional Parameters</a></li>
<li><a href="#org4a3c325">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org0d64c23">Compute</a></li>
</ul>
</li>
<li><a href="#org8f0dc6c">6.3. <code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</a>
<li><a href="#orgf5d8f0b"><code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</a>
<ul>
<li><a href="#org7c35749">Function description</a></li>
<li><a href="#org5eee73c">Optional Parameters</a></li>
<li><a href="#orgee36d86">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orgc3e4684">Computation</a></li>
<li><a href="#org473d0b1">Function description</a></li>
<li><a href="#org8fe02d3">Optional Parameters</a></li>
<li><a href="#org83d7e5f">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orge5ade24">Computation</a></li>
</ul>
</li>
</ul>
@ -357,17 +357,17 @@ In this analysis, the relation between the geometrical parameters of the manipul
The current document is divided in the following sections:
</p>
<ul class="org-ul">
<li>Section <a href="#orge973aef">1</a>: The Jacobian matrix is derived from the geometry of the Stewart platform. Then it is shown that the Jacobian can link velocities and forces present in the system, and thus this matrix can be very useful for both analysis and control of the Stewart platform.</li>
<li>Section <a href="#org2a4a521">2</a>: The stiffness and compliance matrices are derived from the Jacobian matrix and the stiffness of each strut.</li>
<li>Section <a href="#org8833597">3</a>: The Forward and Inverse kinematic problems are presented.</li>
<li>Section <a href="#org6ddfbc5">4</a>: The Inverse kinematic solution is used to estimate required actuator stroke from the wanted mobility of the Stewart platform.</li>
<li>Section <a href="#orgc45d118">No description for this link</a>: The Jacobian matrix is derived from the geometry of the Stewart platform. Then it is shown that the Jacobian can link velocities and forces present in the system, and thus this matrix can be very useful for both analysis and control of the Stewart platform.</li>
<li>Section <a href="#orgf9e4f1a">No description for this link</a>: The stiffness and compliance matrices are derived from the Jacobian matrix and the stiffness of each strut.</li>
<li>Section <a href="#orgca82bb8">No description for this link</a>: The Forward and Inverse kinematic problems are presented.</li>
<li>Section <a href="#orge72d811">No description for this link</a>: The Inverse kinematic solution is used to estimate required actuator stroke from the wanted mobility of the Stewart platform.</li>
</ul>
<div id="outline-container-org12dba9f" class="outline-2">
<h2 id="org12dba9f"><span class="section-number-2">1</span> Jacobian Analysis</h2>
<div class="outline-text-2" id="text-1">
<div id="outline-container-org6858f1f" class="outline-2">
<h2 id="org6858f1f">Jacobian Analysis</h2>
<div class="outline-text-2" id="text-org6858f1f">
<p>
<a id="orge973aef"></a>
<a id="orgc45d118"></a>
</p>
<p>
From <a class='org-ref-reference' href="#taghirad13_paral">taghirad13_paral</a>:
@ -378,9 +378,9 @@ The Jacobian matrix not only reveals the <b>relation between the joint variable
</p>
</blockquote>
</div>
<div id="outline-container-orgf11b2b6" class="outline-3">
<h3 id="orgf11b2b6"><span class="section-number-3">1.1</span> Jacobian Computation</h3>
<div class="outline-text-3" id="text-1-1">
<div id="outline-container-org8210cee" class="outline-3">
<h3 id="org8210cee">Jacobian Computation</h3>
<div class="outline-text-3" id="text-org8210cee">
<p>
If we note:
</p>
@ -404,7 +404,7 @@ Then, we can compute the Jacobian with the following equation (the superscript \
\end{equation*}
<p>
The Jacobian matrix \(\bm{J}\) can be computed using the <code>computeJacobian</code> function (accessible <a href="#org519ef53">here</a>).
The Jacobian matrix \(\bm{J}\) can be computed using the <code>computeJacobian</code> function (accessible <a href="#org2387f19">here</a>).
For instance:
</p>
<div class="org-src-container">
@ -422,9 +422,9 @@ This will add three new matrix to the <code>stewart</code> structure:
</div>
</div>
<div id="outline-container-org77e916f" class="outline-3">
<h3 id="org77e916f"><span class="section-number-3">1.2</span> Jacobian - Velocity loop closure</h3>
<div class="outline-text-3" id="text-1-2">
<div id="outline-container-org4d71022" class="outline-3">
<h3 id="org4d71022">Jacobian - Velocity loop closure</h3>
<div class="outline-text-3" id="text-org4d71022">
<p>
The Jacobian matrix links the input joint rate \(\dot{\bm{\mathcal{L}}} = [ \dot{l}_1, \dot{l}_2, \dot{l}_3, \dot{l}_4, \dot{l}_5, \dot{l}_6 ]^T\) of each strut to the output twist vector of the mobile platform is denoted by \(\dot{\bm{X}} = [^A\bm{v}_p, {}^A\bm{\omega}]^T\):
</p>
@ -446,14 +446,14 @@ If the Jacobian matrix is inversible, we can also compute \(\dot{\bm{\mathcal{X}
<p>
The Jacobian matrix can also be used to approximate forward and inverse kinematics for small displacements.
This is explained in section <a href="#org2e542bf">3.3</a>.
This is explained in section <a href="#org02628f3">No description for this link</a>.
</p>
</div>
</div>
<div id="outline-container-orgbd5d473" class="outline-3">
<h3 id="orgbd5d473"><span class="section-number-3">1.3</span> Jacobian - Static Force Transformation</h3>
<div class="outline-text-3" id="text-1-3">
<div id="outline-container-org2847e30" class="outline-3">
<h3 id="org2847e30">Jacobian - Static Force Transformation</h3>
<div class="outline-text-3" id="text-org2847e30">
<p>
If we note:
</p>
@ -479,20 +479,20 @@ If the Jacobian matrix is inversible, we also have the following relation:
</div>
</div>
<div id="outline-container-orgecbb7b3" class="outline-2">
<h2 id="orgecbb7b3"><span class="section-number-2">2</span> Stiffness Analysis</h2>
<div class="outline-text-2" id="text-2">
<div id="outline-container-org87bfd11" class="outline-2">
<h2 id="org87bfd11">Stiffness Analysis</h2>
<div class="outline-text-2" id="text-org87bfd11">
<p>
<a id="org2a4a521"></a>
<a id="orgf9e4f1a"></a>
</p>
<p>
Here, we focus on the deflections of the manipulator moving platform that are the result of the external applied wrench to the mobile platform.
The amount of these deflections are a function of the applied wrench as well as the manipulator <b>structural stiffness</b>.
</p>
</div>
<div id="outline-container-orgbea68d5" class="outline-3">
<h3 id="orgbea68d5"><span class="section-number-3">2.1</span> Computation of the Stiffness and Compliance Matrix</h3>
<div class="outline-text-3" id="text-2-1">
<div id="outline-container-orgb1956e6" class="outline-3">
<h3 id="orgb1956e6">Computation of the Stiffness and Compliance Matrix</h3>
<div class="outline-text-3" id="text-orgb1956e6">
<p>
As explain in <a href="stewart-architecture.html">this</a> document, each Actuator is modeled by 3 elements in parallel:
</p>
@ -542,24 +542,24 @@ The compliance matrix of a manipulator shows the mapping of the moving platform
\end{equation*}
<p>
The stiffness and compliance matrices are computed using the <code>computeJacobian</code> function (accessible <a href="#org519ef53">here</a>).
The stiffness and compliance matrices are computed using the <code>computeJacobian</code> function (accessible <a href="#org2387f19">here</a>).
</p>
</div>
</div>
</div>
<div id="outline-container-org7c304b7" class="outline-2">
<h2 id="org7c304b7"><span class="section-number-2">3</span> Forward and Inverse Kinematics</h2>
<div class="outline-text-2" id="text-3">
<div id="outline-container-org5718735" class="outline-2">
<h2 id="org5718735">Forward and Inverse Kinematics</h2>
<div class="outline-text-2" id="text-org5718735">
<p>
<a id="org8833597"></a>
<a id="orgca82bb8"></a>
</p>
</div>
<div id="outline-container-org9b180e9" class="outline-3">
<h3 id="org9b180e9"><span class="section-number-3">3.1</span> Inverse Kinematics</h3>
<div class="outline-text-3" id="text-3-1">
<div id="outline-container-orgebda1d9" class="outline-3">
<h3 id="orgebda1d9">Inverse Kinematics</h3>
<div class="outline-text-3" id="text-orgebda1d9">
<p>
<a id="org3d57c25"></a>
<a id="org2f224fc"></a>
</p>
<blockquote>
@ -588,16 +588,16 @@ Otherwise, the solution gives complex numbers.
</p>
<p>
This inverse kinematic solution can be obtained using the function <code>inverseKinematics</code> (described <a href="#orgaf5a9a0">here</a>).
This inverse kinematic solution can be obtained using the function <code>inverseKinematics</code> (described <a href="#orgb8859d7">here</a>).
</p>
</div>
</div>
<div id="outline-container-orga3a2319" class="outline-3">
<h3 id="orga3a2319"><span class="section-number-3">3.2</span> Forward Kinematics</h3>
<div class="outline-text-3" id="text-3-2">
<div id="outline-container-org1795522" class="outline-3">
<h3 id="org1795522">Forward Kinematics</h3>
<div class="outline-text-3" id="text-org1795522">
<p>
<a id="orgf7da4c0"></a>
<a id="orgf1db8ea"></a>
</p>
<blockquote>
@ -616,11 +616,11 @@ In a next section, an approximate solution of the forward kinematics problem is
</div>
</div>
<div id="outline-container-org12d14b0" class="outline-3">
<h3 id="org12d14b0"><span class="section-number-3">3.3</span> Approximate solution of the Forward and Inverse Kinematic problem for small displacement using the Jacobian matrix</h3>
<div class="outline-text-3" id="text-3-3">
<div id="outline-container-org5a3ce80" class="outline-3">
<h3 id="org5a3ce80">Approximate solution of the Forward and Inverse Kinematic problem for small displacement using the Jacobian matrix</h3>
<div class="outline-text-3" id="text-org5a3ce80">
<p>
<a id="org2e542bf"></a>
<a id="org02628f3"></a>
</p>
<p>
@ -643,16 +643,16 @@ As the inverse kinematic can be easily solved exactly this is not much useful, h
</p>
<p>
The function <code>forwardKinematicsApprox</code> (described <a href="#org7ba3dc5">here</a>) can be used to solve the forward kinematic problem using the Jacobian matrix.
The function <code>forwardKinematicsApprox</code> (described <a href="#orgdb31434">here</a>) can be used to solve the forward kinematic problem using the Jacobian matrix.
</p>
</div>
</div>
<div id="outline-container-orgbad3ae9" class="outline-3">
<h3 id="orgbad3ae9"><span class="section-number-3">3.4</span> Estimation of the range validity of the approximate inverse kinematics</h3>
<div class="outline-text-3" id="text-3-4">
<div id="outline-container-org86b4b35" class="outline-3">
<h3 id="org86b4b35">Estimation of the range validity of the approximate inverse kinematics</h3>
<div class="outline-text-3" id="text-org86b4b35">
<p>
<a id="org6f7aec6"></a>
<a id="org2bfd694"></a>
</p>
<p>
As we know how to exactly solve the Inverse kinematic problem, we can compare the exact solution with the approximate solution using the Jacobian matrix.
@ -666,14 +666,15 @@ This will also gives us the range for which the approximate forward kinematic is
</p>
</div>
<div id="outline-container-orge3ab830" class="outline-4">
<h4 id="orge3ab830"><span class="section-number-4">3.4.1</span> Stewart architecture definition</h4>
<div class="outline-text-4" id="text-3-4-1">
<div id="outline-container-orgccddf49" class="outline-4">
<h4 id="orgccddf49">Stewart architecture definition</h4>
<div class="outline-text-4" id="text-orgccddf49">
<p>
We first define some general Stewart architecture.
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStewartPose(stewart);
@ -687,17 +688,17 @@ stewart = computeJacobian(stewart);
</div>
</div>
<div id="outline-container-org294ab65" class="outline-4">
<h4 id="org294ab65"><span class="section-number-4">3.4.2</span> Comparison for &ldquo;pure&rdquo; translations</h4>
<div class="outline-text-4" id="text-3-4-2">
<div id="outline-container-orgd83ccf3" class="outline-4">
<h4 id="orgd83ccf3">Comparison for &ldquo;pure&rdquo; translations</h4>
<div class="outline-text-4" id="text-orgd83ccf3">
<p>
Let&rsquo;s first compare the perfect and approximate solution of the inverse for pure \(x\) translations.
</p>
<p>
We compute the approximate and exact required strut stroke to have the wanted mobile platform \(x\) displacement.
The estimate required strut stroke for both the approximate and exact solutions are shown in Figure <a href="#orgb688993">1</a>.
The relative strut length displacement is shown in Figure <a href="#org4c3ea1b">2</a>.
The estimate required strut stroke for both the approximate and exact solutions are shown in Figure <a href="#org5996f21">1</a>.
The relative strut length displacement is shown in Figure <a href="#org02d8e34">2</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Xrs = logspace(<span class="org-type">-</span>6, <span class="org-type">-</span>1, 100); <span class="org-comment">% Wanted X translation of the mobile platform [m]</span>
@ -714,14 +715,14 @@ Ls_exact = zeros(6, length(Xrs));
</div>
<div id="orgb688993" class="figure">
<div id="org5996f21" class="figure">
<p><img src="figs/inverse_kinematics_approx_validity_x_translation.png" alt="inverse_kinematics_approx_validity_x_translation.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Comparison of the Approximate solution and True solution for the Inverse kinematic problem (<a href="./figs/inverse_kinematics_approx_validity_x_translation.png">png</a>, <a href="./figs/inverse_kinematics_approx_validity_x_translation.pdf">pdf</a>)</p>
</div>
<div id="org4c3ea1b" class="figure">
<div id="org02d8e34" class="figure">
<p><img src="figs/inverse_kinematics_approx_validity_x_translation_relative.png" alt="inverse_kinematics_approx_validity_x_translation_relative.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Relative length error by using the Approximate solution of the Inverse kinematic problem (<a href="./figs/inverse_kinematics_approx_validity_x_translation_relative.png">png</a>, <a href="./figs/inverse_kinematics_approx_validity_x_translation_relative.pdf">pdf</a>)</p>
@ -729,9 +730,9 @@ Ls_exact = zeros(6, length(Xrs));
</div>
</div>
<div id="outline-container-orgea391a3" class="outline-4">
<h4 id="orgea391a3"><span class="section-number-4">3.4.3</span> Conclusion</h4>
<div class="outline-text-4" id="text-3-4-3">
<div id="outline-container-org4871c83" class="outline-4">
<h4 id="org4871c83">Conclusion</h4>
<div class="outline-text-4" id="text-org4871c83">
<p>
For small wanted displacements (up to \(\approx 1\%\) of the size of the Hexapod), the approximate inverse kinematic solution using the Jacobian matrix is quite correct.
</p>
@ -740,11 +741,11 @@ For small wanted displacements (up to \(\approx 1\%\) of the size of the Hexapod
</div>
</div>
<div id="outline-container-orgddb8d5d" class="outline-2">
<h2 id="orgddb8d5d"><span class="section-number-2">4</span> Estimated required actuator stroke from specified platform mobility</h2>
<div class="outline-text-2" id="text-4">
<div id="outline-container-org63255f9" class="outline-2">
<h2 id="org63255f9">Estimated required actuator stroke from specified platform mobility</h2>
<div class="outline-text-2" id="text-org63255f9">
<p>
<a id="org6ddfbc5"></a>
<a id="orge72d811"></a>
</p>
<p>
Let&rsquo;s say one want to design a Stewart platform with some specified mobility (position and orientation).
@ -752,14 +753,15 @@ One may want to determine the required actuator stroke required to obtain the sp
This is what is analyzed in this section.
</p>
</div>
<div id="outline-container-orgfb6bdb7" class="outline-3">
<h3 id="orgfb6bdb7"><span class="section-number-3">4.1</span> Stewart architecture definition</h3>
<div class="outline-text-3" id="text-4-1">
<div id="outline-container-org48ee074" class="outline-3">
<h3 id="org48ee074">Stewart architecture definition</h3>
<div class="outline-text-3" id="text-org48ee074">
<p>
Let&rsquo;s first define the Stewart platform architecture that we want to study.
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStewartPose(stewart);
@ -773,9 +775,9 @@ stewart = computeJacobian(stewart);
</div>
</div>
<div id="outline-container-orgba0801f" class="outline-3">
<h3 id="orgba0801f"><span class="section-number-3">4.2</span> Wanted translations and rotations</h3>
<div class="outline-text-3" id="text-4-2">
<div id="outline-container-orgde50dd3" class="outline-3">
<h3 id="orgde50dd3">Wanted translations and rotations</h3>
<div class="outline-text-3" id="text-orgde50dd3">
<p>
Let&rsquo;s now define the wanted extreme translations and rotations.
</p>
@ -791,9 +793,9 @@ Rz_max = 0; <span class="org-comment">% Rotation [rad]</span>
</div>
</div>
<div id="outline-container-orgdeca909" class="outline-3">
<h3 id="orgdeca909"><span class="section-number-3">4.3</span> Needed stroke for &ldquo;pure&rdquo; rotations or translations</h3>
<div class="outline-text-3" id="text-4-3">
<div id="outline-container-org24e45ca" class="outline-3">
<h3 id="org24e45ca">Needed stroke for &ldquo;pure&rdquo; rotations or translations</h3>
<div class="outline-text-3" id="text-org24e45ca">
<p>
As a first estimation, we estimate the needed actuator stroke for &ldquo;pure&rdquo; rotations and translation.
We do that using either the Inverse Kinematic solution or the Jacobian matrix as an approximation.
@ -823,9 +825,9 @@ This is surely a low estimation of the required stroke.
</div>
</div>
<div id="outline-container-orgb713047" class="outline-3">
<h3 id="orgb713047"><span class="section-number-3">4.4</span> Needed stroke for &ldquo;combined&rdquo; rotations or translations</h3>
<div class="outline-text-3" id="text-4-4">
<div id="outline-container-orgf6ba90c" class="outline-3">
<h3 id="orgf6ba90c">Needed stroke for &ldquo;combined&rdquo; rotations or translations</h3>
<div class="outline-text-3" id="text-orgf6ba90c">
<p>
We know would like to have a more precise estimation.
</p>
@ -1144,29 +1146,30 @@ This is probably a much realistic estimation of the required actuator stroke.
</div>
</div>
<div id="outline-container-orge5f80c6" class="outline-2">
<h2 id="orge5f80c6"><span class="section-number-2">5</span> Estimated platform mobility from specified actuator stroke</h2>
<div class="outline-text-2" id="text-5">
<div id="outline-container-orgbbbf7b3" class="outline-2">
<h2 id="orgbbbf7b3">Estimated platform mobility from specified actuator stroke</h2>
<div class="outline-text-2" id="text-orgbbbf7b3">
<p>
<a id="org10d9ea8"></a>
<a id="orgeca09fb"></a>
</p>
<p>
Here, from some value of the actuator stroke, we would like to estimate the mobility of the Stewart platform.
</p>
<p>
As explained in section <a href="#org8833597">3</a>, the forward kinematic problem of the Stewart platform is quite difficult to solve.
As explained in section <a href="#orgca82bb8">No description for this link</a>, the forward kinematic problem of the Stewart platform is quite difficult to solve.
However, for small displacements, we can use the Jacobian as an approximate solution.
</p>
</div>
<div id="outline-container-org1865dbc" class="outline-3">
<h3 id="org1865dbc"><span class="section-number-3">5.1</span> Stewart architecture definition</h3>
<div class="outline-text-3" id="text-5-1">
<div id="outline-container-org486419b" class="outline-3">
<h3 id="org486419b">Stewart architecture definition</h3>
<div class="outline-text-3" id="text-org486419b">
<p>
Let&rsquo;s first define the Stewart platform architecture that we want to study.
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeFramesPositions(<span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
<pre class="src src-matlab">stewart = initializeStewartPlatform();
stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>, 90e<span class="org-type">-</span>3, <span class="org-string">'MO_B'</span>, 45e<span class="org-type">-</span>3);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStewartPose(stewart);
@ -1189,9 +1192,9 @@ L_max = 50e<span class="org-type">-</span>6; <span class="org-comment">% [m]</s
</div>
</div>
<div id="outline-container-orga4b5e5b" class="outline-3">
<h3 id="orga4b5e5b"><span class="section-number-3">5.2</span> Pure translations</h3>
<div class="outline-text-3" id="text-5-2">
<div id="outline-container-org2c6819e" class="outline-3">
<h3 id="org2c6819e">Pure translations</h3>
<div class="outline-text-3" id="text-org2c6819e">
<p>
Let&rsquo;s first estimate the mobility in translation when the orientation of the Stewart platform stays the same.
</p>
@ -1262,7 +1265,7 @@ We can also approximate the mobility by a sphere with a radius equal to the mini
</table>
<div id="orga71e017" class="figure">
<div id="orgc67ab85" class="figure">
<p><img src="figs/mobility_translations_null_rotation.png" alt="mobility_translations_null_rotation.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Obtain mobility of the Stewart platform for zero rotations (<a href="./figs/mobility_translations_null_rotation.png">png</a>, <a href="./figs/mobility_translations_null_rotation.pdf">pdf</a>)</p>
@ -1271,18 +1274,18 @@ We can also approximate the mobility by a sphere with a radius equal to the mini
</div>
</div>
<div id="outline-container-org748d42a" class="outline-2">
<h2 id="org748d42a"><span class="section-number-2">6</span> Functions</h2>
<div class="outline-text-2" id="text-6">
<div id="outline-container-orgc4916dc" class="outline-2">
<h2 id="orgc4916dc">Functions</h2>
<div class="outline-text-2" id="text-orgc4916dc">
<p>
<a id="org1e1d299"></a>
<a id="orgf9a6042"></a>
</p>
</div>
<div id="outline-container-org00ba36f" class="outline-3">
<h3 id="org00ba36f"><span class="section-number-3">6.1</span> <code>computeJacobian</code>: Compute the Jacobian Matrix</h3>
<div class="outline-text-3" id="text-6-1">
<div id="outline-container-org26e8b28" class="outline-3">
<h3 id="org26e8b28"><code>computeJacobian</code>: Compute the Jacobian Matrix</h3>
<div class="outline-text-3" id="text-org26e8b28">
<p>
<a id="org519ef53"></a>
<a id="org2387f19"></a>
</p>
<p>
@ -1290,9 +1293,9 @@ This Matlab function is accessible <a href="src/computeJacobian.m">here</a>.
</p>
</div>
<div id="outline-container-orgbdf3a2a" class="outline-4">
<h4 id="orgbdf3a2a">Function description</h4>
<div class="outline-text-4" id="text-orgbdf3a2a">
<div id="outline-container-org704ab84" class="outline-4">
<h4 id="org704ab84">Function description</h4>
<div class="outline-text-4" id="text-org704ab84">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[stewart]</span> = <span class="org-function-name">computeJacobian</span>(<span class="org-variable-name">stewart</span>)
<span class="org-comment">% computeJacobian -</span>
@ -1315,9 +1318,9 @@ This Matlab function is accessible <a href="src/computeJacobian.m">here</a>.
</div>
</div>
<div id="outline-container-orgd1d8163" class="outline-4">
<h4 id="orgd1d8163">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-orgd1d8163">
<div id="outline-container-org3990e47" class="outline-4">
<h4 id="org3990e47">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org3990e47">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.geometry, <span class="org-string">'As'</span>), <span class="org-string">'stewart.geometry should have attribute As'</span>)
As = stewart.geometry.As;
@ -1333,9 +1336,9 @@ Ki = stewart.actuators.K;
</div>
<div id="outline-container-orge54466d" class="outline-4">
<h4 id="orge54466d">Compute Jacobian Matrix</h4>
<div class="outline-text-4" id="text-orge54466d">
<div id="outline-container-org0cd57b5" class="outline-4">
<h4 id="org0cd57b5">Compute Jacobian Matrix</h4>
<div class="outline-text-4" id="text-org0cd57b5">
<div class="org-src-container">
<pre class="src src-matlab">J = [As<span class="org-type">'</span> , cross(Ab, As)<span class="org-type">'</span>];
</pre>
@ -1343,9 +1346,9 @@ Ki = stewart.actuators.K;
</div>
</div>
<div id="outline-container-org560e1a1" class="outline-4">
<h4 id="org560e1a1">Compute Stiffness Matrix</h4>
<div class="outline-text-4" id="text-org560e1a1">
<div id="outline-container-orge21dcfc" class="outline-4">
<h4 id="orge21dcfc">Compute Stiffness Matrix</h4>
<div class="outline-text-4" id="text-orge21dcfc">
<div class="org-src-container">
<pre class="src src-matlab">K = J<span class="org-type">'*</span>diag(Ki)<span class="org-type">*</span>J;
</pre>
@ -1353,9 +1356,9 @@ Ki = stewart.actuators.K;
</div>
</div>
<div id="outline-container-orga853f82" class="outline-4">
<h4 id="orga853f82">Compute Compliance Matrix</h4>
<div class="outline-text-4" id="text-orga853f82">
<div id="outline-container-orgae76071" class="outline-4">
<h4 id="orgae76071">Compute Compliance Matrix</h4>
<div class="outline-text-4" id="text-orgae76071">
<div class="org-src-container">
<pre class="src src-matlab">C = inv(K);
</pre>
@ -1363,9 +1366,9 @@ Ki = stewart.actuators.K;
</div>
</div>
<div id="outline-container-org4e11a57" class="outline-4">
<h4 id="org4e11a57">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org4e11a57">
<div id="outline-container-org78f18d7" class="outline-4">
<h4 id="org78f18d7">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org78f18d7">
<div class="org-src-container">
<pre class="src src-matlab">stewart.kinematics.J = J;
stewart.kinematics.K = K;
@ -1377,11 +1380,11 @@ stewart.kinematics.C = C;
</div>
<div id="outline-container-org6c7006f" class="outline-3">
<h3 id="org6c7006f"><span class="section-number-3">6.2</span> <code>inverseKinematics</code>: Compute Inverse Kinematics</h3>
<div class="outline-text-3" id="text-6-2">
<div id="outline-container-orgb82066f" class="outline-3">
<h3 id="orgb82066f"><code>inverseKinematics</code>: Compute Inverse Kinematics</h3>
<div class="outline-text-3" id="text-orgb82066f">
<p>
<a id="orgaf5a9a0"></a>
<a id="orgb8859d7"></a>
</p>
<p>
@ -1389,9 +1392,9 @@ This Matlab function is accessible <a href="src/inverseKinematics.m">here</a>.
</p>
</div>
<div id="outline-container-org7136bfb" class="outline-4">
<h4 id="org7136bfb">Theory</h4>
<div class="outline-text-4" id="text-org7136bfb">
<div id="outline-container-org89930b7" class="outline-4">
<h4 id="org89930b7">Theory</h4>
<div class="outline-text-4" id="text-org89930b7">
<p>
For inverse kinematic analysis, it is assumed that the position \({}^A\bm{P}\) and orientation of the moving platform \({}^A\bm{R}_B\) are given and the problem is to obtain the joint variables, namely, \(\bm{L} = [l_1, l_2, \dots, l_6]^T\).
</p>
@ -1425,9 +1428,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div>
</div>
<div id="outline-container-org75ec482" class="outline-4">
<h4 id="org75ec482">Function description</h4>
<div class="outline-text-4" id="text-org75ec482">
<div id="outline-container-org0d77b2e" class="outline-4">
<h4 id="org0d77b2e">Function description</h4>
<div class="outline-text-4" id="text-org0d77b2e">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[Li, dLi]</span> = <span class="org-function-name">inverseKinematics</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% inverseKinematics - Compute the needed length of each strut to have the wanted position and orientation of {B} with respect to {A}</span>
@ -1451,9 +1454,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div>
</div>
<div id="outline-container-orgc83e0f8" class="outline-4">
<h4 id="orgc83e0f8">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgc83e0f8">
<div id="outline-container-orgda02042" class="outline-4">
<h4 id="orgda02042">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgda02042">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1465,9 +1468,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div>
</div>
<div id="outline-container-org3ea2f51" class="outline-4">
<h4 id="org3ea2f51">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org3ea2f51">
<div id="outline-container-org4a3c325" class="outline-4">
<h4 id="org4a3c325">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org4a3c325">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.geometry, <span class="org-string">'Aa'</span>), <span class="org-string">'stewart.geometry should have attribute Aa'</span>)
Aa = stewart.geometry.Aa;
@ -1483,9 +1486,9 @@ l = stewart.geometry.l;
</div>
<div id="outline-container-org210ed60" class="outline-4">
<h4 id="org210ed60">Compute</h4>
<div class="outline-text-4" id="text-org210ed60">
<div id="outline-container-org0d64c23" class="outline-4">
<h4 id="org0d64c23">Compute</h4>
<div class="outline-text-4" id="text-org0d64c23">
<div class="org-src-container">
<pre class="src src-matlab">Li = sqrt(args.AP<span class="org-type">'*</span>args.AP <span class="org-type">+</span> diag(Bb<span class="org-type">'*</span>Bb) <span class="org-type">+</span> diag(Aa<span class="org-type">'*</span>Aa) <span class="org-type">-</span> (2<span class="org-type">*</span>args.AP<span class="org-type">'*</span>Aa)<span class="org-type">'</span> <span class="org-type">+</span> (2<span class="org-type">*</span>args.AP<span class="org-type">'*</span>(args.ARB<span class="org-type">*</span>Bb))<span class="org-type">'</span> <span class="org-type">-</span> diag(2<span class="org-type">*</span>(args.ARB<span class="org-type">*</span>Bb)<span class="org-type">'*</span>Aa));
</pre>
@ -1499,11 +1502,11 @@ l = stewart.geometry.l;
</div>
</div>
<div id="outline-container-org8f0dc6c" class="outline-3">
<h3 id="org8f0dc6c"><span class="section-number-3">6.3</span> <code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</h3>
<div class="outline-text-3" id="text-6-3">
<div id="outline-container-orgf5d8f0b" class="outline-3">
<h3 id="orgf5d8f0b"><code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</h3>
<div class="outline-text-3" id="text-orgf5d8f0b">
<p>
<a id="org7ba3dc5"></a>
<a id="orgdb31434"></a>
</p>
<p>
@ -1511,9 +1514,9 @@ This Matlab function is accessible <a href="src/forwardKinematicsApprox.m">here<
</p>
</div>
<div id="outline-container-org7c35749" class="outline-4">
<h4 id="org7c35749">Function description</h4>
<div class="outline-text-4" id="text-org7c35749">
<div id="outline-container-org473d0b1" class="outline-4">
<h4 id="org473d0b1">Function description</h4>
<div class="outline-text-4" id="text-org473d0b1">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[P, R]</span> = <span class="org-function-name">forwardKinematicsApprox</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% forwardKinematicsApprox - Computed the approximate pose of {B} with respect to {A} from the length of each strut and using</span>
@ -1535,9 +1538,9 @@ This Matlab function is accessible <a href="src/forwardKinematicsApprox.m">here<
</div>
</div>
<div id="outline-container-org5eee73c" class="outline-4">
<h4 id="org5eee73c">Optional Parameters</h4>
<div class="outline-text-4" id="text-org5eee73c">
<div id="outline-container-org8fe02d3" class="outline-4">
<h4 id="org8fe02d3">Optional Parameters</h4>
<div class="outline-text-4" id="text-org8fe02d3">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1548,9 +1551,9 @@ This Matlab function is accessible <a href="src/forwardKinematicsApprox.m">here<
</div>
</div>
<div id="outline-container-orgee36d86" class="outline-4">
<h4 id="orgee36d86">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-orgee36d86">
<div id="outline-container-org83d7e5f" class="outline-4">
<h4 id="org83d7e5f">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org83d7e5f">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.kinematics, <span class="org-string">'J'</span>), <span class="org-string">'stewart.kinematics should have attribute J'</span>)
J = stewart.kinematics.J;
@ -1559,9 +1562,9 @@ J = stewart.kinematics.J;
</div>
</div>
<div id="outline-container-orgc3e4684" class="outline-4">
<h4 id="orgc3e4684">Computation</h4>
<div class="outline-text-4" id="text-orgc3e4684">
<div id="outline-container-orge5ade24" class="outline-4">
<h4 id="orge5ade24">Computation</h4>
<div class="outline-text-4" id="text-orge5ade24">
<p>
From a small displacement of each strut \(d\bm{\mathcal{L}}\), we can compute the
position and orientation of {B} with respect to {A} using the following formula:
@ -1613,7 +1616,7 @@ We then compute the corresponding rotation matrix.
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-11 mar. 15:10</p>
<p class="date">Created: 2020-02-11 mar. 15:26</p>
</div>
</body>
</html>

View File

@ -4,7 +4,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>
<!-- 2020-01-29 mer. 12:02 -->
<!-- 2020-02-11 mar. 15:26 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Simscape Model</title>
@ -246,31 +246,16 @@ for the JavaScript code in this tag.
}
/*]]>*///-->
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
displayAlign: "center",
displayIndent: "0em",
"HTML-CSS": { scale: 100,
linebreaks: { automatic: "false" },
webFont: "TeX"
},
SVG: {scale: 100,
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em",
Macros: {
bm: ["{\\boldsymbol #1}",1],
<script>
MathJax = {
tex: { macros: {
bm: ["\\boldsymbol{#1}",1],
}
}
});
};
</script>
<script type="text/javascript"
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML"></script>
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<body>
<div id="org-div-home-and-up">
@ -283,23 +268,27 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org002dfa5">1. Parameters used for the Simscape Model</a></li>
<li><a href="#orgf99cee5">2. Simulation Configuration - Configuration reference</a></li>
<li><a href="#org7bf96b7">3. Subsystem Reference</a></li>
<li><a href="#orgae34e57">4. Subsystem - Fixed base and Mobile Platform</a></li>
<li><a href="#org2e16af3">5. Subsystem - Struts</a>
<li><a href="#orgc6e0b93">Parameters used for the Simscape Model</a></li>
<li><a href="#org66977e8">Simulation Configuration - Configuration reference</a></li>
<li><a href="#orgb2362eb">Subsystem Reference</a></li>
<li><a href="#orgdfad86d">Subsystem - Fixed base and Mobile Platform</a></li>
<li><a href="#org9d4af75">Subsystem - Struts</a>
<ul>
<li><a href="#org59382cb">5.1. Strut Configuration</a></li>
<li><a href="#org5a54286">5.2. Z-Axis Geophone</a>
<ul>
<li><a href="#org7f22bd7">5.2.1. Working Principle</a></li>
<li><a href="#org3956dae">5.2.2. Initialization function</a></li>
<li><a href="#org45d9234">Strut Configuration</a></li>
</ul>
</li>
<li><a href="#org2561089">5.3. Z-Axis Accelerometer</a>
<li><a href="#org7e2c432">Other Elements</a>
<ul>
<li><a href="#org70a289b">5.3.1. Working Principle</a></li>
<li><a href="#orgc7763c4">5.3.2. Initialization function</a></li>
<li><a href="#org4bdfc33">Z-Axis Geophone</a>
<ul>
<li><a href="#org60cad49">Working Principle</a></li>
<li><a href="#org48bfa57">Initialization function</a></li>
</ul>
</li>
<li><a href="#org99786f1">Z-Axis Accelerometer</a>
<ul>
<li><a href="#org631cd1a">Working Principle</a></li>
<li><a href="#org514425a">Initialization function</a></li>
</ul>
</li>
</ul>
@ -316,18 +305,18 @@ In this document is explained how the Simscape model of the Stewart Platform is
It is divided in the following sections:
</p>
<ul class="org-ul">
<li>section <a href="#org2553b43">1</a>: is explained how the parameters of the Stewart platform are set for the Simscape model</li>
<li>section <a href="#orgc20ead1">2</a>: the Simulink configuration (solver, simulation time, &#x2026;) is shared among all the Simulink files. It is explain how this is done.</li>
<li>section <a href="#org374fa44">3</a>: All the elements (platforms, struts, sensors, &#x2026;) are saved in separate files and imported in Simulink files using &ldquo;subsystem referenced&rdquo;.</li>
<li>section <a href="#org0562d05">4</a>: The simscape model for the fixed base and mobile platform are described in this section.</li>
<li>section <a href="#org0ff5129">5</a>: The simscape model for the Stewart platform struts is described in this section.</li>
<li>section <a href="#org8d965c3">No description for this link</a>: is explained how the parameters of the Stewart platform are set for the Simscape model</li>
<li>section <a href="#org354bfdb">No description for this link</a>: the Simulink configuration (solver, simulation time, &#x2026;) is shared among all the Simulink files. It is explain how this is done.</li>
<li>section <a href="#org66bbae2">No description for this link</a>: All the elements (platforms, struts, sensors, &#x2026;) are saved in separate files and imported in Simulink files using &ldquo;subsystem referenced&rdquo;.</li>
<li>section <a href="#orga4915c4">No description for this link</a>: The simscape model for the fixed base and mobile platform are described in this section.</li>
<li>section <a href="#orgdb5206f">No description for this link</a>: The simscape model for the Stewart platform struts is described in this section.</li>
</ul>
<div id="outline-container-org002dfa5" class="outline-2">
<h2 id="org002dfa5"><span class="section-number-2">1</span> Parameters used for the Simscape Model</h2>
<div class="outline-text-2" id="text-1">
<div id="outline-container-orgc6e0b93" class="outline-2">
<h2 id="orgc6e0b93">Parameters used for the Simscape Model</h2>
<div class="outline-text-2" id="text-orgc6e0b93">
<p>
<a id="org2553b43"></a>
<a id="org8d965c3"></a>
The Simscape Model of the Stewart Platform is working with the <code>stewart</code> structure generated using the functions described <a href="stewart-architecture.html">here</a>.
</p>
@ -350,11 +339,11 @@ The main advantage to have all the parameters defined in one structure (and not
</div>
<div id="outline-container-orgf99cee5" class="outline-2">
<h2 id="orgf99cee5"><span class="section-number-2">2</span> Simulation Configuration - Configuration reference</h2>
<div class="outline-text-2" id="text-2">
<div id="outline-container-org66977e8" class="outline-2">
<h2 id="org66977e8">Simulation Configuration - Configuration reference</h2>
<div class="outline-text-2" id="text-org66977e8">
<p>
<a id="orgc20ead1"></a>
<a id="org354bfdb"></a>
As multiple simulink files will be used for simulation and tests, it is very useful to determine good simulation configuration that will be <b>shared</b> among all the simulink files.
</p>
@ -381,11 +370,11 @@ It is however possible to modify specific parameters just for one simulation usi
</div>
</div>
<div id="outline-container-org7bf96b7" class="outline-2">
<h2 id="org7bf96b7"><span class="section-number-2">3</span> Subsystem Reference</h2>
<div class="outline-text-2" id="text-3">
<div id="outline-container-orgb2362eb" class="outline-2">
<h2 id="orgb2362eb">Subsystem Reference</h2>
<div class="outline-text-2" id="text-orgb2362eb">
<p>
<a id="org374fa44"></a>
<a id="org66bbae2"></a>
Several Stewart platform models are used, for instance one is use to study the dynamics while the other is used to apply active damping techniques.
</p>
@ -403,12 +392,12 @@ These shared subsystems are:
</ul>
<p>
These subsystems are referenced from another subsystem called <code>Stewart_Platform.slx</code> shown in figure <a href="#org7f7ef2b">1</a>, that basically connect them correctly.
These subsystems are referenced from another subsystem called <code>Stewart_Platform.slx</code> shown in figure <a href="#orgf687c71">1</a>, that basically connect them correctly.
This subsystem is then referenced in other simulink models for various purposes (control, analysis, simulation, &#x2026;).
</p>
<div id="org7f7ef2b" class="figure">
<div id="orgf687c71" class="figure">
<p><img src="figs/simscape_stewart_platform.png" alt="simscape_stewart_platform.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Simscape Subsystem of the Stewart platform. Encapsulate the Subsystems corresponding to the fixed base, mobile platform and all the struts.</p>
@ -416,11 +405,11 @@ This subsystem is then referenced in other simulink models for various purposes
</div>
</div>
<div id="outline-container-orgae34e57" class="outline-2">
<h2 id="orgae34e57"><span class="section-number-2">4</span> Subsystem - Fixed base and Mobile Platform</h2>
<div class="outline-text-2" id="text-4">
<div id="outline-container-orgdfad86d" class="outline-2">
<h2 id="orgdfad86d">Subsystem - Fixed base and Mobile Platform</h2>
<div class="outline-text-2" id="text-orgdfad86d">
<p>
<a id="org0562d05"></a>
<a id="orga4915c4"></a>
Both the fixed base and the mobile platform simscape models share many similarities.
</p>
@ -438,14 +427,14 @@ As always, the parameters that define the geometry are taken from the <code>stew
</p>
<div id="orga1b9893" class="figure">
<div id="org858f0b4" class="figure">
<p><img src="figs/simscape_fixed_base.png" alt="simscape_fixed_base.png" width="1000px" />
</p>
<p><span class="figure-number">Figure 2: </span>Simscape Model of the Fixed base</p>
</div>
<div id="org1f71117" class="figure">
<div id="org4b31aa3" class="figure">
<p><img src="figs/simscape_mobile_platform.png" alt="simscape_mobile_platform.png" width="800px" />
</p>
<p><span class="figure-number">Figure 3: </span>Simscape Model of the Mobile platform</p>
@ -453,19 +442,19 @@ As always, the parameters that define the geometry are taken from the <code>stew
</div>
</div>
<div id="outline-container-org2e16af3" class="outline-2">
<h2 id="org2e16af3"><span class="section-number-2">5</span> Subsystem - Struts</h2>
<div class="outline-text-2" id="text-5">
<div id="outline-container-org9d4af75" class="outline-2">
<h2 id="org9d4af75">Subsystem - Struts</h2>
<div class="outline-text-2" id="text-org9d4af75">
<p>
<a id="org0ff5129"></a>
<a id="orgdb5206f"></a>
</p>
</div>
<div id="outline-container-org59382cb" class="outline-3">
<h3 id="org59382cb"><span class="section-number-3">5.1</span> Strut Configuration</h3>
<div class="outline-text-3" id="text-5-1">
<div id="outline-container-org45d9234" class="outline-3">
<h3 id="org45d9234">Strut Configuration</h3>
<div class="outline-text-3" id="text-org45d9234">
<p>
For the Stewart platform, the 6 struts are identical.
Thus, all the struts used in the Stewart platform are referring to the same subsystem called <code>stewart_strut.slx</code> and shown in Figure <a href="#org9ef7b41">4</a>.
Thus, all the struts used in the Stewart platform are referring to the same subsystem called <code>stewart_strut.slx</code> and shown in Figure <a href="#org1dc8fce">4</a>.
</p>
<p>
@ -487,7 +476,7 @@ This is why the <b>UPS</b> configuration is used, but other configuration can be
</p>
<div id="org9ef7b41" class="figure">
<div id="org1dc8fce" class="figure">
<p><img src="figs/simscape_strut.png" alt="simscape_strut.png" width="800px" />
</p>
<p><span class="figure-number">Figure 4: </span>Simscape model of the Stewart platform&rsquo;s strut</p>
@ -515,16 +504,21 @@ Both inertial sensors are described bellow.
</p>
</div>
</div>
<div id="outline-container-org5a54286" class="outline-3">
<h3 id="org5a54286"><span class="section-number-3">5.2</span> Z-Axis Geophone</h3>
<div class="outline-text-3" id="text-5-2">
</div>
<div id="outline-container-org7f22bd7" class="outline-4">
<h4 id="org7f22bd7"><span class="section-number-4">5.2.1</span> Working Principle</h4>
<div class="outline-text-4" id="text-5-2-1">
<div id="outline-container-org7e2c432" class="outline-2">
<h2 id="org7e2c432">Other Elements</h2>
<div class="outline-text-2" id="text-org7e2c432">
</div>
<div id="outline-container-org4bdfc33" class="outline-3">
<h3 id="org4bdfc33">Z-Axis Geophone</h3>
<div class="outline-text-3" id="text-org4bdfc33">
</div>
<div id="outline-container-org60cad49" class="outline-4">
<h4 id="org60cad49">Working Principle</h4>
<div class="outline-text-4" id="text-org60cad49">
<p>
From the schematic of the Z-axis geophone shown in Figure <a href="#orgbecc7b0">5</a>, we can write the transfer function from the support velocity \(\dot{w}\) to the relative velocity of the inertial mass \(\dot{d}\):
From the schematic of the Z-axis geophone shown in Figure <a href="#org819fba8">5</a>, we can write the transfer function from the support velocity \(\dot{w}\) to the relative velocity of the inertial mass \(\dot{d}\):
\[ \frac{\dot{d}}{\dot{w}} = \frac{-\frac{s^2}{{\omega_0}^2}}{\frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1} \]
with:
</p>
@ -534,7 +528,7 @@ with:
</ul>
<div id="orgbecc7b0" class="figure">
<div id="org819fba8" class="figure">
<p><img src="figs/inertial_sensor.png" alt="inertial_sensor.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Schematic of a Z-Axis geophone</p>
@ -555,11 +549,11 @@ We generally want to have the smallest resonant frequency \(\omega_0\) to measur
</div>
</div>
<div id="outline-container-org3956dae" class="outline-4">
<h4 id="org3956dae"><span class="section-number-4">5.2.2</span> Initialization function</h4>
<div class="outline-text-4" id="text-5-2-2">
<div id="outline-container-org48bfa57" class="outline-4">
<h4 id="org48bfa57">Initialization function</h4>
<div class="outline-text-4" id="text-org48bfa57">
<p>
<a id="orgabe7399"></a>
<a id="orgd31bda9"></a>
</p>
<p>
@ -591,15 +585,15 @@ This Matlab function is accessible <a href="../src/initializeZAxisGeophone.m">he
</div>
</div>
<div id="outline-container-org2561089" class="outline-3">
<h3 id="org2561089"><span class="section-number-3">5.3</span> Z-Axis Accelerometer</h3>
<div class="outline-text-3" id="text-5-3">
<div id="outline-container-org99786f1" class="outline-3">
<h3 id="org99786f1">Z-Axis Accelerometer</h3>
<div class="outline-text-3" id="text-org99786f1">
</div>
<div id="outline-container-org70a289b" class="outline-4">
<h4 id="org70a289b"><span class="section-number-4">5.3.1</span> Working Principle</h4>
<div class="outline-text-4" id="text-5-3-1">
<div id="outline-container-org631cd1a" class="outline-4">
<h4 id="org631cd1a">Working Principle</h4>
<div class="outline-text-4" id="text-org631cd1a">
<p>
From the schematic of the Z-axis accelerometer shown in Figure <a href="#orgbacfc60">6</a>, we can write the transfer function from the support acceleration \(\ddot{w}\) to the relative position of the inertial mass \(d\):
From the schematic of the Z-axis accelerometer shown in Figure <a href="#org1274602">6</a>, we can write the transfer function from the support acceleration \(\ddot{w}\) to the relative position of the inertial mass \(d\):
\[ \frac{d}{\ddot{w}} = \frac{-\frac{1}{{\omega_0}^2}}{\frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1} \]
with:
</p>
@ -609,7 +603,7 @@ with:
</ul>
<div id="orgbacfc60" class="figure">
<div id="org1274602" class="figure">
<p><img src="figs/inertial_sensor.png" alt="inertial_sensor.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Schematic of a Z-Axis geophone</p>
@ -634,11 +628,11 @@ Note that there is trade-off between:
</div>
</div>
<div id="outline-container-orgc7763c4" class="outline-4">
<h4 id="orgc7763c4"><span class="section-number-4">5.3.2</span> Initialization function</h4>
<div class="outline-text-4" id="text-5-3-2">
<div id="outline-container-org514425a" class="outline-4">
<h4 id="org514425a">Initialization function</h4>
<div class="outline-text-4" id="text-org514425a">
<p>
<a id="orge9014b7"></a>
<a id="orge91f65f"></a>
</p>
<p>
@ -676,7 +670,7 @@ This Matlab function is accessible <a href="../src/initializeZAxisAccelerometer.
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-01-29 mer. 12:02</p>
<p class="date">Created: 2020-02-11 mar. 15:26</p>
</div>
</body>
</html>

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-01-28 mar. 13:42 -->
<!-- 2020-02-11 mar. 15:23 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Simulink Project for the Stewart Simscape folder</title>

323
docs/static-analysis.html Normal file
View File

@ -0,0 +1,323 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-11 mar. 15:27 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Static Analysis</title>
<meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" />
<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #ccc;
box-shadow: 3px 3px 3px #eee;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: visible;
padding-top: 1.2em;
}
pre.src:before {
display: none;
position: absolute;
background-color: white;
top: -10px;
right: 10px;
padding: 3px;
border: 1px solid black;
}
pre.src:hover:before { display: inline;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.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 src="./js/jquery.stickytableheaders.min.js"></script>
<script src="./js/readtheorg.js"></script>
<script type="text/javascript">
/*
@licstart The following is the entire license notice for the
JavaScript code in this tag.
Copyright (C) 2012-2020 Free Software Foundation, Inc.
The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version. The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.
@licend The above is the entire license notice
for the JavaScript code in this tag.
*/
<!--/*--><![CDATA[/*><!--*/
function CodeHighlightOn(elem, id)
{
var target = document.getElementById(id);
if(null != target) {
elem.cacheClassElem = elem.className;
elem.cacheClassTarget = target.className;
target.className = "code-highlighted";
elem.className = "code-highlighted";
}
}
function CodeHighlightOff(elem, id)
{
var target = document.getElementById(id);
if(elem.cacheClassElem)
elem.className = elem.cacheClassElem;
if(elem.cacheClassTarget)
target.className = elem.cacheClassTarget;
}
/*]]>*///-->
</script>
<script>
MathJax = {
tex: { macros: {
bm: ["\\boldsymbol{#1}",1],
}
}
};
</script>
<script type="text/javascript"
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<body>
<div id="org-div-home-and-up">
<a accesskey="h" href="./index.html"> UP </a>
|
<a accesskey="H" href="./index.html"> HOME </a>
</div><div id="content">
<h1 class="title">Stewart Platform - Static Analysis</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgc502e97">Coupling</a></li>
</ul>
</div>
</div>
<div id="outline-container-orgc502e97" class="outline-2">
<h2 id="orgc502e97">Coupling</h2>
<div class="outline-text-2" id="text-orgc502e97">
<p>
What causes the coupling from \(F_i\) to \(X_i\) ?
</p>
<div class="org-src-container">
<pre class="src src-latex"><span class="org-font-latex-sedate"><span class="org-keyword">\begin</span></span>{<span class="org-function-name">tikzpicture</span>}
<span class="org-font-latex-sedate">\node</span>[block] (Jt) at (0, 0) {<span class="org-font-latex-math">$J</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">^</span></span><span class="org-font-latex-math">{-T}$</span>};
<span class="org-font-latex-sedate">\node</span>[block, right= of Jt] (G) {<span class="org-font-latex-math">$G$</span>};
<span class="org-font-latex-sedate">\node</span>[block, right= of G] (J) {<span class="org-font-latex-math">$J</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">^</span></span><span class="org-font-latex-math">{-1}$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (<span class="org-font-latex-math">$(Jt.west)+(-0.8, 0)$</span>) -- (Jt.west) node[above left]{<span class="org-font-latex-math">$F</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (Jt.east) -- (G.west) node[above left]{<span class="org-font-latex-math">$</span><span class="org-font-latex-sedate"><span class="org-font-latex-math">\tau</span></span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (G.east) -- (J.west) node[above left]{<span class="org-font-latex-math">$q</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
<span class="org-font-latex-sedate">\draw</span>[-&gt;] (J.east) -- ++(0.8, 0) node[above left]{<span class="org-font-latex-math">$X</span><span class="org-font-latex-math"><span class="org-font-latex-script-char">_</span></span><span class="org-font-latex-math">i$</span>};
<span class="org-font-latex-sedate"><span class="org-keyword">\end</span></span>{<span class="org-function-name">tikzpicture</span>}
</pre>
</div>
<div id="org41430df" class="figure">
<p><img src="figs/coupling.png" alt="coupling.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Block diagram to control an hexapod</p>
</div>
<p>
There is no coupling from \(F_i\) to \(X_j\) if \(J^{-1} G J^{-T}\) is diagonal.
</p>
<p>
If \(G\) is diagonal (cubic configuration), then \(J^{-1} G J^{-T} = G J^{-1} J^{-T} = G (J^{T} J)^{-1} = G K^{-1}\)
</p>
<p>
Thus, the system is uncoupled if \(G\) and \(K\) are diagonal.
</p>
</div>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-11 mar. 15:27</p>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -18,6 +18,16 @@
#+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
#+PROPERTY: header-args:latex+ :results raw replace :buffer no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports both
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
:END:
* Introduction :ignore:

View File

@ -19,6 +19,16 @@
#+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
#+PROPERTY: header-args:latex+ :results raw replace :buffer no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports both
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
:END:
* Introduction :ignore:

View File

@ -18,6 +18,16 @@
#+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
#+PROPERTY: header-args:latex+ :results raw replace :buffer no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports both
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
:END:
* Some tests

1
org/figs Symbolic link
View File

@ -0,0 +1 @@
../figs

View File

@ -19,6 +19,16 @@
#+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
#+PROPERTY: header-args:latex+ :results raw replace :buffer no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports both
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
:END:
* Introduction :ignore:

View File

@ -18,6 +18,16 @@
#+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
#+PROPERTY: header-args:latex+ :results raw replace :buffer no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports both
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
:END:
* Introduction :ignore:

View File

@ -18,6 +18,16 @@
#+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
#+PROPERTY: header-args:latex+ :results raw replace :buffer no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports both
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
:END:
* Introduction :ignore:

View File

@ -10,6 +10,16 @@
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.js"></script>
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/thesis/latex/}{config.tex}")
#+PROPERTY: header-args:latex+ :imagemagick t :fit yes
#+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150
#+PROPERTY: header-args:latex+ :imoutoptions -quality 100
#+PROPERTY: header-args:latex+ :results raw replace :buffer no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports both
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
#+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org
#+PROPERTY: header-args:matlab+ :exports both