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/figs/detail_design_apa.pdf b/figs/detail_design_apa.pdf new file mode 100644 index 0000000..a7aa862 Binary files /dev/null and b/figs/detail_design_apa.pdf differ diff --git a/figs/detail_design_apa.png b/figs/detail_design_apa.png new file mode 100644 index 0000000..fc27d40 Binary files /dev/null and b/figs/detail_design_apa.png differ diff --git a/figs/detail_design_apa_mod.jpg b/figs/detail_design_apa_mod.jpg new file mode 100644 index 0000000..613fbf7 Binary files /dev/null and b/figs/detail_design_apa_mod.jpg differ diff --git a/figs/detail_design_enc_plates.jpg b/figs/detail_design_enc_plates.jpg new file mode 100644 index 0000000..c53f725 Binary files /dev/null and b/figs/detail_design_enc_plates.jpg differ diff --git a/figs/detail_design_enc_struts.jpg b/figs/detail_design_enc_struts.jpg new file mode 100644 index 0000000..ecc6ddf Binary files /dev/null and b/figs/detail_design_enc_struts.jpg differ diff --git a/figs/detail_design_encoders_plates.jpg b/figs/detail_design_encoders_plates.jpg new file mode 100644 index 0000000..964a2cf Binary files /dev/null and b/figs/detail_design_encoders_plates.jpg differ diff --git a/figs/detail_design_fem_encoder_fix.pdf b/figs/detail_design_fem_encoder_fix.pdf new file mode 100644 index 0000000..fe98199 Binary files /dev/null and b/figs/detail_design_fem_encoder_fix.pdf differ diff --git a/figs/detail_design_fem_encoder_fix.png b/figs/detail_design_fem_encoder_fix.png new file mode 100644 index 0000000..66b9481 Binary files /dev/null and b/figs/detail_design_fem_encoder_fix.png differ diff --git a/figs/detail_design_fem_plate_mode.jpg b/figs/detail_design_fem_plate_mode.jpg new file mode 100644 index 0000000..c7eb0bf Binary files /dev/null and b/figs/detail_design_fem_plate_mode.jpg differ diff --git a/figs/detail_design_fem_rigid_body_mode.jpg b/figs/detail_design_fem_rigid_body_mode.jpg new file mode 100644 index 0000000..f6aa0d0 Binary files /dev/null and b/figs/detail_design_fem_rigid_body_mode.jpg differ diff --git a/figs/detail_design_fem_strut_mode.jpg b/figs/detail_design_fem_strut_mode.jpg new file mode 100644 index 0000000..f23261d Binary files /dev/null and b/figs/detail_design_fem_strut_mode.jpg differ diff --git a/figs/detail_design_fixation_flexible_joints.pdf b/figs/detail_design_fixation_flexible_joints.pdf new file mode 100644 index 0000000..8c806f7 Binary files /dev/null and b/figs/detail_design_fixation_flexible_joints.pdf differ diff --git a/figs/detail_design_fixation_flexible_joints.png b/figs/detail_design_fixation_flexible_joints.png new file mode 100644 index 0000000..9c348bf Binary files /dev/null and b/figs/detail_design_fixation_flexible_joints.png differ diff --git a/figs/detail_design_flexible_joint-crop.jpg b/figs/detail_design_flexible_joint-crop.jpg new file mode 100644 index 0000000..b1d7644 Binary files /dev/null and b/figs/detail_design_flexible_joint-crop.jpg differ diff --git a/figs/detail_design_flexible_joint.pdf b/figs/detail_design_flexible_joint.pdf new file mode 100644 index 0000000..6777c27 Binary files /dev/null and b/figs/detail_design_flexible_joint.pdf differ diff --git a/figs/detail_design_flexible_joint.png b/figs/detail_design_flexible_joint.png new file mode 100644 index 0000000..bed8412 Binary files /dev/null and b/figs/detail_design_flexible_joint.png differ diff --git a/figs/detail_design_location_bot_flex.pdf b/figs/detail_design_location_bot_flex.pdf new file mode 100644 index 0000000..2630090 Binary files /dev/null and b/figs/detail_design_location_bot_flex.pdf differ diff --git a/figs/detail_design_location_bot_flex.png b/figs/detail_design_location_bot_flex.png new file mode 100644 index 0000000..95bb38d Binary files /dev/null and b/figs/detail_design_location_bot_flex.png differ diff --git a/figs/detail_design_location_top_flexible_joints.pdf b/figs/detail_design_location_top_flexible_joints.pdf new file mode 100644 index 0000000..99f4187 Binary files /dev/null and b/figs/detail_design_location_top_flexible_joints.pdf differ diff --git a/figs/detail_design_location_top_flexible_joints.png b/figs/detail_design_location_top_flexible_joints.png new file mode 100644 index 0000000..8eca814 Binary files /dev/null and b/figs/detail_design_location_top_flexible_joints.png differ diff --git a/figs/detail_design_nano_hexapod_elements.pdf b/figs/detail_design_nano_hexapod_elements.pdf new file mode 100644 index 0000000..4870349 Binary files /dev/null and b/figs/detail_design_nano_hexapod_elements.pdf differ diff --git a/figs/detail_design_nano_hexapod_elements.png b/figs/detail_design_nano_hexapod_elements.png new file mode 100644 index 0000000..4137e69 Binary files /dev/null and b/figs/detail_design_nano_hexapod_elements.png differ diff --git a/figs/detail_design_simscape_encoder.pdf b/figs/detail_design_simscape_encoder.pdf new file mode 100644 index 0000000..3d1ac7a Binary files /dev/null and b/figs/detail_design_simscape_encoder.pdf differ diff --git a/figs/detail_design_simscape_encoder.png b/figs/detail_design_simscape_encoder.png new file mode 100644 index 0000000..28bc8d1 Binary files /dev/null and b/figs/detail_design_simscape_encoder.png differ diff --git a/figs/detail_design_simscape_encoder_disp.pdf b/figs/detail_design_simscape_encoder_disp.pdf new file mode 100644 index 0000000..677694a Binary files /dev/null and b/figs/detail_design_simscape_encoder_disp.pdf differ diff --git a/figs/detail_design_simscape_encoder_disp.png b/figs/detail_design_simscape_encoder_disp.png new file mode 100644 index 0000000..d380ca8 Binary files /dev/null and b/figs/detail_design_simscape_encoder_disp.png differ diff --git a/figs/detail_design_simscape_encoder_plates.pdf b/figs/detail_design_simscape_encoder_plates.pdf new file mode 100644 index 0000000..4d7ead5 Binary files /dev/null and b/figs/detail_design_simscape_encoder_plates.pdf differ diff --git a/figs/detail_design_simscape_encoder_plates.png b/figs/detail_design_simscape_encoder_plates.png new file mode 100644 index 0000000..52a02c5 Binary files /dev/null and b/figs/detail_design_simscape_encoder_plates.png differ diff --git a/figs/detail_design_simscape_encoder_struts.pdf b/figs/detail_design_simscape_encoder_struts.pdf new file mode 100644 index 0000000..2a1654b Binary files /dev/null and b/figs/detail_design_simscape_encoder_struts.pdf differ diff --git a/figs/detail_design_simscape_encoder_struts.png b/figs/detail_design_simscape_encoder_struts.png new file mode 100644 index 0000000..f4f728e Binary files /dev/null and b/figs/detail_design_simscape_encoder_struts.png differ diff --git a/figs/detail_design_simscape_model_flexible_joint.pdf b/figs/detail_design_simscape_model_flexible_joint.pdf new file mode 100644 index 0000000..4fbb30f Binary files /dev/null and b/figs/detail_design_simscape_model_flexible_joint.pdf differ diff --git a/figs/detail_design_simscape_model_flexible_joint.png b/figs/detail_design_simscape_model_flexible_joint.png new file mode 100644 index 0000000..b38b350 Binary files /dev/null and b/figs/detail_design_simscape_model_flexible_joint.png differ diff --git a/figs/detail_design_strut_with_enc.jpg b/figs/detail_design_strut_with_enc.jpg new file mode 100644 index 0000000..75329a9 Binary files /dev/null and b/figs/detail_design_strut_with_enc.jpg differ diff --git a/figs/detail_design_strut_without_enc.jpg b/figs/detail_design_strut_without_enc.jpg new file mode 100644 index 0000000..39797d8 Binary files /dev/null and b/figs/detail_design_strut_without_enc.jpg differ diff --git a/figs/detail_design_top_plate.pdf b/figs/detail_design_top_plate.pdf new file mode 100644 index 0000000..0217f3f Binary files /dev/null and b/figs/detail_design_top_plate.pdf differ diff --git a/figs/detail_design_top_plate.png b/figs/detail_design_top_plate.png new file mode 100644 index 0000000..a4e150d Binary files /dev/null and b/figs/detail_design_top_plate.png differ diff --git a/figs/inkscape/convert_svg.sh b/figs/inkscape/convert_svg.sh new file mode 100755 index 0000000..c9c1755 --- /dev/null +++ b/figs/inkscape/convert_svg.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# Directory containing SVG files +INPUT_DIR="." + +# Loop through all SVG files in the directory +for svg_file in "$INPUT_DIR"/*.svg; do + # Check if there are SVG files in the directory + if [ -f "$svg_file" ]; then + # Output PDF file name + pdf_file="../${svg_file%.svg}.pdf" + png_file="../${svg_file%.svg}" + + # Convert SVG to PDF using Inkscape + inkscape "$svg_file" --export-filename="$pdf_file" && \ + pdftocairo -png -singlefile -cropbox "$pdf_file" "$png_file" + fi +done diff --git a/figs/inkscape/detail_design_apa.svg b/figs/inkscape/detail_design_apa.svg new file mode 100644 index 0000000..96d4656 --- /dev/null +++ b/figs/inkscape/detail_design_apa.svg @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + JointInterface + + + diff --git a/figs/inkscape/detail_design_fem_encoder_fix.svg b/figs/inkscape/detail_design_fem_encoder_fix.svg new file mode 100644 index 0000000..8f22132 --- /dev/null +++ b/figs/inkscape/detail_design_fem_encoder_fix.svg @@ -0,0 +1,129 @@ + + + +1120 Hz2020 Hz2080 Hz diff --git a/figs/inkscape/detail_design_fixation_flexible_joints.svg b/figs/inkscape/detail_design_fixation_flexible_joints.svg new file mode 100644 index 0000000..423ef8b --- /dev/null +++ b/figs/inkscape/detail_design_fixation_flexible_joints.svg @@ -0,0 +1,257 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ReferenceSurfaces + + + + + + + + + + + + + + + diff --git a/figs/inkscape/detail_design_flexible_joint.svg b/figs/inkscape/detail_design_flexible_joint.svg new file mode 100644 index 0000000..66e17e7 --- /dev/null +++ b/figs/inkscape/detail_design_flexible_joint.svg @@ -0,0 +1,213 @@ + + + + + + + + + + + + PlateInterfaceAPAInterface + + + + + + + + + + diff --git a/figs/inkscape/detail_design_location_bot_flex.svg b/figs/inkscape/detail_design_location_bot_flex.svg new file mode 100644 index 0000000..4a2c4f9 --- /dev/null +++ b/figs/inkscape/detail_design_location_bot_flex.svg @@ -0,0 +1,295 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gap + Fixed Orientation + + + + + + + + + + + + + + + + MechanicalStop + + + + diff --git a/figs/inkscape/detail_design_location_top_flexible_joints.svg b/figs/inkscape/detail_design_location_top_flexible_joints.svg new file mode 100644 index 0000000..5b31214 --- /dev/null +++ b/figs/inkscape/detail_design_location_top_flexible_joints.svg @@ -0,0 +1,409 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reference Surface + + + + Fixed Orientation + + + + + + + + + + + + + + + + diff --git a/figs/inkscape/detail_design_nano_hexapod_elements.svg b/figs/inkscape/detail_design_nano_hexapod_elements.svg new file mode 100644 index 0000000..fd93d99 --- /dev/null +++ b/figs/inkscape/detail_design_nano_hexapod_elements.svg @@ -0,0 +1,1049 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Top flexible Joint + AmplifiedPiezoelectricActuator + Encoder + Ruler support + Top plate + Bottom plate + Strut + + + + + + + Bot Flexible Joint + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 95mm + + diff --git a/figs/inkscape/detail_design_simscape_encoder.svg b/figs/inkscape/detail_design_simscape_encoder.svg new file mode 100644 index 0000000..3509b92 --- /dev/null +++ b/figs/inkscape/detail_design_simscape_encoder.svg @@ -0,0 +1,480 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + Encoder + + + + + + + + Ruler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/inkscape/detail_design_simscape_encoder_disp.svg b/figs/inkscape/detail_design_simscape_encoder_disp.svg new file mode 100644 index 0000000..4901c5e --- /dev/null +++ b/figs/inkscape/detail_design_simscape_encoder_disp.svg @@ -0,0 +1,576 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + Encoder + + + + + + Ruler + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/inkscape/detail_design_simscape_model_flexible_joint.svg b/figs/inkscape/detail_design_simscape_model_flexible_joint.svg new file mode 100644 index 0000000..d6bc95b --- /dev/null +++ b/figs/inkscape/detail_design_simscape_model_flexible_joint.svg @@ -0,0 +1,4928 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AxialStiffnessX Bending& TorsionalStiffnessY BendingStiffness + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/figs/inkscape/detail_design_top_plate.svg b/figs/inkscape/detail_design_top_plate.svg new file mode 100644 index 0000000..c108b66 --- /dev/null +++ b/figs/inkscape/detail_design_top_plate.svg @@ -0,0 +1,171 @@ + + + +JointInterfaceReinforcementEncoderInterface diff --git a/nass-design.org b/nass-design.org index 43a68a4..50968c4 100644 --- a/nass-design.org +++ b/nass-design.org @@ -15,13 +15,14 @@ #+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{nass-design.bib} #+BIND: org-latex-bib-compiler "biber" #+PROPERTY: header-args:matlab :session *MATLAB* -#+PROPERTY: header-args:matlab+ :comments org +#+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 @@ -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,59 +91,416 @@ #+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 -- Table some pictures from here: [[file:~/Cloud/work-projects/ID31-NASS/matlab/nass-nano-hexapod-assembly/nass-nano-hexapod-assembly.org][nass-nano-hexapod-assembly]] - 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? -#+name: tab:nass_design_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:nass_design_ | =nass_design_1_.m= | +* Mechanical Design +<> + +** 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 -* Amplified Piezoelectric Design +- 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/nass_design_1_.m +:HEADER-ARGS:matlab+: :tangle matlab/detail_design_1_model.m :END: -<> +<> + +*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: -** 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 +Two configurations: +- Encoders fixed to the struts +- Encoders fixed to the plates -#+begin_src matlab :exports none :results silent :noweb yes -<> -#+end_src +#+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 -#+begin_src matlab :tangle no :noweb yes -<> -#+end_src -#+begin_src matlab :eval no :noweb yes -<> -#+end_src +** 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 -#+begin_src matlab :noweb yes -<> -#+end_src * Conclusion -<> +<> * Bibliography :ignore: #+latex: \printbibliography[heading=bibintoc,title={Bibliography}] diff --git a/nass-design.pdf b/nass-design.pdf index 0e3df68..59357be 100644 Binary files a/nass-design.pdf and b/nass-design.pdf differ diff --git a/nass-design.tex b/nass-design.tex index 6dc843c..e7422d6 100644 --- a/nass-design.tex +++ b/nass-design.tex @@ -1,8 +1,9 @@ -% Created 2024-03-19 Tue 11:13 +% Created 2025-04-21 Mon 16:49 % Intended LaTeX compiler: pdflatex \documentclass[a4paper, 10pt, DIV=12, parskip=full, bibliography=totoc]{scrreprt} \input{preamble.tex} +\input{preamble_extra.tex} \bibliography{nass-design.bib} \author{Dehaeze Thomas} \date{\today} @@ -12,7 +13,7 @@ pdftitle={Nano Hexapod - Obtained Design}, pdfkeywords={}, pdfsubject={}, - pdfcreator={Emacs 29.2 (Org mode 9.7)}, + pdfcreator={Emacs 30.1 (Org mode 9.7.26)}, pdflang={English}} \usepackage{biblatex} @@ -22,33 +23,250 @@ \tableofcontents \clearpage +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_design_nano_hexapod_elements.png} +\caption{\label{fig:detail_design_nano_hexapod_elements}Obtained mechanical design of the Active platform, the ``nano-hexapod''} +\end{figure} + + +\textbf{Design goals}: +\begin{itemize} +\item Position \texttt{bi} and \texttt{si} +\item Maximum height of 95mm +\item As close as possible to ``perfect'' stewart platform: flexible modes at high frequency +\item Easy mounting, easy change of strut in case of failure +\end{itemize} + + Presentation of the obtained design: \begin{itemize} \item Fixation +\item Section on: Complete strut \item Cable management \item Plates design \item FEM results -\item Table some pictures from here: \href{file:///home/thomas/Cloud/work-projects/ID31-NASS/matlab/nass-nano-hexapod-assembly/nass-nano-hexapod-assembly.org}{nass-nano-hexapod-assembly} \item Explain again the different specifications in terms of space, payload, etc.. \item CAD view of the nano-hexapod \item Chosen geometry, materials, ease of mounting, cabling, \ldots{} \item Validation on Simscape with accurate model? \end{itemize} +\chapter{Mechanical Design} +\label{sec:detail_design_mechanics} +\section{Struts} +\begin{figure}[htbp] +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_design_strut_without_enc.jpg} +\end{center} +\subcaption{\label{fig:detail_design_strut_without_enc}Before encoder integration} +\end{subfigure} +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_design_strut_with_enc.jpg} +\end{center} +\subcaption{\label{fig:detail_design_strut_with_enc}With the mounted encoder} +\end{subfigure} +\caption{\label{fig:detail_design_strut}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.} +\end{figure} +\subsubsection{Flexible joints} -\begin{table}[htbp] -\caption{\label{tab:nass_design_section_matlab_code}Report sections and corresponding Matlab files} +Flexible joints: X5CrNiCuNb16-4 (F16Ph) +\begin{itemize} +\item high yield strength: specified >1GPa using heat treatment +\item high fatigue resistance +\end{itemize} + +\begin{figure}[htbp] +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,scale=1]{figs/detail_design_apa.png} +\end{center} +\subcaption{\label{fig:detail_design_apa}Amplified Piezoelectric Actuator} +\end{subfigure} +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,scale=1]{figs/detail_design_flexible_joint.png} +\end{center} +\subcaption{\label{fig:detail_design_flexible_joint}Flexible joint} +\end{subfigure} +\caption{\label{fig:detail_design_apa_joints}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}).} +\end{figure} +\subsubsection{Piezoelectric Amplified Actuators} + +APA: modification for better mounting +\subsubsection{Encoder support} + +All other parts are made of aluminum. +\section{Plates} + +Plates: X30Cr13 +\begin{itemize} +\item high hardness to not deform +\end{itemize} + + +\begin{itemize} +\item Maximize frequency of flexible modes (show FEM) +\item Good tolerances for interfaces with flexible joints +Positioning of \texttt{bi} and orientation \texttt{si} +\end{itemize} + +\begin{figure}[htbp] \centering -\begin{tabularx}{0.6\linewidth}{lX} -\toprule -\textbf{Sections} & \textbf{Matlab File}\\ -\midrule -Section \ref{sec:nass_design}\_ & \texttt{nass\_design\_1\_.m}\\ -\bottomrule -\end{tabularx} -\end{table} -\chapter{Amplified Piezoelectric Design} -\label{sec:nass_design_mechanics} +\includegraphics[scale=1,scale=1]{figs/detail_design_top_plate.png} +\caption{\label{fig:detail_design_top_plate}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.} +\end{figure} + +The cylindrical component is located (or constrained) within the V-groove via two distinct line contacts. + +\begin{figure} +\begin{subfigure}{0.33\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.99\linewidth]{figs/detail_design_fixation_flexible_joints.png} +\end{center} +\subcaption{\label{fig:detail_design_fixation_flexible_joints}Flexible Joint Clamping} +\end{subfigure} +\begin{subfigure}{0.33\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.99\linewidth]{figs/detail_design_location_top_flexible_joints.png} +\end{center} +\subcaption{\label{fig:detail_design_location_top_flexible_joints}Top positioning} +\end{subfigure} +\begin{subfigure}{0.33\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.99\linewidth]{figs/detail_design_location_bot_flex.png} +\end{center} +\subcaption{\label{fig:detail_design_location_bot_flex}Bottom Positioning} +\end{subfigure} +\caption{\label{fig:detail_design_fixation_flexible_joints}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}).} +\end{figure} +\section{Finite Element Analysis} + + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,width=0.9\linewidth]{figs/detail_design_enc_struts.jpg} +\caption{\label{fig:detail_design_enc_struts}Obtained Nano-Hexapod design} +\end{figure} + +\begin{itemize} +\item FEM of complete system +\item Show modes of the struts +\end{itemize} + +\begin{figure}[htbp] +\begin{subfigure}{0.33\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.9\linewidth]{figs/detail_design_fem_rigid_body_mode.jpg} +\end{center} +\subcaption{\label{fig:detail_design_fem_rigid_body_mode}Suspension modes} +\end{subfigure} +\begin{subfigure}{0.33\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.9\linewidth]{figs/detail_design_fem_strut_mode.jpg} +\end{center} +\subcaption{\label{fig:detail_design_fem_strut_mode}Strut - Local modes} +\end{subfigure} +\begin{subfigure}{0.33\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.9\linewidth]{figs/detail_design_fem_plate_mode.jpg} +\end{center} +\subcaption{\label{fig:detail_design_fem_plate_mode}Top plate modes} +\end{subfigure} +\caption{\label{fig:detail_design_fem_nano_hexapod}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})} +\end{figure} +\section{Obtained Design} + +\begin{itemize} +\item Alternative encoder position: on the plates +\item Support made of aluminum +\end{itemize} + +\begin{figure}[htbp] +\begin{subfigure}{0.59\textwidth} +\begin{center} +\includegraphics[scale=1,height=5cm]{figs/detail_design_enc_plates.jpg} +\end{center} +\subcaption{\label{fig:detail_design_enc_plates}Nano-Hexapod with encoders fixed to the plates} +\end{subfigure} +\begin{subfigure}{0.39\textwidth} +\begin{center} +\includegraphics[scale=1,height=5cm]{figs/detail_design_encoders_plates.jpg} +\end{center} +\subcaption{\label{fig:detail_design_encoders_plates}Zoom on encoder fixation} +\end{subfigure} +\caption{\label{fig:detail_design_enc_plates_design}Alternative way of using the encoders: they are fixed directly to the plates.} +\end{figure} + + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1]{figs/detail_design_fem_encoder_fix.png} +\caption{\label{fig:detail_design_fem_encoder_fix}Finite Element Analysis of the encoder supports. Encoder inertia was taken into account.} +\end{figure} +\chapter{Multi-Body Model} +\label{sec:detail_design_model} + +\textbf{Multi body Model}: +\begin{itemize} +\item Complete model: two plates, 6 joints, 6 actuators, 6 encoders +\item Joint Model +\item APA Model +\item Encoder model +\item Say that obtained dynamics was considered good + possible to perform simulations of tomography experiments with same performance as during the conceptual design +\end{itemize} + +Two configurations: +\begin{itemize} +\item Encoders fixed to the struts +\item Encoders fixed to the plates +\end{itemize} + +\begin{figure}[htbp] +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_design_simscape_encoder_struts.png} +\end{center} +\subcaption{\label{fig:detail_design_simscape_encoder_struts}Encoders fixed to the struts} +\end{subfigure} +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,width=0.95\linewidth]{figs/detail_design_simscape_encoder_plates.png} +\end{center} +\subcaption{\label{fig:detail_design_simscape_encoder_plates}Encoders fixed to the plates} +\end{subfigure} +\caption{\label{fig:detail_design_simscape_encoder}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}).} +\end{figure} +\section{Flexible Joints} + +\begin{figure}[htbp] +\centering +\includegraphics[scale=1,scale=1]{figs/detail_design_simscape_model_flexible_joint.png} +\caption{\label{fig:detail_design_simscape_model_flexible_joint}Multi-Body (using the Simscape software) model of the flexible joints. A 4-DoFs model is shown.} +\end{figure} +\section{Amplified Piezoelectric Actuators} + + + +\section{Encoders} + +\begin{figure}[htbp] +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,scale=1]{figs/detail_design_simscape_encoder.png} +\end{center} +\subcaption{\label{fig:detail_design_simscape_encoder}Aligned encoder and ruler} +\end{subfigure} +\begin{subfigure}{0.49\textwidth} +\begin{center} +\includegraphics[scale=1,scale=1]{figs/detail_design_simscape_encoder_disp.png} +\end{center} +\subcaption{\label{fig:detail_design_simscape_encoder_disp}Rotation of the encoder head} +\end{subfigure} +\caption{\label{fig:detail_design_simscape_encoder_model}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}).} +\end{figure} \chapter{Conclusion} -\label{sec:nass_design_conclusion} +\label{sec:detail_design_conclusion} \printbibliography[heading=bibintoc,title={Bibliography}] \end{document} 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}