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">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<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 name="viewport" content="width=device-width, initial-scale=1" />
<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>
<ul>
<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="#orgbcd94dc">1.3. Obtained Damping</a></li>
<li><a href="#orgb81ed64">1.4. Conclusion</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="#orgaa11f3d">1.3. Obtained Damping</a></li>
<li><a href="#orgcd93557">1.4. Conclusion</a></li>
</ul>
</li>
<li><a href="#org74c7eb4">2. Integral Force Feedback</a>
<ul>
<li><a href="#org04cb1dc">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="#orgb927f01">2.3. Obtained Damping</a></li>
<li><a href="#orgf5f2135">2.4. Conclusion</a></li>
<li><a href="#orga217cbb">2.1. Identification of the Dynamics with perfect Joints</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="#org8dd8d32">2.3. Obtained Damping</a></li>
<li><a href="#org14503d2">2.4. Conclusion</a></li>
</ul>
</li>
<li><a href="#org08917d6">3. Direct Velocity Feedback</a>
<ul>
<li><a href="#orgbfe0af6">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="#orgb4fcddf">3.3. Obtained Damping</a></li>
<li><a href="#org31a4bb6">3.4. Conclusion</a></li>
<li><a href="#org025d6da">3.1. Identification of the Dynamics with perfect Joints</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="#orge3fb12b">3.3. Obtained Damping</a></li>
<li><a href="#org049f0ec">3.4. Conclusion</a></li>
</ul>
</li>
</ul>
@ -322,11 +322,12 @@ stewart = initializeFramesPositions(stewart, <span class="org-string">'H'</span>
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(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 = initializeCylindricalStruts(stewart);
stewart = computeJacobian(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>
</div>
@ -362,20 +363,31 @@ The transfer function from actuator forces to force sensors is shown in Figure <
</div>
</div>
<div id="outline-container-org41a6913" class="outline-3">
<h3 id="org41a6913"><span class="section-number-3">1.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div id="outline-container-orgec430e2" class="outline-3">
<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">
<p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p>
<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.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>};
</pre>
</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>
The new dynamics from force actuator to force sensor is shown in Figure <a href="#org683c779">2</a>.
</p>
@ -388,8 +400,8 @@ The new dynamics from force actuator to force sensor is shown in Figure <a href=
</div>
</div>
<div id="outline-container-orgbcd94dc" class="outline-3">
<h3 id="orgbcd94dc"><span class="section-number-3">1.3</span> Obtained Damping</h3>
<div id="outline-container-orgaa11f3d" class="outline-3">
<h3 id="orgaa11f3d"><span class="section-number-3">1.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-1-3">
<p>
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>
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>
<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><span class="figure-number">Figure 3: </span>Root Locus plot with Decentralized Inertial Control when considering the stiffness of flexible joints (<a href="./figs/root_locus_inertial_rot_stiffness.png">png</a>, <a href="./figs/root_locus_inertial_rot_stiffness.pdf">pdf</a>)</p>
</div>
<div id="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 id="outline-container-orgb81ed64" class="outline-3">
<h3 id="orgb81ed64"><span class="section-number-3">1.4</span> Conclusion</h3>
<div id="outline-container-orgcd93557" class="outline-3">
<h3 id="orgcd93557"><span class="section-number-3">1.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-1-4">
<div class="important">
<p>
Joint stiffness does increase the resonance frequencies of the system but does not change the attainable damping when using relative motion sensors.
We do not have guaranteed stability with Inertial control. This is because of the flexibility inside the internal sensor.
</p>
</div>
@ -442,8 +447,8 @@ Joint stiffness does increase the resonance frequencies of the system but does n
</p>
</div>
<div id="outline-container-org04cb1dc" class="outline-3">
<h3 id="org04cb1dc"><span class="section-number-3">2.1</span> Identification of the Dynamics with perfect Joints</h3>
<div id="outline-container-orga217cbb" class="outline-3">
<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">
<p>
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 = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart);
stewart = initializeAmplifiedStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, <span class="org-string">'disable'</span>, <span class="org-constant">true</span>);
stewart = initializeJointDynamics(stewart, <span class="org-string">'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 = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre>
</div>
@ -487,25 +492,25 @@ G.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string">
</div>
<p>
The transfer function from actuator forces to force sensors is shown in Figure <a href="#org3fca9dd">5</a>.
The transfer function from actuator forces to force sensors is shown in Figure <a href="#org3fca9dd">4</a>.
</p>
<div id="org3fca9dd" class="figure">
<p><img src="figs/iff_plant_coupling.png" alt="iff_plant_coupling.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Transfer function from the Actuator force \(F_{i}\) to the Force sensor of the same leg \(F_{m,i}\) and to the force sensor of the other legs \(F_{m,j}\) with \(i \neq j\) in grey (<a href="./figs/iff_plant_coupling.png">png</a>, <a href="./figs/iff_plant_coupling.pdf">pdf</a>)</p>
<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 id="outline-container-org7f576ce" class="outline-3">
<h3 id="org7f576ce"><span class="section-number-3">2.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div id="outline-container-org5ab90ff" class="outline-3">
<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">
<p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p>
<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.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>};
@ -513,19 +518,30 @@ Gf.OutputName = {<span class="org-string">'Fm1'</span>, <span class="org-string"
</div>
<p>
The new dynamics from force actuator to force sensor is shown in Figure <a href="#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>
<div id="org090868b" class="figure">
<p><img src="figs/iff_plant_flexible_joint_decentralized.png" alt="iff_plant_flexible_joint_decentralized.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Transfer function from the Actuator force \(F_{i}\) to the force sensor \(F_{m,i}\) (<a href="./figs/iff_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/iff_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
<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 id="outline-container-orgb927f01" class="outline-3">
<h3 id="orgb927f01"><span class="section-number-3">2.3</span> Obtained Damping</h3>
<div id="outline-container-org8dd8d32" class="outline-3">
<h3 id="org8dd8d32"><span class="section-number-3">2.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-2-3">
<p>
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>
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>
<div id="orge21bbea" class="figure">
<p><img src="figs/root_locus_iff_rot_stiffness.png" alt="root_locus_iff_rot_stiffness.png" />
</p>
<p><span class="figure-number">Figure 7: </span>Root Locus plot with Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/root_locus_iff_rot_stiffness.png">png</a>, <a href="./figs/root_locus_iff_rot_stiffness.pdf">pdf</a>)</p>
<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 id="org94d6943" class="figure">
<p><img src="figs/pole_damping_gain_iff_rot_stiffness.png" alt="pole_damping_gain_iff_rot_stiffness.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Damping of the poles with respect to the gain of the Decentralized Integral Force Feedback when considering the stiffness of flexible joints (<a href="./figs/pole_damping_gain_iff_rot_stiffness.png">png</a>, <a href="./figs/pole_damping_gain_iff_rot_stiffness.pdf">pdf</a>)</p>
<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 id="outline-container-orgf5f2135" class="outline-3">
<h3 id="orgf5f2135"><span class="section-number-3">2.4</span> Conclusion</h3>
<div id="outline-container-org14503d2" class="outline-3">
<h3 id="org14503d2"><span class="section-number-3">2.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-2-4">
<div class="important">
<p>
@ -579,8 +595,8 @@ Thus, if Integral Force Feedback is to be used in a Stewart platform with flexib
</p>
</div>
<div id="outline-container-orgbfe0af6" class="outline-3">
<h3 id="orgbfe0af6"><span class="section-number-3">3.1</span> Identification of the Dynamics with perfect Joints</h3>
<div id="outline-container-org025d6da" class="outline-3">
<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">
<p>
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 = computeJointsPose(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 = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, <span class="org-string">'type'</span>, <span class="org-string">'none'</span>);
</pre>
</div>
@ -623,26 +640,26 @@ G.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string">
</div>
<p>
The transfer function from actuator forces to relative motion sensors is shown in Figure <a href="#orgcc86228">9</a>.
The transfer function from actuator forces to relative motion sensors is shown in Figure <a href="#orgcc86228">8</a>.
</p>
<div id="orgcc86228" class="figure">
<p><img src="figs/dvf_plant_coupling.png" alt="dvf_plant_coupling.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Transfer function from the Actuator force \(F_{i}\) to the Relative Motion Sensor \(D_{m,j}\) with \(i \neq j\) (<a href="./figs/dvf_plant_coupling.png">png</a>, <a href="./figs/dvf_plant_coupling.pdf">pdf</a>)</p>
<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 id="outline-container-org62438da" class="outline-3">
<h3 id="org62438da"><span class="section-number-3">3.2</span> Effect of the Flexible Joint stiffness on the Dynamics</h3>
<div id="outline-container-org6dd3dfd" class="outline-3">
<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">
<p>
We add some stiffness and damping in the flexible joints and we re-identify the dynamics.
</p>
<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.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>};
@ -650,19 +667,30 @@ Gf.OutputName = {<span class="org-string">'Dm1'</span>, <span class="org-string"
</div>
<p>
The new dynamics from force actuator to relative motion sensor is shown in Figure <a href="#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>
<div id="org5a86447" class="figure">
<p><img src="figs/dvf_plant_flexible_joint_decentralized.png" alt="dvf_plant_flexible_joint_decentralized.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Transfer function from the Actuator force \(F_{i}\) to the relative displacement sensor \(D_{m,i}\) (<a href="./figs/dvf_plant_flexible_joint_decentralized.png">png</a>, <a href="./figs/dvf_plant_flexible_joint_decentralized.pdf">pdf</a>)</p>
<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 id="outline-container-orgb4fcddf" class="outline-3">
<h3 id="orgb4fcddf"><span class="section-number-3">3.3</span> Obtained Damping</h3>
<div id="outline-container-orge3fb12b" class="outline-3">
<h3 id="orge3fb12b"><span class="section-number-3">3.3</span> Obtained Damping</h3>
<div class="outline-text-3" id="text-3-3">
<p>
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>
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>
<div id="org277d60d" class="figure">
<p><img src="figs/root_locus_dvf_rot_stiffness.png" alt="root_locus_dvf_rot_stiffness.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Root Locus plot with Direct Velocity Feedback when considering the Stiffness of flexible joints (<a href="./figs/root_locus_dvf_rot_stiffness.png">png</a>, <a href="./figs/root_locus_dvf_rot_stiffness.pdf">pdf</a>)</p>
</div>
<div id="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>
<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>
</div>
<div id="outline-container-org31a4bb6" class="outline-3">
<h3 id="org31a4bb6"><span class="section-number-3">3.4</span> Conclusion</h3>
<div id="outline-container-org049f0ec" class="outline-3">
<h3 id="org049f0ec"><span class="section-number-3">3.4</span> Conclusion</h3>
<div class="outline-text-3" id="text-3-4">
<div class="important">
<p>
@ -709,7 +730,7 @@ Joint stiffness does increase the resonance frequencies of the system but does n
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-11 mar. 15:50</p>
<p class="date">Created: 2020-02-11 mar. 18:04</p>
</div>
</body>
</html>

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-11 mar. 15:50 -->
<!-- 2020-02-11 mar. 17:52 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Control Study</title>
@ -382,7 +382,7 @@ Kl = Kl <span class="org-type">*</span> eye(6);
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-11 mar. 15:50</p>
<p class="date">Created: 2020-02-11 mar. 17:52</p>
</div>
</body>
</html>

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-11 mar. 15:50 -->
<!-- 2020-02-11 mar. 17:52 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Cubic configuration for the Stewart Platform</title>
@ -349,7 +349,7 @@ stewart = initializeCylindricalPlatforms(stewart, <span class="org-string">'Fpr'
<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><span class="figure-number">Figure 1: </span>Centered cubic configuration</p>
</div>
@ -547,7 +547,7 @@ The Jacobian is estimated at the cube center.
<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><span class="figure-number">Figure 4: </span>Not centered cubic configuration</p>
</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>
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>
</div>
@ -1039,7 +1039,7 @@ stewart.platform_M.Mb = Mb;
</div>
<div id="postamble" class="status">
<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>
</body>
</html>

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-11 mar. 15:50 -->
<!-- 2020-02-11 mar. 17:52 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Dynamics Study</title>
@ -742,7 +742,7 @@ G.OutputName = {<span class="org-string">'L1'</span>, <span class="org-string">'
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-11 mar. 15:50</p>
<p class="date">Created: 2020-02-11 mar. 17:52</p>
</div>
</body>
</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">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<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 name="viewport" content="width=device-width, initial-scale=1" />
<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>
<div id="text-table-of-contents">
<ul>
<li><a href="#org4f5919a">1. Identification</a>
<li><a href="#org36eeb29">1. Identification</a>
<ul>
<li><a href="#org89ad201">1.1. Simscape Model</a></li>
<li><a href="#orgf726654">1.2. Initialize the Stewart Platform</a></li>
<li><a href="#org79afd8d">1.3. Identification</a></li>
<li><a href="#orgb4842a1">1.1. Simscape Model</a></li>
<li><a href="#org4240dd7">1.2. Initialize the Stewart Platform</a></li>
<li><a href="#org5695094">1.3. Identification</a></li>
</ul>
</li>
<li><a href="#orge464de2">2. States as the motion of the mobile platform</a>
<ul>
<li><a href="#orge352695">2.1. Initialize the Stewart Platform</a></li>
<li><a href="#org0dc382a">2.2. Identification</a></li>
<li><a href="#org8d12d8c">2.1. Initialize the Stewart Platform</a></li>
<li><a href="#orgef8d225">2.2. Identification</a></li>
<li><a href="#orge68adea">2.3. Coordinate transformation</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="#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>
</ul>
</li>
<li><a href="#org23d7e7b">3. Simple Model without any sensor</a>
<ul>
<li><a href="#org9366ba4">3.1. Simscape Model</a></li>
<li><a href="#orgf4e4e80">3.2. Initialize the Stewart Platform</a></li>
<li><a href="#org9b90cca">3.3. Identification</a></li>
<li><a href="#org2ad9d50">3.1. Simscape Model</a></li>
<li><a href="#orgbc1f736">3.2. Initialize the Stewart Platform</a></li>
<li><a href="#org43f8fc6">3.3. Identification</a></li>
</ul>
</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">
<h2 id="org4f5919a"><span class="section-number-2">1</span> Identification</h2>
<div id="outline-container-org36eeb29" class="outline-2">
<h2 id="org36eeb29"><span class="section-number-2">1</span> Identification</h2>
<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-org89ad201" class="outline-3">
<h3 id="org89ad201"><span class="section-number-3">1.1</span> Simscape Model</h3>
<div id="outline-container-orgb4842a1" class="outline-3">
<h3 id="orgb4842a1"><span class="section-number-3">1.1</span> Simscape Model</h3>
</div>
<div id="outline-container-orgf726654" class="outline-3">
<h3 id="orgf726654"><span class="section-number-3">1.2</span> Initialize the Stewart Platform</h3>
<div id="outline-container-org4240dd7" class="outline-3">
<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="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform();
@ -422,8 +422,8 @@ stewart = initializeStewartPose(stewart);
</div>
</div>
<div id="outline-container-org79afd8d" class="outline-3">
<h3 id="org79afd8d"><span class="section-number-3">1.3</span> Identification</h3>
<div id="outline-container-org5695094" class="outline-3">
<h3 id="org5695094"><span class="section-number-3">1.3</span> Identification</h3>
<div class="outline-text-3" id="text-1-3">
<div class="org-src-container">
<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>
<div class="outline-text-2" id="text-2">
</div>
<div id="outline-container-orge352695" class="outline-3">
<h3 id="orge352695"><span class="section-number-3">2.1</span> Initialize the Stewart Platform</h3>
<div id="outline-container-org8d12d8c" class="outline-3">
<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="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform();
@ -479,8 +479,8 @@ stewart = initializeStewartPose(stewart);
</div>
</div>
<div id="outline-container-org0dc382a" class="outline-3">
<h3 id="org0dc382a"><span class="section-number-3">2.2</span> Identification</h3>
<div id="outline-container-orgef8d225" class="outline-3">
<h3 id="orgef8d225"><span class="section-number-3">2.2</span> Identification</h3>
<div class="outline-text-3" id="text-2-2">
<div class="org-src-container">
<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 id="outline-container-orgf6eca35" class="outline-3">
<h3 id="orgf6eca35"><span class="section-number-3">2.6</span> Identification</h3>
<div id="outline-container-org009b696" class="outline-3">
<h3 id="org009b696"><span class="section-number-3">2.6</span> Identification</h3>
<div class="outline-text-3" id="text-2-6">
<div class="org-src-container">
<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>
<div class="outline-text-2" id="text-3">
</div>
<div id="outline-container-org9366ba4" class="outline-3">
<h3 id="org9366ba4"><span class="section-number-3">3.1</span> Simscape Model</h3>
<div id="outline-container-org2ad9d50" class="outline-3">
<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="org-src-container">
<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 id="outline-container-orgf4e4e80" class="outline-3">
<h3 id="orgf4e4e80"><span class="section-number-3">3.2</span> Initialize the Stewart Platform</h3>
<div id="outline-container-orgbc1f736" class="outline-3">
<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="org-src-container">
<pre class="src src-matlab">stewart = initializeStewartPlatform();
@ -834,8 +834,8 @@ stewart = initializeStewartPose(stewart);
</div>
</div>
<div id="outline-container-org9b90cca" class="outline-3">
<h3 id="org9b90cca"><span class="section-number-3">3.3</span> Identification</h3>
<div id="outline-container-org43f8fc6" class="outline-3">
<h3 id="org43f8fc6"><span class="section-number-3">3.3</span> Identification</h3>
<div class="outline-text-3" id="text-3-3">
<div class="org-src-container">
<pre class="src src-matlab">stateorder = {...
@ -1096,7 +1096,7 @@ xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="or
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-11 mar. 15:50</p>
<p class="date">Created: 2020-02-11 mar. 17:51</p>
</div>
</body>
</html>

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-11 mar. 15:50 -->
<!-- 2020-02-11 mar. 17:52 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platforms</title>
@ -248,7 +248,11 @@ for the JavaScript code in this tag.
</script>
</head>
<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>
<div id="table-of-contents">
<h2>Table of Contents</h2>
@ -409,7 +413,7 @@ These properties are studied in <a href="cubic-configuration.html">this</a> docu
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-11 mar. 15:50</p>
<p class="date">Created: 2020-02-11 mar. 17:52</p>
</div>
</body>
</html>

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-11 mar. 15:50 -->
<!-- 2020-02-11 mar. 17:50 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Kinematic Study of the Stewart Platform</title>
@ -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="#org86b4b35">3.4. Estimation of the range validity of the approximate inverse kinematics</a>
<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="#org4871c83">3.4.3. Conclusion</a></li>
</ul>
@ -296,7 +296,7 @@ for the JavaScript code in this tag.
</li>
<li><a href="#org63255f9">4. Estimated required actuator stroke from specified platform mobility</a>
<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="#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>
@ -304,7 +304,7 @@ for the JavaScript code in this tag.
</li>
<li><a href="#orgbbbf7b3">5. Estimated platform mobility from specified actuator stroke</a>
<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>
</ul>
</li>
@ -312,8 +312,8 @@ for the JavaScript code in this tag.
<ul>
<li><a href="#org26e8b28">6.1. <code>computeJacobian</code>: Compute the Jacobian Matrix</a>
<ul>
<li><a href="#org2aa5728">Function description</a></li>
<li><a href="#orgdbebf2c">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orgdfb3b70">Function description</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="#orge21dcfc">Compute Stiffness 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>
<ul>
<li><a href="#org89930b7">Theory</a></li>
<li><a href="#org97cfff6">Function description</a></li>
<li><a href="#org61cf152">Optional Parameters</a></li>
<li><a href="#org9318276">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orgfe68a5b">Function description</a></li>
<li><a href="#org7a9a427">Optional Parameters</a></li>
<li><a href="#org27c8a3f">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org0d64c23">Compute</a></li>
</ul>
</li>
<li><a href="#orgf5d8f0b">6.3. <code>forwardKinematicsApprox</code>: Compute the Approximate Forward Kinematics</a>
<ul>
<li><a href="#org8b2e069">Function description</a></li>
<li><a href="#org8029a3d">Optional Parameters</a></li>
<li><a href="#orgca4f1e5">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org1a620fe">Function description</a></li>
<li><a href="#org7be1dc4">Optional Parameters</a></li>
<li><a href="#org9c3aa33">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orge5ade24">Computation</a></li>
</ul>
</li>
@ -666,8 +666,8 @@ This will also gives us the range for which the approximate forward kinematic is
</p>
</div>
<div id="outline-container-orgd52392b" class="outline-4">
<h4 id="orgd52392b"><span class="section-number-4">3.4.1</span> Stewart architecture definition</h4>
<div id="outline-container-org8be231b" class="outline-4">
<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">
<p>
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.
</p>
</div>
<div id="outline-container-org4bde983" class="outline-3">
<h3 id="org4bde983"><span class="section-number-3">4.1</span> Stewart architecture definition</h3>
<div id="outline-container-org4d97075" class="outline-3">
<h3 id="org4d97075"><span class="section-number-3">4.1</span> Stewart architecture definition</h3>
<div class="outline-text-3" id="text-4-1">
<p>
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.
</p>
</div>
<div id="outline-container-orgf4b310d" class="outline-3">
<h3 id="orgf4b310d"><span class="section-number-3">5.1</span> Stewart architecture definition</h3>
<div id="outline-container-orgc3c7024" class="outline-3">
<h3 id="orgc3c7024"><span class="section-number-3">5.1</span> Stewart architecture definition</h3>
<div class="outline-text-3" id="text-5-1">
<p>
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>
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>
</div>
<div id="outline-container-org2aa5728" class="outline-4">
<h4 id="org2aa5728">Function description</h4>
<div class="outline-text-4" id="text-org2aa5728">
<div id="outline-container-orgdfb3b70" class="outline-4">
<h4 id="orgdfb3b70">Function description</h4>
<div class="outline-text-4" id="text-orgdfb3b70">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[stewart]</span> = <span class="org-function-name">computeJacobian</span>(<span class="org-variable-name">stewart</span>)
<span class="org-comment">% computeJacobian -</span>
@ -1318,9 +1318,9 @@ This Matlab function is accessible <a href="src/computeJacobian.m">here</a>.
</div>
</div>
<div id="outline-container-orgdbebf2c" class="outline-4">
<h4 id="orgdbebf2c">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-orgdbebf2c">
<div id="outline-container-org14aeafc" class="outline-4">
<h4 id="org14aeafc">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org14aeafc">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.geometry, <span class="org-string">'As'</span>), <span class="org-string">'stewart.geometry should have attribute As'</span>)
As = stewart.geometry.As;
@ -1388,7 +1388,7 @@ stewart.kinematics.C = C;
</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>
</div>
@ -1428,9 +1428,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div>
</div>
<div id="outline-container-org97cfff6" class="outline-4">
<h4 id="org97cfff6">Function description</h4>
<div class="outline-text-4" id="text-org97cfff6">
<div id="outline-container-orgfe68a5b" class="outline-4">
<h4 id="orgfe68a5b">Function description</h4>
<div class="outline-text-4" id="text-orgfe68a5b">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[Li, dLi]</span> = <span class="org-function-name">inverseKinematics</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% inverseKinematics - Compute the needed length of each strut to have the wanted position and orientation of {B} with respect to {A}</span>
@ -1454,9 +1454,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div>
</div>
<div id="outline-container-org61cf152" class="outline-4">
<h4 id="org61cf152">Optional Parameters</h4>
<div class="outline-text-4" id="text-org61cf152">
<div id="outline-container-org7a9a427" class="outline-4">
<h4 id="org7a9a427">Optional Parameters</h4>
<div class="outline-text-4" id="text-org7a9a427">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1468,9 +1468,9 @@ Otherwise, when the limbs&rsquo; lengths derived yield complex numbers, then the
</div>
</div>
<div id="outline-container-org9318276" class="outline-4">
<h4 id="org9318276">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org9318276">
<div id="outline-container-org27c8a3f" class="outline-4">
<h4 id="org27c8a3f">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org27c8a3f">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.geometry, <span class="org-string">'Aa'</span>), <span class="org-string">'stewart.geometry should have attribute Aa'</span>)
Aa = stewart.geometry.Aa;
@ -1510,13 +1510,13 @@ l = stewart.geometry.l;
</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>
</div>
<div id="outline-container-org8b2e069" class="outline-4">
<h4 id="org8b2e069">Function description</h4>
<div class="outline-text-4" id="text-org8b2e069">
<div id="outline-container-org1a620fe" class="outline-4">
<h4 id="org1a620fe">Function description</h4>
<div class="outline-text-4" id="text-org1a620fe">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-keyword">function</span> <span class="org-variable-name">[P, R]</span> = <span class="org-function-name">forwardKinematicsApprox</span>(<span class="org-variable-name">stewart</span>, <span class="org-variable-name">args</span>)
<span class="org-comment">% forwardKinematicsApprox - Computed the approximate pose of {B} with respect to {A} from the length of each strut and using</span>
@ -1538,9 +1538,9 @@ This Matlab function is accessible <a href="src/forwardKinematicsApprox.m">here<
</div>
</div>
<div id="outline-container-org8029a3d" class="outline-4">
<h4 id="org8029a3d">Optional Parameters</h4>
<div class="outline-text-4" id="text-org8029a3d">
<div id="outline-container-org7be1dc4" class="outline-4">
<h4 id="org7be1dc4">Optional Parameters</h4>
<div class="outline-text-4" id="text-org7be1dc4">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1551,9 +1551,9 @@ This Matlab function is accessible <a href="src/forwardKinematicsApprox.m">here<
</div>
</div>
<div id="outline-container-orgca4f1e5" class="outline-4">
<h4 id="orgca4f1e5">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-orgca4f1e5">
<div id="outline-container-org9c3aa33" class="outline-4">
<h4 id="org9c3aa33">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org9c3aa33">
<div class="org-src-container">
<pre class="src src-matlab">assert(isfield(stewart.kinematics, <span class="org-string">'J'</span>), <span class="org-string">'stewart.kinematics should have attribute J'</span>)
J = stewart.kinematics.J;
@ -1616,7 +1616,7 @@ We then compute the corresponding rotation matrix.
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-11 mar. 15:50</p>
<p class="date">Created: 2020-02-11 mar. 17:50</p>
</div>
</body>
</html>

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-11 mar. 15:50 -->
<!-- 2020-02-11 mar. 17:51 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Simscape Model</title>
@ -281,14 +281,14 @@ for the JavaScript code in this tag.
<ul>
<li><a href="#org4bdfc33">6.1. Z-Axis Geophone</a>
<ul>
<li><a href="#org01abf4c">6.1.1. Working Principle</a></li>
<li><a href="#org5da3f93">6.1.2. Initialization function</a></li>
<li><a href="#org59ef364">6.1.1. Working Principle</a></li>
<li><a href="#orgb3509cd">6.1.2. Initialization function</a></li>
</ul>
</li>
<li><a href="#org99786f1">6.2. Z-Axis Accelerometer</a>
<ul>
<li><a href="#org01c45ef">6.2.1. Working Principle</a></li>
<li><a href="#orga80b649">6.2.2. Initialization function</a></li>
<li><a href="#orgf6e6126">6.2.1. Working Principle</a></li>
<li><a href="#org7b9c8ed">6.2.2. Initialization function</a></li>
</ul>
</li>
</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>
<div class="outline-text-3" id="text-6-1">
</div>
<div id="outline-container-org01abf4c" class="outline-4">
<h4 id="org01abf4c"><span class="section-number-4">6.1.1</span> Working Principle</h4>
<div id="outline-container-org59ef364" class="outline-4">
<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">
<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}\):
@ -548,8 +548,8 @@ We generally want to have the smallest resonant frequency \(\omega_0\) to measur
</div>
</div>
<div id="outline-container-org5da3f93" class="outline-4">
<h4 id="org5da3f93"><span class="section-number-4">6.1.2</span> Initialization function</h4>
<div id="outline-container-orgb3509cd" class="outline-4">
<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">
<p>
<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>
<div class="outline-text-3" id="text-6-2">
</div>
<div id="outline-container-org01c45ef" class="outline-4">
<h4 id="org01c45ef"><span class="section-number-4">6.2.1</span> Working Principle</h4>
<div id="outline-container-orgf6e6126" class="outline-4">
<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">
<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\):
@ -627,8 +627,8 @@ Note that there is trade-off between:
</div>
</div>
<div id="outline-container-orga80b649" class="outline-4">
<h4 id="orga80b649"><span class="section-number-4">6.2.2</span> Initialization function</h4>
<div id="outline-container-org7b9c8ed" class="outline-4">
<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">
<p>
<a id="orge91f65f"></a>
@ -641,7 +641,7 @@ This Matlab function is accessible <a href="../src/initializeZAxisAccelerometer.
<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>)
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>
<span class="org-keyword">end</span>
@ -669,7 +669,7 @@ This Matlab function is accessible <a href="../src/initializeZAxisAccelerometer.
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-02-11 mar. 15:50</p>
<p class="date">Created: 2020-02-11 mar. 17:51</p>
</div>
</body>
</html>

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-11 mar. 15:50 -->
<!-- 2020-02-11 mar. 17:52 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Simulink Project for the Stewart Simscape folder</title>
@ -321,7 +321,7 @@ The project also permits to automatically add defined folder to the path when th
</div>
<div id="postamble" class="status">
<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>
</body>
</html>

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-11 mar. 15:50 -->
<!-- 2020-02-11 mar. 17:52 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Static Analysis</title>
@ -317,7 +317,7 @@ Thus, the system is uncoupled if \(G\) and \(K\) are diagonal.
</div>
<div id="postamble" class="status">
<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>
</body>
</html>

