nass-fem/index.html

4270 lines
128 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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-11-12 jeu. 10:34 -->
<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="https://research.tdehaeze.xyz/css/style.css"/>
<script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.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">
<a accesskey="h" href="../index.html"> UP </a>
|
<a accesskey="H" href="../index.html"> HOME </a>
</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>
<li><a href="#org5a554a0">1. Amplified Piezoelectric Actuator - 3D elements</a>
<ul>
<li><a href="#org29056ab">1.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#orgccb0a56">1.2. Output parameters</a></li>
<li><a href="#orgdd7c7ba">1.3. Piezoelectric parameters</a></li>
<li><a href="#orgb2959d5">1.4. Identification of the Dynamics</a></li>
<li><a href="#org1e29135">1.5. Comparison with Ansys</a></li>
<li><a href="#org3f1fc2e">1.6. Force Sensor</a></li>
<li><a href="#org4f1753f">1.7. Distributed Actuator</a></li>
<li><a href="#org21246e5">1.8. Distributed Actuator and Force Sensor</a></li>
<li><a href="#orgd0b2aaa">1.9. Dynamics from input voltage to displacement</a></li>
<li><a href="#org5452b7e">1.10. Dynamics from input voltage to output voltage</a></li>
<li><a href="#orgaff4afc">1.11. Identification for a simpler model</a></li>
</ul>
</li>
<li><a href="#org3dc5d8d">2. APA300ML</a>
<ul>
<li><a href="#org3eaf978">2.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org160ca26">2.2. Output parameters</a></li>
<li><a href="#org7932f3c">2.3. Piezoelectric parameters</a></li>
<li><a href="#org18316cd">2.4. Identification of the APA Characteristics</a>
<ul>
<li><a href="#orgc0281f1">2.4.1. Stiffness</a></li>
<li><a href="#orgcebe0f9">2.4.2. Resonance Frequency</a></li>
<li><a href="#orgda4f233">2.4.3. Amplification factor</a></li>
<li><a href="#org59829b6">2.4.4. Stroke</a></li>
</ul>
</li>
<li><a href="#org1cbc8a6">2.5. Identification of the Dynamics</a></li>
<li><a href="#org44a32d5">2.6. IFF</a></li>
<li><a href="#org3e558c6">2.7. DVF</a></li>
<li><a href="#orgad3fdd9">2.8. Identification for a simpler model</a></li>
<li><a href="#orge0b9f5a">2.9. Identification of the stiffness properties</a>
<ul>
<li><a href="#org52ddecb">2.9.1. APA Alone</a></li>
<li><a href="#org02b6855">2.9.2. See how the global stiffness is changing with the flexible joints</a></li>
</ul>
</li>
<li><a href="#org34de703">2.10. Effect of APA300ML in the flexibility of the leg</a></li>
</ul>
</li>
<li><a href="#orgb6c0ee0">3. Flexible Joint</a>
<ul>
<li><a href="#orgd7b1d5f">3.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org9778a32">3.2. Output parameters</a></li>
<li><a href="#orgcb9bad1">3.3. Flexible Joint Characteristics</a></li>
<li><a href="#org4dadc02">3.4. Identification of the parameters using Simscape</a></li>
<li><a href="#org30336a6">3.5. Simpler Model</a></li>
</ul>
</li>
<li><a href="#orgd9d5aff">4. Optimal Flexible Joint</a>
<ul>
<li><a href="#org83c1679">4.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#orgbee4a84">4.2. Output parameters</a></li>
<li><a href="#org7609951">4.3. Flexible Joint Characteristics</a></li>
<li><a href="#org8bf4f56">4.4. Identification of the parameters using Simscape</a></li>
<li><a href="#orgd8cb8ff">4.5. Simpler Model</a></li>
</ul>
</li>
<li><a href="#org7f2d76d">5. Integral Force Feedback with Amplified Piezo</a>
<ul>
<li><a href="#orgd9dc7be">5.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org3671fca">5.2. IFF Plant</a></li>
<li><a href="#org1cbfb66">5.3. IFF controller</a></li>
<li><a href="#org7b29313">5.4. Closed Loop System</a></li>
</ul>
</li>
<li><a href="#org1272d3f">6. Complete Strut with Encoder</a>
<ul>
<li><a href="#orgddf8d43">6.1. Introduction</a></li>
<li><a href="#org4742c38">6.2. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org332b172">6.3. Output parameters</a></li>
<li><a href="#orgadca4a4">6.4. Piezoelectric parameters</a></li>
<li><a href="#org226d3f3">6.5. Identification of the Dynamics</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div id="outline-container-org5a554a0" class="outline-2">
<h2 id="org5a554a0"><span class="section-number-2">1</span> Amplified Piezoelectric Actuator - 3D elements</h2>
<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>
<div id="outline-container-org29056ab" class="outline-3">
<h3 id="org29056ab"><span class="section-number-3">1.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-1-1">
<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_3d_K.txt'</span>);
M = extractMatrix(<span class="org-string">'piezo_amplified_3d_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_3d.txt'</span>);
</pre>
</div>
<div class="org-src-container">
<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>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgccb0a56" class="outline-3">
<h3 id="orgccb0a56"><span class="section-number-3">1.2</span> Output parameters</h3>
<div class="outline-text-3" id="text-1-2">
<div class="org-src-container">
<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>);
</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">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>
<div id="orgf427fec" class="figure">
<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>
<div id="outline-container-orgdd7c7ba" class="outline-3">
<h3 id="orgdd7c7ba"><span class="section-number-3">1.3</span> Piezoelectric parameters</h3>
<div class="outline-text-3" id="text-1-3">
<p>
Parameters for the APA95ML:
</p>
<div class="org-src-container">
<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>
</pre>
</div>
<div class="org-src-container">
<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>
</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">
<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>
</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">
<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>
</pre>
</div>
<pre class="example">
1.1719
</pre>
</div>
</div>
<div id="outline-container-orgb2959d5" class="outline-3">
<h3 id="orgb2959d5"><span class="section-number-3">1.4</span> Identification of the Dynamics</h3>
<div class="outline-text-3" id="text-1-4">
<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.
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 0.01;
</pre>
</div>
<p>
The dynamics is identified from the applied force to the measured relative displacement.
</p>
<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_3d'</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">'/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;
Gh = <span class="org-type">-</span>linearize(mdl, io);
</pre>
</div>
<p>
Then, we add 10Kg of mass:
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 5;
</pre>
</div>
<p>
And the dynamics is identified.
</p>
<p>
The two identified dynamics are compared in Figure <a href="#orgd90f204">2</a>.
</p>
<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_3d'</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">'/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;
Ghm = <span class="org-type">-</span>linearize(mdl, io);
</pre>
</div>
<div id="orgd90f204" class="figure">
<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>
<div id="outline-container-org1e29135" class="outline-3">
<h3 id="org1e29135"><span class="section-number-3">1.5</span> Comparison with Ansys</h3>
<div class="outline-text-3" id="text-1-5">
<p>
Let&rsquo;s import the results from an Harmonic response analysis in Ansys.
</p>
<div class="org-src-container">
<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>);
</pre>
</div>
<p>
The obtained dynamics from the Simscape model and from the Ansys analysis are compare in Figure <a href="#org32de39c">3</a>.
</p>
<div id="org32de39c" class="figure">
<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>
<div id="outline-container-org3f1fc2e" class="outline-3">
<h3 id="org3f1fc2e"><span class="section-number-3">1.6</span> Force Sensor</h3>
<div class="outline-text-3" id="text-1-6">
<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>
The obtained dynamics is shown in Figure <a href="#org5ab3306">4</a>.
</p>
<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_3d'</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">'/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;
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"><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>;
<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">'/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;
Gfm = linearize(mdl, io);
</pre>
</div>
<div id="org5ab3306" class="figure">
<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>
<div id="outline-container-org4f1753f" class="outline-3">
<h3 id="org4f1753f"><span class="section-number-3">1.7</span> Distributed Actuator</h3>
<div class="outline-text-3" id="text-1-7">
<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">
<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>;
<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">'/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;
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">
<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>;
<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">'/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;
Gdm = linearize(mdl, io);
</pre>
</div>
</div>
</div>
<div id="outline-container-org21246e5" class="outline-3">
<h3 id="org21246e5"><span class="section-number-3">1.8</span> Distributed Actuator and Force Sensor</h3>
<div class="outline-text-3" id="text-1-8">
<div class="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_3d_distri_act_sens'</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">'/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;
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">
<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>;
<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">'/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;
Gfdm = linearize(mdl, io);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgd0b2aaa" class="outline-3">
<h3 id="orgd0b2aaa"><span class="section-number-3">1.9</span> Dynamics from input voltage to displacement</h3>
<div class="outline-text-3" id="text-1-9">
<div class="org-src-container">
<pre class="src src-matlab">m = 5;
</pre>
</div>
<p>
And the dynamics is identified.
</p>
<p>
The two identified dynamics are compared in Figure <a href="#orgd90f204">2</a>.
</p>
<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_3d'</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">'/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;
G = <span class="org-type">-</span>linearize(mdl, io);
</pre>
</div>
<div class="org-src-container">
<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>)
</pre>
</div>
</div>
</div>
<div id="outline-container-org5452b7e" class="outline-3">
<h3 id="org5452b7e"><span class="section-number-3">1.10</span> Dynamics from input voltage to output voltage</h3>
<div class="outline-text-3" id="text-1-10">
<div class="org-src-container">
<pre class="src src-matlab">m = 5;
</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_3d'</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">'/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;
G = <span class="org-type">-</span>linearize(mdl, io);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgaff4afc" class="outline-3">
<h3 id="orgaff4afc"><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="#org73ab5e6">5</a>).
The parameters are shown in the table below.
</p>
<div id="org73ab5e6" 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>
</div>
<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>
<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">
<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">
<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>
</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">
<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="org629ff2d" 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:
</p>
<div class="org-src-container">
<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>);
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org3dc5d8d" class="outline-2">
<h2 id="org3dc5d8d"><span class="section-number-2">2</span> APA300ML</h2>
<div class="outline-text-2" id="text-2">
<div id="org60aa4c9" 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>
<div id="outline-container-org3eaf978" class="outline-3">
<h3 id="org3eaf978"><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>
<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/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>);
</pre>
</div>
</div>
</div>
<div id="outline-container-org160ca26" class="outline-3">
<h3 id="org160ca26"><span class="section-number-3">2.2</span> Output parameters</h3>
<div class="outline-text-3" id="text-2-2">
<div class="org-src-container">
<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>);
</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">7</td>
</tr>
<tr>
<td class="org-left">Number of interface Nodes</td>
<td class="org-right">7</td>
</tr>
<tr>
<td class="org-left">Number of Modes</td>
<td class="org-right">120</td>
</tr>
<tr>
<td class="org-left">Size of M and K matrices</td>
<td class="org-right">162</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 5:</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">697783.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
<td class="org-right">-0.015</td>
</tr>
<tr>
<td class="org-right">2.0</td>
<td class="org-right">697784.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
<td class="org-right">0.015</td>
</tr>
<tr>
<td class="org-right">3.0</td>
<td class="org-right">697785.0</td>
<td class="org-right">-0.0325</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">4.0</td>
<td class="org-right">697786.0</td>
<td class="org-right">-0.0125</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">5.0</td>
<td class="org-right">697787.0</td>
<td class="org-right">-0.0075</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">6.0</td>
<td class="org-right">697788.0</td>
<td class="org-right">0.0125</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-right">7.0</td>
<td class="org-right">697789.0</td>
<td class="org-right">0.0325</td>
<td class="org-right">0.0</td>
<td class="org-right">0.0</td>
</tr>
</tbody>
</table>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 6:</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">200000000.0</td>
<td class="org-right">30000.0</td>
<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>
<td class="org-right">10000000.0</td>
<td class="org-right">10000.0</td>
<td class="org-right">-6000.0</td>
<td class="org-right">30.0</td>
</tr>
<tr>
<td class="org-right">30000.0</td>
<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>
<td class="org-right">-10.0</td>
<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>
</tr>
<tr>
<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>
</tr>
<tr>
<td class="org-right">-70.0</td>
<td class="org-right">-200000.0</td>
<td class="org-right">-10.0</td>
<td class="org-right">1000.0</td>
<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>
<td class="org-right">-30.0</td>
</tr>
<tr>
<td class="org-right">300000.0</td>
<td class="org-right">60.0</td>
<td class="org-right">-30.0</td>
<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>
<td class="org-right">20.0</td>
<td class="org-right">-10.0</td>
<td class="org-right">0.06</td>
</tr>
<tr>
<td class="org-right">40.0</td>
<td class="org-right">-10.0</td>
<td class="org-right">10.0</td>
<td class="org-right">0.08</td>
<td class="org-right">0.1</td>
<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>
</tr>
<tr>
<td class="org-right">10000000.0</td>
<td class="org-right">4000.0</td>
<td class="org-right">6000.0</td>
<td class="org-right">-20.0</td>
<td class="org-right">30000.0</td>
<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>
</tr>
<tr>
<td class="org-right">10000.0</td>
<td class="org-right">2000000.0</td>
<td class="org-right">900.0</td>
<td class="org-right">-9000.0</td>
<td class="org-right">20.0</td>
<td class="org-right">9</td>
<td class="org-right">10000.0</td>
<td class="org-right">30000000.0</td>
<td class="org-right">-500.0</td>
<td class="org-right">200000.0</td>
</tr>
<tr>
<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>
<td class="org-right">-10.0</td>
<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>
<td class="org-right">-30.0</td>
<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>
<td class="org-right">1000.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 7:</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.01</td>
<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>
<td class="org-right">-0.0005</td>
<td class="org-right">-7e-07</td>
<td class="org-right">6e-07</td>
<td class="org-right">-3e-09</td>
</tr>
<tr>
<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>
</tr>
<tr>
<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>
<td class="org-right">3e-08</td>
<td class="org-right">6e-05</td>
<td class="org-right">1e-10</td>
</tr>
<tr>
<td class="org-right">6e-09</td>
<td class="org-right">-2e-05</td>
<td class="org-right">5e-10</td>
<td class="org-right">3e-07</td>
<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>
<td class="org-right">3e-09</td>
</tr>
<tr>
<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>
</tr>
<tr>
<td class="org-right">-5e-09</td>
<td class="org-right">2e-09</td>
<td class="org-right">-1e-09</td>
<td class="org-right">-3e-12</td>
<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>
</tr>
<tr>
<td class="org-right">-0.0005</td>
<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>
<td class="org-right">0.01</td>
<td class="org-right">1e-07</td>
<td class="org-right">-3e-07</td>
<td class="org-right">-2e-08</td>
</tr>
<tr>
<td class="org-right">-7e-07</td>
<td class="org-right">-0.0002</td>
<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>
<td class="org-right">1e-07</td>
<td class="org-right">0.01</td>
<td class="org-right">-4e-07</td>
<td class="org-right">2e-05</td>
</tr>
<tr>
<td class="org-right">6e-07</td>
<td class="org-right">1e-08</td>
<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>
<td class="org-right">3e-09</td>
<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>
<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>
<div id="outline-container-org7932f3c" class="outline-3">
<h3 id="org7932f3c"><span class="section-number-3">2.3</span> Piezoelectric parameters</h3>
<div class="outline-text-3" id="text-2-3">
<p>
Parameters for the APA300ML:
</p>
<div class="org-src-container">
<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>
</pre>
</div>
<div class="org-src-container">
<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>
</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">
<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>
</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">
<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>
</pre>
</div>
<pre class="example">
11.719
</pre>
</div>
</div>
<div id="outline-container-org18316cd" class="outline-3">
<h3 id="org18316cd"><span class="section-number-3">2.4</span> Identification of the APA Characteristics</h3>
<div class="outline-text-3" id="text-2-4">
</div>
<div id="outline-container-orgc0281f1" class="outline-4">
<h4 id="orgc0281f1"><span class="section-number-4">2.4.1</span> Stiffness</h4>
<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">
<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>
</pre>
</div>
<pre class="example">
1.753
</pre>
<p>
The specified stiffness in the datasheet is \(k = 1.8\, [N/\mu m]\).
</p>
</div>
</div>
<div id="outline-container-orgcebe0f9" class="outline-4">
<h4 id="orgcebe0f9"><span class="section-number-4">2.4.2</span> Resonance Frequency</h4>
<div class="outline-text-4" id="text-2-4-2">
<p>
The resonance frequency is specified to be between 650Hz and 840Hz.
This is also the case for the FEM model (Figure <a href="#orgbb4a26e">8</a>).
</p>
<div id="orgbb4a26e" class="figure">
<p><img src="figs/apa300ml_resonance.png" alt="apa300ml_resonance.png" />
</p>
<p><span class="figure-number">Figure 8: </span>First resonance is around 800Hz</p>
</div>
</div>
</div>
<div id="outline-container-orgda4f233" class="outline-4">
<h4 id="orgda4f233"><span class="section-number-4">2.4.3</span> Amplification factor</h4>
<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">
<pre class="src src-matlab">abs(dcgain(G(1,1))<span class="org-type">./</span>dcgain(G(2,1)))
</pre>
</div>
<pre class="example">
5.0749
</pre>
<p>
If we take the ratio of the piezo height and length (approximation of the amplification factor):
</p>
<div class="org-src-container">
<pre class="src src-matlab">75<span class="org-type">/</span>15
</pre>
</div>
<pre class="example">
5
</pre>
</div>
</div>
<div id="outline-container-org59829b6" class="outline-4">
<h4 id="org59829b6"><span class="section-number-4">2.4.4</span> Stroke</h4>
<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">
<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
</pre>
</div>
<pre class="example">
300
</pre>
<p>
This is exactly the specified stroke in the data-sheet.
</p>
</div>
</div>
</div>
<div id="outline-container-org1cbc8a6" class="outline-3">
<h3 id="org1cbc8a6"><span class="section-number-3">2.5</span> Identification of the Dynamics</h3>
<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>
<div id="orgb07566c" class="figure">
<p><img src="figs/apa300ml_plant_dynamics.png" alt="apa300ml_plant_dynamics.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Transfer function from forces applied by the stack to the axial displacement of the APA</p>
</div>
</div>
</div>
<div id="outline-container-org44a32d5" class="outline-3">
<h3 id="org44a32d5"><span class="section-number-3">2.6</span> IFF</h3>
<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>
The transfer function from actuator to sensors is identified and shown in Figure <a href="#org0cb4e3c">10</a>.
</p>
<div id="org0cb4e3c" class="figure">
<p><img src="figs/apa300ml_iff_plant.png" alt="apa300ml_iff_plant.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Transfer function from actuator to force sensor</p>
</div>
<p>
For root locus corresponding to IFF is shown in Figure <a href="#org57c3b0d">11</a>.
</p>
<div id="org57c3b0d" class="figure">
<p><img src="figs/apa300ml_iff_root_locus.png" alt="apa300ml_iff_root_locus.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Root Locus for IFF</p>
</div>
</div>
</div>
<div id="outline-container-org3e558c6" class="outline-3">
<h3 id="org3e558c6"><span class="section-number-3">2.7</span> DVF</h3>
<div class="outline-text-3" id="text-2-7">
<p>
Now the dynamics from the stack actuator to the relative motion sensor is identified and shown in Figure <a href="#org828d315">12</a>.
</p>
<div id="org828d315" class="figure">
<p><img src="figs/apa300ml_dvf_plant.png" alt="apa300ml_dvf_plant.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Transfer function from stack actuator to relative motion sensor</p>
</div>
<p>
The root locus for DVF is shown in Figure <a href="#orgf2f0551">13</a>.
</p>
<div id="orgf2f0551" class="figure">
<p><img src="figs/apa300ml_dvf_root_locus.png" alt="apa300ml_dvf_root_locus.png" />
</p>
<p><span class="figure-number">Figure 13: </span>Root Locus for Direct Velocity Feedback</p>
</div>
</div>
</div>
<div id="outline-container-orgad3fdd9" class="outline-3">
<h3 id="orgad3fdd9"><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>
The model represents the Amplified Piezo Actuator (APA) from Cedrat-Technologies (Figure <a href="#org73ab5e6">5</a>).
The parameters are shown in the table below.
</p>
<div id="org2d53ab0" class="figure">
<p><img src="./figs/souleille18_model_piezo.png" alt="souleille18_model_piezo.png" />
</p>
<p><span class="figure-number">Figure 14: </span>Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator</p>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<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">
<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">
<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">
<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">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">
<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="org6c57210" class="figure">
<p><img src="figs/apa300ml_comp_simpler_model.png" alt="apa300ml_comp_simpler_model.png" />
</p>
<p><span class="figure-number">Figure 15: </span>Comparison of the Dynamics between the FEM model and the simplified one</p>
</div>
<p>
We now compare the FEM model with the simplified simscape model.
</p>
<div id="orgdec5f8c" class="figure">
<p><img src="figs/apa300ml_comp_simpler_simscape.png" alt="apa300ml_comp_simpler_simscape.png" />
</p>
<p><span class="figure-number">Figure 16: </span>Comparison of the Dynamics between the FEM model and the simplified simscape model</p>
</div>
<p>
We save the parameters of the simplified model for the APA300ML:
</p>
<div class="org-src-container">
<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>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orge0b9f5a" class="outline-3">
<h3 id="orge0b9f5a"><span class="section-number-3">2.9</span> Identification of the stiffness properties</h3>
<div class="outline-text-3" id="text-2-9">
</div>
<div id="outline-container-org52ddecb" class="outline-4">
<h4 id="org52ddecb"><span class="section-number-4">2.9.1</span> APA Alone</h4>
<div class="outline-text-4" id="text-2-9-1">
<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>Caracteristics</b></th>
<th scope="col" class="org-right"><b>Value</b></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">Kx [N/um]</td>
<td class="org-right">0.8</td>
</tr>
<tr>
<td class="org-left">Ky [N/um]</td>
<td class="org-right">1.6</td>
</tr>
<tr>
<td class="org-left">Kz [N/um]</td>
<td class="org-right">1.8</td>
</tr>
<tr>
<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>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org02b6855" class="outline-4">
<h4 id="org02b6855"><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>
<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">Kx [N/um]</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-left">Ky [N/um]</td>
<td class="org-right">0.0</td>
</tr>
<tr>
<td class="org-left">Kz [N/um]</td>
<td class="org-right">1.8</td>
</tr>
<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-org34de703" class="outline-3">
<h3 id="org34de703"><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-orgb6c0ee0" class="outline-2">
<h2 id="orgb6c0ee0"><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="#orgdff9d67">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="orgdff9d67" 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-orgd7b1d5f" class="outline-3">
<h3 id="orgd7b1d5f"><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-org9778a32" class="outline-3">
<h3 id="org9778a32"><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" />
<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">
<caption class="t-above"><span class="table-number">Table 11:</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.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>
<div id="outline-container-orgcb9bad1" class="outline-3">
<h3 id="orgcb9bad1"><span class="section-number-3">3.3</span> Flexible Joint Characteristics</h3>
<div class="outline-text-3" id="text-3-3">
<p>
The most important parameters of the flexible joint can be directly estimated from the stiffness matrix.
</p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<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>
<tr>
<td class="org-left">Shear Stiffness [N/um]</td>
<td class="org-right">11</td>
<td class="org-right">0</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">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>
<div id="outline-container-org4dadc02" class="outline-3">
<h3 id="org4dadc02"><span class="section-number-3">3.4</span> Identification of the parameters using Simscape</h3>
<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.
</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">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>
<td class="org-right">34</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness Ry [Nm/rad]</td>
<td class="org-right">33</td>
<td class="org-right">126</td>
</tr>
<tr>
<td class="org-left">Torsion Stiffness Rz [Nm/rad]</td>
<td class="org-right">236</td>
<td class="org-right">238</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-org30336a6" class="outline-3">
<h3 id="org30336a6"><span class="section-number-3">3.5</span> Simpler Model</h3>
<div class="outline-text-3" id="text-3-5">
<p>
Let&rsquo;s now model the flexible joint with a &ldquo;perfect&rdquo; Bushing joint as shown in Figure <a href="#org9c5b090">18</a>.
</p>
<div id="org9c5b090" class="figure">
<p><img src="figs/flexible_joint_simscape.png" alt="flexible_joint_simscape.png" />
</p>
<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">
<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="org6baee4c" 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 19: </span>Comparison of the Joint compliance between the FEM model and the simpler model</p>
</div>
</div>
</div>
</div>
<div id="outline-container-orgd9d5aff" class="outline-2">
<h2 id="orgd9d5aff"><span class="section-number-2">4</span> Optimal Flexible Joint</h2>
<div class="outline-text-2" id="text-4">
<div id="org47739fa" class="figure">
<p><img src="data/flexor_circ_025/CS.jpg" alt="CS.jpg" />
</p>
<p><span class="figure-number">Figure 20: </span>Flexor studied</p>
</div>
</div>
<div id="outline-container-org83c1679" class="outline-3">
<h3 id="org83c1679"><span class="section-number-3">4.1</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-4-1">
<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/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>);
</pre>
</div>
</div>
</div>
<div id="outline-container-orgbee4a84" class="outline-3">
<h3 id="orgbee4a84"><span class="section-number-3">4.2</span> Output parameters</h3>
<div class="outline-text-3" id="text-4-2">
<div class="org-src-container">
<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>);
</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 12:</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">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-org7609951" class="outline-3">
<h3 id="org7609951"><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-org8bf4f56" class="outline-3">
<h3 id="org8bf4f56"><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-orgd8cb8ff" class="outline-3">
<h3 id="orgd8cb8ff"><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="#org9c5b090">18</a>.
</p>
<div id="orgc5e5982" 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="org2936555" 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-org7f2d76d" class="outline-2">
<h2 id="org7f2d76d"><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-orgd9dc7be" class="outline-3">
<h3 id="orgd9dc7be"><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-org3671fca" class="outline-3">
<h3 id="org3671fca"><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="#org294cdfb">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="org294cdfb" 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-org1cbfb66" class="outline-3">
<h3 id="org1cbfb66"><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="#orgbcc66e9">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="orgbcc66e9" 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-org7b29313" class="outline-3">
<h3 id="org7b29313"><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="org9317d23" 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="org7f216a9" 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>
</div>
</div>
</div>
<div id="outline-container-org1272d3f" class="outline-2">
<h2 id="org1272d3f"><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-orgddf8d43" class="outline-3">
<h3 id="orgddf8d43"><span class="section-number-3">6.1</span> Introduction</h3>
<div class="outline-text-3" id="text-6-1">
<div id="org1af2e05" 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-org4742c38" class="outline-3">
<h3 id="org4742c38"><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-org332b172" class="outline-3">
<h3 id="org332b172"><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>
<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>
<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>
<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>
<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">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>
</div>
</div>
<div id="outline-container-orgadca4a4" class="outline-3">
<h3 id="orgadca4a4"><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>
<div class="org-src-container">
<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>
</pre>
</div>
<div class="org-src-container">
<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>
</pre>
</div>
</div>
</div>
<div id="outline-container-org226d3f3" class="outline-3">
<h3 id="org226d3f3"><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.
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
</div>
</div>
</div>
<p>
</p>
<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>
<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>
</div>
</div>
<div id="postamble" class="status">
<p class="author">Author: Dehaeze Thomas</p>
<p class="date">Created: 2020-11-12 jeu. 10:34</p>
</div>
</body>
</html>