Update report
293
.gitignore
vendored
@ -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
|
||||
|
BIN
figs/amplified_piezo_interface_nodes.pdf
Normal file
0
figs/apa300ml_ansys.jpg
Executable file → Normal file
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
BIN
figs/flexible_joint_simscape.pdf
Normal file
0
figs/flexor_025_CS.jpg
Executable file → Normal file
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
0
figs/flexor_025_Geometry.jpg
Executable file → Normal file
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
0
figs/flexor_025_MDoF.jpg
Executable file → Normal file
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
BIN
figs/flexor_ID16_compare_bushing_joint_optimized.pdf
Normal file
BIN
figs/flexor_ID16_compare_bushing_joint_optimized.png
Normal file
After Width: | Height: | Size: 87 KiB |
BIN
figs/flexor_id16_screenshot.pdf
Normal file
BIN
figs/souleille18_model_piezo.pdf
Normal file
BIN
figs/souleille18_results.pdf
Normal file
0
figs/strut_fem_nodes.jpg
Executable file → Normal file
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
0
figs/strut_fem_nodes_side.jpg
Executable file → Normal file
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
2848
index.html
26
nass-fem.bib
Normal file
@ -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},
|
||||
}
|
||||
|
@ -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: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
|
||||
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
|
||||
|
||||
#+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
|
||||
<hr>
|
||||
<p>This report is also available as a <a href="./nass-fem.pdf">pdf</a>.</p>
|
||||
<hr>
|
||||
#+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)
|
||||
<<matlab-dir>>
|
||||
<<matlab-dir>>
|
||||
#+end_src
|
||||
|
||||
#+begin_src matlab :exports none :results silent :noweb yes
|
||||
<<matlab-init>>
|
||||
<<matlab-init>>
|
||||
#+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}]
|
BIN
nass-fem.pdf
Normal file
723
nass-fem.tex
Normal file
@ -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}
|
131
preamble.tex
Normal file
@ -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}
|
21
ref.bib
@ -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},
|
||||
}
|