diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..a06e566 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +*.pdf binary +*.svg binary +*.mat binary diff --git a/.gitignore b/.gitignore index 6b7e1a4..d7a02f8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,3 @@ -mat/ -figures/ ltximg/ slprj/ matlab/slprj/ diff --git a/preamble.tex b/preamble.tex index d18dbd9..adafd1c 100644 --- a/preamble.tex +++ b/preamble.tex @@ -1,137 +1,16 @@ -\usepackage{float} +\usepackage[ % + acronym, % Separate acronyms and glossary + toc, % appear in ToC + automake, % auto-use the makeglossaries command (requires shell-escape) + nonumberlist, % don't back reference pages + nogroupskip, % don't group by letter + nopostdot % don't add a dot at the end of each element +]{glossaries} -\usepackage{caption,tabularx,booktabs} -\usepackage{bm} +\usepackage[stylemods=longextra]{glossaries-extra} -\usepackage{xpatch} % Recommanded for biblatex -\usepackage[ % use biblatex for bibliography - backend=biber, % use biber backend (bibtex replacement) or bibtex - style=ieee, % bib style - hyperref=true, % activate hyperref support - backref=true, % activate backrefs - isbn=false, % don't show isbn tags - url=false, % don't show url tags - doi=false, % don't show doi tags - urldate=long, % display type for dates - maxnames=3, % - minnames=1, % - maxbibnames=5, % - minbibnames=3, % - maxcitenames=2, % - mincitenames=1 % - ]{biblatex} +\setabbreviationstyle[acronym]{long-short} +\setglossarystyle{long-name-desc} -\setlength\bibitemsep{1.1\itemsep} - -% \renewcommand*{\bibfont}{\footnotesize} - -\usepackage{fontawesome} - -\usepackage{caption} -\usepackage{subcaption} - -\captionsetup[figure]{labelfont=bf} -\captionsetup[subfigure]{labelfont=bf} -\captionsetup[listing]{labelfont=bf} -\captionsetup[table]{labelfont=bf} - -\usepackage{xcolor} - -\definecolor{my-blue}{HTML}{6b7adb} -\definecolor{my-pale-blue}{HTML}{e6e9f9} -\definecolor{my-red}{HTML}{db6b6b} -\definecolor{my-pale-red}{HTML}{f9e6e6} -\definecolor{my-green}{HTML}{6bdbb6} -\definecolor{my-pale-green}{HTML}{e6f9f3} -\definecolor{my-yellow}{HTML}{dbd26b} -\definecolor{my-pale-yellow}{HTML}{f9f7e6} -\definecolor{my-orange}{HTML}{dba76b} -\definecolor{my-pale-orange}{HTML}{f9f0e6} -\definecolor{my-grey}{HTML}{a3a3a3} -\definecolor{my-pale-grey}{HTML}{f0f0f0} -\definecolor{my-turq}{HTML}{6bc7db} -\definecolor{my-pale-turq}{HTML}{e6f6f9} - -\usepackage{inconsolata} - -\usepackage[newfloat=true, chapter]{minted} -\usemintedstyle{autumn} - -\setminted{frame=lines,breaklines=true,tabsize=4,fontsize=\scriptsize,autogobble=true,labelposition=topline,bgcolor=my-pale-grey} -\setminted[matlab]{label=Matlab} -\setminted[latex]{label=LaTeX} -\setminted[bash]{label=Bash} -\setminted[python]{label=Python} -\setminted[text]{label=Results} -\setminted[md]{label=Org Mode} - -\setmintedinline{fontsize=\normalsize,bgcolor=my-pale-grey} - -\usepackage[most]{tcolorbox} - -\tcbuselibrary{minted} - -\newtcolorbox{seealso}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=See Also} -\newtcolorbox{hint}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=Hint} -\newtcolorbox{definition}{enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Definition} -\newtcolorbox{important}{ enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Important} -\newtcolorbox{exampl}[1][]{ enhanced,breakable,colback=my-pale-green,colframe=my-green,fonttitle=\bfseries,title=Example,#1} -\newtcolorbox{exercice}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Exercice} -\newtcolorbox{question}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Question} -\newtcolorbox{answer}{ enhanced,breakable,colback=my-pale-turq,colframe=my-turq,fonttitle=\bfseries,title=Answer} -\newtcolorbox{summary}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Summary} -\newtcolorbox{note}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Note} -\newtcolorbox{caution}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Caution} -\newtcolorbox{warning}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Warning} - -\newtcolorbox{my-quote}[1]{% - colback=my-pale-grey, - grow to right by=-10mm, - grow to left by=-10mm, - boxrule=0pt, - boxsep=0pt, - breakable, - enhanced jigsaw, - borderline west={4pt}{0pt}{my-grey}} - -\renewenvironment{quote}{\begin{my-quote}}{\end{my-quote}} - -\newtcolorbox{my-verse}[1]{% - colback=my-pale-grey, - grow to right by=-10mm, - grow to left by=-10mm, - boxrule=0pt, - boxsep=0pt, - breakable, - enhanced jigsaw, - borderline west={4pt}{0pt}{my-grey}} - -\renewenvironment{verse}{\begin{my-verse}}{\end{my-verse}} - -\usepackage{environ}% http://ctan.org/pkg/environ -\NewEnviron{aside}{% - \marginpar{\BODY} -} - -\renewenvironment{verbatim}{\VerbatimEnvironment\begin{minted}[]{text}}{\end{minted}} - -\usepackage{soul} -\sethlcolor{my-pale-grey} - -\let\OldTexttt\texttt -\renewcommand{\texttt}[1]{{\ttfamily\hl{\mbox{\,#1\,}}}} - -\makeatletter -\preto\Gin@extensions{png,} -\DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf} -\preto\Gin@extensions{gif,} -\DeclareGraphicsRule{.gif}{png}{.png}{\noexpand\Gin@base.png} -\makeatother - -\usepackage{hyperref} -\hypersetup{ - colorlinks = true, - allcolors = my-blue -} - -\usepackage{hypcap} +\makeindex +\makeglossaries diff --git a/preamble_extra.tex b/preamble_extra.tex new file mode 100644 index 0000000..98cfc04 --- /dev/null +++ b/preamble_extra.tex @@ -0,0 +1,134 @@ +\usepackage{float} +\usepackage{enumitem} + +\usepackage{caption,tabularx,booktabs} +\usepackage{bm} + +\usepackage{xpatch} % Recommanded for biblatex +\usepackage[ % use biblatex for bibliography + backend=biber, % use biber backend (bibtex replacement) or bibtex + style=ieee, % bib style + hyperref=true, % activate hyperref support + backref=true, % activate backrefs + isbn=false, % don't show isbn tags + url=false, % don't show url tags + doi=false, % don't show doi tags + urldate=long, % display type for dates + maxnames=3, % + minnames=1, % + maxbibnames=5, % + minbibnames=3, % + maxcitenames=2, % + mincitenames=1 % + ]{biblatex} + +\setlength\bibitemsep{1.1\itemsep} + +\usepackage{caption} +\usepackage{subcaption} + +\captionsetup[figure]{labelfont=bf} +\captionsetup[subfigure]{labelfont=bf} +\captionsetup[listing]{labelfont=bf} +\captionsetup[table]{labelfont=bf} + +\usepackage{xcolor} + +\definecolor{my-blue}{HTML}{6b7adb} +\definecolor{my-pale-blue}{HTML}{e6e9f9} +\definecolor{my-red}{HTML}{db6b6b} +\definecolor{my-pale-red}{HTML}{f9e6e6} +\definecolor{my-green}{HTML}{6bdbb6} +\definecolor{my-pale-green}{HTML}{e6f9f3} +\definecolor{my-yellow}{HTML}{dbd26b} +\definecolor{my-pale-yellow}{HTML}{f9f7e6} +\definecolor{my-orange}{HTML}{dba76b} +\definecolor{my-pale-orange}{HTML}{f9f0e6} +\definecolor{my-grey}{HTML}{a3a3a3} +\definecolor{my-pale-grey}{HTML}{f0f0f0} +\definecolor{my-turq}{HTML}{6bc7db} +\definecolor{my-pale-turq}{HTML}{e6f6f9} + +\usepackage{inconsolata} + +\usepackage[newfloat=true, chapter]{minted} +\usemintedstyle{autumn} + +\setminted{frame=lines,breaklines=true,tabsize=4,fontsize=\scriptsize,autogobble=true,labelposition=topline,bgcolor=my-pale-grey} +\setminted[matlab]{label=Matlab} +\setminted[latex]{label=LaTeX} +\setminted[bash]{label=Bash} +\setminted[python]{label=Python} +\setminted[text]{label=Results} +\setminted[md]{label=Org Mode} + +\setmintedinline{fontsize=\normalsize,bgcolor=my-pale-grey} + +\usepackage[most]{tcolorbox} + +\tcbuselibrary{minted} + +\newtcolorbox{seealso}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=See Also} +\newtcolorbox{hint}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=Hint} +\newtcolorbox{definition}{enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Definition} +\newtcolorbox{important}{ enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Important} +\newtcolorbox{exampl}[1][]{ enhanced,breakable,colback=my-pale-green,colframe=my-green,fonttitle=\bfseries,title=Example,#1} +\newtcolorbox{exercice}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Exercice} +\newtcolorbox{question}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Question} +\newtcolorbox{answer}{ enhanced,breakable,colback=my-pale-turq,colframe=my-turq,fonttitle=\bfseries,title=Answer} +\newtcolorbox{summary}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Summary} +\newtcolorbox{note}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Note} +\newtcolorbox{caution}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Caution} +\newtcolorbox{warning}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Warning} + +\newtcolorbox{my-quote}[1]{% + colback=my-pale-grey, + grow to right by=-10mm, + grow to left by=-10mm, + boxrule=0pt, + boxsep=0pt, + breakable, + enhanced jigsaw, + borderline west={4pt}{0pt}{my-grey}} + +\renewenvironment{quote}{\begin{my-quote}}{\end{my-quote}} + +\newtcolorbox{my-verse}[1]{% + colback=my-pale-grey, + grow to right by=-10mm, + grow to left by=-10mm, + boxrule=0pt, + boxsep=0pt, + breakable, + enhanced jigsaw, + borderline west={4pt}{0pt}{my-grey}} + +\renewenvironment{verse}{\begin{my-verse}}{\end{my-verse}} + +\usepackage{environ}% http://ctan.org/pkg/environ +\NewEnviron{aside}{% + \marginpar{\BODY} +} + +\renewenvironment{verbatim}{\VerbatimEnvironment\begin{minted}[]{text}}{\end{minted}} + +\usepackage{soul} +\sethlcolor{my-pale-grey} + +\let\OldTexttt\texttt +\renewcommand{\texttt}[1]{{\ttfamily\hl{\mbox{\,#1\,}}}} + +\makeatletter +\preto\Gin@extensions{png,} +\DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf} +\preto\Gin@extensions{gif,} +\DeclareGraphicsRule{.gif}{png}{.png}{\noexpand\Gin@base.png} +\makeatother + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, + allcolors = my-blue +} + +\usepackage{hypcap} diff --git a/simscape-nano-hexapod.org b/simscape-nano-hexapod.org index c130f17..c1fef26 100644 --- a/simscape-nano-hexapod.org +++ b/simscape-nano-hexapod.org @@ -15,7 +15,8 @@ #+LaTeX_CLASS: scrreprt #+LaTeX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc] -#+LaTeX_HEADER_EXTRA: \input{preamble.tex} +#+LATEX_HEADER: \input{preamble.tex} +#+LATEX_HEADER_EXTRA: \input{preamble_extra.tex} #+LATEX_HEADER_EXTRA: \bibliography{simscape-nano-hexapod.bib} #+BIND: org-latex-bib-compiler "biber" @@ -44,12 +45,6 @@ #+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png") :END: -#+begin_export html -
-

This report is also available as a pdf.

-
-#+end_export - #+latex: \clearpage * Build :noexport: @@ -96,41 +91,237 @@ #+END_SRC * Notes :noexport: +** Notes +Prefix is =nhexa= Based on: +- [ ] Stewart platform presentation: [[file:~/Cloud/meetings/group-meetings-me/2020-01-27-Stewart-Platform-Simscape/2020-01-27-Stewart-Platform-Simscape.org]] - [ ] Add some sections from here: [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/index.org]] For instance: - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/stewart-architecture.org][stewart architecture]] + - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/stewart_platform.org::+TITLE: Stewart Platform - Simscape Model]] - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/kinematic-study.org][kinematic study]] - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/identification.org][stewart platform - dynamics]] - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/cubic-configuration.org][cubic configuration]] - [ ] Look at the [[file:~/Cloud/work-projects/ID31-NASS/documents/state-of-thesis-2020/index.org][NASS 2020 report]] + Sections 5.1, 5.4 - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/amplified_piezoelectric_stack.org][amplified_piezoelectric_stack]] (Just use 2DoF here) -- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/nano_hexapod.org][nano_hexapod]] (it seems this report is already after the detailed design phase) +- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/nano_hexapod.org][nano_hexapod]] (it seems this report is already after the detailed design phase: yes but some parts could be interesting) - [ ] Should the study of effect of flexible joints be included here? +- [X] file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/control-vibration-isolation.org + +Questions: +- [ ] The APA model should maybe not be used here, same for the nice top and bottom plates. Here the detailed design is not yet performed + +** TODO [#A] Copy relevant parts of reports + +- [ ] Stewart platform presentation: [[file:~/Cloud/meetings/group-meetings-me/2020-01-27-Stewart-Platform-Simscape/2020-01-27-Stewart-Platform-Simscape.org]] +- [ ] Add some sections from here: [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/index.org]] + For instance: + - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/stewart-architecture.org][stewart architecture]] + - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/stewart_platform.org::+TITLE: Stewart Platform - Simscape Model]] + - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/kinematic-study.org][kinematic study]] + - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/identification.org]] + Effect of joints stiffnesses + - [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/cubic-configuration.org][cubic configuration]] +- [ ] Look at the [[file:~/Cloud/work-projects/ID31-NASS/documents/state-of-thesis-2020/index.org][NASS 2020 report]] + Sections 5.1, 5.4 +- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/amplified_piezoelectric_stack.org][amplified_piezoelectric_stack]] (Just use 2DoF here) +- [ ] [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/nano_hexapod.org][nano_hexapod]] (it seems this report is already after the detailed design phase: yes but some parts could be interesting) +- [ ] Should the study of effect of flexible joints be included here? +- [X] file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/control-vibration-isolation.org + +** DONE [#A] Make a nice outline +CLOSED: [2025-02-05 Wed 17:45] + +*Introduction* +- Choice of architecture to do 5DoF control +- Stewart platform +- Need to model the active vibration platform +- Control + +*1 - Active Vibration Platforms*: +Introduction: +Maybe no sections, just a review discussing several aspect of the platforms. +1. Review of active vibration platforms (focused on Synchrotron applications) +2. Serial and Parallel Architecture: advantages and disadvantages of both +3. Which architecture => Parallel manipulator? Why *Stewart platform*? + +*2 - The Stewart Platform*: +Introduction: some history about Stewart platform and why it is so used +1. Architecture (plates, struts, joints) +2. Kinematics and Jacobian +4. Static Analysis +5. Dynamic Analysis: very complex => multi-body model + For instance, compute the plant for massless struts and perfect joints (will be compared with Simscape model). + But say that if we want to model more complex cases, it becomes impractical (cite papers). + +*3 - Multi-Body model of the Stewart platform*: +Introduction: Complex dynamics => analytical formulas can be complex => Choose to study the dynamics using a multi-body model +1. Model definition: (Matlab Toolbox), frames, inertias of parts, stiffnesses, struts, etc... +2. Joints: perfect 2dof/3dof (+ mass-less) +3. Actuators: APA + Encoder (mass-less) +4. Nano-Hexapod: definition of each part + Plant with defined inputs/outputs (force sensor, relative displacement sensor, etc...) + Compare with analytical formulas (see number of states) + +*4 - Control of the Stewart Platform*: +Introduction: MIMO control => much more complex than SISO control because of interaction. Possible to ignore interaction when good decoupling (important to have tools to study interaction) +1. Centralized and Decentralized Control +2. Decoupling Control / Choice of control space file:~/Cloud/research/matlab/decoupling-strategies/svd-control.org + Estimate coupling: RGA + - Jacobian matrices, CoK, CoM, control in the frame of the struts, ... + - Discussion of cubic architecture (quick, as it is going to be in detailed in chapter 2) + - SVD, Modal, ... +3. Active Damping: decentralized IFF + Guaranteed stability? + For decentralized control: "MIMO root locus" + How to optimize the added damping to all modes? +4. HAC-LAC + Stability of closed-loop: Nyquist (main advantage: possible to do with experimental FRF) + +*Conclusion*: +- Configurable Stewart platform model +- Will be included in the multi-body model of the micro-station => nass multi body model + +** DONE [#A] Location of this report in the complete thesis +CLOSED: [2025-02-05 Wed 16:04] + +*Before the report* (assumptions): +- Uniaxial model: no stiff actuator, HAC-LAC strategy +- Rotating model: + Soft actuators are problematic due to gyroscopic effects + Use moderately stiff (1um/N). + IFF can be applied with APA architecture +- Model of Micro-station is ready + +*In this report*: +- Goal: build a flexible (i.e. configurable) multi-body model of a Stewart platform that will be used in the next section to perform dynamical analysis and simulate experiments with the complete NASS +- Here, I propose to work with "perfect" stewart platforms: + - almost mass-less struts + - joints with zero stiffness in free DoFs (i.e. 2-DoF and 3-DoF joints) +- Presentation of Stewart platforms (Literature review about stewart platforms will be done in chapter 2) +- Presentation of the Simscape model + +*After the report* (NASS-Simscape): +- nano-hexapod on top of micro-station +- control is performed +- simulations => validation of the concept + +** TODO [#C] First time in the report that we speak about MIMO control ? Or maybe next section! + +Maybe should introduce: +- "MIMO" Root locus +- "MIMO" Nyquist plot / characteristic loci + +Or should this be in annexes? + +Maybe say that in this phd-thesis, the focus is not on the control. +I tried multiple architectures (complementary filters, etc.), but the focus is not on that. + +** QUES [#C] Cubic architecture should be the topic here or in the detailed design? + +I suppose that it should be in the detailed design phase. +(Review about Stewart platform design should be made in Chapter two.) + +Here, just use simple control architecture for general validation (and not optimization). + +** QUES [#C] Should I make a review of control strategies? + +Yes it seems to good location for review related to control. + +Jacobian matrix. +Control is the frame of the struts, in the cartesian frame (CoM, CoK), modal control, etc... + +[[file:~/Cloud/research/matlab/decoupling-strategies/svd-control.org][file:~/Cloud/research/matlab/decoupling-strategies/svd-control.org]] + +** TODO [#C] Compare simscape =linearize= and analytical formula + +- [X] OK for $\omega=0$ (using just the Stiffness matrix) +- [ ] Should add the mass matrix and compare for all frequencies + +The analytical dynamic model is taken from cite:taghirad13_paral + +** TODO [#C] Output the cubic configuration with clear display of the cube and center of the cube + +[[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/cubic-configuration.org][cubic configuration]] + +** TODO [#C] Make sure the Simulink file for the Stewart platform is working well + +It should be the exact model reference that will be included in the NASS model. + +** TODO [#C] Maybe make an appendix to present the developed toolbox? * Introduction :ignore: -Goal of this report is: -- show what is an hexapod, how we can define its geometry, stiffness, etc... -- Some kinematics: stiffness matrix, mass matrix, etc... -- talk about cubic architecture? +Introduction: +- Choice of architecture to do 5DoF control (Section ref:sec:nhexa_platform_review) +- Stewart platform (Section ref:sec:nhexa_stewart_platform) + Show what is an hexapod, how we can define its geometry, stiffness, etc... + Some kinematics: stiffness matrix, mass matrix, etc... +- Need to model the active vibration platform: multi-body model (Section ref:sec:nhexa_model) + Explain what we want to capture with this model + Key elements (plates, joints, struts): for now simplistic model (rigid body elements, perfect joints, ...), but in next section, FEM will be used +- Control (Section ref:sec:nhexa_control) -#+name: tab:simscape_nhexapod_section_matlab_code -#+caption: Report sections and corresponding Matlab files -#+attr_latex: :environment tabularx :width 0.6\linewidth :align lX -#+attr_latex: :center t :booktabs t -| *Sections* | *Matlab File* | -|------------------+--------------------------| -| Section ref:sec: | =simscape_nhexapod_1_.m= | - -* Nano-Hexapod Kinematics -:PROPERTIES: -:HEADER-ARGS:matlab+: :tangle matlab/.m -:END: -<> +* Active Vibration Platforms +<> ** Introduction :ignore: +*Goals*: +- Explain why Stewart platform architecture is chosen +- Explain what is a Stewart platform (quickly as it will be shown in details in the next section) +- Quick review of active vibration platforms (5 or 6DoF) + +Active vibration platform with 5DoF or 6DoF? +Synchrotron applications? + + +- Literature review? (*maybe more suited for chapter 2*) + - file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/bibliography.org + - Talk about flexible joint? Maybe not so much as it should be topic of second chapter. + Just say that we must of flexible joints that can be defined as 3 to 6DoF joints, and it will be optimize in chapter 2. +- [[cite:&taghirad13_paral]] +- For some systems, just XYZ control (stack stages), example: holler +- For other systems, Stewart platform (ID16a), piezo based +- Examples of Stewart platforms for general vibration control, some with Piezo, other with Voice coil. IFF, ... + Show different geometry configuration +- DCM: tripod? + +** Active vibration control of sample stages + +[[file:~/Cloud/work-projects/ID31-NASS/phd-thesis-chapters/A0-nass-introduction/nass-introduction.org::*Review of stages with online metrology for Synchrotrons][Review of stages with online metrology for Synchrotrons]] + +- [ ] Talk about external metrology? +- [ ] Talk about control architecture? +- [ ] Comparison with the micro-station / NASS + +** Serial and Parallel Manipulators + +*Goal*: +- Explain why a parallel manipulator is here preferred +- Compact, 6DoF, higher control bandwidth, linear, simpler + +- Show some example of serial and parallel manipulators + +- A review of Stewart platform will be given in Chapter related to the detailed design of the Nano-Hexapod + +* The Stewart platform +:PROPERTIES: +:HEADER-ARGS:matlab+: :tangle matlab/nhexa_1_stewart_platform.m +:END: +<> +** Introduction :ignore: + +# Most of this section is based on [[file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/kinematic-study.org][kinematic-study.org]] + +- Some history about Stewart platforms +- What is so special and why it is so used in different fields: give examples + Explain advantages compared to serial architecture +- Little review (very quick: two extreme sizes, piezo + voice coil) + Complete review of Stewart platforms will be made in Chapter 2 +- Presentation of tools used to analyze the properties of the Stewart platform => useful for design and control + + ** Matlab Init :noexport:ignore: #+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) <> @@ -152,8 +343,254 @@ Goal of this report is: <> #+end_src +** Mechanical Architecture +<> + +file:~/Cloud/work-projects/ID31-NASS/matlab/stewart-simscape/org/stewart-architecture.org + +Presentation of the typical architecture +- Explain the different frames, etc... +- explain key elements: + - two plates + - joints + - actuators + +Make well defined notations. +- {F}, {M} +- si, li, ai, bi, etc. + +- [ ] Make figure with defined frames, joints, etc... + Maybe can use this figure as an example: + [[file:/home/thomas/Cloud/work-projects/ID31-NASS/phd-thesis-chapters/A0-nass-introduction/figs/introduction_stewart_du14.svg]] + +** Kinematic Analysis +<> +*** Inverse Kinematics + +*** Forward Kinematics + +*** Jacobian Matrix + +- Velocity Loop Closure +- Static Forces + +*** Singularities + +- Briefly mention singularities, and say that for small stroke, it is not an issue, the Jacobian matrix may be considered constant + +** Static Analysis +<> + +How stiffness varies with orientation of struts. +Same with stroke? +Or maybe in the detailed chapter? + +** Dynamic Analysis +<> + +Very complex => multi-body model +For instance, compute the plant for massless struts and perfect joints (will be compared with Simscape model). +But say that if we want to model more complex cases, it becomes impractical (cite papers). + +** Conclusion +:PROPERTIES: +:UNNUMBERED: t +:END: + +All depends on the geometry. +Reasonable choice of geometry is made in chapter 1. +Optimization of the geometry will be made in chapter 2. + +* Multi-Body Model +:PROPERTIES: +:HEADER-ARGS:matlab+: :tangle matlab/nhexa_2_model.m +:END: +<> +** Introduction :ignore: + +*Goal*: +- Study the dynamics of Stewart platform +- Instead of working with complex analytical models: a multi-body model is used. + Complex because has to model the inertia of the struts. + Cite papers that tries to model the stewart platform analytically + Advantage: it will be easily included in the model of the NASS + +- Mention the Toolbox (maybe make a DOI for that) + +- [ ] Have a table somewhere that summarizes the main characteristics of the nano-hexapod model + - location of joints + - size / mass of platforms, etc... + +** Matlab Init :noexport:ignore: +#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) +<> +#+end_src + +#+begin_src matlab :exports none :results silent :noweb yes +<> +#+end_src + +#+begin_src matlab :tangle no :noweb yes +<> +#+end_src + +#+begin_src matlab :eval no :noweb yes +<> +#+end_src + +#+begin_src matlab :noweb yes +<> +#+end_src + +** Model Definition +<> + +- [ ] Make a schematic of the definition process (for instance knowing the ai, bi points + {A} and {B} allows to compute Jacobian, etc...) + +- What is important for the model: + - Inertia of plates and struts + - Positions of joints / Orientation of struts + - Definition of frames (for Jacobian, stiffness analysis, etc...) + +Then, several things can be computed: +- Kinematics, stiffness, platform mobility, dynamics, etc... + + +- Joints: can be 2dof to 6dof +- Actuators: can be modelled as wanted + +** Nano Hexapod +<> + +Start simple: +- Perfect joints, massless actuators + +Joints: perfect 2dof/3dof (+ mass-less) +Actuators: APA + Encoder (mass-less) +- k = 1N/um +- Force sensor + +Definition of each part + Plant with defined inputs/outputs (force sensor, relative displacement sensor, etc...) + +** Model Dynamics +<> + +- If all is perfect (mass-less struts, perfect joints, etc...), maybe compare analytical model with simscape model? +- Say something about the model order + Model order is 12, and that we can compute modes from matrices M and K, compare with the Simscape model +- Compare with analytical formulas (see number of states) + +** Conclusion +:PROPERTIES: +:UNNUMBERED: t +:END: + +- Validation of multi-body model in a simple case +- Possible to increase the model complexity when required + - If considered 6dof joint stiffness, model order increases + - Can have an effect on IFF performances: [[cite:&preumont07_six_axis_singl_stage_activ]] + - Conclusion: during the conceptual design, we consider a perfect, but will be taken into account later + - Optimization of the Flexible joint will be performed in Chapter 2.2 +- MIMO system: how to control? => next section + +* Control of Stewart Platforms +:PROPERTIES: +:HEADER-ARGS:matlab+: :tangle matlab/nhexa_3_control.m +:END: +<> +** Introduction :ignore: + +MIMO control: much more complex than SISO control because of interaction. +Possible to ignore interaction when good decoupling is achieved. +Important to have tools to study interaction +Different ways to try to decouple a MIMO plant. + +Reference book: [[cite:&skogestad07_multiv_feedb_contr]] + +** Matlab Init :noexport:ignore: +#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) +<> +#+end_src + +#+begin_src matlab :exports none :results silent :noweb yes +<> +#+end_src + +#+begin_src matlab :tangle no :noweb yes +<> +#+end_src + +#+begin_src matlab :eval no :noweb yes +<> +#+end_src + +#+begin_src matlab :noweb yes +<> +#+end_src + +** Centralized and Decentralized Control +<> + +- Explain what is centralized and decentralized: + - linked to the sensor position relative to the actuators + - linked to the fact that sensors and actuators pairs are "independent" or each other (related to the control architecture, not because there is no coupling) +- When can decentralized control be used and when centralized control is necessary? + Study of interaction: RGA + +** Choice of the control space +<> + +- [ ] file:~/Cloud/research/matlab/decoupling-strategies/svd-control.org + +- Jacobian matrices, CoK, CoM, control in the frame of the struts, SVD, Modal, ... +- Combined CoM and CoK => Discussion of cubic architecture ? (quick, as it is going to be in detailed in chapter 2) +- Explain also the link with the setpoint: it is interesting to have the controller in the frame of the performance variables + Also speak about disturbances? (and how disturbances can be mixed to different outputs due to control and interaction) +- Table that summarizes the trade-off for each strategy +- Say that in this study, we will do the control in the frame of the struts for simplicity (even though control in the cartesian frame was also tested) + +** Active Damping with Decentralized IFF +<> + +Guaranteed stability: [[cite:&preumont08_trans_zeros_struc_contr_with]] +- [ ] I think there is another paper about that + +For decentralized control: "MIMO root locus" can be used to estimate the damping / optimal gain +Poles and converging towards /transmission zeros/ + +How to optimize the added damping to all modes? +- [ ] Add some papers citations + +Compute: +- [ ] Plant dynamics +- [ ] Root Locus + +** MIMO High-Authority Control - Low-Authority Control +<> + +Compute: +- [ ] compare open-loop and damped plant (outputs are the encoders) +- [ ] Implement decentralized control? +- [ ] Check stability: + - Characteristic Loci: Eigenvalues of $G(j\omega)$ plotted in the complex plane + - Generalized Nyquist Criterion: If $G(s)$ has $p_0$ unstable poles, then the closed-loop system with return ratio $kG(s)$ is stable if and only if the characteristic loci of $kG(s)$, taken together, encircle the point $-1$, $p_0$ times anti-clockwise, assuming there are no hidden modes +- [ ] Show some performance metric? For instance compliance? + +** Conclusion +:PROPERTIES: +:UNNUMBERED: t +:END: + + * Conclusion -<> +:PROPERTIES: +:UNNUMBERED: t +:END: +<> + +- Configurable Stewart platform model +- Will be included in the multi-body model of the micro-station => nass multi body model +- Control: complex problem, try to use simplest architecture * Bibliography :ignore: #+latex: \printbibliography[heading=bibintoc,title={Bibliography}]