diff --git a/.gitignore b/.gitignore index 0cadd73..6b7e1a4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,37 +1,260 @@ -auto/ -.auctex-auto/ -*.tex - -nohup.out - -**/figs/*.svg -**/figs/*.tex - -# Windows default autosave extension -*.asv - -# OSX / *nix default autosave extension -*.m~ - -# Compiled MEX binaries (all platforms) -*.mex* - -# Packaged app and toolbox files -*.mlappinstall -*.mltbx - -# Generated helpsearch folders -helpsearch*/ - -# Simulink code generation folders +mat/ +figures/ +ltximg/ slprj/ -sccprj/ - -# Simulink autosave extension -*.autosave - -# Octave session info -octave-workspace - -# Simulink Cache +matlab/slprj/ *.slxc + + +# ============================================================ +# ============================================================ +# LATEX +# ============================================================ +# ============================================================ + +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Comment the next line if you want to keep your tikz graphics files +*.tikz +*-tikzDictionary + +# listings +*.lol + +# makeidx +*.idx +*.ilg +*.ind +*.ist + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# todonotes +*.tdo + +# easy-todo +*.lod + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices +*.xyc + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# KBibTeX +*~[0-9]* + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta diff --git a/figs/amplified_piezo_interface_nodes.pdf b/figs/amplified_piezo_interface_nodes.pdf new file mode 100644 index 0000000..5e6178e Binary files /dev/null and b/figs/amplified_piezo_interface_nodes.pdf differ diff --git a/figs/apa300ml_ansys.jpg b/figs/apa300ml_ansys.jpg old mode 100755 new mode 100644 diff --git a/figs/flexible_joint_simscape.pdf b/figs/flexible_joint_simscape.pdf new file mode 100644 index 0000000..d3c5cc4 Binary files /dev/null and b/figs/flexible_joint_simscape.pdf differ diff --git a/figs/flexor_025_CS.jpg b/figs/flexor_025_CS.jpg old mode 100755 new mode 100644 diff --git a/figs/flexor_025_Geometry.jpg b/figs/flexor_025_Geometry.jpg old mode 100755 new mode 100644 diff --git a/figs/flexor_025_MDoF.jpg b/figs/flexor_025_MDoF.jpg old mode 100755 new mode 100644 diff --git a/figs/flexor_ID16_compare_bushing_joint_optimized.pdf b/figs/flexor_ID16_compare_bushing_joint_optimized.pdf new file mode 100644 index 0000000..0621de0 Binary files /dev/null and b/figs/flexor_ID16_compare_bushing_joint_optimized.pdf differ diff --git a/figs/flexor_ID16_compare_bushing_joint_optimized.png b/figs/flexor_ID16_compare_bushing_joint_optimized.png new file mode 100644 index 0000000..d7a3e45 Binary files /dev/null and b/figs/flexor_ID16_compare_bushing_joint_optimized.png differ diff --git a/figs/flexor_id16_screenshot.pdf b/figs/flexor_id16_screenshot.pdf new file mode 100644 index 0000000..d27faea Binary files /dev/null and b/figs/flexor_id16_screenshot.pdf differ diff --git a/figs/souleille18_model_piezo.pdf b/figs/souleille18_model_piezo.pdf new file mode 100644 index 0000000..f8c4827 Binary files /dev/null and b/figs/souleille18_model_piezo.pdf differ diff --git a/figs/souleille18_results.pdf b/figs/souleille18_results.pdf new file mode 100644 index 0000000..61b1857 Binary files /dev/null and b/figs/souleille18_results.pdf differ diff --git a/figs/strut_fem_nodes.jpg b/figs/strut_fem_nodes.jpg old mode 100755 new mode 100644 diff --git a/figs/strut_fem_nodes_side.jpg b/figs/strut_fem_nodes_side.jpg old mode 100755 new mode 100644 diff --git a/index.html b/index.html deleted file mode 100644 index 0f8c37d..0000000 --- a/index.html +++ /dev/null @@ -1,2848 +0,0 @@ - - - - - - -NASS - Finite Element Models with Simscape - - - - - - - - -
- UP - | - HOME -
-

NASS - Finite Element Models with Simscape

-
-

Table of Contents

- -
- -

-In this document, Finite Element Models (FEM) of parts of the Nano-Hexapod are developed and integrated into Simscape for dynamical analysis. -

- -

-It is divided in the following sections: -

- - -
-

1 APA300ML

-
-

- -

-

-In this section, the Amplified Piezoelectric Actuator APA300ML (doc) is modeled using a Finite Element Software. -Then a super element is exported and imported in Simscape where its dynamic is studied. -

- -

-A 3D view of the Amplified Piezoelectric Actuator (APA300ML) is shown in Figure 1. -The remote point used are also shown in this figure. -

- - -
-

apa300ml_ansys.jpg -

-

Figure 1: Ansys FEM of the APA300ML

-
-
-
-

1.1 Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates

-
-

-We first extract the stiffness and mass matrices. -

-
-
K = readmatrix('APA300ML_mat_K.CSV');
-M = readmatrix('APA300ML_mat_M.CSV');
-
-
- - - - --- -- -- -- -- -- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 1: First 10x10 elements of the Stiffness matrix
200000000.030000.0-20000.0-70.0300000.040.010000000.010000.0-6000.030.0
30000.030000000.02000.0-200000.060.0-10.04000.02000000.0-500.09000.0
-20000.02000.07000000.0-10.0-30.010.06000.0900.0-500000.03
-70.0-200000.0-10.01000.0-0.10.08-20.0-9000.03-30.0
300000.060.0-30.0-0.1900.00.130000.020.0-10.00.06
40.0-10.010.00.080.110000.020.09-50.03
10000000.04000.06000.0-20.030000.020.0200000000.010000.09000.050.0
10000.02000000.0900.0-9000.020.0910000.030000000.0-500.0200000.0
-6000.0-500.0-500000.03-10.0-59000.0-500.07000000.0-2
30.09000.03-30.00.060.0350.0200000.0-21000.0
- - - - - --- -- -- -- -- -- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 2: First 10x10 elements of the Mass matrix
0.01-2e-061e-066e-095e-05-5e-09-0.0005-7e-076e-07-3e-09
-2e-060.018e-07-2e-05-8e-092e-09-9e-07-0.00021e-08-9e-07
1e-068e-070.0095e-101e-09-1e-09-5e-073e-086e-051e-10
6e-09-2e-055e-103e-072e-11-3e-123e-099e-07-4e-103e-09
5e-05-8e-091e-092e-116e-07-4e-11-1e-06-2e-091e-09-8e-12
-5e-092e-09-1e-09-3e-12-4e-111e-07-2e-09-1e-09-4e-10-5e-12
-0.0005-9e-07-5e-073e-09-1e-06-2e-090.011e-07-3e-07-2e-08
-7e-07-0.00023e-089e-07-2e-09-1e-091e-070.01-4e-072e-05
6e-071e-086e-05-4e-101e-09-4e-10-3e-07-4e-070.009-2e-10
-3e-09-9e-071e-103e-09-8e-12-5e-12-2e-082e-05-2e-103e-07
- - -

-Then, we extract the coordinates of the interface nodes. -

-
-
[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('APA300ML_out_nodes_3D.txt');
-
-
- - - - --- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 3: Coordinates of the interface nodes
Node iNode Numberx [m]y [m]z [m]
1.0697783.00.00.0-0.015
2.0697784.00.00.00.015
3.0697785.0-0.03250.00.0
4.0697786.0-0.01250.00.0
5.0697787.0-0.00750.00.0
6.0697788.00.01250.00.0
7.0697789.00.03250.00.0
- - - - --- -- - - - - - - - - - - - - - - - - - - - - - -
Table 4: Some extracted parameters of the FEM
Total number of Nodes7
Number of interface Nodes7
Number of Modes120
Size of M and K matrices162
- -

-Using K, M and int_xyz, we can now use the Reduced Order Flexible Solid simscape block. -

-
-
- -
-

1.2 Piezoelectric parameters

-
-

-In order to make the conversion from applied voltage to generated force or from the strain to the generated voltage, we need to defined some parameters corresponding to the piezoelectric material: -

-
-
d33 = 600e-12; % Strain constant [m/V]
-n   = 80;      % Number of layers per stack
-eT  = 1.6e-8;  % Permittivity under constant stress [F/m]
-sD  = 1e-11;   % Compliance under constant electric displacement [m2/N]
-ka  = 235e6;   % Stack stiffness [N/m]
-C   = 5e-6;    % Stack capactiance [F]
-
-
- -

-PZT-4 -

-
-
d33 = 300e-12; % Strain constant [m/V]
-n   = 80;      % Number of layers per stack
-eT  = 5.3e-9;  % Permittivity under constant stress [F/m]
-sD  = 1e-11;   % Compliance under constant electric displacement [m2/N]
-ka  = 235e6;   % Stack stiffness [N/m]
-C   = 5e-6;    % Stack capactiance [F]
-
-
- -

-The ratio of the developed force to applied voltage is: -

-\begin{equation} -\label{orgbc04a1b} - F_a = g_a V_a, \quad g_a = d_{33} n k_a -\end{equation} -

-where: -

-
    -
  • \(F_a\): developed force in [N]
  • -
  • \(n\): number of layers of the actuator stack
  • -
  • \(d_{33}\): strain constant in [m/V]
  • -
  • \(k_a\): actuator stack stiffness in [N/m]
  • -
  • \(V_a\): applied voltage in [V]
  • -
- -

-If we take the numerical values, we obtain: -

-
-
d33*n*ka % [N/V]
-
-
- -
-5.64
-
- - -

-From (Fleming and Leang 2014) (page 123), the relation between relative displacement of the sensor stack and generated voltage is: -

-\begin{equation} -\label{orgb1b83fa} - V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h -\end{equation} -

-where: -

-
    -
  • \(V_s\): measured voltage in [V]
  • -
  • \(d_{33}\): strain constant in [m/V]
  • -
  • \(\epsilon^T\): permittivity under constant stress in [F/m]
  • -
  • \(s^D\): elastic compliance under constant electric displacement in [m^2/N]
  • -
  • \(n\): number of layers of the sensor stack
  • -
  • \(\Delta h\): relative displacement in [m]
  • -
- -

-If we take the numerical values, we obtain: -

-
-
1e-6*d33/(eT*sD*n) % [V/um]
-
-
- -
-23.438
-
-
-
- -
-

1.3 Simscape Model

-
-

-The flexible element is imported using the Reduced Order Flexible Solid simscape block. -

- -

-Let’s say we use two stacks as a force sensor and one stack as an actuator: -

-
    -
  • A Relative Motion Sensor block is added between the nodes A and C
  • -
  • An Internal Force block is added between the remote points E and B
  • -
- -

-The interface nodes are shown in Figure 1. -

- -

-One mass is fixed at one end of the piezo-electric stack actuator (remove point F), the other end is fixed to the world frame (remote point G). -

-
-
- -
-

1.4 Identification of the APA Characteristics

-
-
-
-

1.4.1 Stiffness

-
-

-The transfer function from vertical external force to the relative vertical displacement is identified. -

- -

-The inverse of its DC gain is the axial stiffness of the APA: -

-
-
1e-6/dcgain(G) % [N/um]
-
-
- -
-1.753
-
- - -

-The specified stiffness in the datasheet is \(k = 1.8\, [N/\mu m]\). -

-
-
- -
-

1.4.2 Resonance Frequency

-
-

-The resonance frequency is specified to be between 650Hz and 840Hz. -This is also the case for the FEM model (Figure 2). -

- - -
-

apa300ml_resonance.png -

-

Figure 2: First resonance is around 800Hz

-
-
-
- -
-

1.4.3 Amplification factor

-
-

-The amplification factor is the ratio of the vertical displacement to the stack displacement. -

- -

-The ratio of the two displacement is computed from the FEM model. -

-
-
abs(dcgain(G(1,1))./dcgain(G(2,1)))
-
-
- -
-5.0749
-
- - -

-This is actually correct and approximately corresponds to the ratio of the piezo height and length: -

-
-
75/15
-
-
- -
-5
-
-
-
- -
-

1.4.4 Stroke

-
-

-Estimation of the actuator stroke: -\[ \Delta H = A n \Delta L \] -with: -

-
    -
  • \(\Delta H\) Axial Stroke of the APA
  • -
  • \(A\) Amplification factor (5 for the APA300ML)
  • -
  • \(n\) Number of stack used
  • -
  • \(\Delta L\) Stroke of the stack (0.1% of its length)
  • -
- -
-
1e6 * 5 * 3 * 20e-3 * 0.1e-2
-
-
- -
-300
-
- - -

-This is exactly the specified stroke in the data-sheet. -

-
-
- -
-

1.4.5 Stroke BIS

-
-
    -
  • [ ] Identified the stroke form the transfer function from V to z
  • -
-
-
-
- -
-

1.5 Identification of the Dynamics from actuator to replace displacement

-
-

-We first set the mass to be approximately zero. -The dynamics is identified from the applied force to the measured relative displacement. -The same dynamics is identified for a payload mass of 10Kg. -

-
-
m = 10;
-
-
- - -
-

apa300ml_plant_dynamics.png -

-

Figure 3: Transfer function from forces applied by the stack to the axial displacement of the APA

-
- -

-The root locus corresponding to Direct Velocity Feedback with a mass of 10kg is shown in Figure 4. -

- -
-

apa300ml_dvf_root_locus.png -

-

Figure 4: Root Locus for Direct Velocity Feedback

-
-
-
- -
-

1.6 Identification of the Dynamics from actuator to force sensor

-
-

-Let’s use 2 stacks as a force sensor and 1 stack as force actuator. -

- -

-The transfer function from actuator voltage to sensor voltage is identified and shown in Figure 5. -

- -
-

apa300ml_iff_plant.png -

-

Figure 5: Transfer function from actuator to force sensor

-
- -

-For root locus corresponding to IFF is shown in Figure 6. -

- -
-

apa300ml_iff_root_locus.png -

-

Figure 6: Root Locus for IFF

-
-
-
- -
-

1.7 Identification for a simpler model

-
-

-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. -

- -

-The presented model is based on (Souleille et al. 2018). -

- -

-The model represents the Amplified Piezo Actuator (APA) from Cedrat-Technologies (Figure 7). -The parameters are shown in the table below. -

- - -
-

souleille18_model_piezo.png -

-

Figure 7: Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator

-
- - - - --- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 5: Parameters used for the model of the APA 100M
 Meaning
\(k_e\)Stiffness used to adjust the pole of the isolator
\(k_1\)Stiffness of the metallic suspension when the stack is removed
\(k_a\)Stiffness of the actuator
\(c_1\)Added viscous damping
- -

-The goal is to determine \(k_e\), \(k_a\) and \(k_1\) so that the simplified model fits the FEM model. -

- -

-\[ \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}} \] -

