Update active damping analysis

This commit is contained in:
Thomas Dehaeze 2020-02-11 18:04:45 +01:00
parent 7ff04f690f
commit 9659e5a507
51 changed files with 540 additions and 513 deletions

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-02-11 mar. 15:50 --> <!-- 2020-02-11 mar. 18:04 -->
<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>
@ -271,25 +271,25 @@ for the JavaScript code in this tag.
<li><a href="#orgd59c804">1. Inertial Control</a> <li><a href="#orgd59c804">1. Inertial Control</a>
<ul> <ul>
<li><a href="#org5f749c8">1.1. Identification of the Dynamics</a></li> <li><a href="#org5f749c8">1.1. Identification of the Dynamics</a></li>
<li><a href="#org41a6913">1.2. Effect of the Flexible Joint stiffness on the Dynamics</a></li> <li><a href="#orgec430e2">1.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
<li><a href="#orgbcd94dc">1.3. Obtained Damping</a></li> <li><a href="#orgaa11f3d">1.3. Obtained Damping</a></li>
<li><a href="#orgb81ed64">1.4. Conclusion</a></li> <li><a href="#orgcd93557">1.4. Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org74c7eb4">2. Integral Force Feedback</a> <li><a href="#org74c7eb4">2. Integral Force Feedback</a>
<ul> <ul>
<li><a href="#org04cb1dc">2.1. Identification of the Dynamics with perfect Joints</a></li> <li><a href="#orga217cbb">2.1. Identification of the Dynamics with perfect Joints</a></li>
<li><a href="#org7f576ce">2.2. Effect of the Flexible Joint stiffness on the Dynamics</a></li> <li><a href="#org5ab90ff">2.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
<li><a href="#orgb927f01">2.3. Obtained Damping</a></li> <li><a href="#org8dd8d32">2.3. Obtained Damping</a></li>
<li><a href="#orgf5f2135">2.4. Conclusion</a></li> <li><a href="#org14503d2">2.4. Conclusion</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org08917d6">3. Direct Velocity Feedback</a> <li><a href="#org08917d6">3. Direct Velocity Feedback</a>
<ul> <ul>
<li><a href="#orgbfe0af6">3.1. Identification of the Dynamics with perfect Joints</a></li> <li><a href="#org025d6da">3.1. Identification of the Dynamics with perfect Joints</a></li>
<li><a href="#org62438da">3.2. Effect of the Flexible Joint stiffness on the Dynamics</a></li> <li><a href="#org6dd3dfd">3.2. Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</a></li>
<li><a href="#orgb4fcddf">3.3. Obtained Damping</a></li> <li><a href="#orge3fb12b">3.3. Obtained Damping</a></li>
<li><a href="#org31a4bb6">3.4. Conclusion</a></li> <li><a href="#org049f0ec">3.4. Conclusion</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -322,11 +322,12 @@ stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, <span class="org-string">'disable'</span>, <span class="org-constant">true</span>); stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical_p'</span>);
stewart = initializeCylindricalPlatforms(stewart); stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'accelerometer'</span>, <span class="org-string">'freq'</span>, 5e3);
</pre> </pre>
</div> </div>
@ -362,20 +363,31 @@ The transfer function from actuator forces to force sensors is shown in Figure <
</div> </div>
</div> </div>
<div id="outline-container-org41a6913" class="outline-3"> <div id="outline-container-orgec430e2" class="outline-3">
<h3 id="org41a6913"><span class="section-number-3">1.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3> <h3 id="orgec430e2"><span class="section-number-3">1.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
<div class="outline-text-3" id="text-1-2"> <div class="outline-text-3" id="text-1-2">
<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>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeJointDynamics(stewart); <pre class="src src-matlab">stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical'</span>);
Gf = linearize(mdl, io, options); Gf = linearize(mdl, io, options);
Gf.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>}; Gf.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
Gf.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string">'Vm2'</span>, <span class="org-string">'Vm3'</span>, <span class="org-string">'Vm4'</span>, <span class="org-string">'Vm5'</span>, <span class="org-string">'Vm6'</span>}; Gf.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string">'Vm2'</span>, <span class="org-string">'Vm3'</span>, <span class="org-string">'Vm4'</span>, <span class="org-string">'Vm5'</span>, <span class="org-string">'Vm6'</span>};
</pre> </pre>
</div> </div>
<p>
We now use the amplified actuators and re-identify the dynamics
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeAmplifiedStrutDynamics(stewart);
Ga = linearize(mdl, io, options);
Ga.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
Ga.OutputName = {<span class="org-string">'Vm1'</span>, <span class="org-string">'Vm2'</span>, <span class="org-string">'Vm3'</span>, <span class="org-string">'Vm4'</span>, <span class="org-string">'Vm5'</span>, <span class="org-string">'Vm6'</span>};
</pre>
</div>
<p> <p>
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org683c779">2</a>. The new dynamics from force actuator to force sensor is shown in Figure <a href="#org683c779">2</a>.
</p> </p>
@ -388,8 +400,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
</div> </div>
</div> </div>
<div id="outline-container-orgbcd94dc" class="outline-3"> <div id="outline-container-orgaa11f3d" class="outline-3">
<h3 id="orgbcd94dc"><span class="section-number-3">1.3</span> Obtained Damping</h3> <h3 id="orgaa11f3d"><span class="section-number-3">1.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-1-3">
<p> <p>
The control is a performed in a decentralized manner. The control is a performed in a decentralized manner.
@ -403,7 +415,7 @@ 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="#org9af9e33">3</a> and the obtained pole damping function of the control gain is shown in figure <a href="#org4e6b73b">4</a>. The root locus is shown in figure <a href="#org9af9e33">3</a>.
</p> </p>
<div id="org9af9e33" class="figure"> <div id="org9af9e33" class="figure">
@ -411,22 +423,15 @@ The root locus is shown in figure <a href="#org9af9e33">3</a> and the obtained p
</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="org4e6b73b" class="figure">
<p><img src="figs/pole_damping_gain_inertial_rot_stiffness.png" alt="pole_damping_gain_inertial_rot_stiffness.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Damping of the poles with respect to the gain of the Decentralized Inertial Control when considering the stiffness of flexible joints (<a href="./figs/pole_damping_gain_inertial_rot_stiffness.png">png</a>, <a href="./figs/pole_damping_gain_inertial_rot_stiffness.pdf">pdf</a>)</p>
</div>
</div> </div>
</div> </div>
<div id="outline-container-orgb81ed64" class="outline-3"> <div id="outline-container-orgcd93557" class="outline-3">
<h3 id="orgb81ed64"><span class="section-number-3">1.4</span> Conclusion</h3> <h3 id="orgcd93557"><span class="section-number-3">1.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-1-4"> <div class="outline-text-3" id="text-1-4">
<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. We do not have guaranteed stability with Inertial control. This is because of the flexibility inside the internal sensor.
</p> </p>
</div> </div>
@ -442,8 +447,8 @@ Joint stiffness does increase the resonance frequencies of the system but does n
</p> </p>
</div> </div>
<div id="outline-container-org04cb1dc" class="outline-3"> <div id="outline-container-orga217cbb" class="outline-3">
<h3 id="org04cb1dc"><span class="section-number-3">2.1</span> Identification of the Dynamics with perfect Joints</h3> <h3 id="orga217cbb"><span class="section-number-3">2.1</span> Identification of the Dynamics with perfect Joints</h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-2-1">
<p> <p>
We first initialize the Stewart platform without joint stiffness. We first initialize the Stewart platform without joint stiffness.
@ -454,12 +459,12 @@ stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>
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">'type_F'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical_p'</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);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre> </pre>
</div> </div>
@ -487,25 +492,25 @@ 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="#org3fca9dd">5</a>. The transfer function from actuator forces to force sensors is shown in Figure <a href="#org3fca9dd">4</a>.
</p> </p>
<div id="org3fca9dd" 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 4: </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>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org7f576ce" class="outline-3"> <div id="outline-container-org5ab90ff" class="outline-3">
<h3 id="org7f576ce"><span class="section-number-3">2.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3> <h3 id="org5ab90ff"><span class="section-number-3">2.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
<div class="outline-text-3" id="text-2-2"> <div class="outline-text-3" id="text-2-2">
<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>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeJointDynamics(stewart); <pre class="src src-matlab">stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical'</span>);
Gf = linearize(mdl, io, options); Gf = linearize(mdl, io, options);
Gf.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>}; Gf.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
Gf.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">'Fm2'</span>, <span class="org-string">'Fm3'</span>, <span class="org-string">'Fm4'</span>, <span class="org-string">'Fm5'</span>, <span class="org-string">'Fm6'</span>}; Gf.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">'Fm2'</span>, <span class="org-string">'Fm3'</span>, <span class="org-string">'Fm4'</span>, <span class="org-string">'Fm5'</span>, <span class="org-string">'Fm6'</span>};
@ -513,19 +518,30 @@ 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="#org090868b">6</a>. We now use the amplified actuators and re-identify the dynamics
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeAmplifiedStrutDynamics(stewart);
Ga = linearize(mdl, io, options);
Ga.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
Ga.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">'Fm2'</span>, <span class="org-string">'Fm3'</span>, <span class="org-string">'Fm4'</span>, <span class="org-string">'Fm5'</span>, <span class="org-string">'Fm6'</span>};
</pre>
</div>
<p>
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org090868b">5</a>.
</p> </p>
<div id="org090868b" 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 5: </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>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgb927f01" class="outline-3"> <div id="outline-container-org8dd8d32" class="outline-3">
<h3 id="orgb927f01"><span class="section-number-3">2.3</span> Obtained Damping</h3> <h3 id="org8dd8d32"><span class="section-number-3">2.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-2-3"> <div class="outline-text-3" id="text-2-3">
<p> <p>
The control is a performed in a decentralized manner. The control is a performed in a decentralized manner.
@ -539,26 +555,26 @@ 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="#orge21bbea">7</a> and the obtained pole damping function of the control gain is shown in figure <a href="#org94d6943">8</a>. The root locus is shown in figure <a href="#orge21bbea">6</a> and the obtained pole damping function of the control gain is shown in figure <a href="#org94d6943">7</a>.
</p> </p>
<div id="orge21bbea" 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 6: </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="org94d6943" 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 7: </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>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgf5f2135" class="outline-3"> <div id="outline-container-org14503d2" class="outline-3">
<h3 id="orgf5f2135"><span class="section-number-3">2.4</span> Conclusion</h3> <h3 id="org14503d2"><span class="section-number-3">2.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-4"> <div class="outline-text-3" id="text-2-4">
<div class="important"> <div class="important">
<p> <p>
@ -579,8 +595,8 @@ Thus, if Integral Force Feedback is to be used in a Stewart platform with flexib
</p> </p>
</div> </div>
<div id="outline-container-orgbfe0af6" class="outline-3"> <div id="outline-container-org025d6da" class="outline-3">
<h3 id="orgbfe0af6"><span class="section-number-3">3.1</span> Identification of the Dynamics with perfect Joints</h3> <h3 id="org025d6da"><span class="section-number-3">3.1</span> Identification of the Dynamics with perfect Joints</h3>
<div class="outline-text-3" id="text-3-1"> <div class="outline-text-3" id="text-3-1">
<p> <p>
We first initialize the Stewart platform without joint stiffness. We first initialize the Stewart platform without joint stiffness.
@ -591,11 +607,12 @@ stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, <span class="org-string">'disable'</span>, <span class="org-constant">true</span>); stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical_p'</span>);
stewart = initializeCylindricalPlatforms(stewart); stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre> </pre>
</div> </div>
@ -623,26 +640,26 @@ 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="#orgcc86228">9</a>. The transfer function from actuator forces to relative motion sensors is shown in Figure <a href="#orgcc86228">8</a>.
</p> </p>
<div id="orgcc86228" 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 8: </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>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org62438da" class="outline-3"> <div id="outline-container-org6dd3dfd" class="outline-3">
<h3 id="org62438da"><span class="section-number-3">3.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3> <h3 id="org6dd3dfd"><span class="section-number-3">3.2</span> Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics</h3>
<div class="outline-text-3" id="text-3-2"> <div class="outline-text-3" id="text-3-2">
<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>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeJointDynamics(stewart); <pre class="src src-matlab">stewart = initializeJointDynamics(stewart, <span class="org-string">'type_F'</span>, <span class="org-string">'universal'</span>, <span class="org-string">'type_M'</span>, <span class="org-string">'spherical'</span>);
Gf = linearize(mdl, io, options); Gf = linearize(mdl, io, options);
Gf.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>}; Gf.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
Gf.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string">'Dm2'</span>, <span class="org-string">'Dm3'</span>, <span class="org-string">'Dm4'</span>, <span class="org-string">'Dm5'</span>, <span class="org-string">'Dm6'</span>}; Gf.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string">'Dm2'</span>, <span class="org-string">'Dm3'</span>, <span class="org-string">'Dm4'</span>, <span class="org-string">'Dm5'</span>, <span class="org-string">'Dm6'</span>};
@ -650,19 +667,30 @@ 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="#org5a86447">10</a>. We now use the amplified actuators and re-identify the dynamics
</p>
<div class="org-src-container">
<pre class="src src-matlab">stewart = initializeAmplifiedStrutDynamics(stewart);
Ga = linearize(mdl, io, options);
Ga.InputName = {<span class="org-string">'F1'</span>, <span class="org-string">'F2'</span>, <span class="org-string">'F3'</span>, <span class="org-string">'F4'</span>, <span class="org-string">'F5'</span>, <span class="org-string">'F6'</span>};
Ga.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string">'Dm2'</span>, <span class="org-string">'Dm3'</span>, <span class="org-string">'Dm4'</span>, <span class="org-string">'Dm5'</span>, <span class="org-string">'Dm6'</span>};
</pre>
</div>
<p>
The new dynamics from force actuator to relative motion sensor is shown in Figure <a href="#org5a86447">9</a>.
</p> </p>
<div id="org5a86447" 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 9: </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>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orgb4fcddf" class="outline-3"> <div id="outline-container-orge3fb12b" class="outline-3">
<h3 id="orgb4fcddf"><span class="section-number-3">3.3</span> Obtained Damping</h3> <h3 id="orge3fb12b"><span class="section-number-3">3.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-3-3"> <div class="outline-text-3" id="text-3-3">
<p> <p>
The control is a performed in a decentralized manner. The control is a performed in a decentralized manner.
@ -676,26 +704,19 @@ 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="#org277d60d">11</a> and the obtained pole damping function of the control gain is shown in figure <a href="#orgd673396">12</a>. The root locus is shown in figure <a href="#org277d60d">10</a>.
</p> </p>
<div id="org277d60d" 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 10: </span>Root Locus plot with Direct Velocity Feedback when considering the Stiffness of flexible joints (<a href="./figs/root_locus_dvf_rot_stiffness.png">png</a>, <a href="./figs/root_locus_dvf_rot_stiffness.pdf">pdf</a>)</p>
</div>
<div id="orgd673396" class="figure">
<p><img src="figs/pole_damping_gain_dvf_rot_stiffness.png" alt="pole_damping_gain_dvf_rot_stiffness.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Damping of the poles with respect to the gain of the Direct Velocity Feedback when considering the Stiffness of flexible joints (<a href="./figs/pole_damping_gain_dvf_rot_stiffness.png">png</a>, <a href="./figs/pole_damping_gain_dvf_rot_stiffness.pdf">pdf</a>)</p>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org31a4bb6" class="outline-3"> <div id="outline-container-org049f0ec" class="outline-3">
<h3 id="org31a4bb6"><span class="section-number-3">3.4</span> Conclusion</h3> <h3 id="org049f0ec"><span class="section-number-3">3.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-4"> <div class="outline-text-3" id="text-3-4">
<div class="important"> <div class="important">
<p> <p>
@ -709,7 +730,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-11 mar. 15:50</p> <p class="date">Created: 2020-02-11 mar. 18:04</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:50 --> <!-- 2020-02-11 mar. 17:52 -->
<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>
@ -382,7 +382,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-02-11 mar. 15:50</p> <p class="date">Created: 2020-02-11 mar. 17:52</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:50 --> <!-- 2020-02-11 mar. 17:52 -->
<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>
@ -349,7 +349,7 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<div id="org9454f54" 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>
@ -547,7 +547,7 @@ The Jacobian is estimated at the cube center.
<div id="org97b319c" 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>
@ -896,7 +896,7 @@ We obtain \(k_x = k_y = k_z\) and \(k_{\theta_x} = k_{\theta_y}\), but the Stiff
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/generateCubicConfiguration.m">here</a>. This Matlab function is accessible <a href="../src/generateCubicConfiguration.m">here</a>.
</p> </p>
</div> </div>
@ -1039,7 +1039,7 @@ stewart.platform_M.Mb = Mb;
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-11 mar. 15:50</p> <p class="date">Created: 2020-02-11 mar. 17:52</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:50 --> <!-- 2020-02-11 mar. 17:52 -->
<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>
@ -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-02-11 mar. 15:50</p> <p class="date">Created: 2020-02-11 mar. 17:52</p>
</div> </div>
</body> </body>
</html> </html>

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 KiB

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 43 KiB

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:50 --> <!-- 2020-02-11 mar. 17:51 -->
<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>
@ -268,29 +268,29 @@ 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="#org4f5919a">1. Identification</a> <li><a href="#org36eeb29">1. Identification</a>
<ul> <ul>
<li><a href="#org89ad201">1.1. Simscape Model</a></li> <li><a href="#orgb4842a1">1.1. Simscape Model</a></li>
<li><a href="#orgf726654">1.2. Initialize the Stewart Platform</a></li> <li><a href="#org4240dd7">1.2. Initialize the Stewart Platform</a></li>
<li><a href="#org79afd8d">1.3. Identification</a></li> <li><a href="#org5695094">1.3. Identification</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orge464de2">2. States as the motion of the mobile platform</a> <li><a href="#orge464de2">2. States as the motion of the mobile platform</a>
<ul> <ul>
<li><a href="#orge352695">2.1. Initialize the Stewart Platform</a></li> <li><a href="#org8d12d8c">2.1. Initialize the Stewart Platform</a></li>
<li><a href="#org0dc382a">2.2. Identification</a></li> <li><a href="#orgef8d225">2.2. Identification</a></li>
<li><a href="#orge68adea">2.3. Coordinate transformation</a></li> <li><a href="#orge68adea">2.3. Coordinate transformation</a></li>
<li><a href="#org4973ae1">2.4. Analysis</a></li> <li><a href="#org4973ae1">2.4. Analysis</a></li>
<li><a href="#orge7b97c8">2.5. Visualizing the modes</a></li> <li><a href="#orge7b97c8">2.5. Visualizing the modes</a></li>
<li><a href="#orgf6eca35">2.6. Identification</a></li> <li><a href="#org009b696">2.6. Identification</a></li>
<li><a href="#orgf7a52cb">2.7. Change of states</a></li> <li><a href="#orgf7a52cb">2.7. Change of states</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org23d7e7b">3. Simple Model without any sensor</a> <li><a href="#org23d7e7b">3. Simple Model without any sensor</a>
<ul> <ul>
<li><a href="#org9366ba4">3.1. Simscape Model</a></li> <li><a href="#org2ad9d50">3.1. Simscape Model</a></li>
<li><a href="#orgf4e4e80">3.2. Initialize the Stewart Platform</a></li> <li><a href="#orgbc1f736">3.2. Initialize the Stewart Platform</a></li>
<li><a href="#org9b90cca">3.3. Identification</a></li> <li><a href="#org43f8fc6">3.3. Identification</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org0502cd2">4. Cartesian Plot</a></li> <li><a href="#org0502cd2">4. Cartesian Plot</a></li>
@ -396,16 +396,16 @@ An important difference from basic Simulink models is that the states in a physi
<div id="outline-container-org4f5919a" class="outline-2"> <div id="outline-container-org36eeb29" class="outline-2">
<h2 id="org4f5919a"><span class="section-number-2">1</span> Identification</h2> <h2 id="org36eeb29"><span class="section-number-2">1</span> Identification</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
</div> </div>
<div id="outline-container-org89ad201" class="outline-3"> <div id="outline-container-orgb4842a1" class="outline-3">
<h3 id="org89ad201"><span class="section-number-3">1.1</span> Simscape Model</h3> <h3 id="orgb4842a1"><span class="section-number-3">1.1</span> Simscape Model</h3>
</div> </div>
<div id="outline-container-orgf726654" class="outline-3"> <div id="outline-container-org4240dd7" class="outline-3">
<h3 id="orgf726654"><span class="section-number-3">1.2</span> Initialize the Stewart Platform</h3> <h3 id="org4240dd7"><span class="section-number-3">1.2</span> Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-1-2"> <div class="outline-text-3" id="text-1-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab">stewart = initializeStewartPlatform();
@ -422,8 +422,8 @@ stewart = initializeStewartPose(stewart);
</div> </div>
</div> </div>
<div id="outline-container-org79afd8d" class="outline-3"> <div id="outline-container-org5695094" class="outline-3">
<h3 id="org79afd8d"><span class="section-number-3">1.3</span> Identification</h3> <h3 id="org5695094"><span class="section-number-3">1.3</span> Identification</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-1-3">
<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>
@ -461,8 +461,8 @@ G.OutputName = {<span class="org-string">'Xdx'</span>, <span class="org-string">
<h2 id="orge464de2"><span class="section-number-2">2</span> States as the motion of the mobile platform</h2> <h2 id="orge464de2"><span class="section-number-2">2</span> States as the motion of the mobile platform</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
</div> </div>
<div id="outline-container-orge352695" class="outline-3"> <div id="outline-container-org8d12d8c" class="outline-3">
<h3 id="orge352695"><span class="section-number-3">2.1</span> Initialize the Stewart Platform</h3> <h3 id="org8d12d8c"><span class="section-number-3">2.1</span> Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-2-1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab">stewart = initializeStewartPlatform();
@ -479,8 +479,8 @@ stewart = initializeStewartPose(stewart);
</div> </div>
</div> </div>
<div id="outline-container-org0dc382a" class="outline-3"> <div id="outline-container-orgef8d225" class="outline-3">
<h3 id="org0dc382a"><span class="section-number-3">2.2</span> Identification</h3> <h3 id="orgef8d225"><span class="section-number-3">2.2</span> Identification</h3>
<div class="outline-text-3" id="text-2-2"> <div class="outline-text-3" id="text-2-2">
<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>
@ -745,8 +745,8 @@ Save the movie of the mode shape.
</div> </div>
</div> </div>
<div id="outline-container-orgf6eca35" class="outline-3"> <div id="outline-container-org009b696" class="outline-3">
<h3 id="orgf6eca35"><span class="section-number-3">2.6</span> Identification</h3> <h3 id="org009b696"><span class="section-number-3">2.6</span> Identification</h3>
<div class="outline-text-3" id="text-2-6"> <div class="outline-text-3" id="text-2-6">
<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>
@ -805,8 +805,8 @@ Dt = zeros(12, 6);
<h2 id="org23d7e7b"><span class="section-number-2">3</span> Simple Model without any sensor</h2> <h2 id="org23d7e7b"><span class="section-number-2">3</span> Simple Model without any sensor</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-3">
</div> </div>
<div id="outline-container-org9366ba4" class="outline-3"> <div id="outline-container-org2ad9d50" class="outline-3">
<h3 id="org9366ba4"><span class="section-number-3">3.1</span> Simscape Model</h3> <h3 id="org2ad9d50"><span class="section-number-3">3.1</span> Simscape Model</h3>
<div class="outline-text-3" id="text-3-1"> <div class="outline-text-3" id="text-3-1">
<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>
@ -816,8 +816,8 @@ Dt = zeros(12, 6);
</div> </div>
<div id="outline-container-orgf4e4e80" class="outline-3"> <div id="outline-container-orgbc1f736" class="outline-3">
<h3 id="orgf4e4e80"><span class="section-number-3">3.2</span> Initialize the Stewart Platform</h3> <h3 id="orgbc1f736"><span class="section-number-3">3.2</span> Initialize the Stewart Platform</h3>
<div class="outline-text-3" id="text-3-2"> <div class="outline-text-3" id="text-3-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform(); <pre class="src src-matlab">stewart = initializeStewartPlatform();
@ -834,8 +834,8 @@ stewart = initializeStewartPose(stewart);
</div> </div>
</div> </div>
<div id="outline-container-org9b90cca" class="outline-3"> <div id="outline-container-org43f8fc6" class="outline-3">
<h3 id="org9b90cca"><span class="section-number-3">3.3</span> Identification</h3> <h3 id="org43f8fc6"><span class="section-number-3">3.3</span> Identification</h3>
<div class="outline-text-3" id="text-3-3"> <div class="outline-text-3" id="text-3-3">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stateorder = {... <pre class="src src-matlab">stateorder = {...
@ -1096,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-02-11 mar. 15:50</p> <p class="date">Created: 2020-02-11 mar. 17:51</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:50 --> <!-- 2020-02-11 mar. 17:52 -->
<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>
@ -248,7 +248,11 @@ for the JavaScript code in this tag.
</script> </script>
</head> </head>
<body> <body>
<div id="content"> <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 Platforms</h1> <h1 class="title">Stewart Platforms</h1>
<div id="table-of-contents"> <div id="table-of-contents">
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
@ -409,7 +413,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-02-11 mar. 15:50</p> <p class="date">Created: 2020-02-11 mar. 17:52</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:50 --> <!-- 2020-02-11 mar. 17:50 -->
<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>
@ -287,7 +287,7 @@ for the JavaScript code in this tag.
<li><a href="#org5a3ce80">3.3. Approximate solution of the Forward and Inverse Kinematic problem for small displacement using the Jacobian matrix</a></li> <li><a href="#org5a3ce80">3.3. Approximate solution of the Forward and Inverse Kinematic problem for small displacement using the Jacobian matrix</a></li>
<li><a href="#org86b4b35">3.4. Estimation of the range validity of the approximate inverse kinematics</a> <li><a href="#org86b4b35">3.4. Estimation of the range validity of the approximate inverse kinematics</a>
<ul> <ul>
<li><a href="#orgd52392b">3.4.1. Stewart architecture definition</a></li> <li><a href="#org8be231b">3.4.1. Stewart architecture definition</a></li>
<li><a href="#orgd83ccf3">3.4.2. Comparison for &ldquo;pure&rdquo; translations</a></li> <li><a href="#orgd83ccf3">3.4.2. Comparison for &ldquo;pure&rdquo; translations</a></li>
<li><a href="#org4871c83">3.4.3. Conclusion</a></li> <li><a href="#org4871c83">3.4.3. Conclusion</a></li>
</ul> </ul>
@ -296,7 +296,7 @@ for the JavaScript code in this tag.
</li> </li>
<li><a href="#org63255f9">4. Estimated required actuator stroke from specified platform mobility</a> <li><a href="#org63255f9">4. Estimated required actuator stroke from specified platform mobility</a>
<ul> <ul>
<li><a href="#org4bde983">4.1. Stewart architecture definition</a></li> <li><a href="#org4d97075">4.1. Stewart architecture definition</a></li>
<li><a href="#orgde50dd3">4.2. Wanted translations and rotations</a></li> <li><a href="#orgde50dd3">4.2. Wanted translations and rotations</a></li>
<li><a href="#org24e45ca">4.3. Needed stroke for &ldquo;pure&rdquo; rotations or translations</a></li> <li><a href="#org24e45ca">4.3. Needed stroke for &ldquo;pure&rdquo; rotations or translations</a></li>
<li><a href="#orgf6ba90c">4.4. Needed stroke for &ldquo;combined&rdquo; rotations or translations</a></li> <li><a href="#orgf6ba90c">4.4. Needed stroke for &ldquo;combined&rdquo; rotations or translations</a></li>
@ -304,7 +304,7 @@ for the JavaScript code in this tag.
</li> </li>
<li><a href="#orgbbbf7b3">5. Estimated platform mobility from specified actuator stroke</a> <li><a href="#orgbbbf7b3">5. Estimated platform mobility from specified actuator stroke</a>
<ul> <ul>
<li><a href="#orgf4b310d">5.1. Stewart architecture definition</a></li> <li><a href="#orgc3c7024">5.1. Stewart architecture definition</a></li>
<li><a href="#org2c6819e">5.2. Pure translations</a></li> <li><a href="#org2c6819e">5.2. Pure translations</a></li>
</ul> </ul>
</li> </li>
@ -312,8 +312,8 @@ for the JavaScript code in this tag.
<ul> <ul>
<li><a href="#org26e8b28">6.1. <code>computeJacobian</code>: Compute the Jacobian Matrix</a> <li><a href="#org26e8b28">6.1. <code>computeJacobian</code>: Compute the Jacobian Matrix</a>
<ul> <ul>
<li><a href="#org2aa5728">Function description</a></li> <li><a href="#orgdfb3b70">Function description</a></li>
<li><a href="#orgdbebf2c">Check the <code>stewart</code> structure elements</a></li> <li><a href="#org14aeafc">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org0cd57b5">Compute Jacobian Matrix</a></li> <li><a href="#org0cd57b5">Compute Jacobian Matrix</a></li>
<li><a href="#orge21dcfc">Compute Stiffness Matrix</a></li> <li><a href="#orge21dcfc">Compute Stiffness Matrix</a></li>
<li><a href="#orgae76071">Compute Compliance Matrix</a></li> <li><a href="#orgae76071">Compute Compliance Matrix</a></li>
@ -323,17 +323,17 @@ for the JavaScript code in this tag.
<li><a href="#orgb82066f">6.2. <code>inverseKinematics</code>: Compute Inverse Kinematics</a> <li><a href="#orgb82066f">6.2. <code>inverseKinematics</code>: Compute Inverse Kinematics</a>
<ul> <ul>
<li><a href="#org89930b7">Theory</a></li> <li><a href="#org89930b7">Theory</a></li>
<li><a href="#org97cfff6">Function description</a></li> <li><a href="#orgfe68a5b">Function description</a></li>
<li><a href="#org61cf152">Optional Parameters</a></li> <li><a href="#org7a9a427">Optional Parameters</a></li>
<li><a href="#org9318276">Check the <code>stewart</code> structure elements</a></li> <li><a href="#org27c8a3f">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org0d64c23">Compute</a></li> <li><a href="#org0d64c23">Compute</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgf5d8f0b">6.3. <code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</a> <li><a href="#orgf5d8f0b">6.3. <code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</a>
<ul> <ul>
<li><a href="#org8b2e069">Function description</a></li> <li><a href="#org1a620fe">Function description</a></li>
<li><a href="#org8029a3d">Optional Parameters</a></li> <li><a href="#org7be1dc4">Optional Parameters</a></li>
<li><a href="#orgca4f1e5">Check the <code>stewart</code> structure elements</a></li> <li><a href="#org9c3aa33">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orge5ade24">Computation</a></li> <li><a href="#orge5ade24">Computation</a></li>
</ul> </ul>
</li> </li>
@ -666,8 +666,8 @@ This will also gives us the range for which the approximate forward kinematic is
</p> </p>
</div> </div>
<div id="outline-container-orgd52392b" class="outline-4"> <div id="outline-container-org8be231b" class="outline-4">
<h4 id="orgd52392b"><span class="section-number-4">3.4.1</span> Stewart architecture definition</h4> <h4 id="org8be231b"><span class="section-number-4">3.4.1</span> Stewart architecture definition</h4>
<div class="outline-text-4" id="text-3-4-1"> <div class="outline-text-4" id="text-3-4-1">
<p> <p>
We first define some general Stewart architecture. We first define some general Stewart architecture.
@ -753,8 +753,8 @@ 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-org4bde983" class="outline-3"> <div id="outline-container-org4d97075" class="outline-3">
<h3 id="org4bde983"><span class="section-number-3">4.1</span> Stewart architecture definition</h3> <h3 id="org4d97075"><span class="section-number-3">4.1</span> Stewart architecture definition</h3>
<div class="outline-text-3" id="text-4-1"> <div class="outline-text-3" id="text-4-1">
<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.
@ -1161,8 +1161,8 @@ As explained in section <a href="#orgca82bb8">3</a>, the forward kinematic probl
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-orgf4b310d" class="outline-3"> <div id="outline-container-orgc3c7024" class="outline-3">
<h3 id="orgf4b310d"><span class="section-number-3">5.1</span> Stewart architecture definition</h3> <h3 id="orgc3c7024"><span class="section-number-3">5.1</span> Stewart architecture definition</h3>
<div class="outline-text-3" id="text-5-1"> <div class="outline-text-3" id="text-5-1">
<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.
@ -1289,13 +1289,13 @@ We can also approximate the mobility by a sphere with a radius equal to the mini
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/computeJacobian.m">here</a>. This Matlab function is accessible <a href="../src/computeJacobian.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-org2aa5728" class="outline-4"> <div id="outline-container-orgdfb3b70" class="outline-4">
<h4 id="org2aa5728">Function description</h4> <h4 id="orgdfb3b70">Function description</h4>
<div class="outline-text-4" id="text-org2aa5728"> <div class="outline-text-4" id="text-orgdfb3b70">
<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>
@ -1318,9 +1318,9 @@ This Matlab function is accessible <a href="src/computeJacobian.m">here</a>.
</div> </div>
</div> </div>
<div id="outline-container-orgdbebf2c" class="outline-4"> <div id="outline-container-org14aeafc" class="outline-4">
<h4 id="orgdbebf2c">Check the <code>stewart</code> structure elements</h4> <h4 id="org14aeafc">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-orgdbebf2c"> <div class="outline-text-4" id="text-org14aeafc">
<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;
@ -1388,7 +1388,7 @@ stewart.kinematics.C = C;
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/inverseKinematics.m">here</a>. This Matlab function is accessible <a href="../src/inverseKinematics.m">here</a>.
</p> </p>
</div> </div>
@ -1428,9 +1428,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div> </div>
</div> </div>
<div id="outline-container-org97cfff6" class="outline-4"> <div id="outline-container-orgfe68a5b" class="outline-4">
<h4 id="org97cfff6">Function description</h4> <h4 id="orgfe68a5b">Function description</h4>
<div class="outline-text-4" id="text-org97cfff6"> <div class="outline-text-4" id="text-orgfe68a5b">
<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>
@ -1454,9 +1454,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div> </div>
</div> </div>
<div id="outline-container-org61cf152" class="outline-4"> <div id="outline-container-org7a9a427" class="outline-4">
<h4 id="org61cf152">Optional Parameters</h4> <h4 id="org7a9a427">Optional Parameters</h4>
<div class="outline-text-4" id="text-org61cf152"> <div class="outline-text-4" id="text-org7a9a427">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -1468,9 +1468,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div> </div>
</div> </div>
<div id="outline-container-org9318276" class="outline-4"> <div id="outline-container-org27c8a3f" class="outline-4">
<h4 id="org9318276">Check the <code>stewart</code> structure elements</h4> <h4 id="org27c8a3f">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org9318276"> <div class="outline-text-4" id="text-org27c8a3f">
<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;
@ -1510,13 +1510,13 @@ l = stewart.geometry.l;
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/forwardKinematicsApprox.m">here</a>. This Matlab function is accessible <a href="../src/forwardKinematicsApprox.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-org8b2e069" class="outline-4"> <div id="outline-container-org1a620fe" class="outline-4">
<h4 id="org8b2e069">Function description</h4> <h4 id="org1a620fe">Function description</h4>
<div class="outline-text-4" id="text-org8b2e069"> <div class="outline-text-4" id="text-org1a620fe">
<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>
@ -1538,9 +1538,9 @@ This Matlab function is accessible <a href="src/forwardKinematicsApprox.m">here<
</div> </div>
</div> </div>
<div id="outline-container-org8029a3d" class="outline-4"> <div id="outline-container-org7be1dc4" class="outline-4">
<h4 id="org8029a3d">Optional Parameters</h4> <h4 id="org7be1dc4">Optional Parameters</h4>
<div class="outline-text-4" id="text-org8029a3d"> <div class="outline-text-4" id="text-org7be1dc4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -1551,9 +1551,9 @@ This Matlab function is accessible <a href="src/forwardKinematicsApprox.m">here<
</div> </div>
</div> </div>
<div id="outline-container-orgca4f1e5" class="outline-4"> <div id="outline-container-org9c3aa33" class="outline-4">
<h4 id="orgca4f1e5">Check the <code>stewart</code> structure elements</h4> <h4 id="org9c3aa33">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-orgca4f1e5"> <div class="outline-text-4" id="text-org9c3aa33">
<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;
@ -1616,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:50</p> <p class="date">Created: 2020-02-11 mar. 17:50</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:50 --> <!-- 2020-02-11 mar. 17:51 -->
<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>
@ -281,14 +281,14 @@ for the JavaScript code in this tag.
<ul> <ul>
<li><a href="#org4bdfc33">6.1. Z-Axis Geophone</a> <li><a href="#org4bdfc33">6.1. Z-Axis Geophone</a>
<ul> <ul>
<li><a href="#org01abf4c">6.1.1. Working Principle</a></li> <li><a href="#org59ef364">6.1.1. Working Principle</a></li>
<li><a href="#org5da3f93">6.1.2. Initialization function</a></li> <li><a href="#orgb3509cd">6.1.2. Initialization function</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org99786f1">6.2. Z-Axis Accelerometer</a> <li><a href="#org99786f1">6.2. Z-Axis Accelerometer</a>
<ul> <ul>
<li><a href="#org01c45ef">6.2.1. Working Principle</a></li> <li><a href="#orgf6e6126">6.2.1. Working Principle</a></li>
<li><a href="#orga80b649">6.2.2. Initialization function</a></li> <li><a href="#org7b9c8ed">6.2.2. Initialization function</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -513,8 +513,8 @@ Both inertial sensors are described bellow.
<h3 id="org4bdfc33"><span class="section-number-3">6.1</span> Z-Axis Geophone</h3> <h3 id="org4bdfc33"><span class="section-number-3">6.1</span> Z-Axis Geophone</h3>
<div class="outline-text-3" id="text-6-1"> <div class="outline-text-3" id="text-6-1">
</div> </div>
<div id="outline-container-org01abf4c" class="outline-4"> <div id="outline-container-org59ef364" class="outline-4">
<h4 id="org01abf4c"><span class="section-number-4">6.1.1</span> Working Principle</h4> <h4 id="org59ef364"><span class="section-number-4">6.1.1</span> Working Principle</h4>
<div class="outline-text-4" id="text-6-1-1"> <div class="outline-text-4" id="text-6-1-1">
<p> <p>
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}\): 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}\):
@ -548,8 +548,8 @@ We generally want to have the smallest resonant frequency \(\omega_0\) to measur
</div> </div>
</div> </div>
<div id="outline-container-org5da3f93" class="outline-4"> <div id="outline-container-orgb3509cd" class="outline-4">
<h4 id="org5da3f93"><span class="section-number-4">6.1.2</span> Initialization function</h4> <h4 id="orgb3509cd"><span class="section-number-4">6.1.2</span> Initialization function</h4>
<div class="outline-text-4" id="text-6-1-2"> <div class="outline-text-4" id="text-6-1-2">
<p> <p>
<a id="orgd31bda9"></a> <a id="orgd31bda9"></a>
@ -588,8 +588,8 @@ This Matlab function is accessible <a href="../src/initializeZAxisGeophone.m">he
<h3 id="org99786f1"><span class="section-number-3">6.2</span> Z-Axis Accelerometer</h3> <h3 id="org99786f1"><span class="section-number-3">6.2</span> Z-Axis Accelerometer</h3>
<div class="outline-text-3" id="text-6-2"> <div class="outline-text-3" id="text-6-2">
</div> </div>
<div id="outline-container-org01c45ef" class="outline-4"> <div id="outline-container-orgf6e6126" class="outline-4">
<h4 id="org01c45ef"><span class="section-number-4">6.2.1</span> Working Principle</h4> <h4 id="orgf6e6126"><span class="section-number-4">6.2.1</span> Working Principle</h4>
<div class="outline-text-4" id="text-6-2-1"> <div class="outline-text-4" id="text-6-2-1">
<p> <p>
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\): 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\):
@ -627,8 +627,8 @@ Note that there is trade-off between:
</div> </div>
</div> </div>
<div id="outline-container-orga80b649" class="outline-4"> <div id="outline-container-org7b9c8ed" class="outline-4">
<h4 id="orga80b649"><span class="section-number-4">6.2.2</span> Initialization function</h4> <h4 id="org7b9c8ed"><span class="section-number-4">6.2.2</span> Initialization function</h4>
<div class="outline-text-4" id="text-6-2-2"> <div class="outline-text-4" id="text-6-2-2">
<p> <p>
<a id="orge91f65f"></a> <a id="orge91f65f"></a>
@ -641,7 +641,7 @@ This Matlab function is accessible <a href="../src/initializeZAxisAccelerometer.
<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">[accelerometer]</span> = <span class="org-function-name">initializeZAxisAccelerometer</span>(<span class="org-variable-name">args</span>) <pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[accelerometer]</span> = <span class="org-function-name">initializeZAxisAccelerometer</span>(<span class="org-variable-name">args</span>)
arguments arguments
args.mass (1,1) double {mustBeNumeric, mustBePositive} = 1e<span class="org-type">-</span>3 <span class="org-comment">% [kg]</span> args.mass (1,1) double {mustBeNumeric, mustBePositive} = 5e<span class="org-type">-</span>3 <span class="org-comment">% [kg]</span>
args.freq (1,1) double {mustBeNumeric, mustBePositive} = 5e3 <span class="org-comment">% [Hz]</span> args.freq (1,1) double {mustBeNumeric, mustBePositive} = 5e3 <span class="org-comment">% [Hz]</span>
<span class="org-keyword">end</span> <span class="org-keyword">end</span>
@ -669,7 +669,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-02-11 mar. 15:50</p> <p class="date">Created: 2020-02-11 mar. 17:51</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:50 --> <!-- 2020-02-11 mar. 17:52 -->
<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>
@ -321,7 +321,7 @@ The project also permits to automatically add defined folder to the path when th
</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:50</p> <p class="date">Created: 2020-02-11 mar. 17:52</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:50 --> <!-- 2020-02-11 mar. 17:52 -->
<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 - Static Analysis</title> <title>Stewart Platform - Static Analysis</title>
@ -317,7 +317,7 @@ Thus, the system is uncoupled if \(G\) and \(K\) are diagonal.
</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:50</p> <p class="date">Created: 2020-02-11 mar. 17:52</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:50 --> <!-- 2020-02-11 mar. 17:52 -->
<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 - Definition of the Architecture</title> <title>Stewart Platform - Definition of the Architecture</title>
@ -297,85 +297,85 @@ for the JavaScript code in this tag.
<ul> <ul>
<li><a href="#orgd89f0e1">5.1. <code>initializeStewartPlatform</code>: Initialize the Stewart Platform structure</a> <li><a href="#orgd89f0e1">5.1. <code>initializeStewartPlatform</code>: Initialize the Stewart Platform structure</a>
<ul> <ul>
<li><a href="#org076d07b">Documentation</a></li> <li><a href="#org9b53b28">Documentation</a></li>
<li><a href="#org1612620">Function description</a></li> <li><a href="#org43e5d7b">Function description</a></li>
<li><a href="#orgd567fc1">Initialize the Stewart structure</a></li> <li><a href="#orgd567fc1">Initialize the Stewart structure</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgb11894c">5.2. <code>initializeFramesPositions</code>: Initialize the positions of frames {A}, {B}, {F} and {M}</a> <li><a href="#orgb11894c">5.2. <code>initializeFramesPositions</code>: Initialize the positions of frames {A}, {B}, {F} and {M}</a>
<ul> <ul>
<li><a href="#orgf137e52">Documentation</a></li> <li><a href="#org78163aa">Documentation</a></li>
<li><a href="#orgef24367">Function description</a></li> <li><a href="#org58e74af">Function description</a></li>
<li><a href="#org8dbfacd">Optional Parameters</a></li> <li><a href="#org75ad918">Optional Parameters</a></li>
<li><a href="#org458592e">Compute the position of each frame</a></li> <li><a href="#org458592e">Compute the position of each frame</a></li>
<li><a href="#orga9b891a">Populate the <code>stewart</code> structure</a></li> <li><a href="#org29fd7cf">Populate the <code>stewart</code> structure</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org9057387">5.3. <code>generateGeneralConfiguration</code>: Generate a Very General Configuration</a> <li><a href="#org9057387">5.3. <code>generateGeneralConfiguration</code>: Generate a Very General Configuration</a>
<ul> <ul>
<li><a href="#org6686470">Documentation</a></li> <li><a href="#org304afd4">Documentation</a></li>
<li><a href="#org8e0c109">Function description</a></li> <li><a href="#orgdbbe92d">Function description</a></li>
<li><a href="#orge635bdc">Optional Parameters</a></li> <li><a href="#orgc9aa5c6">Optional Parameters</a></li>
<li><a href="#org232e4c2">Compute the pose</a></li> <li><a href="#org232e4c2">Compute the pose</a></li>
<li><a href="#orge19481b">Populate the <code>stewart</code> structure</a></li> <li><a href="#org1af60d1">Populate the <code>stewart</code> structure</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org861f6de">5.4. <code>computeJointsPose</code>: Compute the Pose of the Joints</a> <li><a href="#org861f6de">5.4. <code>computeJointsPose</code>: Compute the Pose of the Joints</a>
<ul> <ul>
<li><a href="#orgd00ef90">Documentation</a></li> <li><a href="#orgc791fb6">Documentation</a></li>
<li><a href="#orga8f705b">Function description</a></li> <li><a href="#org07a9faa">Function description</a></li>
<li><a href="#org4889a22">Check the <code>stewart</code> structure elements</a></li> <li><a href="#org1873f06">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org52b0d4c">Compute the position of the Joints</a></li> <li><a href="#org52b0d4c">Compute the position of the Joints</a></li>
<li><a href="#org4b76b0f">Compute the strut length and orientation</a></li> <li><a href="#org4b76b0f">Compute the strut length and orientation</a></li>
<li><a href="#orgd621d5e">Compute the orientation of the Joints</a></li> <li><a href="#orgd621d5e">Compute the orientation of the Joints</a></li>
<li><a href="#orgf383464">Populate the <code>stewart</code> structure</a></li> <li><a href="#orgbe4fa22">Populate the <code>stewart</code> structure</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org329bef9">5.5. <code>initializeStewartPose</code>: Determine the initial stroke in each leg to have the wanted pose</a> <li><a href="#org329bef9">5.5. <code>initializeStewartPose</code>: Determine the initial stroke in each leg to have the wanted pose</a>
<ul> <ul>
<li><a href="#orgfa57533">Function description</a></li> <li><a href="#orga659915">Function description</a></li>
<li><a href="#orge534e6f">Optional Parameters</a></li> <li><a href="#orge99ec9f">Optional Parameters</a></li>
<li><a href="#org3d3ef62">Use the Inverse Kinematic function</a></li> <li><a href="#org3d3ef62">Use the Inverse Kinematic function</a></li>
<li><a href="#org5e7e71c">Populate the <code>stewart</code> structure</a></li> <li><a href="#org6a8b77e">Populate the <code>stewart</code> structure</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org6ff5b31">5.6. <code>initializeCylindricalPlatforms</code>: Initialize the geometry of the Fixed and Mobile Platforms</a> <li><a href="#org6ff5b31">5.6. <code>initializeCylindricalPlatforms</code>: Initialize the geometry of the Fixed and Mobile Platforms</a>
<ul> <ul>
<li><a href="#org11374c9">Function description</a></li> <li><a href="#org70b7362">Function description</a></li>
<li><a href="#org56dc51c">Optional Parameters</a></li> <li><a href="#orgee6ed82">Optional Parameters</a></li>
<li><a href="#org25a390a">Compute the Inertia matrices of platforms</a></li> <li><a href="#org25a390a">Compute the Inertia matrices of platforms</a></li>
<li><a href="#org120ea12">Populate the <code>stewart</code> structure</a></li> <li><a href="#org19d03f1">Populate the <code>stewart</code> structure</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org60aa215">5.7. <code>initializeCylindricalStruts</code>: Define the inertia of cylindrical struts</a> <li><a href="#org60aa215">5.7. <code>initializeCylindricalStruts</code>: Define the inertia of cylindrical struts</a>
<ul> <ul>
<li><a href="#org7a6774e">Function description</a></li> <li><a href="#org686a076">Function description</a></li>
<li><a href="#orgccd9ddc">Optional Parameters</a></li> <li><a href="#orgda13332">Optional Parameters</a></li>
<li><a href="#orgc056498">Compute the properties of the cylindrical struts</a></li> <li><a href="#orgc056498">Compute the properties of the cylindrical struts</a></li>
<li><a href="#orgbe49c20">Populate the <code>stewart</code> structure</a></li> <li><a href="#org601053b">Populate the <code>stewart</code> structure</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org3ad0cd1">5.8. <code>initializeStrutDynamics</code>: Add Stiffness and Damping properties of each strut</a> <li><a href="#org3ad0cd1">5.8. <code>initializeStrutDynamics</code>: Add Stiffness and Damping properties of each strut</a>
<ul> <ul>
<li><a href="#org063be5b">Documentation</a></li> <li><a href="#orgdb94cd8">Documentation</a></li>
<li><a href="#orgfc83159">Function description</a></li> <li><a href="#org38928ae">Function description</a></li>
<li><a href="#org8756943">Optional Parameters</a></li> <li><a href="#org5d465fb">Optional Parameters</a></li>
<li><a href="#orgadb8327">Add Stiffness and Damping properties of each strut</a></li> <li><a href="#orgadb8327">Add Stiffness and Damping properties of each strut</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgd8d403e">5.9. <code>initializeAmplifiedStrutDynamics</code>: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator</a> <li><a href="#orgd8d403e">5.9. <code>initializeAmplifiedStrutDynamics</code>: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator</a>
<ul> <ul>
<li><a href="#org11b907a">Documentation</a></li> <li><a href="#org7e0b516">Documentation</a></li>
<li><a href="#orgc9ac7ad">Function description</a></li> <li><a href="#orgd36c473">Function description</a></li>
<li><a href="#org2508e19">Optional Parameters</a></li> <li><a href="#org3cae5a2">Optional Parameters</a></li>
<li><a href="#org9b435e8">Compute the total stiffness and damping</a></li> <li><a href="#org9b435e8">Compute the total stiffness and damping</a></li>
<li><a href="#org933fa09">Populate the <code>stewart</code> structure</a></li> <li><a href="#org6cc3cd5">Populate the <code>stewart</code> structure</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgeb6173a">5.10. <code>initializeJointDynamics</code>: Add Stiffness and Damping properties for spherical joints</a> <li><a href="#orgeb6173a">5.10. <code>initializeJointDynamics</code>: Add Stiffness and Damping properties for spherical joints</a>
<ul> <ul>
<li><a href="#orgea4c71f">Function description</a></li> <li><a href="#org8a14eeb">Function description</a></li>
<li><a href="#orgbb42633">Optional Parameters</a></li> <li><a href="#orgcfba56a">Optional Parameters</a></li>
<li><a href="#orgc6d4183">Add Actuator Type</a></li> <li><a href="#orgc6d4183">Add Actuator Type</a></li>
<li><a href="#orgc0e613c">Add Stiffness and Damping in Translation of each strut</a></li> <li><a href="#orgc0e613c">Add Stiffness and Damping in Translation of each strut</a></li>
<li><a href="#org04698fc">Add Stiffness and Damping in Rotation of each strut</a></li> <li><a href="#org04698fc">Add Stiffness and Damping in Rotation of each strut</a></li>
@ -383,17 +383,17 @@ for the JavaScript code in this tag.
</li> </li>
<li><a href="#orgea07e0e">5.11. <code>initializeInertialSensor</code>: Initialize the inertial sensor in each strut</a> <li><a href="#orgea07e0e">5.11. <code>initializeInertialSensor</code>: Initialize the inertial sensor in each strut</a>
<ul> <ul>
<li><a href="#org2462fa5">Function description</a></li> <li><a href="#orgd686f52">Function description</a></li>
<li><a href="#orgcc6ded4">Optional Parameters</a></li> <li><a href="#org57e140f">Optional Parameters</a></li>
<li><a href="#org463075d">Compute the properties of the sensor</a></li> <li><a href="#org463075d">Compute the properties of the sensor</a></li>
<li><a href="#org37e6016">Populate the <code>stewart</code> structure</a></li> <li><a href="#org31b0fc0">Populate the <code>stewart</code> structure</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org5266e9d">5.12. <code>displayArchitecture</code>: 3D plot of the Stewart platform architecture</a> <li><a href="#org5266e9d">5.12. <code>displayArchitecture</code>: 3D plot of the Stewart platform architecture</a>
<ul> <ul>
<li><a href="#orgdd7c996">Function description</a></li> <li><a href="#org51076d4">Function description</a></li>
<li><a href="#org99b2163">Optional Parameters</a></li> <li><a href="#org6a57a47">Optional Parameters</a></li>
<li><a href="#org9e5d50c">Check the <code>stewart</code> structure elements</a></li> <li><a href="#org7bc221e">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orgc088b18">Figure Creation, Frames and Homogeneous transformations</a></li> <li><a href="#orgc088b18">Figure Creation, Frames and Homogeneous transformations</a></li>
<li><a href="#orgc25a979">Fixed Base elements</a></li> <li><a href="#orgc25a979">Fixed Base elements</a></li>
<li><a href="#org8417772">Mobile Platform elements</a></li> <li><a href="#org8417772">Mobile Platform elements</a></li>
@ -838,15 +838,15 @@ view([0 <span class="org-type">-</span>1 0]);
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/initializeStewartPlatform.m">here</a>. This Matlab function is accessible <a href="../src/initializeStewartPlatform.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-org076d07b" class="outline-4"> <div id="outline-container-org9b53b28" class="outline-4">
<h4 id="org076d07b">Documentation</h4> <h4 id="org9b53b28">Documentation</h4>
<div class="outline-text-4" id="text-org076d07b"> <div class="outline-text-4" id="text-org9b53b28">
<div id="org7d10bbd" class="figure"> <div id="org31aa0ac" class="figure">
<p><img src="figs/stewart-frames-position.png" alt="stewart-frames-position.png" /> <p><img src="figs/stewart-frames-position.png" alt="stewart-frames-position.png" />
</p> </p>
<p><span class="figure-number">Figure 7: </span>Definition of the position of the frames</p> <p><span class="figure-number">Figure 7: </span>Definition of the position of the frames</p>
@ -854,9 +854,9 @@ This Matlab function is accessible <a href="src/initializeStewartPlatform.m">her
</div> </div>
</div> </div>
<div id="outline-container-org1612620" class="outline-4"> <div id="outline-container-org43e5d7b" class="outline-4">
<h4 id="org1612620">Function description</h4> <h4 id="org43e5d7b">Function description</h4>
<div class="outline-text-4" id="text-org1612620"> <div class="outline-text-4" id="text-org43e5d7b">
<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">initializeStewartPlatform</span>() <pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[stewart]</span> = <span class="org-function-name">initializeStewartPlatform</span>()
<span class="org-comment">% initializeStewartPlatform - Initialize the stewart structure</span> <span class="org-comment">% initializeStewartPlatform - Initialize the stewart structure</span>
@ -911,15 +911,15 @@ stewart.kinematics = struct();
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/initializeFramesPositions.m">here</a>. This Matlab function is accessible <a href="../src/initializeFramesPositions.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-orgf137e52" class="outline-4"> <div id="outline-container-org78163aa" class="outline-4">
<h4 id="orgf137e52">Documentation</h4> <h4 id="org78163aa">Documentation</h4>
<div class="outline-text-4" id="text-orgf137e52"> <div class="outline-text-4" id="text-org78163aa">
<div id="org6fe2446" class="figure"> <div id="org405cd8e" class="figure">
<p><img src="figs/stewart-frames-position.png" alt="stewart-frames-position.png" /> <p><img src="figs/stewart-frames-position.png" alt="stewart-frames-position.png" />
</p> </p>
<p><span class="figure-number">Figure 8: </span>Definition of the position of the frames</p> <p><span class="figure-number">Figure 8: </span>Definition of the position of the frames</p>
@ -927,9 +927,9 @@ This Matlab function is accessible <a href="src/initializeFramesPositions.m">her
</div> </div>
</div> </div>
<div id="outline-container-orgef24367" class="outline-4"> <div id="outline-container-org58e74af" class="outline-4">
<h4 id="orgef24367">Function description</h4> <h4 id="org58e74af">Function description</h4>
<div class="outline-text-4" id="text-orgef24367"> <div class="outline-text-4" id="text-org58e74af">
<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">initializeFramesPositions</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">initializeFramesPositions</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% initializeFramesPositions - Initialize the positions of frames {A}, {B}, {F} and {M}</span> <span class="org-comment">% initializeFramesPositions - Initialize the positions of frames {A}, {B}, {F} and {M}</span>
@ -952,9 +952,9 @@ This Matlab function is accessible <a href="src/initializeFramesPositions.m">her
</div> </div>
</div> </div>
<div id="outline-container-org8dbfacd" class="outline-4"> <div id="outline-container-org75ad918" class="outline-4">
<h4 id="org8dbfacd">Optional Parameters</h4> <h4 id="org75ad918">Optional Parameters</h4>
<div class="outline-text-4" id="text-org8dbfacd"> <div class="outline-text-4" id="text-org75ad918">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -982,9 +982,9 @@ FO_A = MO_B <span class="org-type">+</span> FO_M; <span class="org-comment">% Po
</div> </div>
</div> </div>
<div id="outline-container-orga9b891a" class="outline-4"> <div id="outline-container-org29fd7cf" class="outline-4">
<h4 id="orga9b891a">Populate the <code>stewart</code> structure</h4> <h4 id="org29fd7cf">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-orga9b891a"> <div class="outline-text-4" id="text-org29fd7cf">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart.geometry.H = H; <pre class="src src-matlab">stewart.geometry.H = H;
stewart.geometry.FO_M = FO_M; stewart.geometry.FO_M = FO_M;
@ -1004,13 +1004,13 @@ stewart.platform_F.FO_A = FO_A;
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/generateGeneralConfiguration.m">here</a>. This Matlab function is accessible <a href="../src/generateGeneralConfiguration.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-org6686470" class="outline-4"> <div id="outline-container-org304afd4" class="outline-4">
<h4 id="org6686470">Documentation</h4> <h4 id="org304afd4">Documentation</h4>
<div class="outline-text-4" id="text-org6686470"> <div class="outline-text-4" id="text-org304afd4">
<p> <p>
Joints are positions on a circle centered with the Z axis of {F} and {M} and at a chosen distance from {F} and {M}. Joints are positions on a circle centered with the Z axis of {F} and {M} and at a chosen distance from {F} and {M}.
The radius of the circles can be chosen as well as the angles where the joints are located (see Figure <a href="#org4c354b6">9</a>). The radius of the circles can be chosen as well as the angles where the joints are located (see Figure <a href="#org4c354b6">9</a>).
@ -1025,9 +1025,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
</div> </div>
</div> </div>
<div id="outline-container-org8e0c109" class="outline-4"> <div id="outline-container-orgdbbe92d" class="outline-4">
<h4 id="org8e0c109">Function description</h4> <h4 id="orgdbbe92d">Function description</h4>
<div class="outline-text-4" id="text-org8e0c109"> <div class="outline-text-4" id="text-orgdbbe92d">
<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">generateGeneralConfiguration</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">generateGeneralConfiguration</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% generateGeneralConfiguration - Generate a Very General Configuration</span> <span class="org-comment">% generateGeneralConfiguration - Generate a Very General Configuration</span>
@ -1052,9 +1052,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
</div> </div>
</div> </div>
<div id="outline-container-orge635bdc" class="outline-4"> <div id="outline-container-orgc9aa5c6" class="outline-4">
<h4 id="orge635bdc">Optional Parameters</h4> <h4 id="orgc9aa5c6">Optional Parameters</h4>
<div class="outline-text-4" id="text-orge635bdc"> <div class="outline-text-4" id="text-orgc9aa5c6">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -1089,9 +1089,9 @@ Mb = zeros(3,6);
</div> </div>
</div> </div>
<div id="outline-container-orge19481b" class="outline-4"> <div id="outline-container-org1af60d1" class="outline-4">
<h4 id="orge19481b">Populate the <code>stewart</code> structure</h4> <h4 id="org1af60d1">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-orge19481b"> <div class="outline-text-4" id="text-org1af60d1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart.platform_F.Fa = Fa; <pre class="src src-matlab">stewart.platform_F.Fa = Fa;
stewart.platform_M.Mb = Mb; stewart.platform_M.Mb = Mb;
@ -1109,13 +1109,13 @@ stewart.platform_M.Mb = Mb;
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/computeJointsPose.m">here</a>. This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-orgd00ef90" class="outline-4"> <div id="outline-container-orgc791fb6" class="outline-4">
<h4 id="orgd00ef90">Documentation</h4> <h4 id="orgc791fb6">Documentation</h4>
<div class="outline-text-4" id="text-orgd00ef90"> <div class="outline-text-4" id="text-orgc791fb6">
<div id="org8ffb841" class="figure"> <div id="org8ffb841" class="figure">
<p><img src="figs/stewart-struts.png" alt="stewart-struts.png" /> <p><img src="figs/stewart-struts.png" alt="stewart-struts.png" />
@ -1125,9 +1125,9 @@ This Matlab function is accessible <a href="src/computeJointsPose.m">here</a>.
</div> </div>
</div> </div>
<div id="outline-container-orga8f705b" class="outline-4"> <div id="outline-container-org07a9faa" class="outline-4">
<h4 id="orga8f705b">Function description</h4> <h4 id="org07a9faa">Function description</h4>
<div class="outline-text-4" id="text-orga8f705b"> <div class="outline-text-4" id="text-org07a9faa">
<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">computeJointsPose</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">computeJointsPose</span>(<span class="org-variable-name">stewart</span>)
<span class="org-comment">% computeJointsPose -</span> <span class="org-comment">% computeJointsPose -</span>
@ -1160,9 +1160,9 @@ This Matlab function is accessible <a href="src/computeJointsPose.m">here</a>.
</div> </div>
</div> </div>
<div id="outline-container-org4889a22" class="outline-4"> <div id="outline-container-org1873f06" class="outline-4">
<h4 id="org4889a22">Check the <code>stewart</code> structure elements</h4> <h4 id="org1873f06">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org4889a22"> <div class="outline-text-4" id="text-org1873f06">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.platform_F, <span class="org-string">'Fa'</span>), <span class="org-string">'stewart.platform_F should have attribute Fa'</span>) <pre class="src src-matlab">assert(isfield(stewart.platform_F, <span class="org-string">'Fa'</span>), <span class="org-string">'stewart.platform_F should have attribute Fa'</span>)
Fa = stewart.platform_F.Fa; Fa = stewart.platform_F.Fa;
@ -1233,9 +1233,9 @@ MRb = zeros(3,3,6);
</div> </div>
</div> </div>
<div id="outline-container-orgf383464" class="outline-4"> <div id="outline-container-orgbe4fa22" class="outline-4">
<h4 id="orgf383464">Populate the <code>stewart</code> structure</h4> <h4 id="orgbe4fa22">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-orgf383464"> <div class="outline-text-4" id="text-orgbe4fa22">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart.geometry.Aa = Aa; <pre class="src src-matlab">stewart.geometry.Aa = Aa;
stewart.geometry.Ab = Ab; stewart.geometry.Ab = Ab;
@ -1264,13 +1264,13 @@ stewart.platform_M.MRb = MRb;
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/initializeStewartPose.m">here</a>. This Matlab function is accessible <a href="../src/initializeStewartPose.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-orgfa57533" class="outline-4"> <div id="outline-container-orga659915" class="outline-4">
<h4 id="orgfa57533">Function description</h4> <h4 id="orga659915">Function description</h4>
<div class="outline-text-4" id="text-orgfa57533"> <div class="outline-text-4" id="text-orga659915">
<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">initializeStewartPose</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">initializeStewartPose</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% initializeStewartPose - Determine the initial stroke in each leg to have the wanted pose</span> <span class="org-comment">% initializeStewartPose - Determine the initial stroke in each leg to have the wanted pose</span>
@ -1294,9 +1294,9 @@ This Matlab function is accessible <a href="src/initializeStewartPose.m">here</a
</div> </div>
</div> </div>
<div id="outline-container-orge534e6f" class="outline-4"> <div id="outline-container-orge99ec9f" class="outline-4">
<h4 id="orge534e6f">Optional Parameters</h4> <h4 id="orge99ec9f">Optional Parameters</h4>
<div class="outline-text-4" id="text-orge534e6f"> <div class="outline-text-4" id="text-orge99ec9f">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -1318,9 +1318,9 @@ This Matlab function is accessible <a href="src/initializeStewartPose.m">here</a
</div> </div>
</div> </div>
<div id="outline-container-org5e7e71c" class="outline-4"> <div id="outline-container-org6a8b77e" class="outline-4">
<h4 id="org5e7e71c">Populate the <code>stewart</code> structure</h4> <h4 id="org6a8b77e">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org5e7e71c"> <div class="outline-text-4" id="text-org6a8b77e">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart.actuators.Leq = dLi; <pre class="src src-matlab">stewart.actuators.Leq = dLi;
</pre> </pre>
@ -1337,13 +1337,13 @@ This Matlab function is accessible <a href="src/initializeStewartPose.m">here</a
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/initializeCylindricalPlatforms.m">here</a>. This Matlab function is accessible <a href="../src/initializeCylindricalPlatforms.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-org11374c9" class="outline-4"> <div id="outline-container-org70b7362" class="outline-4">
<h4 id="org11374c9">Function description</h4> <h4 id="org70b7362">Function description</h4>
<div class="outline-text-4" id="text-org11374c9"> <div class="outline-text-4" id="text-org70b7362">
<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">initializeCylindricalPlatforms</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">initializeCylindricalPlatforms</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% initializeCylindricalPlatforms - Initialize the geometry of the Fixed and Mobile Platforms</span> <span class="org-comment">% initializeCylindricalPlatforms - Initialize the geometry of the Fixed and Mobile Platforms</span>
@ -1377,9 +1377,9 @@ This Matlab function is accessible <a href="src/initializeCylindricalPlatforms.m
</div> </div>
</div> </div>
<div id="outline-container-org56dc51c" class="outline-4"> <div id="outline-container-orgee6ed82" class="outline-4">
<h4 id="org56dc51c">Optional Parameters</h4> <h4 id="orgee6ed82">Optional Parameters</h4>
<div class="outline-text-4" id="text-org56dc51c"> <div class="outline-text-4" id="text-orgee6ed82">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -1414,9 +1414,9 @@ This Matlab function is accessible <a href="src/initializeCylindricalPlatforms.m
</div> </div>
</div> </div>
<div id="outline-container-org120ea12" class="outline-4"> <div id="outline-container-org19d03f1" class="outline-4">
<h4 id="org120ea12">Populate the <code>stewart</code> structure</h4> <h4 id="org19d03f1">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org120ea12"> <div class="outline-text-4" id="text-org19d03f1">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart.platform_F.type = 1; <pre class="src src-matlab">stewart.platform_F.type = 1;
@ -1448,13 +1448,13 @@ stewart.platform_M.H = args.Mph;
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/initializeCylindricalStruts.m">here</a>. This Matlab function is accessible <a href="../src/initializeCylindricalStruts.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-org7a6774e" class="outline-4"> <div id="outline-container-org686a076" class="outline-4">
<h4 id="org7a6774e">Function description</h4> <h4 id="org686a076">Function description</h4>
<div class="outline-text-4" id="text-org7a6774e"> <div class="outline-text-4" id="text-org686a076">
<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">initializeCylindricalStruts</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">initializeCylindricalStruts</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% initializeCylindricalStruts - Define the mass and moment of inertia of cylindrical struts</span> <span class="org-comment">% initializeCylindricalStruts - Define the mass and moment of inertia of cylindrical struts</span>
@ -1487,9 +1487,9 @@ This Matlab function is accessible <a href="src/initializeCylindricalStruts.m">h
</div> </div>
</div> </div>
<div id="outline-container-orgccd9ddc" class="outline-4"> <div id="outline-container-orgda13332" class="outline-4">
<h4 id="orgccd9ddc">Optional Parameters</h4> <h4 id="orgda13332">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgccd9ddc"> <div class="outline-text-4" id="text-orgda13332">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -1537,9 +1537,9 @@ I_M = zeros(3, 3, 6); <span class="org-comment">% Inertia of the "mobile" part o
</div> </div>
</div> </div>
<div id="outline-container-orgbe49c20" class="outline-4"> <div id="outline-container-org601053b" class="outline-4">
<h4 id="orgbe49c20">Populate the <code>stewart</code> structure</h4> <h4 id="org601053b">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-orgbe49c20"> <div class="outline-text-4" id="text-org601053b">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart.struts_M.type = 1; <pre class="src src-matlab">stewart.struts_M.type = 1;
@ -1571,13 +1571,13 @@ stewart.struts_F.H = Fsh;
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/initializeStrutDynamics.m">here</a>. This Matlab function is accessible <a href="../src/initializeStrutDynamics.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-org063be5b" class="outline-4"> <div id="outline-container-orgdb94cd8" class="outline-4">
<h4 id="org063be5b">Documentation</h4> <h4 id="orgdb94cd8">Documentation</h4>
<div class="outline-text-4" id="text-org063be5b"> <div class="outline-text-4" id="text-orgdb94cd8">
<div id="orgbbfb204" class="figure"> <div id="orgbbfb204" class="figure">
<p><img src="figs/piezoelectric_stack.jpg" alt="piezoelectric_stack.jpg" width="500px" /> <p><img src="figs/piezoelectric_stack.jpg" alt="piezoelectric_stack.jpg" width="500px" />
@ -1606,9 +1606,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#org62
</div> </div>
</div> </div>
<div id="outline-container-orgfc83159" class="outline-4"> <div id="outline-container-org38928ae" class="outline-4">
<h4 id="orgfc83159">Function description</h4> <h4 id="org38928ae">Function description</h4>
<div class="outline-text-4" id="text-orgfc83159"> <div class="outline-text-4" id="text-org38928ae">
<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">initializeStrutDynamics</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">initializeStrutDynamics</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% initializeStrutDynamics - Add Stiffness and Damping properties of each strut</span> <span class="org-comment">% initializeStrutDynamics - Add Stiffness and Damping properties of each strut</span>
@ -1630,14 +1630,14 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#org62
</div> </div>
</div> </div>
<div id="outline-container-org8756943" class="outline-4"> <div id="outline-container-org5d465fb" class="outline-4">
<h4 id="org8756943">Optional Parameters</h4> <h4 id="org5d465fb">Optional Parameters</h4>
<div class="outline-text-4" id="text-org8756943"> <div class="outline-text-4" id="text-org5d465fb">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e6<span class="org-type">*</span>ones(6,1) args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6<span class="org-type">*</span>ones(6,1)
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1<span class="org-type">*</span>ones(6,1) args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1<span class="org-type">*</span>ones(6,1)
<span class="org-keyword">end</span> <span class="org-keyword">end</span>
</pre> </pre>
</div> </div>
@ -1666,13 +1666,13 @@ stewart.actuators.C = args.C;
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/initializeAmplifiedStrutDynamics.m">here</a>. This Matlab function is accessible <a href="../src/initializeAmplifiedStrutDynamics.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-org11b907a" class="outline-4"> <div id="outline-container-org7e0b516" class="outline-4">
<h4 id="org11b907a">Documentation</h4> <h4 id="org7e0b516">Documentation</h4>
<div class="outline-text-4" id="text-org11b907a"> <div class="outline-text-4" id="text-org7e0b516">
<p> <p>
An amplified piezoelectric actuator is shown in Figure <a href="#org9e7e9ad">13</a>. An amplified piezoelectric actuator is shown in Figure <a href="#org9e7e9ad">13</a>.
</p> </p>
@ -1705,9 +1705,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#orgcf
</div> </div>
</div> </div>
<div id="outline-container-orgc9ac7ad" class="outline-4"> <div id="outline-container-orgd36c473" class="outline-4">
<h4 id="orgc9ac7ad">Function description</h4> <h4 id="orgd36c473">Function description</h4>
<div class="outline-text-4" id="text-orgc9ac7ad"> <div class="outline-text-4" id="text-orgd36c473">
<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">initializeAmplifiedStrutDynamics</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">initializeAmplifiedStrutDynamics</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% initializeAmplifiedStrutDynamics - Add Stiffness and Damping properties of each strut</span> <span class="org-comment">% initializeAmplifiedStrutDynamics - Add Stiffness and Damping properties of each strut</span>
@ -1735,9 +1735,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#orgcf
</div> </div>
</div> </div>
<div id="outline-container-org2508e19" class="outline-4"> <div id="outline-container-org3cae5a2" class="outline-4">
<h4 id="org2508e19">Optional Parameters</h4> <h4 id="org3cae5a2">Optional Parameters</h4>
<div class="outline-text-4" id="text-org2508e19"> <div class="outline-text-4" id="text-org3cae5a2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -1762,9 +1762,9 @@ C = args.Ca <span class="org-type">+</span> args.Cr;
</div> </div>
</div> </div>
<div id="outline-container-org933fa09" class="outline-4"> <div id="outline-container-org6cc3cd5" class="outline-4">
<h4 id="org933fa09">Populate the <code>stewart</code> structure</h4> <h4 id="org6cc3cd5">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org933fa09"> <div class="outline-text-4" id="text-org6cc3cd5">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart.actuators.type = 2; <pre class="src src-matlab">stewart.actuators.type = 2;
@ -1790,13 +1790,13 @@ stewart.actuators.C = K;
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/initializeJointDynamics.m">here</a>. This Matlab function is accessible <a href="../src/initializeJointDynamics.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-orgea4c71f" class="outline-4"> <div id="outline-container-org8a14eeb" class="outline-4">
<h4 id="orgea4c71f">Function description</h4> <h4 id="org8a14eeb">Function description</h4>
<div class="outline-text-4" id="text-orgea4c71f"> <div class="outline-text-4" id="text-org8a14eeb">
<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">initializeJointDynamics</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">initializeJointDynamics</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% initializeJointDynamics - Add Stiffness and Damping properties for the spherical joints</span> <span class="org-comment">% initializeJointDynamics - Add Stiffness and Damping properties for the spherical joints</span>
@ -1805,8 +1805,8 @@ This Matlab function is accessible <a href="src/initializeJointDynamics.m">here<
<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">% - args - Structure with the following fields:</span> <span class="org-comment">% - args - Structure with the following fields:</span>
<span class="org-comment">% - type_F - 'universal', 'spherical', 'univesal_p', 'spherical_p'</span> <span class="org-comment">% - type_F - 'universal', 'spherical', 'universal_p', 'spherical_p'</span>
<span class="org-comment">% - type_M - 'universal', 'spherical', 'univesal_p', 'spherical_p'</span> <span class="org-comment">% - type_M - 'universal', 'spherical', 'universal_p', 'spherical_p'</span>
<span class="org-comment">% - Kf_M [6x1] - Bending (Rx, Ry) Stiffness for each top joints [(N.m)/rad]</span> <span class="org-comment">% - Kf_M [6x1] - Bending (Rx, Ry) Stiffness for each top joints [(N.m)/rad]</span>
<span class="org-comment">% - Kt_M [6x1] - Torsion (Rz) Stiffness for each top joints [(N.m)/rad]</span> <span class="org-comment">% - Kt_M [6x1] - Torsion (Rz) Stiffness for each top joints [(N.m)/rad]</span>
<span class="org-comment">% - Cf_M [6x1] - Bending (Rx, Ry) Damping of each top joint [(N.m)/(rad/s)]</span> <span class="org-comment">% - Cf_M [6x1] - Bending (Rx, Ry) Damping of each top joint [(N.m)/(rad/s)]</span>
@ -1831,14 +1831,14 @@ This Matlab function is accessible <a href="src/initializeJointDynamics.m">here<
</div> </div>
</div> </div>
<div id="outline-container-orgbb42633" class="outline-4"> <div id="outline-container-orgcfba56a" class="outline-4">
<h4 id="orgbb42633">Optional Parameters</h4> <h4 id="orgcfba56a">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgbb42633"> <div class="outline-text-4" id="text-orgcfba56a">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
args.type_F char {mustBeMember(args.type_F,{<span class="org-string">'universal'</span>, <span class="org-string">'spherical'</span>, <span class="org-string">'univesal_p'</span>, <span class="org-string">'spherical_p'</span>})} = <span class="org-string">'universal'</span> args.type_F char {mustBeMember(args.type_F,{<span class="org-string">'universal'</span>, <span class="org-string">'spherical'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'spherical_p'</span>})} = <span class="org-string">'universal'</span>
args.type_M char {mustBeMember(args.type_M,{<span class="org-string">'universal'</span>, <span class="org-string">'spherical'</span>, <span class="org-string">'univesal_p'</span>, <span class="org-string">'spherical_p'</span>})} = <span class="org-string">'spherical'</span> args.type_M char {mustBeMember(args.type_M,{<span class="org-string">'universal'</span>, <span class="org-string">'spherical'</span>, <span class="org-string">'universal_p'</span>, <span class="org-string">'spherical_p'</span>})} = <span class="org-string">'spherical'</span>
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 15<span class="org-type">*</span>ones(6,1) args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 15<span class="org-type">*</span>ones(6,1)
args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e<span class="org-type">-</span>4<span class="org-type">*</span>ones(6,1) args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e<span class="org-type">-</span>4<span class="org-type">*</span>ones(6,1)
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20<span class="org-type">*</span>ones(6,1) args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20<span class="org-type">*</span>ones(6,1)
@ -1955,13 +1955,13 @@ stewart.joints_F.Ct = args.Cf_F;
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/initializeInertialSensor.m">here</a>. This Matlab function is accessible <a href="../src/initializeInertialSensor.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-org2462fa5" class="outline-4"> <div id="outline-container-orgd686f52" class="outline-4">
<h4 id="org2462fa5">Function description</h4> <h4 id="orgd686f52">Function description</h4>
<div class="outline-text-4" id="text-org2462fa5"> <div class="outline-text-4" id="text-orgd686f52">
<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">initializeInertialSensor</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">initializeInertialSensor</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% initializeInertialSensor - Initialize the inertial sensor in each strut</span> <span class="org-comment">% initializeInertialSensor - Initialize the inertial sensor in each strut</span>
@ -1987,9 +1987,9 @@ This Matlab function is accessible <a href="src/initializeInertialSensor.m">here
</div> </div>
</div> </div>
<div id="outline-container-orgcc6ded4" class="outline-4"> <div id="outline-container-org57e140f" class="outline-4">
<h4 id="orgcc6ded4">Optional Parameters</h4> <h4 id="org57e140f">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgcc6ded4"> <div class="outline-text-4" id="text-org57e140f">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -2030,9 +2030,9 @@ This Matlab function is accessible <a href="src/initializeInertialSensor.m">here
</div> </div>
</div> </div>
<div id="outline-container-org37e6016" class="outline-4"> <div id="outline-container-org31b0fc0" class="outline-4">
<h4 id="org37e6016">Populate the <code>stewart</code> structure</h4> <h4 id="org31b0fc0">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org37e6016"> <div class="outline-text-4" id="text-org31b0fc0">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">stewart.sensors.inertial = sensor; <pre class="src src-matlab">stewart.sensors.inertial = sensor;
</pre> </pre>
@ -2049,13 +2049,13 @@ This Matlab function is accessible <a href="src/initializeInertialSensor.m">here
</p> </p>
<p> <p>
This Matlab function is accessible <a href="src/displayArchitecture.m">here</a>. This Matlab function is accessible <a href="../src/displayArchitecture.m">here</a>.
</p> </p>
</div> </div>
<div id="outline-container-orgdd7c996" class="outline-4"> <div id="outline-container-org51076d4" class="outline-4">
<h4 id="orgdd7c996">Function description</h4> <h4 id="org51076d4">Function description</h4>
<div class="outline-text-4" id="text-orgdd7c996"> <div class="outline-text-4" id="text-org51076d4">
<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">[]</span> = <span class="org-function-name">displayArchitecture</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">[]</span> = <span class="org-function-name">displayArchitecture</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% displayArchitecture - 3D plot of the Stewart platform architecture</span> <span class="org-comment">% displayArchitecture - 3D plot of the Stewart platform architecture</span>
@ -2083,9 +2083,9 @@ This Matlab function is accessible <a href="src/displayArchitecture.m">here</a>.
</div> </div>
</div> </div>
<div id="outline-container-org99b2163" class="outline-4"> <div id="outline-container-org6a57a47" class="outline-4">
<h4 id="org99b2163">Optional Parameters</h4> <h4 id="org6a57a47">Optional Parameters</h4>
<div class="outline-text-4" id="text-org99b2163"> <div class="outline-text-4" id="text-org6a57a47">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">arguments <pre class="src src-matlab">arguments
stewart stewart
@ -2105,9 +2105,9 @@ This Matlab function is accessible <a href="src/displayArchitecture.m">here</a>.
</div> </div>
</div> </div>
<div id="outline-container-org9e5d50c" class="outline-4"> <div id="outline-container-org7bc221e" class="outline-4">
<h4 id="org9e5d50c">Check the <code>stewart</code> structure elements</h4> <h4 id="org7bc221e">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org9e5d50c"> <div class="outline-text-4" id="text-org7bc221e">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.platform_F, <span class="org-string">'FO_A'</span>), <span class="org-string">'stewart.platform_F should have attribute FO_A'</span>) <pre class="src src-matlab">assert(isfield(stewart.platform_F, <span class="org-string">'FO_A'</span>), <span class="org-string">'stewart.platform_F should have attribute FO_A'</span>)
FO_A = stewart.platform_F.FO_A; FO_A = stewart.platform_F.FO_A;
@ -2386,7 +2386,7 @@ Plot the legs connecting the joints of the fixed base to the joints of the mobil
</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:50</p> <p class="date">Created: 2020-02-11 mar. 17:52</p>
</div> </div>
</body> </body>
</html> </html>

