phd-nass-fem/index.html

2823 lines
79 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. 18:48 -->
<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="#org18d2db8">1. APA300ML</a>
<ul>
<li><a href="#org5c45df4">1.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#orga9811cf">1.2. Piezoelectric parameters</a></li>
<li><a href="#orgf60bf13">1.3. Simscape Model</a></li>
<li><a href="#org7589ca6">1.4. Identification of the APA Characteristics</a>
<ul>
<li><a href="#org839ecc0">1.4.1. Stiffness</a></li>
<li><a href="#org9b9cedd">1.4.2. Resonance Frequency</a></li>
<li><a href="#org87cbe72">1.4.3. Amplification factor</a></li>
<li><a href="#org0071048">1.4.4. Stroke</a></li>
</ul>
</li>
<li><a href="#org4fdb600">1.5. Identification of the Dynamics from actuator to replace displacement</a></li>
<li><a href="#orga2f4fd6">1.6. Identification of the Dynamics from actuator to force sensor</a></li>
<li><a href="#org8ece2ce">1.7. Identification for a simpler model</a></li>
<li><a href="#org43ae9e5">1.8. Integral Force Feedback</a></li>
</ul>
</li>
<li><a href="#orgc203c93">2. First Flexible Joint Geometry</a>
<ul>
<li><a href="#orga48c65c">2.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org5de18c6">2.2. Identification of the parameters using Simscape and looking at the Stiffness Matrix</a></li>
<li><a href="#orgb2d0259">2.3. Simpler Model</a></li>
</ul>
</li>
<li><a href="#org4dadb53">3. Optimized Flexible Joint</a>
<ul>
<li><a href="#orgb1d1e31">3.1. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#orgc7107db">3.2. Identification of the parameters using Simscape</a></li>
<li><a href="#org96d2775">3.3. Simpler Model</a></li>
<li><a href="#org2916e5d">3.4. Comparison with a stiffer Flexible Joint</a></li>
</ul>
</li>
<li><a href="#org79ad15f">4. Complete Strut with Encoder</a>
<ul>
<li><a href="#org26e8494">4.1. Introduction</a></li>
<li><a href="#orgd702a5f">4.2. Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</a></li>
<li><a href="#org42c2461">4.3. Piezoelectric parameters</a></li>
<li><a href="#orga5ba630">4.4. Identification of the Dynamics</a></li>
</ul>
</li>
</ul>
</div>
</div>
<p>
In this document, Finite Element Models (FEM) of parts of the Nano-Hexapod are developed and integrated into Simscape for dynamical analysis.
</p>
<ul class="org-ul">
<li>Section <a href="#org6804357">1</a>:
A super-element of the Amplified Piezoelectric Actuator APA300ML used for the NASS is exported using Ansys and imported in Simscape.
The static and dynamical properties of the APA300ML are then estimated using the Simscape model.</li>
<li>Section <a href="#orgb1abf80">2</a>:
A first geometry of a Flexible joint is modelled and its characteristics are identified from the Stiffness matrix as well as from the Simscape model.</li>
<li>Section <a href="#org146537a">3</a>:
An optimized flexible joint is developed for the Nano-Hexapod and is then imported in a Simscape model.</li>
<li>Section <a href="#orgc4b9146">4</a>:
A super element of a complete strut is exported.</li>
</ul>
<div id="outline-container-org18d2db8" class="outline-2">
<h2 id="org18d2db8"><span class="section-number-2">1</span> APA300ML</h2>
<div class="outline-text-2" id="text-1">
<p>
<a id="org6804357"></a>
</p>
<p>
In this section, the Amplified Piezoelectric Actuator APA300ML (<a href="doc/APA300ML.pdf">doc</a>) is modeled using a Finite Element Software.
Then a <i>super element</i> is exported and imported in Simscape where its dynamic is studied.
</p>
<p>
A 3D view of the Amplified Piezoelectric Actuator (APA300ML) is shown in Figure <a href="#org7a29cfe">1</a>.
The remote point used are also shown in this figure.
</p>
<div id="org7a29cfe" class="figure">
<p><img src="figs/apa300ml_ansys.jpg" alt="apa300ml_ansys.jpg" />
</p>
<p><span class="figure-number">Figure 1: </span>Ansys FEM of the APA300ML</p>
</div>
</div>
<div id="outline-container-org5c45df4" class="outline-3">
<h3 id="org5c45df4"><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 = readmatrix(<span class="org-string">'APA300ML_mat_K.CSV'</span>);
M = readmatrix(<span class="org-string">'APA300ML_mat_M.CSV'</span>);
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</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 2:</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>
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">'APA300ML_out_nodes_3D.txt'</span>);
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 3:</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 4:</span> Some extracted parameters of the FEM</caption>
<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>
<p>
Using <code>K</code>, <code>M</code> and <code>int_xyz</code>, we can now use the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
</div>
</div>
<div id="outline-container-orga9811cf" class="outline-3">
<h3 id="orga9811cf"><span class="section-number-3">1.2</span> Piezoelectric parameters</h3>
<div class="outline-text-3" id="text-1-2">
<p>
In order to make the conversion from applied voltage to generated force or from the strain to the generated voltage, we need to defined some parameters corresponding to the piezoelectric material:
</p>
<div class="org-src-container">
<pre class="src src-matlab">d33 = 300e<span class="org-type">-</span>12; <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 = 1e<span class="org-type">-</span>11; <span class="org-comment">% 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>
<p>
The ratio of the developed force to applied voltage is:
</p>
\begin{equation}
\label{org0bf4f86}
F_a = g_a V_a, \quad g_a = d_{33} n k_a
\end{equation}
<p>
where:
</p>
<ul class="org-ul">
<li>\(F_a\): developed force in [N]</li>
<li>\(n\): number of layers of the actuator stack</li>
<li>\(d_{33}\): strain constant in [m/V]</li>
<li>\(k_a\): actuator stack stiffness in [N/m]</li>
<li>\(V_a\): applied voltage in [V]</li>
</ul>
<p>
If we take the numerical values, we obtain:
</p>
<div class="org-src-container">
<pre class="src src-matlab">d33<span class="org-type">*</span>n<span class="org-type">*</span>ka <span class="org-comment">% [N/V]</span>
</pre>
</div>
<pre class="example">
5.64
</pre>
<p>
From (<a href="#citeproc_bib_item_1">Fleming and Leang 2014</a>) (page 123), the relation between relative displacement of the sensor stack and generated voltage is:
</p>
\begin{equation}
\label{org0478126}
V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h
\end{equation}
<p>
where:
</p>
<ul class="org-ul">
<li>\(V_s\): measured voltage in [V]</li>
<li>\(d_{33}\): strain constant in [m/V]</li>
<li>\(\epsilon^T\): permittivity under constant stress in [F/m]</li>
<li>\(s^D\): elastic compliance under constant electric displacement in [m^2/N]</li>
<li>\(n\): number of layers of the sensor stack</li>
<li>\(\Delta h\): relative displacement in [m]</li>
</ul>
<p>
If we take the numerical values, we obtain:
</p>
<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>n) <span class="org-comment">% [V/um]</span>
</pre>
</div>
<pre class="example">
23.438
</pre>
</div>
</div>
<div id="outline-container-orgf60bf13" class="outline-3">
<h3 id="orgf60bf13"><span class="section-number-3">1.3</span> Simscape Model</h3>
<div class="outline-text-3" id="text-1-3">
<p>
The flexible element is imported using the <code>Reduced Order Flexible Solid</code> simscape block.
</p>
<p>
Let&rsquo;s say we use two stacks as a force sensor and one stack as an actuator:
</p>
<ul class="org-ul">
<li>A <code>Relative Motion Sensor</code> block is added between the nodes A and C</li>
<li>An <code>Internal Force</code> block is added between the remote points E and B</li>
</ul>
<p>
The interface nodes are shown in Figure <a href="#org7a29cfe">1</a>.
</p>
<p>
One mass is fixed at one end of the piezo-electric stack actuator (remove point F), the other end is fixed to the world frame (remote point G).
</p>
</div>
</div>
<div id="outline-container-org7589ca6" class="outline-3">
<h3 id="org7589ca6"><span class="section-number-3">1.4</span> Identification of the APA Characteristics</h3>
<div class="outline-text-3" id="text-1-4">
</div>
<div id="outline-container-org839ecc0" class="outline-4">
<h4 id="org839ecc0"><span class="section-number-4">1.4.1</span> Stiffness</h4>
<div class="outline-text-4" id="text-1-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-org9b9cedd" class="outline-4">
<h4 id="org9b9cedd"><span class="section-number-4">1.4.2</span> Resonance Frequency</h4>
<div class="outline-text-4" id="text-1-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="#org2662235">2</a>).
</p>
<div id="org2662235" class="figure">
<p><img src="figs/apa300ml_resonance.png" alt="apa300ml_resonance.png" />
</p>
<p><span class="figure-number">Figure 2: </span>First resonance is around 800Hz</p>
</div>
</div>
</div>
<div id="outline-container-org87cbe72" class="outline-4">
<h4 id="org87cbe72"><span class="section-number-4">1.4.3</span> Amplification factor</h4>
<div class="outline-text-4" id="text-1-4-3">
<p>
The amplification factor is the ratio of the vertical 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>
This is actually correct and approximately corresponds to the ratio of the piezo height and length:
</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-org0071048" class="outline-4">
<h4 id="org0071048"><span class="section-number-4">1.4.4</span> Stroke</h4>
<div class="outline-text-4" id="text-1-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-org4fdb600" class="outline-3">
<h3 id="org4fdb600"><span class="section-number-3">1.5</span> Identification of the Dynamics from actuator to replace displacement</h3>
<div class="outline-text-3" id="text-1-5">
<p>
We first set the mass to be approximately 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="orgb9beb05" class="figure">
<p><img src="figs/apa300ml_plant_dynamics.png" alt="apa300ml_plant_dynamics.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Transfer function from forces applied by the stack to the axial displacement of the APA</p>
</div>
<p>
The root locus corresponding to Direct Velocity Feedback with a mass of 10kg is shown in Figure <a href="#orgcdc7a42">4</a>.
</p>
<div id="orgcdc7a42" class="figure">
<p><img src="figs/apa300ml_dvf_root_locus.png" alt="apa300ml_dvf_root_locus.png" />
</p>
<p><span class="figure-number">Figure 4: </span>Root Locus for Direct Velocity Feedback</p>
</div>
</div>
</div>
<div id="outline-container-orga2f4fd6" class="outline-3">
<h3 id="orga2f4fd6"><span class="section-number-3">1.6</span> Identification of the Dynamics from actuator to force sensor</h3>
<div class="outline-text-3" id="text-1-6">
<p>
Let&rsquo;s use 2 stacks as a force sensor and 1 stack as force actuator.
</p>
<p>
The transfer function from actuator voltage to sensor voltage is identified and shown in Figure <a href="#org838a459">5</a>.
</p>
<div id="org838a459" class="figure">
<p><img src="figs/apa300ml_iff_plant.png" alt="apa300ml_iff_plant.png" />
</p>
<p><span class="figure-number">Figure 5: </span>Transfer function from actuator to force sensor</p>
</div>
<p>
For root locus corresponding to IFF is shown in Figure <a href="#org6a92e46">6</a>.
</p>
<div id="org6a92e46" class="figure">
<p><img src="figs/apa300ml_iff_root_locus.png" alt="apa300ml_iff_root_locus.png" />
</p>
<p><span class="figure-number">Figure 6: </span>Root Locus for IFF</p>
</div>
</div>
</div>
<div id="outline-container-org8ece2ce" class="outline-3">
<h3 id="org8ece2ce"><span class="section-number-3">1.7</span> Identification for a simpler model</h3>
<div class="outline-text-3" id="text-1-7">
<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="#org6551a86">7</a>).
The parameters are shown in the table below.
</p>
<div id="org6551a86" class="figure">
<p><img src="./figs/souleille18_model_piezo.png" alt="souleille18_model_piezo.png" />
</p>
<p><span class="figure-number">Figure 7: </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 5:</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>
The analytical model of the simpler system is defined below:
</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>
And the DC gain is adjusted 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>
<p>
The dynamics of the FEM model and the simpler model are compared in Figure <a href="#orgbd0f182">8</a>.
</p>
<div id="orgbd0f182" class="figure">
<p><img src="figs/apa300ml_comp_simpler_model.png" alt="apa300ml_comp_simpler_model.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Comparison of the Dynamics between the FEM model and the simplified one</p>
</div>
<p>
The simplified model has also been implemented in Simscape.
</p>
<p>
The dynamics of the Simscape simplified model is identified and compared with the FEM one in Figure <a href="#orgc032d03">9</a>.
</p>
<div id="orgc032d03" class="figure">
<p><img src="figs/apa300ml_comp_simpler_simscape.png" alt="apa300ml_comp_simpler_simscape.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Comparison of the Dynamics between the FEM model and the simplified simscape model</p>
</div>
</div>
</div>
<div id="outline-container-org43ae9e5" class="outline-3">
<h3 id="org43ae9e5"><span class="section-number-3">1.8</span> Integral Force Feedback</h3>
<div class="outline-text-3" id="text-1-8">
<p>
In this section, Integral Force Feedback control architecture is applied on the APA300ML.
</p>
<p>
First, the plant (dynamics from voltage actuator to voltage sensor is identified).
The payload mass is set to 10kg.
</p>
<div class="org-src-container">
<pre class="src src-matlab">m = 10;
</pre>
</div>
<p>
The obtained dynamics is shown in Figure <a href="#orga6e0dfc">10</a>.
</p>
<div id="orga6e0dfc" class="figure">
<p><img src="figs/piezo_amplified_iff_plant.png" alt="piezo_amplified_iff_plant.png" />
</p>
<p><span class="figure-number">Figure 10: </span>IFF Plant</p>
</div>
<p>
The controller is defined below and the loop gain is shown in Figure <a href="#orgeb0376d">11</a>.
</p>
<div class="org-src-container">
<pre class="src src-matlab">Kiff = <span class="org-type">-</span>1e3<span class="org-type">/</span>s;
</pre>
</div>
<div id="orgeb0376d" 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 11: </span>IFF Loop Gain</p>
</div>
<p>
Now the closed-loop system is identified again and compare with the open loop system in Figure <a href="#org51f452b">12</a>.
</p>
<p>
It is the expected behavior as shown in the Figure <a href="#orged35295">13</a> (from (<a href="#citeproc_bib_item_2">Souleille et al. 2018</a>)).
</p>
<div id="org51f452b" class="figure">
<p><img src="figs/piezo_amplified_iff_comp.png" alt="piezo_amplified_iff_comp.png" />
</p>
<p><span class="figure-number">Figure 12: </span>OL and CL transfer functions</p>
</div>
<div id="orged35295" class="figure">
<p><img src="figs/souleille18_results.png" alt="souleille18_results.png" />
</p>
<p><span class="figure-number">Figure 13: </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-orgc203c93" class="outline-2">
<h2 id="orgc203c93"><span class="section-number-2">2</span> First Flexible Joint Geometry</h2>
<div class="outline-text-2" id="text-2">
<p>
<a id="orgb1abf80"></a>
</p>
<p>
The studied flexor is shown in Figure <a href="#orgd3ad3b1">14</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="orgd3ad3b1" class="figure">
<p><img src="figs/flexor_id16_screenshot.png" alt="flexor_id16_screenshot.png" />
</p>
<p><span class="figure-number">Figure 14: </span>Flexor studied</p>
</div>
</div>
<div id="outline-container-orga48c65c" class="outline-3">
<h3 id="orga48c65c"><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 = 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>
<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">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 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.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>
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>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 8:</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">
<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>
<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-org5de18c6" class="outline-3">
<h3 id="org5de18c6"><span class="section-number-3">2.2</span> Identification of the parameters using Simscape and looking at the Stiffness Matrix</h3>
<div class="outline-text-3" id="text-2-2">
<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">33</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness Ry [Nm/rad]</td>
<td class="org-right">33</td>
<td class="org-right">33</td>
</tr>
<tr>
<td class="org-left">Torsion Stiffness Rz [Nm/rad]</td>
<td class="org-right">236</td>
<td class="org-right">236</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="outline-container-orgb2d0259" class="outline-3">
<h3 id="orgb2d0259"><span class="section-number-3">2.3</span> Simpler Model</h3>
<div class="outline-text-3" id="text-2-3">
<p>
Let&rsquo;s now model the flexible joint with a &ldquo;perfect&rdquo; Bushing joint as shown in Figure <a href="#org8f309d8">15</a>.
</p>
<div id="org8f309d8" class="figure">
<p><img src="figs/flexible_joint_simscape.png" alt="flexible_joint_simscape.png" />
</p>
<p><span class="figure-number">Figure 15: </span>Bushing Joint used to model the flexible joint</p>
</div>
<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="orge65cd1b" class="figure">
<p><img src="figs/flexor_ID16_compare_bushing_joint.png" alt="flexor_ID16_compare_bushing_joint.png" />
</p>
<p><span class="figure-number">Figure 16: </span>Comparison of the Joint compliance between the FEM model and the simpler model</p>
</div>
</div>
</div>
</div>
<div id="outline-container-org4dadb53" class="outline-2">
<h2 id="org4dadb53"><span class="section-number-2">3</span> Optimized Flexible Joint</h2>
<div class="outline-text-2" id="text-3">
<p>
<a id="org146537a"></a>
</p>
<p>
The joint geometry has been optimized using Ansys to have lower bending stiffness while keeping a large axial stiffness.
</p>
<p>
The obtained geometry is shown in Figure <a href="#org89612a5">17</a>.
</p>
<div id="org89612a5" class="figure">
<p><img src="figs/flexor_025_MDoF.jpg" alt="flexor_025_MDoF.jpg" />
</p>
<p><span class="figure-number">Figure 17: </span>Flexor studied</p>
</div>
</div>
<div id="outline-container-orgb1d1e31" class="outline-3">
<h3 id="orgb1d1e31"><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 = readmatrix(<span class="org-string">'flex025_mat_K.CSV'</span>);
M = readmatrix(<span class="org-string">'flex025_mat_M.CSV'</span>);
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 9:</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 10:</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>
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">'flex025_out_nodes_3D.txt'</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 11:</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>
<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-orgc7107db" class="outline-3">
<h3 id="orgc7107db"><span class="section-number-3">3.2</span> Identification of the parameters using Simscape</h3>
<div class="outline-text-3" id="text-3-2">
<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-org96d2775" class="outline-3">
<h3 id="org96d2775"><span class="section-number-3">3.3</span> Simpler Model</h3>
<div class="outline-text-3" id="text-3-3">
<p>
Let&rsquo;s now model the flexible joint with a &ldquo;perfect&rdquo; Bushing joint as shown in Figure <a href="#org8f309d8">15</a>.
</p>
<div id="org9fc5457" 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="org3f0ca2d" 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 id="outline-container-org2916e5d" class="outline-3">
<h3 id="org2916e5d"><span class="section-number-3">3.4</span> Comparison with a stiffer Flexible Joint</h3>
<div class="outline-text-3" id="text-3-4">
<p>
The stiffness matrix with the flexible joint with a &ldquo;hinge&rdquo; size of 0.50mm is loaded.
</p>
<div class="org-src-container">
<pre class="src src-matlab">K_050 = readmatrix(<span class="org-string">'flex050_mat_K.CSV'</span>);
</pre>
</div>
<p>
Its parameters are compared with the Flexible Joint with a size of 0.25mm in the table below.
</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>0.25 mm</b></th>
<th scope="col" class="org-right"><b>0.50 mm</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">124.7</td>
</tr>
<tr>
<td class="org-left">Shear Stiffness [N/um]</td>
<td class="org-right">12.7</td>
<td class="org-right">25.8</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness Rx [Nm/rad]</td>
<td class="org-right">4.8</td>
<td class="org-right">26.0</td>
</tr>
<tr>
<td class="org-left">Bending Stiffness Ry [Nm/rad]</td>
<td class="org-right">4.8</td>
<td class="org-right">26.0</td>
</tr>
<tr>
<td class="org-left">Torsion Stiffness Rz [Nm/rad]</td>
<td class="org-right">260.2</td>
<td class="org-right">538.0</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="outline-container-org79ad15f" class="outline-2">
<h2 id="org79ad15f"><span class="section-number-2">4</span> Complete Strut with Encoder</h2>
<div class="outline-text-2" id="text-4">
<p>
<a id="orgc4b9146"></a>
</p>
</div>
<div id="outline-container-org26e8494" class="outline-3">
<h3 id="org26e8494"><span class="section-number-3">4.1</span> Introduction</h3>
<div class="outline-text-3" id="text-4-1">
<p>
Now, the full nano-hexapod strut is modelled using Ansys.
</p>
<p>
The 3D as well as the interface nodes are shown in Figure <a href="#org8a816bb">20</a>.
</p>
<div id="org8a816bb" class="figure">
<p><img src="figs/strut_encoder_nodes.jpg" alt="strut_encoder_nodes.jpg" />
</p>
<p><span class="figure-number">Figure 20: </span>Interface points</p>
</div>
<p>
A side view is shown in Figure <a href="#org4c74f6e">21</a>.
</p>
<div id="org4c74f6e" class="figure">
<p><img src="figs/strut_encoder_nodes_side.jpg" alt="strut_encoder_nodes_side.jpg" />
</p>
<p><span class="figure-number">Figure 21: </span>Interface points - Side view</p>
</div>
<p>
The flexible joints used have a 0.25mm width size.
</p>
</div>
</div>
<div id="outline-container-orgd702a5f" class="outline-3">
<h3 id="orgd702a5f"><span class="section-number-3">4.2</span> Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates</h3>
<div class="outline-text-3" id="text-4-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">'strut_encoder_mat_K.CSV'</span>);
M = readmatrix(<span class="org-string">'strut_encoder_mat_M.CSV'</span>);
</pre>
</div>
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 12:</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 13:</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>
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">'strut_encoder_out_nodes_3D.txt'</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 14:</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>
<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-org42c2461" class="outline-3">
<h3 id="org42c2461"><span class="section-number-3">4.3</span> Piezoelectric parameters</h3>
<div class="outline-text-3" id="text-4-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>
</div>
</div>
<div id="outline-container-orga5ba630" class="outline-3">
<h3 id="orga5ba630"><span class="section-number-3">4.4</span> Identification of the Dynamics</h3>
<div class="outline-text-3" id="text-4-4">
<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 id="org4ba34f1" class="figure">
<p><img src="figs/dynamics_encoder_full_strut.png" alt="dynamics_encoder_full_strut.png" />
</p>
<p><span class="figure-number">Figure 22: </span>Dynamics from the force actuator to the measured motion by the encoder</p>
</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. 18:48</p>
</div>
</body>
</html>