View File

@ -4,7 +4,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<!-- 2020-02-11 mar. 15:50 -->
<!-- 2020-02-11 mar. 17:52 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Stewart Platform - Definition of the Architecture</title>
@ -297,85 +297,85 @@ for the JavaScript code in this tag.
<ul>
<li><a href="#orgd89f0e1">5.1. <code>initializeStewartPlatform</code>: Initialize the Stewart Platform structure</a>
<ul>
<li><a href="#org076d07b">Documentation</a></li>
<li><a href="#org1612620">Function description</a></li>
<li><a href="#org9b53b28">Documentation</a></li>
<li><a href="#org43e5d7b">Function description</a></li>
<li><a href="#orgd567fc1">Initialize the Stewart structure</a></li>
</ul>
</li>
<li><a href="#orgb11894c">5.2. <code>initializeFramesPositions</code>: Initialize the positions of frames {A}, {B}, {F} and {M}</a>
<ul>
<li><a href="#orgf137e52">Documentation</a></li>
<li><a href="#orgef24367">Function description</a></li>
<li><a href="#org8dbfacd">Optional Parameters</a></li>
<li><a href="#org78163aa">Documentation</a></li>
<li><a href="#org58e74af">Function description</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="#orga9b891a">Populate the <code>stewart</code> structure</a></li>
<li><a href="#org29fd7cf">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#org9057387">5.3. <code>generateGeneralConfiguration</code>: Generate a Very General Configuration</a>
<ul>
<li><a href="#org6686470">Documentation</a></li>
<li><a href="#org8e0c109">Function description</a></li>
<li><a href="#orge635bdc">Optional Parameters</a></li>
<li><a href="#org304afd4">Documentation</a></li>
<li><a href="#orgdbbe92d">Function description</a></li>
<li><a href="#orgc9aa5c6">Optional Parameters</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>
</li>
<li><a href="#org861f6de">5.4. <code>computeJointsPose</code>: Compute the Pose of the Joints</a>
<ul>
<li><a href="#orgd00ef90">Documentation</a></li>
<li><a href="#orga8f705b">Function description</a></li>
<li><a href="#org4889a22">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#orgc791fb6">Documentation</a></li>
<li><a href="#org07a9faa">Function description</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="#org4b76b0f">Compute the strut length and orientation</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>
</li>
<li><a href="#org329bef9">5.5. <code>initializeStewartPose</code>: Determine the initial stroke in each leg to have the wanted pose</a>
<ul>
<li><a href="#orgfa57533">Function description</a></li>
<li><a href="#orge534e6f">Optional Parameters</a></li>
<li><a href="#orga659915">Function description</a></li>
<li><a href="#orge99ec9f">Optional Parameters</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>
</li>
<li><a href="#org6ff5b31">5.6. <code>initializeCylindricalPlatforms</code>: Initialize the geometry of the Fixed and Mobile Platforms</a>
<ul>
<li><a href="#org11374c9">Function description</a></li>
<li><a href="#org56dc51c">Optional Parameters</a></li>
<li><a href="#org70b7362">Function description</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="#org120ea12">Populate the <code>stewart</code> structure</a></li>
<li><a href="#org19d03f1">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#org60aa215">5.7. <code>initializeCylindricalStruts</code>: Define the inertia of cylindrical struts</a>
<ul>
<li><a href="#org7a6774e">Function description</a></li>
<li><a href="#orgccd9ddc">Optional Parameters</a></li>
<li><a href="#org686a076">Function description</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="#orgbe49c20">Populate the <code>stewart</code> structure</a></li>
<li><a href="#org601053b">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#org3ad0cd1">5.8. <code>initializeStrutDynamics</code>: Add Stiffness and Damping properties of each strut</a>
<ul>
<li><a href="#org063be5b">Documentation</a></li>
<li><a href="#orgfc83159">Function description</a></li>
<li><a href="#org8756943">Optional Parameters</a></li>
<li><a href="#orgdb94cd8">Documentation</a></li>
<li><a href="#org38928ae">Function description</a></li>
<li><a href="#org5d465fb">Optional Parameters</a></li>
<li><a href="#orgadb8327">Add Stiffness and Damping properties of each strut</a></li>
</ul>
</li>
<li><a href="#orgd8d403e">5.9. <code>initializeAmplifiedStrutDynamics</code>: Add Stiffness and Damping properties of each strut for an amplified piezoelectric actuator</a>
<ul>
<li><a href="#org11b907a">Documentation</a></li>
<li><a href="#orgc9ac7ad">Function description</a></li>
<li><a href="#org2508e19">Optional Parameters</a></li>
<li><a href="#org7e0b516">Documentation</a></li>
<li><a href="#orgd36c473">Function description</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="#org933fa09">Populate the <code>stewart</code> structure</a></li>
<li><a href="#org6cc3cd5">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#orgeb6173a">5.10. <code>initializeJointDynamics</code>: Add Stiffness and Damping properties for spherical joints</a>
<ul>
<li><a href="#orgea4c71f">Function description</a></li>
<li><a href="#orgbb42633">Optional Parameters</a></li>
<li><a href="#org8a14eeb">Function description</a></li>
<li><a href="#orgcfba56a">Optional Parameters</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="#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><a href="#orgea07e0e">5.11. <code>initializeInertialSensor</code>: Initialize the inertial sensor in each strut</a>
<ul>
<li><a href="#org2462fa5">Function description</a></li>
<li><a href="#orgcc6ded4">Optional Parameters</a></li>
<li><a href="#orgd686f52">Function description</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="#org37e6016">Populate the <code>stewart</code> structure</a></li>
<li><a href="#org31b0fc0">Populate the <code>stewart</code> structure</a></li>
</ul>
</li>
<li><a href="#org5266e9d">5.12. <code>displayArchitecture</code>: 3D plot of the Stewart platform architecture</a>
<ul>
<li><a href="#orgdd7c996">Function description</a></li>
<li><a href="#org99b2163">Optional Parameters</a></li>
<li><a href="#org9e5d50c">Check the <code>stewart</code> structure elements</a></li>
<li><a href="#org51076d4">Function description</a></li>
<li><a href="#org6a57a47">Optional Parameters</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="#orgc25a979">Fixed Base 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>
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>
</div>
<div id="outline-container-org076d07b" class="outline-4">
<h4 id="org076d07b">Documentation</h4>
<div class="outline-text-4" id="text-org076d07b">
<div id="outline-container-org9b53b28" class="outline-4">
<h4 id="org9b53b28">Documentation</h4>
<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>
<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 id="outline-container-org1612620" class="outline-4">
<h4 id="org1612620">Function description</h4>
<div class="outline-text-4" id="text-org1612620">
<div id="outline-container-org43e5d7b" class="outline-4">
<h4 id="org43e5d7b">Function description</h4>
<div class="outline-text-4" id="text-org43e5d7b">
<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>()
<span class="org-comment">% initializeStewartPlatform - Initialize the stewart structure</span>
@ -911,15 +911,15 @@ stewart.kinematics = struct();
</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>
</div>
<div id="outline-container-orgf137e52" class="outline-4">
<h4 id="orgf137e52">Documentation</h4>
<div class="outline-text-4" id="text-orgf137e52">
<div id="outline-container-org78163aa" class="outline-4">
<h4 id="org78163aa">Documentation</h4>
<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>
<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 id="outline-container-orgef24367" class="outline-4">
<h4 id="orgef24367">Function description</h4>
<div class="outline-text-4" id="text-orgef24367">
<div id="outline-container-org58e74af" class="outline-4">
<h4 id="org58e74af">Function description</h4>
<div class="outline-text-4" id="text-org58e74af">
<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>)
<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 id="outline-container-org8dbfacd" class="outline-4">
<h4 id="org8dbfacd">Optional Parameters</h4>
<div class="outline-text-4" id="text-org8dbfacd">
<div id="outline-container-org75ad918" class="outline-4">
<h4 id="org75ad918">Optional Parameters</h4>
<div class="outline-text-4" id="text-org75ad918">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -982,9 +982,9 @@ FO_A = MO_B <span class="org-type">+</span> FO_M; <span class="org-comment">% Po
</div>
</div>
<div id="outline-container-orga9b891a" class="outline-4">
<h4 id="orga9b891a">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-orga9b891a">
<div id="outline-container-org29fd7cf" class="outline-4">
<h4 id="org29fd7cf">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org29fd7cf">
<div class="org-src-container">
<pre class="src src-matlab">stewart.geometry.H = H;
stewart.geometry.FO_M = FO_M;
@ -1004,13 +1004,13 @@ stewart.platform_F.FO_A = FO_A;
</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>
</div>
<div id="outline-container-org6686470" class="outline-4">
<h4 id="org6686470">Documentation</h4>
<div class="outline-text-4" id="text-org6686470">
<div id="outline-container-org304afd4" class="outline-4">
<h4 id="org304afd4">Documentation</h4>
<div class="outline-text-4" id="text-org304afd4">
<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}.
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 id="outline-container-org8e0c109" class="outline-4">
<h4 id="org8e0c109">Function description</h4>
<div class="outline-text-4" id="text-org8e0c109">
<div id="outline-container-orgdbbe92d" class="outline-4">
<h4 id="orgdbbe92d">Function description</h4>
<div class="outline-text-4" id="text-orgdbbe92d">
<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>)
<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 id="outline-container-orge635bdc" class="outline-4">
<h4 id="orge635bdc">Optional Parameters</h4>
<div class="outline-text-4" id="text-orge635bdc">
<div id="outline-container-orgc9aa5c6" class="outline-4">
<h4 id="orgc9aa5c6">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgc9aa5c6">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1089,9 +1089,9 @@ Mb = zeros(3,6);
</div>
</div>
<div id="outline-container-orge19481b" class="outline-4">
<h4 id="orge19481b">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-orge19481b">
<div id="outline-container-org1af60d1" class="outline-4">
<h4 id="org1af60d1">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org1af60d1">
<div class="org-src-container">
<pre class="src src-matlab">stewart.platform_F.Fa = Fa;
stewart.platform_M.Mb = Mb;
@ -1109,13 +1109,13 @@ stewart.platform_M.Mb = Mb;
</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>
</div>
<div id="outline-container-orgd00ef90" class="outline-4">
<h4 id="orgd00ef90">Documentation</h4>
<div class="outline-text-4" id="text-orgd00ef90">
<div id="outline-container-orgc791fb6" class="outline-4">
<h4 id="orgc791fb6">Documentation</h4>
<div class="outline-text-4" id="text-orgc791fb6">
<div id="org8ffb841" class="figure">
<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 id="outline-container-orga8f705b" class="outline-4">
<h4 id="orga8f705b">Function description</h4>
<div class="outline-text-4" id="text-orga8f705b">
<div id="outline-container-org07a9faa" class="outline-4">
<h4 id="org07a9faa">Function description</h4>
<div class="outline-text-4" id="text-org07a9faa">
<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>)
<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 id="outline-container-org4889a22" class="outline-4">
<h4 id="org4889a22">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org4889a22">
<div id="outline-container-org1873f06" class="outline-4">
<h4 id="org1873f06">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org1873f06">
<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>)
Fa = stewart.platform_F.Fa;
@ -1233,9 +1233,9 @@ MRb = zeros(3,3,6);
</div>
</div>
<div id="outline-container-orgf383464" class="outline-4">
<h4 id="orgf383464">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-orgf383464">
<div id="outline-container-orgbe4fa22" class="outline-4">
<h4 id="orgbe4fa22">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-orgbe4fa22">
<div class="org-src-container">
<pre class="src src-matlab">stewart.geometry.Aa = Aa;
stewart.geometry.Ab = Ab;
@ -1264,13 +1264,13 @@ stewart.platform_M.MRb = MRb;
</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>
</div>
<div id="outline-container-orgfa57533" class="outline-4">
<h4 id="orgfa57533">Function description</h4>
<div class="outline-text-4" id="text-orgfa57533">
<div id="outline-container-orga659915" class="outline-4">
<h4 id="orga659915">Function description</h4>
<div class="outline-text-4" id="text-orga659915">
<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>)
<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 id="outline-container-orge534e6f" class="outline-4">
<h4 id="orge534e6f">Optional Parameters</h4>
<div class="outline-text-4" id="text-orge534e6f">
<div id="outline-container-orge99ec9f" class="outline-4">
<h4 id="orge99ec9f">Optional Parameters</h4>
<div class="outline-text-4" id="text-orge99ec9f">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1318,9 +1318,9 @@ This Matlab function is accessible <a href="src/initializeStewartPose.m">here</a
</div>
</div>
<div id="outline-container-org5e7e71c" class="outline-4">
<h4 id="org5e7e71c">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org5e7e71c">
<div id="outline-container-org6a8b77e" class="outline-4">
<h4 id="org6a8b77e">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org6a8b77e">
<div class="org-src-container">
<pre class="src src-matlab">stewart.actuators.Leq = dLi;
</pre>
@ -1337,13 +1337,13 @@ This Matlab function is accessible <a href="src/initializeStewartPose.m">here</a
</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>
</div>
<div id="outline-container-org11374c9" class="outline-4">
<h4 id="org11374c9">Function description</h4>
<div class="outline-text-4" id="text-org11374c9">
<div id="outline-container-org70b7362" class="outline-4">
<h4 id="org70b7362">Function description</h4>
<div class="outline-text-4" id="text-org70b7362">
<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>)
<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 id="outline-container-org56dc51c" class="outline-4">
<h4 id="org56dc51c">Optional Parameters</h4>
<div class="outline-text-4" id="text-org56dc51c">
<div id="outline-container-orgee6ed82" class="outline-4">
<h4 id="orgee6ed82">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgee6ed82">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1414,9 +1414,9 @@ This Matlab function is accessible <a href="src/initializeCylindricalPlatforms.m
</div>
</div>
<div id="outline-container-org120ea12" class="outline-4">
<h4 id="org120ea12">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org120ea12">
<div id="outline-container-org19d03f1" class="outline-4">
<h4 id="org19d03f1">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org19d03f1">
<div class="org-src-container">
<pre class="src src-matlab">stewart.platform_F.type = 1;
@ -1448,13 +1448,13 @@ stewart.platform_M.H = args.Mph;
</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>
</div>
<div id="outline-container-org7a6774e" class="outline-4">
<h4 id="org7a6774e">Function description</h4>
<div class="outline-text-4" id="text-org7a6774e">
<div id="outline-container-org686a076" class="outline-4">
<h4 id="org686a076">Function description</h4>
<div class="outline-text-4" id="text-org686a076">
<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>)
<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 id="outline-container-orgccd9ddc" class="outline-4">
<h4 id="orgccd9ddc">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgccd9ddc">
<div id="outline-container-orgda13332" class="outline-4">
<h4 id="orgda13332">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgda13332">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1537,9 +1537,9 @@ I_M = zeros(3, 3, 6); <span class="org-comment">% Inertia of the "mobile" part o
</div>
</div>
<div id="outline-container-orgbe49c20" class="outline-4">
<h4 id="orgbe49c20">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-orgbe49c20">
<div id="outline-container-org601053b" class="outline-4">
<h4 id="org601053b">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org601053b">
<div class="org-src-container">
<pre class="src src-matlab">stewart.struts_M.type = 1;
@ -1571,13 +1571,13 @@ stewart.struts_F.H = Fsh;
</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>
</div>
<div id="outline-container-org063be5b" class="outline-4">
<h4 id="org063be5b">Documentation</h4>
<div class="outline-text-4" id="text-org063be5b">
<div id="outline-container-orgdb94cd8" class="outline-4">
<h4 id="orgdb94cd8">Documentation</h4>
<div class="outline-text-4" id="text-orgdb94cd8">
<div id="orgbbfb204" class="figure">
<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 id="outline-container-orgfc83159" class="outline-4">
<h4 id="orgfc83159">Function description</h4>
<div class="outline-text-4" id="text-orgfc83159">
<div id="outline-container-org38928ae" class="outline-4">
<h4 id="org38928ae">Function description</h4>
<div class="outline-text-4" id="text-org38928ae">
<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>)
<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 id="outline-container-org8756943" class="outline-4">
<h4 id="org8756943">Optional Parameters</h4>
<div class="outline-text-4" id="text-org8756943">
<div id="outline-container-org5d465fb" class="outline-4">
<h4 id="org5d465fb">Optional Parameters</h4>
<div class="outline-text-4" id="text-org5d465fb">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e6<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.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6<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>
</pre>
</div>
@ -1666,13 +1666,13 @@ stewart.actuators.C = args.C;
</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>
</div>
<div id="outline-container-org11b907a" class="outline-4">
<h4 id="org11b907a">Documentation</h4>
<div class="outline-text-4" id="text-org11b907a">
<div id="outline-container-org7e0b516" class="outline-4">
<h4 id="org7e0b516">Documentation</h4>
<div class="outline-text-4" id="text-org7e0b516">
<p>
An amplified piezoelectric actuator is shown in Figure <a href="#org9e7e9ad">13</a>.
</p>
@ -1705,9 +1705,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#orgcf
</div>
</div>
<div id="outline-container-orgc9ac7ad" class="outline-4">
<h4 id="orgc9ac7ad">Function description</h4>
<div class="outline-text-4" id="text-orgc9ac7ad">
<div id="outline-container-orgd36c473" class="outline-4">
<h4 id="orgd36c473">Function description</h4>
<div class="outline-text-4" id="text-orgd36c473">
<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>)
<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 id="outline-container-org2508e19" class="outline-4">
<h4 id="org2508e19">Optional Parameters</h4>
<div class="outline-text-4" id="text-org2508e19">
<div id="outline-container-org3cae5a2" class="outline-4">
<h4 id="org3cae5a2">Optional Parameters</h4>
<div class="outline-text-4" id="text-org3cae5a2">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -1762,9 +1762,9 @@ C = args.Ca <span class="org-type">+</span> args.Cr;
</div>
</div>
<div id="outline-container-org933fa09" class="outline-4">
<h4 id="org933fa09">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org933fa09">
<div id="outline-container-org6cc3cd5" class="outline-4">
<h4 id="org6cc3cd5">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org6cc3cd5">
<div class="org-src-container">
<pre class="src src-matlab">stewart.actuators.type = 2;
@ -1790,13 +1790,13 @@ stewart.actuators.C = K;
</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>
</div>
<div id="outline-container-orgea4c71f" class="outline-4">
<h4 id="orgea4c71f">Function description</h4>
<div class="outline-text-4" id="text-orgea4c71f">
<div id="outline-container-org8a14eeb" class="outline-4">
<h4 id="org8a14eeb">Function description</h4>
<div class="outline-text-4" id="text-org8a14eeb">
<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>)
<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">% Inputs:</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_M - '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', '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">% - 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>
@ -1831,14 +1831,14 @@ This Matlab function is accessible <a href="src/initializeJointDynamics.m">here<
</div>
</div>
<div id="outline-container-orgbb42633" class="outline-4">
<h4 id="orgbb42633">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgbb42633">
<div id="outline-container-orgcfba56a" class="outline-4">
<h4 id="orgcfba56a">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgcfba56a">
<div class="org-src-container">
<pre class="src src-matlab">arguments
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_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_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">'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.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)
@ -1955,13 +1955,13 @@ stewart.joints_F.Ct = args.Cf_F;
</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>
</div>
<div id="outline-container-org2462fa5" class="outline-4">
<h4 id="org2462fa5">Function description</h4>
<div class="outline-text-4" id="text-org2462fa5">
<div id="outline-container-orgd686f52" class="outline-4">
<h4 id="orgd686f52">Function description</h4>
<div class="outline-text-4" id="text-orgd686f52">
<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>)
<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 id="outline-container-orgcc6ded4" class="outline-4">
<h4 id="orgcc6ded4">Optional Parameters</h4>
<div class="outline-text-4" id="text-orgcc6ded4">
<div id="outline-container-org57e140f" class="outline-4">
<h4 id="org57e140f">Optional Parameters</h4>
<div class="outline-text-4" id="text-org57e140f">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -2030,9 +2030,9 @@ This Matlab function is accessible <a href="src/initializeInertialSensor.m">here
</div>
</div>
<div id="outline-container-org37e6016" class="outline-4">
<h4 id="org37e6016">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org37e6016">
<div id="outline-container-org31b0fc0" class="outline-4">
<h4 id="org31b0fc0">Populate the <code>stewart</code> structure</h4>
<div class="outline-text-4" id="text-org31b0fc0">
<div class="org-src-container">
<pre class="src src-matlab">stewart.sensors.inertial = sensor;
</pre>
@ -2049,13 +2049,13 @@ This Matlab function is accessible <a href="src/initializeInertialSensor.m">here
</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>
</div>
<div id="outline-container-orgdd7c996" class="outline-4">
<h4 id="orgdd7c996">Function description</h4>
<div class="outline-text-4" id="text-orgdd7c996">
<div id="outline-container-org51076d4" class="outline-4">
<h4 id="org51076d4">Function description</h4>
<div class="outline-text-4" id="text-org51076d4">
<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>)
<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 id="outline-container-org99b2163" class="outline-4">
<h4 id="org99b2163">Optional Parameters</h4>
<div class="outline-text-4" id="text-org99b2163">
<div id="outline-container-org6a57a47" class="outline-4">
<h4 id="org6a57a47">Optional Parameters</h4>
<div class="outline-text-4" id="text-org6a57a47">
<div class="org-src-container">
<pre class="src src-matlab">arguments
stewart
@ -2105,9 +2105,9 @@ This Matlab function is accessible <a href="src/displayArchitecture.m">here</a>.
</div>
</div>
<div id="outline-container-org9e5d50c" class="outline-4">
<h4 id="org9e5d50c">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org9e5d50c">
<div id="outline-container-org7bc221e" class="outline-4">
<h4 id="org7bc221e">Check the <code>stewart</code> structure elements</h4>
<div class="outline-text-4" id="text-org7bc221e">
<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>)
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 id="postamble" class="status">
<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>
</body>
</html>

