Compare commits
3 Commits
009481ff75
...
0faaef06e6
Author | SHA1 | Date | |
---|---|---|---|
0faaef06e6 | |||
8173db25fb | |||
1fd35e9449 |
Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 210 KiB After Width: | Height: | Size: 163 KiB |
BIN
docs/figs/simscape_flex_apa.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
docs/figs/simscape_flex_joints.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
docs/figs/simscape_flexible.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
docs/figs/souleille18_model_piezo.png
Normal file
After Width: | Height: | Size: 191 KiB |
@ -3,7 +3,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-08-05 mer. 13:27 -->
|
||||
<!-- 2020-09-01 mar. 13:18 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Stewart Platform with Flexible Elements</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
@ -28,15 +28,48 @@
|
||||
<ul>
|
||||
<li><a href="#orgbdb2a68">1. Simscape Model</a>
|
||||
<ul>
|
||||
<li><a href="#org6768ff7">1.1. Flexible APA</a></li>
|
||||
<li><a href="#org1a0f3d5">1.1. Flexible APA</a></li>
|
||||
<li><a href="#org3650a90">1.2. Flexible Joint</a></li>
|
||||
<li><a href="#org75c496c">1.3. Identification</a></li>
|
||||
<li><a href="#org52d500c">1.4. No Flexible Elements</a></li>
|
||||
<li><a href="#org6800cf5">1.5. Flexible joints</a></li>
|
||||
<li><a href="#orgd80e541">1.6. Flexible APA</a></li>
|
||||
<li><a href="#org17a6e21">1.6. Flexible APA</a></li>
|
||||
<li><a href="#org1609aa1">1.7. Flexible Joints and APA</a></li>
|
||||
<li><a href="#orge9b9e81">1.8. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#org265a0a3">1.9. Integral Force Feedback</a></li>
|
||||
<li><a href="#org238cd25">1.8. Save</a></li>
|
||||
<li><a href="#orge9b9e81">1.9. Direct Velocity Feedback</a></li>
|
||||
<li><a href="#org265a0a3">1.10. Integral Force Feedback</a></li>
|
||||
<li><a href="#org15aa3b2">1.11. Procedure to include flexible elements into Simscape</a></li>
|
||||
<li><a href="#org0b65066">1.12. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org90432f4">2. Control with flexible elements</a>
|
||||
<ul>
|
||||
<li><a href="#org1697b6a">2.1. Flexible APA and Flexible Joint</a></li>
|
||||
<li><a href="#org1a49c82">2.2. Identification</a></li>
|
||||
<li><a href="#org353e7e4">2.3. Decentralized Direct Velocity Feedback</a></li>
|
||||
<li><a href="#orgf84ea43">2.4. HAC</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orge8b5f65">3. Flexible Joint Specifications</a>
|
||||
<ul>
|
||||
<li><a href="#orgfb150a0">3.1. Stewart Platform Initialization</a></li>
|
||||
<li><a href="#orga01758c">3.2. Effect of the Bending Stiffness</a></li>
|
||||
<li><a href="#orga98637e">3.3. Effect of the Torsion Stiffness</a></li>
|
||||
<li><a href="#org4f5ee79">3.4. Effect of the Axial Stiffness</a></li>
|
||||
<li><a href="#org4a85ef8">3.5. Effect of the Radial (Shear) Stiffness</a></li>
|
||||
<li><a href="#orgd0fd2ec">3.6. Comparison of perfect joint and worst specified joint</a></li>
|
||||
<li><a href="#orgbddb83e">3.7. Conclusion</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org0017658">4. Flexible Joint Specifications with the APA300ML</a>
|
||||
<ul>
|
||||
<li><a href="#org96b5fde">4.1. Stewart Platform Initialization</a></li>
|
||||
<li><a href="#orgcb2d2af">4.2. Comparison of perfect joint and worst specified joint</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org649a6c9">5. Relative Motion Sensors</a>
|
||||
<ul>
|
||||
<li><a href="#org36b0a8e">5.1. Stewart Platform Initialization</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@ -47,8 +80,8 @@
|
||||
<h2 id="orgbdb2a68"><span class="section-number-2">1</span> Simscape Model</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
</div>
|
||||
<div id="outline-container-org6768ff7" class="outline-3">
|
||||
<h3 id="org6768ff7"><span class="section-number-3">1.1</span> Flexible APA</h3>
|
||||
<div id="outline-container-org1a0f3d5" class="outline-3">
|
||||
<h3 id="org1a0f3d5"><span class="section-number-3">1.1</span> Flexible APA</h3>
|
||||
<div class="outline-text-3" id="text-1-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">apa = load('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
|
||||
@ -76,12 +109,12 @@
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Number of Modes</td>
|
||||
<td class="org-right">6</td>
|
||||
<td class="org-right">120</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Size of M and K matrices</td>
|
||||
<td class="org-right">48</td>
|
||||
<td class="org-right">162</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -112,23 +145,23 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-right">1.0</td>
|
||||
<td class="org-right">53917.0</td>
|
||||
<td class="org-right">697783.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">-0.015</td>
|
||||
<td class="org-right">0.0</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">2.0</td>
|
||||
<td class="org-right">53918.0</td>
|
||||
<td class="org-right">697784.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">0.015</td>
|
||||
<td class="org-right">0.0</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-right">3.0</td>
|
||||
<td class="org-right">53919.0</td>
|
||||
<td class="org-right">697785.0</td>
|
||||
<td class="org-right">-0.0325</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
@ -136,7 +169,7 @@
|
||||
|
||||
<tr>
|
||||
<td class="org-right">4.0</td>
|
||||
<td class="org-right">53920.0</td>
|
||||
<td class="org-right">697786.0</td>
|
||||
<td class="org-right">-0.0125</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
@ -144,7 +177,7 @@
|
||||
|
||||
<tr>
|
||||
<td class="org-right">5.0</td>
|
||||
<td class="org-right">53921.0</td>
|
||||
<td class="org-right">697787.0</td>
|
||||
<td class="org-right">-0.0075</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
@ -152,7 +185,7 @@
|
||||
|
||||
<tr>
|
||||
<td class="org-right">6.0</td>
|
||||
<td class="org-right">53922.0</td>
|
||||
<td class="org-right">697788.0</td>
|
||||
<td class="org-right">0.0125</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
@ -160,7 +193,7 @@
|
||||
|
||||
<tr>
|
||||
<td class="org-right">7.0</td>
|
||||
<td class="org-right">53923.0</td>
|
||||
<td class="org-right">697789.0</td>
|
||||
<td class="org-right">0.0325</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
@ -174,7 +207,7 @@
|
||||
<h3 id="org3650a90"><span class="section-number-3">1.2</span> Flexible Joint</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">flex_joint = load('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
|
||||
<pre class="src src-matlab">flex_joint = load('./mat/flexor_025.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -235,7 +268,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-right">1.0</td>
|
||||
<td class="org-right">181278.0</td>
|
||||
<td class="org-right">528875.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
@ -243,7 +276,7 @@
|
||||
|
||||
<tr>
|
||||
<td class="org-right">2.0</td>
|
||||
<td class="org-right">181279.0</td>
|
||||
<td class="org-right">528876.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">0.0</td>
|
||||
<td class="org-right">-0.0</td>
|
||||
@ -268,22 +301,22 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-left">Axial Stiffness [N/um]</td>
|
||||
<td class="org-right">119</td>
|
||||
<td class="org-right">94</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Bending Stiffness [Nm/rad]</td>
|
||||
<td class="org-right">33</td>
|
||||
<td class="org-right">5</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Bending Stiffness [Nm/rad]</td>
|
||||
<td class="org-right">33</td>
|
||||
<td class="org-right">5</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Torsion Stiffness [Nm/rad]</td>
|
||||
<td class="org-right">236</td>
|
||||
<td class="org-right">260</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@ -321,7 +354,6 @@ controller = initializeController('type', 'open-loop');
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">disturbances = initializeDisturbances();
|
||||
references = initializeReferences(stewart);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -335,14 +367,24 @@ references = initializeReferences(stewart);
|
||||
stewart = initializeFramesPositions(stewart);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
% stewart = initializeStrutDynamics(stewart, 'K', 1.8e6*ones(6,1));
|
||||
stewart = initializeAmplifiedStrutDynamics(stewart, 'Kr', 0.9e6*ones(6,1), 'Ka', 0.9e6*ones(6,1));
|
||||
stewart = initializeJointDynamics(stewart, 'Kf_M', 33*ones(6,1), 'Kt_M', 235*ones(6,1), 'Kf_F', 33*ones(6,1), 'Kt_F', 235*ones(6,1));
|
||||
stewart = initializeAmplifiedStrutDynamics(stewart, 'Ke', 1.5e6*ones(6,1), 'Ka', 40.5e6*ones(6,1), 'K1', 0.4e6*ones(6,1));
|
||||
stewart = initializeJointDynamics(stewart, 'type_M', 'spherical_3dof', ...
|
||||
'Kr_M', flex_joint.K(1,1)*ones(6,1), ...
|
||||
'Ka_M', flex_joint.K(3,3)*ones(6,1), ...
|
||||
'Kf_M', flex_joint.K(4,4)*ones(6,1), ...
|
||||
'Kt_M', flex_joint.K(6,6)*ones(6,1), ...
|
||||
'type_F', 'universal_3dof', ...
|
||||
'Kr_F', flex_joint.K(1,1)*ones(6,1), ...
|
||||
'Ka_F', flex_joint.K(3,3)*ones(6,1), ...
|
||||
'Kf_F', flex_joint.K(4,4)*ones(6,1), ...
|
||||
'Kt_F', flex_joint.K(6,6)*ones(6,1));
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart);
|
||||
stewart = computeJacobian(stewart);
|
||||
stewart = initializeStewartPose(stewart);
|
||||
stewart = initializeInertialSensor(stewart);
|
||||
|
||||
references = initializeReferences(stewart);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -359,12 +401,19 @@ G.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6', 'Fm1', 'Fm2', 'Fm3', '
|
||||
<div id="outline-container-org6800cf5" class="outline-3">
|
||||
<h3 id="org6800cf5"><span class="section-number-3">1.5</span> Flexible joints</h3>
|
||||
<div class="outline-text-3" id="text-1-5">
|
||||
|
||||
<div id="orga4a49db" class="figure">
|
||||
<p><img src="figs/simscape_flex_joints.png" alt="simscape_flex_joints.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Figure caption</p>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||
stewart = initializeFramesPositions(stewart);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeAmplifiedStrutDynamics(stewart, 'Kr', 0.9e6*ones(6,1), 'Ka', 0.9e6*ones(6,1));
|
||||
stewart = initializeAmplifiedStrutDynamics(stewart, 'Ke', 1.5e6*ones(6,1), 'Ka', 40.5e6*ones(6,1), 'K1', 0.4e6*ones(6,1));
|
||||
stewart = initializeJointDynamics(stewart, 'type_F', 'flexible', 'K_F', flex_joint.K, 'M_F', flex_joint.M, 'n_xyz_F', flex_joint.n_xyz, 'xi_F', 0.1, 'step_file_F', 'mat/flexor_ID16.STEP', 'type_M', 'flexible', 'K_M', flex_joint.K, 'M_M', flex_joint.M, 'n_xyz_M', flex_joint.n_xyz, 'xi_M', 0.1, 'step_file_M', 'mat/flexor_ID16.STEP');
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart);
|
||||
@ -384,16 +433,32 @@ Gj.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6', 'Fm1', 'Fm2', 'Fm3',
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd80e541" class="outline-3">
|
||||
<h3 id="orgd80e541"><span class="section-number-3">1.6</span> Flexible APA</h3>
|
||||
<div id="outline-container-org17a6e21" class="outline-3">
|
||||
<h3 id="org17a6e21"><span class="section-number-3">1.6</span> Flexible APA</h3>
|
||||
<div class="outline-text-3" id="text-1-6">
|
||||
|
||||
<div id="org774a034" class="figure">
|
||||
<p><img src="figs/simscape_flex_apa.png" alt="simscape_flex_apa.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Figure caption</p>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||
stewart = initializeFramesPositions(stewart);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeFlexibleStrutDynamics(stewart, 'H', 0.03, 'K', apa.K, 'M', apa.M, 'n_xyz', apa.n_xyz, 'xi', 0.1, 'step_file', 'mat/APA300ML.STEP');
|
||||
stewart = initializeJointDynamics(stewart, 'Kf_M', 33*ones(6,1), 'Kt_M', 235, 'Kf_F', 33*ones(6,1), 'Kt_F', 235);
|
||||
stewart = initializeFlexibleStrutDynamics(stewart, 'H', 0.03, 'K', apa.K, 'M', apa.M, 'n_xyz', apa.n_xyz, 'xi', 0.1, 'Gf', -2.65e7, 'step_file', 'mat/APA300ML.STEP');
|
||||
stewart = initializeJointDynamics(stewart, 'type_M', 'spherical_3dof', ...
|
||||
'Kr_M', flex_joint.K(1,1)*ones(6,1), ...
|
||||
'Ka_M', flex_joint.K(3,3)*ones(6,1), ...
|
||||
'Kf_M', flex_joint.K(4,4)*ones(6,1), ...
|
||||
'Kt_M', flex_joint.K(6,6)*ones(6,1), ...
|
||||
'type_F', 'universal_3dof', ...
|
||||
'Kr_F', flex_joint.K(1,1)*ones(6,1), ...
|
||||
'Ka_F', flex_joint.K(3,3)*ones(6,1), ...
|
||||
'Kf_F', flex_joint.K(4,4)*ones(6,1), ...
|
||||
'Kt_F', flex_joint.K(6,6)*ones(6,1));
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart, 'type_F', 'none', 'type_M', 'none');
|
||||
stewart = computeJacobian(stewart);
|
||||
@ -415,12 +480,19 @@ Ga.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6', 'Fm1', 'Fm2', 'Fm3',
|
||||
<div id="outline-container-org1609aa1" class="outline-3">
|
||||
<h3 id="org1609aa1"><span class="section-number-3">1.7</span> Flexible Joints and APA</h3>
|
||||
<div class="outline-text-3" id="text-1-7">
|
||||
|
||||
<div id="orga828b5f" class="figure">
|
||||
<p><img src="figs/simscape_flexible.png" alt="simscape_flexible.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Figure caption</p>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||
stewart = initializeFramesPositions(stewart);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeFlexibleStrutDynamics(stewart, 'H', 0.03, 'K', apa.K, 'M', apa.M, 'n_xyz', apa.n_xyz, 'xi', 0.1, 'step_file', 'mat/APA300ML.STEP');
|
||||
stewart = initializeFlexibleStrutDynamics(stewart, 'H', 0.03, 'K', apa.K, 'M', apa.M, 'n_xyz', apa.n_xyz, 'xi', 0.1, 'Gf', -2.65e7, 'step_file', 'mat/APA300ML.STEP');
|
||||
stewart = initializeJointDynamics(stewart, 'type_F', 'flexible', 'K_F', flex_joint.K, 'M_F', flex_joint.M, 'n_xyz_F', flex_joint.n_xyz, 'xi_F', 0.1, 'step_file_F', 'mat/flexor_ID16.STEP', 'type_M', 'flexible', 'K_M', flex_joint.K, 'M_M', flex_joint.M, 'n_xyz_M', flex_joint.n_xyz, 'xi_M', 0.1, 'step_file_M', 'mat/flexor_ID16.STEP');
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart, 'type_F', 'none', 'type_M', 'none');
|
||||
@ -439,26 +511,517 @@ Gf.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6', 'Fm1', 'Fm2', 'Fm3',
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge9b9e81" class="outline-3">
|
||||
<h3 id="orge9b9e81"><span class="section-number-3">1.8</span> Direct Velocity Feedback</h3>
|
||||
<div id="outline-container-org238cd25" class="outline-3">
|
||||
<h3 id="org238cd25"><span class="section-number-3">1.8</span> Save</h3>
|
||||
<div class="outline-text-3" id="text-1-8">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">save('./mat/flexible_stewart_platform.mat', 'G', 'Gj', 'Ga', 'Gf');
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge9b9e81" class="outline-3">
|
||||
<h3 id="orge9b9e81"><span class="section-number-3">1.9</span> Direct Velocity Feedback</h3>
|
||||
<div class="outline-text-3" id="text-1-9">
|
||||
|
||||
<div id="org2d35259" class="figure">
|
||||
<p><img src="figs/flexible_elements_effect_dvf.png" alt="flexible_elements_effect_dvf.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Change of the DVF plant dynamics with the added flexible elements</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Change of the DVF plant dynamics with the added flexible elements</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org265a0a3" class="outline-3">
|
||||
<h3 id="org265a0a3"><span class="section-number-3">1.9</span> Integral Force Feedback</h3>
|
||||
<div class="outline-text-3" id="text-1-9">
|
||||
<h3 id="org265a0a3"><span class="section-number-3">1.10</span> Integral Force Feedback</h3>
|
||||
<div class="outline-text-3" id="text-1-10">
|
||||
|
||||
<div id="org81cc646" class="figure">
|
||||
<p><img src="figs/flexible_elements_effect_iff.png" alt="flexible_elements_effect_iff.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Change of the IFF plant dynamics with the added flexible elements</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Change of the IFF plant dynamics with the added flexible elements</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org15aa3b2" class="outline-3">
|
||||
<h3 id="org15aa3b2"><span class="section-number-3">1.11</span> Procedure to include flexible elements into Simscape</h3>
|
||||
<div class="outline-text-3" id="text-1-11">
|
||||
<p>
|
||||
In order to model a flexible element with only few mass-spring-damper elements:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>FEM of the flexible element</li>
|
||||
<li>Super-Element extraction</li>
|
||||
<li>Parameters to extract
|
||||
<ul class="org-ul">
|
||||
<li>For the flexible joint: axial, shear, bending and torsion stiffnesses</li>
|
||||
<li>For the APA: k1, ka, ke, c1</li>
|
||||
</ul></li>
|
||||
<li>This can be done directly from the Stiffness matrix or using identification from a simple Simscape model</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0b65066" class="outline-3">
|
||||
<h3 id="org0b65066"><span class="section-number-3">1.12</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-1-12">
|
||||
<div class="important">
|
||||
<p>
|
||||
The results seems to indicate that the model is well represented with only few degrees of freedom.
|
||||
This permit to have a relatively sane number of states for the model.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org90432f4" class="outline-2">
|
||||
<h2 id="org90432f4"><span class="section-number-2">2</span> Control with flexible elements</h2>
|
||||
<div class="outline-text-2" id="text-2">
|
||||
</div>
|
||||
<div id="outline-container-org1697b6a" class="outline-3">
|
||||
<h3 id="org1697b6a"><span class="section-number-3">2.1</span> Flexible APA and Flexible Joint</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">apa = load('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
|
||||
flex_joint = load('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||
stewart = initializeFramesPositions(stewart);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeFlexibleStrutDynamics(stewart, 'H', 0.03, 'K', apa.K, 'M', apa.M, 'n_xyz', apa.n_xyz, 'xi', 0.1, 'step_file', 'mat/APA300ML.STEP');
|
||||
stewart = initializeJointDynamics(stewart, 'type_F', 'flexible', 'K_F', flex_joint.K, 'M_F', flex_joint.M, 'n_xyz_F', flex_joint.n_xyz, 'xi_F', 0.1, 'step_file_F', 'mat/flexor_ID16.STEP', 'type_M', 'flexible', 'K_M', flex_joint.K, 'M_M', flex_joint.M, 'n_xyz_M', flex_joint.n_xyz, 'xi_M', 0.1, 'step_file_M', 'mat/flexor_ID16.STEP');
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart, 'type_F', 'none', 'type_M', 'none');
|
||||
stewart = computeJacobian(stewart);
|
||||
stewart = initializeStewartPose(stewart);
|
||||
stewart = initializeInertialSensor(stewart);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground = initializeGround('type', 'none');
|
||||
payload = initializePayload('type', 'rigid', 'm', 50);
|
||||
controller = initializeController('type', 'open-loop');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">disturbances = initializeDisturbances();
|
||||
references = initializeReferences(stewart);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1a49c82" class="outline-3">
|
||||
<h3 id="org1a49c82"><span class="section-number-3">2.2</span> Identification</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
And we identify the dynamics from force actuators to force sensors.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Options for Linearized
|
||||
options = linearizeOptions;
|
||||
options.SampleTime = 0;
|
||||
|
||||
%% Name of the Simulink File
|
||||
mdl = 'stewart_platform_model';
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Controller'], 1, 'openinput'); io_i = io_i + 1; % Actuator Force Inputs [N]
|
||||
io(io_i) = linio([mdl, '/Stewart Platform'], 1, 'openoutput', [], 'dLm'); io_i = io_i + 1; % Relative Displacement Outputs [m]
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">G = -linearize(mdl, io, options);
|
||||
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
G.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6'};
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org353e7e4" class="outline-3">
|
||||
<h3 id="org353e7e4"><span class="section-number-3">2.3</span> Decentralized Direct Velocity Feedback</h3>
|
||||
<div class="outline-text-3" id="text-2-3">
|
||||
<p>
|
||||
Controller Design
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kl = -1e5*s/(1 + s/2/pi/2e2)/(1 + s/2/pi/5e2) * eye(6);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">isstable(feedback(G(1:6,1:6)*Kl, eye(6), -1))
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<pre class="example">
|
||||
1
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf84ea43" class="outline-3">
|
||||
<h3 id="orgf84ea43"><span class="section-number-3">2.4</span> HAC</h3>
|
||||
<div class="outline-text-3" id="text-2-4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kx = tf(zeros(6));
|
||||
|
||||
controller = initializeController('type', 'ref-track-hac-dvf');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">%% Name of the Simulink File
|
||||
mdl = 'stewart_platform_model';
|
||||
|
||||
%% Input/Output definition
|
||||
clear io; io_i = 1;
|
||||
io(io_i) = linio([mdl, '/Controller'], 1, 'input'); io_i = io_i + 1; % Actuator Force Inputs [N]
|
||||
io(io_i) = linio([mdl, '/Relative Motion Sensor'], 1, 'openoutput'); io_i = io_i + 1; % Relative Displacement Outputs [m]
|
||||
|
||||
%% Run the linearization
|
||||
G = linearize(mdl, io);
|
||||
G.InputName = {'F1', 'F2', 'F3', 'F4', 'F5', 'F6'};
|
||||
G.OutputName = {'Dx', 'Dy', 'Dz', 'Rx', 'Ry', 'Rz'};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Gl = -stewart.kinematics.J*G;
|
||||
Gl.OutputName = {'D1', 'D2', 'D3', 'D4', 'D5', 'D6'};
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">wc = 2*pi*300;
|
||||
Kl = diag(1./diag(abs(freqresp(Gl, wc)))) * wc/s * 1/(1 + s/3/wc);
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge8b5f65" class="outline-2">
|
||||
<h2 id="orge8b5f65"><span class="section-number-2">3</span> Flexible Joint Specifications</h2>
|
||||
<div class="outline-text-2" id="text-3">
|
||||
</div>
|
||||
<div id="outline-container-orgfb150a0" class="outline-3">
|
||||
<h3 id="orgfb150a0"><span class="section-number-3">3.1</span> Stewart Platform Initialization</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||
stewart = initializeFramesPositions(stewart);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeAmplifiedStrutDynamics(stewart, 'Ke', 1.5e6*ones(6,1), 'Ka', 43e6*ones(6,1), 'K1', 0.4e6*ones(6,1), 'C1', 10*ones(6,1));
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart);
|
||||
stewart = computeJacobian(stewart);
|
||||
stewart = initializeStewartPose(stewart);
|
||||
stewart = initializeInertialSensor(stewart);
|
||||
|
||||
references = initializeReferences(stewart);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground = initializeGround('type', 'none');
|
||||
payload = initializePayload('type', 'rigid', 'm', 50);
|
||||
controller = initializeController('type', 'open-loop');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">disturbances = initializeDisturbances();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">open('stewart_platform_model.slx')
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga01758c" class="outline-3">
|
||||
<h3 id="orga01758c"><span class="section-number-3">3.2</span> Effect of the Bending Stiffness</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kfs = [1, 10, 100, 1000]; % [Nm/rad]
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga98637e" class="outline-3">
|
||||
<h3 id="orga98637e"><span class="section-number-3">3.3</span> Effect of the Torsion Stiffness</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kts = [10, 100, 500, 1000]; % [Nm/rad]
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4f5ee79" class="outline-3">
|
||||
<h3 id="org4f5ee79"><span class="section-number-3">3.4</span> Effect of the Axial Stiffness</h3>
|
||||
<div class="outline-text-3" id="text-3-4">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Kas = [1e6, 1e7, 1e8, 5e8, 1e9]; % [N/m]
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org4a85ef8" class="outline-3">
|
||||
<h3 id="org4a85ef8"><span class="section-number-3">3.5</span> Effect of the Radial (Shear) Stiffness</h3>
|
||||
<div class="outline-text-3" id="text-3-5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">Krs = [1e4, 1e5, 1e6, 1e7]; % [N/m]
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd0fd2ec" class="outline-3">
|
||||
<h3 id="orgd0fd2ec"><span class="section-number-3">3.6</span> Comparison of perfect joint and worst specified joint</h3>
|
||||
</div>
|
||||
<div id="outline-container-orgbddb83e" class="outline-3">
|
||||
<h3 id="orgbddb83e"><span class="section-number-3">3.7</span> Conclusion</h3>
|
||||
<div class="outline-text-3" id="text-3-7">
|
||||
<p>
|
||||
Qualitatively:
|
||||
</p>
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-left"> </th>
|
||||
<th scope="col" class="org-left"><b>Specification</b></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-left">Axial Stiffness</td>
|
||||
<td class="org-left">Much larger than the Actuator axial stiffness</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Shear Stiffness</td>
|
||||
<td class="org-left"> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Bending Stiffness</td>
|
||||
<td class="org-left">Much smaller than the Actuator bending stiffness</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Torsion Stiffness</td>
|
||||
<td class="org-left"> </td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Quantitatively:
|
||||
</p>
|
||||
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-left"> </th>
|
||||
<th scope="col" class="org-left"><b>Specification</b></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-left">Axial Stiffness</td>
|
||||
<td class="org-left">> 200 [N/um]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Shear Stiffness</td>
|
||||
<td class="org-left">> 1 [N/um]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Bending Stiffness</td>
|
||||
<td class="org-left">< 100 [Nm/rad]</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">Torsion Stiffness</td>
|
||||
<td class="org-left">< 500 [Nm/rad]</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0017658" class="outline-2">
|
||||
<h2 id="org0017658"><span class="section-number-2">4</span> Flexible Joint Specifications with the APA300ML</h2>
|
||||
<div class="outline-text-2" id="text-4">
|
||||
</div>
|
||||
<div id="outline-container-org96b5fde" class="outline-3">
|
||||
<h3 id="org96b5fde"><span class="section-number-3">4.1</span> Stewart Platform Initialization</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">apa = load('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||
stewart = initializeFramesPositions(stewart);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
stewart = initializeFlexibleStrutDynamics(stewart, 'H', 0.03, 'K', apa.K, 'M', apa.M, 'n_xyz', apa.n_xyz, 'xi', 0.1, 'step_file', 'mat/APA300ML.STEP');
|
||||
stewart = initializeCylindricalPlatforms(stewart);
|
||||
stewart = initializeCylindricalStruts(stewart, 'type_F', 'none', 'type_M', 'none');
|
||||
stewart = computeJacobian(stewart);
|
||||
stewart = initializeStewartPose(stewart);
|
||||
stewart = initializeInertialSensor(stewart);
|
||||
|
||||
references = initializeReferences(stewart);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground = initializeGround('type', 'none');
|
||||
payload = initializePayload('type', 'rigid', 'm', 50);
|
||||
controller = initializeController('type', 'open-loop');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">disturbances = initializeDisturbances();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">open('stewart_platform_model.slx')
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcb2d2af" class="outline-3">
|
||||
<h3 id="orgcb2d2af"><span class="section-number-3">4.2</span> Comparison of perfect joint and worst specified joint</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org649a6c9" class="outline-2">
|
||||
<h2 id="org649a6c9"><span class="section-number-2">5</span> Relative Motion Sensors</h2>
|
||||
<div class="outline-text-2" id="text-5">
|
||||
</div>
|
||||
<div id="outline-container-org36b0a8e" class="outline-3">
|
||||
<h3 id="org36b0a8e"><span class="section-number-3">5.1</span> Stewart Platform Initialization</h3>
|
||||
<div class="outline-text-3" id="text-5-1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">apa = load('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeStewartPlatform();
|
||||
stewart = initializeFramesPositions(stewart);
|
||||
stewart = generateGeneralConfiguration(stewart);
|
||||
stewart = computeJointsPose(stewart);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeAmplifiedStrutDynamics(stewart, 'Ke', 1.5e6*ones(6,1), 'Ka', 43e6*ones(6,1), 'K1', 0.4e6*ones(6,1), 'C1', 10*ones(6,1));
|
||||
% stewart = initializeFlexibleStrutDynamics(stewart, 'H', 0.03, 'K', apa.K, 'M', apa.M, 'n_xyz', apa.n_xyz, 'xi', 0.1, 'step_file', 'mat/APA300ML.STEP');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeJointDynamics(stewart, 'type_F', 'universal_3dof', ...
|
||||
'type_M', 'spherical_3dof', ...
|
||||
'Kf_M', 100*ones(6,1), ...
|
||||
'Kt_M', 500*ones(6,1), ...
|
||||
'Kf_F', 100*ones(6,1), ...
|
||||
'Kt_F', 500*ones(6,1), ...
|
||||
'Ka_M', 200e6*ones(6,1), ...
|
||||
'Kr_M', 1e6*ones(6,1), ...
|
||||
'Ka_F', 200e6*ones(6,1), ...
|
||||
'Kr_F', 1e6*ones(6,1));
|
||||
% stewart = initializeJointDynamics(stewart, 'type_F', 'universal_3dof', ...
|
||||
% 'type_M', 'spherical_3dof', ...
|
||||
% 'Kf_M', 100*ones(6,1), ...
|
||||
% 'Kt_M', 500*ones(6,1), ...
|
||||
% 'Kf_F', 100*ones(6,1), ...
|
||||
% 'Kt_F', 500*ones(6,1), ...
|
||||
% 'Ka_M', 1e6*ones(6,1), ...
|
||||
% 'Kr_M', 1e6*ones(6,1), ...
|
||||
% 'Ka_F', 1e6*ones(6,1), ...
|
||||
% 'Kr_F', 1e6*ones(6,1));
|
||||
% stewart = initializeJointDynamics(stewart, 'type_F', 'universal_p', 'type_M', 'spherical_p');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeCylindricalPlatforms(stewart);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = initializeCylindricalStruts(stewart);
|
||||
% stewart = initializeCylindricalStruts(stewart, 'type_F', 'none', 'type_M', 'none');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart = computeJacobian(stewart);
|
||||
stewart = initializeStewartPose(stewart);
|
||||
stewart = initializeInertialSensor(stewart);
|
||||
|
||||
references = initializeReferences(stewart);
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">ground = initializeGround('type', 'none');
|
||||
payload = initializePayload('type', 'rigid', 'm', 50);
|
||||
controller = initializeController('type', 'open-loop');
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">disturbances = initializeDisturbances();
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">open('stewart_platform_model.slx')
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -466,7 +1029,7 @@ Gf.OutputName = {'Dm1', 'Dm2', 'Dm3', 'Dm4', 'Dm5', 'Dm6', 'Fm1', 'Fm2', 'Fm3',
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-08-05 mer. 13:27</p>
|
||||
<p class="date">Created: 2020-09-01 mar. 13:18</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,7 +3,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-08-05 mer. 16:23 -->
|
||||
<!-- 2020-09-01 mar. 13:18 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Stewart Platform - Definition of the Architecture</title>
|
||||
<meta name="generator" content="Org mode" />
|
||||
@ -63,94 +63,94 @@
|
||||
<ul>
|
||||
<li><a href="#orgd89f0e1">5.1. <code>initializeStewartPlatform</code>: Initialize the Stewart Platform structure</a>
|
||||
<ul>
|
||||
<li><a href="#orgd9476c2">Documentation</a></li>
|
||||
<li><a href="#orgd5f2c51">Function description</a></li>
|
||||
<li><a href="#orgb291f1f">Documentation</a></li>
|
||||
<li><a href="#orgcf374f3">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="#orge1df9c8">Documentation</a></li>
|
||||
<li><a href="#org3913fad">Function description</a></li>
|
||||
<li><a href="#org84462af">Optional Parameters</a></li>
|
||||
<li><a href="#org4135d2d">Documentation</a></li>
|
||||
<li><a href="#org66f1ebb">Function description</a></li>
|
||||
<li><a href="#orgd50a826">Optional Parameters</a></li>
|
||||
<li><a href="#org458592e">Compute the position of each frame</a></li>
|
||||
<li><a href="#org1c152b9">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#org51c0261">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="#org2b8fb20">Documentation</a></li>
|
||||
<li><a href="#orga75f162">Function description</a></li>
|
||||
<li><a href="#org8c0fa82">Optional Parameters</a></li>
|
||||
<li><a href="#org967b04c">Documentation</a></li>
|
||||
<li><a href="#orge721b0e">Function description</a></li>
|
||||
<li><a href="#orgfe31977">Optional Parameters</a></li>
|
||||
<li><a href="#org232e4c2">Compute the pose</a></li>
|
||||
<li><a href="#org7d2bd07">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#org7ee3958">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="#orga2f43b2">Documentation</a></li>
|
||||
<li><a href="#orge08cff0">Function description</a></li>
|
||||
<li><a href="#org80cc25e">Optional Parameters</a></li>
|
||||
<li><a href="#orge80fdc3">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#orgc1c4d18">Documentation</a></li>
|
||||
<li><a href="#orgc7c8a40">Function description</a></li>
|
||||
<li><a href="#orga2673d1">Optional Parameters</a></li>
|
||||
<li><a href="#org772540a">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="#org6b7e5e3">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#org0e8aa0a">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="#orgf36d5d7">Function description</a></li>
|
||||
<li><a href="#orgdf77824">Optional Parameters</a></li>
|
||||
<li><a href="#org609919f">Function description</a></li>
|
||||
<li><a href="#orgb26889a">Optional Parameters</a></li>
|
||||
<li><a href="#org3d3ef62">Use the Inverse Kinematic function</a></li>
|
||||
<li><a href="#orge1d36d3">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#org8df3429">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="#org3f08708">Function description</a></li>
|
||||
<li><a href="#orgc95505f">Optional Parameters</a></li>
|
||||
<li><a href="#orgcffde44">Function description</a></li>
|
||||
<li><a href="#org017553c">Optional Parameters</a></li>
|
||||
<li><a href="#org25a390a">Compute the Inertia matrices of platforms</a></li>
|
||||
<li><a href="#orga790eb3">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#org943c8fa">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="#org9ef7d35">Function description</a></li>
|
||||
<li><a href="#orgf9adc42">Optional Parameters</a></li>
|
||||
<li><a href="#org4d297c7">Function description</a></li>
|
||||
<li><a href="#org2a5dca5">Optional Parameters</a></li>
|
||||
<li><a href="#orgc056498">Compute the properties of the cylindrical struts</a></li>
|
||||
<li><a href="#orgd6e7b8e">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#orge3443c7">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="#orgb41c182">Documentation</a></li>
|
||||
<li><a href="#org7469459">Function description</a></li>
|
||||
<li><a href="#orgd6e68a1">Optional Parameters</a></li>
|
||||
<li><a href="#orgd6ed57c">Documentation</a></li>
|
||||
<li><a href="#orgab544d8">Function description</a></li>
|
||||
<li><a href="#org972382f">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="#orgb291f1f">Documentation</a></li>
|
||||
<li><a href="#org98773bb">Function description</a></li>
|
||||
<li><a href="#orgbf25719">Optional Parameters</a></li>
|
||||
<li><a href="#org4003bdd">Documentation</a></li>
|
||||
<li><a href="#org4439879">Function description</a></li>
|
||||
<li><a href="#org2078010">Optional Parameters</a></li>
|
||||
<li><a href="#org9b435e8">Compute the total stiffness and damping</a></li>
|
||||
<li><a href="#orgab1a3e9">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#org072dfc3">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org65c17b2">5.10. <code>initializeFlexibleStrutDynamics</code>: Model each strut with a flexible element</a>
|
||||
<ul>
|
||||
<li><a href="#org1558b41">Function description</a></li>
|
||||
<li><a href="#org9943987">Optional Parameters</a></li>
|
||||
<li><a href="#orgf23e693">Function description</a></li>
|
||||
<li><a href="#org72115e7">Optional Parameters</a></li>
|
||||
<li><a href="#orge6e22da">Compute the axial offset</a></li>
|
||||
<li><a href="#orgaa827a8">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#org70de463">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgeb6173a">5.11. <code>initializeJointDynamics</code>: Add Stiffness and Damping properties for spherical joints</a>
|
||||
<ul>
|
||||
<li><a href="#org631a17c">Function description</a></li>
|
||||
<li><a href="#org7757d0a">Optional Parameters</a></li>
|
||||
<li><a href="#orgf0f39ef">Function description</a></li>
|
||||
<li><a href="#org8d19d2d">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>
|
||||
@ -161,17 +161,17 @@
|
||||
<ul>
|
||||
<li><a href="#orgd667bbb">Geophone - Working Principle</a></li>
|
||||
<li><a href="#orgca7729f">Accelerometer - Working Principle</a></li>
|
||||
<li><a href="#org51c5de0">Function description</a></li>
|
||||
<li><a href="#org0d6b1bf">Optional Parameters</a></li>
|
||||
<li><a href="#orgc4ffbf6">Function description</a></li>
|
||||
<li><a href="#org6b45828">Optional Parameters</a></li>
|
||||
<li><a href="#org463075d">Compute the properties of the sensor</a></li>
|
||||
<li><a href="#org51c0261">Populate the <code>stewart</code> structure</a></li>
|
||||
<li><a href="#orga292b49">Populate the <code>stewart</code> structure</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org5266e9d">5.13. <code>displayArchitecture</code>: 3D plot of the Stewart platform architecture</a>
|
||||
<ul>
|
||||
<li><a href="#orge68732a">Function description</a></li>
|
||||
<li><a href="#orgd45485c">Optional Parameters</a></li>
|
||||
<li><a href="#org772540a">Check the <code>stewart</code> structure elements</a></li>
|
||||
<li><a href="#org1619f14">Function description</a></li>
|
||||
<li><a href="#orgf9184d1">Optional Parameters</a></li>
|
||||
<li><a href="#org441ed7f">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>
|
||||
@ -182,8 +182,8 @@
|
||||
</li>
|
||||
<li><a href="#org3db8668">5.14. <code>describeStewartPlatform</code>: Display some text describing the current defined Stewart Platform</a>
|
||||
<ul>
|
||||
<li><a href="#orgcf374f3">Function description</a></li>
|
||||
<li><a href="#orgd50a826">Optional Parameters</a></li>
|
||||
<li><a href="#org93d2ee5">Function description</a></li>
|
||||
<li><a href="#org4587f8f">Optional Parameters</a></li>
|
||||
<li><a href="#org0ad0d00">5.14.1. Geometry</a></li>
|
||||
<li><a href="#org3d00e31">5.14.2. Actuators</a></li>
|
||||
<li><a href="#org0933fe4">5.14.3. Joints</a></li>
|
||||
@ -674,11 +674,11 @@ This Matlab function is accessible <a href="../src/initializeStewartPlatform.m">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd9476c2" class="outline-4">
|
||||
<h4 id="orgd9476c2">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-orgd9476c2">
|
||||
<div id="outline-container-orgb291f1f" class="outline-4">
|
||||
<h4 id="orgb291f1f">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-orgb291f1f">
|
||||
|
||||
<div id="orgd1429c3" class="figure">
|
||||
<div id="orgda43da5" 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>
|
||||
@ -686,9 +686,9 @@ This Matlab function is accessible <a href="../src/initializeStewartPlatform.m">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd5f2c51" class="outline-4">
|
||||
<h4 id="orgd5f2c51">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orgd5f2c51">
|
||||
<div id="outline-container-orgcf374f3" class="outline-4">
|
||||
<h4 id="orgcf374f3">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orgcf374f3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeStewartPlatform()
|
||||
% initializeStewartPlatform - Initialize the stewart structure
|
||||
@ -747,11 +747,11 @@ This Matlab function is accessible <a href="../src/initializeFramesPositions.m">
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge1df9c8" class="outline-4">
|
||||
<h4 id="orge1df9c8">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-orge1df9c8">
|
||||
<div id="outline-container-org4135d2d" class="outline-4">
|
||||
<h4 id="org4135d2d">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-org4135d2d">
|
||||
|
||||
<div id="orgda43da5" class="figure">
|
||||
<div id="orgc3e1d9c" 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>
|
||||
@ -759,9 +759,9 @@ This Matlab function is accessible <a href="../src/initializeFramesPositions.m">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3913fad" class="outline-4">
|
||||
<h4 id="org3913fad">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org3913fad">
|
||||
<div id="outline-container-org66f1ebb" class="outline-4">
|
||||
<h4 id="org66f1ebb">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org66f1ebb">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeFramesPositions(stewart, args)
|
||||
% initializeFramesPositions - Initialize the positions of frames {A}, {B}, {F} and {M}
|
||||
@ -784,9 +784,9 @@ This Matlab function is accessible <a href="../src/initializeFramesPositions.m">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org84462af" class="outline-4">
|
||||
<h4 id="org84462af">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org84462af">
|
||||
<div id="outline-container-orgd50a826" class="outline-4">
|
||||
<h4 id="orgd50a826">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgd50a826">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -814,9 +814,9 @@ FO_A = MO_B + FO_M; % Position of {A} with respect to {F} [m]
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1c152b9" class="outline-4">
|
||||
<h4 id="org1c152b9">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-org1c152b9">
|
||||
<div id="outline-container-org51c0261" class="outline-4">
|
||||
<h4 id="org51c0261">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-org51c0261">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.geometry.H = H;
|
||||
stewart.geometry.FO_M = FO_M;
|
||||
@ -840,9 +840,9 @@ This Matlab function is accessible <a href="../src/generateGeneralConfiguration.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2b8fb20" class="outline-4">
|
||||
<h4 id="org2b8fb20">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-org2b8fb20">
|
||||
<div id="outline-container-org967b04c" class="outline-4">
|
||||
<h4 id="org967b04c">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-org967b04c">
|
||||
<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>).
|
||||
@ -857,9 +857,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga75f162" class="outline-4">
|
||||
<h4 id="orga75f162">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orga75f162">
|
||||
<div id="outline-container-orge721b0e" class="outline-4">
|
||||
<h4 id="orge721b0e">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orge721b0e">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = generateGeneralConfiguration(stewart, args)
|
||||
% generateGeneralConfiguration - Generate a Very General Configuration
|
||||
@ -884,9 +884,9 @@ The radius of the circles can be chosen as well as the angles where the joints a
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org8c0fa82" class="outline-4">
|
||||
<h4 id="org8c0fa82">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org8c0fa82">
|
||||
<div id="outline-container-orgfe31977" class="outline-4">
|
||||
<h4 id="orgfe31977">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgfe31977">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -921,9 +921,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7d2bd07" class="outline-4">
|
||||
<h4 id="org7d2bd07">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-org7d2bd07">
|
||||
<div id="outline-container-org7ee3958" class="outline-4">
|
||||
<h4 id="org7ee3958">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-org7ee3958">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.platform_F.Fa = Fa;
|
||||
stewart.platform_M.Mb = Mb;
|
||||
@ -945,9 +945,9 @@ This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga2f43b2" class="outline-4">
|
||||
<h4 id="orga2f43b2">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-orga2f43b2">
|
||||
<div id="outline-container-orgc1c4d18" class="outline-4">
|
||||
<h4 id="orgc1c4d18">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-orgc1c4d18">
|
||||
|
||||
<div id="org8ffb841" class="figure">
|
||||
<p><img src="figs/stewart-struts.png" alt="stewart-struts.png" />
|
||||
@ -957,9 +957,9 @@ This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge08cff0" class="outline-4">
|
||||
<h4 id="orge08cff0">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orge08cff0">
|
||||
<div id="outline-container-orgc7c8a40" class="outline-4">
|
||||
<h4 id="orgc7c8a40">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orgc7c8a40">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = computeJointsPose(stewart, args)
|
||||
% computeJointsPose -
|
||||
@ -995,9 +995,9 @@ This Matlab function is accessible <a href="../src/computeJointsPose.m">here</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org80cc25e" class="outline-4">
|
||||
<h4 id="org80cc25e">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org80cc25e">
|
||||
<div id="outline-container-orga2673d1" class="outline-4">
|
||||
<h4 id="orga2673d1">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orga2673d1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -1009,9 +1009,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge80fdc3" class="outline-4">
|
||||
<h4 id="orge80fdc3">Check the <code>stewart</code> structure elements</h4>
|
||||
<div class="outline-text-4" id="text-orge80fdc3">
|
||||
<div id="outline-container-org772540a" class="outline-4">
|
||||
<h4 id="org772540a">Check the <code>stewart</code> structure elements</h4>
|
||||
<div class="outline-text-4" id="text-org772540a">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">assert(isfield(stewart.platform_F, 'Fa'), 'stewart.platform_F should have attribute Fa')
|
||||
Fa = stewart.platform_F.Fa;
|
||||
@ -1097,9 +1097,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6b7e5e3" class="outline-4">
|
||||
<h4 id="org6b7e5e3">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-org6b7e5e3">
|
||||
<div id="outline-container-org0e8aa0a" class="outline-4">
|
||||
<h4 id="org0e8aa0a">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-org0e8aa0a">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.geometry.Aa = Aa;
|
||||
stewart.geometry.Ab = Ab;
|
||||
@ -1132,9 +1132,9 @@ This Matlab function is accessible <a href="../src/initializeStewartPose.m">here
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf36d5d7" class="outline-4">
|
||||
<h4 id="orgf36d5d7">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orgf36d5d7">
|
||||
<div id="outline-container-org609919f" class="outline-4">
|
||||
<h4 id="org609919f">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org609919f">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeStewartPose(stewart, args)
|
||||
% initializeStewartPose - Determine the initial stroke in each leg to have the wanted pose
|
||||
@ -1158,9 +1158,9 @@ This Matlab function is accessible <a href="../src/initializeStewartPose.m">here
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgdf77824" class="outline-4">
|
||||
<h4 id="orgdf77824">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgdf77824">
|
||||
<div id="outline-container-orgb26889a" class="outline-4">
|
||||
<h4 id="orgb26889a">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgb26889a">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -1182,9 +1182,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge1d36d3" class="outline-4">
|
||||
<h4 id="orge1d36d3">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-orge1d36d3">
|
||||
<div id="outline-container-org8df3429" class="outline-4">
|
||||
<h4 id="org8df3429">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-org8df3429">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.actuators.Leq = dLi;
|
||||
</pre>
|
||||
@ -1205,9 +1205,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalPlatform
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3f08708" class="outline-4">
|
||||
<h4 id="org3f08708">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org3f08708">
|
||||
<div id="outline-container-orgcffde44" class="outline-4">
|
||||
<h4 id="orgcffde44">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orgcffde44">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeCylindricalPlatforms(stewart, args)
|
||||
% initializeCylindricalPlatforms - Initialize the geometry of the Fixed and Mobile Platforms
|
||||
@ -1241,9 +1241,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalPlatform
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgc95505f" class="outline-4">
|
||||
<h4 id="orgc95505f">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgc95505f">
|
||||
<div id="outline-container-org017553c" class="outline-4">
|
||||
<h4 id="org017553c">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org017553c">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -1278,9 +1278,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orga790eb3" class="outline-4">
|
||||
<h4 id="orga790eb3">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-orga790eb3">
|
||||
<div id="outline-container-org943c8fa" class="outline-4">
|
||||
<h4 id="org943c8fa">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-org943c8fa">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.platform_F.type = 1;
|
||||
|
||||
@ -1316,9 +1316,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalStruts.m
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9ef7d35" class="outline-4">
|
||||
<h4 id="org9ef7d35">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org9ef7d35">
|
||||
<div id="outline-container-org4d297c7" class="outline-4">
|
||||
<h4 id="org4d297c7">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org4d297c7">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeCylindricalStruts(stewart, args)
|
||||
% initializeCylindricalStruts - Define the mass and moment of inertia of cylindrical struts
|
||||
@ -1351,9 +1351,9 @@ This Matlab function is accessible <a href="../src/initializeCylindricalStruts.m
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf9adc42" class="outline-4">
|
||||
<h4 id="orgf9adc42">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgf9adc42">
|
||||
<div id="outline-container-org2a5dca5" class="outline-4">
|
||||
<h4 id="org2a5dca5">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org2a5dca5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -1403,9 +1403,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd6e7b8e" class="outline-4">
|
||||
<h4 id="orgd6e7b8e">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-orgd6e7b8e">
|
||||
<div id="outline-container-orge3443c7" class="outline-4">
|
||||
<h4 id="orge3443c7">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-orge3443c7">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">switch args.type_M
|
||||
case 'cylindrical'
|
||||
@ -1451,9 +1451,9 @@ This Matlab function is accessible <a href="../src/initializeStrutDynamics.m">he
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb41c182" class="outline-4">
|
||||
<h4 id="orgb41c182">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-orgb41c182">
|
||||
<div id="outline-container-orgd6ed57c" class="outline-4">
|
||||
<h4 id="orgd6ed57c">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-orgd6ed57c">
|
||||
|
||||
<div id="orgbbfb204" class="figure">
|
||||
<p><img src="figs/piezoelectric_stack.jpg" alt="piezoelectric_stack.jpg" width="500px" />
|
||||
@ -1482,9 +1482,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#org62
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7469459" class="outline-4">
|
||||
<h4 id="org7469459">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org7469459">
|
||||
<div id="outline-container-orgab544d8" class="outline-4">
|
||||
<h4 id="orgab544d8">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orgab544d8">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeStrutDynamics(stewart, args)
|
||||
% initializeStrutDynamics - Add Stiffness and Damping properties of each strut
|
||||
@ -1506,9 +1506,9 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#org62
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd6e68a1" class="outline-4">
|
||||
<h4 id="orgd6e68a1">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgd6e68a1">
|
||||
<div id="outline-container-org972382f" class="outline-4">
|
||||
<h4 id="org972382f">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org972382f">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -1546,9 +1546,9 @@ This Matlab function is accessible <a href="../src/initializeAmplifiedStrutDynam
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgb291f1f" class="outline-4">
|
||||
<h4 id="orgb291f1f">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-orgb291f1f">
|
||||
<div id="outline-container-org4003bdd" class="outline-4">
|
||||
<h4 id="org4003bdd">Documentation</h4>
|
||||
<div class="outline-text-4" id="text-org4003bdd">
|
||||
<p>
|
||||
An amplified piezoelectric actuator is shown in Figure <a href="#org9e7e9ad">13</a>.
|
||||
</p>
|
||||
@ -1561,29 +1561,58 @@ An amplified piezoelectric actuator is shown in Figure <a href="#org9e7e9ad">13<
|
||||
</div>
|
||||
|
||||
<p>
|
||||
A simplistic model of such amplified actuator is shown in Figure <a href="#orgcf4c3de">14</a> where:
|
||||
A simplistic model of such amplified actuator is shown in Figure <a href="#org0fd7540">14</a> where the parameters are described in Table <a href="#org9030eaa">1</a>.
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>\(K_{r}\) represent the vertical stiffness when the piezoelectric stack is removed</li>
|
||||
<li>\(K_{a}\) is the vertical stiffness contribution of the piezoelectric stack</li>
|
||||
<li>\(F_{i}\) represents the part of the piezoelectric stack that is used as a force actuator</li>
|
||||
<li>\(F_{m,i}\) represents the remaining part of the piezoelectric stack that is used as a force sensor</li>
|
||||
<li>\(v_{m,i}\) represents the absolute velocity of the top part of the actuator</li>
|
||||
<li>\(d_{m,i}\) represents the total relative displacement of the actuator</li>
|
||||
</ul>
|
||||
|
||||
<table id="org9030eaa" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 1:</span> Parameters used for the model of the APA 100M</caption>
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-left"> </th>
|
||||
<th scope="col" class="org-left">Meaning</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-left">\(k_e\)</td>
|
||||
<td class="org-left">Stiffness used to adjust the pole of the isolator</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(k_1\)</td>
|
||||
<td class="org-left">Stiffness of the metallic suspension when the stack is removed</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(k_a\)</td>
|
||||
<td class="org-left">Stiffness of the actuator</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left">\(c_1\)</td>
|
||||
<td class="org-left">Added viscous damping</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<div id="orgcf4c3de" class="figure">
|
||||
<p><img src="figs/iff_1dof.png" alt="iff_1dof.png" />
|
||||
<div id="org0fd7540" class="figure">
|
||||
<p><img src="./figs/souleille18_model_piezo.png" alt="souleille18_model_piezo.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Model of an amplified actuator</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org98773bb" class="outline-4">
|
||||
<h4 id="org98773bb">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org98773bb">
|
||||
<div id="outline-container-org4439879" class="outline-4">
|
||||
<h4 id="org4439879">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org4439879">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeAmplifiedStrutDynamics(stewart, args)
|
||||
% initializeAmplifiedStrutDynamics - Add Stiffness and Damping properties of each strut
|
||||
@ -1592,35 +1621,35 @@ A simplistic model of such amplified actuator is shown in Figure <a href="#orgcf
|
||||
%
|
||||
% Inputs:
|
||||
% - args - Structure with the following fields:
|
||||
% - Ka [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m]
|
||||
% - Ca [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
||||
% - Kr [6x1] - Vertical (residual) stiffness when the piezoelectric stack is removed [N/m]
|
||||
% - Cr [6x1] - Vertical (residual) damping when the piezoelectric stack is removed [N/(m/s)]
|
||||
% - Ka [6x1] - Stiffness of the actuator [N/m]
|
||||
% - Ke [6x1] - Stiffness used to adjust the pole of the isolator [N/m]
|
||||
% - K1 [6x1] - Stiffness of the metallic suspension when the stack is removed [N/m]
|
||||
% - C1 [6x1] - Added viscous damping [N/(m/s)]
|
||||
%
|
||||
% Outputs:
|
||||
% - stewart - updated Stewart structure with the added fields:
|
||||
% - actuators.type = 2
|
||||
% - actuators.K [6x1] - Total Stiffness of each strut [N/m]
|
||||
% - actuators.C [6x1] - Total Damping of each strut [N/(m/s)]
|
||||
% - actuators.Ka [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m]
|
||||
% - actuators.Ca [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
||||
% - actuators.Kr [6x1] - Vertical stiffness when the piezoelectric stack is removed [N/m]
|
||||
% - actuators.Cr [6x1] - Vertical damping when the piezoelectric stack is removed [N/(m/s)]
|
||||
% - actuators.Ka [6x1] - Stiffness of the actuator [N/m]
|
||||
% - actuators.Ke [6x1] - Stiffness used to adjust the pole of the isolator [N/m]
|
||||
% - actuators.K1 [6x1] - Stiffness of the metallic suspension when the stack is removed [N/m]
|
||||
% - actuators.C1 [6x1] - Added viscous damping [N/(m/s)]
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgbf25719" class="outline-4">
|
||||
<h4 id="orgbf25719">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgbf25719">
|
||||
<div id="outline-container-org2078010" class="outline-4">
|
||||
<h4 id="org2078010">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org2078010">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
args.Kr (6,1) double {mustBeNumeric, mustBeNonnegative} = 5e6*ones(6,1)
|
||||
args.Cr (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Ka (6,1) double {mustBeNumeric, mustBeNonnegative} = 15e6*ones(6,1)
|
||||
args.Ca (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Ke (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.5e6*ones(6,1)
|
||||
args.Ka (6,1) double {mustBeNumeric, mustBeNonnegative} = 43e6*ones(6,1)
|
||||
args.K1 (6,1) double {mustBeNumeric, mustBeNonnegative} = 0.4e6*ones(6,1)
|
||||
args.C1 (6,1) double {mustBeNumeric, mustBeNonnegative} = 10*ones(6,1)
|
||||
end
|
||||
</pre>
|
||||
</div>
|
||||
@ -1631,24 +1660,23 @@ end
|
||||
<h4 id="org9b435e8">Compute the total stiffness and damping</h4>
|
||||
<div class="outline-text-4" id="text-org9b435e8">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">K = args.Ka + args.Kr;
|
||||
C = args.Ca + args.Cr;
|
||||
<pre class="src src-matlab">K = args.K1 + args.Ka.*args.Ke./(args.Ka + args.Ke);
|
||||
C = args.C1;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgab1a3e9" class="outline-4">
|
||||
<h4 id="orgab1a3e9">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-orgab1a3e9">
|
||||
<div id="outline-container-org072dfc3" class="outline-4">
|
||||
<h4 id="org072dfc3">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-org072dfc3">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.actuators.type = 2;
|
||||
|
||||
stewart.actuators.Ka = args.Ka;
|
||||
stewart.actuators.Ca = args.Ca;
|
||||
|
||||
stewart.actuators.Kr = args.Kr;
|
||||
stewart.actuators.Cr = args.Cr;
|
||||
stewart.actuators.Ke = args.Ke;
|
||||
stewart.actuators.K1 = args.K1;
|
||||
stewart.actuators.C1 = args.C1;
|
||||
|
||||
stewart.actuators.K = K;
|
||||
stewart.actuators.C = C;
|
||||
@ -1670,9 +1698,9 @@ This Matlab function is accessible <a href="../src/initializeFlexibleStrutDynami
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org1558b41" class="outline-4">
|
||||
<h4 id="org1558b41">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org1558b41">
|
||||
<div id="outline-container-orgf23e693" class="outline-4">
|
||||
<h4 id="orgf23e693">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orgf23e693">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeFlexibleStrutDynamics(stewart, args)
|
||||
% initializeFlexibleStrutDynamics - Add Stiffness and Damping properties of each strut
|
||||
@ -1685,6 +1713,7 @@ This Matlab function is accessible <a href="../src/initializeFlexibleStrutDynami
|
||||
% - M [nxn] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
||||
% - xi [1x1] - Vertical (residual) stiffness when the piezoelectric stack is removed [N/m]
|
||||
% - step_file [6x1] - Vertical (residual) damping when the piezoelectric stack is removed [N/(m/s)]
|
||||
% - Gf [6x1] - Gain from strain in [m] to measured [N] such that it matches
|
||||
%
|
||||
% Outputs:
|
||||
% - stewart - updated Stewart structure with the added fields:
|
||||
@ -1693,9 +1722,9 @@ This Matlab function is accessible <a href="../src/initializeFlexibleStrutDynami
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9943987" class="outline-4">
|
||||
<h4 id="org9943987">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org9943987">
|
||||
<div id="outline-container-org72115e7" class="outline-4">
|
||||
<h4 id="org72115e7">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org72115e7">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -1704,6 +1733,7 @@ This Matlab function is accessible <a href="../src/initializeFlexibleStrutDynami
|
||||
args.H double {mustBeNumeric} = 0
|
||||
args.n_xyz double {mustBeNumeric} = zeros(2,3)
|
||||
args.xi double {mustBeNumeric} = 0.1
|
||||
args.Gf double {mustBeNumeric} = 1
|
||||
args.step_file char {} = ''
|
||||
end
|
||||
</pre>
|
||||
@ -1721,9 +1751,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgaa827a8" class="outline-4">
|
||||
<h4 id="orgaa827a8">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-orgaa827a8">
|
||||
<div id="outline-container-org70de463" class="outline-4">
|
||||
<h4 id="org70de463">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-org70de463">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.actuators.type = 3;
|
||||
|
||||
@ -1736,6 +1766,8 @@ stewart.actuators.xi = args.xi;
|
||||
stewart.actuators.step_file = args.step_file;
|
||||
|
||||
stewart.actuators.K = args.K(3,3); % Axial Stiffness
|
||||
|
||||
stewart.actuators.Gf = args.Gf;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -1754,9 +1786,9 @@ This Matlab function is accessible <a href="../src/initializeJointDynamics.m">he
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org631a17c" class="outline-4">
|
||||
<h4 id="org631a17c">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org631a17c">
|
||||
<div id="outline-container-orgf0f39ef" class="outline-4">
|
||||
<h4 id="orgf0f39ef">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orgf0f39ef">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeJointDynamics(stewart, args)
|
||||
% initializeJointDynamics - Add Stiffness and Damping properties for the spherical joints
|
||||
@ -1791,22 +1823,30 @@ This Matlab function is accessible <a href="../src/initializeJointDynamics.m">he
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org7757d0a" class="outline-4">
|
||||
<h4 id="org7757d0a">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org7757d0a">
|
||||
<div id="outline-container-org8d19d2d" class="outline-4">
|
||||
<h4 id="org8d19d2d">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org8d19d2d">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'universal_p', 'spherical_p', 'flexible'})} = 'universal'
|
||||
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'universal_p', 'spherical_p', 'flexible'})} = 'spherical'
|
||||
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1)
|
||||
args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'universal_p', 'spherical_p', 'universal_3dof', 'spherical_3dof', 'flexible'})} = 'universal'
|
||||
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'universal_p', 'spherical_p', 'universal_3dof', 'spherical_3dof', 'flexible'})} = 'spherical'
|
||||
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 33*ones(6,1)
|
||||
args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
|
||||
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)
|
||||
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 236*ones(6,1)
|
||||
args.Ct_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-3*ones(6,1)
|
||||
args.Kf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1)
|
||||
args.Kf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 33*ones(6,1)
|
||||
args.Cf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
|
||||
args.Kt_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)
|
||||
args.Kt_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 236*ones(6,1)
|
||||
args.Ct_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-3*ones(6,1)
|
||||
args.Ka_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.2e8*ones(6,1)
|
||||
args.Ca_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Kr_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.1e7*ones(6,1)
|
||||
args.Cr_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Ka_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.2e8*ones(6,1)
|
||||
args.Ca_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Kr_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.1e7*ones(6,1)
|
||||
args.Cr_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.K_M double {mustBeNumeric} = zeros(6,6)
|
||||
args.M_M double {mustBeNumeric} = zeros(6,6)
|
||||
args.n_xyz_M double {mustBeNumeric} = zeros(2,3)
|
||||
@ -1838,6 +1878,10 @@ end
|
||||
stewart.joints_F.type = 4;
|
||||
case 'flexible'
|
||||
stewart.joints_F.type = 5;
|
||||
case 'universal_3dof'
|
||||
stewart.joints_F.type = 6;
|
||||
case 'spherical_3dof'
|
||||
stewart.joints_F.type = 7;
|
||||
end
|
||||
|
||||
switch args.type_M
|
||||
@ -1851,6 +1895,10 @@ switch args.type_M
|
||||
stewart.joints_M.type = 4;
|
||||
case 'flexible'
|
||||
stewart.joints_M.type = 5;
|
||||
case 'universal_3dof'
|
||||
stewart.joints_M.type = 6;
|
||||
case 'spherical_3dof'
|
||||
stewart.joints_M.type = 7;
|
||||
end
|
||||
</pre>
|
||||
</div>
|
||||
@ -1861,16 +1909,14 @@ end
|
||||
<h4 id="orgc0e613c">Add Stiffness and Damping in Translation of each strut</h4>
|
||||
<div class="outline-text-4" id="text-orgc0e613c">
|
||||
<p>
|
||||
Translation Stiffness
|
||||
Axial and Radial (shear) Stiffness
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.joints_M.Kx = zeros(6,1);
|
||||
stewart.joints_M.Ky = zeros(6,1);
|
||||
stewart.joints_M.Kz = zeros(6,1);
|
||||
<pre class="src src-matlab">stewart.joints_M.Ka = args.Ka_M;
|
||||
stewart.joints_M.Kr = args.Kr_M;
|
||||
|
||||
stewart.joints_F.Kx = zeros(6,1);
|
||||
stewart.joints_F.Ky = zeros(6,1);
|
||||
stewart.joints_F.Kz = zeros(6,1);
|
||||
stewart.joints_F.Ka = args.Ka_F;
|
||||
stewart.joints_F.Kr = args.Kr_F;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -1878,13 +1924,11 @@ stewart.joints_F.Kz = zeros(6,1);
|
||||
Translation Damping
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.joints_M.Cx = zeros(6,1);
|
||||
stewart.joints_M.Cy = zeros(6,1);
|
||||
stewart.joints_M.Cz = zeros(6,1);
|
||||
<pre class="src src-matlab">stewart.joints_M.Ca = args.Ca_M;
|
||||
stewart.joints_M.Cr = args.Cr_M;
|
||||
|
||||
stewart.joints_F.Cx = zeros(6,1);
|
||||
stewart.joints_F.Cy = zeros(6,1);
|
||||
stewart.joints_F.Cz = zeros(6,1);
|
||||
stewart.joints_F.Ca = args.Ca_F;
|
||||
stewart.joints_F.Cr = args.Cr_F;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -1898,10 +1942,10 @@ Rotational Stiffness
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.joints_M.Kf = args.Kf_M;
|
||||
stewart.joints_M.Kt = args.Kf_M;
|
||||
stewart.joints_M.Kt = args.Kt_M;
|
||||
|
||||
stewart.joints_F.Kf = args.Kf_F;
|
||||
stewart.joints_F.Kt = args.Kf_F;
|
||||
stewart.joints_F.Kt = args.Kt_F;
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
@ -1910,10 +1954,10 @@ Rotational Damping
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.joints_M.Cf = args.Cf_M;
|
||||
stewart.joints_M.Ct = args.Cf_M;
|
||||
stewart.joints_M.Ct = args.Ct_M;
|
||||
|
||||
stewart.joints_F.Cf = args.Cf_F;
|
||||
stewart.joints_F.Ct = args.Cf_F;
|
||||
stewart.joints_F.Ct = args.Ct_F;
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
@ -2027,9 +2071,9 @@ Note that there is trade-off between:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org51c5de0" class="outline-4">
|
||||
<h4 id="org51c5de0">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org51c5de0">
|
||||
<div id="outline-container-orgc4ffbf6" class="outline-4">
|
||||
<h4 id="orgc4ffbf6">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orgc4ffbf6">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [stewart] = initializeInertialSensor(stewart, args)
|
||||
% initializeInertialSensor - Initialize the inertial sensor in each strut
|
||||
@ -2055,9 +2099,9 @@ Note that there is trade-off between:
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org0d6b1bf" class="outline-4">
|
||||
<h4 id="org0d6b1bf">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org0d6b1bf">
|
||||
<div id="outline-container-org6b45828" class="outline-4">
|
||||
<h4 id="org6b45828">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org6b45828">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -2098,9 +2142,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org51c0261" class="outline-4">
|
||||
<h4 id="org51c0261">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-org51c0261">
|
||||
<div id="outline-container-orga292b49" class="outline-4">
|
||||
<h4 id="orga292b49">Populate the <code>stewart</code> structure</h4>
|
||||
<div class="outline-text-4" id="text-orga292b49">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">stewart.sensors.inertial = sensor;
|
||||
</pre>
|
||||
@ -2121,9 +2165,9 @@ This Matlab function is accessible <a href="../src/displayArchitecture.m">here</
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orge68732a" class="outline-4">
|
||||
<h4 id="orge68732a">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orge68732a">
|
||||
<div id="outline-container-org1619f14" class="outline-4">
|
||||
<h4 id="org1619f14">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org1619f14">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [] = displayArchitecture(stewart, args)
|
||||
% displayArchitecture - 3D plot of the Stewart platform architecture
|
||||
@ -2152,9 +2196,9 @@ This Matlab function is accessible <a href="../src/displayArchitecture.m">here</
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd45485c" class="outline-4">
|
||||
<h4 id="orgd45485c">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgd45485c">
|
||||
<div id="outline-container-orgf9184d1" class="outline-4">
|
||||
<h4 id="orgf9184d1">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgf9184d1">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -2175,9 +2219,9 @@ end
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org772540a" class="outline-4">
|
||||
<h4 id="org772540a">Check the <code>stewart</code> structure elements</h4>
|
||||
<div class="outline-text-4" id="text-org772540a">
|
||||
<div id="outline-container-org441ed7f" class="outline-4">
|
||||
<h4 id="org441ed7f">Check the <code>stewart</code> structure elements</h4>
|
||||
<div class="outline-text-4" id="text-org441ed7f">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">assert(isfield(stewart.platform_F, 'FO_A'), 'stewart.platform_F should have attribute FO_A')
|
||||
FO_A = stewart.platform_F.FO_A;
|
||||
@ -2515,9 +2559,9 @@ This Matlab function is accessible <a href="../src/describeStewartPlatform.m">he
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgcf374f3" class="outline-4">
|
||||
<h4 id="orgcf374f3">Function description</h4>
|
||||
<div class="outline-text-4" id="text-orgcf374f3">
|
||||
<div id="outline-container-org93d2ee5" class="outline-4">
|
||||
<h4 id="org93d2ee5">Function description</h4>
|
||||
<div class="outline-text-4" id="text-org93d2ee5">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">function [] = describeStewartPlatform(stewart)
|
||||
% describeStewartPlatform - Display some text describing the current defined Stewart Platform
|
||||
@ -2533,9 +2577,9 @@ This Matlab function is accessible <a href="../src/describeStewartPlatform.m">he
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgd50a826" class="outline-4">
|
||||
<h4 id="orgd50a826">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-orgd50a826">
|
||||
<div id="outline-container-org4587f8f" class="outline-4">
|
||||
<h4 id="org4587f8f">Optional Parameters</h4>
|
||||
<div class="outline-text-4" id="text-org4587f8f">
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">arguments
|
||||
stewart
|
||||
@ -2684,7 +2728,7 @@ end
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2020-08-05 mer. 16:23</p>
|
||||
<p class="date">Created: 2020-09-01 mar. 13:18</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1168,45 +1168,20 @@ An amplified piezoelectric actuator is shown in Figure [[fig:cedrat_apa95ml]].
|
||||
#+caption: Example of an Amplified piezoelectric actuator with an integrated displacement sensor (Cedrat Technologies)
|
||||
[[file:figs/amplified_piezo_with_displacement_sensor.jpg]]
|
||||
|
||||
A simplistic model of such amplified actuator is shown in Figure [[fig:amplified_piezo_model]] where:
|
||||
- $K_{r}$ represent the vertical stiffness when the piezoelectric stack is removed
|
||||
- $K_{a}$ is the vertical stiffness contribution of the piezoelectric stack
|
||||
- $F_{i}$ represents the part of the piezoelectric stack that is used as a force actuator
|
||||
- $F_{m,i}$ represents the remaining part of the piezoelectric stack that is used as a force sensor
|
||||
- $v_{m,i}$ represents the absolute velocity of the top part of the actuator
|
||||
- $d_{m,i}$ represents the total relative displacement of the actuator
|
||||
A simplistic model of such amplified actuator is shown in Figure [[fig:souleille18_model_piezo]] where the parameters are described in Table [[tab:parameters_amplified_piezo]].
|
||||
|
||||
#+begin_src latex :file iff_1dof.pdf
|
||||
\begin{tikzpicture}
|
||||
% Ground
|
||||
\draw (-1.2, 0) -- (1, 0);
|
||||
#+name: tab:parameters_amplified_piezo
|
||||
#+caption: Parameters used for the model of the APA 100M
|
||||
| | Meaning |
|
||||
|-------+----------------------------------------------------------------|
|
||||
| $k_e$ | Stiffness used to adjust the pole of the isolator |
|
||||
| $k_1$ | Stiffness of the metallic suspension when the stack is removed |
|
||||
| $k_a$ | Stiffness of the actuator |
|
||||
| $c_1$ | Added viscous damping |
|
||||
|
||||
% Mass
|
||||
\draw (-1.2, 1.4) -- ++(2.2, 0);
|
||||
\node[forcesensor={0.4}{0.4}] (fsensn) at (0, 1){};
|
||||
\draw[] (-0.4, 1) -- (0.4, 1);
|
||||
\node[right] at (fsensn.east) {$F_{m}$};
|
||||
|
||||
% Spring, Damper, and Actuator
|
||||
\draw[spring] (-0.4, 0) -- (-0.4, 1) node[midway, right=0.1]{$K_{a}$};
|
||||
\draw[actuator={0.4}{0.2}] (0.4, 0) -- (0.4, 1) node[midway, right=0.1]{$F$};
|
||||
|
||||
\draw[spring] (-1, 0) -- (-1, 1.4) node[midway, left=0.1]{$K_{r}$};
|
||||
|
||||
\draw[dashed] (1, 0) -- ++(0.4, 0);
|
||||
|
||||
\draw[dashed] (1, 1.4) -- ++(0.4, 0);
|
||||
|
||||
\draw[->] (0, 1.4)node[]{$\bullet$} -- ++(0, 0.5) node[right]{$v_{m}$};
|
||||
|
||||
\draw[<->] (1.4, 0) -- ++(0, 1.4) node[midway, right]{$d_{m}$};
|
||||
\end{tikzpicture}
|
||||
#+end_src
|
||||
|
||||
#+name: fig:amplified_piezo_model
|
||||
#+caption: Model of an amplified actuator
|
||||
#+RESULTS:
|
||||
[[file:figs/iff_1dof.png]]
|
||||
#+name: fig:souleille18_model_piezo
|
||||
#+caption: Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator
|
||||
[[file:./figs/souleille18_model_piezo.png]]
|
||||
|
||||
*** Function description
|
||||
:PROPERTIES:
|
||||
@ -1220,20 +1195,20 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:amplified
|
||||
%
|
||||
% Inputs:
|
||||
% - args - Structure with the following fields:
|
||||
% - Ka [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m]
|
||||
% - Ca [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
||||
% - Kr [6x1] - Vertical (residual) stiffness when the piezoelectric stack is removed [N/m]
|
||||
% - Cr [6x1] - Vertical (residual) damping when the piezoelectric stack is removed [N/(m/s)]
|
||||
% - Ka [6x1] - Stiffness of the actuator [N/m]
|
||||
% - Ke [6x1] - Stiffness used to adjust the pole of the isolator [N/m]
|
||||
% - K1 [6x1] - Stiffness of the metallic suspension when the stack is removed [N/m]
|
||||
% - C1 [6x1] - Added viscous damping [N/(m/s)]
|
||||
%
|
||||
% Outputs:
|
||||
% - stewart - updated Stewart structure with the added fields:
|
||||
% - actuators.type = 2
|
||||
% - actuators.K [6x1] - Total Stiffness of each strut [N/m]
|
||||
% - actuators.C [6x1] - Total Damping of each strut [N/(m/s)]
|
||||
% - actuators.Ka [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m]
|
||||
% - actuators.Ca [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
||||
% - actuators.Kr [6x1] - Vertical stiffness when the piezoelectric stack is removed [N/m]
|
||||
% - actuators.Cr [6x1] - Vertical damping when the piezoelectric stack is removed [N/(m/s)]
|
||||
% - actuators.Ka [6x1] - Stiffness of the actuator [N/m]
|
||||
% - actuators.Ke [6x1] - Stiffness used to adjust the pole of the isolator [N/m]
|
||||
% - actuators.K1 [6x1] - Stiffness of the metallic suspension when the stack is removed [N/m]
|
||||
% - actuators.C1 [6x1] - Added viscous damping [N/(m/s)]
|
||||
#+end_src
|
||||
|
||||
*** Optional Parameters
|
||||
@ -1243,10 +1218,10 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:amplified
|
||||
#+begin_src matlab
|
||||
arguments
|
||||
stewart
|
||||
args.Kr (6,1) double {mustBeNumeric, mustBeNonnegative} = 5e6*ones(6,1)
|
||||
args.Cr (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Ka (6,1) double {mustBeNumeric, mustBeNonnegative} = 15e6*ones(6,1)
|
||||
args.Ca (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Ke (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.5e6*ones(6,1)
|
||||
args.Ka (6,1) double {mustBeNumeric, mustBeNonnegative} = 43e6*ones(6,1)
|
||||
args.K1 (6,1) double {mustBeNumeric, mustBeNonnegative} = 0.4e6*ones(6,1)
|
||||
args.C1 (6,1) double {mustBeNumeric, mustBeNonnegative} = 10*ones(6,1)
|
||||
end
|
||||
#+end_src
|
||||
|
||||
@ -1255,8 +1230,8 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:amplified
|
||||
:UNNUMBERED: t
|
||||
:END:
|
||||
#+begin_src matlab
|
||||
K = args.Ka + args.Kr;
|
||||
C = args.Ca + args.Cr;
|
||||
K = args.K1 + args.Ka.*args.Ke./(args.Ka + args.Ke);
|
||||
C = args.C1;
|
||||
#+end_src
|
||||
|
||||
*** Populate the =stewart= structure
|
||||
@ -1267,10 +1242,9 @@ A simplistic model of such amplified actuator is shown in Figure [[fig:amplified
|
||||
stewart.actuators.type = 2;
|
||||
|
||||
stewart.actuators.Ka = args.Ka;
|
||||
stewart.actuators.Ca = args.Ca;
|
||||
|
||||
stewart.actuators.Kr = args.Kr;
|
||||
stewart.actuators.Cr = args.Cr;
|
||||
stewart.actuators.Ke = args.Ke;
|
||||
stewart.actuators.K1 = args.K1;
|
||||
stewart.actuators.C1 = args.C1;
|
||||
|
||||
stewart.actuators.K = K;
|
||||
stewart.actuators.C = C;
|
||||
@ -1301,6 +1275,7 @@ This Matlab function is accessible [[file:../src/initializeFlexibleStrutDynamics
|
||||
% - M [nxn] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
||||
% - xi [1x1] - Vertical (residual) stiffness when the piezoelectric stack is removed [N/m]
|
||||
% - step_file [6x1] - Vertical (residual) damping when the piezoelectric stack is removed [N/(m/s)]
|
||||
% - Gf [6x1] - Gain from strain in [m] to measured [N] such that it matches
|
||||
%
|
||||
% Outputs:
|
||||
% - stewart - updated Stewart structure with the added fields:
|
||||
@ -1318,6 +1293,7 @@ This Matlab function is accessible [[file:../src/initializeFlexibleStrutDynamics
|
||||
args.H double {mustBeNumeric} = 0
|
||||
args.n_xyz double {mustBeNumeric} = zeros(2,3)
|
||||
args.xi double {mustBeNumeric} = 0.1
|
||||
args.Gf double {mustBeNumeric} = 1
|
||||
args.step_file char {} = ''
|
||||
end
|
||||
#+end_src
|
||||
@ -1347,6 +1323,8 @@ This Matlab function is accessible [[file:../src/initializeFlexibleStrutDynamics
|
||||
stewart.actuators.step_file = args.step_file;
|
||||
|
||||
stewart.actuators.K = args.K(3,3); % Axial Stiffness
|
||||
|
||||
stewart.actuators.Gf = args.Gf;
|
||||
#+end_src
|
||||
|
||||
** TODO =initializeJointDynamics=: Add Stiffness and Damping properties for spherical joints
|
||||
@ -1400,16 +1378,24 @@ 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', 'universal_p', 'spherical_p', 'flexible'})} = 'universal'
|
||||
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'universal_p', 'spherical_p', 'flexible'})} = 'spherical'
|
||||
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1)
|
||||
args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'universal_p', 'spherical_p', 'universal_3dof', 'spherical_3dof', 'flexible'})} = 'universal'
|
||||
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'universal_p', 'spherical_p', 'universal_3dof', 'spherical_3dof', 'flexible'})} = 'spherical'
|
||||
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 33*ones(6,1)
|
||||
args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
|
||||
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)
|
||||
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 236*ones(6,1)
|
||||
args.Ct_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-3*ones(6,1)
|
||||
args.Kf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1)
|
||||
args.Kf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 33*ones(6,1)
|
||||
args.Cf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
|
||||
args.Kt_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)
|
||||
args.Kt_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 236*ones(6,1)
|
||||
args.Ct_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-3*ones(6,1)
|
||||
args.Ka_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.2e8*ones(6,1)
|
||||
args.Ca_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Kr_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.1e7*ones(6,1)
|
||||
args.Cr_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Ka_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.2e8*ones(6,1)
|
||||
args.Ca_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Kr_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.1e7*ones(6,1)
|
||||
args.Cr_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.K_M double {mustBeNumeric} = zeros(6,6)
|
||||
args.M_M double {mustBeNumeric} = zeros(6,6)
|
||||
args.n_xyz_M double {mustBeNumeric} = zeros(2,3)
|
||||
@ -1439,6 +1425,10 @@ This Matlab function is accessible [[file:../src/initializeJointDynamics.m][here
|
||||
stewart.joints_F.type = 4;
|
||||
case 'flexible'
|
||||
stewart.joints_F.type = 5;
|
||||
case 'universal_3dof'
|
||||
stewart.joints_F.type = 6;
|
||||
case 'spherical_3dof'
|
||||
stewart.joints_F.type = 7;
|
||||
end
|
||||
|
||||
switch args.type_M
|
||||
@ -1452,6 +1442,10 @@ This Matlab function is accessible [[file:../src/initializeJointDynamics.m][here
|
||||
stewart.joints_M.type = 4;
|
||||
case 'flexible'
|
||||
stewart.joints_M.type = 5;
|
||||
case 'universal_3dof'
|
||||
stewart.joints_M.type = 6;
|
||||
case 'spherical_3dof'
|
||||
stewart.joints_M.type = 7;
|
||||
end
|
||||
#+end_src
|
||||
|
||||
@ -1459,26 +1453,22 @@ This Matlab function is accessible [[file:../src/initializeJointDynamics.m][here
|
||||
:PROPERTIES:
|
||||
:UNNUMBERED: t
|
||||
:END:
|
||||
Translation Stiffness
|
||||
Axial and Radial (shear) Stiffness
|
||||
#+begin_src matlab
|
||||
stewart.joints_M.Kx = zeros(6,1);
|
||||
stewart.joints_M.Ky = zeros(6,1);
|
||||
stewart.joints_M.Kz = zeros(6,1);
|
||||
stewart.joints_M.Ka = args.Ka_M;
|
||||
stewart.joints_M.Kr = args.Kr_M;
|
||||
|
||||
stewart.joints_F.Kx = zeros(6,1);
|
||||
stewart.joints_F.Ky = zeros(6,1);
|
||||
stewart.joints_F.Kz = zeros(6,1);
|
||||
stewart.joints_F.Ka = args.Ka_F;
|
||||
stewart.joints_F.Kr = args.Kr_F;
|
||||
#+end_src
|
||||
|
||||
Translation Damping
|
||||
#+begin_src matlab
|
||||
stewart.joints_M.Cx = zeros(6,1);
|
||||
stewart.joints_M.Cy = zeros(6,1);
|
||||
stewart.joints_M.Cz = zeros(6,1);
|
||||
stewart.joints_M.Ca = args.Ca_M;
|
||||
stewart.joints_M.Cr = args.Cr_M;
|
||||
|
||||
stewart.joints_F.Cx = zeros(6,1);
|
||||
stewart.joints_F.Cy = zeros(6,1);
|
||||
stewart.joints_F.Cz = zeros(6,1);
|
||||
stewart.joints_F.Ca = args.Ca_F;
|
||||
stewart.joints_F.Cr = args.Cr_F;
|
||||
#+end_src
|
||||
|
||||
*** Add Stiffness and Damping in Rotation of each strut
|
||||
@ -1488,19 +1478,19 @@ Translation Damping
|
||||
Rotational Stiffness
|
||||
#+begin_src matlab
|
||||
stewart.joints_M.Kf = args.Kf_M;
|
||||
stewart.joints_M.Kt = args.Kf_M;
|
||||
stewart.joints_M.Kt = args.Kt_M;
|
||||
|
||||
stewart.joints_F.Kf = args.Kf_F;
|
||||
stewart.joints_F.Kt = args.Kf_F;
|
||||
stewart.joints_F.Kt = args.Kt_F;
|
||||
#+end_src
|
||||
|
||||
Rotational Damping
|
||||
#+begin_src matlab
|
||||
stewart.joints_M.Cf = args.Cf_M;
|
||||
stewart.joints_M.Ct = args.Cf_M;
|
||||
stewart.joints_M.Ct = args.Ct_M;
|
||||
|
||||
stewart.joints_F.Cf = args.Cf_F;
|
||||
stewart.joints_F.Ct = args.Cf_F;
|
||||
stewart.joints_F.Ct = args.Ct_F;
|
||||
#+end_src
|
||||
|
||||
*** Stiffness and Mass matrices for flexible joint
|
||||
|
@ -5,39 +5,38 @@ function [stewart] = initializeAmplifiedStrutDynamics(stewart, args)
|
||||
%
|
||||
% Inputs:
|
||||
% - args - Structure with the following fields:
|
||||
% - Ka [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m]
|
||||
% - Ca [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
||||
% - Kr [6x1] - Vertical (residual) stiffness when the piezoelectric stack is removed [N/m]
|
||||
% - Cr [6x1] - Vertical (residual) damping when the piezoelectric stack is removed [N/(m/s)]
|
||||
% - Ka [6x1] - Stiffness of the actuator [N/m]
|
||||
% - Ke [6x1] - Stiffness used to adjust the pole of the isolator [N/m]
|
||||
% - K1 [6x1] - Stiffness of the metallic suspension when the stack is removed [N/m]
|
||||
% - C1 [6x1] - Added viscous damping [N/(m/s)]
|
||||
%
|
||||
% Outputs:
|
||||
% - stewart - updated Stewart structure with the added fields:
|
||||
% - actuators.type = 2
|
||||
% - actuators.K [6x1] - Total Stiffness of each strut [N/m]
|
||||
% - actuators.C [6x1] - Total Damping of each strut [N/(m/s)]
|
||||
% - actuators.Ka [6x1] - Vertical stiffness contribution of the piezoelectric stack [N/m]
|
||||
% - actuators.Ca [6x1] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
||||
% - actuators.Kr [6x1] - Vertical stiffness when the piezoelectric stack is removed [N/m]
|
||||
% - actuators.Cr [6x1] - Vertical damping when the piezoelectric stack is removed [N/(m/s)]
|
||||
% - actuators.Ka [6x1] - Stiffness of the actuator [N/m]
|
||||
% - actuators.Ke [6x1] - Stiffness used to adjust the pole of the isolator [N/m]
|
||||
% - actuators.K1 [6x1] - Stiffness of the metallic suspension when the stack is removed [N/m]
|
||||
% - actuators.C1 [6x1] - Added viscous damping [N/(m/s)]
|
||||
|
||||
arguments
|
||||
stewart
|
||||
args.Kr (6,1) double {mustBeNumeric, mustBeNonnegative} = 5e6*ones(6,1)
|
||||
args.Cr (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Ka (6,1) double {mustBeNumeric, mustBeNonnegative} = 15e6*ones(6,1)
|
||||
args.Ca (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Ke (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.5e6*ones(6,1)
|
||||
args.Ka (6,1) double {mustBeNumeric, mustBeNonnegative} = 43e6*ones(6,1)
|
||||
args.K1 (6,1) double {mustBeNumeric, mustBeNonnegative} = 0.4e6*ones(6,1)
|
||||
args.C1 (6,1) double {mustBeNumeric, mustBeNonnegative} = 10*ones(6,1)
|
||||
end
|
||||
|
||||
K = args.Ka + args.Kr;
|
||||
C = args.Ca + args.Cr;
|
||||
K = args.K1 + args.Ka.*args.Ke./(args.Ka + args.Ke);
|
||||
C = args.C1;
|
||||
|
||||
stewart.actuators.type = 2;
|
||||
|
||||
stewart.actuators.Ka = args.Ka;
|
||||
stewart.actuators.Ca = args.Ca;
|
||||
|
||||
stewart.actuators.Kr = args.Kr;
|
||||
stewart.actuators.Cr = args.Cr;
|
||||
stewart.actuators.Ke = args.Ke;
|
||||
stewart.actuators.K1 = args.K1;
|
||||
stewart.actuators.C1 = args.C1;
|
||||
|
||||
stewart.actuators.K = K;
|
||||
stewart.actuators.C = C;
|
||||
|
@ -9,6 +9,7 @@ function [stewart] = initializeFlexibleStrutDynamics(stewart, args)
|
||||
% - M [nxn] - Vertical damping contribution of the piezoelectric stack [N/(m/s)]
|
||||
% - xi [1x1] - Vertical (residual) stiffness when the piezoelectric stack is removed [N/m]
|
||||
% - step_file [6x1] - Vertical (residual) damping when the piezoelectric stack is removed [N/(m/s)]
|
||||
% - Gf [6x1] - Gain from strain in [m] to measured [N] such that it matches
|
||||
%
|
||||
% Outputs:
|
||||
% - stewart - updated Stewart structure with the added fields:
|
||||
@ -20,6 +21,7 @@ arguments
|
||||
args.H double {mustBeNumeric} = 0
|
||||
args.n_xyz double {mustBeNumeric} = zeros(2,3)
|
||||
args.xi double {mustBeNumeric} = 0.1
|
||||
args.Gf double {mustBeNumeric} = 1
|
||||
args.step_file char {} = ''
|
||||
end
|
||||
|
||||
@ -36,3 +38,5 @@ stewart.actuators.xi = args.xi;
|
||||
stewart.actuators.step_file = args.step_file;
|
||||
|
||||
stewart.actuators.K = args.K(3,3); % Axial Stiffness
|
||||
|
||||
stewart.actuators.Gf = args.Gf;
|
||||
|
@ -29,16 +29,24 @@ function [stewart] = initializeJointDynamics(stewart, args)
|
||||
|
||||
arguments
|
||||
stewart
|
||||
args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'universal_p', 'spherical_p', 'flexible'})} = 'universal'
|
||||
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'universal_p', 'spherical_p', 'flexible'})} = 'spherical'
|
||||
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1)
|
||||
args.type_F char {mustBeMember(args.type_F,{'universal', 'spherical', 'universal_p', 'spherical_p', 'universal_3dof', 'spherical_3dof', 'flexible'})} = 'universal'
|
||||
args.type_M char {mustBeMember(args.type_M,{'universal', 'spherical', 'universal_p', 'spherical_p', 'universal_3dof', 'spherical_3dof', 'flexible'})} = 'spherical'
|
||||
args.Kf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 33*ones(6,1)
|
||||
args.Cf_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
|
||||
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)
|
||||
args.Kt_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 236*ones(6,1)
|
||||
args.Ct_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-3*ones(6,1)
|
||||
args.Kf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 15*ones(6,1)
|
||||
args.Kf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 33*ones(6,1)
|
||||
args.Cf_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-4*ones(6,1)
|
||||
args.Kt_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 20*ones(6,1)
|
||||
args.Kt_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 236*ones(6,1)
|
||||
args.Ct_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e-3*ones(6,1)
|
||||
args.Ka_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.2e8*ones(6,1)
|
||||
args.Ca_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Kr_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.1e7*ones(6,1)
|
||||
args.Cr_F (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Ka_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.2e8*ones(6,1)
|
||||
args.Ca_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.Kr_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1.1e7*ones(6,1)
|
||||
args.Cr_M (6,1) double {mustBeNumeric, mustBeNonnegative} = 1e1*ones(6,1)
|
||||
args.K_M double {mustBeNumeric} = zeros(6,6)
|
||||
args.M_M double {mustBeNumeric} = zeros(6,6)
|
||||
args.n_xyz_M double {mustBeNumeric} = zeros(2,3)
|
||||
@ -62,6 +70,10 @@ switch args.type_F
|
||||
stewart.joints_F.type = 4;
|
||||
case 'flexible'
|
||||
stewart.joints_F.type = 5;
|
||||
case 'universal_3dof'
|
||||
stewart.joints_F.type = 6;
|
||||
case 'spherical_3dof'
|
||||
stewart.joints_F.type = 7;
|
||||
end
|
||||
|
||||
switch args.type_M
|
||||
@ -75,35 +87,35 @@ switch args.type_M
|
||||
stewart.joints_M.type = 4;
|
||||
case 'flexible'
|
||||
stewart.joints_M.type = 5;
|
||||
case 'universal_3dof'
|
||||
stewart.joints_M.type = 6;
|
||||
case 'spherical_3dof'
|
||||
stewart.joints_M.type = 7;
|
||||
end
|
||||
|
||||
stewart.joints_M.Kx = zeros(6,1);
|
||||
stewart.joints_M.Ky = zeros(6,1);
|
||||
stewart.joints_M.Kz = zeros(6,1);
|
||||
stewart.joints_M.Ka = args.Ka_M;
|
||||
stewart.joints_M.Kr = args.Kr_M;
|
||||
|
||||
stewart.joints_F.Kx = zeros(6,1);
|
||||
stewart.joints_F.Ky = zeros(6,1);
|
||||
stewart.joints_F.Kz = zeros(6,1);
|
||||
stewart.joints_F.Ka = args.Ka_F;
|
||||
stewart.joints_F.Kr = args.Kr_F;
|
||||
|
||||
stewart.joints_M.Cx = zeros(6,1);
|
||||
stewart.joints_M.Cy = zeros(6,1);
|
||||
stewart.joints_M.Cz = zeros(6,1);
|
||||
stewart.joints_M.Ca = args.Ca_M;
|
||||
stewart.joints_M.Cr = args.Cr_M;
|
||||
|
||||
stewart.joints_F.Cx = zeros(6,1);
|
||||
stewart.joints_F.Cy = zeros(6,1);
|
||||
stewart.joints_F.Cz = zeros(6,1);
|
||||
stewart.joints_F.Ca = args.Ca_F;
|
||||
stewart.joints_F.Cr = args.Cr_F;
|
||||
|
||||
stewart.joints_M.Kf = args.Kf_M;
|
||||
stewart.joints_M.Kt = args.Kf_M;
|
||||
stewart.joints_M.Kt = args.Kt_M;
|
||||
|
||||
stewart.joints_F.Kf = args.Kf_F;
|
||||
stewart.joints_F.Kt = args.Kf_F;
|
||||
stewart.joints_F.Kt = args.Kt_F;
|
||||
|
||||
stewart.joints_M.Cf = args.Cf_M;
|
||||
stewart.joints_M.Ct = args.Cf_M;
|
||||
stewart.joints_M.Ct = args.Ct_M;
|
||||
|
||||
stewart.joints_F.Cf = args.Cf_F;
|
||||
stewart.joints_F.Ct = args.Cf_F;
|
||||
stewart.joints_F.Ct = args.Ct_F;
|
||||
|
||||
stewart.joints_F.M = args.M_F;
|
||||
stewart.joints_F.K = args.K_F;
|
||||
|