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"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-02-06 jeu. 15:39 --> <!-- 2020-02-11 mar. 15:26 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Decentralized Active Damping</title> <title>Stewart Platform - Decentralized Active Damping</title>
@ -268,28 +268,28 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#orgfba33d4">1. Inertial Control</a> <li><a href="#orgd59c804">Inertial Control</a>
<ul> <ul>
<li><a href="#org0ea4bd4">1.1. Identification of the Dynamics</a></li> <li><a href="#org5f749c8">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="#org543be7a">Effect of the Flexible Joint stiffness on the Dynamics</a></li>
<li><a href="#orga92be75">1.3. Obtained Damping</a></li> <li><a href="#org9a605b4">Obtained Damping</a></li>
<li><a href="#orgb29f377">1.4. Conclusion</a></li> <li><a href="#org42a74ed">Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org5fde56d">2. Integral Force Feedback</a> <li><a href="#org74c7eb4">Integral Force Feedback</a>
<ul> <ul>
<li><a href="#org8823e64">2.1. Identification of the Dynamics with perfect Joints</a></li> <li><a href="#orgc96f772">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="#orgd119d8a">Effect of the Flexible Joint stiffness on the Dynamics</a></li>
<li><a href="#org40dffdd">2.3. Obtained Damping</a></li> <li><a href="#org2b5e45a">Obtained Damping</a></li>
<li><a href="#org2ae5aaf">2.4. Conclusion</a></li> <li><a href="#org39ddf1e">Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org9425768">3. Direct Velocity Feedback</a> <li><a href="#org08917d6">Direct Velocity Feedback</a>
<ul> <ul>
<li><a href="#org61043ac">3.1. Identification of the Dynamics with perfect Joints</a></li> <li><a href="#org243b924">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="#orgcdb3ee5">Effect of the Flexible Joint stiffness on the Dynamics</a></li>
<li><a href="#org87c6911">3.3. Obtained Damping</a></li> <li><a href="#orgff0cbf9">Obtained Damping</a></li>
<li><a href="#org516fed1">3.4. Conclusion</a></li> <li><a href="#org4027234">Conclusion</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -300,24 +300,25 @@ for the JavaScript code in this tag.
The following decentralized active damping techniques are briefly studied: The following decentralized active damping techniques are briefly studied:
</p> </p>
<ul class="org-ul"> <ul class="org-ul">
<li>Inertial Control (proportional feedback of the absolute velocity): Section <a href="#org3c68d9e">1</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="#org62cd19c">2</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="#org587277a">3</a></li> <li>Direct feedback of the relative velocity of each strut: Section <a href="#org0aa816a">No description for this link</a></li>
</ul> </ul>
<div id="outline-container-orgfba33d4" class="outline-2"> <div id="outline-container-orgd59c804" class="outline-2">
<h2 id="orgfba33d4"><span class="section-number-2">1</span> Inertial Control</h2> <h2 id="orgd59c804">Inertial Control</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-orgd59c804">
<p> <p>
<a id="org3c68d9e"></a> <a id="orgeb37c7d"></a>
</p> </p>
</div> </div>
<div id="outline-container-org0ea4bd4" class="outline-3"> <div id="outline-container-org5f749c8" class="outline-3">
<h3 id="org0ea4bd4"><span class="section-number-3">1.1</span> Identification of the Dynamics</h3> <h3 id="org5f749c8">Identification of the Dynamics</h3>
<div class="outline-text-3" id="text-1-1"> <div class="outline-text-3" id="text-org5f749c8">
<div class="org-src-container"> <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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
@ -350,10 +351,10 @@ G.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string">
</div> </div>
<p> <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> </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><img src="figs/inertial_plant_coupling.png" alt="inertial_plant_coupling.png" />
</p> </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> <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> </div>
<div id="outline-container-org5a29480" class="outline-3"> <div id="outline-container-org543be7a" class="outline-3">
<h3 id="org5a29480"><span class="section-number-3">1.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3> <h3 id="org543be7a">Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div class="outline-text-3" id="text-1-2"> <div class="outline-text-3" id="text-org543be7a">
<p> <p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics. We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p> </p>
@ -376,10 +377,10 @@ Gf.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string"
</div> </div>
<p> <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> </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><img src="figs/inertial_plant_flexible_joint_decentralized.png" alt="inertial_plant_flexible_joint_decentralized.png" />
</p> </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> <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> </div>
<div id="outline-container-orga92be75" class="outline-3"> <div id="outline-container-org9a605b4" class="outline-3">
<h3 id="orga92be75"><span class="section-number-3">1.3</span> Obtained Damping</h3> <h3 id="org9a605b4">Obtained Damping</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-org9a605b4">
<p> <p>
The control is a performed in a decentralized manner. 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: 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>
<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> </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><img src="figs/root_locus_inertial_rot_stiffness.png" alt="root_locus_inertial_rot_stiffness.png" />
</p> </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> <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>
<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><img src="figs/pole_damping_gain_inertial_rot_stiffness.png" alt="pole_damping_gain_inertial_rot_stiffness.png" />
</p> </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> <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> </div>
<div id="outline-container-orgb29f377" class="outline-3"> <div id="outline-container-org42a74ed" class="outline-3">
<h3 id="orgb29f377"><span class="section-number-3">1.4</span> Conclusion</h3> <h3 id="org42a74ed">Conclusion</h3>
<div class="outline-text-3" id="text-1-4"> <div class="outline-text-3" id="text-org42a74ed">
<div class="important"> <div class="important">
<p> <p>
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors. 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> </div>
<div id="outline-container-org5fde56d" class="outline-2"> <div id="outline-container-org74c7eb4" class="outline-2">
<h2 id="org5fde56d"><span class="section-number-2">2</span> Integral Force Feedback</h2> <h2 id="org74c7eb4">Integral Force Feedback</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-org74c7eb4">
<p> <p>
<a id="org62cd19c"></a> <a id="orgab5e6b5"></a>
</p> </p>
</div> </div>
<div id="outline-container-org8823e64" class="outline-3"> <div id="outline-container-orgc96f772" class="outline-3">
<h3 id="org8823e64"><span class="section-number-3">2.1</span> Identification of the Dynamics with perfect Joints</h3> <h3 id="orgc96f772">Identification of the Dynamics with perfect Joints</h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-orgc96f772">
<p> <p>
We first initialize the Stewart platform without joint stiffness. We first initialize the Stewart platform without joint stiffness.
</p> </p>
<div class="org-src-container"> <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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeAmplifiedStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, <span class="org-string">'disable'</span>, <span class="org-constant">true</span>); stewart = initializeJointDynamics(stewart, <span class="org-string">'disable'</span>, <span class="org-constant">true</span>);
stewart = initializeCylindricalPlatforms(stewart); stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
@ -484,10 +487,10 @@ G.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">
</div> </div>
<p> <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> </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><img src="figs/iff_plant_coupling.png" alt="iff_plant_coupling.png" />
</p> </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> <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> </div>
<div id="outline-container-org2aff899" class="outline-3"> <div id="outline-container-orgd119d8a" class="outline-3">
<h3 id="org2aff899"><span class="section-number-3">2.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3> <h3 id="orgd119d8a">Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div class="outline-text-3" id="text-2-2"> <div class="outline-text-3" id="text-orgd119d8a">
<p> <p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics. We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p> </p>
@ -510,10 +513,10 @@ Gf.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string"
</div> </div>
<p> <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> </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><img src="figs/iff_plant_flexible_joint_decentralized.png" alt="iff_plant_flexible_joint_decentralized.png" />
</p> </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> <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> </div>
<div id="outline-container-org40dffdd" class="outline-3"> <div id="outline-container-org2b5e45a" class="outline-3">
<h3 id="org40dffdd"><span class="section-number-3">2.3</span> Obtained Damping</h3> <h3 id="org2b5e45a">Obtained Damping</h3>
<div class="outline-text-3" id="text-2-3"> <div class="outline-text-3" id="text-org2b5e45a">
<p> <p>
The control is a performed in a decentralized manner. 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: 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>
<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> </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><img src="figs/root_locus_iff_rot_stiffness.png" alt="root_locus_iff_rot_stiffness.png" />
</p> </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> <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>
<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><img src="figs/pole_damping_gain_iff_rot_stiffness.png" alt="pole_damping_gain_iff_rot_stiffness.png" />
</p> </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> <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> </div>
<div id="outline-container-org2ae5aaf" class="outline-3"> <div id="outline-container-org39ddf1e" class="outline-3">
<h3 id="org2ae5aaf"><span class="section-number-3">2.4</span> Conclusion</h3> <h3 id="org39ddf1e">Conclusion</h3>
<div class="outline-text-3" id="text-2-4"> <div class="outline-text-3" id="text-org39ddf1e">
<div class="important"> <div class="important">
<p> <p>
The joint stiffness has a huge impact on the attainable active damping performance when using force sensors. 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> </div>
<div id="outline-container-org9425768" class="outline-2"> <div id="outline-container-org08917d6" class="outline-2">
<h2 id="org9425768"><span class="section-number-2">3</span> Direct Velocity Feedback</h2> <h2 id="org08917d6">Direct Velocity Feedback</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-org08917d6">
<p> <p>
<a id="org587277a"></a> <a id="org0aa816a"></a>
</p> </p>
</div> </div>
<div id="outline-container-org61043ac" class="outline-3"> <div id="outline-container-org243b924" class="outline-3">
<h3 id="org61043ac"><span class="section-number-3">3.1</span> Identification of the Dynamics with perfect Joints</h3> <h3 id="org243b924">Identification of the Dynamics with perfect Joints</h3>
<div class="outline-text-3" id="text-3-1"> <div class="outline-text-3" id="text-org243b924">
<p> <p>
We first initialize the Stewart platform without joint stiffness. We first initialize the Stewart platform without joint stiffness.
</p> </p>
<div class="org-src-container"> <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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
@ -619,10 +623,10 @@ G.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string">
</div> </div>
<p> <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> </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><img src="figs/dvf_plant_coupling.png" alt="dvf_plant_coupling.png" />
</p> </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> <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>
<div id="outline-container-org8f71141" class="outline-3"> <div id="outline-container-orgcdb3ee5" class="outline-3">
<h3 id="org8f71141"><span class="section-number-3">3.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3> <h3 id="orgcdb3ee5">Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div class="outline-text-3" id="text-3-2"> <div class="outline-text-3" id="text-orgcdb3ee5">
<p> <p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics. We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p> </p>
@ -646,10 +650,10 @@ Gf.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string"
</div> </div>
<p> <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> </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><img src="figs/dvf_plant_flexible_joint_decentralized.png" alt="dvf_plant_flexible_joint_decentralized.png" />
</p> </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> <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> </div>
<div id="outline-container-org87c6911" class="outline-3"> <div id="outline-container-orgff0cbf9" class="outline-3">
<h3 id="org87c6911"><span class="section-number-3">3.3</span> Obtained Damping</h3> <h3 id="orgff0cbf9">Obtained Damping</h3>
<div class="outline-text-3" id="text-3-3"> <div class="outline-text-3" id="text-orgff0cbf9">
<p> <p>
The control is a performed in a decentralized manner. 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: 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>
<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> </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><img src="figs/root_locus_dvf_rot_stiffness.png" alt="root_locus_dvf_rot_stiffness.png" />
</p> </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> <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>
<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><img src="figs/pole_damping_gain_dvf_rot_stiffness.png" alt="pole_damping_gain_dvf_rot_stiffness.png" />
</p> </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> <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> </div>
<div id="outline-container-org516fed1" class="outline-3"> <div id="outline-container-org4027234" class="outline-3">
<h3 id="org516fed1"><span class="section-number-3">3.4</span> Conclusion</h3> <h3 id="org4027234">Conclusion</h3>
<div class="outline-text-3" id="text-3-4"> <div class="outline-text-3" id="text-org4027234">
<div class="important"> <div class="important">
<p> <p>
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors. 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>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-06 jeu. 15:39</p> <p class="date">Created: 2020-02-11 mar. 15:26</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -5,7 +5,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-01-22 mer. 16:31 --> <!-- 2020-02-11 mar. 15:23 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Control Study</title> <title>Stewart Platform - Control Study</title>
@ -247,31 +247,16 @@ for the JavaScript code in this tag.
} }
/*]]>*///--> /*]]>*///-->
</script> </script>
<script type="text/x-mathjax-config"> <script>
MathJax.Hub.Config({ MathJax = {
displayAlign: "center", tex: { macros: {
displayIndent: "0em", bm: ["\\boldsymbol{#1}",1],
}
"HTML-CSS": { scale: 100, }
linebreaks: { automatic: "false" }, };
webFont: "TeX" </script>
}, <script type="text/javascript"
SVG: {scale: 100, src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em",
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>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
@ -284,39 +269,38 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#orgd132186">1. First Control Architecture</a> <li><a href="#orgc1805a8">First Control Architecture</a>
<ul> <ul>
<li><a href="#orgf511610">1.1. Control Schematic</a></li> <li><a href="#org066d914">Control Schematic</a></li>
<li><a href="#org210df0e">1.2. Initialize the Stewart platform</a></li> <li><a href="#org64f6d6b">Initialize the Stewart platform</a></li>
<li><a href="#org2be78af">1.3. Initialize the Simulation</a></li> <li><a href="#org4493ec7">Identification of the plant</a></li>
<li><a href="#org032eb91">1.4. Identification of the plant</a></li> <li><a href="#org72dad5c">Plant Analysis</a></li>
<li><a href="#org7cd44a9">1.5. Plant Analysis</a></li> <li><a href="#orga9fb0f5">Controller Design</a></li>
<li><a href="#orgcff4d92">1.6. Controller Design</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="outline-container-orgd132186" class="outline-2"> <div id="outline-container-orgc1805a8" class="outline-2">
<h2 id="orgd132186"><span class="section-number-2">1</span> First Control Architecture</h2> <h2 id="orgc1805a8">First Control Architecture</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-orgc1805a8">
</div> </div>
<div id="outline-container-orgf511610" class="outline-3"> <div id="outline-container-org066d914" class="outline-3">
<h3 id="orgf511610"><span class="section-number-3">1.1</span> Control Schematic</h3> <h3 id="org066d914">Control Schematic</h3>
<div class="outline-text-3" id="text-1-1"> <div class="outline-text-3" id="text-org066d914">
<div class="org-src-container"> <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>} <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-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>[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>[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=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">_{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">_</span></span><span class="org-font-latex-math">{L}$</span>};
<span class="org-comment">% Connections and labels</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>[&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">_{L}</span></span><span class="org-font-latex-math">$</span>}; <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">_{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">_</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;] (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">\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>} <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> </div>
<div id="outline-container-org210df0e" class="outline-3"> <div id="outline-container-org64f6d6b" class="outline-3">
<h3 id="org210df0e"><span class="section-number-3">1.2</span> Initialize the Stewart platform</h3> <h3 id="org64f6d6b">Initialize the Stewart platform</h3>
<div class="outline-text-3" id="text-1-2"> <div class="outline-text-3" id="text-org64f6d6b">
<div class="org-src-container"> <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();
<span class="org-comment">% stewart = generateCubicConfiguration(stewart, 'Hc', 60e-3, 'FOc', 45e-3, 'FHa', 5e-3, 'MHb', 5e-3);</span> stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(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 = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org2be78af" class="outline-3"> <div id="outline-container-org4493ec7" class="outline-3">
<h3 id="org2be78af"><span class="section-number-3">1.3</span> Initialize the Simulation</h3> <h3 id="org4493ec7">Identification of the plant</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-org4493ec7">
<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">
<p> <p>
Let&rsquo;s identify the transfer function from \(\bm{\tau}}\) to \(\bm{L}\). Let&rsquo;s identify the transfer function from \(\bm{\tau}}\) to \(\bm{L}\).
</p> </p>
@ -384,18 +361,18 @@ G.OutputName = {<span class="org-string">'L1'</span>, <span class="org-string">'
</div> </div>
</div> </div>
<div id="outline-container-org7cd44a9" class="outline-3"> <div id="outline-container-org72dad5c" class="outline-3">
<h3 id="org7cd44a9"><span class="section-number-3">1.5</span> Plant Analysis</h3> <h3 id="org72dad5c">Plant Analysis</h3>
<div class="outline-text-3" id="text-1-5"> <div class="outline-text-3" id="text-org72dad5c">
<p> <p>
Diagonal terms Diagonal terms
Compare to off-diagonal terms Compare to off-diagonal terms
</p> </p>
</div> </div>
</div> </div>
<div id="outline-container-orgcff4d92" class="outline-3"> <div id="outline-container-orga9fb0f5" class="outline-3">
<h3 id="orgcff4d92"><span class="section-number-3">1.6</span> Controller Design</h3> <h3 id="orga9fb0f5">Controller Design</h3>
<div class="outline-text-3" id="text-1-6"> <div class="outline-text-3" id="text-orga9fb0f5">
<p> <p>
One integrator should be present in the controller. One integrator should be present in the controller.
</p> </p>
@ -424,7 +401,7 @@ Kl = Kl <span class="org-type">*</span> eye(6);
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-01-22 mer. 16:31</p> <p class="date">Created: 2020-02-11 mar. 15:23</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-02-07 ven. 17:31 --> <!-- 2020-02-11 mar. 15:26 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cubic configuration for the Stewart Platform</title> <title>Cubic configuration for the Stewart Platform</title>
@ -268,25 +268,27 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#org16a66cd">1. Configuration Analysis - Stiffness Matrix</a> <li><a href="#org8c6677e">Configuration Analysis - Stiffness Matrix</a>
<ul> <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="#orgf6f7ad2">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="#orga88e79a">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="#orge02ec88">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="#org43fd7e4">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="#orgd35acc0">Conclusion</a></li>
<li><a href="#org265d677">1.6. Having Cube&rsquo;s center above the top platform</a></li> <li><a href="#org8afa645">Having Cube&rsquo;s center above the top platform</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org93a8538">2. Functions</a> <li><a href="#org3044455">Functions</a>
<ul> <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> <ul>
<li><a href="#org0b63bb1">Function description</a></li> <li><a href="#orga5a9ba8">Function description</a></li>
<li><a href="#orgaac7da3">Documentation</a></li> <li><a href="#org3253792">Documentation</a></li>
<li><a href="#org747c61c">Optional Parameters</a></li> <li><a href="#org154b5fb">Optional Parameters</a></li>
<li><a href="#orgec4e738">Position of the Cube</a></li> <li><a href="#orgbb480a6">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org97e1d45">Compute the pose</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> </ul>
</li> </li>
</ul> </ul>
@ -313,7 +315,7 @@ According to <a class='org-ref-reference' href="#preumont07_six_axis_singl_stage
</p> </p>
<p> <p>
To generate and study the Cubic configuration, <code>generateCubicConfiguration</code> is used (description in section <a href="#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: The goal is to study the benefits of using a cubic configuration:
</p> </p>
<ul class="org-ul"> <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> <li>Is the center of the cube an important point?</li>
</ul> </ul>
<div id="outline-container-org16a66cd" class="outline-2"> <div id="outline-container-org8c6677e" class="outline-2">
<h2 id="org16a66cd"><span class="section-number-2">1</span> Configuration Analysis - Stiffness Matrix</h2> <h2 id="org8c6677e">Configuration Analysis - Stiffness Matrix</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-org8c6677e">
</div> </div>
<div id="outline-container-orgd83749a" class="outline-3"> <div id="outline-container-orgf6f7ad2" 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> <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-1-1"> <div class="outline-text-3" id="text-orgf6f7ad2">
<p> <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. The Jacobian matrix is estimated at the location of the center of the cube.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">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 = 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 = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1)); 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>
<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><img src="./figs/3d-cubic-stewart-aligned.png" alt="3d-cubic-stewart-aligned.png" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Centered cubic configuration</p> <p><span class="figure-number">Figure 1: </span>Centered cubic configuration</p>
</div> </div>
<div 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><img src="figs/cubic_conf_centered_J_center.png" alt="cubic_conf_centered_J_center.png" />
</p> </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> <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> </div>
<div id="outline-container-org84204db" class="outline-3"> <div id="outline-container-orga88e79a" 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> <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-1-2"> <div class="outline-text-3" id="text-orga88e79a">
<p> <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. The Jacobian matrix is not estimated at the location of the center of the cube.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">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 = 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 = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1)); 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>
<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><img src="figs/cubic_conf_centered_J_not_center.png" alt="cubic_conf_centered_J_not_center.png" />
</p> </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> <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> </div>
<div id="outline-container-orgada859c" class="outline-3"> <div id="outline-container-orge02ec88" 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> <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-1-3"> <div class="outline-text-3" id="text-orge02ec88">
<p> <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. The Jacobian is estimated at the cube center.
</p> </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><img src="./figs/3d-cubic-stewart-misaligned.png" alt="3d-cubic-stewart-misaligned.png" />
</p> </p>
<p><span class="figure-number">Figure 4: </span>Not centered cubic configuration</p> <p><span class="figure-number">Figure 4: </span>Not centered cubic configuration</p>
</div> </div>
<div class="org-src-container"> <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 = 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 = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1)); 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>
<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><img src="figs/cubic_conf_not_centered_J_center.png" alt="cubic_conf_not_centered_J_center.png" />
</p> </p>
<p><span class="figure-number">Figure 5: </span>Cubic Stewart platform not centered with the cube center - Jacobian estimated at the cube center (<a href="./figs/cubic_conf_not_centered_J_center.png">png</a>, <a href="./figs/cubic_conf_not_centered_J_center.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 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> </div>
<div id="outline-container-org8b2c367" class="outline-3"> <div id="outline-container-org43fd7e4" 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> <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-1-4"> <div class="outline-text-3" id="text-org43fd7e4">
<p> <p>
Here, the &ldquo;center&rdquo; of the Stewart platform is not at the cube center. 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. 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> </p>
<div class="org-src-container"> <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 = 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 = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart, <span class="org-string">'Ki'</span>, ones(6,1)); 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>
<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><img src="figs/cubic_conf_not_centered_J_stewart_center.png" alt="cubic_conf_not_centered_J_stewart_center.png" />
</p> </p>
<p><span class="figure-number">Figure 6: </span>Cubic Stewart platform not centered with the cube center - Jacobian estimated at the Stewart platform center (<a href="./figs/cubic_conf_not_centered_J_stewart_center.png">png</a>, <a href="./figs/cubic_conf_not_centered_J_stewart_center.pdf">pdf</a>)</p> <p><span class="figure-number">Figure 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> </div>
<div id="outline-container-org34d7a0d" class="outline-3"> <div id="outline-container-orgd35acc0" class="outline-3">
<h3 id="org34d7a0d"><span class="section-number-3">1.5</span> Conclusion</h3> <h3 id="orgd35acc0">Conclusion</h3>
<div class="outline-text-3" id="text-1-5"> <div class="outline-text-3" id="text-orgd35acc0">
<div class="important"> <div class="important">
<ul class="org-ul"> <ul class="org-ul">
<li>The cubic configuration permits to have \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\)</li> <li>The cubic configuration permits to have \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\)</li>
@ -764,9 +770,9 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
</div> </div>
</div> </div>
<div id="outline-container-org265d677" class="outline-3"> <div id="outline-container-org8afa645" class="outline-3">
<h3 id="org265d677"><span class="section-number-3">1.6</span> Having Cube&rsquo;s center above the top platform</h3> <h3 id="org8afa645">Having Cube&rsquo;s center above the top platform</h3>
<div class="outline-text-3" id="text-1-6"> <div class="outline-text-3" id="text-org8afa645">
<p> <p>
Let&rsquo;s say we want to have a decouple dynamics above the top platform. Let&rsquo;s say we want to have a decouple dynamics above the top platform.
Thus, we want the cube&rsquo;s center to be located above the top center. Thus, we want the cube&rsquo;s center to be located above the top center.
@ -779,7 +785,8 @@ It is possible to have small cube, but then to configuration is a little bit str
</ul> </ul>
<div class="org-src-container"> <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); 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)); Hc = 2<span class="org-type">*</span>(stewart.H <span class="org-type">+</span> stewart.MO_B(3));
stewart = generateCubicConfiguration(stewart, <span class="org-string">'Hc'</span>, Hc, <span class="org-string">'FOc'</span>, FOc, <span class="org-string">'FHa'</span>, 10e<span class="org-type">-</span>3, <span class="org-string">'MHb'</span>, 10e<span class="org-type">-</span>3); stewart = 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> </div>
<div id="outline-container-org93a8538" class="outline-2"> <div id="outline-container-org3044455" class="outline-2">
<h2 id="org93a8538"><span class="section-number-2">2</span> Functions</h2> <h2 id="org3044455">Functions</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-org3044455">
<p> <p>
<a id="org44c44dc"></a> <a id="org28ba607"></a>
</p> </p>
</div> </div>
<div id="outline-container-org8786798" class="outline-3"> <div id="outline-container-org56504f1" class="outline-3">
<h3 id="org8786798"><span class="section-number-3">2.1</span> <code>generateCubicConfiguration</code>: Generate a Cubic Configuration</h3> <h3 id="org56504f1"><code>generateCubicConfiguration</code>: Generate a Cubic Configuration</h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-org56504f1">
<p> <p>
<a id="orgf3011db"></a> <a id="orga8311d3"></a>
</p> </p>
<p> <p>
@ -893,9 +900,9 @@ This Matlab function is accessible <a href="src/generateCubicConfiguration.m">he
</p> </p>
</div> </div>
<div id="outline-container-org0b63bb1" class="outline-4"> <div id="outline-container-orga5a9ba8" class="outline-4">
<h4 id="org0b63bb1">Function description</h4> <h4 id="orga5a9ba8">Function description</h4>
<div class="outline-text-4" id="text-org0b63bb1"> <div class="outline-text-4" id="text-orga5a9ba8">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[stewart]</span> = <span class="org-function-name">generateCubicConfiguration</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>) <pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[stewart]</span> = <span class="org-function-name">generateCubicConfiguration</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% generateCubicConfiguration - Generate a Cubic Configuration</span> <span class="org-comment">% generateCubicConfiguration - Generate a Cubic Configuration</span>
@ -904,7 +911,7 @@ This Matlab function is accessible <a href="src/generateCubicConfiguration.m">he
<span class="org-comment">%</span> <span class="org-comment">%</span>
<span class="org-comment">% Inputs:</span> <span class="org-comment">% Inputs:</span>
<span class="org-comment">% - stewart - A structure with the following fields</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">% - 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">% - 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> <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">%</span>
<span class="org-comment">% Outputs:</span> <span class="org-comment">% Outputs:</span>
<span class="org-comment">% - stewart - updated Stewart structure with the added fields:</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">% - platform_F.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_M.Mb [3x6] - Its i'th column is the position vector of joint bi with respect to {M}</span>
</pre> </pre>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgaac7da3" class="outline-4"> <div id="outline-container-org3253792" class="outline-4">
<h4 id="orgaac7da3">Documentation</h4> <h4 id="org3253792">Documentation</h4>
<div class="outline-text-4" id="text-orgaac7da3"> <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><img src="figs/cubic-configuration-definition.png" alt="cubic-configuration-definition.png" />
</p> </p>
<p><span class="figure-number">Figure 7: </span>Cubic Configuration</p> <p><span class="figure-number">Figure 7: </span>Cubic Configuration</p>
@ -932,9 +939,9 @@ This Matlab function is accessible <a href="src/generateCubicConfiguration.m">he
</div> </div>
</div> </div>
<div id="outline-container-org747c61c" class="outline-4"> <div id="outline-container-org154b5fb" class="outline-4">
<h4 id="org747c61c">Optional Parameters</h4> <h4 id="org154b5fb">Optional Parameters</h4>
<div class="outline-text-4" id="text-org747c61c"> <div class="outline-text-4" id="text-org154b5fb">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -948,9 +955,20 @@ This Matlab function is accessible <a href="src/generateCubicConfiguration.m">he
</div> </div>
</div> </div>
<div id="outline-container-orgec4e738" class="outline-4"> <div id="outline-container-orgbb480a6" class="outline-4">
<h4 id="orgec4e738">Position of the Cube</h4> <h4 id="orgbb480a6">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-orgec4e738"> <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> <p>
We define the useful points of the cube with respect to the Cube&rsquo;s center. 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 \({}^{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> </div>
<div id="outline-container-org97e1d45" class="outline-4"> <div id="outline-container-org3a2f468" class="outline-4">
<h4 id="org97e1d45">Compute the pose</h4> <h4 id="org3a2f468">Compute the pose</h4>
<div class="outline-text-4" id="text-org97e1d45"> <div class="outline-text-4" id="text-org3a2f468">
<p> <p>
We can compute the vector of each leg \({}^{C}\hat{\bm{s}}_{i}\) (unit vector from \({}^{C}C_{f}\) to \({}^{C}C_{m}\)). We can compute the vector of each leg \({}^{C}\hat{\bm{s}}_{i}\) (unit vector from \({}^{C}C_{f}\) to \({}^{C}C_{m}\)).
</p> </p>
@ -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}\). We now which to compute the position of the joints \(a_{i}\) and \(b_{i}\).
</p> </p>
<div class="org-src-container"> <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; <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;
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; 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> </pre>
</div> </div>
</div> </div>
@ -1002,15 +1031,15 @@ stewart.Mb = CCf <span class="org-type">+</span> [0; 0; args.FOc<span class="org
<p> <p>
<h1 class='org-ref-bib-h1'>Bibliography</h1> <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> <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> <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> </ul>
</p> </p>
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-07 ven. 17:31</p> <p class="date">Created: 2020-02-11 mar. 15:26</p>
</div> </div>
</body> </body>
</html> </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"?> <?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-01-22 mer. 16:31 --> <!-- 2020-02-11 mar. 15:27 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Dynamics Study</title> <title>Stewart Platform - Dynamics Study</title>
@ -247,31 +246,16 @@ for the JavaScript code in this tag.
} }
/*]]>*///--> /*]]>*///-->
</script> </script>
<script type="text/x-mathjax-config"> <script>
MathJax.Hub.Config({ MathJax = {
displayAlign: "center", tex: { macros: {
displayIndent: "0em", bm: ["\\boldsymbol{#1}",1],
}
"HTML-CSS": { scale: 100, }
linebreaks: { automatic: "false" }, };
webFont: "TeX" </script>
}, <script type="text/javascript"
SVG: {scale: 100, src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em",
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>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
@ -284,26 +268,26 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#orgf59f0f9">1. Some tests</a> <li><a href="#orgdae5fe1">Some tests</a>
<ul> <ul>
<li><a href="#orgaf3d924">1.1. Simscape Model</a></li> <li><a href="#orga032902">Simscape Model</a></li>
<li><a href="#org7312203">1.2. test</a></li> <li><a href="#orgdbd3cde">test</a></li>
<li><a href="#org9daf767">1.3. Compare external forces and forces applied by the actuators</a></li> <li><a href="#orgc59e712">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="#org81ab204">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="#orge663148">Transfer function from forces applied in the legs to the displacement of the legs</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="outline-container-orgf59f0f9" class="outline-2"> <div id="outline-container-orgdae5fe1" class="outline-2">
<h2 id="orgf59f0f9"><span class="section-number-2">1</span> Some tests</h2> <h2 id="orgdae5fe1">Some tests</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-orgdae5fe1">
</div> </div>
<div id="outline-container-orgaf3d924" class="outline-3"> <div id="outline-container-orga032902" class="outline-3">
<h3 id="orgaf3d924"><span class="section-number-3">1.1</span> Simscape Model</h3> <h3 id="orga032902">Simscape Model</h3>
<div class="outline-text-3" id="text-1-1"> <div class="outline-text-3" id="text-orga032902">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">open(<span class="org-string">'stewart_platform_dynamics.slx'</span>) <pre class="src src-matlab">open(<span class="org-string">'stewart_platform_dynamics.slx'</span>)
</pre> </pre>
@ -311,15 +295,19 @@ for the JavaScript code in this tag.
</div> </div>
</div> </div>
<div id="outline-container-org7312203" class="outline-3"> <div id="outline-container-orgdbd3cde" class="outline-3">
<h3 id="org7312203"><span class="section-number-3">1.2</span> test</h3> <h3 id="orgdbd3cde">test</h3>
<div class="outline-text-3" id="text-1-2"> <div class="outline-text-3" id="text-orgdbd3cde">
<div class="org-src-container"> <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 = 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); stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(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 = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
</pre> </pre>
</div> </div>
@ -408,18 +396,22 @@ bode(Gd, G)
</div> </div>
</div> </div>
<div id="outline-container-org9daf767" class="outline-3"> <div id="outline-container-orgc59e712" class="outline-3">
<h3 id="org9daf767"><span class="section-number-3">1.3</span> Compare external forces and forces applied by the actuators</h3> <h3 id="orgc59e712">Compare external forces and forces applied by the actuators</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-orgc59e712">
<p> <p>
Initialization of the Stewart platform. Initialization of the Stewart platform.
</p> </p>
<div class="org-src-container"> <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 = 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); stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(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 = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
</pre> </pre>
</div> </div>
@ -489,18 +481,22 @@ Seems quite similar.
</div> </div>
</div> </div>
<div id="outline-container-org2a5345f" class="outline-3"> <div id="outline-container-org81ab204" 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> <h3 id="org81ab204">Comparison of the static transfer function and the Compliance matrix</h3>
<div class="outline-text-3" id="text-1-4"> <div class="outline-text-3" id="text-org81ab204">
<p> <p>
Initialization of the Stewart platform. Initialization of the Stewart platform.
</p> </p>
<div class="org-src-container"> <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 = 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); stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(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 = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
</pre> </pre>
</div> </div>
@ -688,18 +684,22 @@ The low frequency transfer function matrix from \(\mathcal{\bm{F}}\) to \(\mathc
</div> </div>
</div> </div>
<div id="outline-container-org089f223" class="outline-3"> <div id="outline-container-orge663148" 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> <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-1-5"> <div class="outline-text-3" id="text-orge663148">
<p> <p>
Initialization of the Stewart platform. Initialization of the Stewart platform.
</p> </p>
<div class="org-src-container"> <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 = 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); stewart = initializeFramesPositions(stewart);
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(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 = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
</pre> </pre>
</div> </div>
@ -742,7 +742,7 @@ G.OutputName = {<span class="org-string">'L1'</span>, <span class="org-string">'
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-01-22 mer. 16:31</p> <p class="date">Created: 2020-02-11 mar. 15:27</p>
</div> </div>
</body> </body>
</html> </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"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-01-29 mer. 17:51 --> <!-- 2020-02-11 mar. 15:26 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Identification of the Stewart Platform using Simscape</title> <title>Identification of the Stewart Platform using Simscape</title>
@ -247,15 +247,15 @@ for the JavaScript code in this tag.
/*]]>*///--> /*]]>*///-->
</script> </script>
<script> <script>
MathJax = { MathJax = {
tex: { macros: { tex: { macros: {
bm: ["\\boldsymbol{#1}",1], bm: ["\\boldsymbol{#1}",1],
}
} }
} };
}; </script>
</script> <script type="text/javascript"
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
@ -268,37 +268,37 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#orgbb8fbdb">1. Identification</a> <li><a href="#orgf65174f">Identification</a>
<ul> <ul>
<li><a href="#orgaf697f9">1.1. Simscape Model</a></li> <li><a href="#org5b89813">Simscape Model</a></li>
<li><a href="#org22cb9e4">1.2. Initialize the Stewart Platform</a></li> <li><a href="#org2bfdf1b">Initialize the Stewart Platform</a></li>
<li><a href="#org9768dca">1.3. Identification</a></li> <li><a href="#org0d97b27">Identification</a></li>
</ul> </ul>
</li> </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> <ul>
<li><a href="#org601fc1e">2.1. Initialize the Stewart Platform</a></li> <li><a href="#org987daca">Initialize the Stewart Platform</a></li>
<li><a href="#org85bc459">2.2. Identification</a></li> <li><a href="#orgc808316">Identification</a></li>
<li><a href="#org889aae3">2.3. Coordinate transformation</a></li> <li><a href="#orge68adea">Coordinate transformation</a></li>
<li><a href="#orgae4b421">2.4. Analysis</a></li> <li><a href="#org4973ae1">Analysis</a></li>
<li><a href="#orge3b2a28">2.5. Visualizing the modes</a></li> <li><a href="#orge7b97c8">Visualizing the modes</a></li>
<li><a href="#orgac2b65a">2.6. Identification</a></li> <li><a href="#org5d63457">Identification</a></li>
<li><a href="#orgd845f17">2.7. Change of states</a></li> <li><a href="#orgf7a52cb">Change of states</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org4989001">3. Simple Model without any sensor</a> <li><a href="#org23d7e7b">Simple Model without any sensor</a>
<ul> <ul>
<li><a href="#org3ea636a">3.1. Simscape Model</a></li> <li><a href="#org69b8a98">Simscape Model</a></li>
<li><a href="#org9a6cc53">3.2. Initialize the Stewart Platform</a></li> <li><a href="#org4aef27a">Initialize the Stewart Platform</a></li>
<li><a href="#org13a12f8">3.3. Identification</a></li> <li><a href="#orgb9fd532">Identification</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org33bdc22">4. Cartesian Plot</a></li> <li><a href="#org0502cd2">Cartesian Plot</a></li>
<li><a href="#org6cfcaf6">5. From a force to force sensor</a></li> <li><a href="#org32e2eb3">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="#org8ddfd2c">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="#org5685537">Transmissibility</a></li>
<li><a href="#orge32e4db">8. Compliance</a></li> <li><a href="#org3335d1e">Compliance</a></li>
<li><a href="#org6c094f6">9. Inertial</a></li> <li><a href="#org5ca7af8">Inertial</a></li>
</ul> </ul>
</div> </div>
</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"> <div id="outline-container-orgf65174f" class="outline-2">
<h2 id="orgbb8fbdb"><span class="section-number-2">1</span> Identification</h2> <h2 id="orgf65174f">Identification</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-orgf65174f">
</div> </div>
<div id="outline-container-orgaf697f9" class="outline-3"> <div id="outline-container-org5b89813" class="outline-3">
<h3 id="orgaf697f9"><span class="section-number-3">1.1</span> Simscape Model</h3> <h3 id="org5b89813">Simscape Model</h3>
</div> </div>
<div id="outline-container-org22cb9e4" class="outline-3"> <div id="outline-container-org2bfdf1b" class="outline-3">
<h3 id="org22cb9e4"><span class="section-number-3">1.2</span> Initialize the Stewart Platform</h3> <h3 id="org2bfdf1b">Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-1-2"> <div class="outline-text-3" id="text-org2bfdf1b">
<div class="org-src-container"> <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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
@ -421,9 +422,9 @@ stewart = initializeStewartPose(stewart);
</div> </div>
</div> </div>
<div id="outline-container-org9768dca" class="outline-3"> <div id="outline-container-org0d97b27" class="outline-3">
<h3 id="org9768dca"><span class="section-number-3">1.3</span> Identification</h3> <h3 id="org0d97b27">Identification</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-org0d97b27">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span> <pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions; options = linearizeOptions;
@ -456,15 +457,16 @@ G.OutputName = {<span class="org-string">'Xdx'</span>, <span class="org-string">
</div> </div>
</div> </div>
<div id="outline-container-orge931438" class="outline-2"> <div id="outline-container-orge464de2" class="outline-2">
<h2 id="orge931438"><span class="section-number-2">2</span> States as the motion of the mobile platform</h2> <h2 id="orge464de2">States as the motion of the mobile platform</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-orge464de2">
</div> </div>
<div id="outline-container-org601fc1e" class="outline-3"> <div id="outline-container-org987daca" class="outline-3">
<h3 id="org601fc1e"><span class="section-number-3">2.1</span> Initialize the Stewart Platform</h3> <h3 id="org987daca">Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-org987daca">
<div class="org-src-container"> <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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
@ -477,9 +479,9 @@ stewart = initializeStewartPose(stewart);
</div> </div>
</div> </div>
<div id="outline-container-org85bc459" class="outline-3"> <div id="outline-container-orgc808316" class="outline-3">
<h3 id="org85bc459"><span class="section-number-3">2.2</span> Identification</h3> <h3 id="orgc808316">Identification</h3>
<div class="outline-text-3" id="text-2-2"> <div class="outline-text-3" id="text-orgc808316">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span> <pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions; options = linearizeOptions;
@ -538,9 +540,9 @@ And indeed, we obtain 12 states.
</div> </div>
</div> </div>
<div id="outline-container-org889aae3" class="outline-3"> <div id="outline-container-orge68adea" class="outline-3">
<h3 id="org889aae3"><span class="section-number-3">2.3</span> Coordinate transformation</h3> <h3 id="orge68adea">Coordinate transformation</h3>
<div class="outline-text-3" id="text-2-3"> <div class="outline-text-3" id="text-orge68adea">
<p> <p>
We can perform the following transformation using the <code>ss2ss</code> command. We can perform the following transformation using the <code>ss2ss</code> command.
</p> </p>
@ -574,9 +576,9 @@ Gt = ss(At, Bt, Ct, Dt);
</div> </div>
</div> </div>
<div id="outline-container-orgae4b421" class="outline-3"> <div id="outline-container-org4973ae1" class="outline-3">
<h3 id="orgae4b421"><span class="section-number-3">2.4</span> Analysis</h3> <h3 id="org4973ae1">Analysis</h3>
<div class="outline-text-3" id="text-2-4"> <div class="outline-text-3" id="text-org4973ae1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">[V,D] = eig(Gt.A); <pre class="src src-matlab">[V,D] = eig(Gt.A);
</pre> </pre>
@ -640,9 +642,9 @@ Gt = ss(At, Bt, Ct, Dt);
</div> </div>
</div> </div>
<div id="outline-container-orge3b2a28" class="outline-3"> <div id="outline-container-orge7b97c8" class="outline-3">
<h3 id="orge3b2a28"><span class="section-number-3">2.5</span> Visualizing the modes</h3> <h3 id="orge7b97c8">Visualizing the modes</h3>
<div class="outline-text-3" id="text-2-5"> <div class="outline-text-3" id="text-orge7b97c8">
<p> <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). 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> </p>
@ -721,21 +723,21 @@ Save the movie of the mode shape.
</div> </div>
<div id="org14fd95e" class="figure"> <div id="orgb15855a" class="figure">
<p><img src="figs/mode1.gif" alt="mode1.gif" /> <p><img src="figs/mode1.gif" alt="mode1.gif" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Identified mode - 1</p> <p><span class="figure-number">Figure 1: </span>Identified mode - 1</p>
</div> </div>
<div id="orgdece81c" class="figure"> <div id="org1816e59" class="figure">
<p><img src="figs/mode3.gif" alt="mode3.gif" /> <p><img src="figs/mode3.gif" alt="mode3.gif" />
</p> </p>
<p><span class="figure-number">Figure 2: </span>Identified mode - 3</p> <p><span class="figure-number">Figure 2: </span>Identified mode - 3</p>
</div> </div>
<div id="org618e1ca" class="figure"> <div id="org01c8dca" class="figure">
<p><img src="figs/mode5.gif" alt="mode5.gif" /> <p><img src="figs/mode5.gif" alt="mode5.gif" />
</p> </p>
<p><span class="figure-number">Figure 3: </span>Identified mode - 5</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> </div>
<div id="outline-container-orgac2b65a" class="outline-3"> <div id="outline-container-org5d63457" class="outline-3">
<h3 id="orgac2b65a"><span class="section-number-3">2.6</span> Identification</h3> <h3 id="org5d63457">Identification</h3>
<div class="outline-text-3" id="text-2-6"> <div class="outline-text-3" id="text-org5d63457">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span> <pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions; options = linearizeOptions;
@ -773,9 +775,9 @@ G = linearize(mdl, io, options);
</div> </div>
</div> </div>
<div id="outline-container-orgd845f17" class="outline-3"> <div id="outline-container-orgf7a52cb" class="outline-3">
<h3 id="orgd845f17"><span class="section-number-3">2.7</span> Change of states</h3> <h3 id="orgf7a52cb">Change of states</h3>
<div class="outline-text-3" id="text-2-7"> <div class="outline-text-3" id="text-orgf7a52cb">
<div class="org-src-container"> <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); <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> </div>
<div id="outline-container-org4989001" class="outline-2"> <div id="outline-container-org23d7e7b" class="outline-2">
<h2 id="org4989001"><span class="section-number-2">3</span> Simple Model without any sensor</h2> <h2 id="org23d7e7b">Simple Model without any sensor</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-org23d7e7b">
</div> </div>
<div id="outline-container-org3ea636a" class="outline-3"> <div id="outline-container-org69b8a98" class="outline-3">
<h3 id="org3ea636a"><span class="section-number-3">3.1</span> Simscape Model</h3> <h3 id="org69b8a98">Simscape Model</h3>
<div class="outline-text-3" id="text-3-1"> <div class="outline-text-3" id="text-org69b8a98">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">open <span class="org-string">'stewart_identification_simple.slx'</span> <pre class="src src-matlab">open <span class="org-string">'stewart_identification_simple.slx'</span>
</pre> </pre>
@ -814,11 +816,12 @@ Dt = zeros(12, 6);
</div> </div>
<div id="outline-container-org9a6cc53" class="outline-3"> <div id="outline-container-org4aef27a" class="outline-3">
<h3 id="org9a6cc53"><span class="section-number-3">3.2</span> Initialize the Stewart Platform</h3> <h3 id="org4aef27a">Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-3-2"> <div class="outline-text-3" id="text-org4aef27a">
<div class="org-src-container"> <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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
@ -831,9 +834,9 @@ stewart = initializeStewartPose(stewart);
</div> </div>
</div> </div>
<div id="outline-container-org13a12f8" class="outline-3"> <div id="outline-container-orgb9fd532" class="outline-3">
<h3 id="org13a12f8"><span class="section-number-3">3.3</span> Identification</h3> <h3 id="orgb9fd532">Identification</h3>
<div class="outline-text-3" id="text-3-3"> <div class="outline-text-3" id="text-orgb9fd532">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stateorder = {... <pre class="src src-matlab">stateorder = {...
<span class="org-string">'stewart_platform_identification_simple/Solver Configuration/EVAL_KEY/INPUT_1_1_1'</span>,... <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> </div>
<div id="outline-container-org33bdc22" class="outline-2"> <div id="outline-container-org0502cd2" class="outline-2">
<h2 id="org33bdc22"><span class="section-number-2">4</span> Cartesian Plot</h2> <h2 id="org0502cd2">Cartesian Plot</h2>
<div class="outline-text-2" id="text-4"> <div class="outline-text-2" id="text-org0502cd2">
<p> <p>
From a force applied in the Cartesian frame to a displacement in the Cartesian frame. From a force applied in the Cartesian frame to a displacement in the Cartesian frame.
</p> </p>
@ -945,9 +948,9 @@ bode(G.G_cart, freqs);
</div> </div>
</div> </div>
<div id="outline-container-org6cfcaf6" class="outline-2"> <div id="outline-container-org32e2eb3" class="outline-2">
<h2 id="org6cfcaf6"><span class="section-number-2">5</span> From a force to force sensor</h2> <h2 id="org32e2eb3">From a force to force sensor</h2>
<div class="outline-text-2" id="text-5"> <div class="outline-text-2" id="text-org32e2eb3">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>; <pre class="src src-matlab"><span class="org-type">figure</span>;
hold on; hold on;
@ -977,9 +980,9 @@ legend(<span class="org-string">'location'</span>, <span class="org-string">'sou
</div> </div>
</div> </div>
<div id="outline-container-orge759120" class="outline-2"> <div id="outline-container-org8ddfd2c" 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> <h2 id="org8ddfd2c">From a force applied in the leg to the displacement of the leg</h2>
<div class="outline-text-2" id="text-6"> <div class="outline-text-2" id="text-org8ddfd2c">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>; <pre class="src src-matlab"><span class="org-type">figure</span>;
hold on; hold on;
@ -1008,9 +1011,9 @@ legend(<span class="org-string">'location'</span>, <span class="org-string">'nor
</div> </div>
</div> </div>
<div id="outline-container-org6165b05" class="outline-2"> <div id="outline-container-org5685537" class="outline-2">
<h2 id="org6165b05"><span class="section-number-2">7</span> Transmissibility</h2> <h2 id="org5685537">Transmissibility</h2>
<div class="outline-text-2" id="text-7"> <div class="outline-text-2" id="text-org5685537">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>; <pre class="src src-matlab"><span class="org-type">figure</span>;
hold on; hold on;
@ -1049,9 +1052,9 @@ xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="or
</div> </div>
</div> </div>
<div id="outline-container-orge32e4db" class="outline-2"> <div id="outline-container-org3335d1e" class="outline-2">
<h2 id="orge32e4db"><span class="section-number-2">8</span> Compliance</h2> <h2 id="org3335d1e">Compliance</h2>
<div class="outline-text-2" id="text-8"> <div class="outline-text-2" id="text-org3335d1e">
<p> <p>
From a force applied in the Cartesian frame to a relative displacement of the mobile platform with respect to the base. From a force applied in the Cartesian frame to a relative displacement of the mobile platform with respect to the base.
</p> </p>
@ -1070,9 +1073,9 @@ xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="or
</div> </div>
</div> </div>
<div id="outline-container-org6c094f6" class="outline-2"> <div id="outline-container-org5ca7af8" class="outline-2">
<h2 id="org6c094f6"><span class="section-number-2">9</span> Inertial</h2> <h2 id="org5ca7af8">Inertial</h2>
<div class="outline-text-2" id="text-9"> <div class="outline-text-2" id="text-org5ca7af8">
<p> <p>
From a force applied on the Cartesian frame to the absolute displacement of the mobile platform. From a force applied on the Cartesian frame to the absolute displacement of the mobile platform.
</p> </p>
@ -1093,7 +1096,7 @@ xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="or
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-01-29 mer. 17:51</p> <p class="date">Created: 2020-02-11 mar. 15:26</p>
</div> </div>
</body> </body>
</html> </html>

View File

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

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-02-11 mar. 15:10 --> <!-- 2020-02-11 mar. 15:26 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Kinematic Study of the Stewart Platform</title> <title>Kinematic Study of the Stewart Platform</title>
@ -268,73 +268,73 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#org12dba9f">1. Jacobian Analysis</a> <li><a href="#org6858f1f">Jacobian Analysis</a>
<ul> <ul>
<li><a href="#orgf11b2b6">1.1. Jacobian Computation</a></li> <li><a href="#org8210cee">Jacobian Computation</a></li>
<li><a href="#org77e916f">1.2. Jacobian - Velocity loop closure</a></li> <li><a href="#org4d71022">Jacobian - Velocity loop closure</a></li>
<li><a href="#orgbd5d473">1.3. Jacobian - Static Force Transformation</a></li> <li><a href="#org2847e30">Jacobian - Static Force Transformation</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgecbb7b3">2. Stiffness Analysis</a> <li><a href="#org87bfd11">Stiffness Analysis</a>
<ul> <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> </ul>
</li> </li>
<li><a href="#org7c304b7">3. Forward and Inverse Kinematics</a> <li><a href="#org5718735">Forward and Inverse Kinematics</a>
<ul> <ul>
<li><a href="#org9b180e9">3.1. Inverse Kinematics</a></li> <li><a href="#orgebda1d9">Inverse Kinematics</a></li>
<li><a href="#orga3a2319">3.2. Forward Kinematics</a></li> <li><a href="#org1795522">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="#org5a3ce80">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="#org86b4b35">Estimation of the range validity of the approximate inverse kinematics</a>
<ul> <ul>
<li><a href="#orge3ab830">3.4.1. Stewart architecture definition</a></li> <li><a href="#orgccddf49">Stewart architecture definition</a></li>
<li><a href="#org294ab65">3.4.2. Comparison for &ldquo;pure&rdquo; translations</a></li> <li><a href="#orgd83ccf3">Comparison for &ldquo;pure&rdquo; translations</a></li>
<li><a href="#orgea391a3">3.4.3. Conclusion</a></li> <li><a href="#org4871c83">Conclusion</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </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> <ul>
<li><a href="#orgfb6bdb7">4.1. Stewart architecture definition</a></li> <li><a href="#org48ee074">Stewart architecture definition</a></li>
<li><a href="#orgba0801f">4.2. Wanted translations and rotations</a></li> <li><a href="#orgde50dd3">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="#org24e45ca">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="#orgf6ba90c">Needed stroke for &ldquo;combined&rdquo; rotations or translations</a></li>
</ul> </ul>
</li> </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> <ul>
<li><a href="#org1865dbc">5.1. Stewart architecture definition</a></li> <li><a href="#org486419b">Stewart architecture definition</a></li>
<li><a href="#orga4b5e5b">5.2. Pure translations</a></li> <li><a href="#org2c6819e">Pure translations</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org748d42a">6. Functions</a> <li><a href="#orgc4916dc">Functions</a>
<ul> <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> <ul>
<li><a href="#orgbdf3a2a">Function description</a></li> <li><a href="#org704ab84">Function description</a></li>
<li><a href="#orgd1d8163">Check the <code>stewart</code> structure elements</a></li> <li><a href="#org3990e47">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orge54466d">Compute Jacobian Matrix</a></li> <li><a href="#org0cd57b5">Compute Jacobian Matrix</a></li>
<li><a href="#org560e1a1">Compute Stiffness Matrix</a></li> <li><a href="#orge21dcfc">Compute Stiffness Matrix</a></li>
<li><a href="#orga853f82">Compute Compliance Matrix</a></li> <li><a href="#orgae76071">Compute Compliance Matrix</a></li>
<li><a href="#org4e11a57">Populate the <code>stewart</code> structure</a></li> <li><a href="#org78f18d7">Populate the <code>stewart</code> structure</a></li>
</ul> </ul>
</li> </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> <ul>
<li><a href="#org7136bfb">Theory</a></li> <li><a href="#org89930b7">Theory</a></li>
<li><a href="#org75ec482">Function description</a></li> <li><a href="#org0d77b2e">Function description</a></li>
<li><a href="#orgc83e0f8">Optional Parameters</a></li> <li><a href="#orgda02042">Optional Parameters</a></li>
<li><a href="#org3ea2f51">Check the <code>stewart</code> structure elements</a></li> <li><a href="#org4a3c325">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org210ed60">Compute</a></li> <li><a href="#org0d64c23">Compute</a></li>
</ul> </ul>
</li> </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> <ul>
<li><a href="#org7c35749">Function description</a></li> <li><a href="#org473d0b1">Function description</a></li>
<li><a href="#org5eee73c">Optional Parameters</a></li> <li><a href="#org8fe02d3">Optional Parameters</a></li>
<li><a href="#orgee36d86">Check the <code>stewart</code> structure elements</a></li> <li><a href="#org83d7e5f">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orgc3e4684">Computation</a></li> <li><a href="#orge5ade24">Computation</a></li>
</ul> </ul>
</li> </li>
</ul> </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: The current document is divided in the following sections:
</p> </p>
<ul class="org-ul"> <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="#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="#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="#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="#org8833597">3</a>: The Forward and Inverse kinematic problems are presented.</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="#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="#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> </ul>
<div id="outline-container-org12dba9f" class="outline-2"> <div id="outline-container-org6858f1f" class="outline-2">
<h2 id="org12dba9f"><span class="section-number-2">1</span> Jacobian Analysis</h2> <h2 id="org6858f1f">Jacobian Analysis</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-org6858f1f">
<p> <p>
<a id="orge973aef"></a> <a id="orgc45d118"></a>
</p> </p>
<p> <p>
From <a class='org-ref-reference' href="#taghirad13_paral">taghirad13_paral</a>: 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> </p>
</blockquote> </blockquote>
</div> </div>
<div id="outline-container-orgf11b2b6" class="outline-3"> <div id="outline-container-org8210cee" class="outline-3">
<h3 id="orgf11b2b6"><span class="section-number-3">1.1</span> Jacobian Computation</h3> <h3 id="org8210cee">Jacobian Computation</h3>
<div class="outline-text-3" id="text-1-1"> <div class="outline-text-3" id="text-org8210cee">
<p> <p>
If we note: If we note:
</p> </p>
@ -404,7 +404,7 @@ Then, we can compute the Jacobian with the following equation (the superscript \
\end{equation*} \end{equation*}
<p> <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: For instance:
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
@ -422,9 +422,9 @@ This will add three new matrix to the <code>stewart</code> structure:
</div> </div>
</div> </div>
<div id="outline-container-org77e916f" class="outline-3"> <div id="outline-container-org4d71022" class="outline-3">
<h3 id="org77e916f"><span class="section-number-3">1.2</span> Jacobian - Velocity loop closure</h3> <h3 id="org4d71022">Jacobian - Velocity loop closure</h3>
<div class="outline-text-3" id="text-1-2"> <div class="outline-text-3" id="text-org4d71022">
<p> <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\): 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> </p>
@ -446,14 +446,14 @@ If the Jacobian matrix is inversible, we can also compute \(\dot{\bm{\mathcal{X}
<p> <p>
The Jacobian matrix can also be used to approximate forward and inverse kinematics for small displacements. 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> </p>
</div> </div>
</div> </div>
<div id="outline-container-orgbd5d473" class="outline-3"> <div id="outline-container-org2847e30" class="outline-3">
<h3 id="orgbd5d473"><span class="section-number-3">1.3</span> Jacobian - Static Force Transformation</h3> <h3 id="org2847e30">Jacobian - Static Force Transformation</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-org2847e30">
<p> <p>
If we note: If we note:
</p> </p>
@ -479,20 +479,20 @@ If the Jacobian matrix is inversible, we also have the following relation:
</div> </div>
</div> </div>
<div id="outline-container-orgecbb7b3" class="outline-2"> <div id="outline-container-org87bfd11" class="outline-2">
<h2 id="orgecbb7b3"><span class="section-number-2">2</span> Stiffness Analysis</h2> <h2 id="org87bfd11">Stiffness Analysis</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-org87bfd11">
<p> <p>
<a id="org2a4a521"></a> <a id="orgf9e4f1a"></a>
</p> </p>
<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. 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>. The amount of these deflections are a function of the applied wrench as well as the manipulator <b>structural stiffness</b>.
</p> </p>
</div> </div>
<div id="outline-container-orgbea68d5" class="outline-3"> <div id="outline-container-orgb1956e6" class="outline-3">
<h3 id="orgbea68d5"><span class="section-number-3">2.1</span> Computation of the Stiffness and Compliance Matrix</h3> <h3 id="orgb1956e6">Computation of the Stiffness and Compliance Matrix</h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-orgb1956e6">
<p> <p>
As explain in <a href="stewart-architecture.html">this</a> document, each Actuator is modeled by 3 elements in parallel: As explain in <a href="stewart-architecture.html">this</a> document, each Actuator is modeled by 3 elements in parallel:
</p> </p>
@ -542,24 +542,24 @@ The compliance matrix of a manipulator shows the mapping of the moving platform
\end{equation*} \end{equation*}
<p> <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> </p>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org7c304b7" class="outline-2"> <div id="outline-container-org5718735" class="outline-2">
<h2 id="org7c304b7"><span class="section-number-2">3</span> Forward and Inverse Kinematics</h2> <h2 id="org5718735">Forward and Inverse Kinematics</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-org5718735">
<p> <p>
<a id="org8833597"></a> <a id="orgca82bb8"></a>
</p> </p>
</div> </div>
<div id="outline-container-org9b180e9" class="outline-3"> <div id="outline-container-orgebda1d9" class="outline-3">
<h3 id="org9b180e9"><span class="section-number-3">3.1</span> Inverse Kinematics</h3> <h3 id="orgebda1d9">Inverse Kinematics</h3>
<div class="outline-text-3" id="text-3-1"> <div class="outline-text-3" id="text-orgebda1d9">
<p> <p>
<a id="org3d57c25"></a> <a id="org2f224fc"></a>
</p> </p>
<blockquote> <blockquote>
@ -588,16 +588,16 @@ Otherwise, the solution gives complex numbers.
</p> </p>
<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> </p>
</div> </div>
</div> </div>
<div id="outline-container-orga3a2319" class="outline-3"> <div id="outline-container-org1795522" class="outline-3">
<h3 id="orga3a2319"><span class="section-number-3">3.2</span> Forward Kinematics</h3> <h3 id="org1795522">Forward Kinematics</h3>
<div class="outline-text-3" id="text-3-2"> <div class="outline-text-3" id="text-org1795522">
<p> <p>
<a id="orgf7da4c0"></a> <a id="orgf1db8ea"></a>
</p> </p>
<blockquote> <blockquote>
@ -616,11 +616,11 @@ In a next section, an approximate solution of the forward kinematics problem is
</div> </div>
</div> </div>
<div id="outline-container-org12d14b0" class="outline-3"> <div id="outline-container-org5a3ce80" 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> <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-3-3"> <div class="outline-text-3" id="text-org5a3ce80">
<p> <p>
<a id="org2e542bf"></a> <a id="org02628f3"></a>
</p> </p>
<p> <p>
@ -643,16 +643,16 @@ As the inverse kinematic can be easily solved exactly this is not much useful, h
</p> </p>
<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> </p>
</div> </div>
</div> </div>
<div id="outline-container-orgbad3ae9" class="outline-3"> <div id="outline-container-org86b4b35" 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> <h3 id="org86b4b35">Estimation of the range validity of the approximate inverse kinematics</h3>
<div class="outline-text-3" id="text-3-4"> <div class="outline-text-3" id="text-org86b4b35">
<p> <p>
<a id="org6f7aec6"></a> <a id="org2bfd694"></a>
</p> </p>
<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. 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> </p>
</div> </div>
<div id="outline-container-orge3ab830" class="outline-4"> <div id="outline-container-orgccddf49" class="outline-4">
<h4 id="orge3ab830"><span class="section-number-4">3.4.1</span> Stewart architecture definition</h4> <h4 id="orgccddf49">Stewart architecture definition</h4>
<div class="outline-text-4" id="text-3-4-1"> <div class="outline-text-4" id="text-orgccddf49">
<p> <p>
We first define some general Stewart architecture. We first define some general Stewart architecture.
</p> </p>
<div class="org-src-container"> <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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
@ -687,17 +688,17 @@ stewart = computeJacobian(stewart);
</div> </div>
</div> </div>
<div id="outline-container-org294ab65" class="outline-4"> <div id="outline-container-orgd83ccf3" class="outline-4">
<h4 id="org294ab65"><span class="section-number-4">3.4.2</span> Comparison for &ldquo;pure&rdquo; translations</h4> <h4 id="orgd83ccf3">Comparison for &ldquo;pure&rdquo; translations</h4>
<div class="outline-text-4" id="text-3-4-2"> <div class="outline-text-4" id="text-orgd83ccf3">
<p> <p>
Let&rsquo;s first compare the perfect and approximate solution of the inverse for pure \(x\) translations. Let&rsquo;s first compare the perfect and approximate solution of the inverse for pure \(x\) translations.
</p> </p>
<p> <p>
We compute the approximate and exact required strut stroke to have the wanted mobile platform \(x\) displacement. 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 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="#org4c3ea1b">2</a>. The relative strut length displacement is shown in Figure <a href="#org02d8e34">2</a>.
</p> </p>
<div class="org-src-container"> <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> <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>
<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><img src="figs/inverse_kinematics_approx_validity_x_translation.png" alt="inverse_kinematics_approx_validity_x_translation.png" />
</p> </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> <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>
<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><img src="figs/inverse_kinematics_approx_validity_x_translation_relative.png" alt="inverse_kinematics_approx_validity_x_translation_relative.png" />
</p> </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> <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> </div>
<div id="outline-container-orgea391a3" class="outline-4"> <div id="outline-container-org4871c83" class="outline-4">
<h4 id="orgea391a3"><span class="section-number-4">3.4.3</span> Conclusion</h4> <h4 id="org4871c83">Conclusion</h4>
<div class="outline-text-4" id="text-3-4-3"> <div class="outline-text-4" id="text-org4871c83">
<p> <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. 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> </p>
@ -740,11 +741,11 @@ For small wanted displacements (up to \(\approx 1\%\) of the size of the Hexapod
</div> </div>
</div> </div>
<div id="outline-container-orgddb8d5d" class="outline-2"> <div id="outline-container-org63255f9" class="outline-2">
<h2 id="orgddb8d5d"><span class="section-number-2">4</span> Estimated required actuator stroke from specified platform mobility</h2> <h2 id="org63255f9">Estimated required actuator stroke from specified platform mobility</h2>
<div class="outline-text-2" id="text-4"> <div class="outline-text-2" id="text-org63255f9">
<p> <p>
<a id="org6ddfbc5"></a> <a id="orge72d811"></a>
</p> </p>
<p> <p>
Let&rsquo;s say one want to design a Stewart platform with some specified mobility (position and orientation). 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. This is what is analyzed in this section.
</p> </p>
</div> </div>
<div id="outline-container-orgfb6bdb7" class="outline-3"> <div id="outline-container-org48ee074" class="outline-3">
<h3 id="orgfb6bdb7"><span class="section-number-3">4.1</span> Stewart architecture definition</h3> <h3 id="org48ee074">Stewart architecture definition</h3>
<div class="outline-text-3" id="text-4-1"> <div class="outline-text-3" id="text-org48ee074">
<p> <p>
Let&rsquo;s first define the Stewart platform architecture that we want to study. Let&rsquo;s first define the Stewart platform architecture that we want to study.
</p> </p>
<div class="org-src-container"> <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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
@ -773,9 +775,9 @@ stewart = computeJacobian(stewart);
</div> </div>
</div> </div>
<div id="outline-container-orgba0801f" class="outline-3"> <div id="outline-container-orgde50dd3" class="outline-3">
<h3 id="orgba0801f"><span class="section-number-3">4.2</span> Wanted translations and rotations</h3> <h3 id="orgde50dd3">Wanted translations and rotations</h3>
<div class="outline-text-3" id="text-4-2"> <div class="outline-text-3" id="text-orgde50dd3">
<p> <p>
Let&rsquo;s now define the wanted extreme translations and rotations. Let&rsquo;s now define the wanted extreme translations and rotations.
</p> </p>
@ -791,9 +793,9 @@ Rz_max = 0; <span class="org-comment">% Rotation [rad]</span>
</div> </div>
</div> </div>
<div id="outline-container-orgdeca909" class="outline-3"> <div id="outline-container-org24e45ca" class="outline-3">
<h3 id="orgdeca909"><span class="section-number-3">4.3</span> Needed stroke for &ldquo;pure&rdquo; rotations or translations</h3> <h3 id="org24e45ca">Needed stroke for &ldquo;pure&rdquo; rotations or translations</h3>
<div class="outline-text-3" id="text-4-3"> <div class="outline-text-3" id="text-org24e45ca">
<p> <p>
As a first estimation, we estimate the needed actuator stroke for &ldquo;pure&rdquo; rotations and translation. 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. 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> </div>
<div id="outline-container-orgb713047" class="outline-3"> <div id="outline-container-orgf6ba90c" class="outline-3">
<h3 id="orgb713047"><span class="section-number-3">4.4</span> Needed stroke for &ldquo;combined&rdquo; rotations or translations</h3> <h3 id="orgf6ba90c">Needed stroke for &ldquo;combined&rdquo; rotations or translations</h3>
<div class="outline-text-3" id="text-4-4"> <div class="outline-text-3" id="text-orgf6ba90c">
<p> <p>
We know would like to have a more precise estimation. We know would like to have a more precise estimation.
</p> </p>
@ -1144,29 +1146,30 @@ This is probably a much realistic estimation of the required actuator stroke.
</div> </div>
</div> </div>
<div id="outline-container-orge5f80c6" class="outline-2"> <div id="outline-container-orgbbbf7b3" class="outline-2">
<h2 id="orge5f80c6"><span class="section-number-2">5</span> Estimated platform mobility from specified actuator stroke</h2> <h2 id="orgbbbf7b3">Estimated platform mobility from specified actuator stroke</h2>
<div class="outline-text-2" id="text-5"> <div class="outline-text-2" id="text-orgbbbf7b3">
<p> <p>
<a id="org10d9ea8"></a> <a id="orgeca09fb"></a>
</p> </p>
<p> <p>
Here, from some value of the actuator stroke, we would like to estimate the mobility of the Stewart platform. Here, from some value of the actuator stroke, we would like to estimate the mobility of the Stewart platform.
</p> </p>
<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. However, for small displacements, we can use the Jacobian as an approximate solution.
</p> </p>
</div> </div>
<div id="outline-container-org1865dbc" class="outline-3"> <div id="outline-container-org486419b" class="outline-3">
<h3 id="org1865dbc"><span class="section-number-3">5.1</span> Stewart architecture definition</h3> <h3 id="org486419b">Stewart architecture definition</h3>
<div class="outline-text-3" id="text-5-1"> <div class="outline-text-3" id="text-org486419b">
<p> <p>
Let&rsquo;s first define the Stewart platform architecture that we want to study. Let&rsquo;s first define the Stewart platform architecture that we want to study.
</p> </p>
<div class="org-src-container"> <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 = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStewartPose(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> </div>
<div id="outline-container-orga4b5e5b" class="outline-3"> <div id="outline-container-org2c6819e" class="outline-3">
<h3 id="orga4b5e5b"><span class="section-number-3">5.2</span> Pure translations</h3> <h3 id="org2c6819e">Pure translations</h3>
<div class="outline-text-3" id="text-5-2"> <div class="outline-text-3" id="text-org2c6819e">
<p> <p>
Let&rsquo;s first estimate the mobility in translation when the orientation of the Stewart platform stays the same. Let&rsquo;s first estimate the mobility in translation when the orientation of the Stewart platform stays the same.
</p> </p>
@ -1262,7 +1265,7 @@ We can also approximate the mobility by a sphere with a radius equal to the mini
</table> </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><img src="figs/mobility_translations_null_rotation.png" alt="mobility_translations_null_rotation.png" />
</p> </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> <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> </div>
<div id="outline-container-org748d42a" class="outline-2"> <div id="outline-container-orgc4916dc" class="outline-2">
<h2 id="org748d42a"><span class="section-number-2">6</span> Functions</h2> <h2 id="orgc4916dc">Functions</h2>
<div class="outline-text-2" id="text-6"> <div class="outline-text-2" id="text-orgc4916dc">
<p> <p>
<a id="org1e1d299"></a> <a id="orgf9a6042"></a>
</p> </p>
</div> </div>
<div id="outline-container-org00ba36f" class="outline-3"> <div id="outline-container-org26e8b28" class="outline-3">
<h3 id="org00ba36f"><span class="section-number-3">6.1</span> <code>computeJacobian</code>: Compute the Jacobian Matrix</h3> <h3 id="org26e8b28"><code>computeJacobian</code>: Compute the Jacobian Matrix</h3>
<div class="outline-text-3" id="text-6-1"> <div class="outline-text-3" id="text-org26e8b28">
<p> <p>
<a id="org519ef53"></a> <a id="org2387f19"></a>
</p> </p>
<p> <p>
@ -1290,9 +1293,9 @@ This Matlab function is accessible <a href="src/computeJacobian.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-orgbdf3a2a" class="outline-4"> <div id="outline-container-org704ab84" class="outline-4">
<h4 id="orgbdf3a2a">Function description</h4> <h4 id="org704ab84">Function description</h4>
<div class="outline-text-4" id="text-orgbdf3a2a"> <div class="outline-text-4" id="text-org704ab84">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[stewart]</span> = <span class="org-function-name">computeJacobian</span>(<span class="org-variable-name">stewart</span>) <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> <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> </div>
<div id="outline-container-orgd1d8163" class="outline-4"> <div id="outline-container-org3990e47" class="outline-4">
<h4 id="orgd1d8163">Check the <code>stewart</code> structure elements</h4> <h4 id="org3990e47">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-orgd1d8163"> <div class="outline-text-4" id="text-org3990e47">
<div class="org-src-container"> <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>) <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; As = stewart.geometry.As;
@ -1333,9 +1336,9 @@ Ki = stewart.actuators.K;
</div> </div>
<div id="outline-container-orge54466d" class="outline-4"> <div id="outline-container-org0cd57b5" class="outline-4">
<h4 id="orge54466d">Compute Jacobian Matrix</h4> <h4 id="org0cd57b5">Compute Jacobian Matrix</h4>
<div class="outline-text-4" id="text-orge54466d"> <div class="outline-text-4" id="text-org0cd57b5">
<div class="org-src-container"> <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 class="src src-matlab">J = [As<span class="org-type">'</span> , cross(Ab, As)<span class="org-type">'</span>];
</pre> </pre>
@ -1343,9 +1346,9 @@ Ki = stewart.actuators.K;
</div> </div>
</div> </div>
<div id="outline-container-org560e1a1" class="outline-4"> <div id="outline-container-orge21dcfc" class="outline-4">
<h4 id="org560e1a1">Compute Stiffness Matrix</h4> <h4 id="orge21dcfc">Compute Stiffness Matrix</h4>
<div class="outline-text-4" id="text-org560e1a1"> <div class="outline-text-4" id="text-orge21dcfc">
<div class="org-src-container"> <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 class="src src-matlab">K = J<span class="org-type">'*</span>diag(Ki)<span class="org-type">*</span>J;
</pre> </pre>
@ -1353,9 +1356,9 @@ Ki = stewart.actuators.K;
</div> </div>
</div> </div>
<div id="outline-container-orga853f82" class="outline-4"> <div id="outline-container-orgae76071" class="outline-4">
<h4 id="orga853f82">Compute Compliance Matrix</h4> <h4 id="orgae76071">Compute Compliance Matrix</h4>
<div class="outline-text-4" id="text-orga853f82"> <div class="outline-text-4" id="text-orgae76071">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">C = inv(K); <pre class="src src-matlab">C = inv(K);
</pre> </pre>
@ -1363,9 +1366,9 @@ Ki = stewart.actuators.K;
</div> </div>
</div> </div>
<div id="outline-container-org4e11a57" class="outline-4"> <div id="outline-container-org78f18d7" class="outline-4">
<h4 id="org4e11a57">Populate the <code>stewart</code> structure</h4> <h4 id="org78f18d7">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org4e11a57"> <div class="outline-text-4" id="text-org78f18d7">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart.kinematics.J = J; <pre class="src src-matlab">stewart.kinematics.J = J;
stewart.kinematics.K = K; stewart.kinematics.K = K;
@ -1377,11 +1380,11 @@ stewart.kinematics.C = C;
</div> </div>
<div id="outline-container-org6c7006f" class="outline-3"> <div id="outline-container-orgb82066f" class="outline-3">
<h3 id="org6c7006f"><span class="section-number-3">6.2</span> <code>inverseKinematics</code>: Compute Inverse Kinematics</h3> <h3 id="orgb82066f"><code>inverseKinematics</code>: Compute Inverse Kinematics</h3>
<div class="outline-text-3" id="text-6-2"> <div class="outline-text-3" id="text-orgb82066f">
<p> <p>
<a id="orgaf5a9a0"></a> <a id="orgb8859d7"></a>
</p> </p>
<p> <p>
@ -1389,9 +1392,9 @@ This Matlab function is accessible <a href="src/inverseKinematics.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-org7136bfb" class="outline-4"> <div id="outline-container-org89930b7" class="outline-4">
<h4 id="org7136bfb">Theory</h4> <h4 id="org89930b7">Theory</h4>
<div class="outline-text-4" id="text-org7136bfb"> <div class="outline-text-4" id="text-org89930b7">
<p> <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\). 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> </p>
@ -1425,9 +1428,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div> </div>
</div> </div>
<div id="outline-container-org75ec482" class="outline-4"> <div id="outline-container-org0d77b2e" class="outline-4">
<h4 id="org75ec482">Function description</h4> <h4 id="org0d77b2e">Function description</h4>
<div class="outline-text-4" id="text-org75ec482"> <div class="outline-text-4" id="text-org0d77b2e">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[Li, dLi]</span> = <span class="org-function-name">inverseKinematics</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>) <pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[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> <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> </div>
<div id="outline-container-orgc83e0f8" class="outline-4"> <div id="outline-container-orgda02042" class="outline-4">
<h4 id="orgc83e0f8">Optional Parameters</h4> <h4 id="orgda02042">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgc83e0f8"> <div class="outline-text-4" id="text-orgda02042">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -1465,9 +1468,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div> </div>
</div> </div>
<div id="outline-container-org3ea2f51" class="outline-4"> <div id="outline-container-org4a3c325" class="outline-4">
<h4 id="org3ea2f51">Check the <code>stewart</code> structure elements</h4> <h4 id="org4a3c325">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org3ea2f51"> <div class="outline-text-4" id="text-org4a3c325">
<div class="org-src-container"> <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>) <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; Aa = stewart.geometry.Aa;
@ -1483,9 +1486,9 @@ l = stewart.geometry.l;
</div> </div>
<div id="outline-container-org210ed60" class="outline-4"> <div id="outline-container-org0d64c23" class="outline-4">
<h4 id="org210ed60">Compute</h4> <h4 id="org0d64c23">Compute</h4>
<div class="outline-text-4" id="text-org210ed60"> <div class="outline-text-4" id="text-org0d64c23">
<div class="org-src-container"> <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 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> </pre>
@ -1499,11 +1502,11 @@ l = stewart.geometry.l;
</div> </div>
</div> </div>
<div id="outline-container-org8f0dc6c" class="outline-3"> <div id="outline-container-orgf5d8f0b" class="outline-3">
<h3 id="org8f0dc6c"><span class="section-number-3">6.3</span> <code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</h3> <h3 id="orgf5d8f0b"><code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</h3>
<div class="outline-text-3" id="text-6-3"> <div class="outline-text-3" id="text-orgf5d8f0b">
<p> <p>
<a id="org7ba3dc5"></a> <a id="orgdb31434"></a>
</p> </p>
<p> <p>
@ -1511,9 +1514,9 @@ This Matlab function is accessible <a href="src/forwardKinematicsApprox.m">here<
</p> </p>
</div> </div>
<div id="outline-container-org7c35749" class="outline-4"> <div id="outline-container-org473d0b1" class="outline-4">
<h4 id="org7c35749">Function description</h4> <h4 id="org473d0b1">Function description</h4>
<div class="outline-text-4" id="text-org7c35749"> <div class="outline-text-4" id="text-org473d0b1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[P, R]</span> = <span class="org-function-name">forwardKinematicsApprox</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>) <pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[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> <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> </div>
<div id="outline-container-org5eee73c" class="outline-4"> <div id="outline-container-org8fe02d3" class="outline-4">
<h4 id="org5eee73c">Optional Parameters</h4> <h4 id="org8fe02d3">Optional Parameters</h4>
<div class="outline-text-4" id="text-org5eee73c"> <div class="outline-text-4" id="text-org8fe02d3">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -1548,9 +1551,9 @@ This Matlab function is accessible <a href="src/forwardKinematicsApprox.m">here<
</div> </div>
</div> </div>
<div id="outline-container-orgee36d86" class="outline-4"> <div id="outline-container-org83d7e5f" class="outline-4">
<h4 id="orgee36d86">Check the <code>stewart</code> structure elements</h4> <h4 id="org83d7e5f">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-orgee36d86"> <div class="outline-text-4" id="text-org83d7e5f">
<div class="org-src-container"> <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>) <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; J = stewart.kinematics.J;
@ -1559,9 +1562,9 @@ J = stewart.kinematics.J;
</div> </div>
</div> </div>
<div id="outline-container-orgc3e4684" class="outline-4"> <div id="outline-container-orge5ade24" class="outline-4">
<h4 id="orgc3e4684">Computation</h4> <h4 id="orge5ade24">Computation</h4>
<div class="outline-text-4" id="text-orgc3e4684"> <div class="outline-text-4" id="text-orge5ade24">
<p> <p>
From a small displacement of each strut \(d\bm{\mathcal{L}}\), we can compute the 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: 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>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-11 mar. 15:10</p> <p class="date">Created: 2020-02-11 mar. 15:26</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-01-29 mer. 12:02 --> <!-- 2020-02-11 mar. 15:26 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Simscape Model</title> <title>Stewart Platform - Simscape Model</title>
@ -246,31 +246,16 @@ for the JavaScript code in this tag.
} }
/*]]>*///--> /*]]>*///-->
</script> </script>
<script type="text/x-mathjax-config"> <script>
MathJax.Hub.Config({ MathJax = {
displayAlign: "center", tex: { macros: {
displayIndent: "0em", bm: ["\\boldsymbol{#1}",1],
}
"HTML-CSS": { scale: 100, }
linebreaks: { automatic: "false" }, };
webFont: "TeX" </script>
}, <script type="text/javascript"
SVG: {scale: 100, src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em",
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>
</head> </head>
<body> <body>
<div id="org-div-home-and-up"> <div id="org-div-home-and-up">
@ -283,23 +268,27 @@ for the JavaScript code in this tag.
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#org002dfa5">1. Parameters used for the Simscape Model</a></li> <li><a href="#orgc6e0b93">Parameters used for the Simscape Model</a></li>
<li><a href="#orgf99cee5">2. Simulation Configuration - Configuration reference</a></li> <li><a href="#org66977e8">Simulation Configuration - Configuration reference</a></li>
<li><a href="#org7bf96b7">3. Subsystem Reference</a></li> <li><a href="#orgb2362eb">Subsystem Reference</a></li>
<li><a href="#orgae34e57">4. Subsystem - Fixed base and Mobile Platform</a></li> <li><a href="#orgdfad86d">Subsystem - Fixed base and Mobile Platform</a></li>
<li><a href="#org2e16af3">5. Subsystem - Struts</a> <li><a href="#org9d4af75">Subsystem - Struts</a>
<ul> <ul>
<li><a href="#org59382cb">5.1. Strut Configuration</a></li> <li><a href="#org45d9234">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>
</ul> </ul>
</li> </li>
<li><a href="#org2561089">5.3. Z-Axis Accelerometer</a> <li><a href="#org7e2c432">Other Elements</a>
<ul> <ul>
<li><a href="#org70a289b">5.3.1. Working Principle</a></li> <li><a href="#org4bdfc33">Z-Axis Geophone</a>
<li><a href="#orgc7763c4">5.3.2. Initialization function</a></li> <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> </ul>
</li> </li>
</ul> </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: It is divided in the following sections:
</p> </p>
<ul class="org-ul"> <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="#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="#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="#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="#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="#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="#org0562d05">4</a>: The simscape model for the fixed base and mobile platform are described in this section.</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="#org0ff5129">5</a>: The simscape model for the Stewart platform struts is 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> </ul>
<div id="outline-container-org002dfa5" class="outline-2"> <div id="outline-container-orgc6e0b93" class="outline-2">
<h2 id="org002dfa5"><span class="section-number-2">1</span> Parameters used for the Simscape Model</h2> <h2 id="orgc6e0b93">Parameters used for the Simscape Model</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-orgc6e0b93">
<p> <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>. 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> </p>
@ -350,11 +339,11 @@ The main advantage to have all the parameters defined in one structure (and not
</div> </div>
<div id="outline-container-orgf99cee5" class="outline-2"> <div id="outline-container-org66977e8" class="outline-2">
<h2 id="orgf99cee5"><span class="section-number-2">2</span> Simulation Configuration - Configuration reference</h2> <h2 id="org66977e8">Simulation Configuration - Configuration reference</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-org66977e8">
<p> <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. 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> </p>
@ -381,11 +370,11 @@ It is however possible to modify specific parameters just for one simulation usi
</div> </div>
</div> </div>
<div id="outline-container-org7bf96b7" class="outline-2"> <div id="outline-container-orgb2362eb" class="outline-2">
<h2 id="org7bf96b7"><span class="section-number-2">3</span> Subsystem Reference</h2> <h2 id="orgb2362eb">Subsystem Reference</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-orgb2362eb">
<p> <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. 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> </p>
@ -403,12 +392,12 @@ These shared subsystems are:
</ul> </ul>
<p> <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;). This subsystem is then referenced in other simulink models for various purposes (control, analysis, simulation, &#x2026;).
</p> </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><img src="figs/simscape_stewart_platform.png" alt="simscape_stewart_platform.png" />
</p> </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> <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> </div>
<div id="outline-container-orgae34e57" class="outline-2"> <div id="outline-container-orgdfad86d" class="outline-2">
<h2 id="orgae34e57"><span class="section-number-2">4</span> Subsystem - Fixed base and Mobile Platform</h2> <h2 id="orgdfad86d">Subsystem - Fixed base and Mobile Platform</h2>
<div class="outline-text-2" id="text-4"> <div class="outline-text-2" id="text-orgdfad86d">
<p> <p>
<a id="org0562d05"></a> <a id="orga4915c4"></a>
Both the fixed base and the mobile platform simscape models share many similarities. Both the fixed base and the mobile platform simscape models share many similarities.
</p> </p>
@ -438,14 +427,14 @@ As always, the parameters that define the geometry are taken from the <code>stew
</p> </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><img src="figs/simscape_fixed_base.png" alt="simscape_fixed_base.png" width="1000px" />
</p> </p>
<p><span class="figure-number">Figure 2: </span>Simscape Model of the Fixed base</p> <p><span class="figure-number">Figure 2: </span>Simscape Model of the Fixed base</p>
</div> </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><img src="figs/simscape_mobile_platform.png" alt="simscape_mobile_platform.png" width="800px" />
</p> </p>
<p><span class="figure-number">Figure 3: </span>Simscape Model of the Mobile platform</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> </div>
<div id="outline-container-org2e16af3" class="outline-2"> <div id="outline-container-org9d4af75" class="outline-2">
<h2 id="org2e16af3"><span class="section-number-2">5</span> Subsystem - Struts</h2> <h2 id="org9d4af75">Subsystem - Struts</h2>
<div class="outline-text-2" id="text-5"> <div class="outline-text-2" id="text-org9d4af75">
<p> <p>
<a id="org0ff5129"></a> <a id="orgdb5206f"></a>
</p> </p>
</div> </div>
<div id="outline-container-org59382cb" class="outline-3"> <div id="outline-container-org45d9234" class="outline-3">
<h3 id="org59382cb"><span class="section-number-3">5.1</span> Strut Configuration</h3> <h3 id="org45d9234">Strut Configuration</h3>
<div class="outline-text-3" id="text-5-1"> <div class="outline-text-3" id="text-org45d9234">
<p> <p>
For the Stewart platform, the 6 struts are identical. 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>
<p> <p>
@ -487,7 +476,7 @@ This is why the <b>UPS</b> configuration is used, but other configuration can be
</p> </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><img src="figs/simscape_strut.png" alt="simscape_strut.png" width="800px" />
</p> </p>
<p><span class="figure-number">Figure 4: </span>Simscape model of the Stewart platform&rsquo;s strut</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> </p>
</div> </div>
</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>
<div id="outline-container-org7f22bd7" class="outline-4">
<h4 id="org7f22bd7"><span class="section-number-4">5.2.1</span> Working Principle</h4> <div id="outline-container-org7e2c432" class="outline-2">
<div class="outline-text-4" id="text-5-2-1"> <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> <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} \] \[ \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: with:
</p> </p>
@ -534,7 +528,7 @@ with:
</ul> </ul>
<div id="orgbecc7b0" class="figure"> <div id="org819fba8" class="figure">
<p><img src="figs/inertial_sensor.png" alt="inertial_sensor.png" /> <p><img src="figs/inertial_sensor.png" alt="inertial_sensor.png" />
</p> </p>
<p><span class="figure-number">Figure 5: </span>Schematic of a Z-Axis geophone</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> </div>
<div id="outline-container-org3956dae" class="outline-4"> <div id="outline-container-org48bfa57" class="outline-4">
<h4 id="org3956dae"><span class="section-number-4">5.2.2</span> Initialization function</h4> <h4 id="org48bfa57">Initialization function</h4>
<div class="outline-text-4" id="text-5-2-2"> <div class="outline-text-4" id="text-org48bfa57">
<p> <p>
<a id="orgabe7399"></a> <a id="orgd31bda9"></a>
</p> </p>
<p> <p>
@ -591,15 +585,15 @@ This Matlab function is accessible <a href="../src/initializeZAxisGeophone.m">he
</div> </div>
</div> </div>
<div id="outline-container-org2561089" class="outline-3"> <div id="outline-container-org99786f1" class="outline-3">
<h3 id="org2561089"><span class="section-number-3">5.3</span> Z-Axis Accelerometer</h3> <h3 id="org99786f1">Z-Axis Accelerometer</h3>
<div class="outline-text-3" id="text-5-3"> <div class="outline-text-3" id="text-org99786f1">
</div> </div>
<div id="outline-container-org70a289b" class="outline-4"> <div id="outline-container-org631cd1a" class="outline-4">
<h4 id="org70a289b"><span class="section-number-4">5.3.1</span> Working Principle</h4> <h4 id="org631cd1a">Working Principle</h4>
<div class="outline-text-4" id="text-5-3-1"> <div class="outline-text-4" id="text-org631cd1a">
<p> <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} \] \[ \frac{d}{\ddot{w}} = \frac{-\frac{1}{{\omega_0}^2}}{\frac{s^2}{{\omega_0}^2} + 2 \xi \frac{s}{\omega_0} + 1} \]
with: with:
</p> </p>
@ -609,7 +603,7 @@ with:
</ul> </ul>
<div id="orgbacfc60" class="figure"> <div id="org1274602" class="figure">
<p><img src="figs/inertial_sensor.png" alt="inertial_sensor.png" /> <p><img src="figs/inertial_sensor.png" alt="inertial_sensor.png" />
</p> </p>
<p><span class="figure-number">Figure 6: </span>Schematic of a Z-Axis geophone</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> </div>
<div id="outline-container-orgc7763c4" class="outline-4"> <div id="outline-container-org514425a" class="outline-4">
<h4 id="orgc7763c4"><span class="section-number-4">5.3.2</span> Initialization function</h4> <h4 id="org514425a">Initialization function</h4>
<div class="outline-text-4" id="text-5-3-2"> <div class="outline-text-4" id="text-org514425a">
<p> <p>
<a id="orge9014b7"></a> <a id="orge91f65f"></a>
</p> </p>
<p> <p>
@ -676,7 +670,7 @@ This Matlab function is accessible <a href="../src/initializeZAxisAccelerometer.
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-01-29 mer. 12:02</p> <p class="date">Created: 2020-02-11 mar. 15:26</p>
</div> </div>
</body> </body>
</html> </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"?> <?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-01-28 mar. 13:42 --> <!-- 2020-02-11 mar. 15:23 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Simulink Project for the Stewart Simscape folder</title> <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+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes #+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs #+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: :END:
* Introduction :ignore: * Introduction :ignore:

View File

@ -19,6 +19,16 @@
#+PROPERTY: header-args:matlab+ :noweb yes #+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes #+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs #+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: :END:
* Introduction :ignore: * Introduction :ignore:

View File

@ -18,6 +18,16 @@
#+PROPERTY: header-args:matlab+ :noweb yes #+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes #+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs #+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: :END:
* Some tests * 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+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes #+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs #+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: :END:
* Introduction :ignore: * Introduction :ignore:

View File

@ -18,6 +18,16 @@
#+PROPERTY: header-args:matlab+ :noweb yes #+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes #+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs #+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: :END:
* Introduction :ignore: * Introduction :ignore:

View File

@ -18,6 +18,16 @@
#+PROPERTY: header-args:matlab+ :noweb yes #+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes #+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs #+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: :END:
* Introduction :ignore: * Introduction :ignore:

View File

@ -10,6 +10,16 @@
#+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script> #+HTML_HEAD: <script src="./js/jquery.stickytableheaders.min.js"></script>
#+HTML_HEAD: <script src="./js/readtheorg.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 :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments org #+PROPERTY: header-args:matlab+ :comments org
#+PROPERTY: header-args:matlab+ :exports both #+PROPERTY: header-args:matlab+ :exports both