Update active damping analysis
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 103 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 80 KiB |
BIN
docs/figs/iff_plant_amplified_actuator_decentralized.pdf
Normal file
BIN
docs/figs/iff_plant_amplified_actuator_decentralized.png
Normal file
After Width: | Height: | Size: 122 KiB |
Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 111 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 121 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 100 KiB |
BIN
docs/figs/pole_damping_gain_iff_rot_amplified_actuator.pdf
Normal file
BIN
docs/figs/pole_damping_gain_iff_rot_amplified_actuator.png
Normal file
After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 119 KiB |
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 71 KiB |
BIN
docs/figs/root_locus_iff_rot_amplified_actuator.pdf
Normal file
BIN
docs/figs/root_locus_iff_rot_amplified_actuator.png
Normal file
After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 43 KiB |
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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 “pure” 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 “pure” rotations or translations</a></li>
|
||||
<li><a href="#orgf6ba90c">4.4. Needed stroke for “combined” 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’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’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’ 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’ 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’ 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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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.
|
||||
|
@ -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:
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|