phd-nass-design/nass-design.org
2025-04-21 16:49:23 +02:00

529 lines
20 KiB
Org Mode
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#+TITLE: Nano Hexapod - Obtained Design
:DRAWER:
#+LANGUAGE: en
#+EMAIL: dehaeze.thomas@gmail.com
#+AUTHOR: Dehaeze Thomas
#+HTML_LINK_HOME: ../index.html
#+HTML_LINK_UP: ../index.html
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="https://research.tdehaeze.xyz/css/style.css"/>
#+HTML_HEAD: <script type="text/javascript" src="https://research.tdehaeze.xyz/js/script.js"></script>
#+BIND: org-latex-image-default-option "scale=1"
#+BIND: org-latex-image-default-width ""
#+LaTeX_CLASS: scrreprt
#+LaTeX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]
#+LATEX_HEADER: \input{preamble.tex}
#+LATEX_HEADER_EXTRA: \input{preamble_extra.tex}
#+LATEX_HEADER_EXTRA: \bibliography{nass-design.bib}
#+BIND: org-latex-bib-compiler "biber"
#+PROPERTY: header-args:matlab :session *MATLAB*
#+PROPERTY: header-args:matlab+ :comments no
#+PROPERTY: header-args:matlab+ :exports none
#+PROPERTY: header-args:matlab+ :results none
#+PROPERTY: header-args:matlab+ :eval no-export
#+PROPERTY: header-args:matlab+ :noweb yes
#+PROPERTY: header-args:matlab+ :mkdirp yes
#+PROPERTY: header-args:matlab+ :output-dir figs
#+PROPERTY: header-args:matlab+ :tangle no
#+PROPERTY: header-args: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+ :tangle no
#+PROPERTY: header-args:latex+ :eval no-export
#+PROPERTY: header-args:latex+ :exports results
#+PROPERTY: header-args:latex+ :mkdirp yes
#+PROPERTY: header-args:latex+ :output-dir figs
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
:END:
#+latex: \clearpage
* Build :noexport:
#+NAME: startblock
#+BEGIN_SRC emacs-lisp :results none :tangle no
(add-to-list 'org-latex-classes
'("scrreprt"
"\\documentclass{scrreprt}"
("\\chapter{%s}" . "\\chapter*{%s}")
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
))
;; Remove automatic org heading labels
(defun my-latex-filter-removeOrgAutoLabels (text backend info)
"Org-mode automatically generates labels for headings despite explicit use of `#+LABEL`. This filter forcibly removes all automatically generated org-labels in headings."
(when (org-export-derived-backend-p backend 'latex)
(replace-regexp-in-string "\\\\label{sec:org[a-f0-9]+}\n" "" text)))
(add-to-list 'org-export-filter-headline-functions
'my-latex-filter-removeOrgAutoLabels)
;; Remove all org comments in the output LaTeX file
(defun delete-org-comments (backend)
(loop for comment in (reverse (org-element-map (org-element-parse-buffer)
'comment 'identity))
do
(setf (buffer-substring (org-element-property :begin comment)
(org-element-property :end comment))
"")))
(add-hook 'org-export-before-processing-hook 'delete-org-comments)
;; Use no package by default
(setq org-latex-packages-alist nil)
(setq org-latex-default-packages-alist nil)
;; Do not include the subtitle inside the title
(setq org-latex-subtitle-separate t)
(setq org-latex-subtitle-format "\\subtitle{%s}")
(setq org-export-before-parsing-hook '(org-ref-glossary-before-parsing
org-ref-acronyms-before-parsing))
#+END_SRC
* Notes :noexport:
** Notes
Prefix is =detail_design=
- [ ] Look [[https://gitlab.esrf.fr/dehaeze/nass-fem/-/tree/master?ref_type=heads][here]] for the struts, encoder support, etc...
- [ ] file:~/Cloud/work-projects/ID31-NASS/matlab/nass-simscape/org/nano_hexapod.org
- [ ] Design of the flexible joints
- [ ] Nice pictures: file:/home/thomas/Cloud/work-projects/ID31-NASS/nano-hexapod
- [ ] Mounting of struts is explained later in file:~/Cloud/work-projects/ID31-NASS/phd-thesis-chapters/C3-test-bench-struts/test-bench-struts.org
- [ ] Mounting of hexapod is explained in file:~/Cloud/work-projects/ID31-NASS/phd-thesis-chapters/C4-test-bench-nano-hexapod/test-bench-nano-hexapod.org
*Outline*:
- Design goals:
- Position =bi= and =si=
- Maximum height of 95mm
- As close as possible to "perfect" stewart platform: flexible modes at high frequency
- Summary of specifications
- Easy mounting, easy change of strut in case of failure
- Plates:
- Maximize frequency of flexible modes (show FEM)
- Good tolerances for interfaces with flexible joints
Positioning of =bi= and orientation =si=
- Flexible joints:
- Strut mounting (later described)
- Encoder support:
- Possible to fix them to the struts or to the plates
** TODO [#C] Summary of the specifications
Flexible joints:
- Axial Stiffness
- Bending Stiffness
- Stroke
APA:
- Axial stiffness
Encoders:
- Stroke, Noise
Plates:
- Maximize flexible modes
- Correct positioning of bi and si => precisely know the Jacobian matrix
** TODO [#C] Explain the good wanted flatness for the APA
#+begin_quote
Sur le plan on a une co-planéitée de 0.08mm entre les 2 interfaces (ce
qui est pas très exigent avant la découpe intérieure au fil, mais qui
est pas si évidente que ça si la matière a des contraintes interne). En
plus, ça peut évoluer après collage des piezos (c'est probablement ce
qu'on regardait sur ta photo.)
Je pense qu'on avait demandé ça pour ne pas consommer la course des flex
seulement pour compenser les défauts d'usinage/collage. 20um cétait
vraiment du bon boulot.
Le plans que Damien avait fait du corps de l'APA est en pj si tu veux
illustrer.
#+end_quote
** TODO [#C] Understand why hexapod stiffness (maximizing suspension modes) is often the main design goal
See for instance cite:afzali-far16_vibrat_dynam_isotr_hexap_analy_studies.
Possible reasons:
- ease of designing a controller with bandwidth < first suspension mode
- when controlling <6DoF, above the resonance the "off-axis" motion may be very large even though the "on-axis" is controlled.
Not the case for the following references (control bandwidth > suspension mode):
- cite:hanieh03_activ_stewar
Example of claims that resonances impose limitation to control bandwidth:
From cite:babakhani12_activ_dampin_vibrat_high_precis_motion_system (page i)
#+begin_quote
Speed and accuracy in motion systems can be attained by implementing a high-bandwidth motion controller.
The resonances in the plant transfer impose a limit on the achievable bandwidth of such a controller.
#+end_quote
** DONE [#B] Put all the figure in the document
CLOSED: [2025-04-21 Mon 14:21]
*Design*:
- [X] Overview
[[file:figs/detail_design_nano_hexapod_elements.png]]
- [X] Final design of struts
[[file:figs/detail_design_strut_without_enc.jpg]]
[[file:figs/detail_design_strut_with_enc.jpg]]
- [X] Modification of APA300ML for easier mounting purposes
[[file:figs/detail_design_apa_mod.jpg]]
- [X] Plate design
[[file:figs/detail_design_top_plate.jpg]]
- [X] Design of plates for positioning struts
[[file:figs/detail_design_fixation_flexible_joints.png]]
[[file:figs/detail_design_location_bot_flex.png]]
[[file:figs/detail_design_location_top_flexible_joints.png]]
- [X] Design of Flexible joints for fixation to the plates / precise positioning of center of rotation
[[file:figs/detail_design_specifications_flexible_joints.png]]
- [X] Encoder on plates
[[file:figs/detail_design_encoders_plates.jpg]]
[[file:figs/detail_design_enc_plates.jpg]]
- [X] Encoder on struts
[[file:figs/detail_design_enc_struts.jpg]]
*FEM*:
- [X] FEM of nano-hexapod: rigid body modes
[[file:figs/detail_design_fem_rigid_body_mode.jpg]]
- [X] FEM of struts => maybe issue with encoder => several options
[[file:figs/detail_design_fem_strut_mode.jpg]]
- [X] FEM of plates
[[file:figs/detail_design_fem_plate_mode.jpg]]
- [X] FEM of encoder support
[[file:figs/detail_design_fem_encoder_fix.png]]
*Multi-Body Model*:
- [X] Joint Model
[[file:figs/detail_design_simscape_model_flexible_joint.png]]
- [X] Encoder model
[[file:figs/detail_design_simscape_encoder.png]]
[[file:figs/detail_design_simscape_encoder_disp.png]]
- [X] Screenshot of Simscape Model
[[file:figs/detail_design_simscape_encoder_plates.png]]
[[file:figs/detail_design_simscape_encoder_struts.png]]
20 figures
** DONE [#A] Make detailed outline
CLOSED: [2025-04-21 Mon 14:13]
- *Design goals*:
- Position =bi= and =si=
- Maximum height of 95mm
- As close as possible to "perfect" stewart platform: flexible modes at high frequency
- Easy mounting, easy change of strut in case of failure
- *Mechanical Design*
- Struts:
- Flexible joints: interface with plates, etc..
- APA: modification for better mounting
- Encoder support:
- Plates:
- Maximize frequency of flexible modes (show FEM)
- Good tolerances for interfaces with flexible joints
Positioning of =bi= and orientation =si=
- Obtained design:
- FEM of complete system
- Show modes of the struts
- Alternative encoder position: on the plates
- *Multi body Model*:
- Complete model: two plates, 6 joints, 6 actuators, 6 encoders
- Joint Model
- APA Model
- Encoder model
- Say that obtained dynamics was considered good + possible to perform simulations of tomography experiments with same performance as during the conceptual design
* Introduction :ignore:
#+name: fig:detail_design_nano_hexapod_elements
#+caption: Obtained mechanical design of the Active platform, the "nano-hexapod"
#+attr_latex: :width 0.95\linewidth
[[file:figs/detail_design_nano_hexapod_elements.png]]
*Design goals*:
- Position =bi= and =si=
- Maximum height of 95mm
- As close as possible to "perfect" stewart platform: flexible modes at high frequency
- Easy mounting, easy change of strut in case of failure
Presentation of the obtained design:
- Fixation
- Section on: Complete strut
- Cable management
- Plates design
- FEM results
- Explain again the different specifications in terms of space, payload, etc..
- CAD view of the nano-hexapod
- Chosen geometry, materials, ease of mounting, cabling, ...
- Validation on Simscape with accurate model?
* Mechanical Design
<<sec:detail_design_mechanics>>
** Struts
**** Introduction :ignore:
#+name: fig:detail_design_strut
#+caption: Design of the Nano-Hexapod struts. Before (\subref{fig:detail_design_strut_without_enc}) and after (\subref{fig:detail_design_strut_with_enc}) encoder integration.
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_strut_without_enc}Before encoder integration}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.95\linewidth
[[file:figs/detail_design_strut_without_enc.jpg]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_strut_with_enc}With the mounted encoder}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.95\linewidth
[[file:figs/detail_design_strut_with_enc.jpg]]
#+end_subfigure
#+end_figure
**** Flexible joints
Flexible joints: X5CrNiCuNb16-4 (F16Ph)
- high yield strength: specified >1GPa using heat treatment
- high fatigue resistance
#+name: fig:detail_design_apa_joints
#+caption: Two main components of the struts: the amplified piezoelectric actuator (\subref{fig:detail_design_apa}) and the flexible joint (\subref{fig:detail_design_flexible_joint}).
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_apa}Amplified Piezoelectric Actuator}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :scale 1
[[file:figs/detail_design_apa.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_flexible_joint}Flexible joint}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :scale 1
[[file:figs/detail_design_flexible_joint.png]]
#+end_subfigure
#+end_figure
**** Piezoelectric Amplified Actuators
APA: modification for better mounting
**** Encoder support
All other parts are made of aluminum.
** Plates
Plates: X30Cr13
- high hardness to not deform
- Maximize frequency of flexible modes (show FEM)
- Good tolerances for interfaces with flexible joints
Positioning of =bi= and orientation =si=
#+name: fig:detail_design_top_plate
#+caption: The mechanical design for the top platform incorporates precisely positioned V-grooves for the joint interfaces (displayed in red). The purpose of the encoder interface (shown in green) is detailed later.
#+attr_latex: :scale 1
[[file:figs/detail_design_top_plate.png]]
The cylindrical component is located (or constrained) within the V-groove via two distinct line contacts.
#+name: fig:detail_design_fixation_flexible_joints
#+caption: Fixation of the flexible points to the nano-hexapod plates. Both top and bottom flexible joints are clamped to the plates as shown in (\subref{fig:detail_design_fixation_flexible_joints}). While the top flexible joint is in contact with the top plate for precise positioning of its center of rotation (\subref{fig:detail_design_location_top_flexible_joints}), the bottom joint is just oriented (\subref{fig:detail_design_location_bot_flex}).
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_fixation_flexible_joints}Flexible Joint Clamping}
#+attr_latex: :options {0.33\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.99\linewidth
[[file:figs/detail_design_fixation_flexible_joints.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_location_top_flexible_joints}Top positioning}
#+attr_latex: :options {0.33\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.99\linewidth
[[file:figs/detail_design_location_top_flexible_joints.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_location_bot_flex}Bottom Positioning}
#+attr_latex: :options {0.33\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.99\linewidth
[[file:figs/detail_design_location_bot_flex.png]]
#+end_subfigure
#+end_figure
** Finite Element Analysis
#+name: fig:detail_design_enc_struts
#+caption: Obtained Nano-Hexapod design
#+attr_latex: :width 0.9\linewidth
[[file:figs/detail_design_enc_struts.jpg]]
- FEM of complete system
- Show modes of the struts
#+name: fig:detail_design_fem_nano_hexapod
#+caption: Measurement of strut flexible modes. First six modes are "suspension" modes in which the top plate behaves as a rigid body (\subref{fig:detail_design_fem_rigid_body_mode}). Then modes of the struts have natural frequencies from $205\,\text{Hz}$ to $420\,\text{Hz}$ (\subref{fig:detail_design_fem_strut_mode}). Finally, the first flexible mode of the top plate is at $650\,\text{Hz}$ (\subref{fig:detail_design_fem_plate_mode})
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_fem_rigid_body_mode}Suspension modes}
#+attr_latex: :options {0.33\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.9\linewidth
[[file:figs/detail_design_fem_rigid_body_mode.jpg]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_fem_strut_mode}Strut - Local modes}
#+attr_latex: :options {0.33\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.9\linewidth
[[file:figs/detail_design_fem_strut_mode.jpg]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_fem_plate_mode}Top plate modes}
#+attr_latex: :options {0.33\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.9\linewidth
[[file:figs/detail_design_fem_plate_mode.jpg]]
#+end_subfigure
#+end_figure
** Obtained Design
- Alternative encoder position: on the plates
- Support made of aluminum
#+name: fig:detail_design_enc_plates_design
#+caption: Alternative way of using the encoders: they are fixed directly to the plates.
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_enc_plates}Nano-Hexapod with encoders fixed to the plates}
#+attr_latex: :options {0.59\textwidth}
#+begin_subfigure
#+attr_latex: :height 5cm
[[file:figs/detail_design_enc_plates.jpg]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_encoders_plates}Zoom on encoder fixation}
#+attr_latex: :options {0.39\textwidth}
#+begin_subfigure
#+attr_latex: :height 5cm
[[file:figs/detail_design_encoders_plates.jpg]]
#+end_subfigure
#+end_figure
#+name: fig:detail_design_fem_encoder_fix
#+caption: Finite Element Analysis of the encoder supports. Encoder inertia was taken into account.
[[file:figs/detail_design_fem_encoder_fix.png]]
* Multi-Body Model
:PROPERTIES:
:HEADER-ARGS:matlab+: :tangle matlab/detail_design_1_model.m
:END:
<<sec:detail_design_model>>
*Multi body Model*:
- Complete model: two plates, 6 joints, 6 actuators, 6 encoders
- Joint Model
- APA Model
- Encoder model
- Say that obtained dynamics was considered good + possible to perform simulations of tomography experiments with same performance as during the conceptual design
** Introduction :ignore:
Two configurations:
- Encoders fixed to the struts
- Encoders fixed to the plates
#+name: fig:detail_design_simscape_encoder
#+caption: 3D representation of the multi-body model. There are two configurations: encoders fixed to the struts (\subref{fig:detail_design_simscape_encoder_struts}) and encoders fixed to the plates (\subref{fig:detail_design_simscape_encoder_plates}).
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_simscape_encoder_struts}Encoders fixed to the struts}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.95\linewidth
[[file:figs/detail_design_simscape_encoder_struts.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_simscape_encoder_plates}Encoders fixed to the plates}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :width 0.95\linewidth
[[file:figs/detail_design_simscape_encoder_plates.png]]
#+end_subfigure
#+end_figure
** Flexible Joints
#+name: fig:detail_design_simscape_model_flexible_joint
#+caption: Multi-Body (using the Simscape software) model of the flexible joints. A 4-DoFs model is shown.
#+attr_latex: :scale 1
[[file:figs/detail_design_simscape_model_flexible_joint.png]]
** Amplified Piezoelectric Actuators
** Encoders
#+name: fig:detail_design_simscape_encoder_model
#+caption: Representation of the encoder model in the multi-body model. Measurement $d_i$ corresponds to the $x$ position of the encoder frame $\{E\}$ expresssed in the ruller frame $\{R\}$ (\subref{fig:detail_design_simscape_encoder}). A rotation of the encoder therefore induces a measured displacement (\subref{fig:detail_design_simscape_encoder_disp}).
#+attr_latex: :options [htbp]
#+begin_figure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_simscape_encoder}Aligned encoder and ruler}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :scale 1
[[file:figs/detail_design_simscape_encoder.png]]
#+end_subfigure
#+attr_latex: :caption \subcaption{\label{fig:detail_design_simscape_encoder_disp}Rotation of the encoder head}
#+attr_latex: :options {0.49\textwidth}
#+begin_subfigure
#+attr_latex: :scale 1
[[file:figs/detail_design_simscape_encoder_disp.png]]
#+end_subfigure
#+end_figure
* Conclusion
<<sec:detail_design_conclusion>>
* Bibliography :ignore:
#+latex: \printbibliography[heading=bibintoc,title={Bibliography}]
* Helping Functions :noexport:
** Initialize Path
#+NAME: m-init-path
#+BEGIN_SRC matlab
%% Path for functions, data and scripts
addpath('./matlab/mat/'); % Path for data
addpath('./matlab/'); % Path for scripts
#+END_SRC
#+NAME: m-init-path-tangle
#+BEGIN_SRC matlab
%% Path for functions, data and scripts
addpath('./mat/'); % Path for data
#+END_SRC
** Initialize other elements
#+NAME: m-init-other
#+BEGIN_SRC matlab
%% Colors for the figures
colors = colororder;
#+END_SRC