- -

-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} \] -

- -

-From the identified dynamics, compute \(\alpha\) and \(\beta\) -

-
-
alpha = abs(dcgain(G('y', 'Fa')));
-beta  = abs(dcgain(G('y', 'Fd')));
-
-
- -

-\(k_a\) is estimated using the following formula: -

-
-
ka = 0.8/abs(dcgain(G('y', 'Fa')));
-
-
-

-The factor can be adjusted to better match the curves. -

- -

-Then \(k_e\) and \(k_1\) are computed. -

-
-
ke = ka/(beta/alpha - 1);
-k1 = 1/beta - ke*ka/(ke + ka);
-
-
- - - - --- -- - - - - - - - - - - - - - - - - - - - - - - -
 Value [N/um]
ka40.5
ke1.5
k10.4
- -

-The damping in the system is adjusted to match the FEM model if necessary. -

-
-
c1 = 1e2;
-
-
- -

-The analytical model of the simpler system is defined below: -

-
-
Ga = 1/(m*s^2 + k1 + c1*s + ke*ka/(ke + ka)) * ...
-     [ 1 ,              k1 + c1*s + ke*ka/(ke + ka)  , ke/(ke + ka) ;
-      -ke*ka/(ke + ka), ke*ka/(ke + ka)*m*s^2 ,       -ke/(ke + ka)*(m*s^2 + c1*s + k1)];
-
-Ga.InputName = {'Fd', 'w', 'Fa'};
-Ga.OutputName = {'y', 'Fs'};
-
-
- -

-And the DC gain is adjusted for the force sensor: -

-
-
F_gain = dcgain(G('Fs', 'Fd'))/dcgain(Ga('Fs', 'Fd'));
-
-
- -

-The dynamics of the FEM model and the simpler model are compared in Figure 8. -

- - -
-

apa300ml_comp_simpler_model.png -

-

Figure 8: Comparison of the Dynamics between the FEM model and the simplified one

-
- -

-The simplified model has also been implemented in Simscape. -

- -

-The dynamics of the Simscape simplified model is identified and compared with the FEM one in Figure 9. -

- -
-

apa300ml_comp_simpler_simscape.png -

-

Figure 9: Comparison of the Dynamics between the FEM model and the simplified simscape model

-
-
-
- -
-

1.8 Integral Force Feedback

-
-

-In this section, Integral Force Feedback control architecture is applied on the APA300ML. -

- -

-First, the plant (dynamics from voltage actuator to voltage sensor is identified). -The payload mass is set to 10kg. -

-
-
m = 10;
-
-
- -

-The obtained dynamics is shown in Figure 10. -

- - -
-

piezo_amplified_iff_plant.png -

-

Figure 10: IFF Plant

-
- -

-The controller is defined below and the loop gain is shown in Figure 11. -

-
-
Kiff = -1e3/s;
-
-
- - -
-

piezo_amplified_iff_loop_gain.png -

-

Figure 11: IFF Loop Gain

-
- -

-Now the closed-loop system is identified again and compare with the open loop system in Figure 12. -

- -

-It is the expected behavior as shown in the Figure 13 (from (Souleille et al. 2018)). -

- - -
-

piezo_amplified_iff_comp.png -

-

Figure 12: OL and CL transfer functions

-
- - -
-

souleille18_results.png -

-

Figure 13: Results obtained in souleille18_concep_activ_mount_space_applic

-
-
-
-
- - -
-

2 First Flexible Joint Geometry

-
-

- -

-

-The studied flexor is shown in Figure 14. -

- -

-The stiffness and mass matrices representing the dynamics of the flexor are exported from a FEM. -It is then imported into Simscape. -

- -

-A simplified model of the flexor is then developped. -

- - -
-

flexor_id16_screenshot.png -

-

Figure 14: Flexor studied

-
-
-
-

2.1 Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates

-
-

-We first extract the stiffness and mass matrices. -

-
-
K = extractMatrix('mat_K_6modes_2MDoF.matrix');
-M = extractMatrix('mat_M_6modes_2MDoF.matrix');
-
-
- - - - --- -- -- -- -- -- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 6: First 10x10 elements of the Stiffness matrix
11200000.0195.02220.0-0.719-265.01.59-11200000.0-213.0-2220.00.147
195.011400000.01290.0-148.0-0.1882.41-212.0-11400000.0-1290.0148.0
2220.01290.0119000000.01.311.491.79-2220.0-1290.0-119000000.0-1.31
-0.719-148.01.3133.00.000488-0.0009770.141148.0-1.31-33.0
-265.0-0.1881.490.00048833.00.00293266.00.154-1.490.00026
1.592.411.79-0.0009770.00293236.0-1.32-2.55-1.790.000379
-11200000.0-212.0-2220.00.141266.0-1.3211400000.024600.01640.0120.0
-213.0-11400000.0-1290.0148.00.154-2.5524600.011400000.01290.0-72.0
-2220.0-1290.0-119000000.0-1.31-1.49-1.791640.01290.0119000000.01.32
0.147148.0-1.31-33.00.000260.000379120.0-72.01.3234.7
- - - - --- -- -- -- -- -- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 7: First 10x10 elements of the Mass matrix
0.021e-09-4e-08-1e-100.0002-3e-110.0045e-087e-081e-10
1e-090.02-3e-07-0.0002-1e-10-2e-092e-080.0043e-071e-05
-4e-08-3e-070.027e-10-2e-091e-093e-077e-080.0031e-09
-1e-10-0.00027e-104e-06-1e-12-6e-132e-10-7e-06-8e-10-1e-09
0.0002-1e-10-2e-09-1e-123e-062e-139e-064e-112e-09-3e-13
-3e-11-2e-091e-09-6e-132e-134e-078e-119e-10-1e-092e-12
0.0042e-083e-072e-109e-068e-110.02-7e-08-3e-07-2e-10
5e-080.0047e-08-7e-064e-119e-10-7e-080.01-4e-080.0002
7e-083e-070.003-8e-102e-09-1e-09-3e-07-4e-080.02-1e-09
1e-101e-051e-09-1e-09-3e-132e-12-2e-100.0002-1e-092e-06
- -

-Then, we extract the coordinates of the interface nodes. -

