test-bench-apa300ml/test-bench-apa300ml.html

1618 lines
63 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>
<!-- 2021-05-06 jeu. 16:27 -->
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Amplifier Piezoelectric Actuator APA300ML - Test Bench</title>
<meta name="author" content="Dehaeze Thomas" />
<meta name="generator" content="Org Mode" />
<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 = {
svg: {
scale: 1,
fontCache: "global"
},
tex: {
tags: "ams",
multlineWidth: "%MULTLINEWIDTH",
tagSide: "right",
macros: {bm: ["\\boldsymbol{#1}",1],},
tagIndent: ".8em"
}
};
</script>
<script id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.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">Amplifier Piezoelectric Actuator APA300ML - Test Bench</h1>
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#org39e9394">1. Model of an Amplified Piezoelectric Actuator and Sensor</a></li>
<li><a href="#orgd854635">2. Geometrical Measurements</a>
<ul>
<li><a href="#org7c90751">2.1. Measurement Setup</a></li>
<li><a href="#org543575b">2.2. Measurement Results</a></li>
</ul>
</li>
<li><a href="#org8bccdd0">3. Electrical Measurements</a></li>
<li><a href="#org3a12599">4. Stiffness measurement</a>
<ul>
<li><a href="#org26adf52">4.1. APA test</a></li>
</ul>
</li>
<li><a href="#orgcc86112">5. Stroke measurement</a>
<ul>
<li><a href="#org4f0d338">5.1. Voltage applied on one stack</a></li>
<li><a href="#org28ae1e9">5.2. Voltage applied on two stacks</a></li>
<li><a href="#org056e837">5.3. Voltage applied on all three stacks</a></li>
</ul>
</li>
<li><a href="#org28983e7">6. Test-Bench Description</a></li>
<li><a href="#org65804dc">7. Measurement Procedure</a>
<ul>
<li><a href="#orge0e49ef">7.1. Stroke Measurement</a></li>
<li><a href="#org0584318">7.2. Stiffness Measurement</a></li>
<li><a href="#orgdd21f95">7.3. Hysteresis measurement</a></li>
<li><a href="#orgaf52b1d">7.4. Piezoelectric Actuator Constant</a></li>
<li><a href="#org7717963">7.5. Piezoelectric Sensor Constant</a></li>
<li><a href="#org856525a">7.6. Capacitance Measurement</a></li>
<li><a href="#orgb137c73">7.7. Dynamical Behavior</a></li>
<li><a href="#org4990fdd">7.8. Compare the results obtained for all 7 APA300ML</a></li>
</ul>
</li>
<li><a href="#org78965a0">8. Measurement Results</a></li>
<li><a href="#org3cfc1a3">9. Test Bench APA300ML - Simscape Model</a>
<ul>
<li><a href="#org6fbb1ad">9.1. Introduction</a></li>
<li><a href="#org6fa6a79">9.2. Nano Hexapod object</a>
<ul>
<li><a href="#org8759fb9">9.2.1. APA - 2 DoF</a></li>
<li><a href="#org648591e">9.2.2. APA - Flexible Frame</a></li>
<li><a href="#org03f2df7">9.2.3. APA - Fully Flexible</a></li>
</ul>
</li>
<li><a href="#org4830246">9.3. Identification</a></li>
<li><a href="#org6344e4d">9.4. Compare 2-DoF with flexible</a>
<ul>
<li><a href="#org3e0021c">9.4.1. APA - 2 DoF</a></li>
<li><a href="#org9270e65">9.4.2. APA - Fully Flexible</a></li>
<li><a href="#orgb2c8b0c">9.4.3. Comparison</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#orgd76b4b9">10. Test Bench Struts - Simscape Model</a>
<ul>
<li><a href="#org6582e7c">10.1. Introduction</a></li>
<li><a href="#org7259b89">10.2. Nano Hexapod object</a>
<ul>
<li><a href="#org0ef8b83">10.2.1. Flexible Joint - Bot</a></li>
<li><a href="#org2c0867c">10.2.2. Flexible Joint - Top</a></li>
<li><a href="#org8d6e2b0">10.2.3. APA - 2 DoF</a></li>
<li><a href="#orgc1dfc5b">10.2.4. APA - Flexible Frame</a></li>
<li><a href="#orgfaee08a">10.2.5. APA - Fully Flexible</a></li>
</ul>
</li>
<li><a href="#org45f54ad">10.3. Identification</a></li>
<li><a href="#org0166133">10.4. Compare flexible joints</a>
<ul>
<li><a href="#org591f6cf">10.4.1. Perfect</a></li>
<li><a href="#org7597589">10.4.2. Top Flexible</a></li>
<li><a href="#org93bc353">10.4.3. Bottom Flexible</a></li>
<li><a href="#org2739150">10.4.4. Both Flexible</a></li>
<li><a href="#org2ab1313">10.4.5. Comparison</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#orgca93f0e">11. Resonance frequencies - APA300ML</a>
<ul>
<li><a href="#org5dd9672">11.1. Introduction</a></li>
<li><a href="#org45b6dca">11.2. Setup</a></li>
<li><a href="#orga12c8c9">11.3. Bending - X</a></li>
<li><a href="#org1bd4515">11.4. Bending - Y</a></li>
<li><a href="#orge02414d">11.5. Torsion - Z</a></li>
<li><a href="#org36ae965">11.6. Compare</a></li>
<li><a href="#org5c4275b">11.7. Conclusion</a></li>
</ul>
</li>
</ul>
</div>
</div>
<hr>
<p>This report is also available as a <a href="./test-bench-apa300ml.pdf">pdf</a>.</p>
<hr>
<p>
The goal of this test bench is to extract all the important parameters of the Amplified Piezoelectric Actuator APA300ML.
</p>
<p>
This include:
</p>
<ul class="org-ul">
<li>Stroke</li>
<li>Stiffness</li>
<li>Hysteresis</li>
<li>Gain from the applied voltage \(V_a\) to the generated Force \(F_a\)</li>
<li>Gain from the sensor stack strain \(\delta L\) to the generated voltage \(V_s\)</li>
<li>Dynamical behavior</li>
</ul>
<div id="org7c0c395" class="figure">
<p><img src="figs/apa300ML.png" alt="apa300ML.png" />
</p>
<p><span class="figure-number">Figure 1: </span>Picture of the APA300ML</p>
</div>
<div id="outline-container-org39e9394" class="outline-2">
<h2 id="org39e9394"><span class="section-number-2">1</span> Model of an Amplified Piezoelectric Actuator and Sensor</h2>
<div class="outline-text-2" id="text-1">
<p>
Consider a schematic of the Amplified Piezoelectric Actuator in Figure <a href="#org344ddfd">2</a>.
</p>
<div id="org344ddfd" class="figure">
<p><img src="figs/apa_model_schematic.png" alt="apa_model_schematic.png" />
</p>
<p><span class="figure-number">Figure 2: </span>Amplified Piezoelectric Actuator Schematic</p>
</div>
<p>
A voltage \(V_a\) applied to the actuator stacks will induce an actuator force \(F_a\):
</p>
\begin{equation}
F_a = g_a \cdot V_a
\end{equation}
<p>
A change of length \(dl\) of the sensor stack will induce a voltage \(V_s\):
</p>
\begin{equation}
V_s = g_s \cdot dl
\end{equation}
<p>
We wish here to experimental measure \(g_a\) and \(g_s\).
</p>
<p>
The block-diagram model of the piezoelectric actuator is then as shown in Figure <a href="#org702e93a">3</a>.
</p>
<div id="org702e93a" class="figure">
<p><img src="figs/apa-model-simscape-schematic.png" alt="apa-model-simscape-schematic.png" />
</p>
<p><span class="figure-number">Figure 3: </span>Model of the APA with Simscape/Simulink</p>
</div>
</div>
</div>
<div id="outline-container-orgd854635" class="outline-2">
<h2 id="orgd854635"><span class="section-number-2">2</span> Geometrical Measurements</h2>
<div class="outline-text-2" id="text-2">
<p>
The received APA are shown in Figure <a href="#org12fd03e">4</a>.
</p>
<div id="org12fd03e" class="figure">
<p><img src="figs/IMG_20210224_143500.jpg" alt="IMG_20210224_143500.jpg" />
</p>
<p><span class="figure-number">Figure 4: </span>Received APA</p>
</div>
</div>
<div id="outline-container-org7c90751" class="outline-3">
<h3 id="org7c90751"><span class="section-number-3">2.1</span> Measurement Setup</h3>
<div class="outline-text-3" id="text-2-1">
<p>
The flatness corresponding to the two interface planes are measured as shown in Figure <a href="#org020dedb">5</a>.
</p>
<div id="org020dedb" class="figure">
<p><img src="figs/IMG_20210224_143809.jpg" alt="IMG_20210224_143809.jpg" />
</p>
<p><span class="figure-number">Figure 5: </span>Measurement Setup</p>
</div>
</div>
</div>
<div id="outline-container-org543575b" class="outline-3">
<h3 id="org543575b"><span class="section-number-3">2.2</span> Measurement Results</h3>
<div class="outline-text-3" id="text-2-2">
<p>
The height (Z) measurements at the 8 locations (4 points by plane) are defined below.
</p>
<div class="org-src-container">
<pre class="src src-matlab">apa1 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, <span class="org-type">-</span>0.5 , 3.5 , 3.5 , 42 , 45.5, 52.5 , 46];
apa2 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, <span class="org-type">-</span>2.5 , <span class="org-type">-</span>3 , 0 , <span class="org-type">-</span>1.5 , 1 , <span class="org-type">-</span>2 , <span class="org-type">-</span>4];
apa3 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, <span class="org-type">-</span>1.5 , 15 , 17.5 , 6.5 , 6.5 , 21 , 23];
apa4 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, 6.5 , 14.5 , 9 , 16 , 22 , 29.5 , 21];
apa5 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, <span class="org-type">-</span>12.5, 16.5 , 28.5 , <span class="org-type">-</span>43 , <span class="org-type">-</span>52 , <span class="org-type">-</span>22.5, <span class="org-type">-</span>13.5];
apa6 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, <span class="org-type">-</span>8 , <span class="org-type">-</span>2 , 5 , <span class="org-type">-</span>57.5, <span class="org-type">-</span>62 , <span class="org-type">-</span>55.5, <span class="org-type">-</span>52.5];
apa7 = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, 19.5 , <span class="org-type">-</span>8 , <span class="org-type">-</span>29.5, 75 , 97.5, 70 , 48];
apa7b = 1e<span class="org-type">-</span>6<span class="org-type">*</span>[0, 9 , <span class="org-type">-</span>18.5, <span class="org-type">-</span>30 , 31 , 46.5, 16.5 , 7.5];
apa = {apa1, apa2, apa3, apa4, apa5, apa6, apa7b};
</pre>
</div>
<p>
The X/Y Positions of the 8 measurement points are defined below.
</p>
<div class="org-src-container">
<pre class="src src-matlab">W = 20e<span class="org-type">-</span>3; <span class="org-comment">% Width [m]</span>
L = 61e<span class="org-type">-</span>3; <span class="org-comment">% Length [m]</span>
d = 1e<span class="org-type">-</span>3; <span class="org-comment">% Distance from border [m]</span>
l = 15.5e<span class="org-type">-</span>3; <span class="org-comment">% [m]</span>
pos = [[<span class="org-type">-</span>L<span class="org-type">/</span>2 <span class="org-type">+</span> d; W<span class="org-type">/</span>2 <span class="org-type">-</span> d], [<span class="org-type">-</span>L<span class="org-type">/</span>2 <span class="org-type">+</span> l <span class="org-type">-</span> d; W<span class="org-type">/</span>2 <span class="org-type">-</span> d], [<span class="org-type">-</span>L<span class="org-type">/</span>2 <span class="org-type">+</span> l <span class="org-type">-</span> d; <span class="org-type">-</span>W<span class="org-type">/</span>2 <span class="org-type">+</span> d], [<span class="org-type">-</span>L<span class="org-type">/</span>2 <span class="org-type">+</span> d; <span class="org-type">-</span>W<span class="org-type">/</span>2 <span class="org-type">+</span> d], [L<span class="org-type">/</span>2 <span class="org-type">-</span> l <span class="org-type">+</span> d; W<span class="org-type">/</span>2 <span class="org-type">-</span> d], [L<span class="org-type">/</span>2 <span class="org-type">-</span> d; W<span class="org-type">/</span>2 <span class="org-type">-</span> d], [L<span class="org-type">/</span>2 <span class="org-type">-</span> d; <span class="org-type">-</span>W<span class="org-type">/</span>2 <span class="org-type">+</span> d], [L<span class="org-type">/</span>2 <span class="org-type">-</span> l <span class="org-type">+</span> d; <span class="org-type">-</span>W<span class="org-type">/</span>2 <span class="org-type">+</span> d]];
</pre>
</div>
<p>
Finally, the flatness is estimated by fitting a plane through the 8 points using the <code>fminsearch</code> command.
</p>
<div class="org-src-container">
<pre class="src src-matlab">apa_d = zeros(1, 7);
<span class="org-keyword">for</span> <span class="org-variable-name"><span class="org-constant">i</span></span> = <span class="org-constant">1:7</span>
fun = @(x)max(abs(([pos; apa{<span class="org-constant">i</span>}]<span class="org-type">-</span>[0;0;x(1)])<span class="org-type">'*</span>([x(2<span class="org-type">:</span>3);1]<span class="org-type">/</span>norm([x(2<span class="org-type">:</span>3);1]))));
x0 = [0;0;0];
[x, min_d] = fminsearch(fun,x0);
apa_d(<span class="org-constant">i</span>) = min_d;
<span class="org-keyword">end</span>
</pre>
</div>
<p>
The obtained flatness are shown in Table <a href="#org1d9e624">1</a>.
</p>
<table id="org1d9e624" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 1:</span> Estimated flatness</caption>
<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"><b>Flatness</b> \([\mu m]\)</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">APA 1</td>
<td class="org-right">8.9</td>
</tr>
<tr>
<td class="org-left">APA 2</td>
<td class="org-right">3.1</td>
</tr>
<tr>
<td class="org-left">APA 3</td>
<td class="org-right">9.1</td>
</tr>
<tr>
<td class="org-left">APA 4</td>
<td class="org-right">3.0</td>
</tr>
<tr>
<td class="org-left">APA 5</td>
<td class="org-right">1.9</td>
</tr>
<tr>
<td class="org-left">APA 6</td>
<td class="org-right">7.1</td>
</tr>
<tr>
<td class="org-left">APA 7</td>
<td class="org-right">18.7</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="outline-container-org8bccdd0" class="outline-2">
<h2 id="org8bccdd0"><span class="section-number-2">3</span> Electrical Measurements</h2>
<div class="outline-text-2" id="text-3">
<div class="note" id="org7bcb875">
<p>
The capacitance of the stacks is measure with the <a href="https://www.gwinstek.com/en-global/products/detail/LCR-800">LCR-800 Meter</a> (<a href="doc/DS_LCR-800_Series_V2_E.pdf">doc</a>)
</p>
</div>
<div id="orgc9cab72" class="figure">
<p><img src="figs/IMG_20210312_120337.jpg" alt="IMG_20210312_120337.jpg" />
</p>
<p><span class="figure-number">Figure 6: </span>LCR Meter used for the measurements</p>
</div>
<p>
The excitation frequency is set to be 1kHz.
</p>
<table id="org31916cc" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 2:</span> Capacitance measured with the LCR meter. The excitation signal is a sinus at 1kHz</caption>
<colgroup>
<col class="org-left" />
<col class="org-right" />
<col class="org-right" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">&#xa0;</th>
<th scope="col" class="org-right"><b>Sensor Stack</b></th>
<th scope="col" class="org-right"><b>Actuator Stacks</b></th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">APA 1</td>
<td class="org-right">5.10</td>
<td class="org-right">10.03</td>
</tr>
<tr>
<td class="org-left">APA 2</td>
<td class="org-right">4.99</td>
<td class="org-right">9.85</td>
</tr>
<tr>
<td class="org-left">APA 3</td>
<td class="org-right">1.72</td>
<td class="org-right">5.18</td>
</tr>
<tr>
<td class="org-left">APA 4</td>
<td class="org-right">4.94</td>
<td class="org-right">9.82</td>
</tr>
<tr>
<td class="org-left">APA 5</td>
<td class="org-right">4.90</td>
<td class="org-right">9.66</td>
</tr>
<tr>
<td class="org-left">APA 6</td>
<td class="org-right">4.99</td>
<td class="org-right">9.91</td>
</tr>
<tr>
<td class="org-left">APA 7</td>
<td class="org-right">4.85</td>
<td class="org-right">9.85</td>
</tr>
</tbody>
</table>
<div class="warning" id="orgc6fbd8d">
<p>
There is clearly a problem with APA300ML number 3
</p>
</div>
</div>
</div>
<div id="outline-container-org3a12599" class="outline-2">
<h2 id="org3a12599"><span class="section-number-2">4</span> Stiffness measurement</h2>
<div class="outline-text-2" id="text-4">
</div>
<div id="outline-container-org26adf52" class="outline-3">
<h3 id="org26adf52"><span class="section-number-3">4.1</span> APA test</h3>
<div class="outline-text-3" id="text-4-1">
<div class="org-src-container">
<pre class="src src-matlab">load(<span class="org-string">'meas_stiff_apa_1_x.mat'</span>, <span class="org-string">'t'</span>, <span class="org-string">'F'</span>, <span class="org-string">'d'</span>);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
plot(t, F)
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Automatic Zero of the force</span></span>
F = F <span class="org-type">-</span> mean(F(t <span class="org-type">&gt;</span> 0.1 <span class="org-type">&amp;</span> t <span class="org-type">&lt;</span> 0.3));
<span class="org-matlab-cellbreak"><span class="org-comment">%% Start measurement at t = 0.2 s</span></span>
d = d(t <span class="org-type">&gt;</span> 0.2);
F = F(t <span class="org-type">&gt;</span> 0.2);
t = t(t <span class="org-type">&gt;</span> 0.2); t = t <span class="org-type">-</span> t(1);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">i_l_start = find(F <span class="org-type">&gt;</span> 0.3, 1, <span class="org-string">'first'</span>);
[<span class="org-type">~</span>, i_l_stop] = max(F);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">F_l = F(i_l_start<span class="org-type">:</span>i_l_stop);
d_l = d(i_l_start<span class="org-type">:</span>i_l_stop);
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">fit_l = polyfit(F_l, d_l, 1);
<span class="org-comment">% %% Reset displacement based on fit</span>
<span class="org-comment">% d = d - fit_l(2);</span>
<span class="org-comment">% fit_s(2) = fit_s(2) - fit_l(2);</span>
<span class="org-comment">% fit_l(2) = 0;</span>
<span class="org-comment">% %% Estimated Stroke</span>
<span class="org-comment">% F_max = fit_s(2)/(fit_l(1) - fit_s(1));</span>
<span class="org-comment">% d_max = fit_l(1)*F_max;</span>
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">h<span class="org-type">^</span>2<span class="org-type">/</span>fit_l(1)
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-type">figure</span>;
hold on;
plot(F,d,<span class="org-string">'k'</span>)
plot(F_l, d_l)
plot(F_l, F_l<span class="org-type">*</span>fit_l(1) <span class="org-type">+</span> fit_l(2), <span class="org-string">'--'</span>)
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-orgcc86112" class="outline-2">
<h2 id="orgcc86112"><span class="section-number-2">5</span> Stroke measurement</h2>
<div class="outline-text-2" id="text-5">
<p>
We here wish to estimate the stroke of the APA.
</p>
<p>
To do so, one side of the APA is fixed, and a displacement probe is located on the other side as shown in Figure <a href="#orgfe260c2">7</a>.
</p>
<p>
Then, a voltage is applied on either one or two stacks using a DAC and a voltage amplifier.
</p>
<div class="note" id="org440d384">
<p>
Here are the documentation of the equipment used for this test bench:
</p>
<ul class="org-ul">
<li><b>Voltage Amplifier</b>: <a href="doc/PD200-V7-R1.pdf">PD200</a> with a gain of 20</li>
<li><b>16bits DAC</b>: <a href="doc/IO131-OEM-Datasheet.pdf">IO313 Speedgoat card</a></li>
<li><b>Displacement Probe</b>: <a href="doc/Millimar--3723046--BA--C1208-C1216-C1240--FR--2016-11-08.pdf">Millimar C1216 electronics</a> and <a href="doc/tmp3m0cvmue_7888038c-cdc8-48d8-a837-35de02760685.pdf">Millimar 1318 probe</a></li>
</ul>
</div>
<div id="orgfe260c2" class="figure">
<p><img src="figs/CE0EF55E-07B7-461B-8CDB-98590F68D15B.jpeg" alt="CE0EF55E-07B7-461B-8CDB-98590F68D15B.jpeg" />
</p>
<p><span class="figure-number">Figure 7: </span>Bench to measured the APA stroke</p>
</div>
</div>
<div id="outline-container-org4f0d338" class="outline-3">
<h3 id="org4f0d338"><span class="section-number-3">5.1</span> Voltage applied on one stack</h3>
<div class="outline-text-3" id="text-5-1">
<p>
Let&rsquo;s first look at the relation between the voltage applied to <b>one</b> stack to the displacement of the APA as measured by the displacement probe.
</p>
<p>
The applied voltage is shown in Figure <a href="#org5de4527">8</a>.
</p>
<div id="org5de4527" class="figure">
<p><img src="figs/apa_stroke_voltage_time.png" alt="apa_stroke_voltage_time.png" />
</p>
<p><span class="figure-number">Figure 8: </span>Applied voltage as a function of time</p>
</div>
<p>
The obtained displacement is shown in Figure <a href="#orgcc3e943">9</a>.
The displacement is set to zero at initial time when the voltage applied is -20V.
</p>
<div id="orgcc3e943" class="figure">
<p><img src="figs/apa_stroke_time_1s.png" alt="apa_stroke_time_1s.png" />
</p>
<p><span class="figure-number">Figure 9: </span>Displacement as a function of time for all the APA300ML</p>
</div>
<p>
Finally, the displacement is shown as a function of the applied voltage in Figure <a href="#org5a16a04">10</a>.
We can clearly see that there is a problem with the APA 3.
Also, there is a large hysteresis.
</p>
<div id="org5a16a04" class="figure">
<p><img src="figs/apa_d_vs_V_1s.png" alt="apa_d_vs_V_1s.png" />
</p>
<p><span class="figure-number">Figure 10: </span>Displacement as a function of the applied voltage</p>
</div>
<div class="important" id="org5be1ea1">
<p>
We can clearly see from Figure <a href="#org5a16a04">10</a> that there is a problem with the APA number 3.
</p>
</div>
</div>
</div>
<div id="outline-container-org28ae1e9" class="outline-3">
<h3 id="org28ae1e9"><span class="section-number-3">5.2</span> Voltage applied on two stacks</h3>
<div class="outline-text-3" id="text-5-2">
<p>
Now look at the relation between the voltage applied to the <b>two</b> other stacks to the displacement of the APA as measured by the displacement probe.
</p>
<p>
The obtained displacement is shown in Figure <a href="#orgb8e09f6">11</a>.
The displacement is set to zero at initial time when the voltage applied is -20V.
</p>
<div id="orgb8e09f6" class="figure">
<p><img src="figs/apa_stroke_time_2s.png" alt="apa_stroke_time_2s.png" />
</p>
<p><span class="figure-number">Figure 11: </span>Displacement as a function of time for all the APA300ML</p>
</div>
<p>
Finally, the displacement is shown as a function of the applied voltage in Figure <a href="#org5165c1c">12</a>.
We can clearly see that there is a problem with the APA 3.
Also, there is a large hysteresis.
</p>
<div id="org5165c1c" class="figure">
<p><img src="figs/apa_d_vs_V_2s.png" alt="apa_d_vs_V_2s.png" />
</p>
<p><span class="figure-number">Figure 12: </span>Displacement as a function of the applied voltage</p>
</div>
</div>
</div>
<div id="outline-container-org056e837" class="outline-3">
<h3 id="org056e837"><span class="section-number-3">5.3</span> Voltage applied on all three stacks</h3>
<div class="outline-text-3" id="text-5-3">
<p>
Finally, we can combine the two measurements to estimate the relation between the displacement and the voltage applied to the <b>three</b> stacks (Figure <a href="#orgf2852b9">13</a>).
</p>
<div id="orgf2852b9" class="figure">
<p><img src="figs/apa_d_vs_V_3s.png" alt="apa_d_vs_V_3s.png" />
</p>
<p><span class="figure-number">Figure 13: </span>Displacement as a function of the applied voltage</p>
</div>
<p>
The obtained maximum stroke for all the APA are summarized in Table <a href="#org550fbfe">3</a>.
</p>
<table id="org550fbfe" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 3:</span> Measured maximum stroke</caption>
<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"><b>Stroke</b> \([\mu m]\)</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">APA 1</td>
<td class="org-right">373.2</td>
</tr>
<tr>
<td class="org-left">APA 2</td>
<td class="org-right">365.5</td>
</tr>
<tr>
<td class="org-left">APA 3</td>
<td class="org-right">181.7</td>
</tr>
<tr>
<td class="org-left">APA 4</td>
<td class="org-right">359.7</td>
</tr>
<tr>
<td class="org-left">APA 5</td>
<td class="org-right">361.5</td>
</tr>
<tr>
<td class="org-left">APA 6</td>
<td class="org-right">363.9</td>
</tr>
<tr>
<td class="org-left">APA 7</td>
<td class="org-right">358.4</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div id="outline-container-org28983e7" class="outline-2">
<h2 id="org28983e7"><span class="section-number-2">6</span> Test-Bench Description</h2>
<div class="outline-text-2" id="text-6">
<div class="note" id="org2681a63">
<p>
Here are the documentation of the equipment used for this test bench:
</p>
<ul class="org-ul">
<li>Voltage Amplifier: <a href="doc/PD200-V7-R1.pdf">PD200</a></li>
<li>Amplified Piezoelectric Actuator: <a href="doc/APA300ML.pdf">APA300ML</a></li>
<li>DAC/ADC: Speedgoat <a href="doc/IO131-OEM-Datasheet.pdf">IO313</a></li>
<li>Encoder: <a href="doc/L-9517-9678-05-A_Data_sheet_VIONiC_series_en.pdf">Renishaw Vionic</a> and used <a href="doc/L-9517-9862-01-C_Data_sheet_RKLC_EN.pdf">Ruler</a></li>
<li>Interferometer: <a href="https://www.attocube.com/en/products/laser-displacement-sensor/displacement-measuring-interferometer">Attocube IDS3010</a></li>
</ul>
</div>
<div id="org94e0e10" class="figure">
<p><img src="figs/test_bench_apa_alone.png" alt="test_bench_apa_alone.png" />
</p>
<p><span class="figure-number">Figure 14: </span>Schematic of the Test Bench</p>
</div>
</div>
</div>
<div id="outline-container-org65804dc" class="outline-2">
<h2 id="org65804dc"><span class="section-number-2">7</span> Measurement Procedure</h2>
<div class="outline-text-2" id="text-7">
</div>
<div id="outline-container-orge0e49ef" class="outline-3">
<h3 id="orge0e49ef"><span class="section-number-3">7.1</span> Stroke Measurement</h3>
<div class="outline-text-3" id="text-7-1">
<p>
Using the PD200 amplifier, output a voltage:
\[ V_a = 65 + 85 \sin(2\pi \cdot t) \]
To have a quasi-static excitation between -20 and 150V.
</p>
<p>
As the gain of the PD200 amplifier is 20, the DAC output voltage should be:
\[ V_{dac}(t) = 3.25 + 4.25\sin(2\pi \cdot t) \]
</p>
<p>
Verify that the voltage offset of the PD200 is zero!
</p>
<p>
Measure the output vertical displacement \(d\) using the interferometer.
</p>
<p>
Then, plot \(d\) as a function of \(V_a\), and perform a linear regression.
Conclude on the obtained stroke.
</p>
</div>
</div>
<div id="outline-container-org0584318" class="outline-3">
<h3 id="org0584318"><span class="section-number-3">7.2</span> Stiffness Measurement</h3>
<div class="outline-text-3" id="text-7-2">
<p>
Add some (known) weight \(\delta m g\) on the suspended mass and measure the deflection \(\delta d\).
This can be tested when the piezoelectric stacks are open-circuit.
</p>
<p>
As the stiffness will be around \(k \approx 10^6 N/m\), an added mass of \(m \approx 100g\) will induce a static deflection of \(\approx 1\mu m\) which should be large enough for a precise measurement using the interferometer.
</p>
<p>
Then the obtained stiffness is:
</p>
\begin{equation}
k = \frac{\delta m g}{\delta d}
\end{equation}
</div>
</div>
<div id="outline-container-orgdd21f95" class="outline-3">
<h3 id="orgdd21f95"><span class="section-number-3">7.3</span> Hysteresis measurement</h3>
<div class="outline-text-3" id="text-7-3">
<p>
Supply a quasi static sinusoidal excitation \(V_a\) at different voltages.
</p>
<p>
The offset should be 65V, and the sin amplitude can range from 1V up to 85V.
</p>
<p>
For each excitation amplitude, the vertical displacement \(d\) of the mass is measured.
</p>
<p>
Then, \(d\) is plotted as a function of \(V_a\) for all the amplitudes.
</p>
<div id="org97c47ab" class="figure">
<p><img src="figs/expected_hysteresis.png" alt="expected_hysteresis.png" />
</p>
<p><span class="figure-number">Figure 15: </span>Expected Hysteresis (<a class='org-ref-reference' href="#poel10_explor_activ_hard_mount_vibrat">poel10_explor_activ_hard_mount_vibrat</a>)</p>
</div>
</div>
</div>
<div id="outline-container-orgaf52b1d" class="outline-3">
<h3 id="orgaf52b1d"><span class="section-number-3">7.4</span> Piezoelectric Actuator Constant</h3>
<div class="outline-text-3" id="text-7-4">
<p>
Using the measurement test-bench, it is rather easy the determine the static gain between the applied voltage \(V_a\) to the induced displacement \(d\).
Use a quasi static (1Hz) excitation signal \(V_a\) on the piezoelectric stack and measure the vertical displacement \(d\).
Perform a linear regression to obtain:
</p>
\begin{equation}
d = g_{d/V_a} \cdot V_a
\end{equation}
<p>
Using the Simscape model of the APA, it is possible to determine the static gain between the actuator force \(F_a\) to the induced displacement \(d\):
</p>
\begin{equation}
d = g_{d/F_a} \cdot F_a
\end{equation}
<p>
From the two gains, it is then easy to determine \(g_a\):
</p>
\begin{equation}
g_a = \frac{F_a}{V_a} = \frac{F_a}{d} \cdot \frac{d}{V_a} = \frac{g_{d/V_a}}{g_{d/F_a}}
\end{equation}
</div>
</div>
<div id="outline-container-org7717963" class="outline-3">
<h3 id="org7717963"><span class="section-number-3">7.5</span> Piezoelectric Sensor Constant</h3>
<div class="outline-text-3" id="text-7-5">
<p>
From a quasi static excitation of the piezoelectric stack, measure the gain from \(V_a\) to \(V_s\):
</p>
\begin{equation}
V_s = g_{V_s/V_a} V_a
\end{equation}
<p>
Note here that there is an high pass filter formed by the piezo capacitor and parallel resistor.
The excitation frequency should then be in between the cut-off frequency of this high pass filter and the first resonance.
</p>
<p>
Alternatively, the gain can be computed from the dynamical identification and taking the gain at the wanted frequency.
</p>
<p>
Using the simscape model, compute the static gain from the actuator force \(F_a\) to the strain of the sensor stack \(dl\):
</p>
\begin{equation}
dl = g_{dl/F_a} F_a
\end{equation}
<p>
Then, the static gain from the sensor stack strain \(dl\) to the general voltage \(V_s\) is:
</p>
\begin{equation}
g_s = \frac{V_s}{dl} = \frac{V_s}{V_a} \cdot \frac{V_a}{F_a} \cdot \frac{F_a}{dl} = \frac{g_{V_s/V_a}}{g_a \cdot g_{dl/F_a}}
\end{equation}
<p>
Alternatively, we could impose an external force to add strain in the APA that should be equally present in all the 3 stacks and equal to 1/5 of the vertical strain.
This external force can be some weight added, or a piezo in parallel.
</p>
</div>
</div>
<div id="outline-container-org856525a" class="outline-3">
<h3 id="org856525a"><span class="section-number-3">7.6</span> Capacitance Measurement</h3>
<div class="outline-text-3" id="text-7-6">
<p>
Measure the capacitance of the 3 stacks individually using a precise multi-meter.
</p>
</div>
</div>
<div id="outline-container-orgb137c73" class="outline-3">
<h3 id="orgb137c73"><span class="section-number-3">7.7</span> Dynamical Behavior</h3>
<div class="outline-text-3" id="text-7-7">
<p>
Perform a system identification from \(V_a\) to the measured displacement \(d\) by the interferometer and by the encoder, and to the generated voltage \(V_s\).
</p>
<p>
This can be performed using different excitation signals.
</p>
<p>
This can also be performed with and without the encoder fixed to the APA.
</p>
</div>
</div>
<div id="outline-container-org4990fdd" class="outline-3">
<h3 id="org4990fdd"><span class="section-number-3">7.8</span> Compare the results obtained for all 7 APA300ML</h3>
<div class="outline-text-3" id="text-7-8">
<p>
Compare all the obtained parameters for all the test APA.
</p>
</div>
</div>
</div>
<div id="outline-container-org78965a0" class="outline-2">
<h2 id="org78965a0"><span class="section-number-2">8</span> Measurement Results</h2>
</div>
<div id="outline-container-org3cfc1a3" class="outline-2">
<h2 id="org3cfc1a3"><span class="section-number-2">9</span> Test Bench APA300ML - Simscape Model</h2>
<div class="outline-text-2" id="text-9">
</div>
<div id="outline-container-org6fbb1ad" class="outline-3">
<h3 id="org6fbb1ad"><span class="section-number-3">9.1</span> Introduction</h3>
</div>
<div id="outline-container-org6fa6a79" class="outline-3">
<h3 id="org6fa6a79"><span class="section-number-3">9.2</span> Nano Hexapod object</h3>
<div class="outline-text-3" id="text-9-2">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod = struct();
</pre>
</div>
</div>
<div id="outline-container-org8759fb9" class="outline-4">
<h4 id="org8759fb9"><span class="section-number-4">9.2.1</span> APA - 2 DoF</h4>
<div class="outline-text-4" id="text-9-2-1">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.actuator = struct();
n_hexapod.actuator.type = 1;
n_hexapod.actuator.k = ones(6,1)<span class="org-type">*</span>0.35e6; <span class="org-comment">% [N/m]</span>
n_hexapod.actuator.ke = ones(6,1)<span class="org-type">*</span>1.5e6; <span class="org-comment">% [N/m]</span>
n_hexapod.actuator.ka = ones(6,1)<span class="org-type">*</span>43e6; <span class="org-comment">% [N/m]</span>
n_hexapod.actuator.c = ones(6,1)<span class="org-type">*</span>3e1; <span class="org-comment">% [N/(m/s)]</span>
n_hexapod.actuator.ce = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
n_hexapod.actuator.ca = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
n_hexapod.actuator.Leq = ones(6,1)<span class="org-type">*</span>0.056; <span class="org-comment">% [m]</span>
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org648591e" class="outline-4">
<h4 id="org648591e"><span class="section-number-4">9.2.2</span> APA - Flexible Frame</h4>
<div class="outline-text-4" id="text-9-2-2">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.actuator.type = 2;
n_hexapod.actuator.K = readmatrix(<span class="org-string">'APA300ML_b_mat_K.CSV'</span>); <span class="org-comment">% Stiffness Matrix</span>
n_hexapod.actuator.M = readmatrix(<span class="org-string">'APA300ML_b_mat_M.CSV'</span>); <span class="org-comment">% Mass Matrix</span>
n_hexapod.actuator.xi = 0.01; <span class="org-comment">% Damping ratio</span>
n_hexapod.actuator.P = extractNodes(<span class="org-string">'APA300ML_b_out_nodes_3D.txt'</span>); <span class="org-comment">% Node coordinates [m]</span>
n_hexapod.actuator.ks = 235e6; <span class="org-comment">% Stiffness of one stack [N/m]</span>
n_hexapod.actuator.cs = 1e1; <span class="org-comment">% Stiffness of one stack [N/m]</span>
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org03f2df7" class="outline-4">
<h4 id="org03f2df7"><span class="section-number-4">9.2.3</span> APA - Fully Flexible</h4>
<div class="outline-text-4" id="text-9-2-3">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.actuator.type = 3;
n_hexapod.actuator.K = readmatrix(<span class="org-string">'APA300ML_full_mat_K.CSV'</span>); <span class="org-comment">% Stiffness Matrix</span>
n_hexapod.actuator.M = readmatrix(<span class="org-string">'APA300ML_full_mat_M.CSV'</span>); <span class="org-comment">% Mass Matrix</span>
n_hexapod.actuator.xi = 0.01; <span class="org-comment">% Damping ratio</span>
n_hexapod.actuator.P = extractNodes(<span class="org-string">'APA300ML_full_out_nodes_3D.txt'</span>); <span class="org-comment">% Node coordiantes [m]</span>
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org4830246" class="outline-3">
<h3 id="org4830246"><span class="section-number-3">9.3</span> Identification</h3>
<div class="outline-text-3" id="text-9-3">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions;
options.SampleTime = 0;
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'test_bench_apa300ml'</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">'/Va'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Voltage</span>
io(io_i) = linio([mdl, <span class="org-string">'/Vs'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Sensor Voltage</span>
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; <span class="org-comment">% Relative Motion Outputs</span>
io(io_i) = linio([mdl, <span class="org-string">'/z'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Vertical Motion</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
Ga = linearize(mdl, io, 0.0, options);
Ga.InputName = {<span class="org-string">'Va'</span>};
Ga.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-org6344e4d" class="outline-3">
<h3 id="org6344e4d"><span class="section-number-3">9.4</span> Compare 2-DoF with flexible</h3>
<div class="outline-text-3" id="text-9-4">
</div>
<div id="outline-container-org3e0021c" class="outline-4">
<h4 id="org3e0021c"><span class="section-number-4">9.4.1</span> APA - 2 DoF</h4>
<div class="outline-text-4" id="text-9-4-1">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod = struct();
n_hexapod.actuator = struct();
n_hexapod.actuator.type = 1;
n_hexapod.actuator.k = ones(6,1)<span class="org-type">*</span>0.35e6; <span class="org-comment">% [N/m]</span>
n_hexapod.actuator.ke = ones(6,1)<span class="org-type">*</span>1.5e6; <span class="org-comment">% [N/m]</span>
n_hexapod.actuator.ka = ones(6,1)<span class="org-type">*</span>43e6; <span class="org-comment">% [N/m]</span>
n_hexapod.actuator.c = ones(6,1)<span class="org-type">*</span>3e1; <span class="org-comment">% [N/(m/s)]</span>
n_hexapod.actuator.ce = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
n_hexapod.actuator.ca = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
n_hexapod.actuator.Leq = ones(6,1)<span class="org-type">*</span>0.056; <span class="org-comment">% [m]</span>
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*-</span>2.15; <span class="org-comment">% Actuator gain [N/V]</span>
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>2.305e<span class="org-type">-</span>08; <span class="org-comment">% Sensor gain [V/m]</span>
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">G_2dof = linearize(mdl, io, 0.0, options);
G_2dof.InputName = {<span class="org-string">'Va'</span>};
G_2dof.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-org9270e65" class="outline-4">
<h4 id="org9270e65"><span class="section-number-4">9.4.2</span> APA - Fully Flexible</h4>
<div class="outline-text-4" id="text-9-4-2">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod = struct();
n_hexapod.actuator.type = 3;
n_hexapod.actuator.K = readmatrix(<span class="org-string">'APA300ML_full_mat_K.CSV'</span>); <span class="org-comment">% Stiffness Matrix</span>
n_hexapod.actuator.M = readmatrix(<span class="org-string">'APA300ML_full_mat_M.CSV'</span>); <span class="org-comment">% Mass Matrix</span>
n_hexapod.actuator.xi = 0.01; <span class="org-comment">% Damping ratio</span>
n_hexapod.actuator.P = extractNodes(<span class="org-string">'APA300ML_full_out_nodes_3D.txt'</span>); <span class="org-comment">% Node coordiantes [m]</span>
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">G_flex = linearize(mdl, io, 0.0, options);
G_flex.InputName = {<span class="org-string">'Va'</span>};
G_flex.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-orgb2c8b0c" class="outline-4">
<h4 id="orgb2c8b0c"><span class="section-number-4">9.4.3</span> Comparison</h4>
</div>
</div>
</div>
<div id="outline-container-orgd76b4b9" class="outline-2">
<h2 id="orgd76b4b9"><span class="section-number-2">10</span> Test Bench Struts - Simscape Model</h2>
<div class="outline-text-2" id="text-10">
</div>
<div id="outline-container-org6582e7c" class="outline-3">
<h3 id="org6582e7c"><span class="section-number-3">10.1</span> Introduction</h3>
</div>
<div id="outline-container-org7259b89" class="outline-3">
<h3 id="org7259b89"><span class="section-number-3">10.2</span> Nano Hexapod object</h3>
<div class="outline-text-3" id="text-10-2">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod = struct();
</pre>
</div>
</div>
<div id="outline-container-org0ef8b83" class="outline-4">
<h4 id="org0ef8b83"><span class="section-number-4">10.2.1</span> Flexible Joint - Bot</h4>
<div class="outline-text-4" id="text-10-2-1">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.flex_bot = struct();
n_hexapod.flex_bot.type = 1; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
n_hexapod.flex_bot.kRx = ones(6,1)<span class="org-type">*</span>5; <span class="org-comment">% X bending stiffness [Nm/rad]</span>
n_hexapod.flex_bot.kRy = ones(6,1)<span class="org-type">*</span>5; <span class="org-comment">% Y bending stiffness [Nm/rad]</span>
n_hexapod.flex_bot.kRz = ones(6,1)<span class="org-type">*</span>260; <span class="org-comment">% Torsionnal stiffness [Nm/rad]</span>
n_hexapod.flex_bot.kz = ones(6,1)<span class="org-type">*</span>1e8; <span class="org-comment">% Axial stiffness [N/m]</span>
n_hexapod.flex_bot.cRx = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
n_hexapod.flex_bot.cRy = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
n_hexapod.flex_bot.cRz = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
n_hexapod.flex_bot.cz = ones(6,1)<span class="org-type">*</span>1e2; <span class="org-comment">%[N/(m/s)]</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org2c0867c" class="outline-4">
<h4 id="org2c0867c"><span class="section-number-4">10.2.2</span> Flexible Joint - Top</h4>
<div class="outline-text-4" id="text-10-2-2">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.flex_top = struct();
n_hexapod.flex_top.type = 2; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
n_hexapod.flex_top.kRx = ones(6,1)<span class="org-type">*</span>5; <span class="org-comment">% X bending stiffness [Nm/rad]</span>
n_hexapod.flex_top.kRy = ones(6,1)<span class="org-type">*</span>5; <span class="org-comment">% Y bending stiffness [Nm/rad]</span>
n_hexapod.flex_top.kRz = ones(6,1)<span class="org-type">*</span>260; <span class="org-comment">% Torsionnal stiffness [Nm/rad]</span>
n_hexapod.flex_top.kz = ones(6,1)<span class="org-type">*</span>1e8; <span class="org-comment">% Axial stiffness [N/m]</span>
n_hexapod.flex_top.cRx = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
n_hexapod.flex_top.cRy = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
n_hexapod.flex_top.cRz = ones(6,1)<span class="org-type">*</span>0.1; <span class="org-comment">% [Nm/(rad/s)]</span>
n_hexapod.flex_top.cz = ones(6,1)<span class="org-type">*</span>1e2; <span class="org-comment">%[N/(m/s)]</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-org8d6e2b0" class="outline-4">
<h4 id="org8d6e2b0"><span class="section-number-4">10.2.3</span> APA - 2 DoF</h4>
<div class="outline-text-4" id="text-10-2-3">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.actuator = struct();
n_hexapod.actuator.type = 1;
n_hexapod.actuator.k = ones(6,1)<span class="org-type">*</span>0.35e6; <span class="org-comment">% [N/m]</span>
n_hexapod.actuator.ke = ones(6,1)<span class="org-type">*</span>1.5e6; <span class="org-comment">% [N/m]</span>
n_hexapod.actuator.ka = ones(6,1)<span class="org-type">*</span>43e6; <span class="org-comment">% [N/m]</span>
n_hexapod.actuator.c = ones(6,1)<span class="org-type">*</span>3e1; <span class="org-comment">% [N/(m/s)]</span>
n_hexapod.actuator.ce = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
n_hexapod.actuator.ca = ones(6,1)<span class="org-type">*</span>1e1; <span class="org-comment">% [N/(m/s)]</span>
n_hexapod.actuator.Leq = ones(6,1)<span class="org-type">*</span>0.056; <span class="org-comment">% [m]</span>
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgc1dfc5b" class="outline-4">
<h4 id="orgc1dfc5b"><span class="section-number-4">10.2.4</span> APA - Flexible Frame</h4>
<div class="outline-text-4" id="text-10-2-4">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.actuator.type = 2;
n_hexapod.actuator.K = readmatrix(<span class="org-string">'APA300ML_b_mat_K.CSV'</span>); <span class="org-comment">% Stiffness Matrix</span>
n_hexapod.actuator.M = readmatrix(<span class="org-string">'APA300ML_b_mat_M.CSV'</span>); <span class="org-comment">% Mass Matrix</span>
n_hexapod.actuator.xi = 0.01; <span class="org-comment">% Damping ratio</span>
n_hexapod.actuator.P = extractNodes(<span class="org-string">'APA300ML_b_out_nodes_3D.txt'</span>); <span class="org-comment">% Node coordinates [m]</span>
n_hexapod.actuator.ks = 235e6; <span class="org-comment">% Stiffness of one stack [N/m]</span>
n_hexapod.actuator.cs = 1e1; <span class="org-comment">% Stiffness of one stack [N/m]</span>
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
</pre>
</div>
</div>
</div>
<div id="outline-container-orgfaee08a" class="outline-4">
<h4 id="orgfaee08a"><span class="section-number-4">10.2.5</span> APA - Fully Flexible</h4>
<div class="outline-text-4" id="text-10-2-5">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.actuator.type = 3;
n_hexapod.actuator.K = readmatrix(<span class="org-string">'APA300ML_full_mat_K.CSV'</span>); <span class="org-comment">% Stiffness Matrix</span>
n_hexapod.actuator.M = readmatrix(<span class="org-string">'APA300ML_full_mat_M.CSV'</span>); <span class="org-comment">% Mass Matrix</span>
n_hexapod.actuator.xi = 0.01; <span class="org-comment">% Damping ratio</span>
n_hexapod.actuator.P = extractNodes(<span class="org-string">'APA300ML_full_out_nodes_3D.txt'</span>); <span class="org-comment">% Node coordiantes [m]</span>
n_hexapod.actuator.Ga = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Actuator gain [N/V]</span>
n_hexapod.actuator.Gs = ones(6,1)<span class="org-type">*</span>1; <span class="org-comment">% Sensor gain [V/m]</span>
</pre>
</div>
</div>
</div>
</div>
<div id="outline-container-org45f54ad" class="outline-3">
<h3 id="org45f54ad"><span class="section-number-3">10.3</span> Identification</h3>
<div class="outline-text-3" id="text-10-3">
<div class="org-src-container">
<pre class="src src-matlab"><span class="org-matlab-cellbreak"><span class="org-comment">%% Options for Linearized</span></span>
options = linearizeOptions;
options.SampleTime = 0;
<span class="org-matlab-cellbreak"><span class="org-comment">%% Name of the Simulink File</span></span>
mdl = <span class="org-string">'test_bench_struts'</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">'/Va'</span>], 1, <span class="org-string">'openinput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Actuator Voltage</span>
io(io_i) = linio([mdl, <span class="org-string">'/Vs'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Sensor Voltage</span>
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; <span class="org-comment">% Relative Motion Outputs</span>
io(io_i) = linio([mdl, <span class="org-string">'/z'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Vertical Motion</span>
<span class="org-matlab-cellbreak"><span class="org-comment">%% Run the linearization</span></span>
Gs = linearize(mdl, io, 0.0, options);
Gs.InputName = {<span class="org-string">'Va'</span>};
Gs.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-org0166133" class="outline-3">
<h3 id="org0166133"><span class="section-number-3">10.4</span> Compare flexible joints</h3>
<div class="outline-text-3" id="text-10-4">
</div>
<div id="outline-container-org591f6cf" class="outline-4">
<h4 id="org591f6cf"><span class="section-number-4">10.4.1</span> Perfect</h4>
<div class="outline-text-4" id="text-10-4-1">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.flex_bot.type = 1; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
n_hexapod.flex_top.type = 2; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Gp = linearize(mdl, io, 0.0, options);
Gp.InputName = {<span class="org-string">'Va'</span>};
Gp.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-org7597589" class="outline-4">
<h4 id="org7597589"><span class="section-number-4">10.4.2</span> Top Flexible</h4>
<div class="outline-text-4" id="text-10-4-2">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.flex_bot.type = 1; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
n_hexapod.flex_top.type = 3; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Gt = linearize(mdl, io, 0.0, options);
Gt.InputName = {<span class="org-string">'Va'</span>};
Gt.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-org93bc353" class="outline-4">
<h4 id="org93bc353"><span class="section-number-4">10.4.3</span> Bottom Flexible</h4>
<div class="outline-text-4" id="text-10-4-3">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.flex_bot.type = 3; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
n_hexapod.flex_top.type = 2; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Gb = linearize(mdl, io, 0.0, options);
Gb.InputName = {<span class="org-string">'Va'</span>};
Gb.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-org2739150" class="outline-4">
<h4 id="org2739150"><span class="section-number-4">10.4.4</span> Both Flexible</h4>
<div class="outline-text-4" id="text-10-4-4">
<div class="org-src-container">
<pre class="src src-matlab">n_hexapod.flex_bot.type = 3; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
n_hexapod.flex_top.type = 3; <span class="org-comment">% 1: 2dof / 2: 3dof / 3: 4dof</span>
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Gf = linearize(mdl, io, 0.0, options);
Gf.InputName = {<span class="org-string">'Va'</span>};
Gf.OutputName = {<span class="org-string">'Vs'</span>, <span class="org-string">'dL'</span>, <span class="org-string">'z'</span>};
</pre>
</div>
</div>
</div>
<div id="outline-container-org2ab1313" class="outline-4">
<h4 id="org2ab1313"><span class="section-number-4">10.4.5</span> Comparison</h4>
</div>
</div>
</div>
<div id="outline-container-orgca93f0e" class="outline-2">
<h2 id="orgca93f0e"><span class="section-number-2">11</span> Resonance frequencies - APA300ML</h2>
<div class="outline-text-2" id="text-11">
</div>
<div id="outline-container-org5dd9672" class="outline-3">
<h3 id="org5dd9672"><span class="section-number-3">11.1</span> Introduction</h3>
<div class="outline-text-3" id="text-11-1">
<p>
Three main resonances are foreseen to be problematic for the control of the APA300ML:
</p>
<ul class="org-ul">
<li>Mode in X-bending at 189Hz (Figure <a href="#org693a8e1">16</a>)</li>
<li>Mode in Y-bending at 285Hz (Figure <a href="#org89d1ae0">17</a>)</li>
<li>Mode in Z-torsion at 400Hz (Figure <a href="#org7d5e64c">18</a>)</li>
</ul>
<div id="org693a8e1" class="figure">
<p><img src="figs/mode_bending_x.gif" alt="mode_bending_x.gif" />
</p>
<p><span class="figure-number">Figure 16: </span>X-bending mode (189Hz)</p>
</div>
<div id="org89d1ae0" class="figure">
<p><img src="figs/mode_bending_y.gif" alt="mode_bending_y.gif" />
</p>
<p><span class="figure-number">Figure 17: </span>Y-bending mode (285Hz)</p>
</div>
<div id="org7d5e64c" class="figure">
<p><img src="figs/mode_torsion_z.gif" alt="mode_torsion_z.gif" />
</p>
<p><span class="figure-number">Figure 18: </span>Z-torsion mode (400Hz)</p>
</div>
<p>
These modes are present when flexible joints are fixed to the ends of the APA300ML.
</p>
<p>
In this section, we try to find the resonance frequency of these modes when one end of the APA is fixed and the other is free.
</p>
</div>
</div>
<div id="outline-container-org45b6dca" class="outline-3">
<h3 id="org45b6dca"><span class="section-number-3">11.2</span> Setup</h3>
<div class="outline-text-3" id="text-11-2">
<p>
The measurement setup is shown in Figure <a href="#orgefd7369">19</a>.
A Laser vibrometer is measuring the difference of motion of two points.
The APA is excited with an instrumented hammer and the transfer function from the hammer to the measured rotation is computed.
</p>
<div class="note" id="org887d3c1">
<ul class="org-ul">
<li>Laser Doppler Vibrometer Polytec OFV512</li>
<li>Instrumented hammer</li>
</ul>
</div>
<div id="orgefd7369" class="figure">
<p><img src="figs/measurement_setup_torsion.png" alt="measurement_setup_torsion.png" />
</p>
<p><span class="figure-number">Figure 19: </span>Measurement setup with a Laser Doppler Vibrometer and one instrumental hammer</p>
</div>
</div>
</div>
<div id="outline-container-orga12c8c9" class="outline-3">
<h3 id="orga12c8c9"><span class="section-number-3">11.3</span> Bending - X</h3>
<div class="outline-text-3" id="text-11-3">
<p>
The setup to measure the X-bending motion is shown in Figure <a href="#org6810da5">20</a>.
The APA is excited with an instrumented hammer having a solid metallic tip.
The impact point is on the back-side of the APA aligned with the top measurement point.
</p>
<div id="org6810da5" class="figure">
<p><img src="figs/measurement_setup_X_bending.png" alt="measurement_setup_X_bending.png" />
</p>
<p><span class="figure-number">Figure 20: </span>X-Bending measurement setup</p>
</div>
<p>
The data is loaded.
</p>
<div class="org-src-container">
<pre class="src src-matlab">bending_X = load(<span class="org-string">'apa300ml_bending_X_top.mat'</span>)
</pre>
</div>
<div class="org-src-container">
<pre class="src src-matlab">Ts = bending_X.Track1_X_Resolution; <span class="org-comment">% Sampling frequency [Hz]</span>
</pre>
</div>
<p>
The transfer function from the input force to the output &ldquo;rotation&rdquo; (difference between the two measured distances).
</p>
<div class="org-src-container">
<pre class="src src-matlab">win = hann(ceil(1<span class="org-type">/</span>Ts));
[G_bending_X, f] = tfestimate(bending_X.Track1, bending_X.Track2, win, [], [], 1<span class="org-type">/</span>Ts);
</pre>
</div>
<p>
The result is shown in Figure <a href="#org6e01659">21</a>.
</p>
<p>
The can clearly observe a nice peak at 280Hz, and then peaks at the odd &ldquo;harmonics&rdquo; (third &ldquo;harmonic&rdquo; at 840Hz, and fifth &ldquo;harmonic&rdquo; at 1400Hz).
</p>
<div id="org6e01659" class="figure">
<p><img src="figs/apa300ml_meas_freq_bending_x.png" alt="apa300ml_meas_freq_bending_x.png" />
</p>
<p><span class="figure-number">Figure 21: </span>Obtained FRF for the X-bending</p>
</div>
</div>
</div>
<div id="outline-container-org1bd4515" class="outline-3">
<h3 id="org1bd4515"><span class="section-number-3">11.4</span> Bending - Y</h3>
<div class="outline-text-3" id="text-11-4">
<p>
The setup to measure the Y-bending is shown in Figure <a href="#org861df25">22</a>.
</p>
<p>
The impact point of the instrumented hammer is located on the back surface of the top interface (on the back of the 2 measurements points).
</p>
<div id="org861df25" class="figure">
<p><img src="figs/measurement_setup_Y_bending.png" alt="measurement_setup_Y_bending.png" />
</p>
<p><span class="figure-number">Figure 22: </span>Y-Bending measurement setup</p>
</div>
<p>
The data is loaded, and the transfer function from the force to the measured rotation is computed.
</p>
<div class="org-src-container">
<pre class="src src-matlab">bending_Y = load(<span class="org-string">'apa300ml_bending_Y_top.mat'</span>)
[G_bending_Y, <span class="org-type">~</span>] = tfestimate(bending_Y.Track1, bending_Y.Track2, win, [], [], 1<span class="org-type">/</span>Ts);
</pre>
</div>
<p>
The results are shown in Figure <a href="#org1b6674e">23</a>.
The main resonance is at 412Hz, and we also see the third &ldquo;harmonic&rdquo; at 1220Hz.
</p>
<div id="org1b6674e" class="figure">
<p><img src="figs/apa300ml_meas_freq_bending_y.png" alt="apa300ml_meas_freq_bending_y.png" />
</p>
<p><span class="figure-number">Figure 23: </span>Obtained FRF for the Y-bending</p>
</div>
</div>
</div>
<div id="outline-container-orge02414d" class="outline-3">
<h3 id="orge02414d"><span class="section-number-3">11.5</span> Torsion - Z</h3>
<div class="outline-text-3" id="text-11-5">
<p>
Finally, we measure the Z-torsion resonance as shown in Figure <a href="#org3adde4a">24</a>.
</p>
<p>
The excitation is shown on the other side of the APA, on the side to excite the torsion motion.
</p>
<div id="org3adde4a" class="figure">
<p><img src="figs/measurement_setup_torsion_bis.png" alt="measurement_setup_torsion_bis.png" />
</p>
<p><span class="figure-number">Figure 24: </span>Z-Torsion measurement setup</p>
</div>
<p>
The data is loaded, and the transfer function computed.
</p>
<div class="org-src-container">
<pre class="src src-matlab">torsion = load(<span class="org-string">'apa300ml_torsion_left.mat'</span>)
[G_torsion, <span class="org-type">~</span>] = tfestimate(torsion_left.Track1, torsion_left.Track2, win, [], [], 1<span class="org-type">/</span>Ts);
</pre>
</div>
<p>
The results are shown in Figure <a href="#orga6d8f23">25</a>.
We observe a first peak at 267Hz, which corresponds to the X-bending mode that was measured at 280Hz.
And then a second peak at 415Hz, which corresponds to the X-bending mode that was measured at 412Hz.
The mode in pure torsion is probably at higher frequency (peak around 1kHz?).
</p>
<div id="orga6d8f23" class="figure">
<p><img src="figs/apa300ml_meas_freq_torsion_z.png" alt="apa300ml_meas_freq_torsion_z.png" />
</p>
<p><span class="figure-number">Figure 25: </span>Obtained FRF for the Z-torsion</p>
</div>
</div>
</div>
<div id="outline-container-org36ae965" class="outline-3">
<h3 id="org36ae965"><span class="section-number-3">11.6</span> Compare</h3>
<div class="outline-text-3" id="text-11-6">
<p>
The three measurements are shown in Figure <a href="#org6f24524">26</a>.
</p>
<div id="org6f24524" class="figure">
<p><img src="figs/apa300ml_meas_freq_compare.png" alt="apa300ml_meas_freq_compare.png" />
</p>
<p><span class="figure-number">Figure 26: </span>Obtained FRF - Comparison</p>
</div>
</div>
</div>
<div id="outline-container-org5c4275b" class="outline-3">
<h3 id="org5c4275b"><span class="section-number-3">11.7</span> Conclusion</h3>
<div class="outline-text-3" id="text-11-7">
<p>
When two flexible joints are fixed at each ends of the APA, the APA is mostly in a free/free condition in terms of bending/torsion (the bending/torsional stiffness of the joints being very small).
</p>
<p>
In the current tests, the APA are in a fixed/free condition.
Therefore, it is quite obvious that we measured higher resonance frequencies than what is foreseen for the struts.
It is however quite interesting that there is a factor \(\approx \sqrt{2}\) between the two (increased of the stiffness by a factor 2?).
</p>
<table id="org7a97ec3" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<caption class="t-above"><span class="table-number">Table 4:</span> Measured frequency of the modes</caption>
<colgroup>
<col class="org-left" />
<col class="org-left" />
<col class="org-left" />
</colgroup>
<thead>
<tr>
<th scope="col" class="org-left">Mode</th>
<th scope="col" class="org-left">Strut Mode</th>
<th scope="col" class="org-left">Measured Frequency</th>
</tr>
</thead>
<tbody>
<tr>
<td class="org-left">X-Bending</td>
<td class="org-left">189Hz</td>
<td class="org-left">280Hz</td>
</tr>
<tr>
<td class="org-left">Y-Bending</td>
<td class="org-left">285Hz</td>
<td class="org-left">410Hz</td>
</tr>
<tr>
<td class="org-left">Z-Torsion</td>
<td class="org-left">400Hz</td>
<td class="org-left">?</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<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>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: 2021-05-06 jeu. 16:27</p>
</div>
</body>
</html>