nass-fem/index.html

4274 lines
128 KiB
HTML
Raw Normal View History

2020-06-14 12:23:45 +02:00
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"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-10-29 13:37:06 +01:00
<!-- 2020-10-29 jeu. 10:08 -->
2020-06-14 12:23:45 +02:00
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Finite Element Model with Simscape</title>
<meta name="generator" content="Org mode" />
<meta name="author" content="Dehaeze Thomas" />
<link rel="stylesheet" type="text/css" href="./css/htmlize.css"/>
<link rel="stylesheet" type="text/css" href="./css/readtheorg.css"/>
<script src="./js/jquery.min.js"></script>
<script src="./js/bootstrap.min.js"></script>
<script src="./js/jquery.stickytableheaders.min.js"></script>
<script src="./js/readtheorg.js"></script>
<script>MathJax = {
tex: {
tags: 'ams',
macros: {bm: ["\\boldsymbol{#1}",1],}
}
};
</script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<body>
<div id="org-div-home-and-up">
2020-10-29 13:37:06 +01:00
<a accesskey="h" href="../index.html"> UP </a>
2020-06-14 12:23:45 +02:00
|
2020-10-29 13:37:06 +01:00
<a accesskey="H" href="../index.html"> HOME </a>
2020-06-14 12:23:45 +02:00
</div><div id="content">
<h1 class="title">Finite Element Model with Simscape</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
2020-10-29 13:37:06 +01:00
<li><a href="#org3ded9a3">1. Amplified Piezoelectric Actuator - 3D elements</a>
2020-06-14 12:23:45 +02:00
<ul>
2020-10-29 13:37:06 +01:00
<li><a href="#org7436688">1.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org4ad8afa">1.2. Output parameters</a></li>
<li><a href="#org1477fec">1.3. Piezoelectric parameters</a></li>
<li><a href="#orgdd0f3d7">1.4. Identification of the Dynamics</a></li>
<li><a href="#org740df84">1.5. Comparison with Ansys</a></li>
<li><a href="#org1555a0d">1.6. Force Sensor</a></li>
<li><a href="#org71b73d0">1.7. Distributed Actuator</a></li>
<li><a href="#org023858d">1.8. Distributed Actuator and Force Sensor</a></li>
<li><a href="#org91149a1">1.9. Dynamics from input voltage to displacement</a></li>
<li><a href="#orgc531f2d">1.10. Dynamics from input voltage to output voltage</a></li>
<li><a href="#org527cbaa">1.11. Identification for a simpler model</a></li>
2020-06-15 09:13:55 +02:00
</ul>
</li>
2020-10-29 13:37:06 +01:00
<li><a href="#org5e5f531">2. APA300ML</a>
2020-06-15 09:13:55 +02:00
<ul>
2020-10-29 13:37:06 +01:00
<li><a href="#org9691c9e">2.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org34676bd">2.2. Output parameters</a></li>
<li><a href="#orgf6ad2fe">2.3. Piezoelectric parameters</a></li>
<li><a href="#orgfcc3b27">2.4. Identification of the APA Characteristics</a>
2020-08-03 15:37:17 +02:00
<ul>
2020-10-29 13:37:06 +01:00
<li><a href="#org7c141d1">2.4.1. Stiffness</a></li>
<li><a href="#org6336a4d">2.4.2. Resonance Frequency</a></li>
<li><a href="#org7adcbea">2.4.3. Amplification factor</a></li>
<li><a href="#org924ba9a">2.4.4. Stroke</a></li>
2020-08-03 15:37:17 +02:00
</ul>
</li>
2020-10-29 13:37:06 +01:00
<li><a href="#org0334d98">2.5. Identification of the Dynamics</a></li>
<li><a href="#org889c8e8">2.6. IFF</a></li>
<li><a href="#org6f11c82">2.7. DVF</a></li>
<li><a href="#org1c376b5">2.8. Identification for a simpler model</a></li>
<li><a href="#org30bc4bf">2.9. Identification of the stiffness properties</a>
<ul>
<li><a href="#orge89f3f8">2.9.1. APA Alone</a></li>
<li><a href="#org4651c6e">2.9.2. See how the global stiffness is changing with the flexible joints</a></li>
</ul>
</li>
<li><a href="#orgbb1e485">2.10. Effect of APA300ML in the flexibility of the leg</a></li>
</ul>
</li>
<li><a href="#org71e2995">3. Flexible Joint</a>
<ul>
<li><a href="#org4609327">3.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org222b467">3.2. Output parameters</a></li>
<li><a href="#orgace43b0">3.3. Flexible Joint Characteristics</a></li>
<li><a href="#orgc60e392">3.4. Identification of the parameters using Simscape</a></li>
<li><a href="#org43c8aa7">3.5. Simpler Model</a></li>
</ul>
</li>
<li><a href="#org5d2c10d">4. Optimal Flexible Joint</a>
<ul>
<li><a href="#orgfec12e9">4.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org51a4b8d">4.2. Output parameters</a></li>
<li><a href="#org9df419b">4.3. Flexible Joint Characteristics</a></li>
<li><a href="#org4ea4053">4.4. Identification of the parameters using Simscape</a></li>
<li><a href="#org070daa9">4.5. Simpler Model</a></li>
2020-08-03 15:37:17 +02:00
</ul>
</li>
2020-10-29 13:37:06 +01:00
<li><a href="#org72ebb5c">5. Integral Force Feedback with Amplified Piezo</a>
2020-08-03 15:37:17 +02:00
<ul>
2020-10-29 13:37:06 +01:00
<li><a href="#orgffa90de">5.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org4ac5a6e">5.2. IFF Plant</a></li>
<li><a href="#orgdc46434">5.3. IFF controller</a></li>
<li><a href="#orgc9d8168">5.4. Closed Loop System</a></li>
2020-08-03 15:37:17 +02:00
</ul>
</li>
2020-10-29 13:37:06 +01:00
<li><a href="#orge46f2bf">6. Complete Strut with Encoder</a>
2020-08-03 15:37:17 +02:00
<ul>
2020-10-29 13:37:06 +01:00
<li><a href="#org9c8b2a0">6.1. Introduction</a></li>
<li><a href="#org6b21925">6.2. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org40668e1">6.3. Output parameters</a></li>
<li><a href="#org6d5c440">6.4. Piezoelectric parameters</a></li>
<li><a href="#org2521017">6.5. Identification of the Dynamics</a></li>
2020-06-14 12:23:45 +02:00
</ul>
</li>
</ul>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org3ded9a3" class="outline-2">
<h2 id="org3ded9a3"><span class="section-number-2">1</span> Amplified Piezoelectric Actuator - 3D elements</h2>
2020-06-14 12:23:45 +02:00
<div class="outline-text-2" id="text-1">
<p>
The idea here is to:
</p>
<ul class="org-ul">
<li>export a FEM of an amplified piezoelectric actuator from Ansys to Matlab</li>
<li>import it into a Simscape model</li>
<li>compare the obtained dynamics</li>
<li>add 10kg mass on top of the actuator and identify the dynamics</li>
<li>compare with results from Ansys where 10kg are directly added to the FEM</li>
</ul>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org7436688" class="outline-3">
<h3 id="org7436688"><span class="section-number-3">1.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
2020-06-14 12:23:45 +02:00
<div class="outline-text-3" id="text-1-1">
<p>
We first extract the stiffness and mass matrices.
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">K = extractMatrix(<span class="org-string">'piezo_amplified_3d_K.txt'</span>);
M = extractMatrix(<span class="org-string">'piezo_amplified_3d_M.txt'</span>);
2020-06-14 12:23:45 +02:00
</pre>
</div>
<p>
Then, we extract the coordinates of the interface nodes.
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes(<span class="org-string">'piezo_amplified_3d.txt'</span>);
2020-06-14 12:23:45 +02:00
</pre>
</div>
2020-08-03 15:37:17 +02:00
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">save(<span class="org-string">'./mat/piezo_amplified_3d.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
2020-08-03 15:37:17 +02:00
</pre>
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org4ad8afa" class="outline-3">
<h3 id="org4ad8afa"><span class="section-number-3">1.2</span> Output parameters</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-2">
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">load(<span class="org-string">'./mat/piezo_amplified_3d.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
2020-08-03 15:37:17 +02:00
</pre>
</div>
2020-06-14 12:23:45 +02:00
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-left">Total number of Nodes</td>
<td class="org-right">168959</td>
</tr>
<tr>
<td class="org-left">Number of interface Nodes</td>
<td class="org-right">13</td>
</tr>
<tr>
<td class="org-left">Number of Modes</td>
<td class="org-right">30</td>
</tr>
<tr>
<td class="org-left">Size of M and K matrices</td>
<td class="org-right">108</td>
</tr>
</tbody>
</table>
2020-10-29 13:37:06 +01:00
<div id="org52ce3d2" class="figure">
2020-06-14 12:23:45 +02:00
<p><img src="figs/amplified_piezo_interface_nodes.png" alt="amplified_piezo_interface_nodes.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Interface Nodes for the Amplified Piezo Actuator</p>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Coordinates of the interface nodes</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-right">Node i</th>
<th scope="col" class="org-right">Node Number</th>
<th scope="col" class="org-right">x [m]</th>
<th scope="col" class="org-right">y [m]</th>
<th scope="col" class="org-right">z [m]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">1.0</td>
<td class="org-right">168947.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.03</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">2.0</td>
<td class="org-right">168949.0</td>
<td class="org-right">0.0</td>
<td class="org-right">-0.03</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">3.0</td>
<td class="org-right">168950.0</td>
<td class="org-right">-0.035</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">4.0</td>
<td class="org-right">168951.0</td>
<td class="org-right">-0.028</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">5.0</td>
<td class="org-right">168952.0</td>
<td class="org-right">-0.021</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">6.0</td>
<td class="org-right">168953.0</td>
<td class="org-right">-0.014</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">7.0</td>
<td class="org-right">168954.0</td>
<td class="org-right">-0.007</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">8.0</td>
<td class="org-right">168955.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">9.0</td>
<td class="org-right">168956.0</td>
<td class="org-right">0.007</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">10.0</td>
<td class="org-right">168957.0</td>
<td class="org-right">0.014</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">11.0</td>
<td class="org-right">168958.0</td>
<td class="org-right">0.021</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">12.0</td>
<td class="org-right">168959.0</td>
<td class="org-right">0.035</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">13.0</td>
<td class="org-right">168960.0</td>
<td class="org-right">0.028</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 2:</span> First 10x10 elements of the Stiffness matrix</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">300000000.0</td>
<td class="org-right">-30000.0</td>
<td class="org-right">8000.0</td>
<td class="org-right">-200.0</td>
<td class="org-right">-30.0</td>
<td class="org-right">-60000.0</td>
<td class="org-right">20000000.0</td>
<td class="org-right">-4000.0</td>
<td class="org-right">500.0</td>
<td class="org-right">8</td>
</tr>
<tr>
<td class="org-right">-30000.0</td>
<td class="org-right">100000000.0</td>
<td class="org-right">400.0</td>
<td class="org-right">30.0</td>
<td class="org-right">200.0</td>
<td class="org-right">-1</td>
<td class="org-right">4000.0</td>
<td class="org-right">-8000000.0</td>
<td class="org-right">800.0</td>
<td class="org-right">7</td>
</tr>
<tr>
<td class="org-right">8000.0</td>
<td class="org-right">400.0</td>
<td class="org-right">50000000.0</td>
<td class="org-right">-800000.0</td>
<td class="org-right">-300.0</td>
<td class="org-right">-40.0</td>
<td class="org-right">300.0</td>
<td class="org-right">100.0</td>
<td class="org-right">5000000.0</td>
<td class="org-right">40000.0</td>
</tr>
<tr>
<td class="org-right">-200.0</td>
<td class="org-right">30.0</td>
<td class="org-right">-800000.0</td>
<td class="org-right">20000.0</td>
<td class="org-right">5</td>
<td class="org-right">1</td>
<td class="org-right">-10.0</td>
<td class="org-right">-2</td>
<td class="org-right">-40000.0</td>
<td class="org-right">-300.0</td>
</tr>
<tr>
<td class="org-right">-30.0</td>
<td class="org-right">200.0</td>
<td class="org-right">-300.0</td>
<td class="org-right">5</td>
<td class="org-right">40000.0</td>
<td class="org-right">0.3</td>
<td class="org-right">-4</td>
<td class="org-right">-10.0</td>
<td class="org-right">40.0</td>
<td class="org-right">0.4</td>
</tr>
<tr>
<td class="org-right">-60000.0</td>
<td class="org-right">-1</td>
<td class="org-right">-40.0</td>
<td class="org-right">1</td>
<td class="org-right">0.3</td>
<td class="org-right">3000.0</td>
<td class="org-right">7000.0</td>
<td class="org-right">0.8</td>
<td class="org-right">-1</td>
<td class="org-right">0.0003</td>
</tr>
<tr>
<td class="org-right">20000000.0</td>
<td class="org-right">4000.0</td>
<td class="org-right">300.0</td>
<td class="org-right">-10.0</td>
<td class="org-right">-4</td>
<td class="org-right">7000.0</td>
<td class="org-right">300000000.0</td>
<td class="org-right">20000.0</td>
<td class="org-right">3000.0</td>
<td class="org-right">80.0</td>
</tr>
<tr>
<td class="org-right">-4000.0</td>
<td class="org-right">-8000000.0</td>
<td class="org-right">100.0</td>
<td class="org-right">-2</td>
<td class="org-right">-10.0</td>
<td class="org-right">0.8</td>
<td class="org-right">20000.0</td>
<td class="org-right">100000000.0</td>
<td class="org-right">-4000.0</td>
<td class="org-right">-100.0</td>
</tr>
<tr>
<td class="org-right">500.0</td>
<td class="org-right">800.0</td>
<td class="org-right">5000000.0</td>
<td class="org-right">-40000.0</td>
<td class="org-right">40.0</td>
<td class="org-right">-1</td>
<td class="org-right">3000.0</td>
<td class="org-right">-4000.0</td>
<td class="org-right">50000000.0</td>
<td class="org-right">800000.0</td>
</tr>
<tr>
<td class="org-right">8</td>
<td class="org-right">7</td>
<td class="org-right">40000.0</td>
<td class="org-right">-300.0</td>
<td class="org-right">0.4</td>
<td class="org-right">0.0003</td>
<td class="org-right">80.0</td>
<td class="org-right">-100.0</td>
<td class="org-right">800000.0</td>
<td class="org-right">20000.0</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 3:</span> First 10x10 elements of the Mass matrix</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">0.03</td>
<td class="org-right">2e-06</td>
<td class="org-right">-2e-07</td>
<td class="org-right">1e-08</td>
<td class="org-right">2e-08</td>
<td class="org-right">0.0002</td>
<td class="org-right">-0.001</td>
<td class="org-right">2e-07</td>
<td class="org-right">-8e-08</td>
<td class="org-right">-9e-10</td>
</tr>
<tr>
<td class="org-right">2e-06</td>
<td class="org-right">0.02</td>
<td class="org-right">-5e-07</td>
<td class="org-right">7e-09</td>
<td class="org-right">3e-08</td>
<td class="org-right">2e-08</td>
<td class="org-right">-3e-07</td>
<td class="org-right">0.0003</td>
<td class="org-right">-1e-08</td>
<td class="org-right">1e-10</td>
</tr>
<tr>
<td class="org-right">-2e-07</td>
<td class="org-right">-5e-07</td>
<td class="org-right">0.02</td>
<td class="org-right">-9e-05</td>
<td class="org-right">4e-09</td>
<td class="org-right">-1e-08</td>
<td class="org-right">2e-07</td>
<td class="org-right">-2e-08</td>
<td class="org-right">-0.0006</td>
<td class="org-right">-5e-06</td>
</tr>
<tr>
<td class="org-right">1e-08</td>
<td class="org-right">7e-09</td>
<td class="org-right">-9e-05</td>
<td class="org-right">1e-06</td>
<td class="org-right">6e-11</td>
<td class="org-right">4e-10</td>
<td class="org-right">-1e-09</td>
<td class="org-right">3e-11</td>
<td class="org-right">5e-06</td>
<td class="org-right">3e-08</td>
</tr>
<tr>
<td class="org-right">2e-08</td>
<td class="org-right">3e-08</td>
<td class="org-right">4e-09</td>
<td class="org-right">6e-11</td>
<td class="org-right">1e-06</td>
<td class="org-right">2e-10</td>
<td class="org-right">-2e-09</td>
<td class="org-right">2e-10</td>
<td class="org-right">-7e-09</td>
<td class="org-right">-4e-11</td>
</tr>
<tr>
<td class="org-right">0.0002</td>
<td class="org-right">2e-08</td>
<td class="org-right">-1e-08</td>
<td class="org-right">4e-10</td>
<td class="org-right">2e-10</td>
<td class="org-right">2e-06</td>
<td class="org-right">-2e-06</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-7e-10</td>
<td class="org-right">-9e-12</td>
</tr>
<tr>
<td class="org-right">-0.001</td>
<td class="org-right">-3e-07</td>
<td class="org-right">2e-07</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-2e-09</td>
<td class="org-right">-2e-06</td>
<td class="org-right">0.03</td>
<td class="org-right">-2e-06</td>
<td class="org-right">-1e-07</td>
<td class="org-right">-5e-09</td>
</tr>
<tr>
<td class="org-right">2e-07</td>
<td class="org-right">0.0003</td>
<td class="org-right">-2e-08</td>
<td class="org-right">3e-11</td>
<td class="org-right">2e-10</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-2e-06</td>
<td class="org-right">0.02</td>
<td class="org-right">-8e-07</td>
<td class="org-right">-1e-08</td>
</tr>
<tr>
<td class="org-right">-8e-08</td>
<td class="org-right">-1e-08</td>
<td class="org-right">-0.0006</td>
<td class="org-right">5e-06</td>
<td class="org-right">-7e-09</td>
<td class="org-right">-7e-10</td>
<td class="org-right">-1e-07</td>
<td class="org-right">-8e-07</td>
<td class="org-right">0.02</td>
<td class="org-right">9e-05</td>
</tr>
<tr>
<td class="org-right">-9e-10</td>
<td class="org-right">1e-10</td>
<td class="org-right">-5e-06</td>
<td class="org-right">3e-08</td>
<td class="org-right">-4e-11</td>
<td class="org-right">-9e-12</td>
<td class="org-right">-5e-09</td>
<td class="org-right">-1e-08</td>
<td class="org-right">9e-05</td>
<td class="org-right">1e-06</td>
</tr>
</tbody>
</table>
<p>
Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org1477fec" class="outline-3">
<h3 id="org1477fec"><span class="section-number-3">1.3</span> Piezoelectric parameters</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-3">
<p>
Parameters for the APA95ML:
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">d33 = 3e<span class="org-type">-</span>10; <span class="org-comment">% Strain constant [m/V]</span>
n = 80; <span class="org-comment">% Number of layers per stack</span>
eT = 1.6e<span class="org-type">-</span>7; <span class="org-comment">% Permittivity under constant stress [F/m]</span>
sD = 2e<span class="org-type">-</span>11; <span class="org-comment">% Elastic compliance under constant electric displacement [m2/N]</span>
ka = 235e6; <span class="org-comment">% Stack stiffness [N/m]</span>
C = 5e<span class="org-type">-</span>6; <span class="org-comment">% Stack capactiance [F]</span>
2020-08-03 15:37:17 +02:00
</pre>
</div>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">na = 2; <span class="org-comment">% Number of stacks used as actuator</span>
ns = 1; <span class="org-comment">% Number of stacks used as force sensor</span>
2020-08-03 15:37:17 +02:00
</pre>
</div>
<p>
The ratio of the developed force to applied voltage is \(d_{33} n k_a\) in [N/V].
We denote this constant by \(g_a\) and:
\[ F_a = g_a V_a, \quad g_a = d_{33} n k_a \]
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">d33<span class="org-type">*</span>(na<span class="org-type">*</span>n)<span class="org-type">*</span>(ka<span class="org-type">/</span>(na <span class="org-type">+</span> ns)) <span class="org-comment">% [N/V]</span>
2020-08-03 15:37:17 +02:00
</pre>
</div>
<pre class="example">
3.76
</pre>
<p>
From (<a href="#citeproc_bib_item_1">Fleming and Leang 2014</a>) (page 123), the relation between relative displacement and generated voltage is:
\[ V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h \]
where:
</p>
<ul class="org-ul">
<li>\(V_s\): measured voltage [V]</li>
<li>\(d_{33}\): strain constant [m/V]</li>
<li>\(\epsilon^T\): permittivity under constant stress [F/m]</li>
<li>\(s^D\): elastic compliance under constant electric displacement [m^2/N]</li>
<li>\(n\): number of layers</li>
<li>\(\Delta h\): relative displacement [m]</li>
</ul>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">1e<span class="org-type">-</span>6<span class="org-type">*</span>d33<span class="org-type">/</span>(eT<span class="org-type">*</span>sD<span class="org-type">*</span>ns<span class="org-type">*</span>n) <span class="org-comment">% [V/um]</span>
2020-08-03 15:37:17 +02:00
</pre>
</div>
<pre class="example">
1.1719
</pre>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-orgdd0f3d7" class="outline-3">
<h3 id="orgdd0f3d7"><span class="section-number-3">1.4</span> Identification of the Dynamics</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-4">
2020-06-14 12:23:45 +02:00
<p>
The flexible element is imported using the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
<p>
2020-06-14 12:31:03 +02:00
To model the actuator, an <code>Internal Force</code> block is added between the nodes 3 and 12.
A <code>Relative Motion Sensor</code> block is added between the nodes 1 and 2 to measure the displacement and the amplified piezo.
2020-06-14 12:23:45 +02:00
</p>
<p>
2020-06-14 12:31:03 +02:00
One mass is fixed at one end of the piezo-electric stack actuator, the other end is fixed to the world frame.
2020-06-14 12:23:45 +02:00
</p>
<p>
We first set the mass to be zero.
</p>
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">m = 0.01;
2020-06-14 12:23:45 +02:00
</pre>
</div>
<p>
The dynamics is identified from the applied force to the measured relative displacement.
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_3d'</span>;
2020-06-14 12:23:45 +02:00
2020-10-29 13:37:06 +01:00
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
2020-06-14 12:23:45 +02:00
clear io; io_i = 1;
2020-10-29 13:37:06 +01:00
io(io_i) = linio([mdl, <span class="org-string">'/F'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/y'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
2020-06-14 12:23:45 +02:00
2020-10-29 13:37:06 +01:00
Gh = <span class="org-type">-</span>linearize(mdl, io);
2020-06-14 12:23:45 +02:00
</pre>
</div>
<p>
Then, we add 10Kg of mass:
</p>
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">m = 5;
2020-06-14 12:23:45 +02:00
</pre>
</div>
<p>
And the dynamics is identified.
</p>
<p>
2020-10-29 13:37:06 +01:00
The two identified dynamics are compared in Figure <a href="#org49f8567">2</a>.
2020-06-14 12:23:45 +02:00
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_3d'</span>;
2020-06-14 12:23:45 +02:00
2020-10-29 13:37:06 +01:00
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
2020-06-14 12:23:45 +02:00
clear io; io_i = 1;
2020-10-29 13:37:06 +01:00
io(io_i) = linio([mdl, <span class="org-string">'/F'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/y'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
2020-06-14 12:23:45 +02:00
2020-10-29 13:37:06 +01:00
Ghm = <span class="org-type">-</span>linearize(mdl, io);
2020-06-14 12:23:45 +02:00
</pre>
</div>
2020-10-29 13:37:06 +01:00
<div id="org49f8567" class="figure">
2020-06-14 12:23:45 +02:00
<p><img src="figs/dynamics_act_disp_comp_mass.png" alt="dynamics_act_disp_comp_mass.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Dynamics from \(F\) to \(d\) without a payload and with a 10kg payload</p>
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org740df84" class="outline-3">
<h3 id="org740df84"><span class="section-number-3">1.5</span> Comparison with Ansys</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-5">
2020-06-14 12:23:45 +02:00
<p>
Let&rsquo;s import the results from an Harmonic response analysis in Ansys.
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">Gresp0 = readtable(<span class="org-string">'FEA_HarmResponse_00kg.txt'</span>);
Gresp10 = readtable(<span class="org-string">'FEA_HarmResponse_10kg.txt'</span>);
2020-06-14 12:23:45 +02:00
</pre>
</div>
2020-06-14 12:31:03 +02:00
<p>
2020-10-29 13:37:06 +01:00
The obtained dynamics from the Simscape model and from the Ansys analysis are compare in Figure <a href="#orga47bfac">3</a>.
2020-06-14 12:31:03 +02:00
</p>
2020-06-14 12:23:45 +02:00
2020-10-29 13:37:06 +01:00
<div id="orga47bfac" class="figure">
2020-06-14 12:23:45 +02:00
<p><img src="figs/dynamics_force_disp_comp_anasys.png" alt="dynamics_force_disp_comp_anasys.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Comparison of the obtained dynamics using Simscape with the harmonic response analysis using Ansys</p>
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org1555a0d" class="outline-3">
<h3 id="org1555a0d"><span class="section-number-3">1.6</span> Force Sensor</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-6">
2020-06-14 12:31:03 +02:00
<p>
The dynamics is identified from internal forces applied between nodes 3 and 11 to the relative displacement of nodes 11 and 13.
</p>
<p>
2020-10-29 13:37:06 +01:00
The obtained dynamics is shown in Figure <a href="#orgb045fc0">4</a>.
2020-06-14 12:31:03 +02:00
</p>
2020-06-14 12:23:45 +02:00
<div class="org-src-container">
<pre class="src src-matlab">m = 0;
</pre>
</div>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_3d'</span>;
2020-06-14 12:23:45 +02:00
2020-10-29 13:37:06 +01:00
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
2020-06-14 12:23:45 +02:00
clear io; io_i = 1;
2020-10-29 13:37:06 +01:00
io(io_i) = linio([mdl, <span class="org-string">'/Fa'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/Fs'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
2020-06-14 12:23:45 +02:00
Gf = linearize(mdl, io);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_3d'</span>;
2020-06-14 12:23:45 +02:00
2020-10-29 13:37:06 +01:00
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
2020-06-14 12:23:45 +02:00
clear io; io_i = 1;
2020-10-29 13:37:06 +01:00
io(io_i) = linio([mdl, <span class="org-string">'/Fa'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/Fs'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
2020-06-14 12:23:45 +02:00
Gfm = linearize(mdl, io);
</pre>
</div>
2020-10-29 13:37:06 +01:00
<div id="orgb045fc0" class="figure">
2020-06-14 12:23:45 +02:00
<p><img src="figs/dynamics_force_force_sensor_comp_mass.png" alt="dynamics_force_force_sensor_comp_mass.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Dynamics from \(F\) to \(F_m\) for \(m=0\) and \(m = 10kg\)</p>
</div>
</div>
</div>
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
<div id="outline-container-org71b73d0" class="outline-3">
<h3 id="org71b73d0"><span class="section-number-3">1.7</span> Distributed Actuator</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-7">
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
<pre class="src src-matlab">m = 0;
</pre>
</div>
<p>
The dynamics is identified from the applied force to the measured relative displacement.
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_3d_distri'</span>;
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
2020-06-15 09:13:55 +02:00
clear io; io_i = 1;
2020-10-29 13:37:06 +01:00
io(io_i) = linio([mdl, <span class="org-string">'/F'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/y'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
2020-06-15 09:13:55 +02:00
Gd = linearize(mdl, io);
</pre>
</div>
<p>
Then, we add 10Kg of mass:
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<p>
And the dynamics is identified.
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_3d_distri'</span>;
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
2020-06-15 09:13:55 +02:00
clear io; io_i = 1;
2020-10-29 13:37:06 +01:00
io(io_i) = linio([mdl, <span class="org-string">'/F'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/y'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
2020-06-15 09:13:55 +02:00
Gdm = linearize(mdl, io);
</pre>
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org023858d" class="outline-3">
<h3 id="org023858d"><span class="section-number-3">1.8</span> Distributed Actuator and Force Sensor</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-8">
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
<pre class="src src-matlab">m = 0;
</pre>
</div>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_3d_distri_act_sens'</span>;
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
2020-06-15 09:13:55 +02:00
clear io; io_i = 1;
2020-10-29 13:37:06 +01:00
io(io_i) = linio([mdl, <span class="org-string">'/F'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/Fm'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
2020-06-15 09:13:55 +02:00
Gfd = linearize(mdl, io);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_3d_distri_act_sens'</span>;
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
2020-06-15 09:13:55 +02:00
clear io; io_i = 1;
2020-10-29 13:37:06 +01:00
io(io_i) = linio([mdl, <span class="org-string">'/F'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/Fm'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
2020-06-15 09:13:55 +02:00
Gfdm = linearize(mdl, io);
</pre>
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org91149a1" class="outline-3">
<h3 id="org91149a1"><span class="section-number-3">1.9</span> Dynamics from input voltage to displacement</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-9">
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">m = 5;
2020-06-15 09:13:55 +02:00
</pre>
</div>
<p>
2020-08-03 15:37:17 +02:00
And the dynamics is identified.
2020-06-15 09:13:55 +02:00
</p>
<p>
2020-10-29 13:37:06 +01:00
The two identified dynamics are compared in Figure <a href="#org49f8567">2</a>.
2020-06-15 09:13:55 +02:00
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_3d'</span>;
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
2020-06-15 09:13:55 +02:00
clear io; io_i = 1;
2020-10-29 13:37:06 +01:00
io(io_i) = linio([mdl, <span class="org-string">'/V'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/y'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
G = <span class="org-type">-</span>linearize(mdl, io);
2020-06-15 09:13:55 +02:00
</pre>
</div>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">save(<span class="org-string">'../test-bench-apa/mat/fem_model_5kg.mat'</span>, <span class="org-string">'G'</span>)
2020-06-15 09:13:55 +02:00
</pre>
</div>
2020-08-03 15:37:17 +02:00
</div>
</div>
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
<div id="outline-container-orgc531f2d" class="outline-3">
<h3 id="orgc531f2d"><span class="section-number-3">1.10</span> Dynamics from input voltage to output voltage</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-1-10">
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
2020-08-03 15:37:17 +02:00
<pre class="src src-matlab">m = 5;
2020-06-15 09:13:55 +02:00
</pre>
</div>
2020-08-03 15:37:17 +02:00
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_3d'</span>;
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
2020-08-03 15:37:17 +02:00
clear io; io_i = 1;
2020-10-29 13:37:06 +01:00
io(io_i) = linio([mdl, <span class="org-string">'/Fa'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/dL'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
G = <span class="org-type">-</span>linearize(mdl, io);
2020-08-03 15:37:17 +02:00
</pre>
2020-06-15 09:13:55 +02:00
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org527cbaa" class="outline-3">
<h3 id="org527cbaa"><span class="section-number-3">1.11</span> Identification for a simpler model</h3>
<div class="outline-text-3" id="text-1-11">
<p>
The goal in this section is to identify the parameters of a simple APA model from the FEM.
This can be useful is a lower order model is to be used for simulations.
</p>
<p>
The presented model is based on (<a href="#citeproc_bib_item_2">Souleille et al. 2018</a>).
</p>
<p>
The model represents the Amplified Piezo Actuator (APA) from Cedrat-Technologies (Figure <a href="#orgb1100b8">5</a>).
The parameters are shown in the table below.
</p>
<div id="orgb1100b8" class="figure">
<p><img src="./figs/souleille18_model_piezo.png" alt="souleille18_model_piezo.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator</p>
2020-06-15 09:13:55 +02:00
</div>
2020-10-29 13:37:06 +01:00
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 4:</span> Parameters used for the model of the APA 100M</caption>
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
<colgroup>
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</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>
<p>
The goal is to determine \(k_e\), \(k_a\) and \(k_1\) so that the simplified model fits the FEM model.
</p>
<p>
\[ \alpha = \frac{x_1}{f}(\omega=0) = \frac{\frac{k_e}{k_e + k_a}}{k_1 + \frac{k_e k_a}{k_e + k_a}} \]
\[ \beta = \frac{x_1}{F}(\omega=0) = \frac{1}{k_1 + \frac{k_e k_a}{k_e + k_a}} \]
</p>
<p>
If we can fix \(k_a\), we can determine \(k_e\) and \(k_1\) with:
\[ k_e = \frac{k_a}{\frac{\beta}{\alpha} - 1} \]
\[ k_1 = \frac{1}{\beta} - \frac{k_e k_a}{k_e + k_a} \]
</p>
<p>
From the identified dynamics, compute \(\alpha\) and \(\beta\)
2020-06-15 09:13:55 +02:00
</p>
2020-10-29 13:37:06 +01:00
<div class="org-src-container">
<pre class="src src-matlab">alpha = abs(dcgain(G(<span class="org-string">'y'</span>, <span class="org-string">'Fa'</span>)));
beta = abs(dcgain(G(<span class="org-string">'y'</span>, <span class="org-string">'Fd'</span>)));
</pre>
2020-06-15 09:13:55 +02:00
</div>
2020-10-29 13:37:06 +01:00
<p>
\(k_a\) is estimated using the following formula:
</p>
<div class="org-src-container">
<pre class="src src-matlab">ka = 0.9<span class="org-type">/</span>abs(dcgain(G(<span class="org-string">'y'</span>, <span class="org-string">'Fa'</span>)));
</pre>
2020-06-15 09:13:55 +02:00
</div>
2020-10-29 13:37:06 +01:00
<p>
The factor can be adjusted to better match the curves.
</p>
2020-06-15 09:13:55 +02:00
2020-08-03 15:37:17 +02:00
<p>
2020-10-29 13:37:06 +01:00
Then \(k_e\) and \(k_1\) are computed.
</p>
<div class="org-src-container">
<pre class="src src-matlab">ke = ka<span class="org-type">/</span>(beta<span class="org-type">/</span>alpha <span class="org-type">-</span> 1);
k1 = 1<span class="org-type">/</span>beta <span class="org-type">-</span> ke<span class="org-type">*</span>ka<span class="org-type">/</span>(ke <span class="org-type">+</span> ka);
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-right">Value [N/um]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">ka</td>
<td class="org-right">54.9</td>
</tr>
<tr>
<td class="org-left">ke</td>
<td class="org-right">25.1</td>
</tr>
<tr>
<td class="org-left">k1</td>
<td class="org-right">4.3</td>
</tr>
</tbody>
</table>
<p>
The damping in the system is adjusted to match the FEM model if necessary.
</p>
<div class="org-src-container">
<pre class="src src-matlab">c1 = 1e2;
</pre>
</div>
<p>
Analytical model of the simpler system:
</p>
<div class="org-src-container">
<pre class="src src-matlab">Ga = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> k1 <span class="org-type">+</span> c1<span class="org-type">*</span>s <span class="org-type">+</span> ke<span class="org-type">*</span>ka<span class="org-type">/</span>(ke <span class="org-type">+</span> ka)) <span class="org-type">*</span> ...
[ 1 , k1 <span class="org-type">+</span> c1<span class="org-type">*</span>s <span class="org-type">+</span> ke<span class="org-type">*</span>ka<span class="org-type">/</span>(ke <span class="org-type">+</span> ka) , ke<span class="org-type">/</span>(ke <span class="org-type">+</span> ka) ;
<span class="org-type">-</span>ke<span class="org-type">*</span>ka<span class="org-type">/</span>(ke <span class="org-type">+</span> ka), ke<span class="org-type">*</span>ka<span class="org-type">/</span>(ke <span class="org-type">+</span> ka)<span class="org-type">*</span>m<span class="org-type">*</span>s<span class="org-type">^</span>2 , <span class="org-type">-</span>ke<span class="org-type">/</span>(ke <span class="org-type">+</span> ka)<span class="org-type">*</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c1<span class="org-type">*</span>s <span class="org-type">+</span> k1)];
Ga.InputName = {<span class="org-string">'Fd'</span>, <span class="org-string">'w'</span>, <span class="org-string">'Fa'</span>};
Ga.OutputName = {<span class="org-string">'y'</span>, <span class="org-string">'Fs'</span>};
</pre>
</div>
<p>
Adjust the DC gain for the force sensor:
</p>
<div class="org-src-container">
<pre class="src src-matlab">F_gain = dcgain(G(<span class="org-string">'Fs'</span>, <span class="org-string">'Fd'</span>))<span class="org-type">/</span>dcgain(Ga(<span class="org-string">'Fs'</span>, <span class="org-string">'Fd'</span>));
</pre>
</div>
<div id="org6fbe971" class="figure">
<p><img src="figs/apa95ml_comp_simpler_model.png" alt="apa95ml_comp_simpler_model.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Comparison of the Dynamics between the FEM model and the simplified one</p>
</div>
<p>
We save the parameters of the simplified model for the APA95ML:
2020-08-03 15:37:17 +02:00
</p>
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">save(<span class="org-string">'./mat/APA95ML_simplified_model.mat'</span>, <span class="org-string">'ka'</span>, <span class="org-string">'ke'</span>, <span class="org-string">'k1'</span>, <span class="org-string">'c1'</span>, <span class="org-string">'F_gain'</span>);
2020-06-15 09:13:55 +02:00
</pre>
</div>
2020-10-29 13:37:06 +01:00
</div>
</div>
</div>
<div id="outline-container-org5e5f531" class="outline-2">
<h2 id="org5e5f531"><span class="section-number-2">2</span> APA300ML</h2>
<div class="outline-text-2" id="text-2">
<div id="orgbd02022" class="figure">
<p><img src="figs/apa300ml_ansys.jpg" alt="apa300ml_ansys.jpg" />
</p>
<p><span class="figure-number">Figure 7: </span>Ansys FEM of the APA300ML</p>
</div>
</div>
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
<div id="outline-container-org9691c9e" class="outline-3">
<h3 id="org9691c9e"><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">
<p>
We first extract the stiffness and mass matrices.
</p>
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">K = readmatrix(<span class="org-string">'mat_K.CSV'</span>);
M = readmatrix(<span class="org-string">'mat_M.CSV'</span>);
2020-06-15 09:13:55 +02:00
</pre>
</div>
2020-08-03 15:37:17 +02:00
<p>
Then, we extract the coordinates of the interface nodes.
</p>
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes(<span class="org-string">'out_nodes_3D.txt'</span>);
2020-06-15 09:13:55 +02:00
</pre>
</div>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">save(<span class="org-string">'./mat/APA300ML.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
2020-06-15 09:13:55 +02:00
</pre>
</div>
2020-08-03 15:37:17 +02:00
</div>
</div>
2020-06-15 09:13:55 +02:00
2020-10-29 13:37:06 +01:00
<div id="outline-container-org34676bd" class="outline-3">
<h3 id="org34676bd"><span class="section-number-3">2.2</span> Output parameters</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-2-2">
2020-06-15 09:13:55 +02:00
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">load(<span class="org-string">'./mat/APA300ML.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
2020-06-15 09:13:55 +02:00
</pre>
</div>
2020-08-03 15:37:17 +02:00
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
2020-06-15 09:13:55 +02:00
2020-08-03 15:37:17 +02:00
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-left">Total number of Nodes</td>
<td class="org-right">7</td>
</tr>
<tr>
<td class="org-left">Number of interface Nodes</td>
<td class="org-right">7</td>
</tr>
2020-06-15 09:13:55 +02:00
2020-08-03 15:37:17 +02:00
<tr>
<td class="org-left">Number of Modes</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">120</td>
2020-08-03 15:37:17 +02:00
</tr>
2020-06-15 09:13:55 +02:00
2020-08-03 15:37:17 +02:00
<tr>
<td class="org-left">Size of M and K matrices</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">162</td>
2020-08-03 15:37:17 +02:00
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
2020-10-29 13:37:06 +01:00
<caption class="t-above"><span class="table-number">Table 5:</span> Coordinates of the interface nodes</caption>
2020-08-03 15:37:17 +02:00
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-right">Node i</th>
<th scope="col" class="org-right">Node Number</th>
<th scope="col" class="org-right">x [m]</th>
<th scope="col" class="org-right">y [m]</th>
<th scope="col" class="org-right">z [m]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">1.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">697783.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-0.015</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
<td class="org-right">2.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">697784.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">0.015</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
<td class="org-right">3.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">697785.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-0.0325</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">4.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">697786.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-0.0125</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">5.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">697787.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-0.0075</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">6.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">697788.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">0.0125</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">7.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">697789.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">0.0325</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
2020-10-29 13:37:06 +01:00
<caption class="t-above"><span class="table-number">Table 6:</span> First 10x10 elements of the Stiffness matrix</caption>
2020-08-03 15:37:17 +02:00
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">200000000.0</td>
<td class="org-right">30000.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-20000.0</td>
<td class="org-right">-70.0</td>
<td class="org-right">300000.0</td>
<td class="org-right">40.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">10000000.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">10000.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-6000.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">30.0</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
<td class="org-right">30000.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">30000000.0</td>
<td class="org-right">2000.0</td>
<td class="org-right">-200000.0</td>
<td class="org-right">60.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-10.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">4000.0</td>
<td class="org-right">2000000.0</td>
<td class="org-right">-500.0</td>
<td class="org-right">9000.0</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">-20000.0</td>
<td class="org-right">2000.0</td>
<td class="org-right">7000000.0</td>
<td class="org-right">-10.0</td>
<td class="org-right">-30.0</td>
<td class="org-right">10.0</td>
<td class="org-right">6000.0</td>
<td class="org-right">900.0</td>
<td class="org-right">-500000.0</td>
<td class="org-right">3</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">-70.0</td>
<td class="org-right">-200000.0</td>
<td class="org-right">-10.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">1000.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-0.1</td>
<td class="org-right">0.08</td>
<td class="org-right">-20.0</td>
<td class="org-right">-9000.0</td>
<td class="org-right">3</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-30.0</td>
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">300000.0</td>
<td class="org-right">60.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-30.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-0.1</td>
<td class="org-right">900.0</td>
<td class="org-right">0.1</td>
<td class="org-right">30000.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">20.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-10.0</td>
<td class="org-right">0.06</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">40.0</td>
<td class="org-right">-10.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">10.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">0.08</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">0.1</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">10000.0</td>
<td class="org-right">20.0</td>
<td class="org-right">9</td>
<td class="org-right">-5</td>
<td class="org-right">0.03</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
<td class="org-right">10000000.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">4000.0</td>
<td class="org-right">6000.0</td>
<td class="org-right">-20.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">30000.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">20.0</td>
<td class="org-right">200000000.0</td>
<td class="org-right">10000.0</td>
<td class="org-right">9000.0</td>
<td class="org-right">50.0</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">10000.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">2000000.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">900.0</td>
<td class="org-right">-9000.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">20.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">9</td>
<td class="org-right">10000.0</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">30000000.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-500.0</td>
<td class="org-right">200000.0</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">-6000.0</td>
<td class="org-right">-500.0</td>
<td class="org-right">-500000.0</td>
<td class="org-right">3</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-10.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-5</td>
<td class="org-right">9000.0</td>
<td class="org-right">-500.0</td>
<td class="org-right">7000000.0</td>
<td class="org-right">-2</td>
</tr>
<tr>
<td class="org-right">30.0</td>
<td class="org-right">9000.0</td>
<td class="org-right">3</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-30.0</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">0.06</td>
<td class="org-right">0.03</td>
<td class="org-right">50.0</td>
<td class="org-right">200000.0</td>
<td class="org-right">-2</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">1000.0</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
2020-10-29 13:37:06 +01:00
<caption class="t-above"><span class="table-number">Table 7:</span> First 10x10 elements of the Mass matrix</caption>
2020-08-03 15:37:17 +02:00
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">0.01</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-2e-06</td>
<td class="org-right">1e-06</td>
<td class="org-right">6e-09</td>
<td class="org-right">5e-05</td>
<td class="org-right">-5e-09</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-0.0005</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-7e-07</td>
<td class="org-right">6e-07</td>
<td class="org-right">-3e-09</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">-2e-06</td>
<td class="org-right">0.01</td>
<td class="org-right">8e-07</td>
<td class="org-right">-2e-05</td>
<td class="org-right">-8e-09</td>
<td class="org-right">2e-09</td>
<td class="org-right">-9e-07</td>
<td class="org-right">-0.0002</td>
<td class="org-right">1e-08</td>
<td class="org-right">-9e-07</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">1e-06</td>
<td class="org-right">8e-07</td>
<td class="org-right">0.009</td>
<td class="org-right">5e-10</td>
<td class="org-right">1e-09</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-5e-07</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">3e-08</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">6e-05</td>
<td class="org-right">1e-10</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
<td class="org-right">6e-09</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-2e-05</td>
<td class="org-right">5e-10</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">3e-07</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">2e-11</td>
<td class="org-right">-3e-12</td>
<td class="org-right">3e-09</td>
<td class="org-right">9e-07</td>
<td class="org-right">-4e-10</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">3e-09</td>
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">5e-05</td>
<td class="org-right">-8e-09</td>
<td class="org-right">1e-09</td>
<td class="org-right">2e-11</td>
<td class="org-right">6e-07</td>
<td class="org-right">-4e-11</td>
<td class="org-right">-1e-06</td>
<td class="org-right">-2e-09</td>
<td class="org-right">1e-09</td>
<td class="org-right">-8e-12</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">-5e-09</td>
<td class="org-right">2e-09</td>
<td class="org-right">-1e-09</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-3e-12</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-4e-11</td>
<td class="org-right">1e-07</td>
<td class="org-right">-2e-09</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-4e-10</td>
<td class="org-right">-5e-12</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
<td class="org-right">-0.0005</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-9e-07</td>
<td class="org-right">-5e-07</td>
<td class="org-right">3e-09</td>
<td class="org-right">-1e-06</td>
<td class="org-right">-2e-09</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">0.01</td>
<td class="org-right">1e-07</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-3e-07</td>
<td class="org-right">-2e-08</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">-7e-07</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">-0.0002</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">3e-08</td>
<td class="org-right">9e-07</td>
<td class="org-right">-2e-09</td>
<td class="org-right">-1e-09</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">1e-07</td>
<td class="org-right">0.01</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-4e-07</td>
<td class="org-right">2e-05</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-right">6e-07</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">1e-08</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">6e-05</td>
<td class="org-right">-4e-10</td>
<td class="org-right">1e-09</td>
<td class="org-right">-4e-10</td>
<td class="org-right">-3e-07</td>
<td class="org-right">-4e-07</td>
<td class="org-right">0.009</td>
<td class="org-right">-2e-10</td>
</tr>
<tr>
<td class="org-right">-3e-09</td>
<td class="org-right">-9e-07</td>
<td class="org-right">1e-10</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">3e-09</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">-8e-12</td>
<td class="org-right">-5e-12</td>
<td class="org-right">-2e-08</td>
<td class="org-right">2e-05</td>
<td class="org-right">-2e-10</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">3e-07</td>
</tr>
</tbody>
</table>
<p>
Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-orgf6ad2fe" class="outline-3">
<h3 id="orgf6ad2fe"><span class="section-number-3">2.3</span> Piezoelectric parameters</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-2-3">
<p>
Parameters for the APA300ML:
2020-08-03 15:37:17 +02:00
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">d33 = 3e<span class="org-type">-</span>10; <span class="org-comment">% Strain constant [m/V]</span>
n = 80; <span class="org-comment">% Number of layers per stack</span>
eT = 1.6e<span class="org-type">-</span>8; <span class="org-comment">% Permittivity under constant stress [F/m]</span>
sD = 2e<span class="org-type">-</span>11; <span class="org-comment">% Elastic compliance under constant electric displacement [m2/N]</span>
ka = 235e6; <span class="org-comment">% Stack stiffness [N/m]</span>
C = 5e<span class="org-type">-</span>6; <span class="org-comment">% Stack capactiance [F]</span>
2020-08-03 15:37:17 +02:00
</pre>
</div>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">na = 2; <span class="org-comment">% Number of stacks used as actuator</span>
ns = 1; <span class="org-comment">% Number of stacks used as force sensor</span>
2020-08-03 15:37:17 +02:00
</pre>
</div>
<p>
The ratio of the developed force to applied voltage is \(d_{33} n k_a\) in [N/V].
We denote this constant by \(g_a\) and:
\[ F_a = g_a V_a, \quad g_a = d_{33} n k_a \]
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">d33<span class="org-type">*</span>(na<span class="org-type">*</span>n)<span class="org-type">*</span>(ka<span class="org-type">/</span>(na <span class="org-type">+</span> ns)) <span class="org-comment">% [N/V]</span>
2020-08-03 15:37:17 +02:00
</pre>
</div>
<pre class="example">
2020-10-29 13:37:06 +01:00
3.76
2020-08-03 15:37:17 +02:00
</pre>
<p>
From (<a href="#citeproc_bib_item_1">Fleming and Leang 2014</a>) (page 123), the relation between relative displacement and generated voltage is:
\[ V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h \]
where:
</p>
<ul class="org-ul">
<li>\(V_s\): measured voltage [V]</li>
<li>\(d_{33}\): strain constant [m/V]</li>
<li>\(\epsilon^T\): permittivity under constant stress [F/m]</li>
<li>\(s^D\): elastic compliance under constant electric displacement [m^2/N]</li>
<li>\(n\): number of layers</li>
<li>\(\Delta h\): relative displacement [m]</li>
</ul>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">1e<span class="org-type">-</span>6<span class="org-type">*</span>d33<span class="org-type">/</span>(eT<span class="org-type">*</span>sD<span class="org-type">*</span>ns<span class="org-type">*</span>n) <span class="org-comment">% [V/um]</span>
2020-08-03 15:37:17 +02:00
</pre>
</div>
<pre class="example">
2020-10-29 13:37:06 +01:00
11.719
2020-08-03 15:37:17 +02:00
</pre>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-orgfcc3b27" class="outline-3">
<h3 id="orgfcc3b27"><span class="section-number-3">2.4</span> Identification of the APA Characteristics</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-2-4">
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org7c141d1" class="outline-4">
<h4 id="org7c141d1"><span class="section-number-4">2.4.1</span> Stiffness</h4>
2020-08-03 15:37:17 +02:00
<div class="outline-text-4" id="text-2-4-1">
<p>
The transfer function from vertical external force to the relative vertical displacement is identified.
</p>
<p>
The inverse of its DC gain is the axial stiffness of the APA:
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">1e<span class="org-type">-</span>6<span class="org-type">/</span>dcgain(G) <span class="org-comment">% [N/um]</span>
2020-08-03 15:37:17 +02:00
</pre>
</div>
<pre class="example">
2020-10-29 13:37:06 +01:00
1.753
2020-08-03 15:37:17 +02:00
</pre>
<p>
The specified stiffness in the datasheet is \(k = 1.8\, [N/\mu m]\).
</p>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org6336a4d" class="outline-4">
<h4 id="org6336a4d"><span class="section-number-4">2.4.2</span> Resonance Frequency</h4>
2020-08-03 15:37:17 +02:00
<div class="outline-text-4" id="text-2-4-2">
<p>
The resonance frequency is specified to be between 650Hz and 840Hz.
2020-10-29 13:37:06 +01:00
This is also the case for the FEM model (Figure <a href="#org2f62cd6">8</a>).
2020-08-03 15:37:17 +02:00
</p>
2020-10-29 13:37:06 +01:00
<div id="org2f62cd6" class="figure">
2020-08-03 15:37:17 +02:00
<p><img src="figs/apa300ml_resonance.png" alt="apa300ml_resonance.png" />
</p>
2020-10-29 13:37:06 +01:00
<p><span class="figure-number">Figure 8: </span>First resonance is around 800Hz</p>
2020-08-03 15:37:17 +02:00
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org7adcbea" class="outline-4">
<h4 id="org7adcbea"><span class="section-number-4">2.4.3</span> Amplification factor</h4>
2020-08-03 15:37:17 +02:00
<div class="outline-text-4" id="text-2-4-3">
<p>
The amplification factor is the ratio of the axial displacement to the stack displacement.
</p>
<p>
The ratio of the two displacement is computed from the FEM model.
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">abs(dcgain(G(1,1))<span class="org-type">./</span>dcgain(G(2,1)))
2020-08-03 15:37:17 +02:00
</pre>
</div>
<pre class="example">
2020-10-29 13:37:06 +01:00
5.0749
2020-08-03 15:37:17 +02:00
</pre>
<p>
If we take the ratio of the piezo height and length (approximation of the amplification factor):
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">75<span class="org-type">/</span>15
2020-08-03 15:37:17 +02:00
</pre>
</div>
<pre class="example">
5
</pre>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org924ba9a" class="outline-4">
<h4 id="org924ba9a"><span class="section-number-4">2.4.4</span> Stroke</h4>
2020-08-03 15:37:17 +02:00
<div class="outline-text-4" id="text-2-4-4">
<p>
Estimation of the actuator stroke:
\[ \Delta H = A n \Delta L \]
with:
</p>
<ul class="org-ul">
<li>\(\Delta H\) Axial Stroke of the APA</li>
<li>\(A\) Amplification factor (5 for the APA300ML)</li>
<li>\(n\) Number of stack used</li>
<li>\(\Delta L\) Stroke of the stack (0.1% of its length)</li>
</ul>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">1e6 <span class="org-type">*</span> 5 <span class="org-type">*</span> 3 <span class="org-type">*</span> 20e<span class="org-type">-</span>3 <span class="org-type">*</span> 0.1e<span class="org-type">-</span>2
2020-08-03 15:37:17 +02:00
</pre>
</div>
<pre class="example">
300
</pre>
<p>
This is exactly the specified stroke in the data-sheet.
</p>
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org0334d98" class="outline-3">
<h3 id="org0334d98"><span class="section-number-3">2.5</span> Identification of the Dynamics</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-2-5">
<p>
The flexible element is imported using the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
<p>
To model the actuator, an <code>Internal Force</code> block is added between the nodes 3 and 12.
A <code>Relative Motion Sensor</code> block is added between the nodes 1 and 2 to measure the displacement and the amplified piezo.
</p>
<p>
One mass is fixed at one end of the piezo-electric stack actuator, the other end is fixed to the world frame.
</p>
<p>
We first set the mass to be zero.
The dynamics is identified from the applied force to the measured relative displacement.
The same dynamics is identified for a payload mass of 10Kg.
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
2020-10-29 13:37:06 +01:00
<div id="org452a3a7" class="figure">
2020-08-03 15:37:17 +02:00
<p><img src="figs/apa300ml_plant_dynamics.png" alt="apa300ml_plant_dynamics.png" />
</p>
2020-10-29 13:37:06 +01:00
<p><span class="figure-number">Figure 9: </span>Transfer function from forces applied by the stack to the axial displacement of the APA</p>
2020-08-03 15:37:17 +02:00
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org889c8e8" class="outline-3">
<h3 id="org889c8e8"><span class="section-number-3">2.6</span> IFF</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-2-6">
<p>
Let&rsquo;s use 2 stacks as actuators and 1 stack as force sensor.
</p>
<p>
2020-10-29 13:37:06 +01:00
The transfer function from actuator to sensors is identified and shown in Figure <a href="#orge704515">10</a>.
2020-08-03 15:37:17 +02:00
</p>
2020-10-29 13:37:06 +01:00
<div id="orge704515" class="figure">
2020-08-03 15:37:17 +02:00
<p><img src="figs/apa300ml_iff_plant.png" alt="apa300ml_iff_plant.png" />
</p>
2020-10-29 13:37:06 +01:00
<p><span class="figure-number">Figure 10: </span>Transfer function from actuator to force sensor</p>
2020-08-03 15:37:17 +02:00
</div>
<p>
2020-10-29 13:37:06 +01:00
For root locus corresponding to IFF is shown in Figure <a href="#org4d28155">11</a>.
2020-08-03 15:37:17 +02:00
</p>
2020-10-29 13:37:06 +01:00
<div id="org4d28155" class="figure">
2020-08-03 15:37:17 +02:00
<p><img src="figs/apa300ml_iff_root_locus.png" alt="apa300ml_iff_root_locus.png" />
</p>
2020-10-29 13:37:06 +01:00
<p><span class="figure-number">Figure 11: </span>Root Locus for IFF</p>
2020-08-03 15:37:17 +02:00
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org6f11c82" class="outline-3">
<h3 id="org6f11c82"><span class="section-number-3">2.7</span> DVF</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-2-7">
<p>
2020-10-29 13:37:06 +01:00
Now the dynamics from the stack actuator to the relative motion sensor is identified and shown in Figure <a href="#org84dd7d9">12</a>.
2020-08-03 15:37:17 +02:00
</p>
2020-10-29 13:37:06 +01:00
<div id="org84dd7d9" class="figure">
2020-08-03 15:37:17 +02:00
<p><img src="figs/apa300ml_dvf_plant.png" alt="apa300ml_dvf_plant.png" />
</p>
2020-10-29 13:37:06 +01:00
<p><span class="figure-number">Figure 12: </span>Transfer function from stack actuator to relative motion sensor</p>
2020-08-03 15:37:17 +02:00
</div>
<p>
2020-10-29 13:37:06 +01:00
The root locus for DVF is shown in Figure <a href="#org362161f">13</a>.
2020-08-03 15:37:17 +02:00
</p>
2020-10-29 13:37:06 +01:00
<div id="org362161f" class="figure">
2020-08-03 15:37:17 +02:00
<p><img src="figs/apa300ml_dvf_root_locus.png" alt="apa300ml_dvf_root_locus.png" />
</p>
2020-10-29 13:37:06 +01:00
<p><span class="figure-number">Figure 13: </span>Root Locus for Direct Velocity Feedback</p>
2020-08-03 15:37:17 +02:00
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org1c376b5" class="outline-3">
<h3 id="org1c376b5"><span class="section-number-3">2.8</span> Identification for a simpler model</h3>
<div class="outline-text-3" id="text-2-8">
<p>
The goal in this section is to identify the parameters of a simple APA model from the FEM.
This can be useful is a lower order model is to be used for simulations.
</p>
<p>
The presented model is based on (<a href="#citeproc_bib_item_2">Souleille et al. 2018</a>).
</p>
<p>
2020-10-29 13:37:06 +01:00
The model represents the Amplified Piezo Actuator (APA) from Cedrat-Technologies (Figure <a href="#orgb1100b8">5</a>).
The parameters are shown in the table below.
</p>
2020-10-29 13:37:06 +01:00
<div id="orgd4eeaf2" class="figure">
<p><img src="./figs/souleille18_model_piezo.png" alt="souleille18_model_piezo.png" />
</p>
2020-10-29 13:37:06 +01:00
<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>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
2020-10-29 13:37:06 +01:00
<caption class="t-above"><span class="table-number">Table 8:</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">&#xa0;</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>
<p>
The goal is to determine \(k_e\), \(k_a\) and \(k_1\) so that the simplified model fits the FEM model.
</p>
<p>
\[ \alpha = \frac{x_1}{f}(\omega=0) = \frac{\frac{k_e}{k_e + k_a}}{k_1 + \frac{k_e k_a}{k_e + k_a}} \]
\[ \beta = \frac{x_1}{F}(\omega=0) = \frac{1}{k_1 + \frac{k_e k_a}{k_e + k_a}} \]
</p>
<p>
If we can fix \(k_a\), we can determine \(k_e\) and \(k_1\) with:
\[ k_e = \frac{k_a}{\frac{\beta}{\alpha} - 1} \]
\[ k_1 = \frac{1}{\beta} - \frac{k_e k_a}{k_e + k_a} \]
</p>
<p>
From the identified dynamics, compute \(\alpha\) and \(\beta\)
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">alpha = abs(dcgain(G(<span class="org-string">'y'</span>, <span class="org-string">'Fa'</span>)));
beta = abs(dcgain(G(<span class="org-string">'y'</span>, <span class="org-string">'Fd'</span>)));
</pre>
</div>
<p>
\(k_a\) is estimated using the following formula:
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">ka = 0.8<span class="org-type">/</span>abs(dcgain(G(<span class="org-string">'y'</span>, <span class="org-string">'Fa'</span>)));
</pre>
</div>
<p>
The factor can be adjusted to better match the curves.
</p>
<p>
Then \(k_e\) and \(k_1\) are computed.
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">ke = ka<span class="org-type">/</span>(beta<span class="org-type">/</span>alpha <span class="org-type">-</span> 1);
k1 = 1<span class="org-type">/</span>beta <span class="org-type">-</span> ke<span class="org-type">*</span>ka<span class="org-type">/</span>(ke <span class="org-type">+</span> ka);
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-right">Value [N/um]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">ka</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">40.5</td>
</tr>
<tr>
<td class="org-left">ke</td>
<td class="org-right">1.5</td>
</tr>
<tr>
<td class="org-left">k1</td>
<td class="org-right">0.4</td>
</tr>
</tbody>
</table>
<p>
The damping in the system is adjusted to match the FEM model if necessary.
</p>
<div class="org-src-container">
<pre class="src src-matlab">c1 = 1e2;
</pre>
</div>
<p>
Analytical model of the simpler system:
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">Ga = 1<span class="org-type">/</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> k1 <span class="org-type">+</span> c1<span class="org-type">*</span>s <span class="org-type">+</span> ke<span class="org-type">*</span>ka<span class="org-type">/</span>(ke <span class="org-type">+</span> ka)) <span class="org-type">*</span> ...
[ 1 , k1 <span class="org-type">+</span> c1<span class="org-type">*</span>s <span class="org-type">+</span> ke<span class="org-type">*</span>ka<span class="org-type">/</span>(ke <span class="org-type">+</span> ka) , ke<span class="org-type">/</span>(ke <span class="org-type">+</span> ka) ;
<span class="org-type">-</span>ke<span class="org-type">*</span>ka<span class="org-type">/</span>(ke <span class="org-type">+</span> ka), ke<span class="org-type">*</span>ka<span class="org-type">/</span>(ke <span class="org-type">+</span> ka)<span class="org-type">*</span>m<span class="org-type">*</span>s<span class="org-type">^</span>2 , <span class="org-type">-</span>ke<span class="org-type">/</span>(ke <span class="org-type">+</span> ka)<span class="org-type">*</span>(m<span class="org-type">*</span>s<span class="org-type">^</span>2 <span class="org-type">+</span> c1<span class="org-type">*</span>s <span class="org-type">+</span> k1)];
2020-10-29 13:37:06 +01:00
Ga.InputName = {<span class="org-string">'Fd'</span>, <span class="org-string">'w'</span>, <span class="org-string">'Fa'</span>};
Ga.OutputName = {<span class="org-string">'y'</span>, <span class="org-string">'Fs'</span>};
</pre>
</div>
<p>
Adjust the DC gain for the force sensor:
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">F_gain = dcgain(G(<span class="org-string">'Fs'</span>, <span class="org-string">'Fd'</span>))<span class="org-type">/</span>dcgain(Ga(<span class="org-string">'Fs'</span>, <span class="org-string">'Fd'</span>));
</pre>
</div>
2020-10-29 13:37:06 +01:00
<div id="org36826f6" class="figure">
<p><img src="figs/apa300ml_comp_simpler_model.png" alt="apa300ml_comp_simpler_model.png" />
</p>
2020-10-29 13:37:06 +01:00
<p><span class="figure-number">Figure 15: </span>Comparison of the Dynamics between the FEM model and the simplified one</p>
2020-08-03 15:37:17 +02:00
</div>
<p>
2020-10-29 13:37:06 +01:00
We now compare the FEM model with the simplified simscape model.
2020-08-03 15:46:35 +02:00
</p>
2020-10-29 13:37:06 +01:00
<div id="orge85d5a8" class="figure">
<p><img src="figs/apa300ml_comp_simpler_simscape.png" alt="apa300ml_comp_simpler_simscape.png" />
2020-08-03 15:37:17 +02:00
</p>
2020-10-29 13:37:06 +01:00
<p><span class="figure-number">Figure 16: </span>Comparison of the Dynamics between the FEM model and the simplified simscape model</p>
2020-08-03 15:37:17 +02:00
</div>
<p>
2020-10-29 13:37:06 +01:00
We save the parameters of the simplified model for the APA300ML:
2020-08-03 15:37:17 +02:00
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">save(<span class="org-string">'./mat/APA300ML_simplified_model.mat'</span>, <span class="org-string">'ka'</span>, <span class="org-string">'ke'</span>, <span class="org-string">'k1'</span>, <span class="org-string">'c1'</span>, <span class="org-string">'F_gain'</span>);
2020-08-03 15:37:17 +02:00
</pre>
</div>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org30bc4bf" class="outline-3">
<h3 id="org30bc4bf"><span class="section-number-3">2.9</span> Identification of the stiffness properties</h3>
<div class="outline-text-3" id="text-2-9">
2020-08-03 15:37:17 +02:00
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-orge89f3f8" class="outline-4">
<h4 id="orge89f3f8"><span class="section-number-4">2.9.1</span> APA Alone</h4>
<div class="outline-text-4" id="text-2-9-1">
2020-08-03 15:37:17 +02:00
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
2020-10-29 13:37:06 +01:00
<thead>
<tr>
<th scope="col" class="org-left"><b>Caracteristics</b></th>
<th scope="col" class="org-right"><b>Value</b></th>
</tr>
</thead>
2020-08-03 15:37:17 +02:00
<tbody>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-left">Kx [N/um]</td>
<td class="org-right">0.8</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-left">Ky [N/um]</td>
<td class="org-right">1.6</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-left">Kz [N/um]</td>
<td class="org-right">1.8</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-left">Rx [Nm/rad]</td>
<td class="org-right">71.4</td>
</tr>
<tr>
<td class="org-left">Ry [Nm/rad]</td>
<td class="org-right">148.2</td>
</tr>
<tr>
<td class="org-left">Rz [Nm/rad]</td>
<td class="org-right">4241.8</td>
2020-08-03 15:37:17 +02:00
</tr>
</tbody>
</table>
2020-10-29 13:37:06 +01:00
</div>
</div>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<div id="outline-container-org4651c6e" class="outline-4">
<h4 id="org4651c6e"><span class="section-number-4">2.9.2</span> See how the global stiffness is changing with the flexible joints</h4>
<div class="outline-text-4" id="text-2-9-2">
<div class="org-src-container">
<pre class="src src-matlab">flex = load(<span class="org-string">'./mat/flexor_ID16.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
</pre>
</div>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<colgroup>
<col class="org-left" />
2020-08-03 15:37:17 +02:00
<col class="org-right" />
</colgroup>
<thead>
<tr>
2020-10-29 13:37:06 +01:00
<th scope="col" class="org-left"><b>Caracteristic</b></th>
<th scope="col" class="org-right"><b>Value</b></th>
2020-08-03 15:37:17 +02:00
</tr>
</thead>
<tbody>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-left">Kx [N/um]</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">0.0</td>
</tr>
<tr>
2020-10-29 13:37:06 +01:00
<td class="org-left">Ky [N/um]</td>
2020-08-03 15:37:17 +02:00
<td class="org-right">0.0</td>
</tr>
2020-10-29 13:37:06 +01:00
<tr>
<td class="org-left">Kz [N/um]</td>
<td class="org-right">1.8</td>
</tr>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<tr>
<td class="org-left">Rx [Nm/rad]</td>
<td class="org-right">722.9</td>
</tr>
<tr>
<td class="org-left">Ry [Nm/rad]</td>
<td class="org-right">129.6</td>
</tr>
<tr>
<td class="org-left">Rz [Nm/rad]</td>
<td class="org-right">115.3</td>
</tr>
</tbody>
</table>
<div class="org-src-container">
<pre class="src src-matlab">freqs = logspace(<span class="org-type">-</span>2, 5, 1000);
<span class="org-type">figure</span>;
hold on;
plot(freqs, abs(squeeze(freqresp(G(2,2), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'APA'</span>);
plot(freqs, abs(squeeze(freqresp(Gf(2,2), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'Flex'</span>);
hold off;
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'log'</span>);
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'Amplitude [m/N]'</span>);
hold off;
legend(<span class="org-string">'location'</span>, <span class="org-string">'northeast'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">freqs = logspace(<span class="org-type">-</span>2, 5, 1000);
<span class="org-type">figure</span>;
hold on;
plot(freqs, abs(squeeze(freqresp(G(3,3), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'APA'</span>);
plot(freqs, abs(squeeze(freqresp(Gf(3,3), freqs, <span class="org-string">'Hz'</span>))), <span class="org-string">'-'</span>, <span class="org-string">'DisplayName'</span>, <span class="org-string">'Flex'</span>);
hold off;
<span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'XScale'</span>, <span class="org-string">'log'</span>); <span class="org-type">set</span>(<span class="org-variable-name">gca</span>, <span class="org-string">'YScale'</span>, <span class="org-string">'log'</span>);
xlabel(<span class="org-string">'Frequency [Hz]'</span>); ylabel(<span class="org-string">'Amplitude [m/N]'</span>);
hold off;
legend(<span class="org-string">'location'</span>, <span class="org-string">'northeast'</span>);
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-orgbb1e485" class="outline-3">
<h3 id="orgbb1e485"><span class="section-number-3">2.10</span> Effect of APA300ML in the flexibility of the leg</h3>
<div class="outline-text-3" id="text-2-10">
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left"><b>Caracteristic</b></th>
<th scope="col" class="org-right"><b>Rigid APA</b></th>
<th scope="col" class="org-right"><b>Flexible APA</b></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Kx [N/um]</td>
<td class="org-right">0.018</td>
<td class="org-right">0.019</td>
</tr>
<tr>
<td class="org-left">Ky [N/um]</td>
<td class="org-right">0.018</td>
<td class="org-right">0.018</td>
</tr>
<tr>
<td class="org-left">Kz [N/um]</td>
<td class="org-right">60.0</td>
<td class="org-right">2.647</td>
</tr>
<tr>
<td class="org-left">Rx [Nm/rad]</td>
<td class="org-right">16.705</td>
<td class="org-right">557.682</td>
</tr>
<tr>
<td class="org-left">Ry [Nm/rad]</td>
<td class="org-right">16.535</td>
<td class="org-right">185.939</td>
</tr>
<tr>
<td class="org-left">Rz [Nm/rad]</td>
<td class="org-right">118.0</td>
<td class="org-right">114.803</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="outline-container-org71e2995" class="outline-2">
<h2 id="org71e2995"><span class="section-number-2">3</span> Flexible Joint</h2>
<div class="outline-text-2" id="text-3">
<p>
The studied flexor is shown in Figure <a href="#org0b718d7">17</a>.
</p>
<p>
The stiffness and mass matrices representing the dynamics of the flexor are exported from a FEM.
It is then imported into Simscape.
</p>
<p>
A simplified model of the flexor is then developped.
</p>
<div id="org0b718d7" class="figure">
<p><img src="figs/flexor_id16_screenshot.png" alt="flexor_id16_screenshot.png" />
</p>
<p><span class="figure-number">Figure 17: </span>Flexor studied</p>
</div>
</div>
<div id="outline-container-org4609327" class="outline-3">
<h3 id="org4609327"><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">
<p>
We first extract the stiffness and mass matrices.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = extractMatrix(<span class="org-string">'mat_K_6modes_2MDoF.matrix'</span>);
M = extractMatrix(<span class="org-string">'mat_M_6modes_2MDoF.matrix'</span>);
</pre>
</div>
<p>
Then, we extract the coordinates of the interface nodes.
</p>
<div class="org-src-container">
<pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes(<span class="org-string">'out_nodes_3D.txt'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./mat/flexor_ID16.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org222b467" class="outline-3">
<h3 id="org222b467"><span class="section-number-3">3.2</span> Output parameters</h3>
<div class="outline-text-3" id="text-3-2">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./mat/flexor_ID16.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-left">Total number of Nodes</td>
<td class="org-right">2</td>
</tr>
<tr>
<td class="org-left">Number of interface Nodes</td>
<td class="org-right">2</td>
</tr>
<tr>
<td class="org-left">Number of Modes</td>
<td class="org-right">6</td>
</tr>
<tr>
<td class="org-left">Size of M and K matrices</td>
<td class="org-right">18</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 9:</span> Coordinates of the interface nodes</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-right">Node i</th>
<th scope="col" class="org-right">Node Number</th>
<th scope="col" class="org-right">x [m]</th>
<th scope="col" class="org-right">y [m]</th>
<th scope="col" class="org-right">z [m]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">1.0</td>
<td class="org-right">181278.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">2.0</td>
<td class="org-right">181279.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
<td class="org-right">-0.0</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 10:</span> First 10x10 elements of the Stiffness matrix</caption>
<colgroup>
<col class="org-right" />
2020-08-03 15:37:17 +02:00
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">11200000.0</td>
<td class="org-right">195.0</td>
<td class="org-right">2220.0</td>
<td class="org-right">-0.719</td>
<td class="org-right">-265.0</td>
<td class="org-right">1.59</td>
<td class="org-right">-11200000.0</td>
<td class="org-right">-213.0</td>
<td class="org-right">-2220.0</td>
<td class="org-right">0.147</td>
</tr>
<tr>
<td class="org-right">195.0</td>
<td class="org-right">11400000.0</td>
<td class="org-right">1290.0</td>
<td class="org-right">-148.0</td>
<td class="org-right">-0.188</td>
<td class="org-right">2.41</td>
<td class="org-right">-212.0</td>
<td class="org-right">-11400000.0</td>
<td class="org-right">-1290.0</td>
<td class="org-right">148.0</td>
</tr>
<tr>
<td class="org-right">2220.0</td>
<td class="org-right">1290.0</td>
<td class="org-right">119000000.0</td>
<td class="org-right">1.31</td>
<td class="org-right">1.49</td>
<td class="org-right">1.79</td>
<td class="org-right">-2220.0</td>
<td class="org-right">-1290.0</td>
<td class="org-right">-119000000.0</td>
<td class="org-right">-1.31</td>
</tr>
<tr>
<td class="org-right">-0.719</td>
<td class="org-right">-148.0</td>
<td class="org-right">1.31</td>
<td class="org-right">33.0</td>
<td class="org-right">0.000488</td>
<td class="org-right">-0.000977</td>
<td class="org-right">0.141</td>
<td class="org-right">148.0</td>
<td class="org-right">-1.31</td>
<td class="org-right">-33.0</td>
</tr>
<tr>
<td class="org-right">-265.0</td>
<td class="org-right">-0.188</td>
<td class="org-right">1.49</td>
<td class="org-right">0.000488</td>
<td class="org-right">33.0</td>
<td class="org-right">0.00293</td>
<td class="org-right">266.0</td>
<td class="org-right">0.154</td>
<td class="org-right">-1.49</td>
<td class="org-right">0.00026</td>
</tr>
<tr>
<td class="org-right">1.59</td>
<td class="org-right">2.41</td>
<td class="org-right">1.79</td>
<td class="org-right">-0.000977</td>
<td class="org-right">0.00293</td>
<td class="org-right">236.0</td>
<td class="org-right">-1.32</td>
<td class="org-right">-2.55</td>
<td class="org-right">-1.79</td>
<td class="org-right">0.000379</td>
</tr>
<tr>
<td class="org-right">-11200000.0</td>
<td class="org-right">-212.0</td>
<td class="org-right">-2220.0</td>
<td class="org-right">0.141</td>
<td class="org-right">266.0</td>
<td class="org-right">-1.32</td>
<td class="org-right">11400000.0</td>
<td class="org-right">24600.0</td>
<td class="org-right">1640.0</td>
<td class="org-right">120.0</td>
</tr>
<tr>
<td class="org-right">-213.0</td>
<td class="org-right">-11400000.0</td>
<td class="org-right">-1290.0</td>
<td class="org-right">148.0</td>
<td class="org-right">0.154</td>
<td class="org-right">-2.55</td>
<td class="org-right">24600.0</td>
<td class="org-right">11400000.0</td>
<td class="org-right">1290.0</td>
<td class="org-right">-72.0</td>
</tr>
<tr>
<td class="org-right">-2220.0</td>
<td class="org-right">-1290.0</td>
<td class="org-right">-119000000.0</td>
<td class="org-right">-1.31</td>
<td class="org-right">-1.49</td>
<td class="org-right">-1.79</td>
<td class="org-right">1640.0</td>
<td class="org-right">1290.0</td>
<td class="org-right">119000000.0</td>
<td class="org-right">1.32</td>
</tr>
<tr>
<td class="org-right">0.147</td>
<td class="org-right">148.0</td>
<td class="org-right">-1.31</td>
<td class="org-right">-33.0</td>
<td class="org-right">0.00026</td>
<td class="org-right">0.000379</td>
<td class="org-right">120.0</td>
<td class="org-right">-72.0</td>
<td class="org-right">1.32</td>
<td class="org-right">34.7</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
2020-10-29 13:37:06 +01:00
<caption class="t-above"><span class="table-number">Table 11:</span> First 10x10 elements of the Mass matrix</caption>
2020-08-03 15:37:17 +02:00
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">0.02</td>
<td class="org-right">1e-09</td>
<td class="org-right">-4e-08</td>
<td class="org-right">-1e-10</td>
<td class="org-right">0.0002</td>
<td class="org-right">-3e-11</td>
<td class="org-right">0.004</td>
<td class="org-right">5e-08</td>
<td class="org-right">7e-08</td>
<td class="org-right">1e-10</td>
</tr>
<tr>
<td class="org-right">1e-09</td>
<td class="org-right">0.02</td>
<td class="org-right">-3e-07</td>
<td class="org-right">-0.0002</td>
<td class="org-right">-1e-10</td>
<td class="org-right">-2e-09</td>
<td class="org-right">2e-08</td>
<td class="org-right">0.004</td>
<td class="org-right">3e-07</td>
<td class="org-right">1e-05</td>
</tr>
<tr>
<td class="org-right">-4e-08</td>
<td class="org-right">-3e-07</td>
<td class="org-right">0.02</td>
<td class="org-right">7e-10</td>
<td class="org-right">-2e-09</td>
<td class="org-right">1e-09</td>
<td class="org-right">3e-07</td>
<td class="org-right">7e-08</td>
<td class="org-right">0.003</td>
<td class="org-right">1e-09</td>
</tr>
<tr>
<td class="org-right">-1e-10</td>
<td class="org-right">-0.0002</td>
<td class="org-right">7e-10</td>
<td class="org-right">4e-06</td>
<td class="org-right">-1e-12</td>
<td class="org-right">-6e-13</td>
<td class="org-right">2e-10</td>
<td class="org-right">-7e-06</td>
<td class="org-right">-8e-10</td>
<td class="org-right">-1e-09</td>
</tr>
<tr>
<td class="org-right">0.0002</td>
<td class="org-right">-1e-10</td>
<td class="org-right">-2e-09</td>
<td class="org-right">-1e-12</td>
<td class="org-right">3e-06</td>
<td class="org-right">2e-13</td>
<td class="org-right">9e-06</td>
<td class="org-right">4e-11</td>
<td class="org-right">2e-09</td>
<td class="org-right">-3e-13</td>
</tr>
<tr>
<td class="org-right">-3e-11</td>
<td class="org-right">-2e-09</td>
<td class="org-right">1e-09</td>
<td class="org-right">-6e-13</td>
<td class="org-right">2e-13</td>
<td class="org-right">4e-07</td>
<td class="org-right">8e-11</td>
<td class="org-right">9e-10</td>
<td class="org-right">-1e-09</td>
<td class="org-right">2e-12</td>
</tr>
<tr>
<td class="org-right">0.004</td>
<td class="org-right">2e-08</td>
<td class="org-right">3e-07</td>
<td class="org-right">2e-10</td>
<td class="org-right">9e-06</td>
<td class="org-right">8e-11</td>
<td class="org-right">0.02</td>
<td class="org-right">-7e-08</td>
<td class="org-right">-3e-07</td>
<td class="org-right">-2e-10</td>
</tr>
<tr>
<td class="org-right">5e-08</td>
<td class="org-right">0.004</td>
<td class="org-right">7e-08</td>
<td class="org-right">-7e-06</td>
<td class="org-right">4e-11</td>
<td class="org-right">9e-10</td>
<td class="org-right">-7e-08</td>
<td class="org-right">0.01</td>
<td class="org-right">-4e-08</td>
<td class="org-right">0.0002</td>
</tr>
<tr>
<td class="org-right">7e-08</td>
<td class="org-right">3e-07</td>
<td class="org-right">0.003</td>
<td class="org-right">-8e-10</td>
<td class="org-right">2e-09</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-3e-07</td>
<td class="org-right">-4e-08</td>
<td class="org-right">0.02</td>
<td class="org-right">-1e-09</td>
</tr>
<tr>
<td class="org-right">1e-10</td>
<td class="org-right">1e-05</td>
<td class="org-right">1e-09</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-3e-13</td>
<td class="org-right">2e-12</td>
<td class="org-right">-2e-10</td>
<td class="org-right">0.0002</td>
<td class="org-right">-1e-09</td>
<td class="org-right">2e-06</td>
</tr>
</tbody>
</table>
<p>
Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-orgace43b0" class="outline-3">
<h3 id="orgace43b0"><span class="section-number-3">3.3</span> Flexible Joint Characteristics</h3>
2020-08-03 15:37:17 +02:00
<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>
2020-08-03 15:37:17 +02:00
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left"><b>Caracteristic</b></th>
<th scope="col" class="org-right"><b>Value</b></th>
<th scope="col" class="org-right"><b>Estimation by Francois</b></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Axial Stiffness [N/um]</td>
<td class="org-right">119</td>
<td class="org-right">60</td>
</tr>
2020-10-29 13:37:06 +01:00
<tr>
<td class="org-left">Shear Stiffness [N/um]</td>
<td class="org-right">11</td>
<td class="org-right">0</td>
</tr>
2020-08-03 15:37:17 +02:00
<tr>
<td class="org-left">Bending Stiffness [Nm/rad]</td>
<td class="org-right">33</td>
<td class="org-right">15</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness [Nm/rad]</td>
<td class="org-right">33</td>
<td class="org-right">15</td>
</tr>
<tr>
<td class="org-left">Torsion Stiffness [Nm/rad]</td>
<td class="org-right">236</td>
<td class="org-right">20</td>
</tr>
</tbody>
</table>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-orgc60e392" class="outline-3">
<h3 id="orgc60e392"><span class="section-number-3">3.4</span> Identification of the parameters using Simscape</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-3-4">
<p>
The flexor is now imported into Simscape and its parameters are estimated using an identification.
2020-08-03 15:37:17 +02:00
</p>
<p>
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>
2020-08-03 15:37:17 +02:00
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left"><b>Caracteristic</b></th>
<th scope="col" class="org-right"><b>Value</b></th>
<th scope="col" class="org-right"><b>Identification</b></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Axial Stiffness Dz [N/um]</td>
<td class="org-right">119</td>
<td class="org-right">119</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness Rx [Nm/rad]</td>
<td class="org-right">33</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">34</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
<td class="org-left">Bending Stiffness Ry [Nm/rad]</td>
<td class="org-right">33</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">126</td>
2020-08-03 15:37:17 +02:00
</tr>
<tr>
<td class="org-left">Torsion Stiffness Rz [Nm/rad]</td>
<td class="org-right">236</td>
2020-10-29 13:37:06 +01:00
<td class="org-right">238</td>
2020-08-03 15:37:17 +02:00
</tr>
</tbody>
</table>
</div>
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org43c8aa7" class="outline-3">
<h3 id="org43c8aa7"><span class="section-number-3">3.5</span> Simpler Model</h3>
<div class="outline-text-3" id="text-3-5">
<p>
2020-10-29 13:37:06 +01:00
Let&rsquo;s now model the flexible joint with a &ldquo;perfect&rdquo; Bushing joint as shown in Figure <a href="#orga4765e3">18</a>.
</p>
2020-10-29 13:37:06 +01:00
<div id="orga4765e3" class="figure">
<p><img src="figs/flexible_joint_simscape.png" alt="flexible_joint_simscape.png" />
</p>
2020-10-29 13:37:06 +01:00
<p><span class="figure-number">Figure 18: </span>Bushing Joint used to model the flexible joint</p>
</div>
<p>
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">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">Kx = K(1,1); <span class="org-comment">% [N/m]</span>
Ky = K(2,2); <span class="org-comment">% [N/m]</span>
Kz = K(3,3); <span class="org-comment">% [N/m]</span>
Krx = K(4,4); <span class="org-comment">% [Nm/rad]</span>
Kry = K(5,5); <span class="org-comment">% [Nm/rad]</span>
Krz = K(6,6); <span class="org-comment">% [Nm/rad]</span>
</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>
2020-10-29 13:37:06 +01:00
<div id="org54ce633" class="figure">
<p><img src="figs/flexor_ID16_compare_bushing_joint.png" alt="flexor_ID16_compare_bushing_joint.png" />
</p>
2020-10-29 13:37:06 +01:00
<p><span class="figure-number">Figure 19: </span>Comparison of the Joint compliance between the FEM model and the simpler model</p>
</div>
</div>
</div>
2020-08-03 15:37:17 +02:00
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org5d2c10d" class="outline-2">
<h2 id="org5d2c10d"><span class="section-number-2">4</span> Optimal Flexible Joint</h2>
2020-08-03 15:37:17 +02:00
<div class="outline-text-2" id="text-4">
2020-10-29 13:37:06 +01:00
<div id="orgc598a8a" class="figure">
<p><img src="data/flexor_circ_025/CS.jpg" alt="CS.jpg" />
2020-08-03 15:46:35 +02:00
</p>
2020-10-29 13:37:06 +01:00
<p><span class="figure-number">Figure 20: </span>Flexor studied</p>
</div>
2020-08-03 15:37:17 +02:00
</div>
2020-08-03 15:46:35 +02:00
2020-10-29 13:37:06 +01:00
<div id="outline-container-orgfec12e9" class="outline-3">
<h3 id="orgfec12e9"><span class="section-number-3">4.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
2020-08-03 15:37:17 +02:00
<div class="outline-text-3" id="text-4-1">
<p>
We first extract the stiffness and mass matrices.
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">K = readmatrix(<span class="org-string">'mat_K.CSV'</span>);
M = readmatrix(<span class="org-string">'mat_M.CSV'</span>);
2020-08-03 15:37:17 +02:00
</pre>
</div>
<p>
Then, we extract the coordinates of the interface nodes.
</p>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes(<span class="org-string">'out_nodes_3D.txt'</span>);
2020-08-03 15:37:17 +02:00
</pre>
</div>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">save(<span class="org-string">'./mat/flexor_025.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
2020-08-03 15:37:17 +02:00
</pre>
</div>
2020-10-29 13:37:06 +01:00
</div>
</div>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<div id="outline-container-org51a4b8d" class="outline-3">
<h3 id="org51a4b8d"><span class="section-number-3">4.2</span> Output parameters</h3>
<div class="outline-text-3" id="text-4-2">
2020-08-03 15:37:17 +02:00
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">load(<span class="org-string">'./mat/flexor_025.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
2020-08-03 15:37:17 +02:00
</pre>
</div>
2020-10-29 13:37:06 +01:00
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<colgroup>
<col class="org-left" />
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-left">Total number of Nodes</td>
<td class="org-right">2</td>
</tr>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<tr>
<td class="org-left">Number of interface Nodes</td>
<td class="org-right">2</td>
</tr>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<tr>
<td class="org-left">Number of Modes</td>
<td class="org-right">6</td>
</tr>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<tr>
<td class="org-left">Size of M and K matrices</td>
<td class="org-right">18</td>
</tr>
</tbody>
</table>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 12:</span> Coordinates of the interface nodes</caption>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<colgroup>
<col class="org-right" />
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-right">Node i</th>
<th scope="col" class="org-right">Node Number</th>
<th scope="col" class="org-right">x [m]</th>
<th scope="col" class="org-right">y [m]</th>
<th scope="col" class="org-right">z [m]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">1.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>
</tr>
<tr>
<td class="org-right">2.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>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 13:</span> First 10x10 elements of the Stiffness matrix</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">12700000.0</td>
<td class="org-right">-18.5</td>
<td class="org-right">-26.8</td>
<td class="org-right">0.00162</td>
<td class="org-right">-4.63</td>
<td class="org-right">64.0</td>
<td class="org-right">-12700000.0</td>
<td class="org-right">18.3</td>
<td class="org-right">26.7</td>
<td class="org-right">0.00234</td>
</tr>
<tr>
<td class="org-right">-18.5</td>
<td class="org-right">12700000.0</td>
<td class="org-right">-499.0</td>
<td class="org-right">-132.0</td>
<td class="org-right">0.00414</td>
<td class="org-right">-0.495</td>
<td class="org-right">18.4</td>
<td class="org-right">-12700000.0</td>
<td class="org-right">499.0</td>
<td class="org-right">132.0</td>
</tr>
<tr>
<td class="org-right">-26.8</td>
<td class="org-right">-499.0</td>
<td class="org-right">94000000.0</td>
<td class="org-right">-470.0</td>
<td class="org-right">0.00771</td>
<td class="org-right">-0.855</td>
<td class="org-right">26.8</td>
<td class="org-right">498.0</td>
<td class="org-right">-94000000.0</td>
<td class="org-right">470.0</td>
</tr>
<tr>
<td class="org-right">0.00162</td>
<td class="org-right">-132.0</td>
<td class="org-right">-470.0</td>
<td class="org-right">4.83</td>
<td class="org-right">2.61e-07</td>
<td class="org-right">0.000123</td>
<td class="org-right">-0.00163</td>
<td class="org-right">132.0</td>
<td class="org-right">470.0</td>
<td class="org-right">-4.83</td>
</tr>
<tr>
<td class="org-right">-4.63</td>
<td class="org-right">0.00414</td>
<td class="org-right">0.00771</td>
<td class="org-right">2.61e-07</td>
<td class="org-right">4.83</td>
<td class="org-right">4.43e-05</td>
<td class="org-right">4.63</td>
<td class="org-right">-0.00413</td>
<td class="org-right">-0.00772</td>
<td class="org-right">-4.3e-07</td>
</tr>
<tr>
<td class="org-right">64.0</td>
<td class="org-right">-0.495</td>
<td class="org-right">-0.855</td>
<td class="org-right">0.000123</td>
<td class="org-right">4.43e-05</td>
<td class="org-right">260.0</td>
<td class="org-right">-64.0</td>
<td class="org-right">0.495</td>
<td class="org-right">0.855</td>
<td class="org-right">-0.000124</td>
</tr>
<tr>
<td class="org-right">-12700000.0</td>
<td class="org-right">18.4</td>
<td class="org-right">26.8</td>
<td class="org-right">-0.00163</td>
<td class="org-right">4.63</td>
<td class="org-right">-64.0</td>
<td class="org-right">12700000.0</td>
<td class="org-right">-18.2</td>
<td class="org-right">-26.7</td>
<td class="org-right">-0.00234</td>
</tr>
<tr>
<td class="org-right">18.3</td>
<td class="org-right">-12700000.0</td>
<td class="org-right">498.0</td>
<td class="org-right">132.0</td>
<td class="org-right">-0.00413</td>
<td class="org-right">0.495</td>
<td class="org-right">-18.2</td>
<td class="org-right">12700000.0</td>
<td class="org-right">-498.0</td>
<td class="org-right">-132.0</td>
</tr>
<tr>
<td class="org-right">26.7</td>
<td class="org-right">499.0</td>
<td class="org-right">-94000000.0</td>
<td class="org-right">470.0</td>
<td class="org-right">-0.00772</td>
<td class="org-right">0.855</td>
<td class="org-right">-26.7</td>
<td class="org-right">-498.0</td>
<td class="org-right">94000000.0</td>
<td class="org-right">-470.0</td>
</tr>
<tr>
<td class="org-right">0.00234</td>
<td class="org-right">132.0</td>
<td class="org-right">470.0</td>
<td class="org-right">-4.83</td>
<td class="org-right">-4.3e-07</td>
<td class="org-right">-0.000124</td>
<td class="org-right">-0.00234</td>
<td class="org-right">-132.0</td>
<td class="org-right">-470.0</td>
<td class="org-right">4.83</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 14:</span> First 10x10 elements of the Mass matrix</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">0.006</td>
<td class="org-right">8e-09</td>
<td class="org-right">-2e-08</td>
<td class="org-right">-1e-10</td>
<td class="org-right">3e-05</td>
<td class="org-right">3e-08</td>
<td class="org-right">0.003</td>
<td class="org-right">-3e-09</td>
<td class="org-right">9e-09</td>
<td class="org-right">2e-12</td>
</tr>
<tr>
<td class="org-right">8e-09</td>
<td class="org-right">0.02</td>
<td class="org-right">1e-07</td>
<td class="org-right">-3e-05</td>
<td class="org-right">1e-11</td>
<td class="org-right">6e-10</td>
<td class="org-right">1e-08</td>
<td class="org-right">0.003</td>
<td class="org-right">-5e-08</td>
<td class="org-right">3e-09</td>
</tr>
<tr>
<td class="org-right">-2e-08</td>
<td class="org-right">1e-07</td>
<td class="org-right">0.01</td>
<td class="org-right">-6e-08</td>
<td class="org-right">-6e-11</td>
<td class="org-right">-8e-12</td>
<td class="org-right">-1e-07</td>
<td class="org-right">1e-08</td>
<td class="org-right">0.003</td>
<td class="org-right">-1e-08</td>
</tr>
<tr>
<td class="org-right">-1e-10</td>
<td class="org-right">-3e-05</td>
<td class="org-right">-6e-08</td>
<td class="org-right">1e-06</td>
<td class="org-right">7e-14</td>
<td class="org-right">6e-13</td>
<td class="org-right">1e-10</td>
<td class="org-right">1e-06</td>
<td class="org-right">-1e-08</td>
<td class="org-right">3e-10</td>
</tr>
<tr>
<td class="org-right">3e-05</td>
<td class="org-right">1e-11</td>
<td class="org-right">-6e-11</td>
<td class="org-right">7e-14</td>
<td class="org-right">2e-07</td>
<td class="org-right">1e-10</td>
<td class="org-right">3e-08</td>
<td class="org-right">-7e-12</td>
<td class="org-right">6e-11</td>
<td class="org-right">-6e-16</td>
</tr>
<tr>
<td class="org-right">3e-08</td>
<td class="org-right">6e-10</td>
<td class="org-right">-8e-12</td>
<td class="org-right">6e-13</td>
<td class="org-right">1e-10</td>
<td class="org-right">5e-07</td>
<td class="org-right">1e-08</td>
<td class="org-right">-5e-10</td>
<td class="org-right">-1e-11</td>
<td class="org-right">1e-13</td>
</tr>
<tr>
<td class="org-right">0.003</td>
<td class="org-right">1e-08</td>
<td class="org-right">-1e-07</td>
<td class="org-right">1e-10</td>
<td class="org-right">3e-08</td>
<td class="org-right">1e-08</td>
<td class="org-right">0.02</td>
<td class="org-right">-2e-08</td>
<td class="org-right">1e-07</td>
<td class="org-right">-4e-12</td>
</tr>
<tr>
<td class="org-right">-3e-09</td>
<td class="org-right">0.003</td>
<td class="org-right">1e-08</td>
<td class="org-right">1e-06</td>
<td class="org-right">-7e-12</td>
<td class="org-right">-5e-10</td>
<td class="org-right">-2e-08</td>
<td class="org-right">0.006</td>
<td class="org-right">-8e-08</td>
<td class="org-right">3e-05</td>
</tr>
<tr>
<td class="org-right">9e-09</td>
<td class="org-right">-5e-08</td>
<td class="org-right">0.003</td>
<td class="org-right">-1e-08</td>
<td class="org-right">6e-11</td>
<td class="org-right">-1e-11</td>
<td class="org-right">1e-07</td>
<td class="org-right">-8e-08</td>
<td class="org-right">0.01</td>
<td class="org-right">-6e-08</td>
</tr>
<tr>
<td class="org-right">2e-12</td>
<td class="org-right">3e-09</td>
<td class="org-right">-1e-08</td>
<td class="org-right">3e-10</td>
<td class="org-right">-6e-16</td>
<td class="org-right">1e-13</td>
<td class="org-right">-4e-12</td>
<td class="org-right">3e-05</td>
<td class="org-right">-6e-08</td>
<td class="org-right">2e-07</td>
</tr>
</tbody>
</table>
<p>
Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
</div>
</div>
<div id="outline-container-org9df419b" class="outline-3">
<h3 id="org9df419b"><span class="section-number-3">4.3</span> Flexible Joint Characteristics</h3>
<div class="outline-text-3" id="text-4-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">
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left"><b>Caracteristic</b></th>
<th scope="col" class="org-right"><b>Value</b></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Axial Stiffness [N/um]</td>
<td class="org-right">94.0</td>
</tr>
<tr>
<td class="org-left">Shear Stiffness [N/um]</td>
<td class="org-right">12.7</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness [Nm/rad]</td>
<td class="org-right">4.8</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness [Nm/rad]</td>
<td class="org-right">4.8</td>
</tr>
<tr>
<td class="org-left">Torsion Stiffness [Nm/rad]</td>
<td class="org-right">260.2</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org4ea4053" class="outline-3">
<h3 id="org4ea4053"><span class="section-number-3">4.4</span> Identification of the parameters using Simscape</h3>
<div class="outline-text-3" id="text-4-4">
<p>
The flexor is now imported into Simscape and its parameters are estimated using an identification.
</p>
<p>
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>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left"><b>Caracteristic</b></th>
<th scope="col" class="org-right"><b>Value</b></th>
<th scope="col" class="org-right"><b>Identification</b></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Axial Stiffness Dz [N/um]</td>
<td class="org-right">94.0</td>
<td class="org-right">93.9</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness Rx [Nm/rad]</td>
<td class="org-right">4.8</td>
<td class="org-right">4.8</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness Ry [Nm/rad]</td>
<td class="org-right">4.8</td>
<td class="org-right">4.8</td>
</tr>
<tr>
<td class="org-left">Torsion Stiffness Rz [Nm/rad]</td>
<td class="org-right">260.2</td>
<td class="org-right">260.2</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org070daa9" class="outline-3">
<h3 id="org070daa9"><span class="section-number-3">4.5</span> Simpler Model</h3>
<div class="outline-text-3" id="text-4-5">
<p>
Let&rsquo;s now model the flexible joint with a &ldquo;perfect&rdquo; Bushing joint as shown in Figure <a href="#orga4765e3">18</a>.
</p>
<div id="orgaded736" class="figure">
<p><img src="figs/flexible_joint_simscape.png" alt="flexible_joint_simscape.png" />
</p>
<p><span class="figure-number">Figure 21: </span>Bushing Joint used to model the flexible joint</p>
</div>
<p>
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); <span class="org-comment">% [N/m]</span>
Ky = K(2,2); <span class="org-comment">% [N/m]</span>
Kz = K(3,3); <span class="org-comment">% [N/m]</span>
Krx = K(4,4); <span class="org-comment">% [Nm/rad]</span>
Kry = K(5,5); <span class="org-comment">% [Nm/rad]</span>
Krz = K(6,6); <span class="org-comment">% [Nm/rad]</span>
</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="orga26c578" 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 22: </span>Comparison of the Joint compliance between the FEM model and the simpler model</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org72ebb5c" class="outline-2">
<h2 id="org72ebb5c"><span class="section-number-2">5</span> Integral Force Feedback with Amplified Piezo</h2>
<div class="outline-text-2" id="text-5">
<p>
In this section, we try to replicate the results obtained in (<a href="#citeproc_bib_item_2">Souleille et al. 2018</a>).
</p>
</div>
<div id="outline-container-orgffa90de" class="outline-3">
<h3 id="orgffa90de"><span class="section-number-3">5.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-5-1">
<p>
We first extract the stiffness and mass matrices.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = extractMatrix(<span class="org-string">'piezo_amplified_IFF_K.txt'</span>);
M = extractMatrix(<span class="org-string">'piezo_amplified_IFF_M.txt'</span>);
</pre>
</div>
<p>
Then, we extract the coordinates of the interface nodes.
</p>
<div class="org-src-container">
<pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes(<span class="org-string">'piezo_amplified_IFF.txt'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org4ac5a6e" class="outline-3">
<h3 id="org4ac5a6e"><span class="section-number-3">5.2</span> IFF Plant</h3>
<div class="outline-text-3" id="text-5-2">
<p>
The transfer function from the force actuator to the force sensor is identified and shown in Figure <a href="#org4390f0c">23</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = tf(0);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">m = 0;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_IFF'</span>;
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1;
io(io_i) = linio([mdl, <span class="org-string">'/Kiff'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/G'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
Gf = linearize(mdl, io);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Gfm = linearize(mdl, io);
</pre>
</div>
<div id="org4390f0c" class="figure">
<p><img src="figs/piezo_amplified_iff_plant.png" alt="piezo_amplified_iff_plant.png" />
</p>
<p><span class="figure-number">Figure 23: </span>IFF Plant</p>
</div>
</div>
</div>
<div id="outline-container-orgdc46434" class="outline-3">
<h3 id="orgdc46434"><span class="section-number-3">5.3</span> IFF controller</h3>
<div class="outline-text-3" id="text-5-3">
<p>
The controller is defined and the loop gain is shown in Figure <a href="#orgc28c610">24</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = <span class="org-type">-</span>1e12<span class="org-type">/</span>s;
</pre>
</div>
<div id="orgc28c610" class="figure">
<p><img src="figs/piezo_amplified_iff_loop_gain.png" alt="piezo_amplified_iff_loop_gain.png" />
</p>
<p><span class="figure-number">Figure 24: </span>IFF Loop Gain</p>
</div>
</div>
</div>
<div id="outline-container-orgc9d8168" class="outline-3">
<h3 id="orgc9d8168"><span class="section-number-3">5.4</span> Closed Loop System</h3>
<div class="outline-text-3" id="text-5-4">
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = <span class="org-type">-</span>1e12<span class="org-type">/</span>s;
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'piezo_amplified_IFF'</span>;
<span class="org-matlab-cellbreak"><span class="org-comment">%% Input/Output definition</span></span>
clear io; io_i = 1;
io(io_i) = linio([mdl, <span class="org-string">'/Dw'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/F'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/Fd'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/d'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1;
io(io_i) = linio([mdl, <span class="org-string">'/G'</span>], 1, <span class="org-string">'output'</span>); io_i = io_i <span class="org-type">+</span> 1;
Giff = linearize(mdl, io);
Giff.InputName = {<span class="org-string">'w'</span>, <span class="org-string">'f'</span>, <span class="org-string">'F'</span>};
Giff.OutputName = {<span class="org-string">'x1'</span>, <span class="org-string">'Fs'</span>};
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = tf(0);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">G = linearize(mdl, io);
G.InputName = {<span class="org-string">'w'</span>, <span class="org-string">'f'</span>, <span class="org-string">'F'</span>};
G.OutputName = {<span class="org-string">'x1'</span>, <span class="org-string">'Fs'</span>};
</pre>
</div>
<div id="orgcc44982" class="figure">
<p><img src="figs/piezo_amplified_iff_comp.png" alt="piezo_amplified_iff_comp.png" />
</p>
<p><span class="figure-number">Figure 25: </span>OL and CL transfer functions</p>
</div>
<div id="org9e21ddc" class="figure">
<p><img src="figs/souleille18_results.png" alt="souleille18_results.png" />
</p>
<p><span class="figure-number">Figure 26: </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>
2020-08-03 15:37:17 +02:00
</div>
2020-10-29 13:37:06 +01:00
</div>
</div>
<div id="outline-container-orge46f2bf" class="outline-2">
<h2 id="orge46f2bf"><span class="section-number-2">6</span> Complete Strut with Encoder</h2>
<div class="outline-text-2" id="text-6">
</div>
<div id="outline-container-org9c8b2a0" class="outline-3">
<h3 id="org9c8b2a0"><span class="section-number-3">6.1</span> Introduction</h3>
<div class="outline-text-3" id="text-6-1">
<div id="org169745c" class="figure">
<p><img src="data/strut_encoder/points3.jpg" alt="points3.jpg" />
</p>
<p><span class="figure-number">Figure 27: </span>Interface points</p>
</div>
<p>
Flexible joints have 0.25mm width.
</p>
</div>
</div>
<div id="outline-container-org6b21925" class="outline-3">
<h3 id="org6b21925"><span class="section-number-3">6.2</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-6-2">
<p>
We first extract the stiffness and mass matrices.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K = readmatrix(<span class="org-string">'mat_K.CSV'</span>);
M = readmatrix(<span class="org-string">'mat_M.CSV'</span>);
</pre>
</div>
<p>
Then, we extract the coordinates of the interface nodes.
</p>
<div class="org-src-container">
<pre class="src src-matlab">[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes(<span class="org-string">'out_nodes_3D.txt'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">save(<span class="org-string">'./mat/strut_encoder.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org40668e1" class="outline-3">
<h3 id="org40668e1"><span class="section-number-3">6.3</span> Output parameters</h3>
<div class="outline-text-3" id="text-6-3">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'./mat/strut_encoder.mat'</span>, <span class="org-string">'int_xyz'</span>, <span class="org-string">'int_i'</span>, <span class="org-string">'n_xyz'</span>, <span class="org-string">'n_i'</span>, <span class="org-string">'nodes'</span>, <span class="org-string">'M'</span>, <span class="org-string">'K'</span>);
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup>
<col class="org-left" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-left">Total number of Nodes</td>
<td class="org-right">8</td>
</tr>
<tr>
<td class="org-left">Number of interface Nodes</td>
<td class="org-right">8</td>
</tr>
<tr>
<td class="org-left">Number of Modes</td>
<td class="org-right">6</td>
</tr>
<tr>
<td class="org-left">Size of M and K matrices</td>
<td class="org-right">54</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 15:</span> Coordinates of the interface nodes</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-right">Node i</th>
<th scope="col" class="org-right">Node Number</th>
<th scope="col" class="org-right">x [m]</th>
<th scope="col" class="org-right">y [m]</th>
<th scope="col" class="org-right">z [m]</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-right">1.0</td>
<td class="org-right">504411.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0405</td>
</tr>
<tr>
<td class="org-right">2.0</td>
<td class="org-right">504412.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
<td class="org-right">-0.0405</td>
</tr>
<tr>
<td class="org-right">3.0</td>
<td class="org-right">504413.0</td>
<td class="org-right">-0.0325</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">4.0</td>
<td class="org-right">504414.0</td>
<td class="org-right">-0.0125</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">5.0</td>
<td class="org-right">504415.0</td>
<td class="org-right">-0.0075</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">6.0</td>
<td class="org-right">504416.0</td>
<td class="org-right">0.0325</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<tr>
<td class="org-right">7.0</td>
<td class="org-right">504417.0</td>
<td class="org-right">0.004</td>
<td class="org-right">0.0145</td>
<td class="org-right">-0.00175</td>
</tr>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<tr>
<td class="org-right">8.0</td>
<td class="org-right">504418.0</td>
<td class="org-right">0.004</td>
<td class="org-right">0.0166</td>
<td class="org-right">-0.00175</td>
</tr>
</tbody>
</table>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 16:</span> First 10x10 elements of the Stiffness matrix</caption>
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<colgroup>
<col class="org-right" />
2020-08-03 15:37:17 +02:00
2020-10-29 13:37:06 +01:00
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">2000000.0</td>
<td class="org-right">1000000.0</td>
<td class="org-right">-3000000.0</td>
<td class="org-right">-400.0</td>
<td class="org-right">300.0</td>
<td class="org-right">200.0</td>
<td class="org-right">-30.0</td>
<td class="org-right">2000.0</td>
<td class="org-right">-10000.0</td>
<td class="org-right">0.3</td>
</tr>
<tr>
<td class="org-right">1000000.0</td>
<td class="org-right">4000000.0</td>
<td class="org-right">-8000000.0</td>
<td class="org-right">-900.0</td>
<td class="org-right">400.0</td>
<td class="org-right">-50.0</td>
<td class="org-right">-6000.0</td>
<td class="org-right">10000.0</td>
<td class="org-right">-20000.0</td>
<td class="org-right">3</td>
</tr>
<tr>
<td class="org-right">-3000000.0</td>
<td class="org-right">-8000000.0</td>
<td class="org-right">20000000.0</td>
<td class="org-right">2000.0</td>
<td class="org-right">-900.0</td>
<td class="org-right">200.0</td>
<td class="org-right">-10000.0</td>
<td class="org-right">20000.0</td>
<td class="org-right">-300000.0</td>
<td class="org-right">7</td>
</tr>
<tr>
<td class="org-right">-400.0</td>
<td class="org-right">-900.0</td>
<td class="org-right">2000.0</td>
<td class="org-right">5</td>
<td class="org-right">-0.1</td>
<td class="org-right">0.05</td>
<td class="org-right">1</td>
<td class="org-right">-3</td>
<td class="org-right">6</td>
<td class="org-right">-0.0007</td>
</tr>
<tr>
<td class="org-right">300.0</td>
<td class="org-right">400.0</td>
<td class="org-right">-900.0</td>
<td class="org-right">-0.1</td>
<td class="org-right">5</td>
<td class="org-right">0.04</td>
<td class="org-right">-0.1</td>
<td class="org-right">0.5</td>
<td class="org-right">-3</td>
<td class="org-right">0.0001</td>
</tr>
<tr>
<td class="org-right">200.0</td>
<td class="org-right">-50.0</td>
<td class="org-right">200.0</td>
<td class="org-right">0.05</td>
<td class="org-right">0.04</td>
<td class="org-right">300.0</td>
<td class="org-right">4</td>
<td class="org-right">-0.01</td>
<td class="org-right">-1</td>
<td class="org-right">3e-05</td>
</tr>
<tr>
<td class="org-right">-30.0</td>
<td class="org-right">-6000.0</td>
<td class="org-right">-10000.0</td>
<td class="org-right">1</td>
<td class="org-right">-0.1</td>
<td class="org-right">4</td>
<td class="org-right">3000000.0</td>
<td class="org-right">-1000000.0</td>
<td class="org-right">-2000000.0</td>
<td class="org-right">-300.0</td>
</tr>
<tr>
<td class="org-right">2000.0</td>
<td class="org-right">10000.0</td>
<td class="org-right">20000.0</td>
<td class="org-right">-3</td>
<td class="org-right">0.5</td>
<td class="org-right">-0.01</td>
<td class="org-right">-1000000.0</td>
<td class="org-right">6000000.0</td>
<td class="org-right">7000000.0</td>
<td class="org-right">1000.0</td>
</tr>
<tr>
<td class="org-right">-10000.0</td>
<td class="org-right">-20000.0</td>
<td class="org-right">-300000.0</td>
<td class="org-right">6</td>
<td class="org-right">-3</td>
<td class="org-right">-1</td>
<td class="org-right">-2000000.0</td>
<td class="org-right">7000000.0</td>
<td class="org-right">20000000.0</td>
<td class="org-right">2000.0</td>
</tr>
<tr>
<td class="org-right">0.3</td>
<td class="org-right">3</td>
<td class="org-right">7</td>
<td class="org-right">-0.0007</td>
<td class="org-right">0.0001</td>
<td class="org-right">3e-05</td>
<td class="org-right">-300.0</td>
<td class="org-right">1000.0</td>
<td class="org-right">2000.0</td>
<td class="org-right">5</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 17:</span> First 10x10 elements of the Mass matrix</caption>
<colgroup>
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<tbody>
<tr>
<td class="org-right">0.04</td>
<td class="org-right">-0.005</td>
<td class="org-right">0.007</td>
<td class="org-right">2e-06</td>
<td class="org-right">0.0001</td>
<td class="org-right">-5e-07</td>
<td class="org-right">-1e-05</td>
<td class="org-right">-9e-07</td>
<td class="org-right">8e-05</td>
<td class="org-right">-5e-10</td>
</tr>
<tr>
<td class="org-right">-0.005</td>
<td class="org-right">0.03</td>
<td class="org-right">0.02</td>
<td class="org-right">-0.0001</td>
<td class="org-right">1e-06</td>
<td class="org-right">-3e-07</td>
<td class="org-right">3e-05</td>
<td class="org-right">-0.0001</td>
<td class="org-right">8e-05</td>
<td class="org-right">-3e-08</td>
</tr>
<tr>
<td class="org-right">0.007</td>
<td class="org-right">0.02</td>
<td class="org-right">0.08</td>
<td class="org-right">-6e-06</td>
<td class="org-right">-5e-06</td>
<td class="org-right">-7e-07</td>
<td class="org-right">4e-05</td>
<td class="org-right">-0.0001</td>
<td class="org-right">0.0005</td>
<td class="org-right">-3e-08</td>
</tr>
<tr>
<td class="org-right">2e-06</td>
<td class="org-right">-0.0001</td>
<td class="org-right">-6e-06</td>
<td class="org-right">2e-06</td>
<td class="org-right">-4e-10</td>
<td class="org-right">2e-11</td>
<td class="org-right">-8e-09</td>
<td class="org-right">3e-08</td>
<td class="org-right">-2e-08</td>
<td class="org-right">6e-12</td>
</tr>
<tr>
<td class="org-right">0.0001</td>
<td class="org-right">1e-06</td>
<td class="org-right">-5e-06</td>
<td class="org-right">-4e-10</td>
<td class="org-right">3e-06</td>
<td class="org-right">2e-10</td>
<td class="org-right">-3e-09</td>
<td class="org-right">3e-09</td>
<td class="org-right">-7e-09</td>
<td class="org-right">6e-13</td>
</tr>
<tr>
<td class="org-right">-5e-07</td>
<td class="org-right">-3e-07</td>
<td class="org-right">-7e-07</td>
<td class="org-right">2e-11</td>
<td class="org-right">2e-10</td>
<td class="org-right">5e-07</td>
<td class="org-right">-2e-08</td>
<td class="org-right">5e-09</td>
<td class="org-right">-5e-09</td>
<td class="org-right">1e-12</td>
</tr>
<tr>
<td class="org-right">-1e-05</td>
<td class="org-right">3e-05</td>
<td class="org-right">4e-05</td>
<td class="org-right">-8e-09</td>
<td class="org-right">-3e-09</td>
<td class="org-right">-2e-08</td>
<td class="org-right">0.04</td>
<td class="org-right">0.004</td>
<td class="org-right">0.003</td>
<td class="org-right">1e-06</td>
</tr>
<tr>
<td class="org-right">-9e-07</td>
<td class="org-right">-0.0001</td>
<td class="org-right">-0.0001</td>
<td class="org-right">3e-08</td>
<td class="org-right">3e-09</td>
<td class="org-right">5e-09</td>
<td class="org-right">0.004</td>
<td class="org-right">0.02</td>
<td class="org-right">-0.02</td>
<td class="org-right">0.0001</td>
</tr>
<tr>
<td class="org-right">8e-05</td>
<td class="org-right">8e-05</td>
<td class="org-right">0.0005</td>
<td class="org-right">-2e-08</td>
<td class="org-right">-7e-09</td>
<td class="org-right">-5e-09</td>
<td class="org-right">0.003</td>
<td class="org-right">-0.02</td>
<td class="org-right">0.08</td>
<td class="org-right">-5e-06</td>
</tr>
<tr>
<td class="org-right">-5e-10</td>
<td class="org-right">-3e-08</td>
<td class="org-right">-3e-08</td>
<td class="org-right">6e-12</td>
<td class="org-right">6e-13</td>
<td class="org-right">1e-12</td>
<td class="org-right">1e-06</td>
<td class="org-right">0.0001</td>
<td class="org-right">-5e-06</td>
<td class="org-right">2e-06</td>
</tr>
</tbody>
</table>
<p>
Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can use the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
2020-08-03 15:37:17 +02:00
</div>
2020-10-29 13:37:06 +01:00
</div>
<div id="outline-container-org6d5c440" class="outline-3">
<h3 id="org6d5c440"><span class="section-number-3">6.4</span> Piezoelectric parameters</h3>
<div class="outline-text-3" id="text-6-4">
<p>
Parameters for the APA300ML:
</p>
2020-08-03 15:37:17 +02:00
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">d33 = 3e<span class="org-type">-</span>10; <span class="org-comment">% Strain constant [m/V]</span>
n = 80; <span class="org-comment">% Number of layers per stack</span>
eT = 1.6e<span class="org-type">-</span>8; <span class="org-comment">% Permittivity under constant stress [F/m]</span>
sD = 2e<span class="org-type">-</span>11; <span class="org-comment">% Elastic compliance under constant electric displacement [m2/N]</span>
ka = 235e6; <span class="org-comment">% Stack stiffness [N/m]</span>
C = 5e<span class="org-type">-</span>6; <span class="org-comment">% Stack capactiance [F]</span>
2020-08-03 15:37:17 +02:00
</pre>
</div>
<div class="org-src-container">
2020-10-29 13:37:06 +01:00
<pre class="src src-matlab">na = 2; <span class="org-comment">% Number of stacks used as actuator</span>
ns = 1; <span class="org-comment">% Number of stacks used as force sensor</span>
2020-08-03 15:37:17 +02:00
</pre>
</div>
2020-10-29 13:37:06 +01:00
</div>
2020-08-03 15:37:17 +02:00
</div>
2020-10-29 13:37:06 +01:00
<div id="outline-container-org2521017" class="outline-3">
<h3 id="org2521017"><span class="section-number-3">6.5</span> Identification of the Dynamics</h3>
<div class="outline-text-3" id="text-6-5">
<p>
The dynamics is identified from the applied force to the measured relative displacement.
The same dynamics is identified for a payload mass of 10Kg.
2020-08-03 15:37:17 +02:00
</p>
2020-10-29 13:37:06 +01:00
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
2020-08-03 15:46:35 +02:00
</div>
</div>
2020-08-03 15:37:17 +02:00
</div>
2020-08-03 15:46:35 +02:00
</div>
<p>
</p>
2020-08-03 15:37:17 +02:00
<style>.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}</style><h2 class='citeproc-org-bib-h2'>Bibliography</h2>
<div class="csl-bib-body">
<div class="csl-entry"><a name="citeproc_bib_item_1"></a>Fleming, Andrew J., and Kam K. Leang. 2014. <i>Design, Modeling and Control of Nanopositioning Systems</i>. Advances in Industrial Control. Springer International Publishing. <a href="https://doi.org/10.1007/978-3-319-06617-2">https://doi.org/10.1007/978-3-319-06617-2</a>.</div>
2020-08-03 15:46:35 +02:00
<div class="csl-entry"><a name="citeproc_bib_item_2"></a>Souleille, Adrien, Thibault Lampert, V Lafarga, Sylvain Hellegouarch, Alan Rondineau, Gonçalo Rodrigues, and Christophe Collette. 2018. “A Concept of Active Mount for Space Applications.” <i>CEAS Space Journal</i> 10 (2). Springer:15765.</div>
2020-06-14 12:23:45 +02:00
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
2020-10-29 13:37:06 +01:00
<p class="date">Created: 2020-10-29 jeu. 10:08</p>
2020-06-14 12:23:45 +02:00
</div>
</body>
</html>