-
-
[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('out_nodes_3D.txt');
-
-
- - - - --- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 8: Coordinates of the interface nodes
Node iNode Numberx [m]y [m]z [m]
1.0181278.00.00.00.0
2.0181279.00.00.0-0.0
- - - - --- -- - - - - - - - - - - - - - - - - - - - - - -
Total number of Nodes2
Number of interface Nodes2
Number of Modes6
Size of M and K matrices18
- -

-Using K, M and int_xyz, we can use the Reduced Order Flexible Solid simscape block. -

-
-
- -
-

2.2 Identification of the parameters using Simscape and looking at the Stiffness Matrix

-
-

-The flexor is now imported into Simscape and its parameters are estimated using an identification. -

- -

-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. -

- - - - --- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteristicValueIdentification
Axial Stiffness Dz [N/um]119119
Bending Stiffness Rx [Nm/rad]3333
Bending Stiffness Ry [Nm/rad]3333
Torsion Stiffness Rz [Nm/rad]236236
-
-
- -
-

2.3 Simpler Model

-
-

-Let’s now model the flexible joint with a “perfect” Bushing joint as shown in Figure 15. -

- - -
-

flexible_joint_simscape.png -

-

Figure 15: Bushing Joint used to model the flexible joint

-
- -

-The parameters of the Bushing joint (stiffnesses) are estimated from the Stiffness matrix that was computed from the FEM. -

-
-
Kx = K(1,1); % [N/m]
-Ky = K(2,2); % [N/m]
-Kz = K(3,3); % [N/m]
-Krx = K(4,4); % [Nm/rad]
-Kry = K(5,5); % [Nm/rad]
-Krz =  K(6,6); % [Nm/rad]
-
-
- -

-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 -

- - -
-

flexor_ID16_compare_bushing_joint.png -

-

Figure 16: Comparison of the Joint compliance between the FEM model and the simpler model

-
-
-
-
- -
-

3 Optimized Flexible Joint

-
-

- -

-

-The joint geometry has been optimized using Ansys to have lower bending stiffness while keeping a large axial stiffness. -

- -

-The obtained geometry is shown in Figure 17. -

- - -
-

flexor_025_MDoF.jpg -

-

Figure 17: Flexor studied

-
-
-
-

3.1 Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates

-
-

-We first extract the stiffness and mass matrices. -

-
-
K = readmatrix('flex025_mat_K.CSV');
-M = readmatrix('flex025_mat_M.CSV');
-
-
- - - - --- -- -- -- -- -- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 9: First 10x10 elements of the Stiffness matrix
12700000.0-18.5-26.80.00162-4.6364.0-12700000.018.326.70.00234
-18.512700000.0-499.0-132.00.00414-0.49518.4-12700000.0499.0132.0
-26.8-499.094000000.0-470.00.00771-0.85526.8498.0-94000000.0470.0
0.00162-132.0-470.04.832.61e-070.000123-0.00163132.0470.0-4.83
-4.630.004140.007712.61e-074.834.43e-054.63-0.00413-0.00772-4.3e-07
64.0-0.495-0.8550.0001234.43e-05260.0-64.00.4950.855-0.000124
-12700000.018.426.8-0.001634.63-64.012700000.0-18.2-26.7-0.00234
18.3-12700000.0498.0132.0-0.004130.495-18.212700000.0-498.0-132.0
26.7499.0-94000000.0470.0-0.007720.855-26.7-498.094000000.0-470.0
0.00234132.0470.0-4.83-4.3e-07-0.000124-0.00234-132.0-470.04.83
- - - - - --- -- -- -- -- -- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 10: First 10x10 elements of the Mass matrix
0.0068e-09-2e-08-1e-103e-053e-080.003-3e-099e-092e-12
8e-090.021e-07-3e-051e-116e-101e-080.003-5e-083e-09
-2e-081e-070.01-6e-08-6e-11-8e-12-1e-071e-080.003-1e-08
-1e-10-3e-05-6e-081e-067e-146e-131e-101e-06-1e-083e-10
3e-051e-11-6e-117e-142e-071e-103e-08-7e-126e-11-6e-16
3e-086e-10-8e-126e-131e-105e-071e-08-5e-10-1e-111e-13
0.0031e-08-1e-071e-103e-081e-080.02-2e-081e-07-4e-12
-3e-090.0031e-081e-06-7e-12-5e-10-2e-080.006-8e-083e-05
9e-09-5e-080.003-1e-086e-11-1e-111e-07-8e-080.01-6e-08
2e-123e-09-1e-083e-10-6e-161e-13-4e-123e-05-6e-082e-07
- - -

-Then, we extract the coordinates of the interface nodes. -

-
-
[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('flex025_out_nodes_3D.txt');
-
-
- - - - --- -- - - - - - - - - - - - - - - - - - - - - - -
Total number of Nodes2
Number of interface Nodes2
Number of Modes6
Size of M and K matrices18
- - - - --- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 11: Coordinates of the interface nodes
Node iNode Numberx [m]y [m]z [m]
1.0528875.00.00.00.0
2.0528876.00.00.0-0.0
- -

-Using K, M and int_xyz, we can use the Reduced Order Flexible Solid simscape block. -

-
-
- -
-

3.2 Identification of the parameters using Simscape

-
-

-The flexor is now imported into Simscape and its parameters are estimated using an identification. -

- -

-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. -

- - - - --- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaracteristicValueIdentification
Axial Stiffness Dz [N/um]94.093.9
Bending Stiffness Rx [Nm/rad]4.84.8
Bending Stiffness Ry [Nm/rad]4.84.8
Torsion Stiffness Rz [Nm/rad]260.2260.2
-
-
- -
-

3.3 Simpler Model

-
-

-Let’s now model the flexible joint with a “perfect” Bushing joint as shown in Figure 15. -

- - -
-

flexible_joint_simscape.png -

-

Figure 18: Bushing Joint used to model the flexible joint

-
- -

-The parameters of the Bushing joint (stiffnesses) are estimated from the Stiffness matrix that was computed from the FEM. -

-
-
Kx = K(1,1); % [N/m]
-Ky = K(2,2); % [N/m]
-Kz = K(3,3); % [N/m]
-Krx = K(4,4); % [Nm/rad]
-Kry = K(5,5); % [Nm/rad]
-Krz =  K(6,6); % [Nm/rad]
-
-
- -

-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 -

- - -
-

flexor_ID16_compare_bushing_joint.png -

-

Figure 19: Comparison of the Joint compliance between the FEM model and the simpler model

-
-
-
- -
-

3.4 Comparison with a stiffer Flexible Joint

-
-

-The stiffness matrix with the flexible joint with a “hinge” size of 0.50mm is loaded. -

-
-
K_050 = readmatrix('flex050_mat_K.CSV');
-
-
- -

-Its parameters are compared with the Flexible Joint with a size of 0.25mm in the table below. -

- - - - --- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Caracteristic0.25 mm0.50 mm
Axial Stiffness Dz [N/um]94.0124.7
Shear Stiffness [N/um]12.725.8
Bending Stiffness Rx [Nm/rad]4.826.0
Bending Stiffness Ry [Nm/rad]4.826.0
Torsion Stiffness Rz [Nm/rad]260.2538.0
-
-
-
- -
-

4 Complete Strut with Encoder

-
-

- -

-
-
-

4.1 Introduction

-
-

-Now, the full nano-hexapod strut is modelled using Ansys. -

- -

-The 3D as well as the interface nodes are shown in Figure 20. -

- - -
-

strut_fem_nodes.jpg -

-

Figure 20: Interface points

-
- -

-A side view is shown in Figure 21. -

- - -
-

strut_fem_nodes_side.jpg -

-

Figure 21: Interface points - Side view

-
- -

-The flexible joints used have a 0.25mm width size. -

-
-
- -
-

4.2 Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates

-
-

-We first extract the stiffness and mass matrices. -

-
-
K = readmatrix('strut_encoder_mat_K.CSV');
-M = readmatrix('strut_encoder_mat_M.CSV');
-
-
- - - - --- -- -- -- -- -- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 12: First 10x10 elements of the Stiffness matrix
2000000.01000000.0-3000000.0-400.0300.0200.0-30.02000.0-10000.00.3
1000000.04000000.0-8000000.0-900.0400.0-50.0-6000.010000.0-20000.03
-3000000.0-8000000.020000000.02000.0-900.0200.0-10000.020000.0-300000.07
-400.0-900.02000.05-0.10.051-36-0.0007
300.0400.0-900.0-0.150.04-0.10.5-30.0001
200.0-50.0200.00.050.04300.04-0.01-13e-05
-30.0-6000.0-10000.01-0.143000000.0-1000000.0-2000000.0-300.0
2000.010000.020000.0-30.5-0.01-1000000.06000000.07000000.01000.0
-10000.0-20000.0-300000.06-3-1-2000000.07000000.020000000.02000.0
0.337-0.00070.00013e-05-300.01000.02000.05
- - - - - --- -- -- -- -- -- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 13: First 10x10 elements of the Mass matrix
0.04-0.0050.0072e-060.0001-5e-07-1e-05-9e-078e-05-5e-10
-0.0050.030.02-0.00011e-06-3e-073e-05-0.00018e-05-3e-08
0.0070.020.08-6e-06-5e-06-7e-074e-05-0.00010.0005-3e-08
2e-06-0.0001-6e-062e-06-4e-102e-11-8e-093e-08-2e-086e-12
0.00011e-06-5e-06-4e-103e-062e-10-3e-093e-09-7e-096e-13
-5e-07-3e-07-7e-072e-112e-105e-07-2e-085e-09-5e-091e-12
-1e-053e-054e-05-8e-09-3e-09-2e-080.040.0040.0031e-06
-9e-07-0.0001-0.00013e-083e-095e-090.0040.02-0.020.0001
8e-058e-050.0005-2e-08-7e-09-5e-090.003-0.020.08-5e-06
-5e-10-3e-08-3e-086e-126e-131e-121e-060.0001-5e-062e-06
- - -

-Then, we extract the coordinates of the interface nodes. -

-
-
[int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('strut_encoder_out_nodes_3D.txt');
-
-
- - - - --- -- - - - - - - - - - - - - - - - - - - - - - -
Total number of Nodes8
Number of interface Nodes8
Number of Modes6
Size of M and K matrices54
- - - - --- -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Table 14: Coordinates of the interface nodes
Node iNode Numberx [m]y [m]z [m]
1.0504411.00.00.00.0405
2.0504412.00.00.0-0.0405
3.0504413.0-0.03250.00.0
4.0504414.0-0.01250.00.0
5.0504415.0-0.00750.00.0
6.0504416.00.03250.00.0
7.0504417.00.0040.0145-0.00175
8.0504418.00.0040.0166-0.00175
- -

-Using K, M and int_xyz, we can use the Reduced Order Flexible Solid simscape block. -

-
-
- -
-

4.3 Piezoelectric parameters

-
-

-Parameters for the APA300ML: -

- -
-
d33 = 300e-12; % Strain constant [m/V]
-n   = 80;      % Number of layers per stack
-eT  = 1.6e-8;  % Permittivity under constant stress [F/m]
-sD  = 1e-11;   % Compliance under constant electric displacement [m2/N]
-ka  = 235e6;   % Stack stiffness [N/m]
-C   = 5e-6;    % Stack capactiance [F]
-
-
- -
-
na = 2; % Number of stacks used as actuator
-ns = 1; % Number of stacks used as force sensor
-
-
-
-
- -
-

4.4 Identification of the Dynamics

-
-

-The dynamics is identified from the applied force to the measured relative displacement. -The same dynamics is identified for a payload mass of 10Kg. -

-
-
m = 10;
-
-
- - -
-

dynamics_encoder_full_strut.png -

-

Figure 22: Dynamics from the force actuator to the measured motion by the encoder

-
-
-
-
- -

- -

- -

Bibliography

-
-
Fleming, Andrew J., and Kam K. Leang. 2014. Design, Modeling and Control of Nanopositioning Systems. Advances in Industrial Control. Springer International Publishing. https://doi.org/10.1007/978-3-319-06617-2.
-
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.” CEAS Space Journal 10 (2). Springer:157–65.
-
-
-
-

Author: Dehaeze Thomas

-

Created: 2021-01-04 lun. 13:57

-
- - diff --git a/nass-fem.bib b/nass-fem.bib new file mode 100644 index 0000000..5200db4 --- /dev/null +++ b/nass-fem.bib @@ -0,0 +1,26 @@ +@book{fleming14_desig_model_contr_nanop_system, + author = {Andrew J. Fleming and Kam K. Leang}, + title = {Design, Modeling and Control of Nanopositioning Systems}, + year = 2014, + publisher = {Springer International Publishing}, + url = {https://doi.org/10.1007/978-3-319-06617-2}, + doi = {10.1007/978-3-319-06617-2}, + series = {Advances in Industrial Control}, +} + + + +@article{souleille18_concep_activ_mount_space_applic, + author = {Souleille, Adrien and Lampert, Thibault and Lafarga, V and + Hellegouarch, Sylvain and Rondineau, Alan and Rodrigues, + Gon{\c{c}}alo and Collette, Christophe}, + title = {A Concept of Active Mount for Space Applications}, + journal = {CEAS Space Journal}, + volume = 10, + number = 2, + pages = {157--165}, + year = 2018, + publisher = {Springer}, + keywords = {parallel robot, iff}, +} + diff --git a/index.org b/nass-fem.org similarity index 83% rename from index.org rename to nass-fem.org index a31fafe..29c0335 100644 --- a/index.org +++ b/nass-fem.org @@ -1,7 +1,5 @@ #+TITLE: NASS - Finite Element Models with Simscape :DRAWER: -#+STARTUP: overview - #+LANGUAGE: en #+EMAIL: dehaeze.thomas@gmail.com #+AUTHOR: Dehaeze Thomas @@ -12,28 +10,95 @@ #+HTML_HEAD: #+HTML_HEAD: +#+BIND: org-latex-image-default-option "scale=1" +#+BIND: org-latex-image-default-width "" + +#+LaTeX_CLASS: scrreprt +#+LaTeX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc] +#+LaTeX_HEADER_EXTRA: \input{preamble.tex} +#+LATEX_HEADER_EXTRA: \bibliography{nass-fem.bib} + +#+BIND: org-latex-bib-compiler "biber" + #+PROPERTY: header-args:matlab :session *MATLAB* #+PROPERTY: header-args:matlab+ :comments org +#+PROPERTY: header-args:matlab+ :exports none #+PROPERTY: header-args:matlab+ :results none -#+PROPERTY: header-args:matlab+ :exports both #+PROPERTY: header-args:matlab+ :eval no-export +#+PROPERTY: header-args:matlab+ :noweb yes +#+PROPERTY: header-args:matlab+ :mkdirp yes #+PROPERTY: header-args:matlab+ :output-dir figs #+PROPERTY: header-args:matlab+ :tangle no -#+PROPERTY: header-args:matlab+ :mkdirp yes - -#+PROPERTY: header-args:shell :eval no-export #+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{config.tex}") #+PROPERTY: header-args:latex+ :imagemagick t :fit yes #+PROPERTY: header-args:latex+ :iminoptions -scale 100% -density 150 #+PROPERTY: header-args:latex+ :imoutoptions -quality 100 -#+PROPERTY: header-args:latex+ :results raw replace :buffer no +#+PROPERTY: header-args:latex+ :results file raw replace +#+PROPERTY: header-args:latex+ :buffer no +#+PROPERTY: header-args:latex+ :tangle no #+PROPERTY: header-args:latex+ :eval no-export #+PROPERTY: header-args:latex+ :exports results #+PROPERTY: header-args:latex+ :mkdirp yes #+PROPERTY: header-args:latex+ :output-dir figs +#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") :END: +#+begin_export html +
+

This report is also available as a pdf.

+
+#+end_export + +#+latex: \clearpage + +* Build :noexport: +#+NAME: startblock +#+BEGIN_SRC emacs-lisp :results none :tangle no +(add-to-list 'org-latex-classes + '("scrreprt" + "\\documentclass{scrreprt}" + ("\\chapter{%s}" . "\\chapter*{%s}") + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + )) + +;; Remove automatic org heading labels +(defun my-latex-filter-removeOrgAutoLabels (text backend info) + "Org-mode automatically generates labels for headings despite explicit use of `#+LABEL`. This filter forcibly removes all automatically generated org-labels in headings." + (when (org-export-derived-backend-p backend 'latex) + (replace-regexp-in-string "\\\\label{sec:org[a-f0-9]+}\n" "" text))) +(add-to-list 'org-export-filter-headline-functions + 'my-latex-filter-removeOrgAutoLabels) + +;; Remove all org comments in the output LaTeX file +(defun delete-org-comments (backend) + (loop for comment in (reverse (org-element-map (org-element-parse-buffer) + 'comment 'identity)) + do + (setf (buffer-substring (org-element-property :begin comment) + (org-element-property :end comment)) + ""))) +(add-hook 'org-export-before-processing-hook 'delete-org-comments) + +;; Use no package by default +(setq org-latex-packages-alist nil) +(setq org-latex-default-packages-alist nil) + +;; Do not include the subtitle inside the title +(setq org-latex-subtitle-separate t) +(setq org-latex-subtitle-format "\\subtitle{%s}") + +(setq org-export-before-parsing-hook '(org-ref-glossary-before-parsing + org-ref-acronyms-before-parsing)) +#+END_SRC + +* Notes :noexport: + +- [ ] Convert this into a standard report +- [ ] look at the [[file:~/Cloud/research/papers/published/brumund21_multib_simul_reduc_order_flexib_bodies_fea/paper/brumund21_multib_simul_reduc_order_flexib_bodies_fea.pdf][published paper]] + * Introduction :ignore: In this document, Finite Element Models (FEM) of parts of the Nano-Hexapod are developed and integrated into Simscape for dynamical analysis. @@ -64,60 +129,67 @@ The remote point used are also shown in this figure. #+name: fig:apa300ml_ansys #+caption: Ansys FEM of the APA300ML +#+attr_latex: :width 0.7\linewidth [[file:figs/apa300ml_ansys.jpg]] ** Matlab Init :noexport:ignore: #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) - <> +<> #+end_src #+begin_src matlab :exports none :results silent :noweb yes - <> +<> #+end_src #+begin_src matlab :tangle no - addpath('matlab/'); - addpath('matlab/APA300ML/'); +addpath('matlab/'); +addpath('matlab/APA300ML/'); #+end_src #+begin_src matlab :eval no - addpath('APA300ML/'); +addpath('APA300ML/'); #+end_src #+begin_src matlab - open('APA300ML.slx'); +% open('APA300ML.slx'); #+end_src ** Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates We first extract the stiffness and mass matrices. #+begin_src matlab - K = readmatrix('APA300ML_mat_K.CSV'); - M = readmatrix('APA300ML_mat_M.CSV'); +K = readmatrix('APA300ML_mat_K.CSV'); +M = readmatrix('APA300ML_mat_M.CSV'); #+end_src #+begin_src matlab :exports results :results value table replace :tangle no - data2orgtable(K(1:10, 1:10), {}, {}, ' %.1g '); +data2orgtable(K(1:10, 1:10), {}, {}, ' %.1g '); #+end_src +#+name: tab:APA300ML_mat_K #+caption: First 10x10 elements of the Stiffness matrix +#+attr_latex: :environment tabularx :width \linewidth :align XXXXXXXXXX +#+attr_latex: :center t :booktabs t :font \tiny #+RESULTS: -| 200000000.0 | 30000.0 | -20000.0 | -70.0 | 300000.0 | 40.0 | 10000000.0 | 10000.0 | -6000.0 | 30.0 | -| 30000.0 | 30000000.0 | 2000.0 | -200000.0 | 60.0 | -10.0 | 4000.0 | 2000000.0 | -500.0 | 9000.0 | -| -20000.0 | 2000.0 | 7000000.0 | -10.0 | -30.0 | 10.0 | 6000.0 | 900.0 | -500000.0 | 3 | -| -70.0 | -200000.0 | -10.0 | 1000.0 | -0.1 | 0.08 | -20.0 | -9000.0 | 3 | -30.0 | -| 300000.0 | 60.0 | -30.0 | -0.1 | 900.0 | 0.1 | 30000.0 | 20.0 | -10.0 | 0.06 | -| 40.0 | -10.0 | 10.0 | 0.08 | 0.1 | 10000.0 | 20.0 | 9 | -5 | 0.03 | -| 10000000.0 | 4000.0 | 6000.0 | -20.0 | 30000.0 | 20.0 | 200000000.0 | 10000.0 | 9000.0 | 50.0 | -| 10000.0 | 2000000.0 | 900.0 | -9000.0 | 20.0 | 9 | 10000.0 | 30000000.0 | -500.0 | 200000.0 | -| -6000.0 | -500.0 | -500000.0 | 3 | -10.0 | -5 | 9000.0 | -500.0 | 7000000.0 | -2 | -| 30.0 | 9000.0 | 3 | -30.0 | 0.06 | 0.03 | 50.0 | 200000.0 | -2 | 1000.0 | +| 200000000 | 30000 | -20000 | -70 | 300000 | 40 | 10000000 | 10000 | -6000 | 30 | +| 30000 | 30000000 | 2000 | -200000 | 60 | -10 | 4000 | 2000000 | -500 | 9000 | +| -20000 | 2000 | 7000000 | -10 | -30 | 10 | 6000 | 900 | -500000 | 3 | +| -70 | -200000 | -10 | 1000 | -0.1 | 08 | -20 | -9000 | 3 | -30 | +| 300000 | 60 | -30 | -0.1 | 900 | 0.1 | 30000 | 20 | -10 | 06 | +| 40 | -10 | 10 | 08 | 0.1 | 10000 | 20 | 9 | -5 | 03 | +| 10000000 | 4000 | 6000 | -20 | 30000 | 20 | 200000000 | 10000 | 9000 | 50 | +| 10000 | 2000000 | 900 | -9000 | 20 | 9 | 10000 | 30000000 | -500 | 200000 | +| -6000 | -500 | -500000 | 3 | -10 | -5 | 9000 | -500 | 7000000 | -2 | +| 30 | 9000 | 3 | -30 | 06 | 03 | 50 | 200000 | -2 | 1000 | #+begin_src matlab :exports results :results value table replace :tangle no - data2orgtable(M(1:10, 1:10), {}, {}, ' %.1g '); +data2orgtable(M(1:10, 1:10), {}, {}, ' %.1g '); #+end_src +#+name: tab:APA300ML_mat_M #+caption: First 10x10 elements of the Mass matrix +#+attr_latex: :environment tabularx :width \linewidth :align XXXXXXXXXX +#+attr_latex: :center t :booktabs t :font \tiny #+RESULTS: | 0.01 | -2e-06 | 1e-06 | 6e-09 | 5e-05 | -5e-09 | -0.0005 | -7e-07 | 6e-07 | -3e-09 | | -2e-06 | 0.01 | 8e-07 | -2e-05 | -8e-09 | 2e-09 | -9e-07 | -0.0002 | 1e-08 | -9e-07 | @@ -140,23 +212,29 @@ Then, we extract the coordinates of the interface nodes. data2orgtable([[1:length(int_i)]', int_i, int_xyz], {}, {'Node i', 'Node Number', 'x [m]', 'y [m]', 'z [m]'}, ' %f '); #+end_src +#+name: tab:coordinate_nodes #+caption: Coordinates of the interface nodes +#+attr_latex: :environment tabularx :width 0.6\linewidth :align ccccc +#+attr_latex: :center t :booktabs t #+RESULTS: | Node i | Node Number | x [m] | y [m] | z [m] | |--------+-------------+---------+-------+--------| -| 1.0 | 697783.0 | 0.0 | 0.0 | -0.015 | -| 2.0 | 697784.0 | 0.0 | 0.0 | 0.015 | -| 3.0 | 697785.0 | -0.0325 | 0.0 | 0.0 | -| 4.0 | 697786.0 | -0.0125 | 0.0 | 0.0 | -| 5.0 | 697787.0 | -0.0075 | 0.0 | 0.0 | -| 6.0 | 697788.0 | 0.0125 | 0.0 | 0.0 | -| 7.0 | 697789.0 | 0.0325 | 0.0 | 0.0 | +| 1.0 | 697783 | 0.0 | 0.0 | -0.015 | +| 2.0 | 697784 | 0.0 | 0.0 | 0.015 | +| 3.0 | 697785 | -0.0325 | 0.0 | 0.0 | +| 4.0 | 697786 | -0.0125 | 0.0 | 0.0 | +| 5.0 | 697787 | -0.0075 | 0.0 | 0.0 | +| 6.0 | 697788 | 0.0125 | 0.0 | 0.0 | +| 7.0 | 697789 | 0.0325 | 0.0 | 0.0 | #+begin_src matlab :exports results :results value table replace :tangle no data2orgtable([length(n_i); length(int_i); size(M,1) - 6*length(int_i); size(M,1)], {'Total number of Nodes', 'Number of interface Nodes', 'Number of Modes', 'Size of M and K matrices'}, {}, ' %.0f '); #+end_src +#+name: tab:parameters_fem #+caption: Some extracted parameters of the FEM +#+attr_latex: :environment tabularx :width 0.4\linewidth :align lc +#+attr_latex: :center t :booktabs t #+RESULTS: | Total number of Nodes | 7 | | Number of interface Nodes | 7 | @@ -206,7 +284,7 @@ If we take the numerical values, we obtain: #+RESULTS: : 5.64 -From cite:fleming14_desig_model_contr_nanop_system (page 123), the relation between relative displacement of the sensor stack and generated voltage is: +From [[cite:&fleming14_desig_model_contr_nanop_system]] (page 123), the relation between relative displacement of the sensor stack and generated voltage is: #+name: eq:piezo_strain_to_voltage \begin{equation} V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h @@ -561,9 +639,13 @@ The parameters are shown in the table below. #+name: fig:souleille18_model_piezo #+caption: Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator +#+attr_latex: :width 0.7\linewidth [[file:./figs/souleille18_model_piezo.png]] +#+name: tab:parameters_apa100m #+caption:Parameters used for the model of the APA 100M +#+attr_latex: :environment tabularx :width 0.8\linewidth :align cl +#+attr_latex: :center t :booktabs t | | Meaning | |-------+----------------------------------------------------------------| | $k_e$ | Stiffness used to adjust the pole of the isolator | @@ -622,9 +704,13 @@ Then $k_e$ and $k_1$ are computed. #+end_src #+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) - data2orgtable(1e-6*[ka; ke; k1], {'ka', 'ke', 'k1'}, {'Value [N/um]'}, ' %.1f '); + data2orgtable(1e-6*[ka; ke; k1], {'=ka=', '=ke=', '=k1='}, {'Value [N/um]'}, ' %.1f '); #+end_src +#+name: tab:stiffnesses_apa100m +#+caption:Obtained stiffnesses of the APA 100M +#+attr_latex: :environment tabularx :width 0.3\linewidth :align cl +#+attr_latex: :center t :booktabs t #+RESULTS: | | Value [N/um] | |----+--------------| @@ -729,6 +815,7 @@ The dynamics of the FEM model and the simpler model are compared in Figure [[fig #+name: fig:apa300ml_comp_simpler_model #+caption: Comparison of the Dynamics between the FEM model and the simplified one +#+attr_latex: :width 1.0\linewidth #+RESULTS: [[file:figs/apa300ml_comp_simpler_model.png]] @@ -1025,6 +1112,7 @@ It is the expected behavior as shown in the Figure [[fig:souleille18_results]] ( #+name: fig:souleille18_results #+caption: Results obtained in cite:souleille18_concep_activ_mount_space_applic +#+attr_latex: :width 1.0\linewidth [[file:figs/souleille18_results.png]] @@ -1043,6 +1131,7 @@ A simplified model of the flexor is then developped. #+name: fig:flexor_id16_screenshot #+caption: Flexor studied +#+attr_latex: :width 0.3\linewidth [[file:figs/flexor_id16_screenshot.png]] ** Matlab Init :noexport:ignore: @@ -1078,24 +1167,29 @@ We first extract the stiffness and mass matrices. data2orgtable(K(1:10, 1:10), {}, {}, ' %.2e '); #+end_src +#+name: tab:APA300ML_mat_K_2MDoF #+caption: First 10x10 elements of the Stiffness matrix +#+attr_latex: :environment tabularx :width \linewidth :align XXXXXXXXXX +#+attr_latex: :center t :booktabs t :font \tiny #+RESULTS: -| 11200000.0 | 195.0 | 2220.0 | -0.719 | -265.0 | 1.59 | -11200000.0 | -213.0 | -2220.0 | 0.147 | -| 195.0 | 11400000.0 | 1290.0 | -148.0 | -0.188 | 2.41 | -212.0 | -11400000.0 | -1290.0 | 148.0 | -| 2220.0 | 1290.0 | 119000000.0 | 1.31 | 1.49 | 1.79 | -2220.0 | -1290.0 | -119000000.0 | -1.31 | -| -0.719 | -148.0 | 1.31 | 33.0 | 0.000488 | -0.000977 | 0.141 | 148.0 | -1.31 | -33.0 | -| -265.0 | -0.188 | 1.49 | 0.000488 | 33.0 | 0.00293 | 266.0 | 0.154 | -1.49 | 0.00026 | -| 1.59 | 2.41 | 1.79 | -0.000977 | 0.00293 | 236.0 | -1.32 | -2.55 | -1.79 | 0.000379 | -| -11200000.0 | -212.0 | -2220.0 | 0.141 | 266.0 | -1.32 | 11400000.0 | 24600.0 | 1640.0 | 120.0 | -| -213.0 | -11400000.0 | -1290.0 | 148.0 | 0.154 | -2.55 | 24600.0 | 11400000.0 | 1290.0 | -72.0 | -| -2220.0 | -1290.0 | -119000000.0 | -1.31 | -1.49 | -1.79 | 1640.0 | 1290.0 | 119000000.0 | 1.32 | -| 0.147 | 148.0 | -1.31 | -33.0 | 0.00026 | 0.000379 | 120.0 | -72.0 | 1.32 | 34.7 | +| 11200000 | 195 | 2220 | -0.719 | -265 | 1.59 | -11200000 | -213 | -2220 | 0.147 | | 195 | 11400000 | 1290 | -148 | -0.188 | 2.41 | -212 | -11400000 | -1290 | 148 | +| 2220 | 1290 | 119000000 | 1.31 | 1.49 | 1.79 | -2220 | -1290 | -119000000 | -1.31 | | | | | | | | | | | | +| -0.719 | -148 | 1.31 | 33 | 000488 | -000977 | 0.141 | 148 | -1.31 | -33 | | | | | | | | | | | | +| -265 | -0.188 | 1.49 | 000488 | 33 | 00293 | 266 | 0.154 | -1.49 | 00026 | | | | | | | | | | | | +| 1.59 | 2.41 | 1.79 | -000977 | 00293 | 236 | -1.32 | -2.55 | -1.79 | 000379 | | | | | | | | | | | | +| -11200000 | -212 | -2220 | 0.141 | 266 | -1.32 | 11400000 | 24600 | 1640 | 120 | | | | | | | | | | | | +| -213 | -11400000 | -1290 | 148 | 0.154 | -2.55 | 24600 | 11400000 | 1290 | -72 | | | | | | | | | | | | +| -2220 | -1290 | -119000000 | -1.31 | -1.49 | -1.79 | 1640 | 1290 | 119000000 | 1.32 | | | | | | | | | | | | +| 0.147 | 148 | -1.31 | -33 | 00026 | 000379 | 120 | -72 | 1.32 | 34.7 | | | | | | | | | | | | #+begin_src matlab :exports results :results value table replace :tangle no data2orgtable(M(1:10, 1:10), {}, {}, ' %.1g '); #+end_src +#+name: tab:APA300ML_mat_M_2MDoF #+caption: First 10x10 elements of the Mass matrix +#+attr_latex: :environment tabularx :width \linewidth :align XXXXXXXXXX +#+attr_latex: :center t :booktabs t :font \tiny #+RESULTS: | 0.02 | 1e-09 | -4e-08 | -1e-10 | 0.0002 | -3e-11 | 0.004 | 5e-08 | 7e-08 | 1e-10 | | 1e-09 | 0.02 | -3e-07 | -0.0002 | -1e-10 | -2e-09 | 2e-08 | 0.004 | 3e-07 | 1e-05 | @@ -1108,6 +1202,20 @@ We first extract the stiffness and mass matrices. | 7e-08 | 3e-07 | 0.003 | -8e-10 | 2e-09 | -1e-09 | -3e-07 | -4e-08 | 0.02 | -1e-09 | | 1e-10 | 1e-05 | 1e-09 | -1e-09 | -3e-13 | 2e-12 | -2e-10 | 0.0002 | -1e-09 | 2e-06 | +#+begin_src matlab :exports results :results value table replace :tangle no + data2orgtable([length(n_i); length(int_i); size(M,1) - 6*length(int_i); size(M,1)], {'Total number of Nodes', 'Number of interface Nodes', 'Number of Modes', 'Size of M and K matrices'}, {}, ' %.0f '); +#+end_src + +#+name: tab:parameters_fem_2MDoF +#+caption: Some extracted parameters of the FEM +#+attr_latex: :environment tabularx :width 0.4\linewidth :align lc +#+attr_latex: :center t :booktabs t +#+RESULTS: +| Total number of Nodes | 2 | +| Number of interface Nodes | 2 | +| Number of Modes | 6 | +| Size of M and K matrices | 18 | + Then, we extract the coordinates of the interface nodes. #+begin_src matlab [int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('out_nodes_3D.txt'); @@ -1117,23 +1225,16 @@ Then, we extract the coordinates of the interface nodes. data2orgtable([[1:length(int_i)]', int_i, int_xyz], {}, {'Node i', 'Node Number', 'x [m]', 'y [m]', 'z [m]'}, ' %f '); #+end_src +#+name: tab:coordinate_nodes_2MDoF #+caption: Coordinates of the interface nodes +#+attr_latex: :environment tabularx :width 0.6\linewidth :align ccccc +#+attr_latex: :center t :booktabs t #+RESULTS: | Node i | Node Number | x [m] | y [m] | z [m] | |--------+-------------+-------+-------+-------| | 1.0 | 181278.0 | 0.0 | 0.0 | 0.0 | | 2.0 | 181279.0 | 0.0 | 0.0 | -0.0 | -#+begin_src matlab :exports results :results value table replace :tangle no - data2orgtable([length(n_i); length(int_i); size(M,1) - 6*length(int_i); size(M,1)], {'Total number of Nodes', 'Number of interface Nodes', 'Number of Modes', 'Size of M and K matrices'}, {}, ' %.0f '); -#+end_src - -#+RESULTS: -| Total number of Nodes | 2 | -| Number of interface Nodes | 2 | -| Number of Modes | 6 | -| Size of M and K matrices | 18 | - Using =K=, =M= and =int_xyz=, we can use the =Reduced Order Flexible Solid= simscape block. ** Identification of the parameters using Simscape and looking at the Stiffness Matrix @@ -1159,11 +1260,15 @@ The dynamics is identified from the applied force/torque to the measured displac And we find the same parameters as the one estimated from the Stiffness matrix. #+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) - data2orgtable([1e-6*K(3,3), K(4,4), K(5,5), K(6,6) ; 1e-6./dcgain(G(3,3)), 1./dcgain(G(4,4)), 1./dcgain(G(5,5)), 1./dcgain(G(6,6))]', {'Axial Stiffness Dz [N/um]', 'Bending Stiffness Rx [Nm/rad]', 'Bending Stiffness Ry [Nm/rad]', 'Torsion Stiffness Rz [Nm/rad]'}, {'*Caracteristic*', '*Value*', '*Identification*'}, ' %0.f '); + data2orgtable([1e-6*K(3,3), K(4,4), K(5,5), K(6,6) ; 1e-6./dcgain(G(3,3)), 1./dcgain(G(4,4)), 1./dcgain(G(5,5)), 1./dcgain(G(6,6))]', {'Axial Stiffness Dz [N/um]', 'Bending Stiffness Rx [Nm/rad]', 'Bending Stiffness Ry [Nm/rad]', 'Torsion Stiffness Rz [Nm/rad]'}, {'*Characteristic*', '*Value*', '*Identification*'}, ' %0.f '); #+end_src +#+name: tab:comp_identified_stiffnesses +#+caption: Comparison of identified and FEM stiffnesses +#+attr_latex: :environment tabularx :width 0.7\linewidth :align lcc +#+attr_latex: :center t :booktabs t #+RESULTS: -| *Caracteristic* | *Value* | *Identification* | +| *Characteristic* | *Value* | *Identification* | |-------------------------------+---------+------------------| | Axial Stiffness Dz [N/um] | 119 | 119 | | Bending Stiffness Rx [Nm/rad] | 33 | 33 | @@ -1175,6 +1280,7 @@ Let's now model the flexible joint with a "perfect" Bushing joint as shown in Fi #+name: fig:flexible_joint_simscape #+caption: Bushing Joint used to model the flexible joint +#+attr_latex: :width 0.3\linewidth [[file:figs/flexible_joint_simscape.png]] The parameters of the Bushing joint (stiffnesses) are estimated from the Stiffness matrix that was computed from the FEM. @@ -1271,6 +1377,7 @@ The obtained geometry is shown in Figure [[fig:optimal_flexor]]. #+name: fig:optimal_flexor #+caption: Flexor studied +#+attr_latex: :width 1.0\linewidth [[file:figs/flexor_025_MDoF.jpg]] ** Matlab Init :noexport:ignore: @@ -1306,25 +1413,31 @@ We first extract the stiffness and mass matrices. data2orgtable(K(1:10, 1:10), {}, {}, ' %.2e '); #+end_src +#+name: tab:flex_mat_K #+caption: First 10x10 elements of the Stiffness matrix +#+attr_latex: :environment tabularx :width \linewidth :align XXXXXXXXXX +#+attr_latex: :center t :booktabs t :font \tiny #+RESULTS: -| 12700000.0 | -18.5 | -26.8 | 0.00162 | -4.63 | 64.0 | -12700000.0 | 18.3 | 26.7 | 0.00234 | -| -18.5 | 12700000.0 | -499.0 | -132.0 | 0.00414 | -0.495 | 18.4 | -12700000.0 | 499.0 | 132.0 | -| -26.8 | -499.0 | 94000000.0 | -470.0 | 0.00771 | -0.855 | 26.8 | 498.0 | -94000000.0 | 470.0 | -| 0.00162 | -132.0 | -470.0 | 4.83 | 2.61e-07 | 0.000123 | -0.00163 | 132.0 | 470.0 | -4.83 | -| -4.63 | 0.00414 | 0.00771 | 2.61e-07 | 4.83 | 4.43e-05 | 4.63 | -0.00413 | -0.00772 | -4.3e-07 | -| 64.0 | -0.495 | -0.855 | 0.000123 | 4.43e-05 | 260.0 | -64.0 | 0.495 | 0.855 | -0.000124 | -| -12700000.0 | 18.4 | 26.8 | -0.00163 | 4.63 | -64.0 | 12700000.0 | -18.2 | -26.7 | -0.00234 | -| 18.3 | -12700000.0 | 498.0 | 132.0 | -0.00413 | 0.495 | -18.2 | 12700000.0 | -498.0 | -132.0 | -| 26.7 | 499.0 | -94000000.0 | 470.0 | -0.00772 | 0.855 | -26.7 | -498.0 | 94000000.0 | -470.0 | -| 0.00234 | 132.0 | 470.0 | -4.83 | -4.3e-07 | -0.000124 | -0.00234 | -132.0 | -470.0 | 4.83 | +| 12700000 | -18.5 | -26.8 | 00162 | -4.63 | 64 | -12700000 | 18.3 | 26.7 | 00234 | +| -18.5 | 12700000 | -499 | -132 | 00414 | -0.495 | 18.4 | -12700000 | 499 | 132 | +| -26.8 | -499 | 94000000 | -470 | 00771 | -0.855 | 26.8 | 498 | -94000000 | 470 | +| 00162 | -132 | -470 | 4.83 | 2.61e-07 | 000123 | -00163 | 132 | 470 | -4.83 | +| -4.63 | 00414 | 00771 | 2.61e-07 | 4.83 | 4.43e-05 | 4.63 | -00413 | -00772 | -4.3e-07 | +| 64 | -0.495 | -0.855 | 000123 | 4.43e-05 | 260 | -64 | 0.495 | 0.855 | -000124 | +| -12700000 | 18.4 | 26.8 | -00163 | 4.63 | -64 | 12700000 | -18.2 | -26.7 | -00234 | +| 18.3 | -12700000 | 498 | 132 | -00413 | 0.495 | -18.2 | 12700000 | -498 | -132 | +| 26.7 | 499 | -94000000 | 470 | -00772 | 0.855 | -26.7 | -498 | 94000000 | -470 | +| 00234 | 132 | 470 | -4.83 | -4.3e-07 | -000124 | -00234 | -132 | -470 | 4.83 | #+begin_src matlab :exports results :results value table replace :tangle no data2orgtable(M(1:10, 1:10), {}, {}, ' %.1g '); #+end_src +#+name: tab:flex_mat_M #+caption: First 10x10 elements of the Mass matrix +#+attr_latex: :environment tabularx :width \linewidth :align XXXXXXXXXX +#+attr_latex: :center t :booktabs t :font \tiny #+RESULTS: | 0.006 | 8e-09 | -2e-08 | -1e-10 | 3e-05 | 3e-08 | 0.003 | -3e-09 | 9e-09 | 2e-12 | | 8e-09 | 0.02 | 1e-07 | -3e-05 | 1e-11 | 6e-10 | 1e-08 | 0.003 | -5e-08 | 3e-09 | @@ -1347,6 +1460,10 @@ Then, we extract the coordinates of the interface nodes. data2orgtable([length(n_i); length(int_i); size(M,1) - 6*length(int_i); size(M,1)], {'Total number of Nodes', 'Number of interface Nodes', 'Number of Modes', 'Size of M and K matrices'}, {}, ' %.0f '); #+end_src +#+name: tab:coordinate_nodes_flex +#+caption: Coordinates of the interface nodes for Flexible Joint +#+attr_latex: :environment tabularx :width 0.6\linewidth :align ccccc +#+attr_latex: :center t :booktabs t #+RESULTS: | Total number of Nodes | 2 | | Number of interface Nodes | 2 | @@ -1357,7 +1474,10 @@ Then, we extract the coordinates of the interface nodes. data2orgtable([[1:length(int_i)]', int_i, int_xyz], {}, {'Node i', 'Node Number', 'x [m]', 'y [m]', 'z [m]'}, ' %f '); #+end_src +#+name: tab:coordinate_interface_nodes_flex #+caption: Coordinates of the interface nodes +#+attr_latex: :environment tabularx :width 0.6\linewidth :align ccccc +#+attr_latex: :center t :booktabs t #+RESULTS: | Node i | Node Number | x [m] | y [m] | z [m] | |--------+-------------+-------+-------+-------| @@ -1392,6 +1512,10 @@ And we find the same parameters as the one estimated from the Stiffness matrix. data2orgtable([1e-6*K(3,3), K(4,4), K(5,5), K(6,6) ; 1e-6./dcgain(G(3,3)), 1./dcgain(G(4,4)), 1./dcgain(G(5,5)), 1./dcgain(G(6,6))]', {'Axial Stiffness Dz [N/um]', 'Bending Stiffness Rx [Nm/rad]', 'Bending Stiffness Ry [Nm/rad]', 'Torsion Stiffness Rz [Nm/rad]'}, {'*Caracteristic*', '*Value*', '*Identification*'}, ' %.1f '); #+end_src +#+name: tab:comp_identified_stiffnesses_flex +#+caption: Comparison of identified and FEM stiffnesses +#+attr_latex: :environment tabularx :width 0.7\linewidth :align lcc +#+attr_latex: :center t :booktabs t #+RESULTS: | *Caracteristic* | *Value* | *Identification* | |-------------------------------+---------+------------------| @@ -1403,10 +1527,6 @@ And we find the same parameters as the one estimated from the Stiffness matrix. ** Simpler Model Let's now model the flexible joint with a "perfect" Bushing joint as shown in Figure [[fig:flexible_joint_simscape]]. -#+name: fig:flexible_joint_simscape -#+caption: Bushing Joint used to model the flexible joint -[[file:figs/flexible_joint_simscape.png]] - The parameters of the Bushing joint (stiffnesses) are estimated from the Stiffness matrix that was computed from the FEM. #+begin_src matlab Kx = K(1,1); % [N/m] @@ -1480,13 +1600,13 @@ The two obtained dynamics are compared in Figure #+end_src #+begin_src matlab :tangle no :exports results :results file replace - exportFig('figs/flexor_ID16_compare_bushing_joint.pdf', 'width', 'wide', 'height', 'normal'); + exportFig('figs/flexor_ID16_compare_bushing_joint_optimized.pdf', 'width', 'wide', 'height', 'normal'); #+end_src -#+name: fig:flexor_ID16_compare_bushing_joint +#+name: fig:flexor_ID16_compare_bushing_joint_optimized #+caption: Comparison of the Joint compliance between the FEM model and the simpler model #+RESULTS: -[[file:figs/flexor_ID16_compare_bushing_joint.png]] +[[file:figs/flexor_ID16_compare_bushing_joint_optimized.png]] ** Comparison with a stiffer Flexible Joint The stiffness matrix with the flexible joint with a "hinge" size of 0.50mm is loaded. @@ -1500,6 +1620,10 @@ Its parameters are compared with the Flexible Joint with a size of 0.25mm in the data2orgtable([1e-6*K(3,3), 1e-6*K(2,2), K(4,4), K(5,5), K(6,6) ; 1e-6*K_050(3,3), 1e-6*K_050(2,2), K_050(4,4), K_050(5,5), K_050(6,6)]', {'Axial Stiffness Dz [N/um]', 'Shear Stiffness [N/um]', 'Bending Stiffness Rx [Nm/rad]', 'Bending Stiffness Ry [Nm/rad]', 'Torsion Stiffness Rz [Nm/rad]'}, {'*Caracteristic*', '*0.25 mm*', '*0.50 mm*'}, ' %.1f '); #+end_src +#+name: tab:comp_stiffnesses_flex_size +#+caption: Comparison of flexible joint stiffnesses for 0.25 and 0.5mm +#+attr_latex: :environment tabularx :width 0.7\linewidth :align lcc +#+attr_latex: :center t :booktabs t #+RESULTS: | *Caracteristic* | *0.25 mm* | *0.50 mm* | |-------------------------------+-----------+-----------| @@ -1522,12 +1646,14 @@ The 3D as well as the interface nodes are shown in Figure [[fig:strut_encoder_po #+name: fig:strut_encoder_points3 #+caption: Interface points +#+attr_latex: :width 1.0\linewidth [[file:figs/strut_fem_nodes.jpg]] A side view is shown in Figure [[fig:strut_encoder_nodes_side]]. #+name: fig:strut_encoder_nodes_side #+caption: Interface points - Side view +#+attr_latex: :width 1.0\linewidth [[file:figs/strut_fem_nodes_side.jpg]] The flexible joints used have a 0.25mm width size. @@ -1565,25 +1691,31 @@ We first extract the stiffness and mass matrices. data2orgtable(K(1:10, 1:10), {}, {}, ' %.1g '); #+end_src +#+name: tab:strut_mat_K #+caption: First 10x10 elements of the Stiffness matrix +#+attr_latex: :environment tabularx :width \linewidth :align XXXXXXXXXX +#+attr_latex: :center t :booktabs t :font \tiny #+RESULTS: -| 2000000.0 | 1000000.0 | -3000000.0 | -400.0 | 300.0 | 200.0 | -30.0 | 2000.0 | -10000.0 | 0.3 | -| 1000000.0 | 4000000.0 | -8000000.0 | -900.0 | 400.0 | -50.0 | -6000.0 | 10000.0 | -20000.0 | 3 | -| -3000000.0 | -8000000.0 | 20000000.0 | 2000.0 | -900.0 | 200.0 | -10000.0 | 20000.0 | -300000.0 | 7 | -| -400.0 | -900.0 | 2000.0 | 5 | -0.1 | 0.05 | 1 | -3 | 6 | -0.0007 | -| 300.0 | 400.0 | -900.0 | -0.1 | 5 | 0.04 | -0.1 | 0.5 | -3 | 0.0001 | -| 200.0 | -50.0 | 200.0 | 0.05 | 0.04 | 300.0 | 4 | -0.01 | -1 | 3e-05 | -| -30.0 | -6000.0 | -10000.0 | 1 | -0.1 | 4 | 3000000.0 | -1000000.0 | -2000000.0 | -300.0 | -| 2000.0 | 10000.0 | 20000.0 | -3 | 0.5 | -0.01 | -1000000.0 | 6000000.0 | 7000000.0 | 1000.0 | -| -10000.0 | -20000.0 | -300000.0 | 6 | -3 | -1 | -2000000.0 | 7000000.0 | 20000000.0 | 2000.0 | -| 0.3 | 3 | 7 | -0.0007 | 0.0001 | 3e-05 | -300.0 | 1000.0 | 2000.0 | 5 | +| 2000000 | 1000000 | -3000000 | -400 | 300 | 200 | -30 | 2000 | -10000 | 0.3 | +| 1000000 | 4000000 | -8000000 | -900 | 400 | -50 | -6000 | 10000 | -20000 | 3 | +| -3000000 | -8000000 | 20000000 | 2000 | -900 | 200 | -10000 | 20000 | -300000 | 7 | +| -400 | -900 | 2000 | 5 | -0.1 | 05 | 1 | -3 | 6 | -0007 | +| 300 | 400 | -900 | -0.1 | 5 | 04 | -0.1 | 0.5 | -3 | 0001 | +| 200 | -50 | 200 | 05 | 04 | 300 | 4 | -01 | -1 | 3e-05 | +| -30 | -6000 | -10000 | 1 | -0.1 | 4 | 3000000 | -1000000 | -2000000 | -300 | +| 2000 | 10000 | 20000 | -3 | 0.5 | -01 | -1000000 | 6000000 | 7000000 | 1000 | +| -10000 | -20000 | -300000 | 6 | -3 | -1 | -2000000 | 7000000 | 20000000 | 2000 | +| 0.3 | 3 | 7 | -0007 | 0001 | 3e-05 | -300 | 1000 | 2000 | 5 | #+begin_src matlab :exports results :results value table replace :tangle no data2orgtable(M(1:10, 1:10), {}, {}, ' %.1g '); #+end_src +#+name: tab:strut_mat_M #+caption: First 10x10 elements of the Mass matrix +#+attr_latex: :environment tabularx :width \linewidth :align XXXXXXXXXX +#+attr_latex: :center t :booktabs t :font \tiny #+RESULTS: | 0.04 | -0.005 | 0.007 | 2e-06 | 0.0001 | -5e-07 | -1e-05 | -9e-07 | 8e-05 | -5e-10 | | -0.005 | 0.03 | 0.02 | -0.0001 | 1e-06 | -3e-07 | 3e-05 | -0.0001 | 8e-05 | -3e-08 | @@ -1606,6 +1738,10 @@ Then, we extract the coordinates of the interface nodes. data2orgtable([length(n_i); length(int_i); size(M,1) - 6*length(int_i); size(M,1)], {'Total number of Nodes', 'Number of interface Nodes', 'Number of Modes', 'Size of M and K matrices'}, {}, ' %.0f '); #+end_src +#+name: tab:parameters_fem_strut +#+caption: Some extracted parameters of the FEM +#+attr_latex: :environment tabularx :width 0.4\linewidth :align lc +#+attr_latex: :center t :booktabs t #+RESULTS: | Total number of Nodes | 8 | | Number of interface Nodes | 8 | @@ -1616,7 +1752,10 @@ Then, we extract the coordinates of the interface nodes. data2orgtable([[1:length(int_i)]', int_i, int_xyz], {}, {'Node i', 'Node Number', 'x [m]', 'y [m]', 'z [m]'}, ' %f '); #+end_src +#+name: tab:coordinate_nodes_strut #+caption: Coordinates of the interface nodes +#+attr_latex: :environment tabularx :width 0.6\linewidth :align ccccc +#+attr_latex: :center t :booktabs t #+RESULTS: | Node i | Node Number | x [m] | y [m] | z [m] | |--------+-------------+---------+--------+----------| @@ -1849,5 +1988,4 @@ The same dynamics is identified for a payload mass of 10Kg. | Rz [Nm/rad] | 118.0 | 114.803 | * Bibliography :ignore: -bibliographystyle:unsrt -bibliography:ref.bib +#+latex: \printbibliography[heading=bibintoc,title={Bibliography}] diff --git a/nass-fem.pdf b/nass-fem.pdf new file mode 100644 index 0000000..a423371 Binary files /dev/null and b/nass-fem.pdf differ diff --git a/nass-fem.tex b/nass-fem.tex new file mode 100644 index 0000000..0030019 --- /dev/null +++ b/nass-fem.tex @@ -0,0 +1,723 @@ +% Created 2024-03-19 Tue 11:08 +% Intended LaTeX compiler: pdflatex +\documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt} + +\input{preamble.tex} +\bibliography{nass-fem.bib} +\author{Dehaeze Thomas} +\date{\today} +\title{NASS - Finite Element Models with Simscape} +\hypersetup{ + pdfauthor={Dehaeze Thomas}, + pdftitle={NASS - Finite Element Models with Simscape}, + pdfkeywords={}, + pdfsubject={}, + pdfcreator={Emacs 29.2 (Org mode 9.7)}, + pdflang={English}} +\usepackage{biblatex} + +\begin{document} + +\maketitle +\tableofcontents + +\clearpage +In this document, Finite Element Models (FEM) of parts of the Nano-Hexapod are developed and integrated into Simscape for dynamical analysis. + +It is divided in the following sections: +\begin{itemize} +\item Section \ref{sec:APA300ML}: +A super-element of the Amplified Piezoelectric Actuator APA300ML used for the NASS is exported using Ansys and imported in Simscape. +The static and dynamical properties of the APA300ML are then estimated using the Simscape model. +\item Section \ref{sec:flexor_ID16}: +A first geometry of a Flexible joint is modelled and its characteristics are identified from the Stiffness matrix as well as from the Simscape model. +\item Section \ref{sec:flexor_025}: +An optimized flexible joint is developed for the Nano-Hexapod and is then imported in a Simscape model. +\item Section \ref{sec:strut_encoder}: +A super element of a complete strut is studied. +\end{itemize} +\chapter{APA300ML} +\label{sec:APA300ML} +In this section, the Amplified Piezoelectric Actuator APA300ML (\href{doc/APA300ML.pdf}{doc}) is modeled using a Finite Element Software. +Then a \emph{super element} is exported and imported in Simscape where its dynamic is studied. + +A 3D view of the Amplified Piezoelectric Actuator (APA300ML) is shown in Figure \ref{fig:apa300ml_ansys}. +The remote point used are also shown in this figure. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.7\linewidth]{figs/apa300ml_ansys.jpg} +\caption{\label{fig:apa300ml_ansys}Ansys FEM of the APA300ML} +\end{figure} +\section{Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates} +We first extract the stiffness and mass matrices. +\begin{table}[htbp] +\caption{\label{tab:APA300ML_mat_K}First 10x10 elements of the Stiffness matrix} +\centering +\tiny +\begin{tabularx}{\linewidth}{XXXXXXXXXX} +\toprule +200000000 & 30000 & -20000 & -70 & 300000 & 40 & 10000000 & 10000 & -6000 & 30\\ +30000 & 30000000 & 2000 & -200000 & 60 & -10 & 4000 & 2000000 & -500 & 9000\\ +-20000 & 2000 & 7000000 & -10 & -30 & 10 & 6000 & 900 & -500000 & 3\\ +-70 & -200000 & -10 & 1000 & -0.1 & 08 & -20 & -9000 & 3 & -30\\ +300000 & 60 & -30 & -0.1 & 900 & 0.1 & 30000 & 20 & -10 & 06\\ +40 & -10 & 10 & 08 & 0.1 & 10000 & 20 & 9 & -5 & 03\\ +10000000 & 4000 & 6000 & -20 & 30000 & 20 & 200000000 & 10000 & 9000 & 50\\ +10000 & 2000000 & 900 & -9000 & 20 & 9 & 10000 & 30000000 & -500 & 200000\\ +-6000 & -500 & -500000 & 3 & -10 & -5 & 9000 & -500 & 7000000 & -2\\ +30 & 9000 & 3 & -30 & 06 & 03 & 50 & 200000 & -2 & 1000\\ +\bottomrule +\end{tabularx} +\end{table} + + +\begin{table}[htbp] +\caption{\label{tab:APA300ML_mat_M}First 10x10 elements of the Mass matrix} +\centering +\tiny +\begin{tabularx}{\linewidth}{XXXXXXXXXX} +\toprule +0.01 & -2e-06 & 1e-06 & 6e-09 & 5e-05 & -5e-09 & -0.0005 & -7e-07 & 6e-07 & -3e-09\\ +-2e-06 & 0.01 & 8e-07 & -2e-05 & -8e-09 & 2e-09 & -9e-07 & -0.0002 & 1e-08 & -9e-07\\ +1e-06 & 8e-07 & 0.009 & 5e-10 & 1e-09 & -1e-09 & -5e-07 & 3e-08 & 6e-05 & 1e-10\\ +6e-09 & -2e-05 & 5e-10 & 3e-07 & 2e-11 & -3e-12 & 3e-09 & 9e-07 & -4e-10 & 3e-09\\ +5e-05 & -8e-09 & 1e-09 & 2e-11 & 6e-07 & -4e-11 & -1e-06 & -2e-09 & 1e-09 & -8e-12\\ +-5e-09 & 2e-09 & -1e-09 & -3e-12 & -4e-11 & 1e-07 & -2e-09 & -1e-09 & -4e-10 & -5e-12\\ +-0.0005 & -9e-07 & -5e-07 & 3e-09 & -1e-06 & -2e-09 & 0.01 & 1e-07 & -3e-07 & -2e-08\\ +-7e-07 & -0.0002 & 3e-08 & 9e-07 & -2e-09 & -1e-09 & 1e-07 & 0.01 & -4e-07 & 2e-05\\ +6e-07 & 1e-08 & 6e-05 & -4e-10 & 1e-09 & -4e-10 & -3e-07 & -4e-07 & 0.009 & -2e-10\\ +-3e-09 & -9e-07 & 1e-10 & 3e-09 & -8e-12 & -5e-12 & -2e-08 & 2e-05 & -2e-10 & 3e-07\\ +\bottomrule +\end{tabularx} +\end{table} + + +Then, we extract the coordinates of the interface nodes. +\begin{table}[htbp] +\caption{\label{tab:coordinate_nodes}Coordinates of the interface nodes} +\centering +\begin{tabularx}{0.6\linewidth}{ccccc} +\toprule +Node i & Node Number & x [m] & y [m] & z [m]\\ +\midrule +1.0 & 697783 & 0.0 & 0.0 & -0.015\\ +2.0 & 697784 & 0.0 & 0.0 & 0.015\\ +3.0 & 697785 & -0.0325 & 0.0 & 0.0\\ +4.0 & 697786 & -0.0125 & 0.0 & 0.0\\ +5.0 & 697787 & -0.0075 & 0.0 & 0.0\\ +6.0 & 697788 & 0.0125 & 0.0 & 0.0\\ +7.0 & 697789 & 0.0325 & 0.0 & 0.0\\ +\bottomrule +\end{tabularx} +\end{table} + +\begin{table}[htbp] +\caption{\label{tab:parameters_fem}Some extracted parameters of the FEM} +\centering +\begin{tabularx}{0.4\linewidth}{lc} +\toprule +Total number of Nodes & 7\\ +Number of interface Nodes & 7\\ +Number of Modes & 120\\ +Size of M and K matrices & 162\\ +\bottomrule +\end{tabularx} +\end{table} + +Using \texttt{K}, \texttt{M} and \texttt{int\_xyz}, we can now use the \texttt{Reduced Order Flexible Solid} simscape block. +\section{Piezoelectric parameters} +In order to make the conversion from applied voltage to generated force or from the strain to the generated voltage, we need to defined some parameters corresponding to the piezoelectric material: +PZT-4 +The ratio of the developed force to applied voltage is: +\begin{equation} +\label{eq:piezo_voltage_to_force} + F_a = g_a V_a, \quad g_a = d_{33} n k_a +\end{equation} +where: +\begin{itemize} +\item \(F_a\): developed force in [N] +\item \(n\): number of layers of the actuator stack +\item \(d_{33}\): strain constant in [m/V] +\item \(k_a\): actuator stack stiffness in [N/m] +\item \(V_a\): applied voltage in [V] +\end{itemize} + +If we take the numerical values, we obtain: +From \cite{fleming14_desig_model_contr_nanop_system} (page 123), the relation between relative displacement of the sensor stack and generated voltage is: +\begin{equation} +\label{eq:piezo_strain_to_voltage} + V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h +\end{equation} +where: +\begin{itemize} +\item \(V_s\): measured voltage in [V] +\item \(d_{33}\): strain constant in [m/V] +\item \(\epsilon^T\): permittivity under constant stress in [F/m] +\item \(s^D\): elastic compliance under constant electric displacement in [m\^{}2/N] +\item \(n\): number of layers of the sensor stack +\item \(\Delta h\): relative displacement in [m] +\end{itemize} + +If we take the numerical values, we obtain: +\section{Simscape Model} +The flexible element is imported using the \texttt{Reduced Order Flexible Solid} simscape block. + +Let's say we use two stacks as a force sensor and one stack as an actuator: +\begin{itemize} +\item A \texttt{Relative Motion Sensor} block is added between the nodes A and C +\item An \texttt{Internal Force} block is added between the remote points E and B +\end{itemize} + +The interface nodes are shown in Figure \ref{fig:apa300ml_ansys}. + +One mass is fixed at one end of the piezo-electric stack actuator (remove point F), the other end is fixed to the world frame (remote point G). +\section{Identification of the APA Characteristics} +\subsection{Stiffness} +The transfer function from vertical external force to the relative vertical displacement is identified. + +The inverse of its DC gain is the axial stiffness of the APA: +The specified stiffness in the datasheet is \(k = 1.8\, [N/\mu m]\). +\subsection{Resonance Frequency} +The resonance frequency is specified to be between 650Hz and 840Hz. +This is also the case for the FEM model (Figure \ref{fig:apa300ml_resonance}). + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/apa300ml_resonance.png} +\caption{\label{fig:apa300ml_resonance}First resonance is around 800Hz} +\end{figure} +\subsection{Amplification factor} +The amplification factor is the ratio of the vertical displacement to the stack displacement. + +The ratio of the two displacement is computed from the FEM model. +This is actually correct and approximately corresponds to the ratio of the piezo height and length: +\subsection{Stroke} + +Estimation of the actuator stroke: +\[ \Delta H = A n \Delta L \] +with: +\begin{itemize} +\item \(\Delta H\) Axial Stroke of the APA +\item \(A\) Amplification factor (5 for the APA300ML) +\item \(n\) Number of stack used +\item \(\Delta L\) Stroke of the stack (0.1\% of its length) +\end{itemize} + +This is exactly the specified stroke in the data-sheet. +\subsection{Stroke BIS} +\begin{itemize} +\item[{$\square$}] Identified the stroke form the transfer function from V to z +\end{itemize} +\section{Identification of the Dynamics from actuator to replace displacement} +We first set the mass to be approximately zero. +The dynamics is identified from the applied force to the measured relative displacement. +The same dynamics is identified for a payload mass of 10Kg. +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/apa300ml_plant_dynamics.png} +\caption{\label{fig:apa300ml_plant_dynamics}Transfer function from forces applied by the stack to the axial displacement of the APA} +\end{figure} + +The root locus corresponding to Direct Velocity Feedback with a mass of 10kg is shown in Figure \ref{fig:apa300ml_dvf_root_locus}. +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/apa300ml_dvf_root_locus.png} +\caption{\label{fig:apa300ml_dvf_root_locus}Root Locus for Direct Velocity Feedback} +\end{figure} +\section{Identification of the Dynamics from actuator to force sensor} +Let's use 2 stacks as a force sensor and 1 stack as force actuator. + +The transfer function from actuator voltage to sensor voltage is identified and shown in Figure \ref{fig:apa300ml_iff_plant}. +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/apa300ml_iff_plant.png} +\caption{\label{fig:apa300ml_iff_plant}Transfer function from actuator to force sensor} +\end{figure} + +For root locus corresponding to IFF is shown in Figure \ref{fig:apa300ml_iff_root_locus}. +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/apa300ml_iff_root_locus.png} +\caption{\label{fig:apa300ml_iff_root_locus}Root Locus for IFF} +\end{figure} +\section{Identification for a simpler model} +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. + +The presented model is based on \cite{souleille18_concep_activ_mount_space_applic}. + +The model represents the Amplified Piezo Actuator (APA) from Cedrat-Technologies (Figure \ref{fig:souleille18_model_piezo}). +The parameters are shown in the table below. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.7\linewidth]{./figs/souleille18_model_piezo.png} +\caption{\label{fig:souleille18_model_piezo}Picture of an APA100M from Cedrat Technologies. Simplified model of a one DoF payload mounted on such isolator} +\end{figure} + +\begin{table}[htbp] +\caption{\label{tab:parameters_apa100m}Parameters used for the model of the APA 100M} +\centering +\begin{tabularx}{0.8\linewidth}{cl} +\toprule + & Meaning\\ +\midrule +\(k_e\) & Stiffness used to adjust the pole of the isolator\\ +\(k_1\) & Stiffness of the metallic suspension when the stack is removed\\ +\(k_a\) & Stiffness of the actuator\\ +\(c_1\) & Added viscous damping\\ +\bottomrule +\end{tabularx} +\end{table} + +The goal is to determine \(k_e\), \(k_a\) and \(k_1\) so that the simplified model fits the FEM model. + +\[ \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}} \] + +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} \] + +From the identified dynamics, compute \(\alpha\) and \(\beta\) +\(k_a\) is estimated using the following formula: +The factor can be adjusted to better match the curves. + +Then \(k_e\) and \(k_1\) are computed. +\begin{table}[htbp] +\caption{\label{tab:stiffnesses_apa100m}Obtained stiffnesses of the APA 100M} +\centering +\begin{tabularx}{0.3\linewidth}{cl} +\toprule + & Value [N/um]\\ +\midrule +ka & 40.5\\ +ke & 1.5\\ +k1 & 0.4\\ +\bottomrule +\end{tabularx} +\end{table} + +The damping in the system is adjusted to match the FEM model if necessary. +The analytical model of the simpler system is defined below: +And the DC gain is adjusted for the force sensor: +The dynamics of the FEM model and the simpler model are compared in Figure \ref{fig:apa300ml_comp_simpler_model}. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=1.0\linewidth]{figs/apa300ml_comp_simpler_model.png} +\caption{\label{fig:apa300ml_comp_simpler_model}Comparison of the Dynamics between the FEM model and the simplified one} +\end{figure} + +The simplified model has also been implemented in Simscape. + +The dynamics of the Simscape simplified model is identified and compared with the FEM one in Figure \ref{fig:apa300ml_comp_simpler_simscape}. +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/apa300ml_comp_simpler_simscape.png} +\caption{\label{fig:apa300ml_comp_simpler_simscape}Comparison of the Dynamics between the FEM model and the simplified simscape model} +\end{figure} +\section{Integral Force Feedback} +In this section, Integral Force Feedback control architecture is applied on the APA300ML. + +First, the plant (dynamics from voltage actuator to voltage sensor is identified). +The payload mass is set to 10kg. +The obtained dynamics is shown in Figure \ref{fig:piezo_amplified_iff_plant}. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/piezo_amplified_iff_plant.png} +\caption{\label{fig:piezo_amplified_iff_plant}IFF Plant} +\end{figure} + +The controller is defined below and the loop gain is shown in Figure \ref{fig:piezo_amplified_iff_loop_gain}. +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/piezo_amplified_iff_loop_gain.png} +\caption{\label{fig:piezo_amplified_iff_loop_gain}IFF Loop Gain} +\end{figure} + +Now the closed-loop system is identified again and compare with the open loop system in Figure \ref{fig:piezo_amplified_iff_comp}. + +It is the expected behavior as shown in the Figure \ref{fig:souleille18_results} (from \cite{souleille18_concep_activ_mount_space_applic}). + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/piezo_amplified_iff_comp.png} +\caption{\label{fig:piezo_amplified_iff_comp}OL and CL transfer functions} +\end{figure} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=1.0\linewidth]{figs/souleille18_results.png} +\caption{\label{fig:souleille18_results}Results obtained in \cite{souleille18_concep_activ_mount_space_applic}} +\end{figure} +\chapter{First Flexible Joint Geometry} +\label{sec:flexor_ID16} +The studied flexor is shown in Figure \ref{fig:flexor_id16_screenshot}. + +The stiffness and mass matrices representing the dynamics of the flexor are exported from a FEM. +It is then imported into Simscape. + +A simplified model of the flexor is then developped. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.3\linewidth]{figs/flexor_id16_screenshot.png} +\caption{\label{fig:flexor_id16_screenshot}Flexor studied} +\end{figure} +\section{Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates} +We first extract the stiffness and mass matrices. +\begin{table}[htbp] +\caption{\label{tab:APA300ML_mat_K_2MDoF}First 10x10 elements of the Stiffness matrix} +\centering +\tiny +\begin{tabularx}{\linewidth}{XXXXXXXXXX} +\toprule +11200000 & 195 & 2220 & -0.719 & -265 & 1.59 & -11200000 & -213 & -2220 & 0.147 & & 195 & 11400000 & 1290 & -148 & -0.188 & 2.41 & -212 & -11400000 & -1290 & 148\\ +2220 & 1290 & 119000000 & 1.31 & 1.49 & 1.79 & -2220 & -1290 & -119000000 & -1.31 & & & & & & & & & & & \\ +-0.719 & -148 & 1.31 & 33 & 000488 & -000977 & 0.141 & 148 & -1.31 & -33 & & & & & & & & & & & \\ +-265 & -0.188 & 1.49 & 000488 & 33 & 00293 & 266 & 0.154 & -1.49 & 00026 & & & & & & & & & & & \\ +1.59 & 2.41 & 1.79 & -000977 & 00293 & 236 & -1.32 & -2.55 & -1.79 & 000379 & & & & & & & & & & & \\ +-11200000 & -212 & -2220 & 0.141 & 266 & -1.32 & 11400000 & 24600 & 1640 & 120 & & & & & & & & & & & \\ +-213 & -11400000 & -1290 & 148 & 0.154 & -2.55 & 24600 & 11400000 & 1290 & -72 & & & & & & & & & & & \\ +-2220 & -1290 & -119000000 & -1.31 & -1.49 & -1.79 & 1640 & 1290 & 119000000 & 1.32 & & & & & & & & & & & \\ +0.147 & 148 & -1.31 & -33 & 00026 & 000379 & 120 & -72 & 1.32 & 34.7 & & & & & & & & & & & \\ +\bottomrule +\end{tabularx} +\end{table} + +\begin{table}[htbp] +\caption{\label{tab:APA300ML_mat_M_2MDoF}First 10x10 elements of the Mass matrix} +\centering +\tiny +\begin{tabularx}{\linewidth}{XXXXXXXXXX} +\toprule +0.02 & 1e-09 & -4e-08 & -1e-10 & 0.0002 & -3e-11 & 0.004 & 5e-08 & 7e-08 & 1e-10\\ +1e-09 & 0.02 & -3e-07 & -0.0002 & -1e-10 & -2e-09 & 2e-08 & 0.004 & 3e-07 & 1e-05\\ +-4e-08 & -3e-07 & 0.02 & 7e-10 & -2e-09 & 1e-09 & 3e-07 & 7e-08 & 0.003 & 1e-09\\ +-1e-10 & -0.0002 & 7e-10 & 4e-06 & -1e-12 & -6e-13 & 2e-10 & -7e-06 & -8e-10 & -1e-09\\ +0.0002 & -1e-10 & -2e-09 & -1e-12 & 3e-06 & 2e-13 & 9e-06 & 4e-11 & 2e-09 & -3e-13\\ +-3e-11 & -2e-09 & 1e-09 & -6e-13 & 2e-13 & 4e-07 & 8e-11 & 9e-10 & -1e-09 & 2e-12\\ +0.004 & 2e-08 & 3e-07 & 2e-10 & 9e-06 & 8e-11 & 0.02 & -7e-08 & -3e-07 & -2e-10\\ +5e-08 & 0.004 & 7e-08 & -7e-06 & 4e-11 & 9e-10 & -7e-08 & 0.01 & -4e-08 & 0.0002\\ +7e-08 & 3e-07 & 0.003 & -8e-10 & 2e-09 & -1e-09 & -3e-07 & -4e-08 & 0.02 & -1e-09\\ +1e-10 & 1e-05 & 1e-09 & -1e-09 & -3e-13 & 2e-12 & -2e-10 & 0.0002 & -1e-09 & 2e-06\\ +\bottomrule +\end{tabularx} +\end{table} + +\begin{table}[htbp] +\caption{\label{tab:parameters_fem_2MDoF}Some extracted parameters of the FEM} +\centering +\begin{tabularx}{0.4\linewidth}{lc} +\toprule +Total number of Nodes & 2\\ +Number of interface Nodes & 2\\ +Number of Modes & 6\\ +Size of M and K matrices & 18\\ +\bottomrule +\end{tabularx} +\end{table} + +Then, we extract the coordinates of the interface nodes. +\begin{table}[htbp] +\caption{\label{tab:coordinate_nodes_2MDoF}Coordinates of the interface nodes} +\centering +\begin{tabularx}{0.6\linewidth}{ccccc} +\toprule +Node i & Node Number & x [m] & y [m] & z [m]\\ +\midrule +1.0 & 181278.0 & 0.0 & 0.0 & 0.0\\ +2.0 & 181279.0 & 0.0 & 0.0 & -0.0\\ +\bottomrule +\end{tabularx} +\end{table} + +Using \texttt{K}, \texttt{M} and \texttt{int\_xyz}, we can use the \texttt{Reduced Order Flexible Solid} simscape block. +\section{Identification of the parameters using Simscape and looking at the Stiffness Matrix} +The flexor is now imported into Simscape and its parameters are estimated using an identification. + +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. + +\begin{table}[htbp] +\caption{\label{tab:comp_identified_stiffnesses}Comparison of identified and FEM stiffnesses} +\centering +\begin{tabularx}{0.7\linewidth}{lcc} +\toprule +\textbf{Characteristic} & \textbf{Value} & \textbf{Identification}\\ +\midrule +Axial Stiffness Dz [N/um] & 119 & 119\\ +Bending Stiffness Rx [Nm/rad] & 33 & 33\\ +Bending Stiffness Ry [Nm/rad] & 33 & 33\\ +Torsion Stiffness Rz [Nm/rad] & 236 & 236\\ +\bottomrule +\end{tabularx} +\end{table} +\section{Simpler Model} +Let's now model the flexible joint with a ``perfect'' Bushing joint as shown in Figure \ref{fig:flexible_joint_simscape}. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.3\linewidth]{figs/flexible_joint_simscape.png} +\caption{\label{fig:flexible_joint_simscape}Bushing Joint used to model the flexible joint} +\end{figure} + +The parameters of the Bushing joint (stiffnesses) are estimated from the Stiffness matrix that was computed from the FEM. +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 + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flexor_ID16_compare_bushing_joint.png} +\caption{\label{fig:flexor_ID16_compare_bushing_joint}Comparison of the Joint compliance between the FEM model and the simpler model} +\end{figure} +\chapter{Optimized Flexible Joint} +\label{sec:flexor_025} +The joint geometry has been optimized using Ansys to have lower bending stiffness while keeping a large axial stiffness. + +The obtained geometry is shown in Figure \ref{fig:optimal_flexor}. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=1.0\linewidth]{figs/flexor_025_MDoF.jpg} +\caption{\label{fig:optimal_flexor}Flexor studied} +\end{figure} +\section{Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates} +We first extract the stiffness and mass matrices. +\begin{table}[htbp] +\caption{\label{tab:flex_mat_K}First 10x10 elements of the Stiffness matrix} +\centering +\tiny +\begin{tabularx}{\linewidth}{XXXXXXXXXX} +\toprule +12700000 & -18.5 & -26.8 & 00162 & -4.63 & 64 & -12700000 & 18.3 & 26.7 & 00234\\ +-18.5 & 12700000 & -499 & -132 & 00414 & -0.495 & 18.4 & -12700000 & 499 & 132\\ +-26.8 & -499 & 94000000 & -470 & 00771 & -0.855 & 26.8 & 498 & -94000000 & 470\\ +00162 & -132 & -470 & 4.83 & 2.61e-07 & 000123 & -00163 & 132 & 470 & -4.83\\ +-4.63 & 00414 & 00771 & 2.61e-07 & 4.83 & 4.43e-05 & 4.63 & -00413 & -00772 & -4.3e-07\\ +64 & -0.495 & -0.855 & 000123 & 4.43e-05 & 260 & -64 & 0.495 & 0.855 & -000124\\ +-12700000 & 18.4 & 26.8 & -00163 & 4.63 & -64 & 12700000 & -18.2 & -26.7 & -00234\\ +18.3 & -12700000 & 498 & 132 & -00413 & 0.495 & -18.2 & 12700000 & -498 & -132\\ +26.7 & 499 & -94000000 & 470 & -00772 & 0.855 & -26.7 & -498 & 94000000 & -470\\ +00234 & 132 & 470 & -4.83 & -4.3e-07 & -000124 & -00234 & -132 & -470 & 4.83\\ +\bottomrule +\end{tabularx} +\end{table} + + +\begin{table}[htbp] +\caption{\label{tab:flex_mat_M}First 10x10 elements of the Mass matrix} +\centering +\tiny +\begin{tabularx}{\linewidth}{XXXXXXXXXX} +\toprule +0.006 & 8e-09 & -2e-08 & -1e-10 & 3e-05 & 3e-08 & 0.003 & -3e-09 & 9e-09 & 2e-12\\ +8e-09 & 0.02 & 1e-07 & -3e-05 & 1e-11 & 6e-10 & 1e-08 & 0.003 & -5e-08 & 3e-09\\ +-2e-08 & 1e-07 & 0.01 & -6e-08 & -6e-11 & -8e-12 & -1e-07 & 1e-08 & 0.003 & -1e-08\\ +-1e-10 & -3e-05 & -6e-08 & 1e-06 & 7e-14 & 6e-13 & 1e-10 & 1e-06 & -1e-08 & 3e-10\\ +3e-05 & 1e-11 & -6e-11 & 7e-14 & 2e-07 & 1e-10 & 3e-08 & -7e-12 & 6e-11 & -6e-16\\ +3e-08 & 6e-10 & -8e-12 & 6e-13 & 1e-10 & 5e-07 & 1e-08 & -5e-10 & -1e-11 & 1e-13\\ +0.003 & 1e-08 & -1e-07 & 1e-10 & 3e-08 & 1e-08 & 0.02 & -2e-08 & 1e-07 & -4e-12\\ +-3e-09 & 0.003 & 1e-08 & 1e-06 & -7e-12 & -5e-10 & -2e-08 & 0.006 & -8e-08 & 3e-05\\ +9e-09 & -5e-08 & 0.003 & -1e-08 & 6e-11 & -1e-11 & 1e-07 & -8e-08 & 0.01 & -6e-08\\ +2e-12 & 3e-09 & -1e-08 & 3e-10 & -6e-16 & 1e-13 & -4e-12 & 3e-05 & -6e-08 & 2e-07\\ +\bottomrule +\end{tabularx} +\end{table} + + +Then, we extract the coordinates of the interface nodes. +\begin{table}[htbp] +\caption{\label{tab:coordinate_nodes_flex}Coordinates of the interface nodes for Flexible Joint} +\centering +\begin{tabularx}{0.6\linewidth}{ccccc} +\toprule +Total number of Nodes & 2\\ +Number of interface Nodes & 2\\ +Number of Modes & 6\\ +Size of M and K matrices & 18\\ +\bottomrule +\end{tabularx} +\end{table} + +\begin{table}[htbp] +\caption{\label{tab:coordinate_interface_nodes_flex}Coordinates of the interface nodes} +\centering +\begin{tabularx}{0.6\linewidth}{ccccc} +\toprule +Node i & Node Number & x [m] & y [m] & z [m]\\ +\midrule +1.0 & 528875.0 & 0.0 & 0.0 & 0.0\\ +2.0 & 528876.0 & 0.0 & 0.0 & -0.0\\ +\bottomrule +\end{tabularx} +\end{table} + +Using \texttt{K}, \texttt{M} and \texttt{int\_xyz}, we can use the \texttt{Reduced Order Flexible Solid} simscape block. +\section{Identification of the parameters using Simscape} +The flexor is now imported into Simscape and its parameters are estimated using an identification. + +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. + +\begin{table}[htbp] +\caption{\label{tab:comp_identified_stiffnesses_flex}Comparison of identified and FEM stiffnesses} +\centering +\begin{tabularx}{0.7\linewidth}{lcc} +\toprule +\textbf{Caracteristic} & \textbf{Value} & \textbf{Identification}\\ +\midrule +Axial Stiffness Dz [N/um] & 94.0 & 93.9\\ +Bending Stiffness Rx [Nm/rad] & 4.8 & 4.8\\ +Bending Stiffness Ry [Nm/rad] & 4.8 & 4.8\\ +Torsion Stiffness Rz [Nm/rad] & 260.2 & 260.2\\ +\bottomrule +\end{tabularx} +\end{table} +\section{Simpler Model} +Let's now model the flexible joint with a ``perfect'' Bushing joint as shown in Figure \ref{fig:flexible_joint_simscape}. + +The parameters of the Bushing joint (stiffnesses) are estimated from the Stiffness matrix that was computed from the FEM. +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 + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/flexor_ID16_compare_bushing_joint_optimized.png} +\caption{\label{fig:flexor_ID16_compare_bushing_joint_optimized}Comparison of the Joint compliance between the FEM model and the simpler model} +\end{figure} +\section{Comparison with a stiffer Flexible Joint} +The stiffness matrix with the flexible joint with a ``hinge'' size of 0.50mm is loaded. +Its parameters are compared with the Flexible Joint with a size of 0.25mm in the table below. + +\begin{table}[htbp] +\caption{\label{tab:comp_stiffnesses_flex_size}Comparison of flexible joint stiffnesses for 0.25 and 0.5mm} +\centering +\begin{tabularx}{0.7\linewidth}{lcc} +\toprule +\textbf{Caracteristic} & \textbf{0.25 mm} & \textbf{0.50 mm}\\ +\midrule +Axial Stiffness Dz [N/um] & 94.0 & 124.7\\ +Shear Stiffness [N/um] & 12.7 & 25.8\\ +Bending Stiffness Rx [Nm/rad] & 4.8 & 26.0\\ +Bending Stiffness Ry [Nm/rad] & 4.8 & 26.0\\ +Torsion Stiffness Rz [Nm/rad] & 260.2 & 538.0\\ +\bottomrule +\end{tabularx} +\end{table} +\chapter{Complete Strut with Encoder} +\label{sec:strut_encoder} +\section{Introduction} + +Now, the full nano-hexapod strut is modelled using Ansys. + +The 3D as well as the interface nodes are shown in Figure \ref{fig:strut_encoder_points3}. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=1.0\linewidth]{figs/strut_fem_nodes.jpg} +\caption{\label{fig:strut_encoder_points3}Interface points} +\end{figure} + +A side view is shown in Figure \ref{fig:strut_encoder_nodes_side}. + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=1.0\linewidth]{figs/strut_fem_nodes_side.jpg} +\caption{\label{fig:strut_encoder_nodes_side}Interface points - Side view} +\end{figure} + +The flexible joints used have a 0.25mm width size. +\section{Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates} +We first extract the stiffness and mass matrices. +\begin{table}[htbp] +\caption{\label{tab:strut_mat_K}First 10x10 elements of the Stiffness matrix} +\centering +\tiny +\begin{tabularx}{\linewidth}{XXXXXXXXXX} +\toprule +2000000 & 1000000 & -3000000 & -400 & 300 & 200 & -30 & 2000 & -10000 & 0.3\\ +1000000 & 4000000 & -8000000 & -900 & 400 & -50 & -6000 & 10000 & -20000 & 3\\ +-3000000 & -8000000 & 20000000 & 2000 & -900 & 200 & -10000 & 20000 & -300000 & 7\\ +-400 & -900 & 2000 & 5 & -0.1 & 05 & 1 & -3 & 6 & -0007\\ +300 & 400 & -900 & -0.1 & 5 & 04 & -0.1 & 0.5 & -3 & 0001\\ +200 & -50 & 200 & 05 & 04 & 300 & 4 & -01 & -1 & 3e-05\\ +-30 & -6000 & -10000 & 1 & -0.1 & 4 & 3000000 & -1000000 & -2000000 & -300\\ +2000 & 10000 & 20000 & -3 & 0.5 & -01 & -1000000 & 6000000 & 7000000 & 1000\\ +-10000 & -20000 & -300000 & 6 & -3 & -1 & -2000000 & 7000000 & 20000000 & 2000\\ +0.3 & 3 & 7 & -0007 & 0001 & 3e-05 & -300 & 1000 & 2000 & 5\\ +\bottomrule +\end{tabularx} +\end{table} + + +\begin{table}[htbp] +\caption{\label{tab:strut_mat_M}First 10x10 elements of the Mass matrix} +\centering +\tiny +\begin{tabularx}{\linewidth}{XXXXXXXXXX} +\toprule +0.04 & -0.005 & 0.007 & 2e-06 & 0.0001 & -5e-07 & -1e-05 & -9e-07 & 8e-05 & -5e-10\\ +-0.005 & 0.03 & 0.02 & -0.0001 & 1e-06 & -3e-07 & 3e-05 & -0.0001 & 8e-05 & -3e-08\\ +0.007 & 0.02 & 0.08 & -6e-06 & -5e-06 & -7e-07 & 4e-05 & -0.0001 & 0.0005 & -3e-08\\ +2e-06 & -0.0001 & -6e-06 & 2e-06 & -4e-10 & 2e-11 & -8e-09 & 3e-08 & -2e-08 & 6e-12\\ +0.0001 & 1e-06 & -5e-06 & -4e-10 & 3e-06 & 2e-10 & -3e-09 & 3e-09 & -7e-09 & 6e-13\\ +-5e-07 & -3e-07 & -7e-07 & 2e-11 & 2e-10 & 5e-07 & -2e-08 & 5e-09 & -5e-09 & 1e-12\\ +-1e-05 & 3e-05 & 4e-05 & -8e-09 & -3e-09 & -2e-08 & 0.04 & 0.004 & 0.003 & 1e-06\\ +-9e-07 & -0.0001 & -0.0001 & 3e-08 & 3e-09 & 5e-09 & 0.004 & 0.02 & -0.02 & 0.0001\\ +8e-05 & 8e-05 & 0.0005 & -2e-08 & -7e-09 & -5e-09 & 0.003 & -0.02 & 0.08 & -5e-06\\ +-5e-10 & -3e-08 & -3e-08 & 6e-12 & 6e-13 & 1e-12 & 1e-06 & 0.0001 & -5e-06 & 2e-06\\ +\bottomrule +\end{tabularx} +\end{table} + + +Then, we extract the coordinates of the interface nodes. +\begin{table}[htbp] +\caption{\label{tab:parameters_fem_strut}Some extracted parameters of the FEM} +\centering +\begin{tabularx}{0.4\linewidth}{lc} +\toprule +Total number of Nodes & 8\\ +Number of interface Nodes & 8\\ +Number of Modes & 6\\ +Size of M and K matrices & 54\\ +\bottomrule +\end{tabularx} +\end{table} + +\begin{table}[htbp] +\caption{\label{tab:coordinate_nodes_strut}Coordinates of the interface nodes} +\centering +\begin{tabularx}{0.6\linewidth}{ccccc} +\toprule +Node i & Node Number & x [m] & y [m] & z [m]\\ +\midrule +1.0 & 504411.0 & 0.0 & 0.0 & 0.0405\\ +2.0 & 504412.0 & 0.0 & 0.0 & -0.0405\\ +3.0 & 504413.0 & -0.0325 & 0.0 & 0.0\\ +4.0 & 504414.0 & -0.0125 & 0.0 & 0.0\\ +5.0 & 504415.0 & -0.0075 & 0.0 & 0.0\\ +6.0 & 504416.0 & 0.0325 & 0.0 & 0.0\\ +7.0 & 504417.0 & 0.004 & 0.0145 & -0.00175\\ +8.0 & 504418.0 & 0.004 & 0.0166 & -0.00175\\ +\bottomrule +\end{tabularx} +\end{table} + +Using \texttt{K}, \texttt{M} and \texttt{int\_xyz}, we can use the \texttt{Reduced Order Flexible Solid} simscape block. +\section{Piezoelectric parameters} +Parameters for the APA300ML: +\section{Identification of the Dynamics} +The dynamics is identified from the applied force to the measured relative displacement. +The same dynamics is identified for a payload mass of 10Kg. +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/dynamics_encoder_full_strut.png} +\caption{\label{fig:dynamics_encoder_full_strut}Dynamics from the force actuator to the measured motion by the encoder} +\end{figure} +\printbibliography[heading=bibintoc,title={Bibliography}] +\end{document} diff --git a/preamble.tex b/preamble.tex new file mode 100644 index 0000000..7e6bee1 --- /dev/null +++ b/preamble.tex @@ -0,0 +1,131 @@ +\usepackage{float} + +\usepackage{caption,tabularx,booktabs} + +\usepackage[ % use biblatex for bibliography + backend=biber, % use biber backend (bibtex replacement) or bibtex + style=ieee, % bib style + hyperref=true, % activate hyperref support + backref=true, % activate backrefs + isbn=false, % don't show isbn tags + url=false, % don't show url tags + doi=false, % don't show doi tags + urldate=long, % display type for dates + maxnames=3, % + minnames=1, % + maxbibnames=5, % + minbibnames=3, % + maxcitenames=2, % + mincitenames=1 % + ]{biblatex} + +\usepackage{fontawesome} + +\usepackage{caption} +\usepackage{subcaption} + +\captionsetup[figure]{labelfont=bf} +\captionsetup[subfigure]{labelfont=bf} +\captionsetup[listing]{labelfont=bf} +\captionsetup[table]{labelfont=bf} + +\usepackage{xcolor} + +\definecolor{my-blue}{HTML}{6b7adb} +\definecolor{my-pale-blue}{HTML}{e6e9f9} +\definecolor{my-red}{HTML}{db6b6b} +\definecolor{my-pale-red}{HTML}{f9e6e6} +\definecolor{my-green}{HTML}{6bdbb6} +\definecolor{my-pale-green}{HTML}{e6f9f3} +\definecolor{my-yellow}{HTML}{dbd26b} +\definecolor{my-pale-yellow}{HTML}{f9f7e6} +\definecolor{my-orange}{HTML}{dba76b} +\definecolor{my-pale-orange}{HTML}{f9f0e6} +\definecolor{my-grey}{HTML}{a3a3a3} +\definecolor{my-pale-grey}{HTML}{f0f0f0} +\definecolor{my-turq}{HTML}{6bc7db} +\definecolor{my-pale-turq}{HTML}{e6f6f9} + +\usepackage{inconsolata} + +\usepackage[newfloat=true, chapter]{minted} +\usemintedstyle{autumn} + +\setminted{frame=lines,breaklines=true,tabsize=4,fontsize=\scriptsize,autogobble=true,labelposition=topline,bgcolor=my-pale-grey} +\setminted[matlab]{label=Matlab} +\setminted[latex]{label=LaTeX} +\setminted[bash]{label=Bash} +\setminted[python]{label=Python} +\setminted[text]{label=Results} +\setminted[md]{label=Org Mode} + +\setmintedinline{fontsize=\normalsize,bgcolor=my-pale-grey} + +\usepackage[most]{tcolorbox} + +\tcbuselibrary{minted} + +\newtcolorbox{seealso}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=See Also} +\newtcolorbox{hint}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=Hint} +\newtcolorbox{definition}{enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Definition} +\newtcolorbox{important}{ enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Important} +\newtcolorbox{exampl}[1][]{ enhanced,breakable,colback=my-pale-green,colframe=my-green,fonttitle=\bfseries,title=Example,#1} +\newtcolorbox{exercice}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Exercice} +\newtcolorbox{question}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Question} +\newtcolorbox{answer}{ enhanced,breakable,colback=my-pale-turq,colframe=my-turq,fonttitle=\bfseries,title=Answer} +\newtcolorbox{summary}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Summary} +\newtcolorbox{note}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Note} +\newtcolorbox{caution}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Caution} +\newtcolorbox{warning}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Warning} + +\newtcolorbox{my-quote}[1]{% + colback=my-pale-grey, + grow to right by=-10mm, + grow to left by=-10mm, + boxrule=0pt, + boxsep=0pt, + breakable, + enhanced jigsaw, + borderline west={4pt}{0pt}{my-grey}} + +\renewenvironment{quote}{\begin{my-quote}}{\end{my-quote}} + +\newtcolorbox{my-verse}[1]{% + colback=my-pale-grey, + grow to right by=-10mm, + grow to left by=-10mm, + boxrule=0pt, + boxsep=0pt, + breakable, + enhanced jigsaw, + borderline west={4pt}{0pt}{my-grey}} + +\renewenvironment{verse}{\begin{my-verse}}{\end{my-verse}} + +\usepackage{environ}% http://ctan.org/pkg/environ +\NewEnviron{aside}{% + \marginpar{\BODY} +} + +\renewenvironment{verbatim}{\VerbatimEnvironment\begin{minted}[]{text}}{\end{minted}} + +\usepackage{soul} +\sethlcolor{my-pale-grey} + +\let\OldTexttt\texttt +\renewcommand{\texttt}[1]{{\ttfamily\hl{\mbox{\,#1\,}}}} + +\makeatletter +\preto\Gin@extensions{png,} +\DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf} +\preto\Gin@extensions{gif,} +\DeclareGraphicsRule{.gif}{png}{.png}{\noexpand\Gin@base.png} +\makeatother + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, + allcolors = my-blue +} + +\usepackage{hypcap} diff --git a/ref.bib b/ref.bib deleted file mode 100644 index 0101fcb..0000000 --- a/ref.bib +++ /dev/null @@ -1,21 +0,0 @@ -@article{souleille18_concep_activ_mount_space_applic, - author = {Souleille, Adrien and Lampert, Thibault and Lafarga, V and Hellegouarch, Sylvain and Rondineau, Alan and Rodrigues, Gon{\c{c}}alo and Collette, Christophe}, - title = {A Concept of Active Mount for Space Applications}, - journal = {CEAS Space Journal}, - volume = {10}, - number = {2}, - pages = {157--165}, - year = {2018}, - publisher = {Springer}, -} - -@book{fleming14_desig_model_contr_nanop_system, - author = {Andrew J. Fleming and Kam K. Leang}, - title = {Design, Modeling and Control of Nanopositioning Systems}, - year = {2014}, - publisher = {Springer International Publishing}, - url = {https://doi.org/10.1007/978-3-319-06617-2}, - doi = {10.1007/978-3-319-06617-2}, - pages = {nil}, - series = {Advances in Industrial Control}, -}