Describe simscape model of nano-hexapod elements
BIN
docs/figs/2dof_apa_model.pdf
Normal file
BIN
docs/figs/2dof_apa_model.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
docs/figs/encoder_struts.pdf
Normal file
BIN
docs/figs/encoder_struts.png
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
docs/figs/encoders_plates_with_apa.pdf
Normal file
BIN
docs/figs/encoders_plates_with_apa.png
Normal file
After Width: | Height: | Size: 55 KiB |
BIN
docs/figs/flexible_joint_simscape.pdf
Normal file
BIN
docs/figs/flexible_joint_simscape.png
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
docs/figs/nano_hexapod_simscape_encoder_plates.pdf
Normal file
BIN
docs/figs/nano_hexapod_simscape_encoder_plates.png
Normal file
After Width: | Height: | Size: 175 KiB |
BIN
docs/figs/nano_hexapod_simscape_encoder_struts.pdf
Normal file
BIN
docs/figs/nano_hexapod_simscape_encoder_struts.png
Normal file
After Width: | Height: | Size: 200 KiB |
BIN
docs/figs/simscape_encoder_model.pdf
Normal file
BIN
docs/figs/simscape_encoder_model.png
Normal file
After Width: | Height: | Size: 9.3 KiB |
BIN
docs/figs/simscape_encoder_model_disp.pdf
Normal file
BIN
docs/figs/simscape_encoder_model_disp.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
docs/figs/simscape_model_flexible_joint.pdf
Normal file
BIN
docs/figs/simscape_model_flexible_joint.png
Normal file
After Width: | Height: | Size: 97 KiB |
@ -3,7 +3,7 @@
|
||||
"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-04-23 ven. 13:22 -->
|
||||
<!-- 2021-04-23 ven. 15:30 -->
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<title>Nano-Hexapod</title>
|
||||
<meta name="author" content="Dehaeze Thomas" />
|
||||
@ -41,7 +41,14 @@
|
||||
<ul>
|
||||
<li><a href="#org3cc44d5">1. Nano-Hexapod</a>
|
||||
<ul>
|
||||
<li><a href="#org17a9502">1.1. Nano Hexapod - Configuration</a></li>
|
||||
<li><a href="#org17a9502">1.1. Nano Hexapod - Configuration</a>
|
||||
<ul>
|
||||
<li><a href="#orgd406621">1.1.1. Flexible Joints</a></li>
|
||||
<li><a href="#org38f71cc">1.1.2. Amplified Piezoelectric Actuators</a></li>
|
||||
<li><a href="#orgad18643">1.1.3. Encoders</a></li>
|
||||
<li><a href="#org37ecf7a">1.1.4. Jacobians</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgf279891">1.2. Effect of encoders on the decentralized plant</a></li>
|
||||
<li><a href="#orgbea8fbc">1.3. Effect of APA flexibility</a></li>
|
||||
<li><a href="#orgb2e1d3b">1.4. Nano Hexapod - Number of DoF</a></li>
|
||||
@ -69,26 +76,26 @@
|
||||
</li>
|
||||
<li><a href="#org2fc54dd">2. Active Damping using Integral Force Feedback</a>
|
||||
<ul>
|
||||
<li><a href="#org662836c">2.1. Plant Identification</a></li>
|
||||
<li><a href="#org639a7fd">2.2. Root Locus</a></li>
|
||||
<li><a href="#org27a5a1e">2.1. Plant Identification</a></li>
|
||||
<li><a href="#orgec02bca">2.2. Root Locus</a></li>
|
||||
<li><a href="#org78de4b8">2.3. Effect of IFF on the plant</a></li>
|
||||
<li><a href="#org8db31cb">2.4. Effect of IFF on the compliance</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org605df2e">3. Active Damping using Direct Velocity Feedback - Encoders on the struts</a>
|
||||
<ul>
|
||||
<li><a href="#org60e2c2e">3.1. Plant Identification</a></li>
|
||||
<li><a href="#org2df6ab2">3.2. Root Locus</a></li>
|
||||
<li><a href="#org13ae74e">3.3. Effect of DVF on the plant</a></li>
|
||||
<li><a href="#org6b386dc">3.4. Effect of DVF on the compliance</a></li>
|
||||
<li><a href="#orga4e5c38">3.1. Plant Identification</a></li>
|
||||
<li><a href="#org1dfcf85">3.2. Root Locus</a></li>
|
||||
<li><a href="#org193f208">3.3. Effect of DVF on the plant</a></li>
|
||||
<li><a href="#org9d023b0">3.4. Effect of DVF on the compliance</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#orgac5a0fc">4. Active Damping using Direct Velocity Feedback - Encoders on the plates</a>
|
||||
<ul>
|
||||
<li><a href="#org27a5a1e">4.1. Plant Identification</a></li>
|
||||
<li><a href="#orgec02bca">4.2. Root Locus</a></li>
|
||||
<li><a href="#org193f208">4.3. Effect of DVF on the plant</a></li>
|
||||
<li><a href="#org9d023b0">4.4. Effect of DVF on the compliance</a></li>
|
||||
<li><a href="#orgba96a2a">4.1. Plant Identification</a></li>
|
||||
<li><a href="#org3765ca1">4.2. Root Locus</a></li>
|
||||
<li><a href="#orgf2da516">4.3. Effect of DVF on the plant</a></li>
|
||||
<li><a href="#org899e786">4.4. Effect of DVF on the compliance</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#org8862f6b">5. Function - Initialize Nano Hexapod</a>
|
||||
@ -112,16 +119,26 @@
|
||||
</div>
|
||||
|
||||
<p>
|
||||
In this document, a Simscape model of the nano-hexapod is developed.
|
||||
In this document, a Simscape model of the nano-hexapod is developed and studied (shown in Figure <a href="#org3d49703">1</a>).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
It is structured as follows:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>Section <a href="#orgc205d20">1</a>:</li>
|
||||
<li>Section <a href="#org2b71e9b">2</a>:</li>
|
||||
<li>Section <a href="#org4a93b60">3</a>:</li>
|
||||
<li>Section <a href="#org4793eb6">4</a>:</li>
|
||||
<li>Section <a href="#orgc205d20">1</a>: the simscape model of the nano-hexapod is presented. Few of its elements can be configured as wanted. The effect of the configuration on the obtained dynamics is studied.</li>
|
||||
<li>Section <a href="#org2b71e9b">2</a>: Direct Velocity Feedback is applied and the obtained damping is derived.</li>
|
||||
<li>Section <a href="#org4a93b60">3</a>: the encoders are fixed to the struts, and Integral Force Feedback is applied. The obtained damping is computed.</li>
|
||||
<li>Section <a href="#org4793eb6">4</a>: the same is done when the encoders are fixed on the plates</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<div id="org3d49703" class="figure">
|
||||
<p><img src="figs/nano_hexapod_simscape_encoder_struts.png" alt="nano_hexapod_simscape_encoder_struts.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>3D view of the Sismcape model for the Nano-Hexapod</p>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org3cc44d5" class="outline-2">
|
||||
<h2 id="org3cc44d5"><span class="section-number-2">1</span> Nano-Hexapod</h2>
|
||||
<div class="outline-text-2" id="text-1">
|
||||
@ -135,11 +152,13 @@ In this document, a Simscape model of the nano-hexapod is developed.
|
||||
<p>
|
||||
<a id="org45617af"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The nano-hexapod can be initialized and configured using the <code>initializeNanoHexapodFinal</code> function (<a href="#orgfdb5239">link</a>).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The following code would produce the model shown in Figure <a href="#org18c5aa7">2</a>.
|
||||
</p>
|
||||
<div class="org-src-container">
|
||||
<pre class="src src-matlab">n_hexapod = initializeNanoHexapodFinal(<span class="org-string">'flex_bot_type'</span>, <span class="org-string">'4dof'</span>, ...
|
||||
<span class="org-string">'flex_top_type'</span>, <span class="org-string">'3dof'</span>, ...
|
||||
@ -149,6 +168,239 @@ The nano-hexapod can be initialized and configured using the <code>initializeNan
|
||||
</pre>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="org18c5aa7" class="figure">
|
||||
<p><img src="figs/nano_hexapod_simscape_encoder_struts.png" alt="nano_hexapod_simscape_encoder_struts.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>3D view of the Sismcape model for the Nano-Hexapod</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Several elements on the nano-hexapod can be configured:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>The flexible joints (Section <a href="#org62700bb">1.1.1</a>)</li>
|
||||
<li>The amplified piezoelectric actuators (Section <a href="#orgb997bd1">1.1.2</a>)</li>
|
||||
<li>The encoders (Section <a href="#org0f30dda">1.1.3</a>)</li>
|
||||
<li>The Jacobian matrices (Section <a href="#org774815a">1.1.4</a>)</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="outline-container-orgd406621" class="outline-4">
|
||||
<h4 id="orgd406621"><span class="section-number-4">1.1.1</span> Flexible Joints</h4>
|
||||
<div class="outline-text-4" id="text-1-1-1">
|
||||
<p>
|
||||
<a id="org62700bb"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The model of the flexible joint is composed of 3 solid bodies as shown in Figure <a href="#orgc2b140d">3</a> which are connected by joints representing the flexibility of the joint.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We can represent:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>the bending flexibility \(k_{R_x}\), \(k_{R_y}\)</li>
|
||||
<li>the torsional flexibility \(k_{R_z}\)</li>
|
||||
<li>the axial flexibility \(k_z\)</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The configurations and the represented flexibilities are summarized in Table <a href="#org0696112">1</a>.
|
||||
</p>
|
||||
|
||||
<table id="org0696112" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 1:</span> Flexible joint’s configuration and associated represented flexibility</caption>
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
|
||||
<col class="org-left" />
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="org-left"><code>flex_type</code></th>
|
||||
<th scope="col" class="org-left">Bending</th>
|
||||
<th scope="col" class="org-left">Torsional</th>
|
||||
<th scope="col" class="org-left">Axial</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="org-left"><code>2dof</code></td>
|
||||
<td class="org-left">x</td>
|
||||
<td class="org-left"> </td>
|
||||
<td class="org-left"> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left"><code>3dof</code></td>
|
||||
<td class="org-left">x</td>
|
||||
<td class="org-left">x</td>
|
||||
<td class="org-left"> </td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="org-left"><code>4dof</code></td>
|
||||
<td class="org-left">x</td>
|
||||
<td class="org-left">x</td>
|
||||
<td class="org-left">x</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
Of course, adding more DoF for the flexible joint will induce an addition of many states for the nano-hexapod simscape model.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgc2b140d" class="figure">
|
||||
<p><img src="figs/simscape_model_flexible_joint.png" alt="simscape_model_flexible_joint.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>3D view of the Sismcape model for the Flexible joint (4DoF configuration)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org38f71cc" class="outline-4">
|
||||
<h4 id="org38f71cc"><span class="section-number-4">1.1.2</span> Amplified Piezoelectric Actuators</h4>
|
||||
<div class="outline-text-4" id="text-1-1-2">
|
||||
<p>
|
||||
<a id="orgb997bd1"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The nano-hexapod’s struts are containing one amplified piezoelectric actuator (APA300ML from Cedrat Technologies).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The APA can be modeled in different ways which can be configured with the <code>actuator_type</code> argument.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The simplest model is a 2-DoF system shown in Figure <a href="#org3cbbdcd">4</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org3cbbdcd" class="figure">
|
||||
<p><img src="figs/2dof_apa_model.png" alt="2dof_apa_model.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Schematic of the 2DoF model for the Amplified Piezoelectric Actuator</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Then, a more complex model based on a Finite Element Model can be used.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgad18643" class="outline-4">
|
||||
<h4 id="orgad18643"><span class="section-number-4">1.1.3</span> Encoders</h4>
|
||||
<div class="outline-text-4" id="text-1-1-3">
|
||||
<p>
|
||||
<a id="org0f30dda"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The encoders can be either fixed directly on the struts (Figure <a href="#org412bc4d">5</a>) or on the two plates (Figure <a href="#orgd827f32">6</a>).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This can be configured with the <code>motion_sensor_type</code> parameters which can be equal to <code>'struts'</code> or <code>'plates'</code>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org412bc4d" class="figure">
|
||||
<p><img src="figs/encoder_struts.png" alt="encoder_struts.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>3D view of the Encoders fixed on the struts</p>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="orgd827f32" class="figure">
|
||||
<p><img src="figs/encoders_plates_with_apa.png" alt="encoders_plates_with_apa.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>3D view of the Encoders fixed on the plates</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
A complete view of the nano-hexapod with encoders fixed to the struts is shown in Figure <a href="#org18c5aa7">2</a> while it is shown in Figure <a href="#orgb0cd7d0">7</a> when the encoders are fixed to the plates.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgb0cd7d0" class="figure">
|
||||
<p><img src="figs/nano_hexapod_simscape_encoder_plates.png" alt="nano_hexapod_simscape_encoder_plates.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Nano-Hexapod with encoders fixed to the plates</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The encoder model is schematically represented in Figure <a href="#org0184197">8</a>:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>a frame {B}, fixed to the ruler is positioned on its top surface</li>
|
||||
<li>a frame {F}, rigidly fixed to the encoder is initially positioned such that its origin is aligned with the x axis of frame {B}</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
The output measurement is then the x displacement of the origin of the frame {F} expressed in frame {B}.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="org0184197" class="figure">
|
||||
<p><img src="figs/simscape_encoder_model.png" alt="simscape_encoder_model.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Schematic of the encoder model</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
If the encoder is experiencing some tilt, it is then “converted” into a measured displacement as shown in Figure <a href="#orgd3560df">9</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<div id="orgd3560df" class="figure">
|
||||
<p><img src="figs/simscape_encoder_model_disp.png" alt="simscape_encoder_model_disp.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Schematic of the encoder model</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org37ecf7a" class="outline-4">
|
||||
<h4 id="org37ecf7a"><span class="section-number-4">1.1.4</span> Jacobians</h4>
|
||||
<div class="outline-text-4" id="text-1-1-4">
|
||||
<p>
|
||||
<a id="org774815a"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
While the Jacobian configuration will not change the physical system, it is still quite an important part of the model.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
This configuration consists on defining the location of the frame {B} in which the Jacobian will be computed.
|
||||
This Jacobian is then used to transform the actuator forces to forces/torques applied on the payload and expressed in frame {B}.
|
||||
Same thing can be done for the measured encoder displacements.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf279891" class="outline-3">
|
||||
<h3 id="orgf279891"><span class="section-number-3">1.2</span> Effect of encoders on the decentralized plant</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
<a id="org0520e45"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We here wish to compare the plant from actuators to the encoders when the encoders are either fixed on the struts or on the plates.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We initialize the identification parameters.
|
||||
</p>
|
||||
@ -166,19 +418,6 @@ io(io_i) = linio([mdl, <span class="org-string">'/F'</span>], 1, <span class="o
|
||||
io(io_i) = linio([mdl, <span class="org-string">'/D'</span>], 1, <span class="org-string">'openoutput'</span>); io_i = io_i <span class="org-type">+</span> 1; <span class="org-comment">% Relative Motion Outputs</span>
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgf279891" class="outline-3">
|
||||
<h3 id="orgf279891"><span class="section-number-3">1.2</span> Effect of encoders on the decentralized plant</h3>
|
||||
<div class="outline-text-3" id="text-1-2">
|
||||
<p>
|
||||
<a id="org0520e45"></a>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
We here wish to compare the plant from actuators to the encoders when the encoders are either fixed on the struts or on the plates.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Identify the plant when the encoders are on the struts:
|
||||
@ -211,16 +450,16 @@ Gp.OutputName = {<span class="org-string">'D1'</span>, <span class="org-string">
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained plants are compared in Figure <a href="#org4585596">1</a>.
|
||||
The obtained plants are compared in Figure <a href="#org4585596">10</a>.
|
||||
</p>
|
||||
|
||||
<div id="org4585596" class="figure">
|
||||
<p><img src="figs/nano_hexapod_effect_encoder.png" alt="nano_hexapod_effect_encoder.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 1: </span>Comparison of the plants from actuator to associated encoder when the encoders are either fixed to the struts or to the plates</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Comparison of the plants from actuator to associated encoder when the encoders are either fixed to the struts or to the plates</p>
|
||||
</div>
|
||||
|
||||
<div class="question" id="org012b9d6">
|
||||
<div class="question" id="org95ce56c">
|
||||
<p>
|
||||
Why do we have zeros at 400Hz and 800Hz when the encoders are fixed on the struts?
|
||||
</p>
|
||||
@ -271,12 +510,12 @@ Gf.OutputName = {<span class="org-string">'D1'</span>, <span class="org-string">
|
||||
<div id="orgcc0638d" class="figure">
|
||||
<p><img src="figs/nano_hexapod_effect_flexible_apa.png" alt="nano_hexapod_effect_flexible_apa.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 2: </span>Comparison of the plants from actuator to associated strut encoder when the APA are modelled with a 2DoF system of with a flexible one</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Comparison of the plants from actuator to associated strut encoder when the APA are modelled with a 2DoF system of with a flexible one</p>
|
||||
</div>
|
||||
|
||||
<div class="question" id="orgbb86739">
|
||||
<div class="question" id="orgb39641f">
|
||||
<p>
|
||||
The first resonance is strange when using the flexible APA model (Figure <a href="#orgcc0638d">2</a>).
|
||||
The first resonance is strange when using the flexible APA model (Figure <a href="#orgcc0638d">11</a>).
|
||||
Moreover the system is unstable.
|
||||
Otherwise, the 2DoF model matches quite well the flexible model considering its simplicity.
|
||||
</p>
|
||||
@ -314,11 +553,11 @@ There are 24 states.
|
||||
|
||||
|
||||
<p>
|
||||
These states are summarized on table <a href="#org3695be1">1</a>.
|
||||
These states are summarized on table <a href="#org3695be1">2</a>.
|
||||
</p>
|
||||
|
||||
<table id="org3695be1" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 1:</span> Number of states for the minimalist model</caption>
|
||||
<caption class="t-above"><span class="table-number">Table 2:</span> Number of states for the minimalist model</caption>
|
||||
|
||||
<colgroup>
|
||||
<col class="org-left" />
|
||||
@ -401,7 +640,7 @@ There are 60 states.
|
||||
</pre>
|
||||
|
||||
|
||||
<div class="important" id="org86d0d8a">
|
||||
<div class="important" id="org00c43c1">
|
||||
<p>
|
||||
Obtained number of states is very comprehensible.
|
||||
Depending on the physical effects we want to model, we therefore know how many states are added when configuring the model.
|
||||
@ -457,10 +696,10 @@ DCgain = 1.87e-08 [m/N]
|
||||
|
||||
|
||||
<p>
|
||||
Let’s verify that by looking at the DC gain of the \(6 \times 6\) DVF plant in Table <a href="#orgb62153c">2</a>.
|
||||
Let’s verify that by looking at the DC gain of the \(6 \times 6\) DVF plant in Table <a href="#orgb62153c">3</a>.
|
||||
</p>
|
||||
<table id="orgb62153c" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 2:</span> DC gain of the DVF plant</caption>
|
||||
<caption class="t-above"><span class="table-number">Table 3:</span> DC gain of the DVF plant</caption>
|
||||
|
||||
<colgroup>
|
||||
<col class="org-right" />
|
||||
@ -533,13 +772,13 @@ Let’s verify that by looking at the DC gain of the \(6 \times 6\) DVF plan
|
||||
</table>
|
||||
|
||||
<p>
|
||||
And the bode plot of the DVF plant is shown in Figure <a href="#orgc57a8a2">3</a>.
|
||||
And the bode plot of the DVF plant is shown in Figure <a href="#orgc57a8a2">12</a>.
|
||||
</p>
|
||||
|
||||
<div id="orgc57a8a2" class="figure">
|
||||
<p><img src="figs/nano_hexapod_struts_2dof_dvf_plant.png" alt="nano_hexapod_struts_2dof_dvf_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 3: </span>Bode plot of the transfer functions from actuator forces \(\tau_i\) to relative motion sensors attached to the struts \(\mathcal{L}_i\). Diagonal terms are shown in blue, and off-diagonal terms in black.</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Bode plot of the transfer functions from actuator forces \(\tau_i\) to relative motion sensors attached to the struts \(\mathcal{L}_i\). Diagonal terms are shown in blue, and off-diagonal terms in black.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -581,13 +820,13 @@ This is corresponding to the dynamics for the Integral Force Feedback (IFF) cont
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The bode plot is shown in Figure <a href="#org07c51e9">4</a>.
|
||||
The bode plot is shown in Figure <a href="#org07c51e9">13</a>.
|
||||
</p>
|
||||
|
||||
<div id="org07c51e9" class="figure">
|
||||
<p><img src="figs/nano_hexapod_struts_2dof_iff_plant.png" alt="nano_hexapod_struts_2dof_iff_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 4: </span>Bode plot of the transfer functions from actuator forces \(\tau_i\) to force sensors \(F_{m,i}\). Diagonal terms are shown in blue, and off-diagonal terms in black.</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Bode plot of the transfer functions from actuator forces \(\tau_i\) to force sensors \(F_{m,i}\). Diagonal terms are shown in blue, and off-diagonal terms in black.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -599,7 +838,7 @@ The bode plot is shown in Figure <a href="#org07c51e9">4</a>.
|
||||
<a id="org57dae9c"></a>
|
||||
</p>
|
||||
<p>
|
||||
Consider the plant shown in Figure <a href="#org936dad1">5</a> with:
|
||||
Consider the plant shown in Figure <a href="#org936dad1">14</a> with:
|
||||
</p>
|
||||
<ul class="org-ul">
|
||||
<li>\(\tau\) the 6 input forces (APA)</li>
|
||||
@ -612,7 +851,7 @@ Consider the plant shown in Figure <a href="#org936dad1">5</a> with:
|
||||
<div id="org936dad1" class="figure">
|
||||
<p><img src="figs/nano_hexapod_decentralized_schematic.png" alt="nano_hexapod_decentralized_schematic.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 5: </span>Plant in the cartesian Frame</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Plant in the cartesian Frame</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="outline-container-org435b7fd" class="outline-4">
|
||||
@ -663,13 +902,13 @@ Gsp = <span class="org-type">-</span>Gs({<span class="org-string">'Dx'</span>, <
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The diagonal elements of the plant are shown in Figure <a href="#orgb411f26">6</a>.
|
||||
The diagonal elements of the plant are shown in Figure <a href="#orgb411f26">15</a>.
|
||||
</p>
|
||||
|
||||
<div id="orgb411f26" class="figure">
|
||||
<p><img src="figs/nano_hexapod_comp_cartesian_plants_struts.png" alt="nano_hexapod_comp_cartesian_plants_struts.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 6: </span>Bode plot of the diagonal elements of the decentralized (cartesian) plant when using the sensor Jacobian (solid) and when using “perfect” 6dof sensor (dashed). The encoders are fixed on the struts.</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Bode plot of the diagonal elements of the decentralized (cartesian) plant when using the sensor Jacobian (solid) and when using “perfect” 6dof sensor (dashed). The encoders are fixed on the struts.</p>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
@ -694,16 +933,16 @@ Gpp = <span class="org-type">-</span>Gp({<span class="org-string">'Dx'</span>, <
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained bode plots are shown in Figure <a href="#org0f87318">7</a>.
|
||||
The obtained bode plots are shown in Figure <a href="#org0f87318">16</a>.
|
||||
</p>
|
||||
|
||||
<div id="org0f87318" class="figure">
|
||||
<p><img src="figs/nano_hexapod_comp_cartesian_plants_plates.png" alt="nano_hexapod_comp_cartesian_plants_plates.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 7: </span>Bode plot of the diagonal elements of the decentralized (cartesian) plant when using the sensor Jacobian (solid) and when using “perfect” 6dof sensor (dashed). The encoders are fixed on the plates.</p>
|
||||
<p><span class="figure-number">Figure 16: </span>Bode plot of the diagonal elements of the decentralized (cartesian) plant when using the sensor Jacobian (solid) and when using “perfect” 6dof sensor (dashed). The encoders are fixed on the plates.</p>
|
||||
</div>
|
||||
|
||||
<div class="important" id="org041f76c">
|
||||
<div class="important" id="org020ed63">
|
||||
<p>
|
||||
The Jacobian for the encoders is working properly both when the encoders are fixed to the plates or to the struts.
|
||||
</p>
|
||||
@ -720,13 +959,13 @@ However, then the encoders are fixed to the struts, there is a mismatch between
|
||||
<h4 id="org664eab9"><span class="section-number-4">1.7.2</span> Comparison of the decentralized plants</h4>
|
||||
<div class="outline-text-4" id="text-1-7-2">
|
||||
<p>
|
||||
The decentralized plants are now compared whether the encoders are fixed on the struts or on the plates in Figure <a href="#org34e7dd6">8</a>.
|
||||
The decentralized plants are now compared whether the encoders are fixed on the struts or on the plates in Figure <a href="#org34e7dd6">17</a>.
|
||||
</p>
|
||||
|
||||
<div id="org34e7dd6" class="figure">
|
||||
<p><img src="figs/nano_hexapod_cartesian_plant_encoder_comp.png" alt="nano_hexapod_cartesian_plant_encoder_comp.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 8: </span>Bode plot of the “cartesian” plant (transfer function from \(\mathcal{F}\) to \(d\mathcal{X}\)) when the encoders are fixed on the struts (solid) and on the plates (dashed)</p>
|
||||
<p><span class="figure-number">Figure 17: </span>Bode plot of the “cartesian” plant (transfer function from \(\mathcal{F}\) to \(d\mathcal{X}\)) when the encoders are fixed on the struts (solid) and on the plates (dashed)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -851,7 +1090,7 @@ And the (normalized) stiffness matrix is computed as follows:
|
||||
</div>
|
||||
|
||||
<table id="org2e66ef4" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 3:</span> Normalized Stiffness Matrix - Center of Stiffness</caption>
|
||||
<caption class="t-above"><span class="table-number">Table 4:</span> Normalized Stiffness Matrix - Center of Stiffness</caption>
|
||||
|
||||
<colgroup>
|
||||
<col class="org-right" />
|
||||
@ -967,10 +1206,10 @@ Then use the Jacobian matrices to obtain the “cartesian” centralized
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The DC gain of the obtained plant is shown in Table <a href="#orga2e492a">4</a>.
|
||||
The DC gain of the obtained plant is shown in Table <a href="#orga2e492a">5</a>.
|
||||
</p>
|
||||
<table id="orga2e492a" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 4:</span> DC gain of the centralized plant at the center of stiffness</caption>
|
||||
<caption class="t-above"><span class="table-number">Table 5:</span> DC gain of the centralized plant at the center of stiffness</caption>
|
||||
|
||||
<colgroup>
|
||||
<col class="org-right" />
|
||||
@ -1051,16 +1290,16 @@ As the rotations and translations have very different gains, we normalize each m
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The diagonal and off-diagonal elements are shown in Figure <a href="#org8fa550f">9</a>, and we can see good decoupling at low frequency.
|
||||
The diagonal and off-diagonal elements are shown in Figure <a href="#org8fa550f">18</a>, and we can see good decoupling at low frequency.
|
||||
</p>
|
||||
|
||||
<div id="org8fa550f" class="figure">
|
||||
<p><img src="figs/nano_hexapod_diagonal_plant_cok.png" alt="nano_hexapod_diagonal_plant_cok.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 9: </span>Diagonal and off-diagonal elements of the (normalized) decentralized plant with the Jacobians estimated at the “center of stiffness”</p>
|
||||
<p><span class="figure-number">Figure 18: </span>Diagonal and off-diagonal elements of the (normalized) decentralized plant with the Jacobians estimated at the “center of stiffness”</p>
|
||||
</div>
|
||||
|
||||
<div class="important" id="org8ee6347">
|
||||
<div class="important" id="org1cc0ffc">
|
||||
<p>
|
||||
The Jacobian matrices can be used to decoupled the plant at low frequency.
|
||||
</p>
|
||||
@ -1150,7 +1389,7 @@ ks = 1.737e+06 [N/m]
|
||||
</pre>
|
||||
|
||||
|
||||
<div class="important" id="orgc54f51b">
|
||||
<div class="important" id="orgd3162e3">
|
||||
<p>
|
||||
We can see that the axial stiffness of the flexible joint as little impact on the total axial stiffness of the struts.
|
||||
</p>
|
||||
@ -1174,10 +1413,10 @@ And the compliance matrix can be computed as the inverse of the stiffness matrix
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained compliance matrix is shown in Table <a href="#orgd518990">5</a>.
|
||||
The obtained compliance matrix is shown in Table <a href="#orgd518990">6</a>.
|
||||
</p>
|
||||
<table id="orgd518990" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 5:</span> Compliance Matrix - Perfect Joints</caption>
|
||||
<caption class="t-above"><span class="table-number">Table 6:</span> Compliance Matrix - Perfect Joints</caption>
|
||||
|
||||
<colgroup>
|
||||
<col class="org-right" />
|
||||
@ -1280,11 +1519,11 @@ It takes into account the bending and torsional stiffness of the flexible joints
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The obtained compliance matrix is shown in Table <a href="#orge9fdbd7">6</a>.
|
||||
The obtained compliance matrix is shown in Table <a href="#orge9fdbd7">7</a>.
|
||||
</p>
|
||||
|
||||
<table id="orge9fdbd7" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
|
||||
<caption class="t-above"><span class="table-number">Table 6:</span> Compliance Matrix - Estimated from Simscape</caption>
|
||||
<caption class="t-above"><span class="table-number">Table 7:</span> Compliance Matrix - Estimated from Simscape</caption>
|
||||
|
||||
<colgroup>
|
||||
<col class="org-right" />
|
||||
@ -1356,10 +1595,10 @@ The obtained compliance matrix is shown in Table <a href="#orge9fdbd7">6</a>.
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="important" id="orga2489c7">
|
||||
<div class="important" id="orgfe9dea1">
|
||||
<p>
|
||||
The bending and torsional stiffness of the flexible joints induces a lot of coupling between forces/torques applied to the to platform to its displacement/rotation.
|
||||
It can be seen by comparison the compliance matrices in Tables <a href="#orgd518990">5</a> and <a href="#orge9fdbd7">6</a>.
|
||||
It can be seen by comparison the compliance matrices in Tables <a href="#orgd518990">6</a> and <a href="#orge9fdbd7">7</a>.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
@ -1388,8 +1627,8 @@ It is structured as follows:
|
||||
<li>Section <a href="#org4218d2b">2.4</a>: the IFF is applied, and the effect on the compliance is identified</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="outline-container-org662836c" class="outline-3">
|
||||
<h3 id="org662836c"><span class="section-number-3">2.1</span> Plant Identification</h3>
|
||||
<div id="outline-container-org27a5a1e" class="outline-3">
|
||||
<h3 id="org27a5a1e"><span class="section-number-3">2.1</span> Plant Identification</h3>
|
||||
<div class="outline-text-3" id="text-2-1">
|
||||
<p>
|
||||
<a id="orgefb596b"></a>
|
||||
@ -1435,13 +1674,13 @@ Its bode plot is shown in Figure
|
||||
<div id="org04c9b24" class="figure">
|
||||
<p><img src="figs/nano_hexapod_iff_plant_bode_plot.png" alt="nano_hexapod_iff_plant_bode_plot.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 10: </span>Integral Force Feedback plant</p>
|
||||
<p><span class="figure-number">Figure 19: </span>Integral Force Feedback plant</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org639a7fd" class="outline-3">
|
||||
<h3 id="org639a7fd"><span class="section-number-3">2.2</span> Root Locus</h3>
|
||||
<div id="outline-container-orgec02bca" class="outline-3">
|
||||
<h3 id="orgec02bca"><span class="section-number-3">2.2</span> Root Locus</h3>
|
||||
<div class="outline-text-3" id="text-2-2">
|
||||
<p>
|
||||
<a id="org73c92c6"></a>
|
||||
@ -1467,14 +1706,14 @@ It is here chosen to have quite a large \(\omega_c\) in order to not modify the
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained Root Locus is shown in Figure <a href="#orgbabd5ad">11</a>.
|
||||
The obtained Root Locus is shown in Figure <a href="#orgbabd5ad">20</a>.
|
||||
The control gain chosen for future plots is shown by the red crosses.
|
||||
</p>
|
||||
|
||||
<div id="orgbabd5ad" class="figure">
|
||||
<p><img src="figs/nano_hexapod_iff_root_locus.png" alt="nano_hexapod_iff_root_locus.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 11: </span>Root locus for the decentralized IFF control strategy</p>
|
||||
<p><span class="figure-number">Figure 20: </span>Root locus for the decentralized IFF control strategy</p>
|
||||
</div>
|
||||
|
||||
|
||||
@ -1487,14 +1726,14 @@ The obtained controller is then:
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The corresponding loop gain of the diagonal terms are shown in Figure <a href="#orgf2697cd">12</a>.
|
||||
The corresponding loop gain of the diagonal terms are shown in Figure <a href="#orgf2697cd">21</a>.
|
||||
It is shown that the loop gain is quite large around resonances (which allows to add lots of damping) and less than one at low frequency thanks to the large value of \(\omega_c\).
|
||||
</p>
|
||||
|
||||
<div id="orgf2697cd" class="figure">
|
||||
<p><img src="figs/nano_hexapod_iff_loop_gain.png" alt="nano_hexapod_iff_loop_gain.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 12: </span>Loop gain of the diagonal terms \(G(i,i) \cdot K_{\text{IFF}}(i,i)\)</p>
|
||||
<p><span class="figure-number">Figure 21: </span>Loop gain of the diagonal terms \(G(i,i) \cdot K_{\text{IFF}}(i,i)\)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1540,16 +1779,16 @@ Giff.OutputName = {<span class="org-string">'D1'</span>, <span class="org-string
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained plants are compared in Figure <a href="#org6f0aecc">13</a>.
|
||||
The obtained plants are compared in Figure <a href="#org6f0aecc">22</a>.
|
||||
</p>
|
||||
|
||||
<div id="org6f0aecc" class="figure">
|
||||
<p><img src="figs/nano_hexapod_effect_iff_plant.png" alt="nano_hexapod_effect_iff_plant.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 13: </span>Bode plots of the transfer functions from actuator forces \(\tau_i\) to relative motion sensors \(\mathcal{L}_i\) with and without the IFF controller.</p>
|
||||
<p><span class="figure-number">Figure 22: </span>Bode plots of the transfer functions from actuator forces \(\tau_i\) to relative motion sensors \(\mathcal{L}_i\) with and without the IFF controller.</p>
|
||||
</div>
|
||||
|
||||
<div class="important" id="orgc82f9c7">
|
||||
<div class="important" id="org95812b9">
|
||||
<p>
|
||||
The Integral Force Feedback Strategy is very effective to damp the 6 suspension modes of the nano-hexapod.
|
||||
</p>
|
||||
@ -1574,10 +1813,10 @@ The obtained compliances are compared in Figure
|
||||
<div id="org967b766" class="figure">
|
||||
<p><img src="figs/nano_hexapod_iff_compare_compliance.png" alt="nano_hexapod_iff_compare_compliance.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 14: </span>Comparison of the compliances in Open Loop and with Integral Force Feedback controller</p>
|
||||
<p><span class="figure-number">Figure 23: </span>Comparison of the compliances in Open Loop and with Integral Force Feedback controller</p>
|
||||
</div>
|
||||
|
||||
<div class="important" id="org5963287">
|
||||
<div class="important" id="org91ce603">
|
||||
<p>
|
||||
The use of IFF induces a degradation of the compliance.
|
||||
This degradation is limited due to the use of a pseudo integrator (instead of a pure integrator).
|
||||
@ -1609,8 +1848,8 @@ It is structured as follows:
|
||||
<li>Section <a href="#orga2ec7d1">3.4</a>: the DVF is applied, and the effect on the compliance is identified</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="outline-container-org60e2c2e" class="outline-3">
|
||||
<h3 id="org60e2c2e"><span class="section-number-3">3.1</span> Plant Identification</h3>
|
||||
<div id="outline-container-orga4e5c38" class="outline-3">
|
||||
<h3 id="orga4e5c38"><span class="section-number-3">3.1</span> Plant Identification</h3>
|
||||
<div class="outline-text-3" id="text-3-1">
|
||||
<p>
|
||||
<a id="org4001a2b"></a>
|
||||
@ -1650,19 +1889,19 @@ Gdvf.OutputName = {<span class="org-string">'D1'</span>, <span class="org-string
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Its bode plot is shown in Figure <a href="#org74d2115">15</a>.
|
||||
Its bode plot is shown in Figure <a href="#org74d2115">24</a>.
|
||||
</p>
|
||||
|
||||
<div id="org74d2115" class="figure">
|
||||
<p><img src="figs/nano_hexapod_dvf_plant_bode_plot_struts.png" alt="nano_hexapod_dvf_plant_bode_plot_struts.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 15: </span>Direct Velocity Feedback plant</p>
|
||||
<p><span class="figure-number">Figure 24: </span>Direct Velocity Feedback plant</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org2df6ab2" class="outline-3">
|
||||
<h3 id="org2df6ab2"><span class="section-number-3">3.2</span> Root Locus</h3>
|
||||
<div id="outline-container-org1dfcf85" class="outline-3">
|
||||
<h3 id="org1dfcf85"><span class="section-number-3">3.2</span> Root Locus</h3>
|
||||
<div class="outline-text-3" id="text-3-2">
|
||||
<p>
|
||||
<a id="orgdc1ec5b"></a>
|
||||
@ -1685,14 +1924,14 @@ The value of \(\omega_d\) sets the frequency above high the derivative action is
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained Root Locus is shown in Figure <a href="#org97058e3">16</a>.
|
||||
The obtained Root Locus is shown in Figure <a href="#org97058e3">25</a>.
|
||||
The control gain chosen for future plots is shown by the red crosses.
|
||||
</p>
|
||||
|
||||
<div id="org97058e3" class="figure">
|
||||
<p><img src="figs/nano_hexapod_dvf_root_locus_struts.png" alt="nano_hexapod_dvf_root_locus_struts.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 16: </span>Root locus for the decentralized DVF control strategy</p>
|
||||
<p><span class="figure-number">Figure 25: </span>Root locus for the decentralized DVF control strategy</p>
|
||||
</div>
|
||||
|
||||
|
||||
@ -1705,20 +1944,20 @@ The obtained controller is then:
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The corresponding loop gain of the diagonal terms are shown in Figure <a href="#org9d6044c">17</a>.
|
||||
The corresponding loop gain of the diagonal terms are shown in Figure <a href="#org9d6044c">26</a>.
|
||||
It is shown that the loop gain is quite large around resonances (which allows to add lots of damping) and less than one at low frequency thanks to the large value of \(\omega_c\).
|
||||
</p>
|
||||
|
||||
<div id="org9d6044c" class="figure">
|
||||
<p><img src="figs/nano_hexapod_dvf_loop_gain_struts.png" alt="nano_hexapod_dvf_loop_gain_struts.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 17: </span>Loop gain of the diagonal terms \(G(i,i) \cdot K_{\text{DVF}}(i,i)\)</p>
|
||||
<p><span class="figure-number">Figure 26: </span>Loop gain of the diagonal terms \(G(i,i) \cdot K_{\text{DVF}}(i,i)\)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org13ae74e" class="outline-3">
|
||||
<h3 id="org13ae74e"><span class="section-number-3">3.3</span> Effect of DVF on the plant</h3>
|
||||
<div id="outline-container-org193f208" class="outline-3">
|
||||
<h3 id="org193f208"><span class="section-number-3">3.3</span> Effect of DVF on the plant</h3>
|
||||
<div class="outline-text-3" id="text-3-3">
|
||||
<p>
|
||||
<a id="orgabd539f"></a>
|
||||
@ -1758,16 +1997,16 @@ Gdvf.OutputName = {<span class="org-string">'D1'</span>, <span class="org-string
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained plants are compared in Figure <a href="#org0a91ea3">18</a>.
|
||||
The obtained plants are compared in Figure <a href="#org0a91ea3">27</a>.
|
||||
</p>
|
||||
|
||||
<div id="org0a91ea3" class="figure">
|
||||
<p><img src="figs/nano_hexapod_effect_dvf_plant_struts.png" alt="nano_hexapod_effect_dvf_plant_struts.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 18: </span>Bode plots of the transfer functions from actuator forces \(\tau_i\) to relative motion sensors \(\mathcal{L}_i\) with and without the DVF controller.</p>
|
||||
<p><span class="figure-number">Figure 27: </span>Bode plots of the transfer functions from actuator forces \(\tau_i\) to relative motion sensors \(\mathcal{L}_i\) with and without the DVF controller.</p>
|
||||
</div>
|
||||
|
||||
<div class="important" id="org93cd044">
|
||||
<div class="important" id="orgd02396d">
|
||||
<p>
|
||||
The Direct Velocity Feedback Strategy is very effective to damp the 6 suspension modes of the nano-hexapod.
|
||||
</p>
|
||||
@ -1776,8 +2015,8 @@ The Direct Velocity Feedback Strategy is very effective to damp the 6 suspension
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org6b386dc" class="outline-3">
|
||||
<h3 id="org6b386dc"><span class="section-number-3">3.4</span> Effect of DVF on the compliance</h3>
|
||||
<div id="outline-container-org9d023b0" class="outline-3">
|
||||
<h3 id="org9d023b0"><span class="section-number-3">3.4</span> Effect of DVF on the compliance</h3>
|
||||
<div class="outline-text-3" id="text-3-4">
|
||||
<p>
|
||||
<a id="orga2ec7d1"></a>
|
||||
@ -1786,13 +2025,13 @@ The Direct Velocity Feedback Strategy is very effective to damp the 6 suspension
|
||||
<p>
|
||||
The DVF strategy has the well known drawback of degrading the compliance (transfer function from external forces/torques applied to the top platform to the motion of the top platform), especially at low frequency where the control gain is large.
|
||||
Let’s quantify that for the nano-hexapod.
|
||||
The obtained compliances are compared in Figure <a href="#org914f0c2">19</a>.
|
||||
The obtained compliances are compared in Figure <a href="#org914f0c2">28</a>.
|
||||
</p>
|
||||
|
||||
<div id="org914f0c2" class="figure">
|
||||
<p><img src="figs/nano_hexapod_dvf_compare_compliance_struts.png" alt="nano_hexapod_dvf_compare_compliance_struts.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 19: </span>Comparison of the compliances in Open Loop and with Direct Velocity Feedback controller</p>
|
||||
<p><span class="figure-number">Figure 28: </span>Comparison of the compliances in Open Loop and with Direct Velocity Feedback controller</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1818,8 +2057,8 @@ It is structured as follows:
|
||||
<li>Section <a href="#org3d1c930">4.4</a>: the DVF is applied, and the effect on the compliance is identified</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="outline-container-org27a5a1e" class="outline-3">
|
||||
<h3 id="org27a5a1e"><span class="section-number-3">4.1</span> Plant Identification</h3>
|
||||
<div id="outline-container-orgba96a2a" class="outline-3">
|
||||
<h3 id="orgba96a2a"><span class="section-number-3">4.1</span> Plant Identification</h3>
|
||||
<div class="outline-text-3" id="text-4-1">
|
||||
<p>
|
||||
<a id="org3b01a3d"></a>
|
||||
@ -1859,19 +2098,19 @@ Gdvf.OutputName = {<span class="org-string">'D1'</span>, <span class="org-string
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Its bode plot is shown in Figure <a href="#org1fb624b">20</a>.
|
||||
Its bode plot is shown in Figure <a href="#org1fb624b">29</a>.
|
||||
</p>
|
||||
|
||||
<div id="org1fb624b" class="figure">
|
||||
<p><img src="figs/nano_hexapod_dvf_plant_bode_plot_plates.png" alt="nano_hexapod_dvf_plant_bode_plot_plates.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 20: </span>Direct Velocity Feedback plant</p>
|
||||
<p><span class="figure-number">Figure 29: </span>Direct Velocity Feedback plant</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-orgec02bca" class="outline-3">
|
||||
<h3 id="orgec02bca"><span class="section-number-3">4.2</span> Root Locus</h3>
|
||||
<div id="outline-container-org3765ca1" class="outline-3">
|
||||
<h3 id="org3765ca1"><span class="section-number-3">4.2</span> Root Locus</h3>
|
||||
<div class="outline-text-3" id="text-4-2">
|
||||
<p>
|
||||
<a id="org40fe804"></a>
|
||||
@ -1894,14 +2133,14 @@ The value of \(\omega_d\) sets the frequency above high the derivative action is
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained Root Locus is shown in Figure <a href="#org1804a8d">21</a>.
|
||||
The obtained Root Locus is shown in Figure <a href="#org1804a8d">30</a>.
|
||||
The control gain chosen for future plots is shown by the red crosses.
|
||||
</p>
|
||||
|
||||
<div id="org1804a8d" class="figure">
|
||||
<p><img src="figs/nano_hexapod_dvf_root_locus_plates.png" alt="nano_hexapod_dvf_root_locus_plates.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 21: </span>Root locus for the decentralized DVF control strategy</p>
|
||||
<p><span class="figure-number">Figure 30: </span>Root locus for the decentralized DVF control strategy</p>
|
||||
</div>
|
||||
|
||||
|
||||
@ -1914,20 +2153,20 @@ The obtained controller is then:
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The corresponding loop gain of the diagonal terms are shown in Figure <a href="#orgb9967dd">22</a>.
|
||||
The corresponding loop gain of the diagonal terms are shown in Figure <a href="#orgb9967dd">31</a>.
|
||||
It is shown that the loop gain is quite large around resonances (which allows to add lots of damping).
|
||||
</p>
|
||||
|
||||
<div id="orgb9967dd" class="figure">
|
||||
<p><img src="figs/nano_hexapod_dvf_loop_gain_plates.png" alt="nano_hexapod_dvf_loop_gain_plates.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 22: </span>Loop gain of the diagonal terms \(G(i,i) \cdot K_{\text{DVF}}(i,i)\)</p>
|
||||
<p><span class="figure-number">Figure 31: </span>Loop gain of the diagonal terms \(G(i,i) \cdot K_{\text{DVF}}(i,i)\)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org193f208" class="outline-3">
|
||||
<h3 id="org193f208"><span class="section-number-3">4.3</span> Effect of DVF on the plant</h3>
|
||||
<div id="outline-container-orgf2da516" class="outline-3">
|
||||
<h3 id="orgf2da516"><span class="section-number-3">4.3</span> Effect of DVF on the plant</h3>
|
||||
<div class="outline-text-3" id="text-4-3">
|
||||
<p>
|
||||
<a id="org405f6f4"></a>
|
||||
@ -1967,16 +2206,16 @@ Gdvf.OutputName = {<span class="org-string">'D1'</span>, <span class="org-string
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The obtained plants are compared in Figure <a href="#org4dcecf3">23</a>.
|
||||
The obtained plants are compared in Figure <a href="#org4dcecf3">32</a>.
|
||||
</p>
|
||||
|
||||
<div id="org4dcecf3" class="figure">
|
||||
<p><img src="figs/nano_hexapod_effect_dvf_plant_plates.png" alt="nano_hexapod_effect_dvf_plant_plates.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 23: </span>Bode plots of the transfer functions from actuator forces \(\tau_i\) to relative motion sensors \(\mathcal{L}_i\) with and without the DVF controller.</p>
|
||||
<p><span class="figure-number">Figure 32: </span>Bode plots of the transfer functions from actuator forces \(\tau_i\) to relative motion sensors \(\mathcal{L}_i\) with and without the DVF controller.</p>
|
||||
</div>
|
||||
|
||||
<div class="important" id="orgcb28fec">
|
||||
<div class="important" id="org221a261">
|
||||
<p>
|
||||
The Direct Velocity Feedback Strategy is very effective in damping the 6 suspension modes of the nano-hexapod.
|
||||
</p>
|
||||
@ -1985,8 +2224,8 @@ The Direct Velocity Feedback Strategy is very effective in damping the 6 suspens
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="outline-container-org9d023b0" class="outline-3">
|
||||
<h3 id="org9d023b0"><span class="section-number-3">4.4</span> Effect of DVF on the compliance</h3>
|
||||
<div id="outline-container-org899e786" class="outline-3">
|
||||
<h3 id="org899e786"><span class="section-number-3">4.4</span> Effect of DVF on the compliance</h3>
|
||||
<div class="outline-text-3" id="text-4-4">
|
||||
<p>
|
||||
<a id="org3d1c930"></a>
|
||||
@ -1995,13 +2234,13 @@ The Direct Velocity Feedback Strategy is very effective in damping the 6 suspens
|
||||
<p>
|
||||
The DVF strategy has the well known drawback of degrading the compliance (transfer function from external forces/torques applied to the top platform to the motion of the top platform), especially at low frequency where the control gain is large.
|
||||
Let’s quantify that for the nano-hexapod.
|
||||
The obtained compliances are compared in Figure <a href="#org5baf997">24</a>.
|
||||
The obtained compliances are compared in Figure <a href="#org5baf997">33</a>.
|
||||
</p>
|
||||
|
||||
<div id="org5baf997" class="figure">
|
||||
<p><img src="figs/nano_hexapod_dvf_compare_compliance_plates.png" alt="nano_hexapod_dvf_compare_compliance_plates.png" />
|
||||
</p>
|
||||
<p><span class="figure-number">Figure 24: </span>Comparison of the compliances in Open Loop and with Direct Velocity Feedback controller</p>
|
||||
<p><span class="figure-number">Figure 33: </span>Comparison of the compliances in Open Loop and with Direct Velocity Feedback controller</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -2069,7 +2308,7 @@ The obtained compliances are compared in Figure <a href="#org5baf997">24</a>.
|
||||
<span class="org-comment">% For Flexible Frame</span>
|
||||
<span class="org-variable-name">args</span>.actuator_ks (6,1) double {mustBeNumeric} = ones(6,1)<span class="org-type">*</span>235e6 <span class="org-comment">% Stiffness of one stack [N/m]</span>
|
||||
<span class="org-variable-name">args</span>.actuator_cs (6,1) double {mustBeNumeric} = ones(6,1)<span class="org-type">*</span>1e1 <span class="org-comment">% Stiffness of one stack [N/m]</span>
|
||||
<span class="org-comment">% For Flexible</span>
|
||||
|
||||
<span class="org-variable-name">args</span>.actuator_xi (1,1) double {mustBeNumeric} = 0.01 <span class="org-comment">% Damping Ratio</span>
|
||||
<span class="org-matlab-cellbreak"><span class="org-comment">%% Controller</span></span>
|
||||
<span class="org-variable-name">args</span>.controller_type char {mustBeMember(args.controller_type,{<span class="org-string">'none'</span>, <span class="org-string">'iff'</span>, <span class="org-string">'dvf'</span>})} = <span class="org-string">'none'</span>
|
||||
@ -2369,7 +2608,7 @@ nano_hexapod.geometry.J = [nano_hexapod.geometry.si<span class="org-type">'</spa
|
||||
</div>
|
||||
<div id="postamble" class="status">
|
||||
<p class="author">Author: Dehaeze Thomas</p>
|
||||
<p class="date">Created: 2021-04-23 ven. 13:22</p>
|
||||
<p class="date">Created: 2021-04-23 ven. 15:30</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,12 +3,18 @@
|
||||
|
||||
* Introduction :ignore:
|
||||
|
||||
In this document, a Simscape model of the nano-hexapod is developed.
|
||||
In this document, a Simscape model of the nano-hexapod is developed and studied (shown in Figure [[fig:nano_hexapod_simscape]]).
|
||||
|
||||
- Section [[sec:nano_hexapod]]:
|
||||
- Section [[sec:integral_force_feedback]]:
|
||||
- Section [[sec:direct_velocity_feedback_struts]]:
|
||||
- Section [[sec:direct_velocity_feedback_plates]]:
|
||||
It is structured as follows:
|
||||
- Section [[sec:nano_hexapod]]: the simscape model of the nano-hexapod is presented. Few of its elements can be configured as wanted. The effect of the configuration on the obtained dynamics is studied.
|
||||
- Section [[sec:integral_force_feedback]]: Direct Velocity Feedback is applied and the obtained damping is derived.
|
||||
- Section [[sec:direct_velocity_feedback_struts]]: the encoders are fixed to the struts, and Integral Force Feedback is applied. The obtained damping is computed.
|
||||
- Section [[sec:direct_velocity_feedback_plates]]: the same is done when the encoders are fixed on the plates
|
||||
|
||||
#+name: fig:nano_hexapod_simscape
|
||||
#+caption: 3D view of the Sismcape model for the Nano-Hexapod
|
||||
#+attr_latex: :width \linewidth
|
||||
[[file:figs/nano_hexapod_simscape_encoder_struts.png]]
|
||||
|
||||
* Nano-Hexapod
|
||||
<<sec:nano_hexapod>>
|
||||
@ -39,9 +45,10 @@ open('matlab/nano_hexapod/nano_hexapod.slx')
|
||||
|
||||
** Nano Hexapod - Configuration
|
||||
<<sec:nano_hexapod_conf>>
|
||||
|
||||
*** Introduction :ignore:
|
||||
The nano-hexapod can be initialized and configured using the =initializeNanoHexapodFinal= function ([[sec:initializeNanoHexapodFinal][link]]).
|
||||
|
||||
The following code would produce the model shown in Figure [[fig:nano_hexapod_simscape_encoder_struts]].
|
||||
#+begin_src matlab
|
||||
n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
||||
'flex_top_type', '3dof', ...
|
||||
@ -50,6 +57,115 @@ n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
||||
'MO_B', 150e-3);
|
||||
#+end_src
|
||||
|
||||
#+name: fig:nano_hexapod_simscape_encoder_struts
|
||||
#+caption: 3D view of the Sismcape model for the Nano-Hexapod
|
||||
#+attr_latex: :width \linewidth
|
||||
[[file:figs/nano_hexapod_simscape_encoder_struts.png]]
|
||||
|
||||
Several elements on the nano-hexapod can be configured:
|
||||
- The flexible joints (Section [[sec:conf_flexible_joint]])
|
||||
- The amplified piezoelectric actuators (Section [[sec:conf_apa]])
|
||||
- The encoders (Section [[sec:conf_encoders]])
|
||||
- The Jacobian matrices (Section [[sec:conf_jacobian]])
|
||||
|
||||
*** Flexible Joints
|
||||
<<sec:conf_flexible_joint>>
|
||||
|
||||
The model of the flexible joint is composed of 3 solid bodies as shown in Figure [[fig:simscape_model_flexible_joint]] which are connected by joints representing the flexibility of the joint.
|
||||
|
||||
We can represent:
|
||||
- the bending flexibility $k_{R_x}$, $k_{R_y}$
|
||||
- the torsional flexibility $k_{R_z}$
|
||||
- the axial flexibility $k_z$
|
||||
|
||||
The configurations and the represented flexibilities are summarized in Table [[tab:flex_type_conf]].
|
||||
|
||||
#+name: tab:flex_type_conf
|
||||
#+caption: Flexible joint's configuration and associated represented flexibility
|
||||
#+attr_latex: :environment tabularx :width 0.6\linewidth :align lXXX
|
||||
#+attr_latex: :center t :booktabs t :float t
|
||||
| =flex_type= | Bending | Torsional | Axial |
|
||||
|-------------+---------+-----------+-------|
|
||||
| =2dof= | x | | |
|
||||
| =3dof= | x | x | |
|
||||
| =4dof= | x | x | x |
|
||||
|
||||
Of course, adding more DoF for the flexible joint will induce an addition of many states for the nano-hexapod simscape model.
|
||||
|
||||
#+name: fig:simscape_model_flexible_joint
|
||||
#+caption: 3D view of the Sismcape model for the Flexible joint (4DoF configuration)
|
||||
#+attr_latex: :width 0.8\linewidth
|
||||
[[file:figs/simscape_model_flexible_joint.png]]
|
||||
|
||||
*** Amplified Piezoelectric Actuators
|
||||
<<sec:conf_apa>>
|
||||
|
||||
The nano-hexapod's struts are containing one amplified piezoelectric actuator (APA300ML from Cedrat Technologies).
|
||||
|
||||
The APA can be modeled in different ways which can be configured with the =actuator_type= argument.
|
||||
|
||||
The simplest model is a 2-DoF system shown in Figure [[fig:2dof_apa_model]].
|
||||
|
||||
#+name: fig:2dof_apa_model
|
||||
#+caption: Schematic of the 2DoF model for the Amplified Piezoelectric Actuator
|
||||
[[file:figs/2dof_apa_model.png]]
|
||||
|
||||
Then, a more complex model based on a Finite Element Model can be used.
|
||||
|
||||
*** Encoders
|
||||
<<sec:conf_encoders>>
|
||||
|
||||
The encoders can be either fixed directly on the struts (Figure [[fig:encoder_struts]]) or on the two plates (Figure [[fig:encoders_plates_with_apa]]).
|
||||
|
||||
This can be configured with the =motion_sensor_type= parameters which can be equal to ='struts'= or ='plates'=.
|
||||
|
||||
#+name: fig:encoder_struts
|
||||
#+caption: 3D view of the Encoders fixed on the struts
|
||||
#+attr_latex: :width 0.8\linewidth
|
||||
[[file:figs/encoder_struts.png]]
|
||||
|
||||
#+name: fig:encoders_plates_with_apa
|
||||
#+caption: 3D view of the Encoders fixed on the plates
|
||||
#+attr_latex: :width 0.6\linewidth
|
||||
[[file:figs/encoders_plates_with_apa.png]]
|
||||
|
||||
A complete view of the nano-hexapod with encoders fixed to the struts is shown in Figure [[fig:nano_hexapod_simscape_encoder_struts]] while it is shown in Figure [[fig:nano_hexapod_simscape_encoder_plates]] when the encoders are fixed to the plates.
|
||||
|
||||
#+name: fig:nano_hexapod_simscape_encoder_plates
|
||||
#+caption: Nano-Hexapod with encoders fixed to the plates
|
||||
#+attr_latex: :width \linewidth
|
||||
[[file:figs/nano_hexapod_simscape_encoder_plates.png]]
|
||||
|
||||
The encoder model is schematically represented in Figure [[fig:simscape_encoder_model]]:
|
||||
- a frame {B}, fixed to the ruler is positioned on its top surface
|
||||
- a frame {F}, rigidly fixed to the encoder is initially positioned such that its origin is aligned with the x axis of frame {B}
|
||||
|
||||
The output measurement is then the x displacement of the origin of the frame {F} expressed in frame {B}.
|
||||
|
||||
#+name: fig:simscape_encoder_model
|
||||
#+caption: Schematic of the encoder model
|
||||
[[file:figs/simscape_encoder_model.png]]
|
||||
|
||||
If the encoder is experiencing some tilt, it is then "converted" into a measured displacement as shown in Figure [[fig:simscape_encoder_model_disp]].
|
||||
|
||||
#+name: fig:simscape_encoder_model_disp
|
||||
#+caption: Schematic of the encoder model
|
||||
[[file:figs/simscape_encoder_model_disp.png]]
|
||||
|
||||
*** Jacobians
|
||||
<<sec:conf_jacobian>>
|
||||
|
||||
While the Jacobian configuration will not change the physical system, it is still quite an important part of the model.
|
||||
|
||||
This configuration consists on defining the location of the frame {B} in which the Jacobian will be computed.
|
||||
This Jacobian is then used to transform the actuator forces to forces/torques applied on the payload and expressed in frame {B}.
|
||||
Same thing can be done for the measured encoder displacements.
|
||||
|
||||
** Effect of encoders on the decentralized plant
|
||||
<<sec:effect_encoder_location>>
|
||||
|
||||
We here wish to compare the plant from actuators to the encoders when the encoders are either fixed on the struts or on the plates.
|
||||
|
||||
We initialize the identification parameters.
|
||||
#+begin_src matlab
|
||||
%% Options for Linearized
|
||||
@ -65,11 +181,6 @@ io(io_i) = linio([mdl, '/F'], 1, 'openinput'); io_i = io_i + 1; % Actuator Inp
|
||||
io(io_i) = linio([mdl, '/D'], 1, 'openoutput'); io_i = io_i + 1; % Relative Motion Outputs
|
||||
#+end_src
|
||||
|
||||
** Effect of encoders on the decentralized plant
|
||||
<<sec:effect_encoder_location>>
|
||||
|
||||
We here wish to compare the plant from actuators to the encoders when the encoders are either fixed on the struts or on the plates.
|
||||
|
||||
Identify the plant when the encoders are on the struts:
|
||||
#+begin_src matlab
|
||||
n_hexapod = initializeNanoHexapodFinal('flex_bot_type', '4dof', ...
|
||||
@ -3183,7 +3294,7 @@ arguments
|
||||
% For Flexible Frame
|
||||
args.actuator_ks (6,1) double {mustBeNumeric} = ones(6,1)*235e6 % Stiffness of one stack [N/m]
|
||||
args.actuator_cs (6,1) double {mustBeNumeric} = ones(6,1)*1e1 % Stiffness of one stack [N/m]
|
||||
% For Flexible
|
||||
|
||||
args.actuator_xi (1,1) double {mustBeNumeric} = 0.01 % Damping Ratio
|
||||
%% Controller
|
||||
args.controller_type char {mustBeMember(args.controller_type,{'none', 'iff', 'dvf'})} = 'none'
|
||||
|