Add simpler model for the flexible joint

This commit is contained in:
Thomas Dehaeze 2020-08-04 12:14:06 +02:00
parent 9b9b52c25f
commit a6dfc9fd70
8 changed files with 2526 additions and 206 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

View File

@ -3,7 +3,7 @@
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head> <head>
<!-- 2020-08-04 mar. 11:53 --> <!-- 2020-08-04 mar. 12:14 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Finite Element Model with Simscape</title> <title>Finite Element Model with Simscape</title>
<meta name="generator" content="Org mode" /> <meta name="generator" content="Org mode" />
@ -34,61 +34,62 @@
<h2>Table of Contents</h2> <h2>Table of Contents</h2>
<div id="text-table-of-contents"> <div id="text-table-of-contents">
<ul> <ul>
<li><a href="#org4f0b86a">1. Amplified Piezoelectric Actuator - 3D elements</a> <li><a href="#org11711e7">1. Amplified Piezoelectric Actuator - 3D elements</a>
<ul> <ul>
<li><a href="#org15fc227">1.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li> <li><a href="#org605569c">1.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#orgd262dde">1.2. Output parameters</a></li> <li><a href="#org3cecb96">1.2. Output parameters</a></li>
<li><a href="#org6aafed9">1.3. Piezoelectric parameters</a></li> <li><a href="#org8320da0">1.3. Piezoelectric parameters</a></li>
<li><a href="#orge996914">1.4. Identification of the Dynamics</a></li> <li><a href="#org143c785">1.4. Identification of the Dynamics</a></li>
<li><a href="#orgff6331a">1.5. Comparison with Ansys</a></li> <li><a href="#orgf5d3703">1.5. Comparison with Ansys</a></li>
<li><a href="#org9bf2a27">1.6. Force Sensor</a></li> <li><a href="#org3631f01">1.6. Force Sensor</a></li>
<li><a href="#org06d3501">1.7. Distributed Actuator</a></li> <li><a href="#orge78d6e7">1.7. Distributed Actuator</a></li>
<li><a href="#org324bb60">1.8. Distributed Actuator and Force Sensor</a></li> <li><a href="#orgeb1fcd5">1.8. Distributed Actuator and Force Sensor</a></li>
<li><a href="#org5840571">1.9. Dynamics from input voltage to displacement</a></li> <li><a href="#org8b3ceb4">1.9. Dynamics from input voltage to displacement</a></li>
<li><a href="#org7061a42">1.10. Dynamics from input voltage to output voltage</a></li> <li><a href="#orgc70429c">1.10. Dynamics from input voltage to output voltage</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org4785733">2. APA300ML</a> <li><a href="#orgb41a9c6">2. APA300ML</a>
<ul> <ul>
<li><a href="#orgc8b6c2f">2.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li> <li><a href="#org30af002">2.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org4f8843c">2.2. Output parameters</a></li> <li><a href="#org85fa434">2.2. Output parameters</a></li>
<li><a href="#org7dc97c1">2.3. Piezoelectric parameters</a></li> <li><a href="#org5cdf888">2.3. Piezoelectric parameters</a></li>
<li><a href="#orgf91f943">2.4. Identification of the APA Characteristics</a> <li><a href="#orgee1c2b0">2.4. Identification of the APA Characteristics</a>
<ul> <ul>
<li><a href="#orgcb12518">2.4.1. Stiffness</a></li> <li><a href="#org14fc9b3">2.4.1. Stiffness</a></li>
<li><a href="#org43f261c">2.4.2. Resonance Frequency</a></li> <li><a href="#org8015f10">2.4.2. Resonance Frequency</a></li>
<li><a href="#org38ca11e">2.4.3. Amplification factor</a></li> <li><a href="#org944a6aa">2.4.3. Amplification factor</a></li>
<li><a href="#org227839d">2.4.4. Stroke</a></li> <li><a href="#orgafa7bfa">2.4.4. Stroke</a></li>
</ul> </ul>
</li> </li>
<li><a href="#orgfeabffd">2.5. Identification of the Dynamics</a></li> <li><a href="#org556c829">2.5. Identification of the Dynamics</a></li>
<li><a href="#orga13ac6b">2.6. IFF</a></li> <li><a href="#orgf7bedc8">2.6. IFF</a></li>
<li><a href="#org5ed7231">2.7. DVF</a></li> <li><a href="#org0ec6d6d">2.7. DVF</a></li>
<li><a href="#org7e2be0e">2.8. Identification for a simpler model</a></li> <li><a href="#org389e503">2.8. Identification for a simpler model</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org0fc361f">3. Flexible Joint</a> <li><a href="#org302c208">3. Flexible Joint</a>
<ul> <ul>
<li><a href="#orgf82cf1b">3.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li> <li><a href="#org0d5de26">3.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#orgc3419f4">3.2. Output parameters</a></li> <li><a href="#orgdf345b2">3.2. Output parameters</a></li>
<li><a href="#org60de458">3.3. Flexible Joint Characteristics</a></li> <li><a href="#orgdaac86c">3.3. Flexible Joint Characteristics</a></li>
<li><a href="#orgcd8bc89">3.4. Identification</a></li> <li><a href="#org6162023">3.4. Identification of the parameters using Simscape</a></li>
<li><a href="#org8dd435e">3.5. Simpler Model</a></li>
</ul> </ul>
</li> </li>
<li><a href="#org258adf3">4. Integral Force Feedback with Amplified Piezo</a> <li><a href="#org91af791">4. Integral Force Feedback with Amplified Piezo</a>
<ul> <ul>
<li><a href="#org3e49415">4.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li> <li><a href="#orga880b08">4.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org690b14e">4.2. IFF Plant</a></li> <li><a href="#org4520a0d">4.2. IFF Plant</a></li>
<li><a href="#orga83d461">4.3. IFF controller</a></li> <li><a href="#orge7a688b">4.3. IFF controller</a></li>
<li><a href="#org1fd0639">4.4. Closed Loop System</a></li> <li><a href="#org0515ee4">4.4. Closed Loop System</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="outline-container-org4f0b86a" class="outline-2"> <div id="outline-container-org11711e7" class="outline-2">
<h2 id="org4f0b86a"><span class="section-number-2">1</span> Amplified Piezoelectric Actuator - 3D elements</h2> <h2 id="org11711e7"><span class="section-number-2">1</span> Amplified Piezoelectric Actuator - 3D elements</h2>
<div class="outline-text-2" id="text-1"> <div class="outline-text-2" id="text-1">
<p> <p>
The idea here is to: The idea here is to:
@ -102,8 +103,8 @@ The idea here is to:
</ul> </ul>
</div> </div>
<div id="outline-container-org15fc227" class="outline-3"> <div id="outline-container-org605569c" class="outline-3">
<h3 id="org15fc227"><span class="section-number-3">1.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3> <h3 id="org605569c"><span class="section-number-3">1.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-1-1"> <div class="outline-text-3" id="text-1-1">
<p> <p>
We first extract the stiffness and mass matrices. We first extract the stiffness and mass matrices.
@ -129,8 +130,8 @@ Then, we extract the coordinates of the interface nodes.
</div> </div>
</div> </div>
<div id="outline-container-orgd262dde" class="outline-3"> <div id="outline-container-org3cecb96" class="outline-3">
<h3 id="orgd262dde"><span class="section-number-3">1.2</span> Output parameters</h3> <h3 id="org3cecb96"><span class="section-number-3">1.2</span> Output parameters</h3>
<div class="outline-text-3" id="text-1-2"> <div class="outline-text-3" id="text-1-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">load('./mat/piezo_amplified_3d.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K'); <pre class="src src-matlab">load('./mat/piezo_amplified_3d.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
@ -169,7 +170,7 @@ Then, we extract the coordinates of the interface nodes.
</table> </table>
<div id="org5e22c17" class="figure"> <div id="org19ef33f" class="figure">
<p><img src="figs/amplified_piezo_interface_nodes.png" alt="amplified_piezo_interface_nodes.png" /> <p><img src="figs/amplified_piezo_interface_nodes.png" alt="amplified_piezo_interface_nodes.png" />
</p> </p>
<p><span class="figure-number">Figure 1: </span>Interface Nodes for the Amplified Piezo Actuator</p> <p><span class="figure-number">Figure 1: </span>Interface Nodes for the Amplified Piezo Actuator</p>
@ -627,8 +628,8 @@ Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <c
</div> </div>
<div id="outline-container-org6aafed9" class="outline-3"> <div id="outline-container-org8320da0" class="outline-3">
<h3 id="org6aafed9"><span class="section-number-3">1.3</span> Piezoelectric parameters</h3> <h3 id="org8320da0"><span class="section-number-3">1.3</span> Piezoelectric parameters</h3>
<div class="outline-text-3" id="text-1-3"> <div class="outline-text-3" id="text-1-3">
<p> <p>
Parameters for the APA95ML: Parameters for the APA95ML:
@ -689,8 +690,8 @@ where:
</div> </div>
</div> </div>
<div id="outline-container-orge996914" class="outline-3"> <div id="outline-container-org143c785" class="outline-3">
<h3 id="orge996914"><span class="section-number-3">1.4</span> Identification of the Dynamics</h3> <h3 id="org143c785"><span class="section-number-3">1.4</span> Identification of the Dynamics</h3>
<div class="outline-text-3" id="text-1-4"> <div class="outline-text-3" id="text-1-4">
<p> <p>
The flexible element is imported using the <code>Reduced Order Flexible Solid</code> simscape block. The flexible element is imported using the <code>Reduced Order Flexible Solid</code> simscape block.
@ -742,7 +743,7 @@ And the dynamics is identified.
</p> </p>
<p> <p>
The two identified dynamics are compared in Figure <a href="#org9bccbed">2</a>. The two identified dynamics are compared in Figure <a href="#orga651bf2">2</a>.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File <pre class="src src-matlab">%% Name of the Simulink File
@ -758,7 +759,7 @@ Ghm = -linearize(mdl, io);
</div> </div>
<div id="org9bccbed" class="figure"> <div id="orga651bf2" class="figure">
<p><img src="figs/dynamics_act_disp_comp_mass.png" alt="dynamics_act_disp_comp_mass.png" /> <p><img src="figs/dynamics_act_disp_comp_mass.png" alt="dynamics_act_disp_comp_mass.png" />
</p> </p>
<p><span class="figure-number">Figure 2: </span>Dynamics from \(F\) to \(d\) without a payload and with a 10kg payload</p> <p><span class="figure-number">Figure 2: </span>Dynamics from \(F\) to \(d\) without a payload and with a 10kg payload</p>
@ -766,8 +767,8 @@ Ghm = -linearize(mdl, io);
</div> </div>
</div> </div>
<div id="outline-container-orgff6331a" class="outline-3"> <div id="outline-container-orgf5d3703" class="outline-3">
<h3 id="orgff6331a"><span class="section-number-3">1.5</span> Comparison with Ansys</h3> <h3 id="orgf5d3703"><span class="section-number-3">1.5</span> Comparison with Ansys</h3>
<div class="outline-text-3" id="text-1-5"> <div class="outline-text-3" id="text-1-5">
<p> <p>
Let&rsquo;s import the results from an Harmonic response analysis in Ansys. Let&rsquo;s import the results from an Harmonic response analysis in Ansys.
@ -779,11 +780,11 @@ Gresp10 = readtable('FEA_HarmResponse_10kg.txt');
</div> </div>
<p> <p>
The obtained dynamics from the Simscape model and from the Ansys analysis are compare in Figure <a href="#orgbddd59a">3</a>. The obtained dynamics from the Simscape model and from the Ansys analysis are compare in Figure <a href="#orgf1820ec">3</a>.
</p> </p>
<div id="orgbddd59a" class="figure"> <div id="orgf1820ec" class="figure">
<p><img src="figs/dynamics_force_disp_comp_anasys.png" alt="dynamics_force_disp_comp_anasys.png" /> <p><img src="figs/dynamics_force_disp_comp_anasys.png" alt="dynamics_force_disp_comp_anasys.png" />
</p> </p>
<p><span class="figure-number">Figure 3: </span>Comparison of the obtained dynamics using Simscape with the harmonic response analysis using Ansys</p> <p><span class="figure-number">Figure 3: </span>Comparison of the obtained dynamics using Simscape with the harmonic response analysis using Ansys</p>
@ -791,15 +792,15 @@ The obtained dynamics from the Simscape model and from the Ansys analysis are co
</div> </div>
</div> </div>
<div id="outline-container-org9bf2a27" class="outline-3"> <div id="outline-container-org3631f01" class="outline-3">
<h3 id="org9bf2a27"><span class="section-number-3">1.6</span> Force Sensor</h3> <h3 id="org3631f01"><span class="section-number-3">1.6</span> Force Sensor</h3>
<div class="outline-text-3" id="text-1-6"> <div class="outline-text-3" id="text-1-6">
<p> <p>
The dynamics is identified from internal forces applied between nodes 3 and 11 to the relative displacement of nodes 11 and 13. The dynamics is identified from internal forces applied between nodes 3 and 11 to the relative displacement of nodes 11 and 13.
</p> </p>
<p> <p>
The obtained dynamics is shown in Figure <a href="#org32d2842">4</a>. The obtained dynamics is shown in Figure <a href="#org4257ce1">4</a>.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
@ -839,7 +840,7 @@ Gfm = linearize(mdl, io);
</div> </div>
<div id="org32d2842" class="figure"> <div id="org4257ce1" class="figure">
<p><img src="figs/dynamics_force_force_sensor_comp_mass.png" alt="dynamics_force_force_sensor_comp_mass.png" /> <p><img src="figs/dynamics_force_force_sensor_comp_mass.png" alt="dynamics_force_force_sensor_comp_mass.png" />
</p> </p>
<p><span class="figure-number">Figure 4: </span>Dynamics from \(F\) to \(F_m\) for \(m=0\) and \(m = 10kg\)</p> <p><span class="figure-number">Figure 4: </span>Dynamics from \(F\) to \(F_m\) for \(m=0\) and \(m = 10kg\)</p>
@ -847,8 +848,8 @@ Gfm = linearize(mdl, io);
</div> </div>
</div> </div>
<div id="outline-container-org06d3501" class="outline-3"> <div id="outline-container-orge78d6e7" class="outline-3">
<h3 id="org06d3501"><span class="section-number-3">1.7</span> Distributed Actuator</h3> <h3 id="orge78d6e7"><span class="section-number-3">1.7</span> Distributed Actuator</h3>
<div class="outline-text-3" id="text-1-7"> <div class="outline-text-3" id="text-1-7">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">m = 0; <pre class="src src-matlab">m = 0;
@ -897,8 +898,8 @@ Gdm = linearize(mdl, io);
</div> </div>
</div> </div>
<div id="outline-container-org324bb60" class="outline-3"> <div id="outline-container-orgeb1fcd5" class="outline-3">
<h3 id="org324bb60"><span class="section-number-3">1.8</span> Distributed Actuator and Force Sensor</h3> <h3 id="orgeb1fcd5"><span class="section-number-3">1.8</span> Distributed Actuator and Force Sensor</h3>
<div class="outline-text-3" id="text-1-8"> <div class="outline-text-3" id="text-1-8">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">m = 0; <pre class="src src-matlab">m = 0;
@ -938,8 +939,8 @@ Gfdm = linearize(mdl, io);
</div> </div>
</div> </div>
<div id="outline-container-org5840571" class="outline-3"> <div id="outline-container-org8b3ceb4" class="outline-3">
<h3 id="org5840571"><span class="section-number-3">1.9</span> Dynamics from input voltage to displacement</h3> <h3 id="org8b3ceb4"><span class="section-number-3">1.9</span> Dynamics from input voltage to displacement</h3>
<div class="outline-text-3" id="text-1-9"> <div class="outline-text-3" id="text-1-9">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">m = 5; <pre class="src src-matlab">m = 5;
@ -951,7 +952,7 @@ And the dynamics is identified.
</p> </p>
<p> <p>
The two identified dynamics are compared in Figure <a href="#org9bccbed">2</a>. The two identified dynamics are compared in Figure <a href="#orga651bf2">2</a>.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File <pre class="src src-matlab">%% Name of the Simulink File
@ -973,8 +974,8 @@ G = -linearize(mdl, io);
</div> </div>
</div> </div>
<div id="outline-container-org7061a42" class="outline-3"> <div id="outline-container-orgc70429c" class="outline-3">
<h3 id="org7061a42"><span class="section-number-3">1.10</span> Dynamics from input voltage to output voltage</h3> <h3 id="orgc70429c"><span class="section-number-3">1.10</span> Dynamics from input voltage to output voltage</h3>
<div class="outline-text-3" id="text-1-10"> <div class="outline-text-3" id="text-1-10">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">m = 5; <pre class="src src-matlab">m = 5;
@ -997,19 +998,19 @@ G = -linearize(mdl, io);
</div> </div>
</div> </div>
<div id="outline-container-org4785733" class="outline-2"> <div id="outline-container-orgb41a9c6" class="outline-2">
<h2 id="org4785733"><span class="section-number-2">2</span> APA300ML</h2> <h2 id="orgb41a9c6"><span class="section-number-2">2</span> APA300ML</h2>
<div class="outline-text-2" id="text-2"> <div class="outline-text-2" id="text-2">
<div id="orgbae0d7b" class="figure"> <div id="orgaa4b384" class="figure">
<p><img src="figs/apa300ml_ansys.jpg" alt="apa300ml_ansys.jpg" /> <p><img src="figs/apa300ml_ansys.jpg" alt="apa300ml_ansys.jpg" />
</p> </p>
<p><span class="figure-number">Figure 5: </span>Ansys FEM of the APA300ML</p> <p><span class="figure-number">Figure 5: </span>Ansys FEM of the APA300ML</p>
</div> </div>
</div> </div>
<div id="outline-container-orgc8b6c2f" class="outline-3"> <div id="outline-container-org30af002" class="outline-3">
<h3 id="orgc8b6c2f"><span class="section-number-3">2.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3> <h3 id="org30af002"><span class="section-number-3">2.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-2-1"> <div class="outline-text-3" id="text-2-1">
<p> <p>
We first extract the stiffness and mass matrices. We first extract the stiffness and mass matrices.
@ -1041,8 +1042,8 @@ Then, we extract the coordinates of the interface nodes.
</div> </div>
</div> </div>
<div id="outline-container-org4f8843c" class="outline-3"> <div id="outline-container-org85fa434" class="outline-3">
<h3 id="org4f8843c"><span class="section-number-3">2.2</span> Output parameters</h3> <h3 id="org85fa434"><span class="section-number-3">2.2</span> Output parameters</h3>
<div class="outline-text-3" id="text-2-2"> <div class="outline-text-3" id="text-2-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">load('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K'); <pre class="src src-matlab">load('./mat/APA300ML.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
@ -1483,8 +1484,8 @@ Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <c
</div> </div>
</div> </div>
<div id="outline-container-org7dc97c1" class="outline-3"> <div id="outline-container-org5cdf888" class="outline-3">
<h3 id="org7dc97c1"><span class="section-number-3">2.3</span> Piezoelectric parameters</h3> <h3 id="org5cdf888"><span class="section-number-3">2.3</span> Piezoelectric parameters</h3>
<div class="outline-text-3" id="text-2-3"> <div class="outline-text-3" id="text-2-3">
<p> <p>
Parameters for the APA300ML: Parameters for the APA300ML:
@ -1545,12 +1546,12 @@ where:
</div> </div>
</div> </div>
<div id="outline-container-orgf91f943" class="outline-3"> <div id="outline-container-orgee1c2b0" class="outline-3">
<h3 id="orgf91f943"><span class="section-number-3">2.4</span> Identification of the APA Characteristics</h3> <h3 id="orgee1c2b0"><span class="section-number-3">2.4</span> Identification of the APA Characteristics</h3>
<div class="outline-text-3" id="text-2-4"> <div class="outline-text-3" id="text-2-4">
</div> </div>
<div id="outline-container-orgcb12518" class="outline-4"> <div id="outline-container-org14fc9b3" class="outline-4">
<h4 id="orgcb12518"><span class="section-number-4">2.4.1</span> Stiffness</h4> <h4 id="org14fc9b3"><span class="section-number-4">2.4.1</span> Stiffness</h4>
<div class="outline-text-4" id="text-2-4-1"> <div class="outline-text-4" id="text-2-4-1">
<p> <p>
The transfer function from vertical external force to the relative vertical displacement is identified. The transfer function from vertical external force to the relative vertical displacement is identified.
@ -1575,16 +1576,16 @@ The specified stiffness in the datasheet is \(k = 1.8\, [N/\mu m]\).
</div> </div>
</div> </div>
<div id="outline-container-org43f261c" class="outline-4"> <div id="outline-container-org8015f10" class="outline-4">
<h4 id="org43f261c"><span class="section-number-4">2.4.2</span> Resonance Frequency</h4> <h4 id="org8015f10"><span class="section-number-4">2.4.2</span> Resonance Frequency</h4>
<div class="outline-text-4" id="text-2-4-2"> <div class="outline-text-4" id="text-2-4-2">
<p> <p>
The resonance frequency is specified to be between 650Hz and 840Hz. The resonance frequency is specified to be between 650Hz and 840Hz.
This is also the case for the FEM model (Figure <a href="#org51e1766">6</a>). This is also the case for the FEM model (Figure <a href="#org56f7212">6</a>).
</p> </p>
<div id="org51e1766" class="figure"> <div id="org56f7212" class="figure">
<p><img src="figs/apa300ml_resonance.png" alt="apa300ml_resonance.png" /> <p><img src="figs/apa300ml_resonance.png" alt="apa300ml_resonance.png" />
</p> </p>
<p><span class="figure-number">Figure 6: </span>First resonance is around 800Hz</p> <p><span class="figure-number">Figure 6: </span>First resonance is around 800Hz</p>
@ -1592,8 +1593,8 @@ This is also the case for the FEM model (Figure <a href="#org51e1766">6</a>).
</div> </div>
</div> </div>
<div id="outline-container-org38ca11e" class="outline-4"> <div id="outline-container-org944a6aa" class="outline-4">
<h4 id="org38ca11e"><span class="section-number-4">2.4.3</span> Amplification factor</h4> <h4 id="org944a6aa"><span class="section-number-4">2.4.3</span> Amplification factor</h4>
<div class="outline-text-4" id="text-2-4-3"> <div class="outline-text-4" id="text-2-4-3">
<p> <p>
The amplification factor is the ratio of the axial displacement to the stack displacement. The amplification factor is the ratio of the axial displacement to the stack displacement.
@ -1626,8 +1627,8 @@ If we take the ratio of the piezo height and length (approximation of the amplif
</div> </div>
</div> </div>
<div id="outline-container-org227839d" class="outline-4"> <div id="outline-container-orgafa7bfa" class="outline-4">
<h4 id="org227839d"><span class="section-number-4">2.4.4</span> Stroke</h4> <h4 id="orgafa7bfa"><span class="section-number-4">2.4.4</span> Stroke</h4>
<div class="outline-text-4" id="text-2-4-4"> <div class="outline-text-4" id="text-2-4-4">
<p> <p>
Estimation of the actuator stroke: Estimation of the actuator stroke:
@ -1658,8 +1659,8 @@ This is exactly the specified stroke in the data-sheet.
</div> </div>
</div> </div>
<div id="outline-container-orgfeabffd" class="outline-3"> <div id="outline-container-org556c829" class="outline-3">
<h3 id="orgfeabffd"><span class="section-number-3">2.5</span> Identification of the Dynamics</h3> <h3 id="org556c829"><span class="section-number-3">2.5</span> Identification of the Dynamics</h3>
<div class="outline-text-3" id="text-2-5"> <div class="outline-text-3" id="text-2-5">
<p> <p>
The flexible element is imported using the <code>Reduced Order Flexible Solid</code> simscape block. The flexible element is imported using the <code>Reduced Order Flexible Solid</code> simscape block.
@ -1685,7 +1686,7 @@ The same dynamics is identified for a payload mass of 10Kg.
</div> </div>
<div id="orgb3bcc13" class="figure"> <div id="orgf1438fa" class="figure">
<p><img src="figs/apa300ml_plant_dynamics.png" alt="apa300ml_plant_dynamics.png" /> <p><img src="figs/apa300ml_plant_dynamics.png" alt="apa300ml_plant_dynamics.png" />
</p> </p>
<p><span class="figure-number">Figure 7: </span>Transfer function from forces applied by the stack to the axial displacement of the APA</p> <p><span class="figure-number">Figure 7: </span>Transfer function from forces applied by the stack to the axial displacement of the APA</p>
@ -1693,29 +1694,29 @@ The same dynamics is identified for a payload mass of 10Kg.
</div> </div>
</div> </div>
<div id="outline-container-orga13ac6b" class="outline-3"> <div id="outline-container-orgf7bedc8" class="outline-3">
<h3 id="orga13ac6b"><span class="section-number-3">2.6</span> IFF</h3> <h3 id="orgf7bedc8"><span class="section-number-3">2.6</span> IFF</h3>
<div class="outline-text-3" id="text-2-6"> <div class="outline-text-3" id="text-2-6">
<p> <p>
Let&rsquo;s use 2 stacks as actuators and 1 stack as force sensor. Let&rsquo;s use 2 stacks as actuators and 1 stack as force sensor.
</p> </p>
<p> <p>
The transfer function from actuator to sensors is identified and shown in Figure <a href="#org3cf9aa1">8</a>. The transfer function from actuator to sensors is identified and shown in Figure <a href="#orgf24b637">8</a>.
</p> </p>
<div id="org3cf9aa1" class="figure"> <div id="orgf24b637" class="figure">
<p><img src="figs/apa300ml_iff_plant.png" alt="apa300ml_iff_plant.png" /> <p><img src="figs/apa300ml_iff_plant.png" alt="apa300ml_iff_plant.png" />
</p> </p>
<p><span class="figure-number">Figure 8: </span>Transfer function from actuator to force sensor</p> <p><span class="figure-number">Figure 8: </span>Transfer function from actuator to force sensor</p>
</div> </div>
<p> <p>
For root locus corresponding to IFF is shown in Figure <a href="#org876e0f8">9</a>. For root locus corresponding to IFF is shown in Figure <a href="#org9ea7c48">9</a>.
</p> </p>
<div id="org876e0f8" class="figure"> <div id="org9ea7c48" class="figure">
<p><img src="figs/apa300ml_iff_root_locus.png" alt="apa300ml_iff_root_locus.png" /> <p><img src="figs/apa300ml_iff_root_locus.png" alt="apa300ml_iff_root_locus.png" />
</p> </p>
<p><span class="figure-number">Figure 9: </span>Root Locus for IFF</p> <p><span class="figure-number">Figure 9: </span>Root Locus for IFF</p>
@ -1723,25 +1724,25 @@ For root locus corresponding to IFF is shown in Figure <a href="#org876e0f8">9</
</div> </div>
</div> </div>
<div id="outline-container-org5ed7231" class="outline-3"> <div id="outline-container-org0ec6d6d" class="outline-3">
<h3 id="org5ed7231"><span class="section-number-3">2.7</span> DVF</h3> <h3 id="org0ec6d6d"><span class="section-number-3">2.7</span> DVF</h3>
<div class="outline-text-3" id="text-2-7"> <div class="outline-text-3" id="text-2-7">
<p> <p>
Now the dynamics from the stack actuator to the relative motion sensor is identified and shown in Figure <a href="#org6126c83">10</a>. Now the dynamics from the stack actuator to the relative motion sensor is identified and shown in Figure <a href="#org65217e1">10</a>.
</p> </p>
<div id="org6126c83" class="figure"> <div id="org65217e1" class="figure">
<p><img src="figs/apa300ml_dvf_plant.png" alt="apa300ml_dvf_plant.png" /> <p><img src="figs/apa300ml_dvf_plant.png" alt="apa300ml_dvf_plant.png" />
</p> </p>
<p><span class="figure-number">Figure 10: </span>Transfer function from stack actuator to relative motion sensor</p> <p><span class="figure-number">Figure 10: </span>Transfer function from stack actuator to relative motion sensor</p>
</div> </div>
<p> <p>
The root locus for DVF is shown in Figure <a href="#org01f9702">11</a>. The root locus for DVF is shown in Figure <a href="#org19d561b">11</a>.
</p> </p>
<div id="org01f9702" class="figure"> <div id="org19d561b" class="figure">
<p><img src="figs/apa300ml_dvf_root_locus.png" alt="apa300ml_dvf_root_locus.png" /> <p><img src="figs/apa300ml_dvf_root_locus.png" alt="apa300ml_dvf_root_locus.png" />
</p> </p>
<p><span class="figure-number">Figure 11: </span>Root Locus for Direct Velocity Feedback</p> <p><span class="figure-number">Figure 11: </span>Root Locus for Direct Velocity Feedback</p>
@ -1749,8 +1750,8 @@ The root locus for DVF is shown in Figure <a href="#org01f9702">11</a>.
</div> </div>
</div> </div>
<div id="outline-container-org7e2be0e" class="outline-3"> <div id="outline-container-org389e503" class="outline-3">
<h3 id="org7e2be0e"><span class="section-number-3">2.8</span> Identification for a simpler model</h3> <h3 id="org389e503"><span class="section-number-3">2.8</span> Identification for a simpler model</h3>
<div class="outline-text-3" id="text-2-8"> <div class="outline-text-3" id="text-2-8">
<p> <p>
The goal in this section is to identify the parameters of a simple APA model from the FEM. The goal in this section is to identify the parameters of a simple APA model from the FEM.
@ -1762,12 +1763,12 @@ The presented model is based on (<a href="#citeproc_bib_item_2">Souleille et al.
</p> </p>
<p> <p>
The model represents the Amplified Piezo Actuator (APA) from Cedrat-Technologies (Figure <a href="#org60372a9">12</a>). The model represents the Amplified Piezo Actuator (APA) from Cedrat-Technologies (Figure <a href="#org98dd59a">12</a>).
The parameters are shown in the table below. The parameters are shown in the table below.
</p> </p>
<div id="org60372a9" class="figure"> <div id="org98dd59a" class="figure">
<p><img src="./figs/souleille18_model_piezo.png" alt="souleille18_model_piezo.png" /> <p><img src="./figs/souleille18_model_piezo.png" alt="souleille18_model_piezo.png" />
</p> </p>
<p><span class="figure-number">Figure 12: </span>Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator</p> <p><span class="figure-number">Figure 12: </span>Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator</p>
@ -1916,7 +1917,7 @@ Adjust the DC gain for the force sensor:
</div> </div>
<div id="org67c5104" class="figure"> <div id="orgf2c0742" class="figure">
<p><img src="figs/apa300ml_comp_simpler_model.png" alt="apa300ml_comp_simpler_model.png" /> <p><img src="figs/apa300ml_comp_simpler_model.png" alt="apa300ml_comp_simpler_model.png" />
</p> </p>
<p><span class="figure-number">Figure 13: </span>Comparison of the Dynamics between the FEM model and the simplified one</p> <p><span class="figure-number">Figure 13: </span>Comparison of the Dynamics between the FEM model and the simplified one</p>
@ -1925,19 +1926,23 @@ Adjust the DC gain for the force sensor:
</div> </div>
</div> </div>
<div id="outline-container-org0fc361f" class="outline-2"> <div id="outline-container-org302c208" class="outline-2">
<h2 id="org0fc361f"><span class="section-number-2">3</span> Flexible Joint</h2> <h2 id="org302c208"><span class="section-number-2">3</span> Flexible Joint</h2>
<div class="outline-text-2" id="text-3"> <div class="outline-text-2" id="text-3">
<p>
The flexor in Figure <a href="#orgad78691">14</a> is studied with a FEM.
</p>
<div id="orgd9dc946" class="figure">
<div id="orgad78691" class="figure">
<p><img src="figs/flexor_id16_screenshot.png" alt="flexor_id16_screenshot.png" /> <p><img src="figs/flexor_id16_screenshot.png" alt="flexor_id16_screenshot.png" />
</p> </p>
<p><span class="figure-number">Figure 14: </span>Flexor studied</p> <p><span class="figure-number">Figure 14: </span>Flexor studied</p>
</div> </div>
</div> </div>
<div id="outline-container-orgf82cf1b" class="outline-3"> <div id="outline-container-org0d5de26" class="outline-3">
<h3 id="orgf82cf1b"><span class="section-number-3">3.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3> <h3 id="org0d5de26"><span class="section-number-3">3.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-3-1"> <div class="outline-text-3" id="text-3-1">
<p> <p>
We first extract the stiffness and mass matrices. We first extract the stiffness and mass matrices.
@ -1963,8 +1968,8 @@ Then, we extract the coordinates of the interface nodes.
</div> </div>
</div> </div>
<div id="outline-container-orgc3419f4" class="outline-3"> <div id="outline-container-orgdf345b2" class="outline-3">
<h3 id="orgc3419f4"><span class="section-number-3">3.2</span> Output parameters</h3> <h3 id="orgdf345b2"><span class="section-number-3">3.2</span> Output parameters</h3>
<div class="outline-text-3" id="text-3-2"> <div class="outline-text-3" id="text-3-2">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">load('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K'); <pre class="src src-matlab">load('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
@ -2365,9 +2370,13 @@ Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <c
</div> </div>
</div> </div>
<div id="outline-container-org60de458" class="outline-3"> <div id="outline-container-orgdaac86c" class="outline-3">
<h3 id="org60de458"><span class="section-number-3">3.3</span> Flexible Joint Characteristics</h3> <h3 id="orgdaac86c"><span class="section-number-3">3.3</span> Flexible Joint Characteristics</h3>
<div class="outline-text-3" id="text-3-3"> <div class="outline-text-3" id="text-3-3">
<p>
The most important parameters of the flexible joint can be directly estimated from the stiffness matrix.
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -2414,29 +2423,17 @@ Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <c
</div> </div>
</div> </div>
<div id="outline-container-orgcd8bc89" class="outline-3"> <div id="outline-container-org6162023" class="outline-3">
<h3 id="orgcd8bc89"><span class="section-number-3">3.4</span> Identification</h3> <h3 id="org6162023"><span class="section-number-3">3.4</span> Identification of the parameters using Simscape</h3>
<div class="outline-text-3" id="text-3-4"> <div class="outline-text-3" id="text-3-4">
<div class="org-src-container"> <p>
<pre class="src src-matlab">m = 10; The flexor is now imported into Simscape and its parameters are estimated using an identification.
</pre> </p>
</div>
<p> <p>
The dynamics is identified from the applied force to the measured relative displacement. The dynamics is identified from the applied force/torque to the measured displacement/rotation of the flexor.
And we find the same parameters as the one estimated from the Stiffness matrix.
</p> </p>
<div class="org-src-container">
<pre class="src src-matlab">%% Name of the Simulink File
mdl = 'flexor_ID16';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/T'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/D'], 1, 'openoutput'); io_i = io_i + 1;
G = linearize(mdl, io);
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
@ -2465,36 +2462,77 @@ G = linearize(mdl, io);
<tr> <tr>
<td class="org-left">Bending Stiffness Rx [Nm/rad]</td> <td class="org-left">Bending Stiffness Rx [Nm/rad]</td>
<td class="org-right">33</td> <td class="org-right">33</td>
<td class="org-right">34</td> <td class="org-right">33</td>
</tr> </tr>
<tr> <tr>
<td class="org-left">Bending Stiffness Ry [Nm/rad]</td> <td class="org-left">Bending Stiffness Ry [Nm/rad]</td>
<td class="org-right">33</td> <td class="org-right">33</td>
<td class="org-right">126</td> <td class="org-right">33</td>
</tr> </tr>
<tr> <tr>
<td class="org-left">Torsion Stiffness Rz [Nm/rad]</td> <td class="org-left">Torsion Stiffness Rz [Nm/rad]</td>
<td class="org-right">236</td> <td class="org-right">236</td>
<td class="org-right">238</td> <td class="org-right">236</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
<div id="outline-container-org8dd435e" class="outline-3">
<h3 id="org8dd435e"><span class="section-number-3">3.5</span> Simpler Model</h3>
<div class="outline-text-3" id="text-3-5">
<p>
Let&rsquo;s now model the flexible joint with a &ldquo;perfect&rdquo; Bushing joint as shown in Figure <a href="#orgfcd1afb">15</a>.
</p>
<div id="orgfcd1afb" class="figure">
<p><img src="figs/flexible_joint_simscape.png" alt="flexible_joint_simscape.png" />
</p>
<p><span class="figure-number">Figure 15: </span>Bushing Joint used to model the flexible joint</p>
</div> </div>
<div id="outline-container-org258adf3" class="outline-2"> <p>
<h2 id="org258adf3"><span class="section-number-2">4</span> Integral Force Feedback with Amplified Piezo</h2> The parameters of the Bushing joint (stiffnesses) are estimated from the Stiffness matrix that was computed from the FEM.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Kx = K(1,1); % [N/m]
Ky = K(2,2); % [N/m]
Kz = K(3,3); % [N/m]
Krx = K(4,4); % [Nm/rad]
Kry = K(5,5); % [Nm/rad]
Krz = K(6,6); % [Nm/rad]
</pre>
</div>
<p>
The dynamics from the applied force/torque to the measured displacement/rotation of the flexor is identified again for this simpler model.
The two obtained dynamics are compared in Figure
</p>
<div id="orgec63a7e" class="figure">
<p><img src="figs/flexor_ID16_compare_bushing_joint.png" alt="flexor_ID16_compare_bushing_joint.png" />
</p>
<p><span class="figure-number">Figure 16: </span>Comparison of the Joint compliance between the FEM model and the simpler model</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org91af791" class="outline-2">
<h2 id="org91af791"><span class="section-number-2">4</span> Integral Force Feedback with Amplified Piezo</h2>
<div class="outline-text-2" id="text-4"> <div class="outline-text-2" id="text-4">
<p> <p>
In this section, we try to replicate the results obtained in (<a href="#citeproc_bib_item_2">Souleille et al. 2018</a>). In this section, we try to replicate the results obtained in (<a href="#citeproc_bib_item_2">Souleille et al. 2018</a>).
</p> </p>
</div> </div>
<div id="outline-container-org3e49415" class="outline-3"> <div id="outline-container-orga880b08" class="outline-3">
<h3 id="org3e49415"><span class="section-number-3">4.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3> <h3 id="orga880b08"><span class="section-number-3">4.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-4-1"> <div class="outline-text-3" id="text-4-1">
<p> <p>
We first extract the stiffness and mass matrices. We first extract the stiffness and mass matrices.
@ -2515,11 +2553,11 @@ Then, we extract the coordinates of the interface nodes.
</div> </div>
</div> </div>
<div id="outline-container-org690b14e" class="outline-3"> <div id="outline-container-org4520a0d" class="outline-3">
<h3 id="org690b14e"><span class="section-number-3">4.2</span> IFF Plant</h3> <h3 id="org4520a0d"><span class="section-number-3">4.2</span> IFF Plant</h3>
<div class="outline-text-3" id="text-4-2"> <div class="outline-text-3" id="text-4-2">
<p> <p>
The transfer function from the force actuator to the force sensor is identified and shown in Figure <a href="#org1ed2b1f">15</a>. The transfer function from the force actuator to the force sensor is identified and shown in Figure <a href="#orgc710f0f">17</a>.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
@ -2556,19 +2594,19 @@ Gf = linearize(mdl, io);
</div> </div>
<div id="org1ed2b1f" class="figure"> <div id="orgc710f0f" class="figure">
<p><img src="figs/piezo_amplified_iff_plant.png" alt="piezo_amplified_iff_plant.png" /> <p><img src="figs/piezo_amplified_iff_plant.png" alt="piezo_amplified_iff_plant.png" />
</p> </p>
<p><span class="figure-number">Figure 15: </span>IFF Plant</p> <p><span class="figure-number">Figure 17: </span>IFF Plant</p>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-orga83d461" class="outline-3"> <div id="outline-container-orge7a688b" class="outline-3">
<h3 id="orga83d461"><span class="section-number-3">4.3</span> IFF controller</h3> <h3 id="orge7a688b"><span class="section-number-3">4.3</span> IFF controller</h3>
<div class="outline-text-3" id="text-4-3"> <div class="outline-text-3" id="text-4-3">
<p> <p>
The controller is defined and the loop gain is shown in Figure <a href="#org6eddfbc">16</a>. The controller is defined and the loop gain is shown in Figure <a href="#org69cf7eb">18</a>.
</p> </p>
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">Kiff = -1e12/s; <pre class="src src-matlab">Kiff = -1e12/s;
@ -2576,16 +2614,16 @@ The controller is defined and the loop gain is shown in Figure <a href="#org6edd
</div> </div>
<div id="org6eddfbc" class="figure"> <div id="org69cf7eb" class="figure">
<p><img src="figs/piezo_amplified_iff_loop_gain.png" alt="piezo_amplified_iff_loop_gain.png" /> <p><img src="figs/piezo_amplified_iff_loop_gain.png" alt="piezo_amplified_iff_loop_gain.png" />
</p> </p>
<p><span class="figure-number">Figure 16: </span>IFF Loop Gain</p> <p><span class="figure-number">Figure 18: </span>IFF Loop Gain</p>
</div> </div>
</div> </div>
</div> </div>
<div id="outline-container-org1fd0639" class="outline-3"> <div id="outline-container-org0515ee4" class="outline-3">
<h3 id="org1fd0639"><span class="section-number-3">4.4</span> Closed Loop System</h3> <h3 id="org0515ee4"><span class="section-number-3">4.4</span> Closed Loop System</h3>
<div class="outline-text-3" id="text-4-4"> <div class="outline-text-3" id="text-4-4">
<div class="org-src-container"> <div class="org-src-container">
<pre class="src src-matlab">m = 10; <pre class="src src-matlab">m = 10;
@ -2628,18 +2666,18 @@ G.OutputName = {'x1', 'Fs'};
</div> </div>
<div id="org136372a" class="figure"> <div id="org24fd69b" class="figure">
<p><img src="figs/piezo_amplified_iff_comp.png" alt="piezo_amplified_iff_comp.png" /> <p><img src="figs/piezo_amplified_iff_comp.png" alt="piezo_amplified_iff_comp.png" />
</p> </p>
<p><span class="figure-number">Figure 17: </span>OL and CL transfer functions</p> <p><span class="figure-number">Figure 19: </span>OL and CL transfer functions</p>
</div> </div>
<div id="orgccbb8ba" class="figure"> <div id="org58e1871" class="figure">
<p><img src="figs/souleille18_results.png" alt="souleille18_results.png" /> <p><img src="figs/souleille18_results.png" alt="souleille18_results.png" />
</p> </p>
<p><span class="figure-number">Figure 18: </span>Results obtained in <a class='org-ref-reference' href="#souleille18_concep_activ_mount_space_applic">souleille18_concep_activ_mount_space_applic</a></p> <p><span class="figure-number">Figure 20: </span>Results obtained in <a class='org-ref-reference' href="#souleille18_concep_activ_mount_space_applic">souleille18_concep_activ_mount_space_applic</a></p>
</div> </div>
</div> </div>
</div> </div>
@ -2657,7 +2695,7 @@ G.OutputName = {'x1', 'Fs'};
</div> </div>
<div id="postamble" class="status"> <div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p> <p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-08-04 mar. 11:53</p> <p class="date">Created: 2020-08-04 mar. 12:14</p>
</div> </div>
</body> </body>
</html> </html>

136
index.org
View File

@ -1533,6 +1533,8 @@ Adjust the DC gain for the force sensor:
* Flexible Joint * Flexible Joint
** Introduction :ignore: ** Introduction :ignore:
The flexor in Figure [[fig:flexor_id16_screenshot]] is studied with a FEM.
#+name: fig:flexor_id16_screenshot #+name: fig:flexor_id16_screenshot
#+caption: Flexor studied #+caption: Flexor studied
[[file:figs/flexor_id16_screenshot.png]] [[file:figs/flexor_id16_screenshot.png]]
@ -1635,6 +1637,8 @@ Then, we extract the coordinates of the interface nodes.
Using =K=, =M= and =int_xyz=, we can use the =Reduced Order Flexible Solid= simscape block. Using =K=, =M= and =int_xyz=, we can use the =Reduced Order Flexible Solid= simscape block.
** Flexible Joint Characteristics ** Flexible Joint Characteristics
The most important parameters of the flexible joint can be directly estimated from the stiffness matrix.
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) #+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable([1e-6*K(3,3), K(4,4), K(5,5), K(6,6); 60, 15, 15, 20]', {'Axial Stiffness [N/um]', 'Bending Stiffness [Nm/rad]', 'Bending Stiffness [Nm/rad]', 'Torsion Stiffness [Nm/rad]'}, {'*Caracteristic*', '*Value*', '*Estimation by Francois*'}, ' %0.f '); data2orgtable([1e-6*K(3,3), K(4,4), K(5,5), K(6,6); 60, 15, 15, 20]', {'Axial Stiffness [N/um]', 'Bending Stiffness [Nm/rad]', 'Bending Stiffness [Nm/rad]', 'Torsion Stiffness [Nm/rad]'}, {'*Caracteristic*', '*Value*', '*Estimation by Francois*'}, ' %0.f ');
#+end_src #+end_src
@ -1647,13 +1651,15 @@ Using =K=, =M= and =int_xyz=, we can use the =Reduced Order Flexible Solid= sims
| Bending Stiffness [Nm/rad] | 33 | 15 | | Bending Stiffness [Nm/rad] | 33 | 15 |
| Torsion Stiffness [Nm/rad] | 236 | 20 | | Torsion Stiffness [Nm/rad] | 236 | 20 |
** Identification ** Identification of the parameters using Simscape
#+begin_src matlab The flexor is now imported into Simscape and its parameters are estimated using an identification.
m = 10;
#+begin_src matlab :exports none
m = 1;
#+end_src #+end_src
The dynamics is identified from the applied force to the measured relative displacement. The dynamics is identified from the applied force/torque to the measured displacement/rotation of the flexor.
#+begin_src matlab #+begin_src matlab :exports none
%% Name of the Simulink File %% Name of the Simulink File
mdl = 'flexor_ID16'; mdl = 'flexor_ID16';
@ -1665,6 +1671,8 @@ The dynamics is identified from the applied force to the measured relative displ
G = linearize(mdl, io); G = linearize(mdl, io);
#+end_src #+end_src
And we find the same parameters as the one estimated from the Stiffness matrix.
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) #+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
data2orgtable([1e-6*K(3,3), K(4,4), K(5,5), K(6,6) ; 1e-6./dcgain(G(3,3)), 1./dcgain(G(4,4)), 1./dcgain(G(5,5)), 1./dcgain(G(6,6))]', {'Axial Stiffness Dz [N/um]', 'Bending Stiffness Rx [Nm/rad]', 'Bending Stiffness Ry [Nm/rad]', 'Torsion Stiffness Rz [Nm/rad]'}, {'*Caracteristic*', '*Value*', '*Identification*'}, ' %0.f '); data2orgtable([1e-6*K(3,3), K(4,4), K(5,5), K(6,6) ; 1e-6./dcgain(G(3,3)), 1./dcgain(G(4,4)), 1./dcgain(G(5,5)), 1./dcgain(G(6,6))]', {'Axial Stiffness Dz [N/um]', 'Bending Stiffness Rx [Nm/rad]', 'Bending Stiffness Ry [Nm/rad]', 'Torsion Stiffness Rz [Nm/rad]'}, {'*Caracteristic*', '*Value*', '*Identification*'}, ' %0.f ');
#+end_src #+end_src
@ -1673,66 +1681,98 @@ The dynamics is identified from the applied force to the measured relative displ
| *Caracteristic* | *Value* | *Identification* | | *Caracteristic* | *Value* | *Identification* |
|-------------------------------+---------+------------------| |-------------------------------+---------+------------------|
| Axial Stiffness Dz [N/um] | 119 | 119 | | Axial Stiffness Dz [N/um] | 119 | 119 |
| Bending Stiffness Rx [Nm/rad] | 33 | 34 | | Bending Stiffness Rx [Nm/rad] | 33 | 33 |
| Bending Stiffness Ry [Nm/rad] | 33 | 126 | | Bending Stiffness Ry [Nm/rad] | 33 | 33 |
| Torsion Stiffness Rz [Nm/rad] | 236 | 238 | | Torsion Stiffness Rz [Nm/rad] | 236 | 236 |
** Simpler Model
Let's now model the flexible joint with a "perfect" Bushing joint as shown in Figure [[fig:flexible_joint_simscape]].
#+name: fig:flexible_joint_simscape
#+caption: Bushing Joint used to model the flexible joint
[[file:figs/flexible_joint_simscape.png]]
The parameters of the Bushing joint (stiffnesses) are estimated from the Stiffness matrix that was computed from the FEM.
#+begin_src matlab
Kx = K(1,1); % [N/m]
Ky = K(2,2); % [N/m]
Kz = K(3,3); % [N/m]
Krx = K(4,4); % [Nm/rad]
Kry = K(5,5); % [Nm/rad]
Krz = K(6,6); % [Nm/rad]
#+end_src
The dynamics from the applied force/torque to the measured displacement/rotation of the flexor is identified again for this simpler model.
#+begin_src matlab :exports none
%% Name of the Simulink File
mdl = 'flexor_ID16_simplified';
%% Input/Output definition
clear io; io_i = 1;
io(io_i) = linio([mdl, '/T'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/D'], 1, 'openoutput'); io_i = io_i + 1;
Gs = linearize(mdl, io);
#+end_src
The two obtained dynamics are compared in Figure
#+begin_src matlab :exports none #+begin_src matlab :exports none
freqs = logspace(0, 5, 1000); freqs = logspace(0, 5, 1000);
figure; figure;
ax1 = subplot(2,1,1); ax1 = subplot(1,2,1);
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(G(1,1), freqs, 'Hz'))), '-'); set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(G(2,2), freqs, 'Hz'))), '-'); plot(freqs, abs(squeeze(freqresp(G(1,1), freqs, 'Hz'))), '-', 'DisplayName', '$D_x/F_x$');
plot(freqs, abs(squeeze(freqresp(G(3,3), freqs, 'Hz'))), '-'); set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(Gs(1,1), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca,'ColorOrderIndex',2)
plot(freqs, abs(squeeze(freqresp(G(2,2), freqs, 'Hz'))), '-', 'DisplayName', '$D_y/F_y$');
set(gca,'ColorOrderIndex',2)
plot(freqs, abs(squeeze(freqresp(Gs(2,2), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca,'ColorOrderIndex',3)
plot(freqs, abs(squeeze(freqresp(G(3,3), freqs, 'Hz'))), '-', 'DisplayName', '$D_z/F_z$');
set(gca,'ColorOrderIndex',3)
plot(freqs, abs(squeeze(freqresp(Gs(3,3), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude'); set(gca, 'XTickLabel',[]); xlabel('Frequency [Hz]'); ylabel('Amplitude [m/N]');
hold off; hold off;
legend('location', 'northeast');
ax2 = subplot(2,1,2); ax2 = subplot(1,2,2);
hold on
plot(freqs, 180/pi*(angle(squeeze(freqresp(G(1,1), freqs, 'Hz')))), '-');
plot(freqs, 180/pi*(angle(squeeze(freqresp(G(2,2), freqs, 'Hz')))), '-');
plot(freqs, 180/pi*(angle(squeeze(freqresp(G(3,3), freqs, 'Hz')))), '-');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
yticks(-360:90:360);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src
#+begin_src matlab :exports none
freqs = logspace(0, 5, 1000);
figure;
ax1 = subplot(2,1,1);
hold on; hold on;
plot(freqs, abs(squeeze(freqresp(G(4,4), freqs, 'Hz'))), '-'); set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(G(5,5), freqs, 'Hz'))), '-'); plot(freqs, abs(squeeze(freqresp(G(4,4), freqs, 'Hz'))), '-', 'DisplayName', '$R_x/M_x$');
plot(freqs, abs(squeeze(freqresp(G(6,6), freqs, 'Hz'))), '-'); set(gca,'ColorOrderIndex',1)
plot(freqs, abs(squeeze(freqresp(Gs(4,4), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca,'ColorOrderIndex',2)
plot(freqs, abs(squeeze(freqresp(G(5,5), freqs, 'Hz'))), '-', 'DisplayName', '$R_y/M_y$');
set(gca,'ColorOrderIndex',2)
plot(freqs, abs(squeeze(freqresp(Gs(5,5), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
set(gca,'ColorOrderIndex',3)
plot(freqs, abs(squeeze(freqresp(G(6,6), freqs, 'Hz'))), '-', 'DisplayName', '$R_z/M_z$');
set(gca,'ColorOrderIndex',3)
plot(freqs, abs(squeeze(freqresp(Gs(6,6), freqs, 'Hz'))), '--', 'HandleVisibility', 'off');
hold off; hold off;
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log'); set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
ylabel('Amplitude'); set(gca, 'XTickLabel',[]); xlabel('Frequency [Hz]'); ylabel('Amplitude [rad/Nm]');
hold off; hold off;
legend('location', 'northeast');
ax2 = subplot(2,1,2);
hold on
plot(freqs, 180/pi*(angle(squeeze(freqresp(G(4,4), freqs, 'Hz')))), '-');
plot(freqs, 180/pi*(angle(squeeze(freqresp(G(5,5), freqs, 'Hz')))), '-');
plot(freqs, 180/pi*(angle(squeeze(freqresp(G(6,6), freqs, 'Hz')))), '-');
set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
yticks(-360:90:360);
xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
hold off;
linkaxes([ax1,ax2],'x');
xlim([freqs(1), freqs(end)]);
#+end_src #+end_src
#+begin_src matlab :tangle no :exports results :results file replace
exportFig('figs/flexor_ID16_compare_bushing_joint.pdf', 'width', 'full', 'height', 'tall');
#+end_src
#+name: fig:flexor_ID16_compare_bushing_joint
#+caption: Comparison of the Joint compliance between the FEM model and the simpler model
#+RESULTS:
[[file:figs/flexor_ID16_compare_bushing_joint.png]]
* Integral Force Feedback with Amplified Piezo * Integral Force Feedback with Amplified Piezo
** Introduction :ignore: ** Introduction :ignore:
In this section, we try to replicate the results obtained in cite:souleille18_concep_activ_mount_space_applic. In this section, we try to replicate the results obtained in cite:souleille18_concep_activ_mount_space_applic.

Binary file not shown.