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