diff --git a/example-phd.org b/example-phd.org new file mode 100644 index 0000000..48109c8 --- /dev/null +++ b/example-phd.org @@ -0,0 +1,475 @@ +#+TITLE: PhD Thesis +:DRAWER: +#+SUBTITLE: My subtitle + +#+LANGUAGE: en +#+EMAIL: dehaeze.thomas@gmail.com +#+AUTHOR: Dehaeze Thomas + +#+STARTUP: overview +#+DATE: {{{time(%Y-%m-%d)}}} + +#+LATEX_CLASS: scrreprt +#+LATEX_CLASS_OPTIONS: [a4paper, twoside, 11pt, onecolumn, bibliography=totoc, openright, appendixprefix=true] + +#+OPTIONS: num:t toc:nil ':t *:t -:t ::t <:nil author:t date:t tags:nil todo:nil |:t H:4 title:nil + +#+SELECT_TAGS: export +#+EXCLUDE_TAGS: noexport + +#+BIND: org-latex-bib-compiler "biber" + +#+LATEX_HEADER: \input{config.tex} +#+LATEX_HEADER_EXTRA: \input{config_extra.tex} +#+LATEX_HEADER_EXTRA: \addbibresource{ref.bib} + +#+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 file raw replace +#+PROPERTY: header-args:latex+ :buffer 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: + +* Build :noexport: +#+NAME: startblock +#+BEGIN_SRC emacs-lisp :results none +(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 + +* Glossary and Acronyms - Tables :ignore: + +#+name: glossary +| label | name | description | +|-------+-------------------+-----------------------| +| ka | \ensuremath{k_a} | Actuator Stiffness in | +| phi | \ensuremath{\phi} | A woody bush | + +#+name: acronyms +| key | abbreviation | full form | +|------+--------------+----------------------------------| +| mimo | MIMO | Multiple-Inputs Multiple-Outputs | +| siso | SISO | Single-Input Single-Output | +| nass | NASS | Nano Active Stabilization System | +| lti | LTI | Linear Time Invariant | + +* Title Page :ignore: + +#+begin_export latex +\begin{titlepage} + \vspace*{5cm} + \makeatletter + \begin{center} + \begin{Huge} + \@title + \end{Huge}\\[0.1cm] + % + \begin{Large} + \@subtitle + \end{Large}\\ + % + \emph{by}\\ + \@author + % + \vfill + A document submitted in partial fulfillment + of the requirements for the degree of\\ + \emph{Technical Report}\\ + at\\ + \textsc{Miskatonic University} + \end{center} + \makeatother +\end{titlepage} + +\newpage +\null +\thispagestyle{empty} +\newpage +#+end_export + +* Abstract +:PROPERTIES: +:UNNUMBERED: notoc +:END: + +* Résumé +:PROPERTIES: +:UNNUMBERED: notoc +:END: + +* Acknowledgments +:PROPERTIES: +:UNNUMBERED: notoc +:END: + +* Table of Contents :ignore: + +#+begin_export latex +\dominitoc +\tableofcontents + +\listoftables +\listoffigures +#+end_export + +* Introduction +* Test +\minitoc +**** Abstract + +Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. + +** Test +A list: +- acronyms acrshort:nass acrshort:mimo acrshort:lti [[acrfull:siso][Single-Input Single-Output (SISO)]] +- glossary terms gls:ka, gls:phi. +- Bibliography citations: [[cite:&dehaeze21_activ_dampin_rotat_platf_using;&dehaeze21_mechat_approac_devel_nano_activ_stabil_system]]. + +A definition list: +- this :: means that +- that :: means this + +Some Footnote[fn:1] + +** Section +*** Sub section + +This is a sub section. + +*** Sub section +Start of the sub section +**** Paragraph +This is a paragraph +**** lksdfjasd + +**** lksdfjasd + +** blabla +* Source Blocks +\minitoc +** 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 + +** Figures +#+begin_src matlab +t = 0:0.01:5; % Time [s] +x = sin(2*pi*t); % Output Voltage [V] +#+end_src + +#+begin_src matlab +figure; +plot(t, x); +xlabel('Time [s]'); ylabel('Voltage [V]'); +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/matlab_fig_example.pdf', 'width', 'wide', 'height', 'normal'); +#+end_src + +#+name: fig:matlab_fig_example +#+caption: Matlab Figure +#+RESULTS: +[[file:figs/matlab_fig_example.png]] + +** Table Result + +#+begin_src matlab +x = 1:10; +y = x.^2; +#+end_src + +#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) +data2orgtable([x', y'], {}, {'$x$', '$y = x^2$'}, ' %.0f '); +#+end_src + +#+name: tab:table_name +#+caption: Table caption +#+RESULTS: +| $x$ | $y = x^2$ | +|-----+-----------| +| 1 | 1 | +| 2 | 4 | +| 3 | 9 | +| 4 | 16 | +| 5 | 25 | +| 6 | 36 | +| 7 | 49 | +| 8 | 64 | +| 9 | 81 | +| 10 | 100 | + +** Inline Results + +Results can be automatically outputed as shown below. + +#+begin_src matlab :results value replace +sqrt(2) +#+end_src + +#+RESULTS: +: 1.4142 + + +#+begin_src matlab :results output replace +y +#+end_src + +#+RESULTS: +: y = +: 1 4 9 16 25 36 49 64 81 100 + +** Caption and Reference + +Captions can be added to code blocks. +Moreover, we can link to specific bode blocks (Listing [[lst:matlab_figure]] or [[lst:matlab_svd]]). + +#+name: lst:matlab_figure +#+caption: Code to produce a nice contour plot +#+begin_src matlab +figure; +[X,Y,Z] = peaks; +contour(X,Y,Z,20) +#+end_src + +#+begin_src matlab :tangle no :exports results :results file replace +exportFig('figs/matlab_logo.pdf', 'width', 'small', 'height', 'normal'); +#+end_src + +#+name: fig:matlab_logo +#+caption: Obtained Contour Plot +#+RESULTS: +[[file:figs/matlab_logo.png]] + +#+name: lst:matlab_svd +#+caption: Code to compute the Singular Value Decomposition +#+begin_src matlab :results output replace +A = [1 2; 3 4; 5 6; 7 8] +[U,S,V] = svd(A) +#+end_src + +#+RESULTS: +#+begin_example +A = [1 2; 3 4; 5 6; 7 8] +A = + 1 2 + 3 4 + 5 6 + 7 8 +[U,S,V] = svd(A) +U = + -0.152483233310201 -0.82264747222566 -0.394501022283829 -0.379959133877596 + -0.349918371807964 -0.42137528768458 0.242796545704357 0.800655879510063 + -0.547353510305727 -0.0201031031435029 0.697909975442776 -0.461434357387336 + -0.74478864880349 0.381169081397575 -0.546205498863303 0.0407376117548695 +S = + 14.2690954992615 0 + 0 0.626828232417541 + 0 0 + 0 0 +V = + -0.641423027995072 0.767187395072177 + -0.767187395072177 -0.641423027995072 +#+end_example + +** Source Blocks with Line Numbers + +Citation [[cite:&taghirad13_paral;&dehaeze21_activ_dampin_rotat_platf_using]] + +The Listing [[lst:matlab_line_numbers]] has line numbers as the =-n= option was used. + +Specific lines of codes can be referenced. +For instance, the code used to specify the wanted the vertical label is on line [[(test)]]. + +#+name: lst:matlab_line_numbers +#+caption: Specify Labels +#+begin_src matlab +n -r +figure; +plot(t, x) +xlabel('Time [s]'); +ylabel('Output [V]'); (ref:test) +#+end_src + +Numbering can be continued by using =+n= option as shown below. +#+begin_src matlab +n +figure; +plot(t, u) +xlabel('Time [s]'); +ylabel('Input [V]'); +#+end_src + +* Images +\minitoc +** Normal Image + +Figure [[fig:general_control_names]] shows the results of the Tikz code of listing [[lst:tikz_test]]. + +#+name: lst:tikz_test +#+caption: Tikz code that is used to generate Figure [[fig:general_control_names]] +#+begin_src latex :file general_control_names.pdf :exports both + \begin{tikzpicture} + + % Blocs + \node[block={2.0cm}{2.0cm}] (P) {$P$}; + \node[block={1.5cm}{1.5cm}, below=0.7 of P] (K) {$K$}; + + % Input and outputs coordinates + \coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west)$); + \coordinate[] (inputu) at ($(P.south west)!0.25!(P.north west)$); + \coordinate[] (outputz) at ($(P.south east)!0.75!(P.north east)$); + \coordinate[] (outputv) at ($(P.south east)!0.25!(P.north east)$); + + % Connections and labels + \draw[<-] (inputw) -- ++(-1.5, 0); + \draw[<-] (inputu) -- ++(-0.8, 0) |- (K.west); + + \draw[->] (outputz) -- ++(1.5, 0); + \draw[->] (outputv) -- ++(0.8, 0) |- (K.east); + \end{tikzpicture} +#+end_src + +#+name: fig:general_control_names +#+caption: General Control Configuration +#+RESULTS: lst:tikz_test +[[file:figs/general_control_names.png]] + +** Sub Images + +Link to subfigure [[fig:general_control_names_1]]. + +#+name: fig:subfigure +#+caption: Subfigure Caption +#+attr_latex: :environment subfigure :width 0.49\linewidth :align c +| file:figs/general_control_names.png | file:figs/general_control_names.png | +| <> sub figure caption | <> sub figure caption | + +* Tables +\minitoc + +Table [[tab:table_with_equations]] shows a table with some mathematics inside. + +#+name: tab:table_with_equations +#+caption: A Simple table with included math +| $N$ | $N^2$ | $N^3$ | $N^4$ | $\sqrt n$ | $\sqrt[4]N$ | +|-----+-------+-------+-------+-----------+-------------| +| 1 | 1 | 1 | 1 | 1 | 1 | +| 2 | 4 | 8 | 16 | 1.4142136 | 1.1892071 | +| 3 | 9 | 27 | 81 | 1.7320508 | 1.3160740 | +#+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1))) + +#+name: tab:table_without_head +#+caption: Table without Head +| | *1* | *2* | *3* | *4* | *5* | +| *1* | 1 | 2 | 3 | 4 | 5 | +| *2* | 2 | 4 | 6 | 8 | 10 | +| *3* | 3 | 6 | 9 | 12 | 15 | +| *4* | 4 | 8 | 12 | 16 | 20 | +| *5* | 5 | 10 | 15 | 20 | 25 | + +#+name: tab:table_multiple_heads +#+ATTR_LATEX: :font \footnotesize +#+caption: Table with multiples groups +| | *Classical Control* | *Modern Control* | +| | | | +|-------------------------+------------------------------------+--------------------------------------| +| *Date* | 1930- | 1960- | +|-------------------------+------------------------------------+--------------------------------------| +| *Tools* | Transfer Functions | State Space formulation | +| | Nyquist Plots | Riccati Equations | +| | Bode Plots | | +| | Phase and Gain margins | | +|-------------------------+------------------------------------+--------------------------------------| +| *Control Architectures* | Proportional, Integral, Derivative | Full State Feedback | +| | Leads, Lags | LQR, LQG | +| | | Kalman Filters | +|-------------------------+------------------------------------+--------------------------------------| +| *Advantages* | Study Stability | Automatic Synthesis | +| | Simple | MIMO | +| | Natural | Optimization Problem | +| | | | +| | | | +|-------------------------+------------------------------------+--------------------------------------| +| *Disadvantages* | Manual Method | No Guaranteed Robustness | +| | Only SISO | Difficult Rejection of Perturbations | + + +* Appendix :ignore: +#+latex: \appendix + +* Mathematical formulas +* Comments on something +* Bibliography :ignore: +#+latex: \printbibliography[heading=bibintoc,title={Bibliography}] + +* List of Publications +:PROPERTIES: +:UNNUMBERED: notoc +:END: + +#+begin_export latex +\begin{refsection}[ref.bib] + % List all papers even if not cited + \nocite{*} + % Sort by year + \newrefcontext[sorting=ynt] + % Articles + \printbibliography[keyword={publication},heading={subbibliography},title={Articles},env=mypubs,type={article}] + % Proceedings + \printbibliography[keyword={publication},heading={subbibliography},title={In Proceedings},env=mypubs,type={inproceedings}] +\end{refsection} +#+end_export + +* Glossary :ignore: +#+latex: \printglossary[type=\acronymtype] +#+latex: \printglossary + +* Footnotes + +[fn:1]this is a footnote with citation [[cite:&dehaeze21_mechat_approac_devel_nano_activ_stabil_system]]. diff --git a/figs/2dof_rotating_system.pdf b/figs/2dof_rotating_system.pdf new file mode 100644 index 0000000..d6bd2ad Binary files /dev/null and b/figs/2dof_rotating_system.pdf differ diff --git a/figs/2dof_rotating_system.png b/figs/2dof_rotating_system.png new file mode 100644 index 0000000..63ee834 Binary files /dev/null and b/figs/2dof_rotating_system.png differ diff --git a/figs/2dof_rotating_system.svg b/figs/2dof_rotating_system.svg new file mode 100644 index 0000000..4288324 --- /dev/null +++ b/figs/2dof_rotating_system.svg @@ -0,0 +1,324 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/IMG_20181106_142851.jpg b/figs/IMG_20181106_142851.jpg new file mode 100644 index 0000000..e53abd7 Binary files /dev/null and b/figs/IMG_20181106_142851.jpg differ diff --git a/figs/esrf_picture.jpg b/figs/esrf_picture.jpg new file mode 100644 index 0000000..55f2245 Binary files /dev/null and b/figs/esrf_picture.jpg differ diff --git a/figs/exp_setup_photo.png b/figs/exp_setup_photo.png new file mode 100644 index 0000000..9fedd72 Binary files /dev/null and b/figs/exp_setup_photo.png differ diff --git a/figs/id31_beamline_schematic.pdf b/figs/id31_beamline_schematic.pdf new file mode 100644 index 0000000..7bf47af Binary files /dev/null and b/figs/id31_beamline_schematic.pdf differ diff --git a/figs/id31_beamline_schematic.png b/figs/id31_beamline_schematic.png new file mode 100644 index 0000000..45d9f17 Binary files /dev/null and b/figs/id31_beamline_schematic.png differ diff --git a/figs/id31_beamline_schematic.svg b/figs/id31_beamline_schematic.svg new file mode 100644 index 0000000..d8c3ced --- /dev/null +++ b/figs/id31_beamline_schematic.svg @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/id31_microstation_cad_view.pdf b/figs/id31_microstation_cad_view.pdf new file mode 100644 index 0000000..f2e715a Binary files /dev/null and b/figs/id31_microstation_cad_view.pdf differ diff --git a/figs/id31_microstation_cad_view.png b/figs/id31_microstation_cad_view.png new file mode 100644 index 0000000..d930cca Binary files /dev/null and b/figs/id31_microstation_cad_view.png differ diff --git a/figs/id31_microstation_picture.pdf b/figs/id31_microstation_picture.pdf new file mode 100644 index 0000000..d68d1ea Binary files /dev/null and b/figs/id31_microstation_picture.pdf differ diff --git a/figs/id31_microstation_picture.png b/figs/id31_microstation_picture.png new file mode 100644 index 0000000..0314f4e Binary files /dev/null and b/figs/id31_microstation_picture.png differ diff --git a/figs/id31_microstation_picture.svg b/figs/id31_microstation_picture.svg new file mode 100644 index 0000000..a47fa81 --- /dev/null +++ b/figs/id31_microstation_picture.svg @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/mass_spring_damper_nass.pdf b/figs/mass_spring_damper_nass.pdf new file mode 100644 index 0000000..a32721b Binary files /dev/null and b/figs/mass_spring_damper_nass.pdf differ diff --git a/figs/mass_spring_damper_nass.png b/figs/mass_spring_damper_nass.png new file mode 100644 index 0000000..ece8c4b Binary files /dev/null and b/figs/mass_spring_damper_nass.png differ diff --git a/figs/mass_spring_damper_nass.svg b/figs/mass_spring_damper_nass.svg new file mode 100644 index 0000000..1a62d4c --- /dev/null +++ b/figs/mass_spring_damper_nass.svg @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/measurement_microstation_vibration_picture.jpg b/figs/measurement_microstation_vibration_picture.jpg new file mode 100644 index 0000000..8c769b2 Binary files /dev/null and b/figs/measurement_microstation_vibration_picture.jpg differ diff --git a/figs/nass_concept_schematic.pdf b/figs/nass_concept_schematic.pdf new file mode 100644 index 0000000..76444a8 Binary files /dev/null and b/figs/nass_concept_schematic.pdf differ diff --git a/figs/nass_concept_schematic.png b/figs/nass_concept_schematic.png new file mode 100644 index 0000000..60cdea9 Binary files /dev/null and b/figs/nass_concept_schematic.png differ diff --git a/figs/nass_concept_schematic.svg b/figs/nass_concept_schematic.svg new file mode 100644 index 0000000..5d63d17 --- /dev/null +++ b/figs/nass_concept_schematic.svg @@ -0,0 +1,1440 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + X-ray + + + + + + + + + 3 + + 2 + + 4 + + 1 + + diff --git a/figs/nass_mechatronics_approach.pdf b/figs/nass_mechatronics_approach.pdf new file mode 100644 index 0000000..dd299cd Binary files /dev/null and b/figs/nass_mechatronics_approach.pdf differ diff --git a/figs/nass_mechatronics_approach.png b/figs/nass_mechatronics_approach.png new file mode 100644 index 0000000..4b48dae Binary files /dev/null and b/figs/nass_mechatronics_approach.png differ diff --git a/figs/nass_mechatronics_approach.svg b/figs/nass_mechatronics_approach.svg new file mode 100644 index 0000000..1e59f2d --- /dev/null +++ b/figs/nass_mechatronics_approach.svg @@ -0,0 +1,2097 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/root_locus_iff_rot_stiffness.pdf b/figs/root_locus_iff_rot_stiffness.pdf new file mode 100644 index 0000000..7b33cc6 Binary files /dev/null and b/figs/root_locus_iff_rot_stiffness.pdf differ diff --git a/figs/root_locus_iff_rot_stiffness.png b/figs/root_locus_iff_rot_stiffness.png new file mode 100644 index 0000000..15140e8 Binary files /dev/null and b/figs/root_locus_iff_rot_stiffness.png differ diff --git a/figs/simscape_first_model_screenshot.jpg b/figs/simscape_first_model_screenshot.jpg new file mode 100644 index 0000000..6614aa2 Binary files /dev/null and b/figs/simscape_first_model_screenshot.jpg differ diff --git a/figs/simscape_nano_hexapod.pdf b/figs/simscape_nano_hexapod.pdf new file mode 100644 index 0000000..8ca9a5f Binary files /dev/null and b/figs/simscape_nano_hexapod.pdf differ diff --git a/figs/simscape_nano_hexapod.png b/figs/simscape_nano_hexapod.png new file mode 100644 index 0000000..8f556b1 Binary files /dev/null and b/figs/simscape_nano_hexapod.png differ diff --git a/figs/simscape_nass_final.pdf b/figs/simscape_nass_final.pdf new file mode 100644 index 0000000..29cf55e Binary files /dev/null and b/figs/simscape_nass_final.pdf differ diff --git a/figs/simscape_nass_final.png b/figs/simscape_nass_final.png new file mode 100644 index 0000000..3e0a330 Binary files /dev/null and b/figs/simscape_nass_final.png differ diff --git a/figs/stewart_architecture_example.pdf b/figs/stewart_architecture_example.pdf new file mode 100644 index 0000000..ab3e103 Binary files /dev/null and b/figs/stewart_architecture_example.pdf differ diff --git a/figs/stewart_architecture_example.png b/figs/stewart_architecture_example.png new file mode 100644 index 0000000..1d81f4d Binary files /dev/null and b/figs/stewart_architecture_example.png differ diff --git a/figs/stewart_architecture_example_pose.pdf b/figs/stewart_architecture_example_pose.pdf new file mode 100644 index 0000000..2173ca7 Binary files /dev/null and b/figs/stewart_architecture_example_pose.pdf differ diff --git a/figs/stewart_architecture_example_pose.png b/figs/stewart_architecture_example_pose.png new file mode 100644 index 0000000..cf238a9 Binary files /dev/null and b/figs/stewart_architecture_example_pose.png differ diff --git a/phd-thesis.org b/phd-thesis.org index 48109c8..4d2fd08 100644 --- a/phd-thesis.org +++ b/phd-thesis.org @@ -1,6 +1,6 @@ -#+TITLE: PhD Thesis +#+TITLE: Mechatronic approach for the design of a Nano Active Stabilization System :DRAWER: -#+SUBTITLE: My subtitle +#+SUBTITLE: PhD Thesis #+LANGUAGE: en #+EMAIL: dehaeze.thomas@gmail.com @@ -79,6 +79,11 @@ org-ref-acronyms-before-parsing)) #+END_SRC +* Useful snippets :noexport: +- acronyms acrshort:nass acrshort:mimo acrshort:lti [[acrfull:siso][Single-Input Single-Output (SISO)]] +- glossary terms gls:ka, gls:phi. +- Footnote[fn:1] + * Glossary and Acronyms - Tables :ignore: #+name: glossary @@ -114,11 +119,9 @@ \@author % \vfill - A document submitted in partial fulfillment - of the requirements for the degree of\\ - \emph{Technical Report}\\ + A thesis submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy (PhD) in Engineering Science\\ at\\ - \textsc{Miskatonic University} + \textsc{Liège Université} \end{center} \makeatother \end{titlepage} @@ -155,295 +158,965 @@ #+end_export * Introduction -* Test -\minitoc -**** Abstract +** Context of this thesis / Background and Motivation -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. +- ESRF (Figure [[fig:esrf_picture]]) -** Test -A list: -- acronyms acrshort:nass acrshort:mimo acrshort:lti [[acrfull:siso][Single-Input Single-Output (SISO)]] -- glossary terms gls:ka, gls:phi. -- Bibliography citations: [[cite:&dehaeze21_activ_dampin_rotat_platf_using;&dehaeze21_mechat_approac_devel_nano_activ_stabil_system]]. +#+name: fig:esrf_picture +#+caption: European Synchrotron Radiation Facility +#+attr_latex: :width 0.7\linewidth +[[file:figs/esrf_picture.jpg]] -A definition list: -- this :: means that -- that :: means this +- ID31 and Micro Station (Figure [[fig:id31_microstation_picture]]) -Some Footnote[fn:1] +#+begin_src latex :file id31_microstation_picture.pdf +\begin{tikzpicture} + \node[inner sep=0pt, anchor=south west] (photo) at (0,0) + {\includegraphics[width=0.39\textwidth]{/home/thomas/Cloud/documents/reports/phd-thesis/figs/exp_setup_photo.png}}; -** Section -*** Sub section + \coordinate[] (aheight) at (photo.north west); + \coordinate[] (awidth) at (photo.south east); -This is a sub section. + \coordinate[] (granite) at ($0.1*(aheight)+0.1*(awidth)$); + \coordinate[] (trans) at ($0.5*(aheight)+0.4*(awidth)$); + \coordinate[] (tilt) at ($0.65*(aheight)+0.75*(awidth)$); + \coordinate[] (hexapod) at ($0.7*(aheight)+0.5*(awidth)$); + \coordinate[] (sample) at ($0.9*(aheight)+0.55*(awidth)$); -*** Sub section -Start of the sub section -**** Paragraph -This is a paragraph -**** lksdfjasd + % Granite + \node[labelc] at (granite) {1}; + % Translation stage + \node[labelc] at (trans) {2}; + % Tilt Stage + \node[labelc] at (tilt) {3}; + % Micro-Hexapod + \node[labelc] at (hexapod) {4}; + % Sample + \node[labelc] at (sample) {5}; -**** lksdfjasd - -** blabla -* Source Blocks -\minitoc -** Matlab Init :noexport:ignore: -#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) -<> + % Axis + \begin{scope}[shift={($0.07*(aheight)+0.87*(awidth)$)}] + \draw[->] (0, 0) -- ++(55:0.7) node[above] {$y$}; + \draw[->] (0, 0) -- ++(90:0.9) node[left] {$z$}; + \draw[->] (0, 0) -- ++(-20:0.7) node[above] {$x$}; + \end{scope} +\end{tikzpicture} #+end_src -#+begin_src matlab :exports none :results silent :noweb yes -<> -#+end_src - -** Figures -#+begin_src matlab -t = 0:0.01:5; % Time [s] -x = sin(2*pi*t); % Output Voltage [V] -#+end_src - -#+begin_src matlab -figure; -plot(t, x); -xlabel('Time [s]'); ylabel('Voltage [V]'); -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/matlab_fig_example.pdf', 'width', 'wide', 'height', 'normal'); -#+end_src - -#+name: fig:matlab_fig_example -#+caption: Matlab Figure +#+name: fig:id31_microstation_picture +#+caption: Picture of the ID31 Micro-Station with annotations +#+attr_latex: :width 0.49\linewidth #+RESULTS: -[[file:figs/matlab_fig_example.png]] +[[file:figs/id31_microstation_picture.png]] -** Table Result +Alternative: =id31_microstation_cad_view.png= (CAD view) -#+begin_src matlab -x = 1:10; -y = x.^2; -#+end_src +- X-ray beam + detectors + sample stage (Figure [[fig:id31_beamline_schematic]]) -#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*) -data2orgtable([x', y'], {}, {'$x$', '$y = x^2$'}, ' %.0f '); -#+end_src - -#+name: tab:table_name -#+caption: Table caption -#+RESULTS: -| $x$ | $y = x^2$ | -|-----+-----------| -| 1 | 1 | -| 2 | 4 | -| 3 | 9 | -| 4 | 16 | -| 5 | 25 | -| 6 | 36 | -| 7 | 49 | -| 8 | 64 | -| 9 | 81 | -| 10 | 100 | - -** Inline Results - -Results can be automatically outputed as shown below. - -#+begin_src matlab :results value replace -sqrt(2) -#+end_src - -#+RESULTS: -: 1.4142 - - -#+begin_src matlab :results output replace -y -#+end_src - -#+RESULTS: -: y = -: 1 4 9 16 25 36 49 64 81 100 - -** Caption and Reference - -Captions can be added to code blocks. -Moreover, we can link to specific bode blocks (Listing [[lst:matlab_figure]] or [[lst:matlab_svd]]). - -#+name: lst:matlab_figure -#+caption: Code to produce a nice contour plot -#+begin_src matlab -figure; -[X,Y,Z] = peaks; -contour(X,Y,Z,20) -#+end_src - -#+begin_src matlab :tangle no :exports results :results file replace -exportFig('figs/matlab_logo.pdf', 'width', 'small', 'height', 'normal'); -#+end_src - -#+name: fig:matlab_logo -#+caption: Obtained Contour Plot -#+RESULTS: -[[file:figs/matlab_logo.png]] - -#+name: lst:matlab_svd -#+caption: Code to compute the Singular Value Decomposition -#+begin_src matlab :results output replace -A = [1 2; 3 4; 5 6; 7 8] -[U,S,V] = svd(A) -#+end_src - -#+RESULTS: -#+begin_example -A = [1 2; 3 4; 5 6; 7 8] -A = - 1 2 - 3 4 - 5 6 - 7 8 -[U,S,V] = svd(A) -U = - -0.152483233310201 -0.82264747222566 -0.394501022283829 -0.379959133877596 - -0.349918371807964 -0.42137528768458 0.242796545704357 0.800655879510063 - -0.547353510305727 -0.0201031031435029 0.697909975442776 -0.461434357387336 - -0.74478864880349 0.381169081397575 -0.546205498863303 0.0407376117548695 -S = - 14.2690954992615 0 - 0 0.626828232417541 - 0 0 - 0 0 -V = - -0.641423027995072 0.767187395072177 - -0.767187395072177 -0.641423027995072 -#+end_example - -** Source Blocks with Line Numbers - -Citation [[cite:&taghirad13_paral;&dehaeze21_activ_dampin_rotat_platf_using]] - -The Listing [[lst:matlab_line_numbers]] has line numbers as the =-n= option was used. - -Specific lines of codes can be referenced. -For instance, the code used to specify the wanted the vertical label is on line [[(test)]]. - -#+name: lst:matlab_line_numbers -#+caption: Specify Labels -#+begin_src matlab +n -r -figure; -plot(t, x) -xlabel('Time [s]'); -ylabel('Output [V]'); (ref:test) -#+end_src - -Numbering can be continued by using =+n= option as shown below. -#+begin_src matlab +n -figure; -plot(t, u) -xlabel('Time [s]'); -ylabel('Input [V]'); -#+end_src - -* Images -\minitoc -** Normal Image - -Figure [[fig:general_control_names]] shows the results of the Tikz code of listing [[lst:tikz_test]]. - -#+name: lst:tikz_test -#+caption: Tikz code that is used to generate Figure [[fig:general_control_names]] -#+begin_src latex :file general_control_names.pdf :exports both +#+begin_src latex :file id31_beamline_schematic.pdf \begin{tikzpicture} + % Parameters + \def\blockw{6.0cm} + \def\blockh{1.2cm} - % Blocs - \node[block={2.0cm}{2.0cm}] (P) {$P$}; - \node[block={1.5cm}{1.5cm}, below=0.7 of P] (K) {$K$}; + \def\tiltdeg{3} + \coordinate[] (rotationpoint) at (0, 4.5*\blockh); - % Input and outputs coordinates - \coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west)$); - \coordinate[] (inputu) at ($(P.south west)!0.25!(P.north west)$); - \coordinate[] (outputz) at ($(P.south east)!0.75!(P.north east)$); - \coordinate[] (outputv) at ($(P.south east)!0.25!(P.north east)$); + \begin{scope}[rotate around={\tiltdeg:(rotationpoint)}] + % Tilt + \path[] ([shift=(-120:4*\blockh)]rotationpoint) coordinate(beginarc) arc (-120:-110:4*\blockh) % + -- ([shift=(-70:4*\blockh)]rotationpoint) arc (-70:-60:4*\blockh)% + |- ++(-0.15*\blockw, 0.6*\blockh) coordinate (spindlene)% + |- ($(beginarc) + (0.15*\blockw, 0.2*\blockh)$) coordinate (spindlesw) -- ++(0, 0.4*\blockh) coordinate(tiltte) -| cycle; - % Connections and labels - \draw[<-] (inputw) -- ++(-1.5, 0); - \draw[<-] (inputu) -- ++(-0.8, 0) |- (K.west); + % Spindle + \coordinate[] (spindlese) at (spindlesw-|spindlene); + \draw[fill=black!30] ($(spindlese)+(-0.1,0.1)+(-0.1*\blockw, 0)$) -| ($(spindlene)+(-0.1, 0)$) -| coordinate[pos=0.25](spindletop) ($(spindlesw)+(0.1,0.1)$) -| ++(0.1*\blockw, -\blockh) -| coordinate[pos=0.25](spindlebot) cycle; - \draw[->] (outputz) -- ++(1.5, 0); - \draw[->] (outputv) -- ++(0.8, 0) |- (K.east); + % \draw[dashed, color=black!60] ($(spindletop)+(0, 0.2)$) -- ($(spindlebot)+(0,-0.2)$); + + % Tilt + \draw[fill=black!60] ([shift=(-120:4*\blockh)]rotationpoint) coordinate(beginarc) arc (-120:-110:4*\blockh) % + -- ([shift=(-70:4*\blockh)]rotationpoint) arc (-70:-60:4*\blockh)% + |- coordinate (tiltne) ++(-0.15*\blockw, 0.6*\blockh) coordinate (spindlene)% + |- ($(beginarc) + (0.15*\blockw, 0.2*\blockh)$) coordinate (spindlesw) -- ++(0, 0.4*\blockh) -| cycle; + + % Micro-Hexapod + \begin{scope}[shift={(spindletop)}] + % Parameters definitions + \def\baseh{0.22*\blockh} % Height of the base + \def\naceh{0.18*\blockh} % Height of the nacelle + \def\baser{0.22*\blockw} % Radius of the base + \def\nacer{0.18*\blockw} % Radius of the nacelle + + \def\armr{0.2*\blockh} % Radius of the arms + \def\basearmborder{0.2} + \def\nacearmborder{0.2} + + \def\xnace{0} \def\ynace{\blockh-\naceh} \def\anace{0} + \def\xbase{0} \def\ybase{0} \def\abase{0} + + % Hexapod1 + \begin{scope}[shift={(\xbase, \ybase)}, rotate=\abase] + % Base + \draw[fill=white] (-\baser, 0) coordinate[](uhexabot) rectangle (\baser, \baseh); + + \coordinate[] (armbasel) at (-\baser+\basearmborder+\armr, \baseh); + \coordinate[] (armbasec) at (0, \baseh); + \coordinate[] (armbaser) at (\baser-\basearmborder-\armr, \baseh); + + \begin{scope}[shift={(\xnace, \ynace)}, rotate=\anace] + \draw[fill=white] (-\nacer, 0) rectangle (\nacer, \naceh); + \coordinate[] (uhexatop) at (0, \naceh); + \coordinate[] (armnacel) at (-\nacer+\nacearmborder+\armr, 0); + \coordinate[] (armnacec) at (0, 0); + \coordinate[] (armnacer) at (\nacer-\nacearmborder-\armr, 0); + \end{scope} + + \draw[] (armbasec) -- (armnacer); + \draw[] (armbasec) -- (armnacel); + \draw[] (armbasel) -- coordinate(mhexaw) (armnacel); + \draw[] (armbasel) -- (armnacec); + \draw[] (armbaser) -- (armnacec); + \draw[] (armbaser) -- coordinate(mhexae) (armnacer); + \end{scope} + \end{scope} + + % Sample + \begin{scope}[shift={(uhexatop)}] + \draw[fill=white] (-0.1*\blockw, 0) coordinate[](samplebot) rectangle coordinate[pos=0.5](samplecenter) node[pos=0.5, above]{Sample} (0.1*\blockw, \blockh) coordinate[](samplene); + \coordinate[](samplenw) at (-0.1*\blockw, \blockh); + \end{scope} + \end{scope} + + \begin{scope}[shift={(0, -0.3*\blockh)}] + % Translation Stage - fixed part + \draw[fill=black!40] (-0.5*\blockw, 0) coordinate[](tyb) rectangle (0.5*\blockw, 0.15*\blockh); + \coordinate[] (measposbot) at (0.5*\blockw, 0); + + % Translation Stage - mobile part + \draw[fill=black!10, fill opacity=0.5] (-0.5*\blockw, 0.2*\blockh) -- (-0.5*\blockw, 1.5*\blockh) coordinate[](tyt) -- (0.5*\blockw, 1.5*\blockh) -- (0.5*\blockw, 0.2*\blockh) -- (0.35*\blockw, 0.2*\blockh) -- (0.35*\blockw, 0.8*\blockh) -- (-0.35*\blockw, 0.8*\blockh) -- (-0.35*\blockw, 0.2*\blockh) -- cycle; + + % Translation Guidance + \draw[dashed, color=black!60] ($(-0.5*\blockw, 0)+( 0.075*\blockw,0.5*\blockh)$) circle (0.2*\blockh); + \draw[dashed, color=black!60] ($( 0.5*\blockw, 0)+(-0.075*\blockw,0.5*\blockh)$) circle (0.2*\blockh); + + % Tilt Guidance + \draw[dashed, color=black!60] ([shift=(-107:4.1*\blockh)]rotationpoint) arc (-107:-120:4.1*\blockh); + \draw[dashed, color=black!60] ([shift=( -73:4.1*\blockh)]rotationpoint) arc (-73:-60:4.1*\blockh); + \end{scope} + + % % Vertical line + % \draw[dashed, color=black] (samplecenter) -- ++(0, -4*\blockh); + % \begin{scope}[rotate around={\tiltdeg:(samplecenter)}] + % \draw[dashed, color=black] (samplecenter) -- ++(0, -4*\blockh); + % \node[] at ($(samplecenter)+(0, -2.3*\blockh)$) {\AxisRotator[rotate=-90]}; + % \node[right, shift={(0.3,0)}] at ($(samplecenter)+(0, -2.3*\blockh)$) {$\theta_z$}; + % \end{scope} + % \draw[->] ([shift=(-90:3.6*\blockh)]samplecenter) arc (-90:-87:3.6*\blockh) node[right]{$\theta_y$}; + + % Laser + \begin{scope}[shift={(samplecenter)}] + \draw[color=red, -<-=0.3] (samplecenter) node[circle, fill=red, inner sep=0pt, minimum size=3pt]{} -- node[pos=0.3, above, color=black]{X-ray} ($(samplecenter)+(1.2*\blockw,0)$); + \end{scope} + + % Axis + \begin{scope}[shift={(-0.35*\blockw, 3*\blockh)}] + \def\axissize{0.8cm} + \draw[->] (0, 0) -- ++(0, \axissize) node[right]{$z$}; + \draw[->] (0, 0) -- ++(-\axissize, 0) node[above]{$x$}; + \draw[fill, color=black] (0, 0) circle (0.05*\axissize); + \node[draw, circle, inner sep=0pt, minimum size=0.4*\axissize, label=right:$y$] (yaxis) at (0, 0){}; + % \node[draw, circle, inner sep=0pt, cross, minimum size=0.4*\axissize, label=left:$y$] (yaxis) at (0, 0){}; + \end{scope} + + \node[fit={($(-0.6*\blockw, -0.5*\blockh)$) ($(0.6*\blockw, 4*\blockh)$)}, inner sep=0pt, draw, dashed, color=gray, label={Positioning Station}] (possystem) {}; + + \draw[fill=black!30] ($(tyb)+(-5, -1)$) coordinate[](granitesw) rectangle node[pos=0.5]{Granite Frame} ($(measposbot)+(5, 0)$) coordinate[](granitene); + + % Focusing Optics + \draw[fill=black!20] ($(granitene)+(-1.5, 3)$) rectangle ++(-1, 2); + \draw[spring] ($(granitene)+(-2, 0)$) -- ++(0, 3); + + \node[fit={($(granitene)+(-2.8, -0.2)$) ($(granitene)+(-1.2, 5.2)$)}, inner sep=0pt, draw, dashed, color=gray, label={Focusing Optics}] () {}; + + % Measurement Optics + \draw[fill=black!20] ($(granitesw)+(1.5, 4)$) rectangle ++(1, 2); + \draw[spring] ($(granitesw)+(2, 1)$) -- ++(0, 3); + + \node[fit={($(granitesw)+(2.8, 0.8)$) ($(granitesw)+(1.2, 6.2)$)}, inner sep=0pt, draw, dashed, color=gray, label={Imagery System}] () {}; \end{tikzpicture} #+end_src -#+name: fig:general_control_names -#+caption: General Control Configuration -#+RESULTS: lst:tikz_test -[[file:figs/general_control_names.png]] +#+name: fig:id31_beamline_schematic +#+caption: ID31 Beamline Schematic. With light source, nano-focusing optics, sample stage and detector. +#+attr_latex: :width \linewidth +#+RESULTS: +[[file:figs/id31_beamline_schematic.png]] -** Sub Images +- Few words about science made on ID31 and why nano-meter accuracy is required +- Typical experiments (tomography, ...), various samples (up to 50kg) +- Example of picture obtained (Figure [[fig:id31_tomography_result]]) -Link to subfigure [[fig:general_control_names_1]]. +#+name: fig:id31_tomography_result +#+caption: Image obtained on the ID31 beamline +#+attr_latex: :width 0.49\linewidth +[[file:example-image-c.png]] -#+name: fig:subfigure -#+caption: Subfigure Caption -#+attr_latex: :environment subfigure :width 0.49\linewidth :align c -| file:figs/general_control_names.png | file:figs/general_control_names.png | -| <> sub figure caption | <> sub figure caption | +- Explain wanted positioning accuracy and why micro-station cannot have this accuracy (backlash, play, thermal expansion, ...) -* Tables +** Challenge definition + +#+name: fig:nass_concept_schematic +#+caption: Nass Concept. 1: micro-station, 2: nano-hexapod, 3: sample, 4: 5DoF metrology +[[file:figs/nass_concept_schematic.png]] + +- 6DoF vibration control platform on top of a complex positioning platform +- *Goal*: Improve accuracy of 6DoF long stroke position platform +- *Approach*: Mechatronic approach / model based / predictive +- *Control*: Robust control approach / various payloads. + First hexapod with control bandwidth higher than the suspension modes that accepts various payloads? +- Rotation aspect +- Compactness? (more related to mechanical design) + +** Literature Review + +#+name: fig:stewart_platform_examples +#+caption: Examples of Stewart Platforms +#+begin_figure +#+name: fig:stewart_platform_a +#+attr_latex: :caption \subcaption{Stewart platform based on voice coil actuators} +#+attr_latex: :options {0.49\textwidth} +#+begin_subfigure +#+attr_latex: :width 0.8\linewidth +[[file:example-image-a.png]] +#+end_subfigure +#+name: fig:stewart_platform_a +#+attr_latex: :options {0.49\textwidth} +#+attr_latex: :caption \subcaption{Stewart platform based on piezoelectric actuators} +#+begin_subfigure +#+attr_latex: :width 0.8\linewidth +[[file:example-image-b.png]] +#+end_subfigure +#+end_figure + +- Hexapods + cite:li01_simul_fault_vibrat_isolat_point + cite:bishop02_devel_precis_point_contr_vibrat + cite:hanieh03_activ_stewar + cite:afzali-far16_vibrat_dynam_isotr_hexap_analy_studies + cite:naves20_desig +- Positioning stations +- Mechatronic approach? + cite:rankers98_machin + cite:monkhorst04_dynam_error_budget + cite:jabben07_mechat + +** Outline of thesis / Thesis Summary / Thesis Contributions + +*Mechatronic Design Approach* / *Model Based Design*: +- [[cite:&monkhorst04_dynam_error_budget]] high costs of the design process: the designed system must be *first time right*. + When the system is finally build, its performance level should satisfy the specifications. + No significant changes are allowed in the post design phase. + Because of this, the designer wants to be able to predict the performance of the system a-priori and gain insight in the performance limiting factors of the system. + +#+begin_src latex :file nass_mechatronics_approach.pdf +% \graphicspath{ {/home/thomas/Cloud/thesis/papers/dehaeze21_mechatronics_approach_nass/tikz/figs-tikz} } + +\begin{tikzpicture} + % Styles + \tikzset{myblock/.style= {draw, thin, color=white!70!black, fill=white, text width=3cm, align=center, minimum height=1.4cm}}; + \tikzset{mylabel/.style= {anchor=north, below, font=\bfseries\small, color=black, text width=3cm, align=center}}; + \tikzset{mymodel/.style= {anchor=south, above, font=\small, color=black, text width=3cm, align=center}}; + \tikzset{mystep/.style= {->, ultra thick}}; + + % Blocks + \node[draw, fill=lightblue, align=center, label={[mylabel, text width=8.0cm] Dynamical Models}, minimum height = 4.5cm, text width = 8.0cm] (model) at (0, 0) {}; + + \node[myblock, fill=lightgreen, label={[mylabel] Disturbances}, left = 3 of model.west] (dist) {}; + \node[myblock, fill=lightgreen, label={[mylabel] $\mu$ Station}, below = 2pt of dist] (mustation) {}; + \node[myblock, fill=lightgreen, label={[mylabel] $\nu$ Hexapod}, above = 2pt of dist] (nanohexapod) {}; + + \node[myblock, fill=lightyellow, label={[mylabel] Mech. Design}, above = 1 of model.north] (mechanical) {}; + \node[myblock, fill=lightyellow, label={[mylabel] Instrumentation}, left = 2pt of mechanical] (instrumentation) {}; + \node[myblock, fill=lightyellow, label={[mylabel] FEM}, right = 2pt of mechanical] (fem) {}; + + \node[myblock, fill=lightred, label={[mylabel] Test Benches}, right = 3 of model.east] (testbenches) {}; + \node[myblock, fill=lightred, label={[mylabel] Assembly}, above = 2pt of testbenches] (mounting) {}; + \node[myblock, fill=lightred, label={[mylabel] Implementation}, below = 2pt of testbenches] (implementation) {}; + + % Text + \node[anchor=south, above, text width=8cm, align=left] at (model.south) {Extensive use of models for:\begin{itemize}[noitemsep,topsep=5pt]\item Extraction of transfer functions \\ \item Choice of appropriate control architecture \\ \item Tuning of control laws \\ \item Closed loop simulations \\ \item Noise budgets / Evaluation of performances \\ \item Sensibility to parameters / disturbances\end{itemize}\centerline{Models are at the core the mecatronic approach!}}; + + \node[mymodel] at (mustation.south) {Multiple stages \\ Complex dynamics}; + \node[mymodel] at (dist.south) {Ground motion \\ Position errors}; + \node[mymodel] at (nanohexapod.south) {Different concepts \\ Sensors, Actuators}; + + \node[mymodel] at (instrumentation.south) {Sensors, Actuators \\ Electronics}; + \node[mymodel] at (mechanical.south) {Proper integration \\ Ease of assembly}; + \node[mymodel] at (fem.south) {Optimize key parts: \\ Joints, Plates, APA}; + + \node[mymodel] at (mounting.south) {Struts \\ Nano-Hexapod}; + \node[mymodel] at (testbenches.south) {Instrumentation \\ APA, Struts}; + \node[mymodel] at (implementation.south) {Control tests \\ $\mu$ Station}; + + % Links + \draw[->] (dist.east) -- node[above, midway]{{\small Measurements}} node[below,midway]{{\small Spectral Analysis}} (dist.east-|model.west); + \draw[->] (mustation.east) -- node[above, midway]{{\small Measurements}} node[below, midway]{{\small CAD Model}} (mustation.east-|model.west); + + \draw[->] ($(nanohexapod.east-|model.west)-(0, 0.15)$) -- node[below, midway]{{\small Optimization}} ($(nanohexapod.east)-(0, 0.15)$); + \draw[<-] ($(nanohexapod.east-|model.west)+(0, 0.15)$) -- node[above, midway]{{\small Model}} ($(nanohexapod.east)+(0, 0.15)$); + + \draw[->] ($(fem.south|-model.north)+(0.15, 0)$) -- node[right, midway]{{\small Specif.}} ($(fem.south)+(0.15,0)$); + \draw[<-] ($(fem.south|-model.north)-(0.15, 0)$) -- node[left, midway,align=right]{{\small Super}\\{\small Element}} ($(fem.south)-(0.15,0)$); + + \draw[->] ($(mechanical.south|-model.north)+(0.15, 0)$) -- node[right, midway]{{\small Specif.}} ($(mechanical.south)+(0.15,0)$); + \draw[<-] ($(mechanical.south|-model.north)-(0.15, 0)$) -- node[left, midway,align=right]{{\small CAD}\\{\small model}} ($(mechanical.south)-(0.15,0)$); + + \draw[->] ($(instrumentation.south|-model.north)+(0.15, 0)$) -- node[right, midway]{{\small Specif.}} ($(instrumentation.south)+(0.15,0)$); + \draw[<-] ($(instrumentation.south|-model.north)-(0.15, 0)$) -- node[left, midway]{{\small Model}} ($(instrumentation.south)-(0.15,0)$); + + \draw[->] ($(mounting.west-|model.east)+(0, 0.15)$) -- node[above, midway]{{\small Requirements}} ($(mounting.west)+(0, 0.15)$); + \draw[<-] ($(mounting.west-|model.east)-(0, 0.15)$) -- node[below, midway]{{\small Model refinement}} ($(mounting.west)-(0, 0.15)$); + + \draw[->] ($(testbenches.west-|model.east)+(0, 0.15)$) -- node[above, midway]{{\small Control Laws}} ($(testbenches.west)+(0, 0.15)$); + \draw[<-] ($(testbenches.west-|model.east)-(0, 0.15)$) -- node[below, midway]{{\small Model refinement}} ($(testbenches.west)-(0, 0.15)$); + + \draw[->] ($(implementation.west-|model.east)+(0, 0.15)$) -- node[above, midway]{{\small Control Laws}} ($(implementation.west)+(0, 0.15)$); + \draw[<-] ($(implementation.west-|model.east)-(0, 0.15)$) -- node[below, midway]{{\small Model refinement}} ($(implementation.west)-(0, 0.15)$); + + % Main steps + \node[font=\bfseries, rotate=90, anchor=south, above] (conceptual_phase_node) at (dist.west) {1 - Conceptual Phase}; + \node[font=\bfseries, above] (detailed_phase_node) at (mechanical.north) {2 - Detail Design Phase}; + \node[font=\bfseries, rotate=-90, anchor=south, above] (implementation_phase_node) at (testbenches.east) {3 - Experimental Phase}; + \begin{scope}[on background layer] + \node[fit={(conceptual_phase_node.north|-nanohexapod.north) (mustation.south east)}, fill=lightgreen!50!white, draw, inner sep=2pt] (conceptual_phase) {}; + \node[fit={(detailed_phase_node.north-|instrumentation.west) (fem.south east)}, fill=lightyellow!50!white, draw, inner sep=2pt] (detailed_phase) {}; + \node[fit={(implementation_phase_node.north|-mounting.north) (implementation.south west)}, fill=lightred!50!white, draw, inner sep=2pt] (implementation_phase) {}; + % \node[above left] at (dob.south east) {DOB}; + \end{scope} + + % Between main steps + \draw[mystep, postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={Concept Validation}}}] (conceptual_phase.north) to[out=90, in=180] (detailed_phase.west); + \draw[mystep, postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={Procurement}}}] (detailed_phase.east) to[out=0, in=90] (implementation_phase.north); + + % % Inside Model + % \node[inner sep=1pt, outer sep=6pt, anchor=north west, draw, fill=white, thin] (multibodymodel) at ($(model.north west) - (0, 0.5)$) + % {\includegraphics[width=5.6cm]{simscape_nano_hexapod.png}}; + + % \node[inner sep=1pt, outer sep=6pt, anchor=south west, draw, fill=white, thin] (simscape) at (model.south west) + % {\includegraphics[width=5.6cm]{simscape_picture.jpg}}; + + % % Feedback Model + % \node[inner sep=3pt, outer sep=6pt, anchor=north east, draw, fill=white, thin] (simscape_sim) at ($(model.north east) - (0, 0.5)$) + % {\includegraphics[width=3.6cm]{simscape_simulations.pdf}}; + + % % FeedBack + % \node[inner sep=3pt, outer sep=6pt, anchor=south east, draw, fill=white, thin] (feedback) at (model.south east) + % {\includegraphics[width=3.6cm]{classical_feedback_small.pdf}}; +\end{tikzpicture} +#+end_src + +#+name: fig:nass_mechatronics_approach +#+caption: Overview of the mechatronic approach used for the Nano-Active-Stabilization-System +#+attr_latex: :width \linewidth +#+RESULTS: +[[file:figs/nass_mechatronics_approach.png]] + + +* Conceptual Design Development \minitoc +**** Abstract -Table [[tab:table_with_equations]] shows a table with some mathematics inside. +Schematic that summarizes this phase. +Uniaxial => Rotation => Multi body => Simulations -#+name: tab:table_with_equations -#+caption: A Simple table with included math -| $N$ | $N^2$ | $N^3$ | $N^4$ | $\sqrt n$ | $\sqrt[4]N$ | -|-----+-------+-------+-------+-----------+-------------| -| 1 | 1 | 1 | 1 | 1 | 1 | -| 2 | 4 | 8 | 16 | 1.4142136 | 1.1892071 | -| 3 | 9 | 27 | 81 | 1.7320508 | 1.3160740 | -#+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1))) +** Constrains on the system -#+name: tab:table_without_head -#+caption: Table without Head -| | *1* | *2* | *3* | *4* | *5* | -| *1* | 1 | 2 | 3 | 4 | 5 | -| *2* | 2 | 4 | 6 | 8 | 10 | -| *3* | 3 | 6 | 9 | 12 | 15 | -| *4* | 4 | 8 | 12 | 16 | 20 | -| *5* | 5 | 10 | 15 | 20 | 25 | +- Size +- Payload +- Connections to samples +- ... should justify the nano-hexapod design + - choice of parallel architecture -#+name: tab:table_multiple_heads -#+ATTR_LATEX: :font \footnotesize -#+caption: Table with multiples groups -| | *Classical Control* | *Modern Control* | -| | | | -|-------------------------+------------------------------------+--------------------------------------| -| *Date* | 1930- | 1960- | -|-------------------------+------------------------------------+--------------------------------------| -| *Tools* | Transfer Functions | State Space formulation | -| | Nyquist Plots | Riccati Equations | -| | Bode Plots | | -| | Phase and Gain margins | | -|-------------------------+------------------------------------+--------------------------------------| -| *Control Architectures* | Proportional, Integral, Derivative | Full State Feedback | -| | Leads, Lags | LQR, LQG | -| | | Kalman Filters | -|-------------------------+------------------------------------+--------------------------------------| -| *Advantages* | Study Stability | Automatic Synthesis | -| | Simple | MIMO | -| | Natural | Optimization Problem | -| | | | -| | | | -|-------------------------+------------------------------------+--------------------------------------| -| *Disadvantages* | Manual Method | No Guaranteed Robustness | -| | Only SISO | Difficult Rejection of Perturbations | +- [ ] Picture/schematic of the micro-station with indicated location of Nano-Hexapod +** Uni-axial Model +*** Introduction :ignore: + +- Explain what we want to capture with this model +- Schematic of the uniaxial model (with X-ray) +- Identification of disturbances (ground motion, stage vibrations) +- Optimal nano-hexapod stiffness/actuator: Voice coil VS Piezo (conclusion?) +- Control architecture (IFF, DVF, ...)? +- Conclusion + +#+begin_src latex :file mass_spring_damper_nass.pdf +\begin{tikzpicture} + % ==================== + % Parameters + % ==================== + \def\bracs{0.05} % Brace spacing vertically + \def\brach{-12pt} % Brace shift horizontaly + % ==================== + + % ==================== + % Ground + % ==================== + \draw (-0.9, 0) -- (0.9, 0); + \draw[dashed] (0.9, 0) -- ++(0.5, 0); + \draw[->] (1.3, 0) -- ++(0, 0.4) node[right]{$w$}; + % ==================== + + % ==================== + % Granite + \begin{scope}[shift={(0, 0)}] + \draw[fill=white] (-0.9, 1.2) rectangle (0.9, 2.0) node[pos=0.5]{$\scriptstyle\text{granite}$}; + \draw[spring] (-0.7, 0) -- ++(0, 1.2); + \draw[damper] ( 0, 0) -- ++(0, 1.2); + + \draw[dashed] ( 0.9, 2.0) -- ++(2.0, 0) coordinate(xg); + + % \draw[decorate, decoration={brace, amplitude=8pt}, xshift=\brach] % + % (-0.9, \bracs) -- ++(0, 2.0) node[midway,rotate=90,anchor=south,yshift=10pt]{Granite}; + \end{scope} + % ==================== + + % ==================== + % Stages + \begin{scope}[shift={(0, 2.0)}] + \draw[fill=white] (-0.9, 1.2) rectangle (0.9, 2.0) node[pos=0.5]{$\scriptstyle\mu\text{-station}$}; + + \coordinate (mustation) at (0.9, 1.6); + + \draw[spring] (-0.7, 0) -- ++(0, 1.2); + \draw[damper] ( 0, 0) -- ++(0, 1.2); + \draw[actuator] ( 0.7, 0) -- ++(0, 1.2) node[midway, right=0.1](ft){$f_t$}; + + % \draw[decorate, decoration={brace, amplitude=8pt}, xshift=\brach] % + % (-0.9, \bracs) -- ++(0, 2.0) node[midway,rotate=90,anchor=south,yshift=10pt]{$\mu\text{-station}$}; + \end{scope} + % ==================== + + + % ==================== + % NASS + \begin{scope}[shift={(0, 4.0)}] + \draw[fill=white] (-0.9, 1.2) rectangle (0.9, 2.0) node[pos=0.5]{$\scriptstyle\nu\text{-hexapod}$}; + \draw[dashed] (0.9, 2.0) -- ++(2.0, 0) coordinate(xnpos); + + \draw[spring] (-0.7, 0) -- ++(0, 1.2) node[midway, left=0.1]{}; + \draw[damper] ( 0, 0) -- ++(0, 1.2) node[midway, left=0.2]{}; + \draw[actuator] ( 0.7, 0) -- ++(0, 1.2) coordinate[midway, right=0.1](f); + + % \draw[decorate, decoration={brace, amplitude=8pt}, xshift=\brach] % + % (-0.9, \bracs) -- ++(0, 2.2) node[midway,rotate=90,anchor=south,yshift=10pt]{$\nu\text{-hexapod}$}; + \end{scope} + % ==================== + + % ==================== + % Measured Displacement + \draw[<->, dashed] ($(xg)+(-0.1, 0)$) node[above left](d){$d$} -- ($(xnpos)+(-0.1, 0)$); + % ==================== + + % ==================== + % IFF Control + % \node[block={2em}{1.5em}, right=0.6 of fsensn] (iff) {$K_{\scriptscriptstyle IFF}$}; + % \node[addb] (ctrladd) at (f-|iff) {}; + \node[block={2em}{1.5em}, right=0.6 of mustation] (ctrl) {$K$}; + + % \draw[->] (fsensn.east) -- node[midway, above]{$\tau_m$} (iff.west); + % \draw[->] (iff.south) -- (ctrladd.north); + % \draw[->] (ctrladd.west) -- (f.east) node[above right]{$u$}; + \draw[->] (d.west) -| (ctrl.south); + \draw[->] (ctrl.north) |- (f) node[above right]{$u$}; + % ==================== +\end{tikzpicture} +#+end_src + +#+name: fig:mass_spring_damper_nass +#+caption: 3-DoF uniaxial mass-spring-damper model of the NASS +#+RESULTS: +[[file:figs/mass_spring_damper_nass.png]] + +*** Noise Budgeting + +#+name: fig:measurement_microstation_vibration_picture +#+caption: Setup used to measure the micro-station vibrations during operation +#+attr_latex: :width 0.4\linewidth +[[file:measurement_microstation_vibration_picture.jpg]] + +#+name: fig:asd_ground_motion_ustation_dist +#+caption: Amplitude Spectral density of the measured disturbance sources +#+attr_latex: :width 0.49\linewidth +[[file:example-image-b.png]] + +*** Effect of support compliance +[[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/uncertainty_support.org::+TITLE: Effect of Uncertainty on the support's dynamics on the isolation platform dynamics][study]] + +- *goal*: make the nano-hexapod independent of the support compliance +- Simple 2DoF model +- Generalized to any support compliance +- *conclusion*: frequency of nano-hexapod resonances should be lower than first suspension mode of the support + +*** Effect of payload dynamics +[[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/uncertainty_payload.org::+TITLE: Effect of Uncertainty on the payload's dynamics on the isolation platform dynamics][study]] + +- *goal*: be robust to a change of payload +- Simple 2DoF model +- Generalized to any payload dynamics + +*** Active Damping + +Conclusion: IFF is better for this application + +**** Integral Force Feedback + +- Mass spring damper model +- Root Locus +- Sensitivity to disturbances + +**** Direct Velocity Feedback + +- Mass spring damper model +- Root Locus +- Sensitivity to disturbances + + +** Effect of rotation +*** Introduction :ignore: + +[[cite:&dehaeze20_activ_dampin_rotat_platf_integ_force_feedb;&dehaeze21_activ_dampin_rotat_platf_using]] + +*** X-Y rotating platform model + +- x-y-Rz model +- explain why this is representing the NASS +- Equation of motion +- Centrifugal forces, Coriolis + +#+begin_src latex :file 2dof_rotating_system.pdf + \begin{tikzpicture} + % Angle + \def\thetau{25} + + % Rotational Stage + \draw[fill=black!60!white] (0, 0) circle (4.3); + \draw[fill=black!40!white] (0, 0) circle (3.8); + + % Label + \node[anchor=north west, rotate=\thetau] at (-2.5, 2.5) {\small Rotating Stage}; + + % Rotating Scope + \begin{scope}[rotate=\thetau] + % Rotating Frame + \draw[fill=black!20!white] (-2.6, -2.6) rectangle (2.6, 2.6); + % Label + \node[anchor=north west, rotate=\thetau] at (-2.6, 2.6) {\small Suspended Platform}; + + % Mass + \draw[fill=white] (-1, -1) rectangle (1, 1); + % Label + \node[anchor=south west, rotate=\thetau] at (-1, -1) {\small Payload}; + + % Attached Points + \node[] at (-1, 0){$\bullet$}; + \draw[] (-1, 0) -- ++(-0.2, 0) coordinate(cu); + \draw[] ($(cu) + (0, -0.8)$) coordinate(actu) -- ($(cu) + (0, 0.8)$) coordinate(ku); + \node[] at (0, -1){$\bullet$}; + \draw[] (0, -1) -- ++(0, -0.2) coordinate(cv); + \draw[] ($(cv) + (-0.8, 0)$)coordinate(kv) -- ($(cv) + (0.8, 0)$) coordinate(actv); + + % Spring and Actuator for U + \draw[actuator={0.6}{0.2}] (actu) -- node[above=0.1, rotate=\thetau]{$F_u$} (actu-|-2.6,0); + \draw[spring=0.2] (ku) -- node[above=0.1, rotate=\thetau]{$k$} (ku-|-2.6,0); + \draw[damper={8}{8}] (cu) -- node[above left=0.2 and -0.1, rotate=\thetau]{$c$} (cu-|-2.6,0); + + \draw[actuator={0.6}{0.2}] (actv) -- node[left, rotate=\thetau]{$F_v$} (actv|-0,-2.6); + \draw[spring=0.2] (kv) -- node[left, rotate=\thetau]{$k$} (kv|-0,-2.6); + \draw[damper={8}{8}] (cv) -- node[left=0.1, rotate=\thetau]{$c$} (cv|-0,-2.6); + \end{scope} + + % Inertial Frame + \draw[->] (-4, -4) -- ++(2, 0) node[below]{$\vec{i}_x$}; + \draw[->] (-4, -4) -- ++(0, 2) node[left]{$\vec{i}_y$}; + \draw[fill, color=black] (-4, -4) circle (0.06); + \node[draw, circle, inner sep=0pt, minimum size=0.3cm, label=left:$\vec{i}_z$] at (-4, -4){}; + + \draw[->] (0, 0) node[above left, rotate=\thetau]{$\vec{i}_w$} -- ++(\thetau:2) node[above, rotate=\thetau]{$\vec{i}_u$}; + \draw[->] (0, 0) -- ++(\thetau+90:2) node[left, rotate=\thetau]{$\vec{i}_v$}; + \draw[fill, color=black] (0,0) circle (0.06); + \node[draw, circle, inner sep=0pt, minimum size=0.3cm] at (0, 0){}; + \draw[dashed] (0, 0) -- ++(2, 0); + \draw[] (1.5, 0) arc (0:\thetau:1.5) node[midway, right]{$\theta$}; + + \draw[->] (3.5, 0) arc (0:40:3.5) node[midway, left]{$\Omega$}; + \end{tikzpicture} +#+end_src + +#+name: fig:2dof_rotating_system +#+caption: Mass spring damper model of an X-Y stage on top of a rotating stage +#+RESULTS: +[[file:figs/2dof_rotating_system.png]] + +*** Effect of rotational velocity on the system dynamics + +- Campbell diagram + +*** Decentralized Integral Force Feedback + +- Control diagram +- Root Locus: unstable with pure IFF + +*** Two proposed modification of IFF + +- Comparison of parallel stiffness and change of controller +- Transmissibility + +*** Conclusion + +- problem with voice coil actuator +- Two solutions: add parallel stiffness, or change controller +- Conclusion: minimum stiffness is required +- APA is a nice architecture for parallel stiffness + integrated force sensor (have to speak about IFF before that) + +** Multi Body Model - Nano Hexapod +*** Introduction :ignore: + +- What we want to capture with this model +- Explain what is a multi body model (rigid body, springs, etc...) +- Key elements (plates, joints, struts): for now simplistic model (rigid body elements, perfect joints, ...), but in next section, FEM will be used +- Matlab/Simulink developed toolbox for the study of Stewart platforms + +*** Stewart Platform Architecture + +#+name: fig:stewart_platform_architecture +#+caption: Stewart Platform Architecture +#+begin_figure +#+name: fig:stewart_architecture_example +#+attr_latex: :caption \subcaption{Initial position} +#+attr_latex: :options {0.49\textwidth} +#+begin_subfigure +#+attr_latex: :width 0.8\linewidth +[[file:stewart_architecture_example.png]] +#+end_subfigure +#+name: fig:stewart_architecture_example_pose +#+attr_latex: :options {0.49\textwidth} +#+attr_latex: :caption \subcaption{After some motion} +#+begin_subfigure +#+attr_latex: :width 0.8\linewidth +[[file:stewart_architecture_example_pose.png]] +#+end_subfigure +#+end_figure + + +- Little review +- explain key elements: + - two plates + - joints + - actuators +- explain advantages compared to serial architecture + +*** Kinematics + +- Well define elements, frames, ... +- Derivation of jacobian matrices: for forces and for displacement +- Explain this is true for small displacements (show how small) + +*** Model of an Amplified Piezoelectric Actuator + +- APA test bench +- Piezoelectric effects +- mass spring damper representation (2dof) +- Compare the model and the experiment + +*** Dynamics + +- Effect of joints stiffnesses + +#+name: fig:simscape_nano_hexapod +#+caption: 3D view of the multi-body model of the Nano-Hexapod (simplified) +#+attr_latex: :width \linewidth +[[file:figs/simscape_nano_hexapod.png]] + +** Multi Body Model - Micro Station +*** Introduction :ignore: + +#+name: fig:simscape_first_model_screenshot +#+caption: 3D view of the multi-body model of the micro-station +#+attr_latex: :width 0.7\linewidth +[[file:figs/simscape_first_model_screenshot.jpg]] + +*** Kinematics + +- Small overview of each stage and associated stiffnesses / inertia +- schematic that shows to considered DoF +- import from CAD + +*** Modal Analysis +[[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-measurements/modal-analysis/index.org][study]] + +- Picture of the experimental setup +- Location of accelerometers +- Show obtained modes +- Validation of rigid body assumption +- Explain how this helps tuning the multi-body model + +*** Validation of the Model + +- Most important metric: support compliance +- Compare model and measurement + +** Control Architecture +*** Introduction :ignore: + +Discussion of: +- Transformation matrices / control architecture +- Control in the frame of struts or cartesian? +- Effect of rotation on IFF? => APA +- HAC-LAC + +*** High Authority Control - Low Authority Control (HAC-LAC) + +- general idea +- case for parallel manipulator: decentralized LAC + centralized HAC + +*** Decoupling Strategies for parallel manipulators +[[file:~/Cloud/research/matlab/decoupling-strategies/svd-control.org::+TITLE: Diagonal control using the SVD and the Jacobian Matrix][study]] + +- Jacobian matrices, CoK, CoM, ... +- Discussion of cubic architecture +- SVD, Modal, ... + +*** Decentralized Integral Force Feedback (LAC) + +- Root Locus +- Damping optimization + +*** Control Kinematics + +- Explain how the position error can be expressed in the frame of the nano-hexapod +- block diagram +- Explain how to go from external metrology to the frame of the nano-hexapod + +*** Decoupled Dynamics + +- Centralized HAC +- Control in the frame of the struts +- Effect of IFF + +*** Centralized Position Controller (HAC) + +- Decoupled plant +- Controller design + +** Simulations - Concept Validation +*** Introduction :ignore: + +- Tomography experiment +- Open VS Closed loop results +- *Conclusion*: concept validation + nano hexapod architecture with APA + decentralized IFF + centralized HAC + +#+name: fig:simscape_nass_final +#+caption: 3D view of the multi-body model including the micro-station, the nano-hexapod and the associated metrology +#+attr_latex: :width \linewidth +[[file:figs/simscape_nass_final.png]] + +** Conclusion + + +* Detailed Design +\minitoc +**** Abstract + +CAD view of the nano-hexapod with key components: +- plates +- flexible joints +- APA +- required instrumentation (ADC, DAC, Speedgoat, Amplifiers, Force Sensor instrumentation, ...) + +** Optimal Nano-Hexapod geometry +*** Introduction :ignore: +- [ ] Geometry? + - [ ] Cubic architecture? + - [ ] Kinematics + - [ ] Trade-off for the strut orientation +- [ ] Sensors required + +*** Optimal strut orientation + +*** Cubic Architecture: a Special Case? + +** Including Flexible elements in the Multi-body model +*** Introduction :ignore: +Reduced order flexible bodies [[cite:brumund21_multib_simul_reduc_order_flexib_bodies_fea]] +- Used with APA, Flexible joints, Plates + +*** Reduced order flexible bodies + +- Quick explanation of the theory +- Implementation with Ansys (or Comsol) and Simscape + +*** Numerical Validation + +- Numerical Validation Ansys VS Simscape (APA) +- Figure with 0 and 1kg mass + +*** Experimental Validation + +- Test bench +- Obtained transfer functions and comparison with Simscape model with reduced order flexible body + +** Amplified Piezoelectric Actuator +*** Introduction :ignore: +[[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-apa/index.org::+TITLE: Test Bench - Amplified Piezoelectric Actuator][study 1]], [[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-apa300ml/test-bench-apa300ml.org::+TITLE: Nano-Hexapod Struts - Test Bench][study 2]] + +#+name: fig:apa_schmeatic +#+caption: Schematical representation of an Amplified Piezoelectric Actuator +#+attr_latex: :width 0.49\linewidth +[[file:example-image-a.png]] + +- First tests with the APA95ML + +*** Model + +Piezoelectric equations + +#+name: fig:apa_schmeatic_2dof +#+caption: Schematical representation of a 2DoF model of an Amplified Piezoelectric Actuator +#+attr_latex: :width 0.49\linewidth +[[file:example-image-a.png]] + +#+name: fig:apa_schmeatic_fem +#+caption: Schematical representation of a FEM of an Amplified Piezoelectric Actuator +#+attr_latex: :width 0.49\linewidth +[[file:example-image-b.png]] + +- FEM +- Simscape model +- (2 DoF, FEM, ...) + +#+name: fig:root_locus_iff_rot_stiffness +#+caption: Limitation of the attainable damping due to the APA design +[[file:figs/root_locus_iff_rot_stiffness.png]] + +*** Experimental System Identification + +- Experimental validation (granite test bench) +- Electrical parameters +- Required instrumentation to read force sensor? +- Add resistor to include high pass filtering: no risk of saturating the ADC +- Estimation of piezoelectric parameters + +*** Validation with Simscape model + +- Tuned Simscape model +- IFF results: OK + +** Flexible Joints +*** Introduction :ignore: + +*** Effect of flexible joint characteristics on obtained dynamics + +- Based on Simscape model +- Effect of axial stiffness, bending stiffness, ... +- Obtained specifications (trade-off) + + +*** Flexible joint geometry optimization + +- Chosen geometry +- Optimisation with Ansys +- Validation with Simscape model + +*** Experimental identification + +- Experimental validation, characterisation ([[file:~/Cloud/work-projects/ID31-NASS/matlab/test-bench-flexible-joints-adv/bending.org::+TITLE: Flexible Joint - Measurement of the Bending Stiffness][study]]) +- Visual inspection +- Test bench +- Obtained results + +** Instrumentation +*** Introduction :ignore: + +*** DAC + + +*** ADC + +Force sensor + +*** Voltage amplifier ([[https://research.tdehaeze.xyz/test-bench-pd200/][link]]) + +- Test Bench: capacitive load, ADC, DAC, Instrumentation amplifier +- Noise measurement +- Transfer function measurement + +*** Encoder ([[https://research.tdehaeze.xyz/test-bench-vionic/][link]]) +- Noise measurement + +** Obtained Design + +- CAD view of the nano-hexapod +- Chosen geometry, materials, ease of mounting, cabling, ... + +* Experimental Validation +\minitoc +**** Abstract + +Schematic representation of the experimental validation process. +- APA +- Strut +- Nano-hexapod on suspended table +- Nano-hexapod with Spindle + +** Amplified Piezoelectric Actuator ([[https://research.tdehaeze.xyz/test-bench-apa300ml/][link]]) + +APA alone: +- *Goal*: Tune model of APA +- [ ] FRF and fit with FEM model +- [ ] Show all six FRF and how close they are +- [ ] IFF + +** Struts + +Strut (APA + joints): +- [ ] FRF, tune model +- [ ] Issue with encoder (comparison with axial motion) +- [ ] IFF + +** Nano-Hexapod + +Mounting + +Test bench on top of soft table: +- *Goal*: Tune model of nano-hexapod, validation of dynamics +- modal analysis soft table (first mode at xxx Hz => rigid body in Simscape) +- FRF + comp model (multiple masses) +- IFF and robustness to change of mass + +** Rotating Nano-Hexapod + +- *Goal*: validation of control strategy with rotation +- Interferometers to have more stroke + +#+name: fig:rot_nano_hexapod_bench_schematic +#+caption: Schematic of the rotating nano-hexapod test bench +#+attr_latex: :width 0.49\linewidth +[[file:example-image-a.png]] + +** ID31 Micro Station + +- *Goal*: full validation without the full metrology + +* Conclusion and Future Work * Appendix :ignore: #+latex: \appendix -* Mathematical formulas +* Stewart Platform - Kinematics * Comments on something * Bibliography :ignore: #+latex: \printbibliography[heading=bibintoc,title={Bibliography}] diff --git a/phd-thesis.pdf b/phd-thesis.pdf index fc1bf47..6684df3 100644 Binary files a/phd-thesis.pdf and b/phd-thesis.pdf differ diff --git a/phd-thesis.tex b/phd-thesis.tex index 5eaf0b7..cb6921c 100644 --- a/phd-thesis.tex +++ b/phd-thesis.tex @@ -1,4 +1,4 @@ -% Created 2023-01-26 Thu 09:33 +% Created 2023-01-31 Tue 23:33 % Intended LaTeX compiler: pdflatex \documentclass[a4paper, twoside, 11pt, onecolumn, bibliography=totoc, openright, appendixprefix=true]{scrreprt} @@ -12,18 +12,18 @@ \input{config_extra.tex} \addbibresource{ref.bib} \author{Dehaeze Thomas} -\date{2023-01-26} -\title{PhD Thesis} -\subtitle{My subtitle} +\date{2023-01-31} +\title{Mechatronic approach for the design of a Nano Active Stabilization System} +\subtitle{PhD Thesis} \hypersetup{ pdfauthor={Dehaeze Thomas}, - pdftitle={PhD Thesis}, + pdftitle={Mechatronic approach for the design of a Nano Active Stabilization System}, pdfkeywords={}, pdfsubject={}, pdfcreator={Emacs 28.2 (Org mode 9.5.2)}, pdflang={English}} \usepackage{biblatex} -\addbibresource{~/Cloud/brain/biblio/references.bib} + \begin{document} @@ -43,11 +43,9 @@ \@author % \vfill - A document submitted in partial fulfillment - of the requirements for the degree of\\ - \emph{Technical Report}\\ + A thesis submitted in partial fulfillment of the requirements for the degree of Doctor of Philosophy (PhD) in Engineering Science\\ at\\ - \textsc{Miskatonic University} + \textsc{Liège Université} \end{center} \makeatother \end{titlepage} @@ -70,310 +68,644 @@ \listoffigures \chapter{Introduction} -\chapter{Test} +\section{Context of this thesis / Background and Motivation} + +\begin{itemize} +\item ESRF (Figure \ref{fig:esrf_picture}) +\end{itemize} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.7\linewidth]{figs/esrf_picture.jpg} +\caption{\label{fig:esrf_picture}European Synchrotron Radiation Facility} +\end{figure} + +\begin{itemize} +\item ID31 and Micro Station (Figure \ref{fig:id31_microstation_picture}) +\end{itemize} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.49\linewidth]{figs/id31_microstation_picture.png} +\caption{\label{fig:id31_microstation_picture}Picture of the ID31 Micro-Station with annotations} +\end{figure} + +Alternative: \texttt{id31\_microstation\_cad\_view.png} (CAD view) + +\begin{itemize} +\item X-ray beam + detectors + sample stage (Figure \ref{fig:id31_beamline_schematic}) +\end{itemize} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.49\linewidth]{figs/id31_beamline_schematic.png} +\caption{\label{fig:id31_beamline_schematic}ID31 Beamline Schematic. With light source, nano-focusing optics, sample stage and detector.} +\end{figure} + +\begin{itemize} +\item Few words about science made on ID31 and why nano-meter accuracy is required +\item Typical experiments (tomography, \ldots{}), various samples (up to 50kg) +\item Example of picture obtained (Figure \ref{fig:id31_tomography_result}) +\end{itemize} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.49\linewidth]{example-image-c.png} +\caption{\label{fig:id31_tomography_result}Image obtained on the ID31 beamline} +\end{figure} + +\begin{itemize} +\item Explain wanted positioning accuracy and why micro-station cannot have this accuracy (backlash, play, thermal expansion, \ldots{}) +\end{itemize} + +\section{Challenge definition} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/nass_concept_schematic.png} +\caption{\label{fig:nass_concept_schematic}Nass Concept. 1: micro-station, 2: nano-hexapod, 3: sample, 4: 5DoF metrology} +\end{figure} + +\begin{itemize} +\item 6DoF vibration control platform on top of a complex positioning platform +\item \textbf{Goal}: Improve accuracy of 6DoF long stroke position platform +\item \textbf{Approach}: Mechatronic approach / model based / predictive +\item \textbf{Control}: Robust control approach / various payloads. +First hexapod with control bandwidth higher than the suspension modes that accepts various payloads? +\item Rotation aspect +\item Compactness? (more related to mechanical design) +\end{itemize} + +\section{Literature Review} + +\begin{figure} +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.8\linewidth]{example-image-a.png} +\end{center} +\subcaption{Stewart platform based on voice coil actuators} +\end{subfigure} +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.8\linewidth]{example-image-b.png} +\end{center} +\subcaption{Stewart platform based on piezoelectric actuators} +\end{subfigure} +\caption{\label{fig:stewart_platform_examples}Examples of Stewart Platforms} +\end{figure} + +\begin{itemize} +\item Hexapods +\cite{li01_simul_fault_vibrat_isolat_point} +\cite{bishop02_devel_precis_point_contr_vibrat} +\cite{hanieh03_activ_stewar} +\cite{afzali-far16_vibrat_dynam_isotr_hexap_analy_studies} +\cite{naves20_desig} +\item Positioning stations +\item Mechatronic approach? +\cite{rankers98_machin} +\cite{monkhorst04_dynam_error_budget} +\cite{jabben07_mechat} +\end{itemize} + +\section{Outline of thesis / Thesis Summary / Thesis Contributions} + +\textbf{Mechatronic Design Approach} / \textbf{Model Based Design}: +\begin{itemize} +\item \cite{monkhorst04_dynam_error_budget} high costs of the design process: the designed system must be \textbf{first time right}. +When the system is finally build, its performance level should satisfy the specifications. +No significant changes are allowed in the post design phase. +Because of this, the designer wants to be able to predict the performance of the system a-priori and gain insight in the performance limiting factors of the system. +\end{itemize} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=\linewidth]{figs/nass_mechatronics_approach.png} +\caption{\label{fig:nass_mechatronics_approach}Overview of the mechatronic approach used for the Nano-Active-Stabilization-System} +\end{figure} + + +\chapter{Conceptual Design Development} \minitoc \paragraph{Abstract} -Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. +Schematic that summarizes this phase. +Uniaxial => Rotation => Multi body => Simulations + +\section{Constrains on the system} -\section{Test} -A list: \begin{itemize} -\item acronyms \acrshort{nass} \acrshort{mimo} \acrshort{lti} \acrfull{siso} -\item glossary terms \gls{ka}, \gls{phi}. -\item Bibliography citations: \cite{dehaeze21_activ_dampin_rotat_platf_using,dehaeze21_mechat_approac_devel_nano_activ_stabil_system}. +\item Size +\item Payload +\item Connections to samples +\item \ldots{} should justify the nano-hexapod design +\begin{itemize} +\item choice of parallel architecture \end{itemize} -A definition list: -\begin{description} -\item[{this}] means that -\item[{that}] means this -\end{description} +\item[{$\square$}] Picture/schematic of the micro-station with indicated location of Nano-Hexapod +\end{itemize} -Some Footnote\footnote{this is a footnote with citation \cite{dehaeze21_mechat_approac_devel_nano_activ_stabil_system}.} +\section{Uni-axial Model} +\begin{itemize} +\item Explain what we want to capture with this model +\item Schematic of the uniaxial model (with X-ray) +\item Identification of disturbances (ground motion, stage vibrations) +\item Optimal nano-hexapod stiffness/actuator: Voice coil VS Piezo (conclusion?) +\item Control architecture (IFF, DVF, \ldots{})? +\item Conclusion +\end{itemize} -\section{Section} -\subsection{Sub section} +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/mass_spring_damper_nass.png} +\caption{\label{fig:mass_spring_damper_nass}3-DoF uniaxial mass-spring-damper model of the NASS} +\end{figure} -This is a sub section. +\subsection{Noise Budgeting} -\subsection{Sub section} -Start of the sub section -\paragraph{Paragraph} -This is a paragraph -\paragraph{lksdfjasd} +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.4\linewidth]{measurement_microstation_vibration_picture.jpg} +\caption{\label{fig:measurement_microstation_vibration_picture}Setup used to measure the micro-station vibrations during operation} +\end{figure} -\paragraph{lksdfjasd} +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.49\linewidth]{example-image-b.png} +\caption{\label{fig:asd_ground_motion_ustation_dist}Amplitude Spectral density of the measured disturbance sources} +\end{figure} -\section{blabla} -\chapter{Source Blocks} +\subsection{Effect of support compliance} +\href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/uncertainty\_support.org}{study} + +\begin{itemize} +\item \textbf{goal}: make the nano-hexapod independent of the support compliance +\item Simple 2DoF model +\item Generalized to any support compliance +\item \textbf{conclusion}: frequency of nano-hexapod resonances should be lower than first suspension mode of the support +\end{itemize} + +\subsection{Effect of payload dynamics} +\href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/uncertainty\_payload.org}{study} + +\begin{itemize} +\item \textbf{goal}: be robust to a change of payload +\item Simple 2DoF model +\item Generalized to any payload dynamics +\end{itemize} + +\subsection{Active Damping} + +Conclusion: IFF is better for this application + +\paragraph{Integral Force Feedback} + +\begin{itemize} +\item Mass spring damper model +\item Root Locus +\item Sensitivity to disturbances +\end{itemize} + +\paragraph{Direct Velocity Feedback} + +\begin{itemize} +\item Mass spring damper model +\item Root Locus +\item Sensitivity to disturbances +\end{itemize} + + +\section{Effect of rotation} +\cite{dehaeze20_activ_dampin_rotat_platf_integ_force_feedb,dehaeze21_activ_dampin_rotat_platf_using} + +\subsection{X-Y rotating platform model} + +\begin{itemize} +\item x-y-Rz model +\item explain why this is representing the NASS +\item Equation of motion +\item Centrifugal forces, Coriolis +\end{itemize} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/2dof_rotating_system.png} +\caption{\label{fig:2dof_rotating_system}Mass spring damper model of an X-Y stage on top of a rotating stage} +\end{figure} + +\subsection{Effect of rotational velocity on the system dynamics} + +\begin{itemize} +\item Campbell diagram +\end{itemize} + +\subsection{Decentralized Integral Force Feedback} + +\begin{itemize} +\item Control diagram +\item Root Locus: unstable with pure IFF +\end{itemize} + +\subsection{Two proposed modification of IFF} + +\begin{itemize} +\item Comparison of parallel stiffness and change of controller +\item Transmissibility +\end{itemize} + +\subsection{Conclusion} + +\begin{itemize} +\item problem with voice coil actuator +\item Two solutions: add parallel stiffness, or change controller +\item Conclusion: minimum stiffness is required +\item APA is a nice architecture for parallel stiffness + integrated force sensor (have to speak about IFF before that) +\end{itemize} + +\section{Multi Body Model - Nano Hexapod} +\begin{itemize} +\item What we want to capture with this model +\item Explain what is a multi body model (rigid body, springs, etc\ldots{}) +\item Key elements (plates, joints, struts): for now simplistic model (rigid body elements, perfect joints, \ldots{}), but in next section, FEM will be used +\item Matlab/Simulink developed toolbox for the study of Stewart platforms +\end{itemize} + +\subsection{Stewart Platform Architecture} + +\begin{itemize} +\item Little review +\item explain key elements: +\begin{itemize} +\item two plates +\item joints +\item actuators +\end{itemize} +\item explain advantages compared to serial architecture +\end{itemize} + +\subsection{Kinematics} + +\begin{itemize} +\item Well define elements, frames, \ldots{} +\item Derivation of jacobian matrices: for forces and for displacement +\item Explain this is true for small displacements (show how small) +\end{itemize} + +\subsection{Model of an Amplified Piezoelectric Actuator} + +\begin{itemize} +\item APA test bench +\item Piezoelectric effects +\item mass spring damper representation (2dof) +\item Compare the model and the experiment +\end{itemize} + +\subsection{Dynamics} + +\begin{itemize} +\item Effect of joints stiffnesses +\end{itemize} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=\linewidth]{figs/simscape_nano_hexapod.png} +\caption{\label{fig:simscape_nano_hexapod}3D view of the multi-body model of the Nano-Hexapod (simplified)} +\end{figure} + +\section{Multi Body Model - Micro Station} +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.7\linewidth]{figs/simscape_first_model_screenshot.jpg} +\caption{\label{fig:simscape_first_model_screenshot}3D view of the multi-body model of the micro-station} +\end{figure} + +\subsection{Kinematics} + +\begin{itemize} +\item Small overview of each stage and associated stiffnesses / inertia +\item schematic that shows to considered DoF +\item import from CAD +\end{itemize} + +\subsection{Modal Analysis} +\href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/nass-measurements/modal-analysis/index.org}{study} + +\begin{itemize} +\item Picture of the experimental setup +\item Location of accelerometers +\item Show obtained modes +\item Validation of rigid body assumption +\item Explain how this helps tuning the multi-body model +\end{itemize} + +\subsection{Validation of the Model} + +\begin{itemize} +\item Most important metric: support compliance +\item Compare model and measurement +\end{itemize} + +\section{Control Architecture} +Discussion of: +\begin{itemize} +\item Transformation matrices / control architecture +\item Control in the frame of struts or cartesian? +\item Effect of rotation on IFF? => APA +\item HAC-LAC +\end{itemize} + +\subsection{High Authority Control - Low Authority Control (HAC-LAC)} + +\begin{itemize} +\item general idea +\item case for parallel manipulator: decentralized LAC + centralized HAC +\end{itemize} + +\subsection{Decoupling Strategies for parallel manipulators} +\href{file:///home/thomas/Cloud/research/matlab/decoupling-strategies/svd-control.org}{study} + +\begin{itemize} +\item Jacobian matrices, CoK, CoM, \ldots{} +\item Discussion of cubic architecture +\item SVD, Modal, \ldots{} +\end{itemize} + +\subsection{Decentralized Integral Force Feedback (LAC)} + +\begin{itemize} +\item Root Locus +\item Damping optimization +\end{itemize} + +\subsection{Control Kinematics} + +\begin{itemize} +\item Explain how the position error can be expressed in the frame of the nano-hexapod +\item block diagram +\item Explain how to go from external metrology to the frame of the nano-hexapod +\end{itemize} + +\subsection{Decoupled Dynamics} + +\begin{itemize} +\item Centralized HAC +\item Control in the frame of the struts +\item Effect of IFF +\end{itemize} + +\subsection{Centralized Position Controller (HAC)} + +\begin{itemize} +\item Decoupled plant +\item Controller design +\end{itemize} + +\section{Simulations - Concept Validation} +\begin{itemize} +\item Tomography experiment +\item Open VS Closed loop results +\item \textbf{Conclusion}: concept validation +nano hexapod architecture with APA +decentralized IFF + centralized HAC +\end{itemize} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=\linewidth]{figs/simscape_nass_final.png} +\caption{\label{fig:simscape_nass_final}3D view of the multi-body model including the micro-station, the nano-hexapod and the associated metrology} +\end{figure} + +\section{Conclusion} + + +\chapter{Detailed Design} \minitoc -\section{Figures} -\begin{minted}[]{matlab} -t = 0:0.01:5; % Time [s] -x = sin(2*pi*t); % Output Voltage [V] -\end{minted} +\paragraph{Abstract} -\begin{minted}[]{matlab} -figure; -plot(t, x); -xlabel('Time [s]'); ylabel('Voltage [V]'); -\end{minted} +CAD view of the nano-hexapod with key components: +\begin{itemize} +\item plates +\item flexible joints +\item APA +\item required instrumentation (ADC, DAC, Speedgoat, Amplifiers, Force Sensor instrumentation, \ldots{}) +\end{itemize} + +\section{Optimal Nano-Hexapod geometry} +\begin{itemize} +\item[{$\square$}] Geometry? +\begin{itemize} +\item[{$\square$}] Cubic architecture? +\item[{$\square$}] Kinematics +\item[{$\square$}] Trade-off for the strut orientation +\end{itemize} +\item[{$\square$}] Sensors required +\end{itemize} + +\subsection{Optimal strut orientation} + +\subsection{Cubic Architecture: a Special Case?} + +\section{Including Flexible elements in the Multi-body model} +Reduced order flexible bodies \cite{brumund21_multib_simul_reduc_order_flexib_bodies_fea} +\begin{itemize} +\item Used with APA, Flexible joints, Plates +\end{itemize} + +\subsection{Reduced order flexible bodies} + +\begin{itemize} +\item Quick explanation of the theory +\item Implementation with Ansys (or Comsol) and Simscape +\end{itemize} + +\subsection{Numerical Validation} + +\begin{itemize} +\item Numerical Validation Ansys VS Simscape (APA) +\item Figure with 0 and 1kg mass +\end{itemize} + +\subsection{Experimental Validation} + +\begin{itemize} +\item Test bench +\item Obtained transfer functions and comparison with Simscape model with reduced order flexible body +\end{itemize} + +\section{Amplified Piezoelectric Actuator} +\href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/test-bench-apa/index.org}{study 1}, \href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/test-bench-apa300ml/test-bench-apa300ml.org}{study 2} \begin{figure}[htbp] \centering -\includegraphics[scale=1]{figs/matlab_fig_example.png} -\caption{\label{fig:matlab_fig_example}Matlab Figure} +\includegraphics[scale=1,width=0.49\linewidth]{example-image-a.png} +\caption{\label{fig:apa_schmeatic}Schematical representation of an Amplified Piezoelectric Actuator} \end{figure} -\section{Table Result} +\begin{itemize} +\item First tests with the APA95ML +\end{itemize} -\begin{minted}[]{matlab} -x = 1:10; -y = x.^2; -\end{minted} +\subsection{Model} -\begin{table}[htbp] -\caption{\label{tab:table_name}Table caption} -\centering -\begin{tabular}{rr} -\(x\) & \(y = x^2\)\\ -\hline -1 & 1\\ -2 & 4\\ -3 & 9\\ -4 & 16\\ -5 & 25\\ -6 & 36\\ -7 & 49\\ -8 & 64\\ -9 & 81\\ -10 & 100\\ -\end{tabular} -\end{table} - -\section{Inline Results} - -Results can be automatically outputed as shown below. - -\begin{minted}[]{matlab} -sqrt(2) -\end{minted} - -\begin{verbatim} -1.4142 -\end{verbatim} - - - -\begin{minted}[]{matlab} -y -\end{minted} - -\begin{verbatim} -y = - 1 4 9 16 25 36 49 64 81 100 -\end{verbatim} - -\section{Caption and Reference} - -Captions can be added to code blocks. -Moreover, we can link to specific bode blocks (Listing \ref{lst:matlab_figure} or \ref{lst:matlab_svd}). - -\begin{listing}[htbp] -\begin{minted}[]{matlab} -figure; -[X,Y,Z] = peaks; -contour(X,Y,Z,20) -\end{minted} -\caption{\label{lst:matlab_figure}Code to produce a nice contour plot} -\end{listing} +Piezoelectric equations \begin{figure}[htbp] \centering -\includegraphics[scale=1]{figs/matlab_logo.png} -\caption{\label{fig:matlab_logo}Obtained Contour Plot} +\includegraphics[scale=1,width=0.49\linewidth]{example-image-a.png} +\caption{\label{fig:apa_schmeatic_2dof}Schematical representation of a 2DoF model of an Amplified Piezoelectric Actuator} \end{figure} -\begin{listing}[htbp] -\begin{minted}[]{matlab} -A = [1 2; 3 4; 5 6; 7 8] -[U,S,V] = svd(A) -\end{minted} -\caption{\label{lst:matlab_svd}Code to compute the Singular Value Decomposition} -\end{listing} +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.49\linewidth]{example-image-b.png} +\caption{\label{fig:apa_schmeatic_fem}Schematical representation of a FEM of an Amplified Piezoelectric Actuator} +\end{figure} -\begin{verbatim} -A = [1 2; 3 4; 5 6; 7 8] -A = - 1 2 - 3 4 - 5 6 - 7 8 -[U,S,V] = svd(A) -U = - -0.152483233310201 -0.82264747222566 -0.394501022283829 -0.379959133877596 - -0.349918371807964 -0.42137528768458 0.242796545704357 0.800655879510063 - -0.547353510305727 -0.0201031031435029 0.697909975442776 -0.461434357387336 - -0.74478864880349 0.381169081397575 -0.546205498863303 0.0407376117548695 -S = - 14.2690954992615 0 - 0 0.626828232417541 - 0 0 - 0 0 -V = - -0.641423027995072 0.767187395072177 - -0.767187395072177 -0.641423027995072 -\end{verbatim} +\begin{itemize} +\item FEM +\item Simscape model +\item (2 DoF, FEM, \ldots{}) +\end{itemize} -\section{Source Blocks with Line Numbers} +\subsection{Experimental System Identification} -Citation \cite{taghirad13_paral,dehaeze21_activ_dampin_rotat_platf_using} +\begin{itemize} +\item Experimental validation (granite test bench) +\item Electrical parameters +\item Required instrumentation to read force sensor? +\item Add resistor to include high pass filtering: no risk of saturating the ADC +\item Estimation of piezoelectric parameters +\end{itemize} -The Listing \ref{lst:matlab_line_numbers} has line numbers as the \texttt{-n} option was used. +\subsection{Validation with Simscape model} -Specific lines of codes can be referenced. -For instance, the code used to specify the wanted the vertical label is on line 4. +\begin{itemize} +\item Tuned Simscape model +\item IFF results: OK +\end{itemize} -\begin{listing}[htbp] -\begin{minted}[linenos,firstnumber=1]{matlab} -figure; -plot(t, x) -xlabel('Time [s]'); -ylabel('Output [V]'); -\end{minted} -\caption{\label{lst:matlab_line_numbers}Specify Labels} -\end{listing} +\section{Flexible Joints} +\subsection{Effect of flexible joint characteristics on obtained dynamics} -Numbering can be continued by using \texttt{+n} option as shown below. -\begin{minted}[linenos,firstnumber=5]{matlab} -figure; -plot(t, u) -xlabel('Time [s]'); -ylabel('Input [V]'); -\end{minted} +\begin{itemize} +\item Based on Simscape model +\item Effect of axial stiffness, bending stiffness, \ldots{} +\item Obtained specifications (trade-off) +\end{itemize} -\chapter{Images} +\subsection{Flexible joint geometry optimization} + +\begin{itemize} +\item Chosen geometry +\item Optimisation with Ansys +\item Validation with Simscape model +\end{itemize} + +\subsection{Experimental identification} + +\begin{itemize} +\item Experimental validation, characterisation (\href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/test-bench-flexible-joints-adv/bending.org}{study}) +\item Visual inspection +\item Test bench +\item Obtained results +\end{itemize} + +\section{Instrumentation} +\subsection{DAC} + + +\subsection{ADC} + +Force sensor + +\subsection{Voltage amplifier (\href{https://research.tdehaeze.xyz/test-bench-pd200/}{link})} + +\begin{itemize} +\item Test Bench: capacitive load, ADC, DAC, Instrumentation amplifier +\item Noise measurement +\item Transfer function measurement +\end{itemize} + +\subsection{Encoder (\href{https://research.tdehaeze.xyz/test-bench-vionic/}{link})} +\begin{itemize} +\item Noise measurement +\end{itemize} + +\section{Obtained Mechanical Design} + +\begin{itemize} +\item CAD view of the nano-hexapod +\item Chosen geometry, materials, ease of mounting, cabling, \ldots{} +\end{itemize} + +\chapter{Experimental Validation} \minitoc -\section{Normal Image} +\paragraph{Abstract} -Figure \ref{fig:general_control_names} shows the results of the Tikz code of listing \ref{lst:tikz_test}. +Schematic representation of the experimental validation process. +\begin{itemize} +\item APA +\item Strut +\item Nano-hexapod on suspended table +\item Nano-hexapod with Spindle +\end{itemize} -\begin{listing}[htbp] -\begin{minted}[]{latex} - \begin{tikzpicture} +\section{Amplified Piezoelectric Actuator (\href{https://research.tdehaeze.xyz/test-bench-apa300ml/}{link})} - % Blocs - \node[block={2.0cm}{2.0cm}] (P) {$P$}; - \node[block={1.5cm}{1.5cm}, below=0.7 of P] (K) {$K$}; +APA alone: +\begin{itemize} +\item \textbf{Goal}: Tune model of APA +\item[{$\square$}] FRF and fit with FEM model +\item[{$\square$}] Show all six FRF and how close they are +\item[{$\square$}] IFF +\end{itemize} - % Input and outputs coordinates - \coordinate[] (inputw) at ($(P.south west)!0.75!(P.north west)$); - \coordinate[] (inputu) at ($(P.south west)!0.25!(P.north west)$); - \coordinate[] (outputz) at ($(P.south east)!0.75!(P.north east)$); - \coordinate[] (outputv) at ($(P.south east)!0.25!(P.north east)$); +\section{Struts} - % Connections and labels - \draw[<-] (inputw) -- ++(-1.5, 0); - \draw[<-] (inputu) -- ++(-0.8, 0) |- (K.west); +Strut (APA + joints): +\begin{itemize} +\item[{$\square$}] FRF, tune model +\item[{$\square$}] Issue with encoder (comparison with axial motion) +\item[{$\square$}] IFF +\end{itemize} - \draw[->] (outputz) -- ++(1.5, 0); - \draw[->] (outputv) -- ++(0.8, 0) |- (K.east); - \end{tikzpicture} -\end{minted} -\caption{\label{lst:tikz_test}Tikz code that is used to generate Figure \ref{fig:general_control_names}} -\end{listing} +\section{Nano-Hexapod} + +Mounting + +Test bench on top of soft table: +\begin{itemize} +\item \textbf{Goal}: Tune model of nano-hexapod, validation of dynamics +\item modal analysis soft table (first mode at xxx Hz => rigid body in Simscape) +\item FRF + comp model (multiple masses) +\item IFF and robustness to change of mass +\end{itemize} + +\section{Rotating Nano-Hexapod} + +\begin{itemize} +\item \textbf{Goal}: validation of control strategy with rotation +\item Interferometers to have more stroke +\end{itemize} \begin{figure}[htbp] \centering -\includegraphics[scale=1]{figs/general_control_names.png} -\caption{\label{fig:general_control_names}General Control Configuration} +\includegraphics[scale=1,width=0.49\linewidth]{example-image-a.png} +\caption{\label{fig:rot_nano_hexapod_bench_schematic}Schematic of the rotating nano-hexapod test bench} \end{figure} -\section{Sub Images} +\section{ID31 Micro Station} -Link to subfigure \ref{fig:general_control_names_1}. - -\begin{figure}[htbp] -\begin{subfigure}[c]{0.49\linewidth} -\centering -\includegraphics[scale=1]{figs/general_control_names.png} -\caption{\label{fig:general_control_names_1} sub figure caption} -\end{subfigure} -\hfill -\begin{subfigure}[c]{0.49\linewidth} -\centering -\includegraphics[scale=1]{figs/general_control_names.png} -\caption{\label{fig:general_control_names_2} sub figure caption} -\end{subfigure} -\hfill -\caption{\label{fig:subfigure}Subfigure Caption} -\centering -\end{figure} - -\chapter{Tables} -\minitoc - -Table \ref{tab:table_with_equations} shows a table with some mathematics inside. - -\begin{table}[htbp] -\caption{\label{tab:table_with_equations}A Simple table with included math} -\centering -\begin{tabular}{rrrrrr} -\(N\) & \(N^2\) & \(N^3\) & \(N^4\) & \(\sqrt n\) & \(\sqrt[4]N\)\\ -\hline -1 & 1 & 1 & 1 & 1 & 1\\ -2 & 4 & 8 & 16 & 1.4142136 & 1.1892071\\ -3 & 9 & 27 & 81 & 1.7320508 & 1.3160740\\ -\end{tabular} -\end{table} - -\begin{table}[htbp] -\caption{\label{tab:table_without_head}Table without Head} -\centering -\begin{tabular}{lrrrrr} - & \textbf{1} & \textbf{2} & \textbf{3} & \textbf{4} & \textbf{5}\\ -\textbf{1} & 1 & 2 & 3 & 4 & 5\\ -\textbf{2} & 2 & 4 & 6 & 8 & 10\\ -\textbf{3} & 3 & 6 & 9 & 12 & 15\\ -\textbf{4} & 4 & 8 & 12 & 16 & 20\\ -\textbf{5} & 5 & 10 & 15 & 20 & 25\\ -\end{tabular} -\end{table} - -\begin{table}[htbp] -\caption{\label{tab:table_multiple_heads}Table with multiples groups} -\centering -\footnotesize -\begin{tabular}{lcc} - & \textbf{Classical Control} & \textbf{Modern Control}\\ -\hline -\textbf{Date} & 1930- & 1960-\\ -\hline -\textbf{Tools} & Transfer Functions & State Space formulation\\ - & Nyquist Plots & Riccati Equations\\ - & Bode Plots & \\ - & Phase and Gain margins & \\ -\hline -\textbf{Control Architectures} & Proportional, Integral, Derivative & Full State Feedback\\ - & Leads, Lags & LQR, LQG\\ - & & Kalman Filters\\ -\hline -\textbf{Advantages} & Study Stability & Automatic Synthesis\\ - & Simple & MIMO\\ - & Natural & Optimization Problem\\ - & & \\ - & & \\ -\hline -\textbf{Disadvantages} & Manual Method & No Guaranteed Robustness\\ - & Only SISO & Difficult Rejection of Perturbations\\ -\end{tabular} -\end{table} +\begin{itemize} +\item \textbf{Goal}: full validation without the full metrology +\end{itemize} +\chapter{Conclusion and Future Work} \appendix -\chapter{Mathematical formulas} +\chapter{Stewart Platform - Kinematics} \chapter{Comments on something} \printbibliography[heading=bibintoc,title={Bibliography}]