View File

@ -46,7 +46,7 @@ The following decentralized active damping techniques are briefly studied:
* Inertial Control
: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
:END:
<<sec:active_damping_inertial>>
@ -76,11 +76,12 @@ The following decentralized active damping techniques are briefly studied:
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'disable', true);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p');
stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'accelerometer', 'freq', 5e3);
#+end_src
#+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]].
#+begin_src matlab :exports none
freqs = logspace(1, 3, 1000);
freqs = logspace(1, 4, 1000);
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]])
[[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.
#+begin_src matlab
stewart = initializeJointDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
Gf = linearize(mdl, io, options);
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
Gf.OutputName = {'Vm1', 'Vm2', 'Vm3', 'Vm4', 'Vm5', 'Vm6'};
#+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]].
#+begin_src matlab :exports none
freqs = logspace(1, 3, 1000);
freqs = logspace(1, 4, 1000);
figure;
@ -166,6 +175,7 @@ The new dynamics from force actuator to force sensor is shown in Figure [[fig:in
hold on;
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(Ga('Vm1', 'F1'), freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
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;
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(Ga('Vm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Amplified Actuator');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
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
\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
gains = logspace(0, 5, 1000);
gains = logspace(2, 5, 100);
figure;
hold on;
plot(real(pole(G)), imag(pole(G)), 'x');
plot(real(pole(Gf)), imag(pole(Gf)), 'x');
plot(real(pole(Ga)), imag(pole(Ga)), 'x');
set(gca,'ColorOrderIndex',1);
plot(real(tzero(G)), imag(tzero(G)), 'o');
plot(real(tzero(Gf)), imag(tzero(Gf)), 'o');
plot(real(tzero(Ga)), imag(tzero(Ga)), 'o');
for i = 1:length(gains)
cl_poles = pole(feedback(G, gains(i)*eye(6)));
set(gca,'ColorOrderIndex',1);
plot(real(cl_poles), imag(cl_poles), '.');
cl_poles = pole(feedback(Gf, gains(i)*eye(6)));
cl_poles = pole(feedback(G, gains(i)*eye(6)));
p1 = plot(real(cl_poles), imag(cl_poles), '.');
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
ylim([0,2000]);
xlim([-2000,0]);
ylim([0, 3*max(imag(pole(G)))]);
xlim([-3*max(imag(pole(G))),0]);
xlabel('Real Part')
ylabel('Imaginary Part')
axis square
legend([p1, p2, p3], {'Perfect Joints', 'Flexible Joints', 'Amplified Actuator'}, 'location', 'northwest');
#+end_src
#+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]])
[[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
#+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
* Integral Force Feedback
: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
:END:
<<sec:active_damping_iff>>
@ -306,12 +295,12 @@ We first initialize the Stewart platform without joint stiffness.
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart);
stewart = initializeAmplifiedStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'disable', true);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p');
stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'none');
#+end_src
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]])
[[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.
#+begin_src matlab
stewart = initializeJointDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
Gf = linearize(mdl, io, options);
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
Gf.OutputName = {'Fm1', 'Fm2', 'Fm3', 'Fm4', 'Fm5', 'Fm6'};
#+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]].
#+begin_src matlab :exports none
freqs = logspace(1, 3, 1000);
freqs = logspace(1, 4, 1000);
figure;
@ -398,6 +395,7 @@ The new dynamics from force actuator to force sensor is shown in Figure [[fig:if
hold on;
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(Ga('Fm1', 'F1'), freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
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;
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(Ga('Fm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Amplified Actuators');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
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;
plot(real(pole(G)), imag(pole(G)), 'x');
plot(real(pole(Gf)), imag(pole(Gf)), 'x');
plot(real(pole(Ga)), imag(pole(Ga)), 'x');
set(gca,'ColorOrderIndex',1);
plot(real(tzero(G)), imag(tzero(G)), 'o');
plot(real(tzero(Gf)), imag(tzero(Gf)), 'o');
plot(real(tzero(Ga)), imag(tzero(Ga)), 'o');
for i = 1:length(gains)
cl_poles = pole(feedback(G, (gains(i)/s)*eye(6)));
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)));
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
ylim([0,inf]);
xlim([-3000,0]);
ylim([0, 1.1*max(imag(pole(G)))]);
xlim([-1.1*max(imag(pole(G))),0]);
xlabel('Real Part')
ylabel('Imaginary Part')
axis square
legend([p1, p2, p3], {'Perfect Joints', 'Flexible Joints', 'Amplified Actuator'}, 'location', 'northwest');
#+end_src
#+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);
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, '.');
p1 = 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, '.');
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
xlabel('Control Gain');
ylabel('Damping of the Poles');
set(gca, 'XScale', 'log');
ylim([0,pi/2]);
legend([p1, p2, p3], {'Perfect Joints', 'Flexible Joints', 'Amplified Actuator'}, 'location', 'northwest');
#+end_src
#+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
: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
:END:
<<sec:active_damping_dvf>>
@ -539,11 +553,12 @@ We first initialize the Stewart platform without joint stiffness.
stewart = generateGeneralConfiguration(stewart);
stewart = computeJointsPose(stewart);
stewart = initializeStrutDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'disable', true);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p');
stewart = initializeCylindricalPlatforms(stewart);
stewart = initializeCylindricalStruts(stewart);
stewart = computeJacobian(stewart);
stewart = initializeStewartPose(stewart);
stewart = initializeInertialSensor(stewart, 'type', 'none');
#+end_src
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]].
#+begin_src matlab :exports none
freqs = logspace(1, 3, 1000);
freqs = logspace(1, 4, 1000);
figure;
@ -612,18 +627,26 @@ The transfer function from actuator forces to relative motion sensors is shown i
[[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.
#+begin_src matlab
stewart = initializeJointDynamics(stewart);
stewart = initializeJointDynamics(stewart, 'type_F', 'universal', 'type_M', 'spherical');
Gf = linearize(mdl, io, options);
Gf.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
Gf.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'};
#+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]].
#+begin_src matlab :exports none
freqs = logspace(1, 3, 1000);
freqs = logspace(1, 4, 1000);
figure;
@ -631,6 +654,7 @@ The new dynamics from force actuator to relative motion sensor is shown in Figur
hold on;
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(Ga('Dm1', 'F1'), freqs, 'Hz'))));
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
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;
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(Ga('Dm1', 'F1'), freqs, 'Hz'))), 'DisplayName', 'Amplified Actuators');
hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
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
\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
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;
plot(real(pole(G)), imag(pole(G)), 'x');
plot(real(pole(Gf)), imag(pole(Gf)), 'x');
plot(real(pole(Ga)), imag(pole(Gf)), 'x');
set(gca,'ColorOrderIndex',1);
plot(real(tzero(G)), imag(tzero(G)), 'o');
plot(real(tzero(Gf)), imag(tzero(Gf)), 'o');
plot(real(tzero(Ga)), imag(tzero(Gf)), 'o');
for i = 1:length(gains)
cl_poles = pole(feedback(G, (gains(i)*s)*eye(6)));
set(gca,'ColorOrderIndex',1);
plot(real(cl_poles), imag(cl_poles), '.');
cl_poles = pole(feedback(Gf, (gains(i)*s)*eye(6)));
cl_poles = pole(feedback(G, (gains(i)*s)*eye(6)));
p1 = plot(real(cl_poles), imag(cl_poles), '.');
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
ylim([0,inf]);
xlim([-3000,0]);
ylim([0, 1.1*max(imag(pole(G)))]);
xlim([-1.1*max(imag(pole(G))),0]);
xlabel('Real Part')
ylabel('Imaginary Part')
axis square
legend([p1, p2, p3], {'Perfect Joints', 'Flexible Joints', 'Amplified Actuator'}, 'location', 'northwest');
#+end_src
#+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]])
[[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
#+begin_important
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
#+caption: Centered cubic configuration
[[file:./figs/3d-cubic-stewart-aligned.png]]
[[file:figs/3d-cubic-stewart-aligned.png]]
#+begin_src matlab :exports none
displayArchitecture(stewart, 'labels', false);
@ -158,7 +158,7 @@ The Jacobian is estimated at the cube center.
#+name: fig:3d-cubic-stewart-misaligned
#+caption: Not centered cubic configuration
[[file:./figs/3d-cubic-stewart-misaligned.png]]
[[file:figs/3d-cubic-stewart-misaligned.png]]
#+begin_src matlab
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
:PROPERTIES:
:header-args:matlab+: :tangle src/generateCubicConfiguration.m
:header-args:matlab+: :tangle ../src/generateCubicConfiguration.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:generateCubicConfiguration>>
This Matlab function is accessible [[file:src/generateCubicConfiguration.m][here]].
This Matlab function is accessible [[file:../src/generateCubicConfiguration.m][here]].
*** Function description
:PROPERTIES:

View File

@ -215,7 +215,7 @@ The function =forwardKinematicsApprox= (described [[sec:forwardKinematicsApprox]
** Estimation of the range validity of the approximate inverse kinematics
: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
:END:
<<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
: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
:END:
<<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
: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
:END:
<<sec:obtained_mobility_from_stroke>>
@ -593,12 +593,12 @@ using this function https://fr.mathworks.com/help/matlab/ref/contour3.html
<<sec:functions>>
** =computeJacobian=: Compute the Jacobian Matrix
:PROPERTIES:
:header-args:matlab+: :tangle src/computeJacobian.m
:header-args:matlab+: :tangle ../src/computeJacobian.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:computeJacobian>>
This Matlab function is accessible [[file:src/computeJacobian.m][here]].
This Matlab function is accessible [[file:../src/computeJacobian.m][here]].
*** Function description
:PROPERTIES:
@ -676,12 +676,12 @@ This Matlab function is accessible [[file:src/computeJacobian.m][here]].
** =inverseKinematics=: Compute Inverse Kinematics
:PROPERTIES:
:header-args:matlab+: :tangle src/inverseKinematics.m
:header-args:matlab+: :tangle ../src/inverseKinematics.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:inverseKinematics>>
This Matlab function is accessible [[file:src/inverseKinematics.m][here]].
This Matlab function is accessible [[file:../src/inverseKinematics.m][here]].
*** Theory
:PROPERTIES:
@ -774,12 +774,12 @@ Otherwise, when the limbs' lengths derived yield complex numbers, then the posit
** =forwardKinematicsApprox=: Compute the Approximate Forward Kinematics
:PROPERTIES:
:header-args:matlab+: :tangle src/forwardKinematicsApprox.m
:header-args:matlab+: :tangle ../src/forwardKinematicsApprox.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:forwardKinematicsApprox>>
This Matlab function is accessible [[file:src/forwardKinematicsApprox.m][here]].
This Matlab function is accessible [[file:../src/forwardKinematicsApprox.m][here]].
*** Function description
:PROPERTIES:

View File

@ -170,7 +170,7 @@ We generally want to have the smallest resonant frequency $\omega_0$ to measure
*** Initialization function
:PROPERTIES:
:header-args:matlab+: :tangle ./src/initializeZAxisGeophone.m
:header-args:matlab+: :tangle ../src/initializeZAxisGeophone.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:initializeZAxisGeophone>>
@ -221,7 +221,7 @@ Note that there is trade-off between:
*** Initialization function
:PROPERTIES:
:header-args:matlab+: :tangle ./src/initializeZAxisAccelerometer.m
:header-args:matlab+: :tangle ../src/initializeZAxisAccelerometer.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:initializeZAxisAccelerometer>>
@ -231,7 +231,7 @@ This Matlab function is accessible [[file:../src/initializeZAxisAccelerometer.m]
#+begin_src matlab
function [accelerometer] = initializeZAxisAccelerometer(args)
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]
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.
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;
projectRoot = project.RootFolder;
@ -75,7 +75,7 @@ The startup script is defined below and is exported to the =project_startup.m= s
#+end_src
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');
#+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
:PROPERTIES:
:header-args:matlab+: :tangle src/initializeStewartPlatform.m
:header-args:matlab+: :tangle ../src/initializeStewartPlatform.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:initializeStewartPlatform>>
This Matlab function is accessible [[file:src/initializeStewartPlatform.m][here]].
This Matlab function is accessible [[file:../src/initializeStewartPlatform.m][here]].
*** Documentation
: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}
:PROPERTIES:
:header-args:matlab+: :tangle src/initializeFramesPositions.m
:header-args:matlab+: :tangle ../src/initializeFramesPositions.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:initializeFramesPositions>>
This Matlab function is accessible [[file:src/initializeFramesPositions.m][here]].
This Matlab function is accessible [[file:../src/initializeFramesPositions.m][here]].
*** Documentation
:PROPERTIES:
@ -435,12 +435,12 @@ This Matlab function is accessible [[file:src/initializeFramesPositions.m][here]
** =generateGeneralConfiguration=: Generate a Very General Configuration
:PROPERTIES:
:header-args:matlab+: :tangle src/generateGeneralConfiguration.m
:header-args:matlab+: :tangle ../src/generateGeneralConfiguration.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:generateGeneralConfiguration>>
This Matlab function is accessible [[file:src/generateGeneralConfiguration.m][here]].
This Matlab function is accessible [[file:../src/generateGeneralConfiguration.m][here]].
*** Documentation
: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
:PROPERTIES:
:header-args:matlab+: :tangle src/computeJointsPose.m
:header-args:matlab+: :tangle ../src/computeJointsPose.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:computeJointsPose>>
This Matlab function is accessible [[file:src/computeJointsPose.m][here]].
This Matlab function is accessible [[file:../src/computeJointsPose.m][here]].
*** Documentation
: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
:PROPERTIES:
:header-args:matlab+: :tangle src/initializeStewartPose.m
:header-args:matlab+: :tangle ../src/initializeStewartPose.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:initializeStewartPose>>
This Matlab function is accessible [[file:src/initializeStewartPose.m][here]].
This Matlab function is accessible [[file:../src/initializeStewartPose.m][here]].
*** Function description
: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
:PROPERTIES:
:header-args:matlab+: :tangle src/initializeCylindricalPlatforms.m
:header-args:matlab+: :tangle ../src/initializeCylindricalPlatforms.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:initializeCylindricalPlatforms>>
This Matlab function is accessible [[file:src/initializeCylindricalPlatforms.m][here]].
This Matlab function is accessible [[file:../src/initializeCylindricalPlatforms.m][here]].
*** Function description
:PROPERTIES:
@ -858,12 +858,12 @@ This Matlab function is accessible [[file:src/initializeCylindricalPlatforms.m][
** =initializeCylindricalStruts=: Define the inertia of cylindrical struts
:PROPERTIES:
:header-args:matlab+: :tangle src/initializeCylindricalStruts.m
:header-args:matlab+: :tangle ../src/initializeCylindricalStruts.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:initializeCylindricalStruts>>
This Matlab function is accessible [[file:src/initializeCylindricalStruts.m][here]].
This Matlab function is accessible [[file:../src/initializeCylindricalStruts.m][here]].
*** Function description
:PROPERTIES:
@ -968,12 +968,12 @@ This Matlab function is accessible [[file:src/initializeCylindricalStruts.m][her
** =initializeStrutDynamics=: Add Stiffness and Damping properties of each strut
:PROPERTIES:
:header-args:matlab+: :tangle src/initializeStrutDynamics.m
:header-args:matlab+: :tangle ../src/initializeStrutDynamics.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:initializeStrutDynamics>>
This Matlab function is accessible [[file:src/initializeStrutDynamics.m][here]].
This Matlab function is accessible [[file:../src/initializeStrutDynamics.m][here]].
*** Documentation
:PROPERTIES:
@ -1049,8 +1049,8 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:actuator_
#+begin_src matlab
arguments
stewart
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e6*ones(6,1)
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
args.K (6,1) double {mustBeNumeric, mustBeNonnegative} = 20e6*ones(6,1)
args.C (6,1) double {mustBeNumeric, mustBeNonnegative} = 2e1*ones(6,1)
end
#+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
:PROPERTIES:
:header-args:matlab+: :tangle src/initializeAmplifiedStrutDynamics.m
:header-args:matlab+: :tangle ../src/initializeAmplifiedStrutDynamics.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:initializeAmplifiedStrutDynamics>>
This Matlab function is accessible [[file:src/initializeAmplifiedStrutDynamics.m][here]].
This Matlab function is accessible [[file:../src/initializeAmplifiedStrutDynamics.m][here]].
*** Documentation
: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
:PROPERTIES:
:header-args:matlab+: :tangle src/initializeJointDynamics.m
:header-args:matlab+: :tangle ../src/initializeJointDynamics.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:initializeJointDynamics>>
This Matlab function is accessible [[file:src/initializeJointDynamics.m][here]].
This Matlab function is accessible [[file:../src/initializeJointDynamics.m][here]].
*** Function description
:PROPERTIES:
@ -1215,8 +1215,8 @@ This Matlab function is accessible [[file:src/initializeJointDynamics.m][here]].
%
% Inputs:
% - args - Structure with the following fields:
% - type_F - 'universal', 'spherical', 'univesal_p', 'spherical_p'
% - type_M - 'universal', 'spherical', 'univesal_p', 'spherical_p'
% - type_F - 'universal', 'spherical', 'universal_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]
% - 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)]
@ -1245,8 +1245,8 @@ This Matlab function is accessible [[file:src/initializeJointDynamics.m][here]].
#+begin_src matlab
arguments
stewart
args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'univesal_p', 'spherical_p'})} = 'universal'
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'univesal_p', 'spherical_p'})} = 'spherical'
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', 'universal_p', 'spherical_p'})} = 'spherical'
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.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
:PROPERTIES:
:header-args:matlab+: :tangle src/initializeInertialSensor.m
:header-args:matlab+: :tangle ../src/initializeInertialSensor.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:initializeInertialSensor>>
This Matlab function is accessible [[file:src/initializeInertialSensor.m][here]].
This Matlab function is accessible [[file:../src/initializeInertialSensor.m][here]].
*** Function description
:PROPERTIES:
@ -1419,12 +1419,12 @@ This Matlab function is accessible [[file:src/initializeInertialSensor.m][here]]
** =displayArchitecture=: 3D plot of the Stewart platform architecture
:PROPERTIES:
:header-args:matlab+: :tangle src/displayArchitecture.m
:header-args:matlab+: :tangle ../src/displayArchitecture.m
:header-args:matlab+: :comments none :mkdirp yes :eval no
:END:
<<sec:displayArchitecture>>
This Matlab function is accessible [[file:src/displayArchitecture.m][here]].
This Matlab function is accessible [[file:../src/displayArchitecture.m][here]].
*** Function description
: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
(setq org-publish-project-alist
'(("stewart-simscape"
:base-directory "./org/"
:base-directory "~/Cloud/thesis/matlab/stewart-simscape/org/"
:base-extension "org"
:publishing-directory "./docs/"
:publishing-directory "~/Cloud/thesis/matlab/stewart-simscape/docs/"
:author "Dehaeze Thomas"
:email "dehaeze.thomas@gmail.com/"
:recursive nil
:publishing-function org-html-publish-to-html
:auto-preamble t
:auto-sitemap t
:sitemap-title "Sitemap"
:auto-sitemap nil
:html-link-up "index.html"
:html-link-home "index.html"
:with-todo-keywords nil

View File

@ -5,8 +5,8 @@ function [stewart] = initializeJointDynamics(stewart, args)
%
% Inputs:
% - args - Structure with the following fields:
% - type_F - 'universal', 'spherical', 'univesal_p', 'spherical_p'
% - type_M - 'universal', 'spherical', 'univesal_p', 'spherical_p'
% - type_F - 'universal', 'spherical', 'universal_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]
% - 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)]
@ -29,8 +29,8 @@ function [stewart] = initializeJointDynamics(stewart, args)
arguments
stewart
args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'univesal_p', 'spherical_p'})} = 'universal'
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'univesal_p', 'spherical_p'})} = 'spherical'
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', 'universal_p', 'spherical_p'})} = 'spherical'
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.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)

View File

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

View File

@ -1,6 +1,6 @@
function [accelerometer] = initializeZAxisAccelerometer(args)
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]
end