View File

@ -46,7 +46,7 @@ The following decentralized active damping techniques are briefly studied:
* Inertial Control * Inertial Control
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle matlab/active_damping_inertial.m :header-args:matlab+: :tangle ../matlab/active_damping_inertial.m
:header-args:matlab+: :comments org :mkdirp yes :header-args:matlab+: :comments org :mkdirp yes
:END: :END:
<<sec:active_damping_inertial>> <<sec:active_damping_inertial>>
@ -76,11 +76,12 @@ The following decentralized active damping techniques are briefly studied:
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'disable', true); stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p');
stewart = initializeCylindricalPlatforms(stewart); stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'accelerometer', 'freq', 5e3);
#+end_src #+end_src
#+begin_src matlab #+begin_src matlab
@ -104,7 +105,7 @@ The following decentralized active damping techniques are briefly studied:
The transfer function from actuator forces to force sensors is shown in Figure [[fig:inertial_plant_coupling]]. The transfer function from actuator forces to force sensors is shown in Figure [[fig:inertial_plant_coupling]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(1, 3, 1000); freqs = logspace(1, 4, 1000);
figure; figure;
@ -147,18 +148,26 @@ The transfer function from actuator forces to force sensors is shown in Figure [
#+caption: 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 ([[./figs/inertial_plant_coupling.png][png]], [[./figs/inertial_plant_coupling.pdf][pdf]]) #+caption: 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 ([[./figs/inertial_plant_coupling.png][png]], [[./figs/inertial_plant_coupling.pdf][pdf]])
[[file:figs/inertial_plant_coupling.png]] [[file:figs/inertial_plant_coupling.png]]
** Effect of the Flexible Joint stiffness on the Dynamics ** Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics
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.
#+begin_src matlab #+begin_src matlab
stewart = initializeJointDynamics(stewart); stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
Gf = linearize(mdl, io, options); Gf = linearize(mdl, io, options);
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
Gf.OutputName = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'}; Gf.OutputName = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'};
#+end_src #+end_src
We now use the amplified actuators and re-identify the dynamics
#+begin_src matlab
stewart = initializeAmplifiedStrutDynamics(stewart);
Ga = linearize(mdl, io, options);
Ga.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
Ga.OutputName = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'};
#+end_src
The new dynamics from force actuator to force sensor is shown in Figure [[fig:inertial_plant_flexible_joint_decentralized]]. The new dynamics from force actuator to force sensor is shown in Figure [[fig:inertial_plant_flexible_joint_decentralized]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(1, 3, 1000); freqs = logspace(1, 4, 1000);
figure; figure;
@ -166,6 +175,7 @@ The new dynamics from force actuator to force sensor is shown in Figure [[fig:in
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(G( 'Vm1', 'F1'), freqs, 'Hz')))); plot(freqs, abs(squeeze(freqresp(G( 'Vm1', 'F1'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Gf('Vm1', 'F1'), freqs, 'Hz')))); plot(freqs, abs(squeeze(freqresp(Gf('Vm1', 'F1'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Ga('Vm1', 'F1'), freqs, 'Hz'))));
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [$\frac{m/s}{N}$]'); set(gca, 'XTickLabel',[]); ylabel('Amplitude [$\frac{m/s}{N}$]'); set(gca, 'XTickLabel',[]);
@ -174,6 +184,7 @@ The new dynamics from force actuator to force sensor is shown in Figure [[fig:in
hold on; hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G( 'Vm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Perfect Joints'); plot(freqs, 180/pi*angle(squeeze(freqresp(G( 'Vm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Perfect Joints');
plot(freqs, 180/pi*angle(squeeze(freqresp(Gf('Vm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Flexible Joints'); plot(freqs, 180/pi*angle(squeeze(freqresp(Gf('Vm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Flexible Joints');
plot(freqs, 180/pi*angle(squeeze(freqresp(Ga('Vm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Amplified Actuator');
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
@ -203,30 +214,38 @@ The $6 \times 6$ control is a diagonal matrix with pure proportional action on t
0 & & 1 0 & & 1
\end{bmatrix} \] \end{bmatrix} \]
The root locus is shown in figure [[fig:root_locus_inertial_rot_stiffness]] and the obtained pole damping function of the control gain is shown in figure [[fig:pole_damping_gain_inertial_rot_stiffness]]. The root locus is shown in figure [[fig:root_locus_inertial_rot_stiffness]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
gains = logspace(0, 5, 1000); gains = logspace(2, 5, 100);
figure; figure;
hold on; hold on;
plot(real(pole(G)), imag(pole(G)), 'x'); plot(real(pole(G)), imag(pole(G)), 'x');
plot(real(pole(Gf)), imag(pole(Gf)), 'x'); plot(real(pole(Gf)), imag(pole(Gf)), 'x');
plot(real(pole(Ga)), imag(pole(Ga)), 'x');
set(gca,'ColorOrderIndex',1); set(gca,'ColorOrderIndex',1);
plot(real(tzero(G)), imag(tzero(G)), 'o'); plot(real(tzero(G)), imag(tzero(G)), 'o');
plot(real(tzero(Gf)), imag(tzero(Gf)), 'o'); plot(real(tzero(Gf)), imag(tzero(Gf)), 'o');
plot(real(tzero(Ga)), imag(tzero(Ga)), 'o');
for i = 1:length(gains) for i = 1:length(gains)
cl_poles = pole(feedback(G, gains(i)*eye(6)));
set(gca,'ColorOrderIndex',1); set(gca,'ColorOrderIndex',1);
plot(real(cl_poles), imag(cl_poles), '.'); cl_poles = pole(feedback(G, gains(i)*eye(6)));
cl_poles = pole(feedback(Gf, gains(i)*eye(6))); p1 = plot(real(cl_poles), imag(cl_poles), '.');
set(gca,'ColorOrderIndex',2); set(gca,'ColorOrderIndex',2);
plot(real(cl_poles), imag(cl_poles), '.'); cl_poles = pole(feedback(Gf, gains(i)*eye(6)));
p2 = plot(real(cl_poles), imag(cl_poles), '.');
set(gca,'ColorOrderIndex',3);
cl_poles = pole(feedback(Ga, gains(i)*eye(6)));
p3 = plot(real(cl_poles), imag(cl_poles), '.');
end end
ylim([0,2000]); ylim([0, 3*max(imag(pole(G)))]);
xlim([-2000,0]); xlim([-3*max(imag(pole(G))),0]);
xlabel('Real Part') xlabel('Real Part')
ylabel('Imaginary Part') ylabel('Imaginary Part')
axis square axis square
legend([p1, p2, p3], {'Perfect Joints', 'Flexible Joints', 'Amplified Actuator'}, 'location', 'northwest');
#+end_src #+end_src
#+header: :tangle no :exports results :results none :noweb yes #+header: :tangle no :exports results :results none :noweb yes
@ -238,44 +257,14 @@ The root locus is shown in figure [[fig:root_locus_inertial_rot_stiffness]] and
#+caption: Root Locus plot with Decentralized Inertial Control when considering the stiffness of flexible joints ([[./figs/root_locus_inertial_rot_stiffness.png][png]], [[./figs/root_locus_inertial_rot_stiffness.pdf][pdf]]) #+caption: Root Locus plot with Decentralized Inertial Control when considering the stiffness of flexible joints ([[./figs/root_locus_inertial_rot_stiffness.png][png]], [[./figs/root_locus_inertial_rot_stiffness.pdf][pdf]])
[[file:figs/root_locus_inertial_rot_stiffness.png]] [[file:figs/root_locus_inertial_rot_stiffness.png]]
#+begin_src matlab :exports none
gains = logspace(0, 5, 1000);
figure;
hold on;
for i = 1:length(gains)
set(gca,'ColorOrderIndex',1);
cl_poles = pole(feedback(G, gains(i)*eye(6)));
poles_damp = phase(cl_poles(imag(cl_poles)>0)) - pi/2;
plot(gains(i)*ones(size(poles_damp)), poles_damp, '.');
set(gca,'ColorOrderIndex',2);
cl_poles = pole(feedback(Gf, gains(i)*eye(6)));
poles_damp = phase(cl_poles(imag(cl_poles)>0)) - pi/2;
plot(gains(i)*ones(size(poles_damp)), poles_damp, '.');
end
xlabel('Control Gain');
ylabel('Damping of the Poles');
set(gca, 'XScale', 'log');
ylim([0,pi/2]);
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/pole_damping_gain_inertial_rot_stiffness.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:pole_damping_gain_inertial_rot_stiffness
#+caption: Damping of the poles with respect to the gain of the Decentralized Inertial Control when considering the stiffness of flexible joints ([[./figs/pole_damping_gain_inertial_rot_stiffness.png][png]], [[./figs/pole_damping_gain_inertial_rot_stiffness.pdf][pdf]])
[[file:figs/pole_damping_gain_inertial_rot_stiffness.png]]
** Conclusion ** Conclusion
#+begin_important #+begin_important
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors. We do not have guaranteed stability with Inertial control. This is because of the flexibility inside the internal sensor.
#+end_important #+end_important
* Integral Force Feedback * Integral Force Feedback
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle matlab/active_damping_iff.m :header-args:matlab+: :tangle ../matlab/active_damping_iff.m
:header-args:matlab+: :comments org :mkdirp yes :header-args:matlab+: :comments org :mkdirp yes
:END: :END:
<<sec:active_damping_iff>> <<sec:active_damping_iff>>
@ -306,12 +295,12 @@ We first initialize the Stewart platform without joint stiffness.
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeAmplifiedStrutDynamics(stewart); stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p');
stewart = initializeJointDynamics(stewart, 'disable', true);
stewart = initializeCylindricalPlatforms(stewart); stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'none');
#+end_src #+end_src
And we identify the dynamics from force actuators to force sensors. And we identify the dynamics from force actuators to force sensors.
@ -379,18 +368,26 @@ The transfer function from actuator forces to force sensors is shown in Figure [
#+caption: 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 ([[./figs/iff_plant_coupling.png][png]], [[./figs/iff_plant_coupling.pdf][pdf]]) #+caption: 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 ([[./figs/iff_plant_coupling.png][png]], [[./figs/iff_plant_coupling.pdf][pdf]])
[[file:figs/iff_plant_coupling.png]] [[file:figs/iff_plant_coupling.png]]
** Effect of the Flexible Joint stiffness on the Dynamics ** Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics
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.
#+begin_src matlab #+begin_src matlab
stewart = initializeJointDynamics(stewart); stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
Gf = linearize(mdl, io, options); Gf = linearize(mdl, io, options);
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
Gf.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'}; Gf.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
#+end_src #+end_src
We now use the amplified actuators and re-identify the dynamics
#+begin_src matlab
stewart = initializeAmplifiedStrutDynamics(stewart);
Ga = linearize(mdl, io, options);
Ga.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
Ga.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
#+end_src
The new dynamics from force actuator to force sensor is shown in Figure [[fig:iff_plant_flexible_joint_decentralized]]. The new dynamics from force actuator to force sensor is shown in Figure [[fig:iff_plant_flexible_joint_decentralized]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(1, 3, 1000); freqs = logspace(1, 4, 1000);
figure; figure;
@ -398,6 +395,7 @@ The new dynamics from force actuator to force sensor is shown in Figure [[fig:if
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(G( 'Fm1', 'F1'), freqs, 'Hz')))); plot(freqs, abs(squeeze(freqresp(G( 'Fm1', 'F1'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Gf('Fm1', 'F1'), freqs, 'Hz')))); plot(freqs, abs(squeeze(freqresp(Gf('Fm1', 'F1'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Ga('Fm1', 'F1'), freqs, 'Hz'))));
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [N/N]'); set(gca, 'XTickLabel',[]); ylabel('Amplitude [N/N]'); set(gca, 'XTickLabel',[]);
@ -406,6 +404,7 @@ The new dynamics from force actuator to force sensor is shown in Figure [[fig:if
hold on; hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G( 'Fm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Perfect Joints'); plot(freqs, 180/pi*angle(squeeze(freqresp(G( 'Fm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Perfect Joints');
plot(freqs, 180/pi*angle(squeeze(freqresp(Gf('Fm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Flexible Joints'); plot(freqs, 180/pi*angle(squeeze(freqresp(Gf('Fm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Flexible Joints');
plot(freqs, 180/pi*angle(squeeze(freqresp(Ga('Fm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Amplified Actuators');
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
@ -443,22 +442,30 @@ The root locus is shown in figure [[fig:root_locus_iff_rot_stiffness]] and the o
hold on; hold on;
plot(real(pole(G)), imag(pole(G)), 'x'); plot(real(pole(G)), imag(pole(G)), 'x');
plot(real(pole(Gf)), imag(pole(Gf)), 'x'); plot(real(pole(Gf)), imag(pole(Gf)), 'x');
plot(real(pole(Ga)), imag(pole(Ga)), 'x');
set(gca,'ColorOrderIndex',1); set(gca,'ColorOrderIndex',1);
plot(real(tzero(G)), imag(tzero(G)), 'o'); plot(real(tzero(G)), imag(tzero(G)), 'o');
plot(real(tzero(Gf)), imag(tzero(Gf)), 'o'); plot(real(tzero(Gf)), imag(tzero(Gf)), 'o');
plot(real(tzero(Ga)), imag(tzero(Ga)), 'o');
for i = 1:length(gains) for i = 1:length(gains)
cl_poles = pole(feedback(G, (gains(i)/s)*eye(6))); cl_poles = pole(feedback(G, (gains(i)/s)*eye(6)));
set(gca,'ColorOrderIndex',1); set(gca,'ColorOrderIndex',1);
plot(real(cl_poles), imag(cl_poles), '.'); p1 = plot(real(cl_poles), imag(cl_poles), '.');
cl_poles = pole(feedback(Gf, (gains(i)/s)*eye(6))); cl_poles = pole(feedback(Gf, (gains(i)/s)*eye(6)));
set(gca,'ColorOrderIndex',2); set(gca,'ColorOrderIndex',2);
plot(real(cl_poles), imag(cl_poles), '.'); p2 = plot(real(cl_poles), imag(cl_poles), '.');
cl_poles = pole(feedback(Ga, (gains(i)/s)*eye(6)));
set(gca,'ColorOrderIndex',3);
p3 = plot(real(cl_poles), imag(cl_poles), '.');
end end
ylim([0,inf]); ylim([0, 1.1*max(imag(pole(G)))]);
xlim([-3000,0]); xlim([-1.1*max(imag(pole(G))),0]);
xlabel('Real Part') xlabel('Real Part')
ylabel('Imaginary Part') ylabel('Imaginary Part')
axis square axis square
legend([p1, p2, p3], {'Perfect Joints', 'Flexible Joints', 'Amplified Actuator'}, 'location', 'northwest');
#+end_src #+end_src
#+header: :tangle no :exports results :results none :noweb yes #+header: :tangle no :exports results :results none :noweb yes
@ -479,16 +486,23 @@ The root locus is shown in figure [[fig:root_locus_iff_rot_stiffness]] and the o
set(gca,'ColorOrderIndex',1); set(gca,'ColorOrderIndex',1);
cl_poles = pole(feedback(G, (gains(i)/s)*eye(6))); cl_poles = pole(feedback(G, (gains(i)/s)*eye(6)));
poles_damp = phase(cl_poles(imag(cl_poles)>0)) - pi/2; poles_damp = phase(cl_poles(imag(cl_poles)>0)) - pi/2;
plot(gains(i)*ones(size(poles_damp)), poles_damp, '.'); p1 = plot(gains(i)*ones(size(poles_damp)), poles_damp, '.');
set(gca,'ColorOrderIndex',2); set(gca,'ColorOrderIndex',2);
cl_poles = pole(feedback(Gf, (gains(i)/s)*eye(6))); cl_poles = pole(feedback(Gf, (gains(i)/s)*eye(6)));
poles_damp = phase(cl_poles(imag(cl_poles)>0)) - pi/2; poles_damp = phase(cl_poles(imag(cl_poles)>0)) - pi/2;
plot(gains(i)*ones(size(poles_damp)), poles_damp, '.'); p2 = plot(gains(i)*ones(size(poles_damp)), poles_damp, '.');
set(gca,'ColorOrderIndex',3);
cl_poles = pole(feedback(Ga, (gains(i)/s)*eye(6)));
poles_damp = phase(cl_poles(imag(cl_poles)>0)) - pi/2;
p3 = plot(gains(i)*ones(size(poles_damp)), poles_damp, '.');
end end
xlabel('Control Gain'); xlabel('Control Gain');
ylabel('Damping of the Poles'); ylabel('Damping of the Poles');
set(gca, 'XScale', 'log'); set(gca, 'XScale', 'log');
ylim([0,pi/2]); ylim([0,pi/2]);
legend([p1, p2, p3], {'Perfect Joints', 'Flexible Joints', 'Amplified Actuator'}, 'location', 'northwest');
#+end_src #+end_src
#+header: :tangle no :exports results :results none :noweb yes #+header: :tangle no :exports results :results none :noweb yes
@ -508,7 +522,7 @@ The root locus is shown in figure [[fig:root_locus_iff_rot_stiffness]] and the o
* Direct Velocity Feedback * Direct Velocity Feedback
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle matlab/active_damping_dvf.m :header-args:matlab+: :tangle ../matlab/active_damping_dvf.m
:header-args:matlab+: :comments org :mkdirp yes :header-args:matlab+: :comments org :mkdirp yes
:END: :END:
<<sec:active_damping_dvf>> <<sec:active_damping_dvf>>
@ -539,11 +553,12 @@ We first initialize the Stewart platform without joint stiffness.
stewart = generateGeneralConfiguration(stewart); stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart); stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart); stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'disable', true); stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p');
stewart = initializeCylindricalPlatforms(stewart); stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart); stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart); stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart); stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'none');
#+end_src #+end_src
And we identify the dynamics from force actuators to force sensors. And we identify the dynamics from force actuators to force sensors.
@ -568,7 +583,7 @@ And we identify the dynamics from force actuators to force sensors.
The transfer function from actuator forces to relative motion sensors is shown in Figure [[fig:dvf_plant_coupling]]. The transfer function from actuator forces to relative motion sensors is shown in Figure [[fig:dvf_plant_coupling]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(1, 3, 1000); freqs = logspace(1, 4, 1000);
figure; figure;
@ -612,18 +627,26 @@ The transfer function from actuator forces to relative motion sensors is shown i
[[file:figs/dvf_plant_coupling.png]] [[file:figs/dvf_plant_coupling.png]]
** Effect of the Flexible Joint stiffness on the Dynamics ** Effect of the Flexible Joint stiffness and Actuator amplification on the Dynamics
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.
#+begin_src matlab #+begin_src matlab
stewart = initializeJointDynamics(stewart); stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
Gf = linearize(mdl, io, options); Gf = linearize(mdl, io, options);
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'}; Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
Gf.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'}; Gf.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'};
#+end_src #+end_src
We now use the amplified actuators and re-identify the dynamics
#+begin_src matlab
stewart = initializeAmplifiedStrutDynamics(stewart);
Ga = linearize(mdl, io, options);
Ga.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
Ga.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'};
#+end_src
The new dynamics from force actuator to relative motion sensor is shown in Figure [[fig:dvf_plant_flexible_joint_decentralized]]. The new dynamics from force actuator to relative motion sensor is shown in Figure [[fig:dvf_plant_flexible_joint_decentralized]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(1, 3, 1000); freqs = logspace(1, 4, 1000);
figure; figure;
@ -631,6 +654,7 @@ The new dynamics from force actuator to relative motion sensor is shown in Figur
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(G( 'Dm1', 'F1'), freqs, 'Hz')))); plot(freqs, abs(squeeze(freqresp(G( 'Dm1', 'F1'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Gf('Dm1', 'F1'), freqs, 'Hz')))); plot(freqs, abs(squeeze(freqresp(Gf('Dm1', 'F1'), freqs, 'Hz'))));
plot(freqs, abs(squeeze(freqresp(Ga('Dm1', 'F1'), freqs, 'Hz'))));
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]); ylabel('Amplitude [m/N]'); set(gca, 'XTickLabel',[]);
@ -639,6 +663,7 @@ The new dynamics from force actuator to relative motion sensor is shown in Figur
hold on; hold on;
plot(freqs, 180/pi*angle(squeeze(freqresp(G( 'Dm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Perfect Joints'); plot(freqs, 180/pi*angle(squeeze(freqresp(G( 'Dm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Perfect Joints');
plot(freqs, 180/pi*angle(squeeze(freqresp(Gf('Dm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Flexible Joints'); plot(freqs, 180/pi*angle(squeeze(freqresp(Gf('Dm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Flexible Joints');
plot(freqs, 180/pi*angle(squeeze(freqresp(Ga('Dm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Amplified Actuators');
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
ylabel('Phase [deg]'); xlabel('Frequency [Hz]'); ylabel('Phase [deg]'); xlabel('Frequency [Hz]');
@ -668,7 +693,7 @@ The $6 \times 6$ control is a diagonal matrix with pure derivative action on the
& & s & & s
\end{bmatrix} \] \end{bmatrix} \]
The root locus is shown in figure [[fig:root_locus_dvf_rot_stiffness]] and the obtained pole damping function of the control gain is shown in figure [[fig:pole_damping_gain_dvf_rot_stiffness]]. The root locus is shown in figure [[fig:root_locus_dvf_rot_stiffness]].
#+begin_src matlab :exports none #+begin_src matlab :exports none
gains = logspace(0, 5, 1000); gains = logspace(0, 5, 1000);
@ -676,22 +701,30 @@ The root locus is shown in figure [[fig:root_locus_dvf_rot_stiffness]] and the o
hold on; hold on;
plot(real(pole(G)), imag(pole(G)), 'x'); plot(real(pole(G)), imag(pole(G)), 'x');
plot(real(pole(Gf)), imag(pole(Gf)), 'x'); plot(real(pole(Gf)), imag(pole(Gf)), 'x');
plot(real(pole(Ga)), imag(pole(Gf)), 'x');
set(gca,'ColorOrderIndex',1); set(gca,'ColorOrderIndex',1);
plot(real(tzero(G)), imag(tzero(G)), 'o'); plot(real(tzero(G)), imag(tzero(G)), 'o');
plot(real(tzero(Gf)), imag(tzero(Gf)), 'o'); plot(real(tzero(Gf)), imag(tzero(Gf)), 'o');
plot(real(tzero(Ga)), imag(tzero(Gf)), 'o');
for i = 1:length(gains) for i = 1:length(gains)
cl_poles = pole(feedback(G, (gains(i)*s)*eye(6)));
set(gca,'ColorOrderIndex',1); set(gca,'ColorOrderIndex',1);
plot(real(cl_poles), imag(cl_poles), '.'); cl_poles = pole(feedback(G, (gains(i)*s)*eye(6)));
cl_poles = pole(feedback(Gf, (gains(i)*s)*eye(6))); p1 = plot(real(cl_poles), imag(cl_poles), '.');
set(gca,'ColorOrderIndex',2); set(gca,'ColorOrderIndex',2);
plot(real(cl_poles), imag(cl_poles), '.'); cl_poles = pole(feedback(Gf, (gains(i)*s)*eye(6)));
p2 = plot(real(cl_poles), imag(cl_poles), '.');
set(gca,'ColorOrderIndex',3);
cl_poles = pole(feedback(Ga, (gains(i)*s)*eye(6)));
p3 = plot(real(cl_poles), imag(cl_poles), '.');
end end
ylim([0,inf]); ylim([0, 1.1*max(imag(pole(G)))]);
xlim([-3000,0]); xlim([-1.1*max(imag(pole(G))),0]);
xlabel('Real Part') xlabel('Real Part')
ylabel('Imaginary Part') ylabel('Imaginary Part')
axis square axis square
legend([p1, p2, p3], {'Perfect Joints', 'Flexible Joints', 'Amplified Actuator'}, 'location', 'northwest');
#+end_src #+end_src
#+header: :tangle no :exports results :results none :noweb yes #+header: :tangle no :exports results :results none :noweb yes
@ -703,36 +736,6 @@ The root locus is shown in figure [[fig:root_locus_dvf_rot_stiffness]] and the o
#+caption: Root Locus plot with Direct Velocity Feedback when considering the Stiffness of flexible joints ([[./figs/root_locus_dvf_rot_stiffness.png][png]], [[./figs/root_locus_dvf_rot_stiffness.pdf][pdf]]) #+caption: Root Locus plot with Direct Velocity Feedback when considering the Stiffness of flexible joints ([[./figs/root_locus_dvf_rot_stiffness.png][png]], [[./figs/root_locus_dvf_rot_stiffness.pdf][pdf]])
[[file:figs/root_locus_dvf_rot_stiffness.png]] [[file:figs/root_locus_dvf_rot_stiffness.png]]
#+begin_src matlab :exports none
gains = logspace(0, 5, 1000);
figure;
hold on;
for i = 1:length(gains)
set(gca,'ColorOrderIndex',1);
cl_poles = pole(feedback(G, (gains(i)*s)*eye(6)));
poles_damp = phase(cl_poles(imag(cl_poles)>0)) - pi/2;
plot(gains(i)*ones(size(poles_damp)), poles_damp, '.');
set(gca,'ColorOrderIndex',2);
cl_poles = pole(feedback(Gf, (gains(i)*s)*eye(6)));
poles_damp = phase(cl_poles(imag(cl_poles)>0)) - pi/2;
plot(gains(i)*ones(size(poles_damp)), poles_damp, '.');
end
xlabel('Control Gain');
ylabel('Damping of the Poles');
set(gca, 'XScale', 'log');
ylim([0,pi/2]);
#+end_src
#+header: :tangle no :exports results :results none :noweb yes
#+begin_src matlab :var filepath="figs/pole_damping_gain_dvf_rot_stiffness.pdf" :var figsize="wide-tall" :post pdf2svg(file=*this*, ext="png")
<<plt-matlab>>
#+end_src
#+name: fig:pole_damping_gain_dvf_rot_stiffness
#+caption: Damping of the poles with respect to the gain of the Direct Velocity Feedback when considering the Stiffness of flexible joints ([[./figs/pole_damping_gain_dvf_rot_stiffness.png][png]], [[./figs/pole_damping_gain_dvf_rot_stiffness.pdf][pdf]])
[[file:figs/pole_damping_gain_dvf_rot_stiffness.png]]
** Conclusion ** Conclusion
#+begin_important #+begin_important
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.

View File

@ -84,7 +84,7 @@ The Jacobian matrix is estimated at the location of the center of the cube.
#+name: fig:3d-cubic-stewart-aligned #+name: fig:3d-cubic-stewart-aligned
#+caption: Centered cubic configuration #+caption: Centered cubic configuration
[[file:./figs/3d-cubic-stewart-aligned.png]] [[file:figs/3d-cubic-stewart-aligned.png]]
#+begin_src matlab :exports none #+begin_src matlab :exports none
displayArchitecture(stewart, 'labels', false); displayArchitecture(stewart, 'labels', false);
@ -158,7 +158,7 @@ The Jacobian is estimated at the cube center.
#+name: fig:3d-cubic-stewart-misaligned #+name: fig:3d-cubic-stewart-misaligned
#+caption: Not centered cubic configuration #+caption: Not centered cubic configuration
[[file:./figs/3d-cubic-stewart-misaligned.png]] [[file:figs/3d-cubic-stewart-misaligned.png]]
#+begin_src matlab #+begin_src matlab
stewart = initializeStewartPlatform(); stewart = initializeStewartPlatform();
@ -371,12 +371,12 @@ We observe that $k_{\theta_x} = k_{\theta_y}$ and $k_{\theta_z}$ increase linear
** =generateCubicConfiguration=: Generate a Cubic Configuration ** =generateCubicConfiguration=: Generate a Cubic Configuration
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/generateCubicConfiguration.m :header-args:matlab+: :tangle ../src/generateCubicConfiguration.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:generateCubicConfiguration>> <<sec:generateCubicConfiguration>>
This Matlab function is accessible [[file:src/generateCubicConfiguration.m][here]]. This Matlab function is accessible [[file:../src/generateCubicConfiguration.m][here]].
*** Function description *** Function description
:PROPERTIES: :PROPERTIES:

View File

@ -215,7 +215,7 @@ The function =forwardKinematicsApprox= (described [[sec:forwardKinematicsApprox]
** Estimation of the range validity of the approximate inverse kinematics ** Estimation of the range validity of the approximate inverse kinematics
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle matlab/approximate_inverse_kinematics_validity.m :header-args:matlab+: :tangle ../matlab/approximate_inverse_kinematics_validity.m
:header-args:matlab+: :comments org :mkdirp yes :header-args:matlab+: :comments org :mkdirp yes
:END: :END:
<<sec:approximate_inverse_kinematics_validity>> <<sec:approximate_inverse_kinematics_validity>>
@ -325,7 +325,7 @@ For small wanted displacements (up to $\approx 1\%$ of the size of the Hexapod),
* Estimated required actuator stroke from specified platform mobility * Estimated required actuator stroke from specified platform mobility
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle matlab/required_stroke_from_mobility.m :header-args:matlab+: :tangle ../matlab/required_stroke_from_mobility.m
:header-args:matlab+: :comments org :mkdirp yes :header-args:matlab+: :comments org :mkdirp yes
:END: :END:
<<sec:required_actuator_stroke>> <<sec:required_actuator_stroke>>
@ -481,7 +481,7 @@ This is probably a much realistic estimation of the required actuator stroke.
* Estimated platform mobility from specified actuator stroke * Estimated platform mobility from specified actuator stroke
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle matlab/mobility_from_actuator_stroke.m :header-args:matlab+: :tangle ../matlab/mobility_from_actuator_stroke.m
:header-args:matlab+: :comments org :mkdirp yes :header-args:matlab+: :comments org :mkdirp yes
:END: :END:
<<sec:obtained_mobility_from_stroke>> <<sec:obtained_mobility_from_stroke>>
@ -593,12 +593,12 @@ using this function https://fr.mathworks.com/help/matlab/ref/contour3.html
<<sec:functions>> <<sec:functions>>
** =computeJacobian=: Compute the Jacobian Matrix ** =computeJacobian=: Compute the Jacobian Matrix
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/computeJacobian.m :header-args:matlab+: :tangle ../src/computeJacobian.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:computeJacobian>> <<sec:computeJacobian>>
This Matlab function is accessible [[file:src/computeJacobian.m][here]]. This Matlab function is accessible [[file:../src/computeJacobian.m][here]].
*** Function description *** Function description
:PROPERTIES: :PROPERTIES:
@ -676,12 +676,12 @@ This Matlab function is accessible [[file:src/computeJacobian.m][here]].
** =inverseKinematics=: Compute Inverse Kinematics ** =inverseKinematics=: Compute Inverse Kinematics
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/inverseKinematics.m :header-args:matlab+: :tangle ../src/inverseKinematics.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:inverseKinematics>> <<sec:inverseKinematics>>
This Matlab function is accessible [[file:src/inverseKinematics.m][here]]. This Matlab function is accessible [[file:../src/inverseKinematics.m][here]].
*** Theory *** Theory
:PROPERTIES: :PROPERTIES:
@ -774,12 +774,12 @@ Otherwise, when the limbs' lengths derived yield complex numbers, then the posit
** =forwardKinematicsApprox=: Compute the Approximate Forward Kinematics ** =forwardKinematicsApprox=: Compute the Approximate Forward Kinematics
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/forwardKinematicsApprox.m :header-args:matlab+: :tangle ../src/forwardKinematicsApprox.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:forwardKinematicsApprox>> <<sec:forwardKinematicsApprox>>
This Matlab function is accessible [[file:src/forwardKinematicsApprox.m][here]]. This Matlab function is accessible [[file:../src/forwardKinematicsApprox.m][here]].
*** Function description *** Function description
:PROPERTIES: :PROPERTIES:

View File

@ -170,7 +170,7 @@ We generally want to have the smallest resonant frequency $\omega_0$ to measure
*** Initialization function *** Initialization function
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle ./src/initializeZAxisGeophone.m :header-args:matlab+: :tangle ../src/initializeZAxisGeophone.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:initializeZAxisGeophone>> <<sec:initializeZAxisGeophone>>
@ -221,7 +221,7 @@ Note that there is trade-off between:
*** Initialization function *** Initialization function
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle ./src/initializeZAxisAccelerometer.m :header-args:matlab+: :tangle ../src/initializeZAxisAccelerometer.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:initializeZAxisAccelerometer>> <<sec:initializeZAxisAccelerometer>>
@ -231,7 +231,7 @@ This Matlab function is accessible [[file:../src/initializeZAxisAccelerometer.m]
#+begin_src matlab #+begin_src matlab
function [accelerometer] = initializeZAxisAccelerometer(args) function [accelerometer] = initializeZAxisAccelerometer(args)
arguments arguments
args.mass (1,1) double {mustBeNumeric, mustBePositive} = 1e-3 % [kg] args.mass (1,1) double {mustBeNumeric, mustBePositive} = 5e-3 % [kg]
args.freq (1,1) double {mustBeNumeric, mustBePositive} = 5e3 % [Hz] args.freq (1,1) double {mustBeNumeric, mustBePositive} = 5e3 % [Hz]
end end

View File

@ -58,7 +58,7 @@ The project can be opened using the =simulinkproject= function:
When the project opens, a startup script is ran. When the project opens, a startup script is ran.
The startup script is defined below and is exported to the =project_startup.m= script. The startup script is defined below and is exported to the =project_startup.m= script.
#+begin_src matlab :eval no :tangle ./src/project_startup.m #+begin_src matlab :eval no :tangle ../src/project_startup.m
project = simulinkproject; project = simulinkproject;
projectRoot = project.RootFolder; projectRoot = project.RootFolder;
@ -75,7 +75,7 @@ The startup script is defined below and is exported to the =project_startup.m= s
#+end_src #+end_src
When the project closes, it runs the =project_shutdown.m= script defined below. When the project closes, it runs the =project_shutdown.m= script defined below.
#+begin_src matlab :eval no :tangle ./src/project_shutdown.m #+begin_src matlab :eval no :tangle ../src/project_shutdown.m
Simulink.fileGenControl('reset'); Simulink.fileGenControl('reset');
#+end_src #+end_src

View File

@ -295,12 +295,12 @@ Let's now move a little bit the top platform and re-display the configuration:
** =initializeStewartPlatform=: Initialize the Stewart Platform structure ** =initializeStewartPlatform=: Initialize the Stewart Platform structure
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/initializeStewartPlatform.m :header-args:matlab+: :tangle ../src/initializeStewartPlatform.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:initializeStewartPlatform>> <<sec:initializeStewartPlatform>>
This Matlab function is accessible [[file:src/initializeStewartPlatform.m][here]]. This Matlab function is accessible [[file:../src/initializeStewartPlatform.m][here]].
*** Documentation *** Documentation
:PROPERTIES: :PROPERTIES:
@ -357,12 +357,12 @@ This Matlab function is accessible [[file:src/initializeStewartPlatform.m][here]
** =initializeFramesPositions=: Initialize the positions of frames {A}, {B}, {F} and {M} ** =initializeFramesPositions=: Initialize the positions of frames {A}, {B}, {F} and {M}
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/initializeFramesPositions.m :header-args:matlab+: :tangle ../src/initializeFramesPositions.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:initializeFramesPositions>> <<sec:initializeFramesPositions>>
This Matlab function is accessible [[file:src/initializeFramesPositions.m][here]]. This Matlab function is accessible [[file:../src/initializeFramesPositions.m][here]].
*** Documentation *** Documentation
:PROPERTIES: :PROPERTIES:
@ -435,12 +435,12 @@ This Matlab function is accessible [[file:src/initializeFramesPositions.m][here]
** =generateGeneralConfiguration=: Generate a Very General Configuration ** =generateGeneralConfiguration=: Generate a Very General Configuration
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/generateGeneralConfiguration.m :header-args:matlab+: :tangle ../src/generateGeneralConfiguration.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:generateGeneralConfiguration>> <<sec:generateGeneralConfiguration>>
This Matlab function is accessible [[file:src/generateGeneralConfiguration.m][here]]. This Matlab function is accessible [[file:../src/generateGeneralConfiguration.m][here]].
*** Documentation *** Documentation
:PROPERTIES: :PROPERTIES:
@ -565,12 +565,12 @@ The radius of the circles can be chosen as well as the angles where the joints a
** =computeJointsPose=: Compute the Pose of the Joints ** =computeJointsPose=: Compute the Pose of the Joints
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/computeJointsPose.m :header-args:matlab+: :tangle ../src/computeJointsPose.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:computeJointsPose>> <<sec:computeJointsPose>>
This Matlab function is accessible [[file:src/computeJointsPose.m][here]]. This Matlab function is accessible [[file:../src/computeJointsPose.m][here]].
*** Documentation *** Documentation
:PROPERTIES: :PROPERTIES:
@ -700,12 +700,12 @@ This Matlab function is accessible [[file:src/computeJointsPose.m][here]].
** =initializeStewartPose=: Determine the initial stroke in each leg to have the wanted pose ** =initializeStewartPose=: Determine the initial stroke in each leg to have the wanted pose
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/initializeStewartPose.m :header-args:matlab+: :tangle ../src/initializeStewartPose.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:initializeStewartPose>> <<sec:initializeStewartPose>>
This Matlab function is accessible [[file:src/initializeStewartPose.m][here]]. This Matlab function is accessible [[file:../src/initializeStewartPose.m][here]].
*** Function description *** Function description
:PROPERTIES: :PROPERTIES:
@ -761,12 +761,12 @@ This Matlab function is accessible [[file:src/initializeStewartPose.m][here]].
** =initializeCylindricalPlatforms=: Initialize the geometry of the Fixed and Mobile Platforms ** =initializeCylindricalPlatforms=: Initialize the geometry of the Fixed and Mobile Platforms
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/initializeCylindricalPlatforms.m :header-args:matlab+: :tangle ../src/initializeCylindricalPlatforms.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:initializeCylindricalPlatforms>> <<sec:initializeCylindricalPlatforms>>
This Matlab function is accessible [[file:src/initializeCylindricalPlatforms.m][here]]. This Matlab function is accessible [[file:../src/initializeCylindricalPlatforms.m][here]].
*** Function description *** Function description
:PROPERTIES: :PROPERTIES:
@ -858,12 +858,12 @@ This Matlab function is accessible [[file:src/initializeCylindricalPlatforms.m][
** =initializeCylindricalStruts=: Define the inertia of cylindrical struts ** =initializeCylindricalStruts=: Define the inertia of cylindrical struts
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/initializeCylindricalStruts.m :header-args:matlab+: :tangle ../src/initializeCylindricalStruts.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:initializeCylindricalStruts>> <<sec:initializeCylindricalStruts>>
This Matlab function is accessible [[file:src/initializeCylindricalStruts.m][here]]. This Matlab function is accessible [[file:../src/initializeCylindricalStruts.m][here]].
*** Function description *** Function description
:PROPERTIES: :PROPERTIES:
@ -968,12 +968,12 @@ This Matlab function is accessible [[file:src/initializeCylindricalStruts.m][her
** =initializeStrutDynamics=: Add Stiffness and Damping properties of each strut ** =initializeStrutDynamics=: Add Stiffness and Damping properties of each strut
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/initializeStrutDynamics.m :header-args:matlab+: :tangle ../src/initializeStrutDynamics.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:initializeStrutDynamics>> <<sec:initializeStrutDynamics>>
This Matlab function is accessible [[file:src/initializeStrutDynamics.m][here]]. This Matlab function is accessible [[file:../src/initializeStrutDynamics.m][here]].
*** Documentation *** Documentation
:PROPERTIES: :PROPERTIES:
@ -1049,8 +1049,8 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:actuator_
#+begin_src matlab #+begin_src matlab
arguments arguments
stewart stewart
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e6*ones(6,1) args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1) args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1*ones(6,1)
end end
#+end_src #+end_src
@ -1067,12 +1067,12 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:actuator_
** =initializeAmplifiedStrutDynamics=: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator ** =initializeAmplifiedStrutDynamics=: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/initializeAmplifiedStrutDynamics.m :header-args:matlab+: :tangle ../src/initializeAmplifiedStrutDynamics.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:initializeAmplifiedStrutDynamics>> <<sec:initializeAmplifiedStrutDynamics>>
This Matlab function is accessible [[file:src/initializeAmplifiedStrutDynamics.m][here]]. This Matlab function is accessible [[file:../src/initializeAmplifiedStrutDynamics.m][here]].
*** Documentation *** Documentation
:PROPERTIES: :PROPERTIES:
@ -1196,12 +1196,12 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:amplified
** =initializeJointDynamics=: Add Stiffness and Damping properties for spherical joints ** =initializeJointDynamics=: Add Stiffness and Damping properties for spherical joints
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/initializeJointDynamics.m :header-args:matlab+: :tangle ../src/initializeJointDynamics.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:initializeJointDynamics>> <<sec:initializeJointDynamics>>
This Matlab function is accessible [[file:src/initializeJointDynamics.m][here]]. This Matlab function is accessible [[file:../src/initializeJointDynamics.m][here]].
*** Function description *** Function description
:PROPERTIES: :PROPERTIES:
@ -1215,8 +1215,8 @@ This Matlab function is accessible [[file:src/initializeJointDynamics.m][here]].
% %
% Inputs: % Inputs:
% - args - Structure with the following fields: % - args - Structure with the following fields:
% - type_F - 'universal', 'spherical', 'univesal_p', 'spherical_p' % - type_F - 'universal', 'spherical', 'universal_p', 'spherical_p'
% - type_M - 'universal', 'spherical', 'univesal_p', 'spherical_p' % - type_M - 'universal', 'spherical', 'universal_p', 'spherical_p'
% - Kf_M [6x1] - Bending (Rx, Ry) Stiffness for each top joints [(N.m)/rad] % - Kf_M [6x1] - Bending (Rx, Ry) Stiffness for each top joints [(N.m)/rad]
% - Kt_M [6x1] - Torsion (Rz) Stiffness for each top joints [(N.m)/rad] % - Kt_M [6x1] - Torsion (Rz) Stiffness for each top joints [(N.m)/rad]
% - Cf_M [6x1] - Bending (Rx, Ry) Damping of each top joint [(N.m)/(rad/s)] % - Cf_M [6x1] - Bending (Rx, Ry) Damping of each top joint [(N.m)/(rad/s)]
@ -1245,8 +1245,8 @@ This Matlab function is accessible [[file:src/initializeJointDynamics.m][here]].
#+begin_src matlab #+begin_src matlab
arguments arguments
stewart stewart
args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'univesal_p', 'spherical_p'})} = 'universal' args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'universal_p', 'spherical_p'})} = 'universal'
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'univesal_p', 'spherical_p'})} = 'spherical' args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'universal_p', 'spherical_p'})} = 'spherical'
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1) args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1)
args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1) args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1) args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)
@ -1337,12 +1337,12 @@ Rotational Damping
** =initializeInertialSensor=: Initialize the inertial sensor in each strut ** =initializeInertialSensor=: Initialize the inertial sensor in each strut
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/initializeInertialSensor.m :header-args:matlab+: :tangle ../src/initializeInertialSensor.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:initializeInertialSensor>> <<sec:initializeInertialSensor>>
This Matlab function is accessible [[file:src/initializeInertialSensor.m][here]]. This Matlab function is accessible [[file:../src/initializeInertialSensor.m][here]].
*** Function description *** Function description
:PROPERTIES: :PROPERTIES:
@ -1419,12 +1419,12 @@ This Matlab function is accessible [[file:src/initializeInertialSensor.m][here]]
** =displayArchitecture=: 3D plot of the Stewart platform architecture ** =displayArchitecture=: 3D plot of the Stewart platform architecture
:PROPERTIES: :PROPERTIES:
:header-args:matlab+: :tangle src/displayArchitecture.m :header-args:matlab+: :tangle ../src/displayArchitecture.m
:header-args:matlab+: :comments none :mkdirp yes :eval no :header-args:matlab+: :comments none :mkdirp yes :eval no
:END: :END:
<<sec:displayArchitecture>> <<sec:displayArchitecture>>
This Matlab function is accessible [[file:src/displayArchitecture.m][here]]. This Matlab function is accessible [[file:../src/displayArchitecture.m][here]].
*** Function description *** Function description
:PROPERTIES: :PROPERTIES:

View File

@ -12,16 +12,15 @@ The documentation of this toolbox is available [[https://tdehaeze.github.io/stew
#+begin_src emacs-lisp :results none #+begin_src emacs-lisp :results none
(setq org-publish-project-alist (setq org-publish-project-alist
'(("stewart-simscape" '(("stewart-simscape"
:base-directory "./org/" :base-directory "~/Cloud/thesis/matlab/stewart-simscape/org/"
:base-extension "org" :base-extension "org"
:publishing-directory "./docs/" :publishing-directory "~/Cloud/thesis/matlab/stewart-simscape/docs/"
:author "Dehaeze Thomas" :author "Dehaeze Thomas"
:email "dehaeze.thomas@gmail.com/" :email "dehaeze.thomas@gmail.com/"
:recursive nil :recursive nil
:publishing-function org-html-publish-to-html :publishing-function org-html-publish-to-html
:auto-preamble t :auto-preamble t
:auto-sitemap t :auto-sitemap nil
:sitemap-title "Sitemap"
:html-link-up "index.html" :html-link-up "index.html"
:html-link-home "index.html" :html-link-home "index.html"
:with-todo-keywords nil :with-todo-keywords nil

View File

@ -5,8 +5,8 @@ function [stewart] = initializeJointDynamics(stewart, args)
% %
% Inputs: % Inputs:
% - args - Structure with the following fields: % - args - Structure with the following fields:
% - type_F - 'universal', 'spherical', 'univesal_p', 'spherical_p' % - type_F - 'universal', 'spherical', 'universal_p', 'spherical_p'
% - type_M - 'universal', 'spherical', 'univesal_p', 'spherical_p' % - type_M - 'universal', 'spherical', 'universal_p', 'spherical_p'
% - Kf_M [6x1] - Bending (Rx, Ry) Stiffness for each top joints [(N.m)/rad] % - Kf_M [6x1] - Bending (Rx, Ry) Stiffness for each top joints [(N.m)/rad]
% - Kt_M [6x1] - Torsion (Rz) Stiffness for each top joints [(N.m)/rad] % - Kt_M [6x1] - Torsion (Rz) Stiffness for each top joints [(N.m)/rad]
% - Cf_M [6x1] - Bending (Rx, Ry) Damping of each top joint [(N.m)/(rad/s)] % - Cf_M [6x1] - Bending (Rx, Ry) Damping of each top joint [(N.m)/(rad/s)]
@ -29,8 +29,8 @@ function [stewart] = initializeJointDynamics(stewart, args)
arguments arguments
stewart stewart
args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'univesal_p', 'spherical_p'})} = 'universal' args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'universal_p', 'spherical_p'})} = 'universal'
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'univesal_p', 'spherical_p'})} = 'spherical' args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'universal_p', 'spherical_p'})} = 'spherical'
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1) args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1)
args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1) args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1) args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)

View File

@ -16,8 +16,8 @@ function [stewart] = initializeStrutDynamics(stewart, args)
arguments arguments
stewart stewart
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e6*ones(6,1) args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1) args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1*ones(6,1)
end end
stewart.actuators.type = 1; stewart.actuators.type = 1;

View File

@ -1,6 +1,6 @@
function [accelerometer] = initializeZAxisAccelerometer(args) function [accelerometer] = initializeZAxisAccelerometer(args)
arguments arguments
args.mass (1,1) double {mustBeNumeric, mustBePositive} = 1e-3 % [kg] args.mass (1,1) double {mustBeNumeric, mustBePositive} = 5e-3 % [kg]
args.freq (1,1) double {mustBeNumeric, mustBePositive} = 5e3 % [Hz] args.freq (1,1) double {mustBeNumeric, mustBePositive} = 5e3 % [Hz]
end end