Add few figures + tikz config
@ -1,10 +1,14 @@
|
|||||||
#+TITLE: MECHATRONICS APPROACH FOR THE DEVELOPMENT OF A NANO-ACTIVE-STABILIZATION-SYSTEM
|
#+TITLE: MECHATRONICS APPROACH FOR THE DEVELOPMENT OF A NANO-ACTIVE-STABILIZATION-SYSTEM
|
||||||
:DRAWER:
|
:DRAWER:
|
||||||
#+LATEX_CLASS: jacow
|
#+LATEX_CLASS: jacow
|
||||||
#+LaTeX_CLASS_OPTIONS: [a4paper, keeplastbox, biblatex]
|
#+LATEX_CLASS_OPTIONS: [a4paper, keeplastbox, biblatex]
|
||||||
#+OPTIONS: toc:nil
|
#+OPTIONS: toc:nil
|
||||||
#+STARTUP: overview
|
#+STARTUP: overview
|
||||||
|
|
||||||
|
#+BIND: org-latex-default-packages-alist nil
|
||||||
|
#+BIND: org-latex-packages-alist nil
|
||||||
|
#+BIND: org-latex-with-hyperref nil
|
||||||
|
|
||||||
#+DATE: {{{time(%Y-%m-%d)}}}
|
#+DATE: {{{time(%Y-%m-%d)}}}
|
||||||
#+AUTHOR: T. Dehaeze\textsuperscript{1,}\thanks{thomas.dehaeze@esrf.fr}, J. Bonnefoy, ESRF, Grenoble, France
|
#+AUTHOR: T. Dehaeze\textsuperscript{1,}\thanks{thomas.dehaeze@esrf.fr}, J. Bonnefoy, ESRF, Grenoble, France
|
||||||
#+AUTHOR: @@latex:\\@@
|
#+AUTHOR: @@latex:\\@@
|
||||||
@ -12,12 +16,13 @@
|
|||||||
#+AUTHOR: @@latex:\\@@
|
#+AUTHOR: @@latex:\\@@
|
||||||
#+AUTHOR: \textsuperscript{1}also at Precision Mechatronics Laboratory, University of Liege, Belgium
|
#+AUTHOR: \textsuperscript{1}also at Precision Mechatronics Laboratory, University of Liege, Belgium
|
||||||
|
|
||||||
#+LaTeX_HEADER: \usepackage{pdfpages,multirow,ragged2e}
|
#+LATEX_HEADER: \usepackage{pdfpages,multirow,ragged2e}
|
||||||
#+LaTeX_HEADER: \usepackage{graphicx,tabularx,booktabs}
|
#+LATEX_HEADER: \usepackage{graphicx,tabularx,booktabs}
|
||||||
#+LaTeX_HEADER: \usepackage{blindtext}
|
#+LATEX_HEADER: \usepackage{blindtext}
|
||||||
#+LaTeX_HEADER: \usepackage[USenglish]{babel}
|
#+LATEX_HEADER: \usepackage[USenglish]{babel}
|
||||||
#+LaTeX_HEADER: \addbibresource{ref.bib}
|
#+LATEX_HEADER: \setcounter{footnote}{1}
|
||||||
#+LaTeX_HEADER: \setcounter{footnote}{1}
|
#+LATEX_HEADER_EXTRA: \usepackage[colorlinks=true, allcolors=blue]{hyperref}
|
||||||
|
#+LATEX_HEADER_EXTRA: \addbibresource{ref.bib}
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
* BUILD :noexport:
|
* BUILD :noexport:
|
||||||
@ -32,9 +37,6 @@
|
|||||||
("\\paragraph{%s}" . "\\paragraph*{%s}")
|
("\\paragraph{%s}" . "\\paragraph*{%s}")
|
||||||
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
|
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
|
||||||
)
|
)
|
||||||
(setq org-latex-packages-alist nil)
|
|
||||||
(setq org-latex-default-packages-alist nil)
|
|
||||||
(setq org-latex-with-hyperref nil)
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* ABSTRACT :ignore:
|
* ABSTRACT :ignore:
|
||||||
@ -52,7 +54,40 @@ Further tests should be done in order to confirm that the performances of the sy
|
|||||||
The presented development approach is foreseen to be applied more frequently to future mechatronic system design at the ESRF.
|
The presented development approach is foreseen to be applied more frequently to future mechatronic system design at the ESRF.
|
||||||
#+END_abstract
|
#+END_abstract
|
||||||
|
|
||||||
|
* INTRODUCTION
|
||||||
|
|
||||||
|
See cite:dehaeze18_sampl_stabil_for_tomog_exper.
|
||||||
|
|
||||||
|
* MECHATRONIC APPROACH
|
||||||
|
|
||||||
|
#+name: fig:nass_concept_schematic
|
||||||
|
#+attr_latex: :scale 1
|
||||||
|
#+caption: Nano Active Stabilization System - Schematic representation. 1) micro-station, 2) nano-hexapod, 3) sample, 4) metrology system
|
||||||
|
[[file:figs/nass_concept_schematic.pdf]]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#+name: fig:nass_mechatronics_approach
|
||||||
|
#+attr_latex: :float multicolumn :width \linewidth
|
||||||
|
#+caption: Overview of the mechatronic approach
|
||||||
|
[[file:figs/nass_mechatronics_approach.pdf]]
|
||||||
|
|
||||||
|
* NANO-HEXAPOD DESIGN
|
||||||
|
|
||||||
|
#+name: fig:nano_hexapod_elements
|
||||||
|
#+attr_latex: :float multicolumn :width \linewidth
|
||||||
|
#+caption: CAD view of the nano-hexapod with key elements
|
||||||
|
[[file:figs/nano_hexapod_elements.pdf]]
|
||||||
|
|
||||||
|
* TEST-BENCHES
|
||||||
|
|
||||||
|
#+name: fig:nass_hac_lac_schematic
|
||||||
|
#+attr_latex: :float multicolumn :width \linewidth
|
||||||
|
#+caption: HAC-LAC Strategy - Block Diagram
|
||||||
|
[[file:figs/nass_hac_lac_schematic.pdf]]
|
||||||
|
|
||||||
* CONCLUSION
|
* CONCLUSION
|
||||||
|
|
||||||
* ACKNOWLEDGMENTS
|
* ACKNOWLEDGMENTS
|
||||||
This research was made possible by a grant from the FRIA.
|
This research was made possible by a grant from the FRIA.
|
||||||
We thank the following people for their support, without whose help this work would never have been possible: V. Honkimaki, L. Ducotte and M. Lessourd and the whole team of the Precision Mechatronic Laboratory.
|
We thank the following people for their support, without whose help this work would never have been possible: V. Honkimaki, L. Ducotte and M. Lessourd and the whole team of the Precision Mechatronic Laboratory.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
% Created 2021-06-28 lun. 11:31
|
% Created 2021-07-12 lun. 14:47
|
||||||
% Intended LaTeX compiler: pdflatex
|
% Intended LaTeX compiler: pdflatex
|
||||||
\documentclass[a4paper, keeplastbox, biblatex]{jacow}
|
\documentclass[a4paper, keeplastbox, biblatex]{jacow}
|
||||||
|
|
||||||
@ -6,10 +6,11 @@
|
|||||||
\usepackage{graphicx,tabularx,booktabs}
|
\usepackage{graphicx,tabularx,booktabs}
|
||||||
\usepackage{blindtext}
|
\usepackage{blindtext}
|
||||||
\usepackage[USenglish, english]{babel}
|
\usepackage[USenglish, english]{babel}
|
||||||
\addbibresource{ref.bib}
|
|
||||||
\setcounter{footnote}{1}
|
\setcounter{footnote}{1}
|
||||||
|
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
|
||||||
|
\addbibresource{ref.bib}
|
||||||
\author{T. Dehaeze\textsuperscript{1,}\thanks{thomas.dehaeze@esrf.fr}, J. Bonnefoy, ESRF, Grenoble, France \\ C. Collette\textsuperscript{1}, Université Libre de Bruxelles, BEAMS department, Brussels, Belgium \\ \textsuperscript{1}also at Precision Mechatronics Laboratory, University of Liege, Belgium}
|
\author{T. Dehaeze\textsuperscript{1,}\thanks{thomas.dehaeze@esrf.fr}, J. Bonnefoy, ESRF, Grenoble, France \\ C. Collette\textsuperscript{1}, Université Libre de Bruxelles, BEAMS department, Brussels, Belgium \\ \textsuperscript{1}also at Precision Mechatronics Laboratory, University of Liege, Belgium}
|
||||||
\date{2021-06-28}
|
\date{2021-07-12}
|
||||||
\title{MECHATRONICS APPROACH FOR THE DEVELOPMENT OF A NANO-ACTIVE-STABILIZATION-SYSTEM}
|
\title{MECHATRONICS APPROACH FOR THE DEVELOPMENT OF A NANO-ACTIVE-STABILIZATION-SYSTEM}
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
@ -29,12 +30,53 @@ Further tests should be done in order to confirm that the performances of the sy
|
|||||||
The presented development approach is foreseen to be applied more frequently to future mechatronic system design at the ESRF.
|
The presented development approach is foreseen to be applied more frequently to future mechatronic system design at the ESRF.
|
||||||
\end{abstract}
|
\end{abstract}
|
||||||
|
|
||||||
|
\section{INTRODUCTION}
|
||||||
|
\label{sec:org308d5f7}
|
||||||
|
|
||||||
|
See \cite{dehaeze18_sampl_stabil_for_tomog_exper}.
|
||||||
|
|
||||||
|
\section{MECHATRONIC APPROACH}
|
||||||
|
\label{sec:org8ceb80a}
|
||||||
|
|
||||||
|
\begin{figure}[htbp]
|
||||||
|
\centering
|
||||||
|
\includegraphics[scale=1,scale=1]{figs/nass_concept_schematic.pdf}
|
||||||
|
\caption{\label{fig:nass_concept_schematic}Nano Active Stabilization System - Schematic representation. 1) micro-station, 2) nano-hexapod, 3) sample, 4) metrology system}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\begin{figure*}
|
||||||
|
\centering
|
||||||
|
\includegraphics[scale=1,width=\linewidth]{figs/nass_mechatronics_approach.pdf}
|
||||||
|
\caption{\label{fig:nass_mechatronics_approach}Overview of the mechatronic approach}
|
||||||
|
\end{figure*}
|
||||||
|
|
||||||
|
\section{NANO-HEXAPOD DESIGN}
|
||||||
|
\label{sec:org41b979c}
|
||||||
|
|
||||||
|
\begin{figure*}
|
||||||
|
\centering
|
||||||
|
\includegraphics[scale=1,width=\linewidth]{figs/nano_hexapod_elements.pdf}
|
||||||
|
\caption{\label{fig:nano_hexapod_elements}CAD view of the nano-hexapod with key elements}
|
||||||
|
\end{figure*}
|
||||||
|
|
||||||
|
\section{TEST-BENCHES}
|
||||||
|
\label{sec:orgd4b8fb2}
|
||||||
|
|
||||||
|
\begin{figure*}
|
||||||
|
\centering
|
||||||
|
\includegraphics[scale=1,width=\linewidth]{figs/nass_hac_lac_schematic.pdf}
|
||||||
|
\caption{\label{fig:nass_hac_lac_schematic}HAC-LAC Strategy - Block Diagram}
|
||||||
|
\end{figure*}
|
||||||
|
|
||||||
\section{CONCLUSION}
|
\section{CONCLUSION}
|
||||||
\label{sec:orgd68d15d}
|
\label{sec:org45fae73}
|
||||||
|
|
||||||
\section{ACKNOWLEDGMENTS}
|
\section{ACKNOWLEDGMENTS}
|
||||||
\label{sec:orgf6f432d}
|
\label{sec:org36b4615}
|
||||||
This research was made possible by a grant from the FRIA.
|
This research was made possible by a grant from the FRIA.
|
||||||
We thank the following people for their support, without whose help this work would never have been possible: V. Honkimaki, A. Jublan, L. Ducotte, C. Carole, M. Brendike and M. Lessourd and the whole team of the Precision Mechatronic Laboratory.
|
We thank the following people for their support, without whose help this work would never have been possible: V. Honkimaki, L. Ducotte and M. Lessourd and the whole team of the Precision Mechatronic Laboratory.
|
||||||
|
|
||||||
\printbibliography
|
\printbibliography
|
||||||
\end{document}
|
\end{document}
|
||||||
|
BIN
paper/figs/nano_hexapod_elements.pdf
Normal file
BIN
paper/figs/nano_hexapod_elements.svg
Normal file
After Width: | Height: | Size: 2.5 MiB |
BIN
paper/figs/nass_concept_schematic.pdf
Normal file
BIN
paper/figs/nass_concept_schematic.svg
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
paper/figs/nass_hac_lac_schematic.pdf
Normal file
BIN
paper/figs/nass_hac_lac_schematic.svg
Normal file
After Width: | Height: | Size: 121 KiB |
BIN
paper/figs/nass_mechatronics_approach.pdf
Normal file
BIN
paper/figs/nass_mechatronics_approach.png
Normal file
After Width: | Height: | Size: 164 KiB |
BIN
paper/figs/nass_mechatronics_approach.svg
Normal file
After Width: | Height: | Size: 218 KiB |
113
paper/ref.bib
@ -1,66 +1,57 @@
|
|||||||
@article{martinez2016,
|
@inproceedings{dehaeze18_sampl_stabil_for_tomog_exper,
|
||||||
title = {ID16B: a hard X-ray nanoprobe beamline at the ESRF for nano-analysis},
|
author = {Thomas Dehaeze and M. Magnin Mattenet and Christophe
|
||||||
author = {Martinez-Criado, Gema and Villanova, Julie and Tucoulou, Remi and Salomon, Damien and Suuronen, J-P and Laboure, Sylvain and Guilloud, Cyril and Valls, Valentin and Barrett, Raymond and Gagliardini, Eric and others},
|
Collette},
|
||||||
journal = {Journal of synchrotron radiation},
|
title = {Sample Stabilization For Tomography Experiments In Presence
|
||||||
volume = {23},
|
Of Large Plant Uncertainty},
|
||||||
pages = {344--352},
|
booktitle = {MEDSI'18},
|
||||||
year = {2016},
|
year = 2018,
|
||||||
month = {1},
|
number = 10,
|
||||||
doi = {10.1107/S1600577515019839},
|
pages = {153--157},
|
||||||
publisher = {International Union of Crystallography}
|
doi = {10.18429/JACoW-MEDSI2018-WEOAMA02},
|
||||||
}
|
url = {https://doi.org/10.18429/JACoW-MEDSI2018-WEOAMA02},
|
||||||
@unpublished{DucotteMEDSI2016,
|
address = {Geneva, Switzerland},
|
||||||
author = {Ducotte, L and Clement, J.M and Gleyzolle, H and Wright, J},
|
isbn = {978-3-95450-207-3},
|
||||||
title = {The new ID11 nanoscope end-station - a nano-tomography scanner},
|
language = {english},
|
||||||
note = {presented at MEDSI'16, Barcelona, Spain, Sept. 2016, unpublished}
|
month = {Dec},
|
||||||
}
|
publisher = {JACoW Publishing},
|
||||||
@inproceedings{ogurreck2013nanotomography,
|
series = {Mechanical Engineering Design of Synchrotron Radiation
|
||||||
title = {The nanotomography endstation at the PETRA III imaging beamline},
|
Equipment and Instrumentation},
|
||||||
author = {Ogurreck, M and Wilde, F and Herzen, J and Beckmann, F and Nazmov, V and Mohr, J and Haibel, A and M{\"u}ller, M and Schreyer, A},
|
venue = {Paris, France},
|
||||||
booktitle = {Journal of Physics: Conference Series},
|
|
||||||
volume = {425},
|
|
||||||
number = {18},
|
|
||||||
year = {2013},
|
|
||||||
doi = {10.1088/1742-6596/425/18/182002}
|
|
||||||
}
|
|
||||||
% Stewart Platform
|
|
||||||
@article{Geng1992,
|
|
||||||
author = {Geng, Zheng and Haynes, Leonard S},
|
|
||||||
journal = {Journal of Robotic Systems},
|
|
||||||
number = {5},
|
|
||||||
pages = {725--744},
|
|
||||||
title = {Six-degree-of-freedom active vibration isolation using a stewart platform mechanism},
|
|
||||||
volume = {10},
|
|
||||||
doi = {10.1109/87.273110},
|
|
||||||
year = {1992}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@article{McInroy1999a,
|
@inproceedings{brumund21_multib_simul_reduc_order_flexib_bodies_fea,
|
||||||
author = {McInroy, J.E.},
|
author = {Philipp Brumund and Thomas Dehaeze},
|
||||||
journal = {Proc. of the 1999 IEEE International Conference On Control Applications, Kohala Coast, Hawaii, USA},
|
title = {Multibody Simulations with Reduced Order Flexible Bodies
|
||||||
pages = {508--513},
|
obtained by FEA},
|
||||||
title = {Dynamic modeling of flexure jointed hexapods for control purposes},
|
booktitle = {MEDSI'20},
|
||||||
doi = {10.1109/CCA.1999.806694},
|
year = 2021,
|
||||||
year = {1999}
|
language = {english},
|
||||||
}
|
publisher = {JACoW Publishing},
|
||||||
@article{preumont2007,
|
series = {Mechanical Engineering Design of Synchrotron Radiation
|
||||||
author = {Preumont, A. and Horodinca, M. and Romanescu, I. and de Marneffe, B. and Avraam, M. and Deraemaeker, A. and Bossens, F.},
|
Equipment and Instrumentation},
|
||||||
journal = {Journal of Sound and Vibration},
|
venue = {Chicago, USA},
|
||||||
number = {3-5},
|
|
||||||
title = {A six-axis single-stage active vibration isolator based on Stewart platform},
|
|
||||||
volume = {300},
|
|
||||||
doi = {10.1016/j.jsv.2006.07.050},
|
|
||||||
year = {2007}
|
|
||||||
}
|
|
||||||
@article{McInroy2000,
|
|
||||||
author = {McInroy, John E. and Hamann, Jerry C.},
|
|
||||||
journal = {IEEE Transactions on Robotics and Automation},
|
|
||||||
number = {4},
|
|
||||||
pages = {372--381},
|
|
||||||
title = {Design and control of flexure jointed hexapods},
|
|
||||||
volume = {16},
|
|
||||||
doi = {10.1109/70.864229},
|
|
||||||
year = {2000}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@article{souleille18_concep_activ_mount_space_applic,
|
||||||
|
author = {Souleille, Adrien and Lampert, Thibault and Lafarga, V and
|
||||||
|
Hellegouarch, Sylvain and Rondineau, Alan and Rodrigues,
|
||||||
|
Gon{\c{c}}alo and Collette, Christophe},
|
||||||
|
title = {A Concept of Active Mount for Space Applications},
|
||||||
|
journal = {CEAS Space Journal},
|
||||||
|
volume = 10,
|
||||||
|
number = 2,
|
||||||
|
pages = {157--165},
|
||||||
|
year = 2018,
|
||||||
|
publisher = {Springer}
|
||||||
|
}
|
||||||
|
|
||||||
|
@article{dehaeze21_activ_dampin_rotat_platf_using,
|
||||||
|
author = {Thomas Dehaeze and Christophe Collette},
|
||||||
|
title = {Active Damping of Rotating Platforms Using Integral Force
|
||||||
|
Feedback},
|
||||||
|
journal = {Engineering Research Express},
|
||||||
|
year = 2021,
|
||||||
|
doi = {10.1088/2631-8695/abe803},
|
||||||
|
url = {https://doi.org/10.1088/2631-8695/abe803},
|
||||||
|
month = {Feb},
|
||||||
|
}
|
||||||
|
707
tikz/config.org
Normal file
@ -0,0 +1,707 @@
|
|||||||
|
#+TITLE: LaTeX Configuration for Tikz Figures
|
||||||
|
:DRAWER:
|
||||||
|
#+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>
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:latex+ :tangle config.tex
|
||||||
|
#+PROPERTY: header-args:latex+ :exports code
|
||||||
|
:END:
|
||||||
|
|
||||||
|
* Packages
|
||||||
|
#+begin_src latex
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
|
||||||
|
\usepackage[french, english]{babel} % Last language is main language
|
||||||
|
|
||||||
|
\usepackage{lmodern} % Latin Modern Font
|
||||||
|
\usepackage{gensymb} % Generic symbols for both text and math mode
|
||||||
|
|
||||||
|
\usepackage{standalone} % Used to generate standalone Tikz
|
||||||
|
|
||||||
|
\usepackage{amsmath} % Main math Package
|
||||||
|
\usepackage{mathtools} % Extension package to amsmath
|
||||||
|
\usepackage{amsthm} % Typesetting theorems (AMS style)
|
||||||
|
\usepackage{amsfonts} % More fonts from the AMS
|
||||||
|
\usepackage{textcomp} % provide many text symbols
|
||||||
|
\usepackage{steinmetz} % For phase symbol
|
||||||
|
|
||||||
|
\usepackage{xstring} % Utils to manipulate strings
|
||||||
|
\usepackage{etoolbox} % Add basic if/then
|
||||||
|
\usepackage{esvect} % Beautyfull vectors
|
||||||
|
\usepackage{graphicx} % Enhanced support for graphics
|
||||||
|
\usepackage{grffile} % Used by matlab2tikz
|
||||||
|
|
||||||
|
\usepackage{microtype} % typographic tuning
|
||||||
|
\usepackage{setspace} % for line spacing, e.g. \onehalfspacing
|
||||||
|
\usepackage{tabularx} % table features
|
||||||
|
\usepackage{enumitem} % for simple list modifications
|
||||||
|
\usepackage{booktabs} % better table support
|
||||||
|
|
||||||
|
\usepackage{stackengine} %
|
||||||
|
|
||||||
|
\usepackage[load-configurations=abbreviations]{siunitx} % SI units
|
||||||
|
\sisetup{
|
||||||
|
locale = US,
|
||||||
|
detect-all,
|
||||||
|
range-phrase=--,
|
||||||
|
range-units=single
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Tikz related packages
|
||||||
|
#+begin_src latex
|
||||||
|
\usepackage{tikz} % Tikz
|
||||||
|
\usepackage{tikzscale} % Used to scale Tikz graphics
|
||||||
|
\usepackage{adjustbox} % Used to proper positioning of tikz pictures
|
||||||
|
\usepackage{circuitikz} % Draw electronic circuits
|
||||||
|
\usepackage{pgfpages} % Needed to use notes
|
||||||
|
\usepackage{pgfplots} % Used to plot functions
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Tikz Libraries
|
||||||
|
#+begin_src latex
|
||||||
|
\usetikzlibrary{arrows} % Arrow tip library
|
||||||
|
\usetikzlibrary{arrows.meta} % Add some arrows
|
||||||
|
\usetikzlibrary{calc} % The library allows advanced Coordinate Calculations
|
||||||
|
\usetikzlibrary{intersections} % calculate intersections of paths
|
||||||
|
\usetikzlibrary{matrix} %
|
||||||
|
\usetikzlibrary{patterns} %
|
||||||
|
\usetikzlibrary{shapes} % Defines circle and rectangle
|
||||||
|
\usetikzlibrary{shapes.geometric} % Use for the shape diamond and isosceles triangle
|
||||||
|
\usetikzlibrary{snakes} % snake=coil and snake=zigzag using segment amplitude=10pt
|
||||||
|
\usetikzlibrary{positioning} % Additional options for placing nodes
|
||||||
|
\usetikzlibrary{3d} % Plot 3D shapes
|
||||||
|
\usetikzlibrary{spy} % Creating a magnified area
|
||||||
|
\usetikzlibrary{decorations.text} % Used to make text follows a curve
|
||||||
|
\usetikzlibrary{decorations.pathmorphing} % deformation of a path
|
||||||
|
\usetikzlibrary{decorations.markings} % Used for spring and damper
|
||||||
|
\usetikzlibrary{babel} % A tiny library that make the interaction with the babel package easier
|
||||||
|
\usetikzlibrary{plotmarks} % This library defines a number of plot marks
|
||||||
|
\usetikzlibrary{fit} % Used to make rectangle as nodes by specifying two points
|
||||||
|
\usetikzlibrary{backgrounds} % Used to put things under others
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* PGF Plot libraries and config
|
||||||
|
#+begin_src latex
|
||||||
|
\usepgfplotslibrary{patchplots}
|
||||||
|
\usepgfplotslibrary{groupplots}
|
||||||
|
|
||||||
|
\pgfplotsset{compat=newest}
|
||||||
|
\pgfplotsset{plot coordinates/math parser=false}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Setup size of figures
|
||||||
|
#+begin_src latex
|
||||||
|
\newlength{\fheight}
|
||||||
|
\newlength{\fwidth}
|
||||||
|
|
||||||
|
\setlength{\fwidth}{85mm}
|
||||||
|
\setlength{\fheight}{112mm}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Setup Arrows style
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{>=Stealth}
|
||||||
|
% Setup default Linewidth
|
||||||
|
\tikzset{every path/.style={line width=1pt}}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Colors
|
||||||
|
#+begin_src latex
|
||||||
|
\usepackage{xcolor}% Color extension
|
||||||
|
|
||||||
|
\definecolor{colorblack}{rgb}{0, 0, 0}
|
||||||
|
\definecolor{colorblue}{HTML}{0072bd}
|
||||||
|
\definecolor{colorred}{HTML}{d95218}
|
||||||
|
\definecolor{coloryellow}{HTML}{ecb01f}
|
||||||
|
\definecolor{colorpurple}{HTML}{7d2e8e}
|
||||||
|
\definecolor{colorgreen}{HTML}{77ab2f}
|
||||||
|
|
||||||
|
\definecolor{lightblue}{HTML}{dbf0ff}
|
||||||
|
\definecolor{lightred}{HTML}{f9d9cb}
|
||||||
|
\definecolor{lightyellow}{HTML}{faf0d1}
|
||||||
|
\definecolor{lightpurple}{HTML}{efdcf4}
|
||||||
|
\definecolor{lightgreen}{HTML}{e6f3d3}
|
||||||
|
|
||||||
|
% Main color
|
||||||
|
\definecolor{maincolor}{RGB}{89, 9, 38}
|
||||||
|
\definecolor{secondcolor}{RGB}{20, 9, 89}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Control
|
||||||
|
** Blocks
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
block/.style n args={2}{%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
minimum width = #1,
|
||||||
|
minimum height = #2,
|
||||||
|
},
|
||||||
|
block/.default={1.2cm}{1.0cm}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Branches
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzstyle{branch}=[fill,shape=circle,minimum size=4pt,inner sep=0pt]
|
||||||
|
\tikzstyle{->top}=[-{Stealth[color=black, scale=0.8]}, draw=white, double=black, double distance=1pt, line width=1pt]
|
||||||
|
\tikzstyle{<-top}=[{stealth[color=black, scale=0.8]}-, draw=white, double=black, double distance=1pt, line width=1pt]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Hand Writen Style
|
||||||
|
Usefull for schematic plots
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzstyle{handwriten}=[decorate,decoration={random steps,amplitude=0.1pt,segment length=0.8pt}]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** DAC
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
DAC/.style={%
|
||||||
|
draw,
|
||||||
|
signal,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ADC
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
ADC/.style={%
|
||||||
|
draw,
|
||||||
|
signal,
|
||||||
|
signal to = west,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Gain
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
gain right/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=-90
|
||||||
|
},
|
||||||
|
gain left/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=90
|
||||||
|
},
|
||||||
|
gain top/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=0
|
||||||
|
},
|
||||||
|
gain bottom/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=180
|
||||||
|
},
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Add / Substract / Divide / Multiply block
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{% Add block with Circled operations
|
||||||
|
addc/.style n args={5}{%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
circle,
|
||||||
|
outer sep = 0pt,
|
||||||
|
inner sep = 0pt,
|
||||||
|
minimum size = 2em,
|
||||||
|
execute at begin node={\LARGE $#1$},
|
||||||
|
append after command={\pgfextra{\let\mainnode=\tikzlastnode}
|
||||||
|
\ifx#2\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, above left] at (\mainnode.west) {$#2$}%
|
||||||
|
\fi
|
||||||
|
\ifx#3\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, above right] at (\mainnode.north) {$#3$}%
|
||||||
|
\fi
|
||||||
|
\ifx#4\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, below right] at (\mainnode.east) {$#4$}%
|
||||||
|
\fi
|
||||||
|
\ifx#5\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, below left] at (\mainnode.south) {$#5$}%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addc/.default={+}{}{}{}{},
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{% Add Block
|
||||||
|
addb/.style n args={5}{%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
circle,
|
||||||
|
outer sep = 0pt,
|
||||||
|
inner sep = 0pt,
|
||||||
|
minimum size = 2em,
|
||||||
|
execute at begin node={\LARGE $#1$},
|
||||||
|
append after command={\pgfextra{\let\mainnode=\tikzlastnode}
|
||||||
|
\ifx#2\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, above left] at (\mainnode.west) {$#2$}%
|
||||||
|
\fi
|
||||||
|
\ifx#3\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, above right] at (\mainnode.north) {$#3$}%
|
||||||
|
\fi
|
||||||
|
\ifx#4\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, below right] at (\mainnode.east) {$#4$}%
|
||||||
|
\fi
|
||||||
|
\ifx#5\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, below left] at (\mainnode.south) {$#5$}%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addb/.default={+}{}{}{}{},
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Plots
|
||||||
|
** Default line caps
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{
|
||||||
|
every axis plot/.append style={line join=round},
|
||||||
|
every axis plot/.append style={line cap=round},
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Grid
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{grid style={black}}
|
||||||
|
\pgfplotsset{major grid style={black!30!white}}
|
||||||
|
\pgfplotsset{minor grid style={black!10!white}}
|
||||||
|
\pgfplotsset{xmajorgrids}
|
||||||
|
\pgfplotsset{ymajorgrids}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Lines
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{separate axis lines=false} % draw axis as rectangle and not as 4 lines
|
||||||
|
\pgfplotsset{every outer x axis line/.append style={black}}
|
||||||
|
\pgfplotsset{every outer y axis line/.append style={black}}
|
||||||
|
\pgfplotsset{axis background/.style={fill=white}}
|
||||||
|
\pgfplotsset{axis x line*=bottom} % solid line on the bottom with thin on the top
|
||||||
|
\pgfplotsset{axis y line*=left} % solid line on the left with thin on the right
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Ticks
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{every y tick label/.append style={font=\color{black}}}
|
||||||
|
\pgfplotsset{every y tick/.append style={black}}
|
||||||
|
\pgfplotsset{every x tick label/.append style={font=\color{black}}}
|
||||||
|
\pgfplotsset{every x tick/.append style={black}}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Size
|
||||||
|
If =scale only axis=false= (the default), pgfplots will try to produce the desired width including labels, titles and ticks.
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{scale only axis=true}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Label
|
||||||
|
Used to align all of ylabel of one figure.
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{ylabel absolute}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Legend
|
||||||
|
#+begin_src latex
|
||||||
|
% https://tex.stackexchange.com/questions/54794/using-a-pgfplots-style-legend-in-a-plain-old-tikzpicture#54834
|
||||||
|
|
||||||
|
% argument #1: any options
|
||||||
|
\newenvironment{customlegend}[1][]{%
|
||||||
|
\begingroup
|
||||||
|
% inits/clears the lists (which might be populated from previous
|
||||||
|
% axes):
|
||||||
|
\csname pgfplots@init@cleared@structures\endcsname
|
||||||
|
\pgfplotsset{#1}%
|
||||||
|
}{%
|
||||||
|
% draws the legend:
|
||||||
|
\csname pgfplots@createlegend\endcsname
|
||||||
|
\endgroup
|
||||||
|
}%
|
||||||
|
|
||||||
|
% makes \addlegendimage available (typically only available within an
|
||||||
|
% axis environment):
|
||||||
|
\def\addlegendimage{\csname pgfplots@addlegendimage\endcsname}
|
||||||
|
|
||||||
|
% definition to insert numbers
|
||||||
|
% \pgfkeys{/pgfplots/number in legend/.style={%
|
||||||
|
% /pgfplots/legend image code/.code={%
|
||||||
|
% \node at (0.125,-0.0225){#1}; % <= changed x value
|
||||||
|
% },%
|
||||||
|
% },
|
||||||
|
% }
|
||||||
|
\pgfplotsset{
|
||||||
|
every legend to name picture/.style={west}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Upper and Lower bounds
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{upperbound}=[line cap=round, postaction={decorate,draw,decoration={border, segment length=0.2cm, amplitude=0.3cm, angle=60}}]
|
||||||
|
\pgfplotsset{lowerbound}=[line cap=round, postaction={decorate,draw,decoration={border, segment length=0.2cm, amplitude=0.3cm, angle=-60}}]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And we add the corresdonding
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{
|
||||||
|
/pgfplots/upperbound/.style 1 args={
|
||||||
|
legend image code/.code={
|
||||||
|
\draw[##1, upperbound]
|
||||||
|
plot coordinates {
|
||||||
|
(0cm,0cm)
|
||||||
|
(0.6cm,0cm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Pole
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
pole/.style{%
|
||||||
|
color=red,
|
||||||
|
cross out,
|
||||||
|
draw,
|
||||||
|
inner sep=0pt,
|
||||||
|
outer sep=0pt,
|
||||||
|
minimum size=#1pt
|
||||||
|
},
|
||||||
|
pole/.default={4}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Zero
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
zero/.style{%
|
||||||
|
color=red,
|
||||||
|
circle,
|
||||||
|
draw,
|
||||||
|
inner sep=0pt,
|
||||||
|
outer sep=0pt,
|
||||||
|
minimum size=#1pt
|
||||||
|
},
|
||||||
|
zero/.default={4}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Mechanical
|
||||||
|
** Spring
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
spring/.style={%
|
||||||
|
thick,
|
||||||
|
decoration={
|
||||||
|
zigzag,
|
||||||
|
pre length = #1cm,
|
||||||
|
post length = #1cm,
|
||||||
|
segment length = 6
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
spring/.default={0.2}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Coil
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
coil/.style n args={2}{%
|
||||||
|
thick,
|
||||||
|
decoration={
|
||||||
|
coil,
|
||||||
|
pre length = #1cm,
|
||||||
|
post length = #2cm,
|
||||||
|
segment length = 4
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
coil/.default={0.3}{0.3}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Damper
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
damper/.style n args={2}{%
|
||||||
|
thick,
|
||||||
|
decoration={markings, mark connection node=dmp, mark=at position 0.5 with {
|
||||||
|
\node (dmp) [thick,
|
||||||
|
inner sep = 0pt,
|
||||||
|
transform shape,
|
||||||
|
rotate =-90,
|
||||||
|
minimum width = #1pt,
|
||||||
|
minimum height = #2pt,
|
||||||
|
draw=none] {};
|
||||||
|
\draw [thick] ($(dmp.north east)+(0.6*#2pt,0)$) -- (dmp.south east) -- (dmp.south west) -- ($(dmp.north west)+(0.6*#2pt,0)$);
|
||||||
|
\draw [thick] ($(dmp.north)+(0,-0.3*#1pt)$) -- ($(dmp.north)+(0,0.3*#1pt)$);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
damper/.default={12}{3}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Actuator
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
actuator/.style n args={2}{%
|
||||||
|
thick,
|
||||||
|
draw=none,
|
||||||
|
decoration={
|
||||||
|
markings,
|
||||||
|
mark connection node=my node,
|
||||||
|
mark=at position .5 with {
|
||||||
|
\node [draw, inner sep=0pt, minimum width=#1cm, minimum height=#2cm,
|
||||||
|
transform shape, fill=white] (my node) {};
|
||||||
|
},
|
||||||
|
mark=at position .0 with {
|
||||||
|
\draw[<-] (0, 0) -- (my node);
|
||||||
|
},
|
||||||
|
mark=at position 1.0 with {
|
||||||
|
\draw[<-] (0, 0) -- (my node);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
actuator/.default={0.5}{0.2}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Ground
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
ground/.style n args={2}{%
|
||||||
|
fill,
|
||||||
|
pattern = north east lines,
|
||||||
|
draw = none,
|
||||||
|
anchor = north,
|
||||||
|
minimum width = #1cm,
|
||||||
|
minimum height = #2cm,
|
||||||
|
append after command={
|
||||||
|
(\tikzlastnode.north west) edge (\tikzlastnode.north east)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ground/.default={2.5}{0.3}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Force Sensor
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
forcesensor/.style n args={2}{%
|
||||||
|
rectangle,
|
||||||
|
outer sep=0pt,
|
||||||
|
inner sep=0pt,
|
||||||
|
draw=black,
|
||||||
|
fill=white!60!black,
|
||||||
|
anchor=south,
|
||||||
|
minimum width =#1cm,
|
||||||
|
minimum height=#2cm,
|
||||||
|
append after command={
|
||||||
|
[every edge/.append style={
|
||||||
|
thick,
|
||||||
|
black,
|
||||||
|
}]
|
||||||
|
(\tikzlastnode.north west) edge (\tikzlastnode.south east)
|
||||||
|
(\tikzlastnode.north east) edge (\tikzlastnode.south west)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
forcesensor/.default={2.0}{0.5}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Inertial Sensor
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
inertialsensor/.style={%
|
||||||
|
rectangle,
|
||||||
|
outer sep=0pt,
|
||||||
|
inner sep=0pt,
|
||||||
|
draw=black,
|
||||||
|
fill=white!60!black,
|
||||||
|
anchor=south east,
|
||||||
|
minimum size=#1cm,
|
||||||
|
append after command={
|
||||||
|
[every edge/.append style={
|
||||||
|
thick,
|
||||||
|
black,
|
||||||
|
}]
|
||||||
|
(\tikzlastnode.north west) edge (\tikzlastnode.south east)
|
||||||
|
(\tikzlastnode.north east) edge (\tikzlastnode.south west)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
inertialsensor/.default={0.3}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Cross
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzstyle{cross}=[path picture={
|
||||||
|
\draw[black]
|
||||||
|
(path picture bounding box.south east) -- (path picture bounding box.north west) (path picture bounding box.south west) -- (path picture bounding box.north east);
|
||||||
|
}]
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Piezoelectric actuator
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
piezo/.style n args={3}{%
|
||||||
|
draw,
|
||||||
|
rectangle,
|
||||||
|
minimum width = #1cm,
|
||||||
|
minimum height = #2cm,
|
||||||
|
fill=blue!10!white,
|
||||||
|
anchor=center,
|
||||||
|
append after command={
|
||||||
|
[every edge/.append style={
|
||||||
|
thick,
|
||||||
|
black,
|
||||||
|
}]
|
||||||
|
\foreach \i in {1,...,#3}{
|
||||||
|
(${\i/(1+#3)}*(\tikzlastnode.north west)+{(1+#3-\i)/(1+#3)}*(\tikzlastnode.south west)+0.1*(#1,0)$) edge (${\i/(1+#3)}*(\tikzlastnode.north east)+{(1+#3-\i)/(1+#3)}*(\tikzlastnode.south east)-0.1*(#1,0)$)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
piezo/.default={2}{4}{10}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Voice coil
|
||||||
|
#+begin_src latex
|
||||||
|
\def\voicecoil#1#2#3{
|
||||||
|
% ======================
|
||||||
|
% Parameters
|
||||||
|
% ======================
|
||||||
|
\def\voicecoilw{#1} % Total Width
|
||||||
|
\def\voicecoilh{#2} % Total Height
|
||||||
|
|
||||||
|
\def\magnetw{\voicecoilw} % Width of the magnet
|
||||||
|
\def\magneth{\voicecoilh/1.4} % Height of the magnet
|
||||||
|
|
||||||
|
\def\magnetwb{0.15*\magnetw} % Width of the borders of the magnet
|
||||||
|
\def\magnetmw{0.15*\magnetw} % Width of the middle part of the magnet
|
||||||
|
\def\magnetwg{0.5*\magnetw} % Width of the gap of the magnet
|
||||||
|
|
||||||
|
\def\magnethl{\magnetwb} % Height of the low part of the magnet
|
||||||
|
\def\magnetmh{0.15*\magneth} % Height of the middle part of the magnet
|
||||||
|
\def\magnethg{0.2*\magneth} % Height of the gap of the magnet
|
||||||
|
% ======================
|
||||||
|
|
||||||
|
\begin{scope}[shift={(0.5*\voicecoilw, 0.5*\voicecoilh)}, rotate=#3, shift={(0, -0.5*\voicecoilh)}]
|
||||||
|
% ======================
|
||||||
|
% Magnet
|
||||||
|
% ======================
|
||||||
|
\draw[fill=white] (0, 0) -| ++(0.5*\magnetw, \magneth) -| ++(-0.5*\magnetw+0.5*\magnetwg, -\magnethg) -| (0.5*\magnetw-\magnetwb, \magnethl) -| (-0.5*\magnetw+\magnetwb, \magneth-\magnethg) -| (-0.5*\magnetwg, \magneth) -| (-0.5*\magnetw, 0) -- (cycle);
|
||||||
|
\begin{scope}[shift={(0, \magnethl)}]
|
||||||
|
\draw[fill=red] (-0.5*\magnetmw, 0) rectangle (0.5*\magnetmw, \magnetmh);
|
||||||
|
\draw[fill=blue] (-0.5*\magnetmw, \magnetmh) rectangle (0.5*\magnetmw, 2*\magnetmh);
|
||||||
|
% Top conductive Magnet
|
||||||
|
\draw[fill=white] (-0.5*\magnetmw, 2*\magnetmh) -| (0.5*\magnetmw, -\magnethl+\magneth-\magnethg) -| ++(0.1, \magnethg) -| ++(-0.2-\magnetmw, -\magnethg) -| (-0.5*\magnetmw, \magnetmh);
|
||||||
|
\end{scope}
|
||||||
|
% ======================
|
||||||
|
|
||||||
|
% ======================
|
||||||
|
% Coil
|
||||||
|
% ======================
|
||||||
|
\pgfmathsetmacro{\coilwidth}{0.5*0.5*\magnetmw+0.5*0.1+0.25*\magnetwg}%
|
||||||
|
\draw[] ( \coilwidth, 0.5*\magneth) -- ++(0, 0.7*\magneth);
|
||||||
|
\draw[] (-\coilwidth, 0.5*\magneth) -- ++(0, 0.7*\magneth);
|
||||||
|
% Point on the coil
|
||||||
|
\foreach \x in {0,1,...,9}
|
||||||
|
{
|
||||||
|
\node[circle,inner sep=0.6pt,fill] at ( \coilwidth, \x*0.7*\magneth/10+0.5*\magneth);
|
||||||
|
\node[circle,inner sep=0.6pt,fill] at (-\coilwidth, \x*0.7*\magneth/10+0.5*\magneth);
|
||||||
|
}
|
||||||
|
\draw[fill=white] (-0.5*\magnetw, 1.2*\magneth) rectangle ++(\magnetw, \magnethg);
|
||||||
|
% ======================
|
||||||
|
|
||||||
|
% ======================
|
||||||
|
% Coordinates
|
||||||
|
% ======================
|
||||||
|
% Force
|
||||||
|
\coordinate[] (vc_force) at (0, \magneth-0.5*\magnethg);
|
||||||
|
% Coil
|
||||||
|
\coordinate[] (vc_coil) at (0, \voicecoilh);
|
||||||
|
% Magnet
|
||||||
|
\coordinate[] (vc_magnet) at (0, 0);
|
||||||
|
% Coil Wires
|
||||||
|
\coordinate[] (vc_wire_one) at ( \coilwidth, 1.2*\magneth);
|
||||||
|
\coordinate[] (vc_wire_two) at (-\coilwidth, 1.2*\magneth);
|
||||||
|
% ======================
|
||||||
|
\end{scope}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Axis Rotator
|
||||||
|
#+begin_src latex
|
||||||
|
\newcommand{\AxisRotator}[1][rotate=0]{%
|
||||||
|
\tikz [x=0.1cm,y=0.30cm,-stealth,#1] \draw (0,0) arc (-150:150:1 and 1);%
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Optics
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
->-/.style={
|
||||||
|
decoration={
|
||||||
|
markings,
|
||||||
|
mark = at position #1 with {\arrow{>}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
postaction={decorate}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\tikzset{%
|
||||||
|
-<-/.style={
|
||||||
|
decoration={
|
||||||
|
markings,
|
||||||
|
mark = at position #1 with {\arrow{<}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
postaction={decorate}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Misc
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
labelc/.style= {%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
shape=circle,
|
||||||
|
inner sep=2pt,
|
||||||
|
outer sep=6pt,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* More Defaults specific to this paper
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{block/.default={0.8cm}{0.8cm}}
|
||||||
|
\tikzset{addb/.append style={scale=0.7}}
|
||||||
|
\tikzset{node distance=0.6}
|
||||||
|
#+end_src
|
569
tikz/config.tex
Normal file
@ -0,0 +1,569 @@
|
|||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
|
||||||
|
\usepackage[french, english]{babel} % Last language is main language
|
||||||
|
|
||||||
|
\usepackage{lmodern} % Latin Modern Font
|
||||||
|
\usepackage{gensymb} % Generic symbols for both text and math mode
|
||||||
|
|
||||||
|
\usepackage{standalone} % Used to generate standalone Tikz
|
||||||
|
|
||||||
|
\usepackage{amsmath} % Main math Package
|
||||||
|
\usepackage{mathtools} % Extension package to amsmath
|
||||||
|
\usepackage{amsthm} % Typesetting theorems (AMS style)
|
||||||
|
\usepackage{amsfonts} % More fonts from the AMS
|
||||||
|
\usepackage{textcomp} % provide many text symbols
|
||||||
|
\usepackage{steinmetz} % For phase symbol
|
||||||
|
|
||||||
|
\usepackage{xstring} % Utils to manipulate strings
|
||||||
|
\usepackage{etoolbox} % Add basic if/then
|
||||||
|
\usepackage{esvect} % Beautyfull vectors
|
||||||
|
\usepackage{graphicx} % Enhanced support for graphics
|
||||||
|
\usepackage{grffile} % Used by matlab2tikz
|
||||||
|
|
||||||
|
\usepackage{microtype} % typographic tuning
|
||||||
|
\usepackage{setspace} % for line spacing, e.g. \onehalfspacing
|
||||||
|
\usepackage{tabularx} % table features
|
||||||
|
\usepackage{enumitem} % for simple list modifications
|
||||||
|
\usepackage{booktabs} % better table support
|
||||||
|
|
||||||
|
\usepackage{stackengine} %
|
||||||
|
|
||||||
|
\usepackage[load-configurations=abbreviations]{siunitx} % SI units
|
||||||
|
\sisetup{
|
||||||
|
locale = US,
|
||||||
|
detect-all,
|
||||||
|
range-phrase=--,
|
||||||
|
range-units=single
|
||||||
|
}
|
||||||
|
|
||||||
|
\usepackage{tikz} % Tikz
|
||||||
|
\usepackage{tikzscale} % Used to scale Tikz graphics
|
||||||
|
\usepackage{adjustbox} % Used to proper positioning of tikz pictures
|
||||||
|
\usepackage{circuitikz} % Draw electronic circuits
|
||||||
|
\usepackage{pgfpages} % Needed to use notes
|
||||||
|
\usepackage{pgfplots} % Used to plot functions
|
||||||
|
|
||||||
|
\usetikzlibrary{arrows} % Arrow tip library
|
||||||
|
\usetikzlibrary{arrows.meta} % Add some arrows
|
||||||
|
\usetikzlibrary{calc} % The library allows advanced Coordinate Calculations
|
||||||
|
\usetikzlibrary{intersections} % calculate intersections of paths
|
||||||
|
\usetikzlibrary{matrix} %
|
||||||
|
\usetikzlibrary{patterns} %
|
||||||
|
\usetikzlibrary{shapes} % Defines circle and rectangle
|
||||||
|
\usetikzlibrary{shapes.geometric} % Use for the shape diamond and isosceles triangle
|
||||||
|
\usetikzlibrary{snakes} % snake=coil and snake=zigzag using segment amplitude=10pt
|
||||||
|
\usetikzlibrary{positioning} % Additional options for placing nodes
|
||||||
|
\usetikzlibrary{3d} % Plot 3D shapes
|
||||||
|
\usetikzlibrary{spy} % Creating a magnified area
|
||||||
|
\usetikzlibrary{decorations.text} % Used to make text follows a curve
|
||||||
|
\usetikzlibrary{decorations.pathmorphing} % deformation of a path
|
||||||
|
\usetikzlibrary{decorations.markings} % Used for spring and damper
|
||||||
|
\usetikzlibrary{babel} % A tiny library that make the interaction with the babel package easier
|
||||||
|
\usetikzlibrary{plotmarks} % This library defines a number of plot marks
|
||||||
|
\usetikzlibrary{fit} % Used to make rectangle as nodes by specifying two points
|
||||||
|
\usetikzlibrary{backgrounds} % Used to put things under others
|
||||||
|
|
||||||
|
\usepgfplotslibrary{patchplots}
|
||||||
|
\usepgfplotslibrary{groupplots}
|
||||||
|
|
||||||
|
\pgfplotsset{compat=newest}
|
||||||
|
\pgfplotsset{plot coordinates/math parser=false}
|
||||||
|
|
||||||
|
\newlength{\fheight}
|
||||||
|
\newlength{\fwidth}
|
||||||
|
|
||||||
|
\setlength{\fwidth}{85mm}
|
||||||
|
\setlength{\fheight}{112mm}
|
||||||
|
|
||||||
|
\tikzset{>=Stealth}
|
||||||
|
% Setup default Linewidth
|
||||||
|
\tikzset{every path/.style={line width=1pt}}
|
||||||
|
|
||||||
|
\usepackage{xcolor}% Color extension
|
||||||
|
|
||||||
|
\definecolor{colorblack}{rgb}{0, 0, 0}
|
||||||
|
\definecolor{colorblue}{HTML}{0072bd}
|
||||||
|
\definecolor{colorred}{HTML}{d95218}
|
||||||
|
\definecolor{coloryellow}{HTML}{ecb01f}
|
||||||
|
\definecolor{colorpurple}{HTML}{7d2e8e}
|
||||||
|
\definecolor{colorgreen}{HTML}{77ab2f}
|
||||||
|
|
||||||
|
\definecolor{lightblue}{HTML}{dbf0ff}
|
||||||
|
\definecolor{lightred}{HTML}{f9d9cb}
|
||||||
|
\definecolor{lightyellow}{HTML}{faf0d1}
|
||||||
|
\definecolor{lightpurple}{HTML}{efdcf4}
|
||||||
|
\definecolor{lightgreen}{HTML}{e6f3d3}
|
||||||
|
|
||||||
|
% Main color
|
||||||
|
\definecolor{maincolor}{RGB}{89, 9, 38}
|
||||||
|
\definecolor{secondcolor}{RGB}{20, 9, 89}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
block/.style n args={2}{%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
minimum width = #1,
|
||||||
|
minimum height = #2,
|
||||||
|
},
|
||||||
|
block/.default={1.2cm}{1.0cm}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzstyle{branch}=[fill,shape=circle,minimum size=4pt,inner sep=0pt]
|
||||||
|
\tikzstyle{->top}=[-{Stealth[color=black, scale=0.8]}, draw=white, double=black, double distance=1pt, line width=1pt]
|
||||||
|
\tikzstyle{<-top}=[{stealth[color=black, scale=0.8]}-, draw=white, double=black, double distance=1pt, line width=1pt]
|
||||||
|
|
||||||
|
\tikzstyle{handwriten}=[decorate,decoration={random steps,amplitude=0.1pt,segment length=0.8pt}]
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
DAC/.style={%
|
||||||
|
draw,
|
||||||
|
signal,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
ADC/.style={%
|
||||||
|
draw,
|
||||||
|
signal,
|
||||||
|
signal to = west,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
gain right/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=-90
|
||||||
|
},
|
||||||
|
gain left/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=90
|
||||||
|
},
|
||||||
|
gain top/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=0
|
||||||
|
},
|
||||||
|
gain bottom/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=180
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{% Add block with Circled operations
|
||||||
|
addc/.style n args={5}{%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
circle,
|
||||||
|
outer sep = 0pt,
|
||||||
|
inner sep = 0pt,
|
||||||
|
minimum size = 2em,
|
||||||
|
execute at begin node={\LARGE $#1$},
|
||||||
|
append after command={\pgfextra{\let\mainnode=\tikzlastnode}
|
||||||
|
\ifx#2\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, above left] at (\mainnode.west) {$#2$}%
|
||||||
|
\fi
|
||||||
|
\ifx#3\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, above right] at (\mainnode.north) {$#3$}%
|
||||||
|
\fi
|
||||||
|
\ifx#4\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, below right] at (\mainnode.east) {$#4$}%
|
||||||
|
\fi
|
||||||
|
\ifx#5\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, below left] at (\mainnode.south) {$#5$}%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addc/.default={+}{}{}{}{},
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{% Add Block
|
||||||
|
addb/.style n args={5}{%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
circle,
|
||||||
|
outer sep = 0pt,
|
||||||
|
inner sep = 0pt,
|
||||||
|
minimum size = 2em,
|
||||||
|
execute at begin node={\LARGE $#1$},
|
||||||
|
append after command={\pgfextra{\let\mainnode=\tikzlastnode}
|
||||||
|
\ifx#2\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, above left] at (\mainnode.west) {$#2$}%
|
||||||
|
\fi
|
||||||
|
\ifx#3\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, above right] at (\mainnode.north) {$#3$}%
|
||||||
|
\fi
|
||||||
|
\ifx#4\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, below right] at (\mainnode.east) {$#4$}%
|
||||||
|
\fi
|
||||||
|
\ifx#5\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, below left] at (\mainnode.south) {$#5$}%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addb/.default={+}{}{}{}{},
|
||||||
|
}
|
||||||
|
|
||||||
|
\pgfplotsset{
|
||||||
|
every axis plot/.append style={line join=round},
|
||||||
|
every axis plot/.append style={line cap=round},
|
||||||
|
}
|
||||||
|
|
||||||
|
\pgfplotsset{grid style={black}}
|
||||||
|
\pgfplotsset{major grid style={black!30!white}}
|
||||||
|
\pgfplotsset{minor grid style={black!10!white}}
|
||||||
|
\pgfplotsset{xmajorgrids}
|
||||||
|
\pgfplotsset{ymajorgrids}
|
||||||
|
|
||||||
|
\pgfplotsset{separate axis lines=false} % draw axis as rectangle and not as 4 lines
|
||||||
|
\pgfplotsset{every outer x axis line/.append style={black}}
|
||||||
|
\pgfplotsset{every outer y axis line/.append style={black}}
|
||||||
|
\pgfplotsset{axis background/.style={fill=white}}
|
||||||
|
\pgfplotsset{axis x line*=bottom} % solid line on the bottom with thin on the top
|
||||||
|
\pgfplotsset{axis y line*=left} % solid line on the left with thin on the right
|
||||||
|
|
||||||
|
\pgfplotsset{every y tick label/.append style={font=\color{black}}}
|
||||||
|
\pgfplotsset{every y tick/.append style={black}}
|
||||||
|
\pgfplotsset{every x tick label/.append style={font=\color{black}}}
|
||||||
|
\pgfplotsset{every x tick/.append style={black}}
|
||||||
|
|
||||||
|
\pgfplotsset{scale only axis=true}
|
||||||
|
|
||||||
|
\pgfplotsset{ylabel absolute}
|
||||||
|
|
||||||
|
% https://tex.stackexchange.com/questions/54794/using-a-pgfplots-style-legend-in-a-plain-old-tikzpicture#54834
|
||||||
|
|
||||||
|
% argument #1: any options
|
||||||
|
\newenvironment{customlegend}[1][]{%
|
||||||
|
\begingroup
|
||||||
|
% inits/clears the lists (which might be populated from previous
|
||||||
|
% axes):
|
||||||
|
\csname pgfplots@init@cleared@structures\endcsname
|
||||||
|
\pgfplotsset{#1}%
|
||||||
|
}{%
|
||||||
|
% draws the legend:
|
||||||
|
\csname pgfplots@createlegend\endcsname
|
||||||
|
\endgroup
|
||||||
|
}%
|
||||||
|
|
||||||
|
% makes \addlegendimage available (typically only available within an
|
||||||
|
% axis environment):
|
||||||
|
\def\addlegendimage{\csname pgfplots@addlegendimage\endcsname}
|
||||||
|
|
||||||
|
% definition to insert numbers
|
||||||
|
% \pgfkeys{/pgfplots/number in legend/.style={%
|
||||||
|
% /pgfplots/legend image code/.code={%
|
||||||
|
% \node at (0.125,-0.0225){#1}; % <= changed x value
|
||||||
|
% },%
|
||||||
|
% },
|
||||||
|
% }
|
||||||
|
\pgfplotsset{
|
||||||
|
every legend to name picture/.style={west}
|
||||||
|
}
|
||||||
|
|
||||||
|
\pgfplotsset{upperbound}=[line cap=round, postaction={decorate,draw,decoration={border, segment length=0.2cm, amplitude=0.3cm, angle=60}}]
|
||||||
|
\pgfplotsset{lowerbound}=[line cap=round, postaction={decorate,draw,decoration={border, segment length=0.2cm, amplitude=0.3cm, angle=-60}}]
|
||||||
|
|
||||||
|
\pgfplotsset{
|
||||||
|
/pgfplots/upperbound/.style 1 args={
|
||||||
|
legend image code/.code={
|
||||||
|
\draw[##1, upperbound]
|
||||||
|
plot coordinates {
|
||||||
|
(0cm,0cm)
|
||||||
|
(0.6cm,0cm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
pole/.style{%
|
||||||
|
color=red,
|
||||||
|
cross out,
|
||||||
|
draw,
|
||||||
|
inner sep=0pt,
|
||||||
|
outer sep=0pt,
|
||||||
|
minimum size=#1pt
|
||||||
|
},
|
||||||
|
pole/.default={4}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
zero/.style{%
|
||||||
|
color=red,
|
||||||
|
circle,
|
||||||
|
draw,
|
||||||
|
inner sep=0pt,
|
||||||
|
outer sep=0pt,
|
||||||
|
minimum size=#1pt
|
||||||
|
},
|
||||||
|
zero/.default={4}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
spring/.style={%
|
||||||
|
thick,
|
||||||
|
decoration={
|
||||||
|
zigzag,
|
||||||
|
pre length = #1cm,
|
||||||
|
post length = #1cm,
|
||||||
|
segment length = 6
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
spring/.default={0.2}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
coil/.style n args={2}{%
|
||||||
|
thick,
|
||||||
|
decoration={
|
||||||
|
coil,
|
||||||
|
pre length = #1cm,
|
||||||
|
post length = #2cm,
|
||||||
|
segment length = 4
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
coil/.default={0.3}{0.3}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
damper/.style n args={2}{%
|
||||||
|
thick,
|
||||||
|
decoration={markings, mark connection node=dmp, mark=at position 0.5 with {
|
||||||
|
\node (dmp) [thick,
|
||||||
|
inner sep = 0pt,
|
||||||
|
transform shape,
|
||||||
|
rotate =-90,
|
||||||
|
minimum width = #1pt,
|
||||||
|
minimum height = #2pt,
|
||||||
|
draw=none] {};
|
||||||
|
\draw [thick] ($(dmp.north east)+(0.6*#2pt,0)$) -- (dmp.south east) -- (dmp.south west) -- ($(dmp.north west)+(0.6*#2pt,0)$);
|
||||||
|
\draw [thick] ($(dmp.north)+(0,-0.3*#1pt)$) -- ($(dmp.north)+(0,0.3*#1pt)$);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
damper/.default={12}{3}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
actuator/.style n args={2}{%
|
||||||
|
thick,
|
||||||
|
draw=none,
|
||||||
|
decoration={
|
||||||
|
markings,
|
||||||
|
mark connection node=my node,
|
||||||
|
mark=at position .5 with {
|
||||||
|
\node [draw, inner sep=0pt, minimum width=#1cm, minimum height=#2cm,
|
||||||
|
transform shape, fill=white] (my node) {};
|
||||||
|
},
|
||||||
|
mark=at position .0 with {
|
||||||
|
\draw[<-] (0, 0) -- (my node);
|
||||||
|
},
|
||||||
|
mark=at position 1.0 with {
|
||||||
|
\draw[<-] (0, 0) -- (my node);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
actuator/.default={0.5}{0.2}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
ground/.style n args={2}{%
|
||||||
|
fill,
|
||||||
|
pattern = north east lines,
|
||||||
|
draw = none,
|
||||||
|
anchor = north,
|
||||||
|
minimum width = #1cm,
|
||||||
|
minimum height = #2cm,
|
||||||
|
append after command={
|
||||||
|
(\tikzlastnode.north west) edge (\tikzlastnode.north east)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ground/.default={2.5}{0.3}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
forcesensor/.style n args={2}{%
|
||||||
|
rectangle,
|
||||||
|
outer sep=0pt,
|
||||||
|
inner sep=0pt,
|
||||||
|
draw=black,
|
||||||
|
fill=white!60!black,
|
||||||
|
anchor=south,
|
||||||
|
minimum width =#1cm,
|
||||||
|
minimum height=#2cm,
|
||||||
|
append after command={
|
||||||
|
[every edge/.append style={
|
||||||
|
thick,
|
||||||
|
black,
|
||||||
|
}]
|
||||||
|
(\tikzlastnode.north west) edge (\tikzlastnode.south east)
|
||||||
|
(\tikzlastnode.north east) edge (\tikzlastnode.south west)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
forcesensor/.default={2.0}{0.5}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
inertialsensor/.style={%
|
||||||
|
rectangle,
|
||||||
|
outer sep=0pt,
|
||||||
|
inner sep=0pt,
|
||||||
|
draw=black,
|
||||||
|
fill=white!60!black,
|
||||||
|
anchor=south east,
|
||||||
|
minimum size=#1cm,
|
||||||
|
append after command={
|
||||||
|
[every edge/.append style={
|
||||||
|
thick,
|
||||||
|
black,
|
||||||
|
}]
|
||||||
|
(\tikzlastnode.north west) edge (\tikzlastnode.south east)
|
||||||
|
(\tikzlastnode.north east) edge (\tikzlastnode.south west)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
inertialsensor/.default={0.3}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzstyle{cross}=[path picture={
|
||||||
|
\draw[black]
|
||||||
|
(path picture bounding box.south east) -- (path picture bounding box.north west) (path picture bounding box.south west) -- (path picture bounding box.north east);
|
||||||
|
}]
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
piezo/.style n args={3}{%
|
||||||
|
draw,
|
||||||
|
rectangle,
|
||||||
|
minimum width = #1cm,
|
||||||
|
minimum height = #2cm,
|
||||||
|
fill=blue!10!white,
|
||||||
|
anchor=center,
|
||||||
|
append after command={
|
||||||
|
[every edge/.append style={
|
||||||
|
thick,
|
||||||
|
black,
|
||||||
|
}]
|
||||||
|
\foreach \i in {1,...,#3}{
|
||||||
|
(${\i/(1+#3)}*(\tikzlastnode.north west)+{(1+#3-\i)/(1+#3)}*(\tikzlastnode.south west)+0.1*(#1,0)$) edge (${\i/(1+#3)}*(\tikzlastnode.north east)+{(1+#3-\i)/(1+#3)}*(\tikzlastnode.south east)-0.1*(#1,0)$)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
piezo/.default={2}{4}{10}
|
||||||
|
}
|
||||||
|
|
||||||
|
\def\voicecoil#1#2#3{
|
||||||
|
% ======================
|
||||||
|
% Parameters
|
||||||
|
% ======================
|
||||||
|
\def\voicecoilw{#1} % Total Width
|
||||||
|
\def\voicecoilh{#2} % Total Height
|
||||||
|
|
||||||
|
\def\magnetw{\voicecoilw} % Width of the magnet
|
||||||
|
\def\magneth{\voicecoilh/1.4} % Height of the magnet
|
||||||
|
|
||||||
|
\def\magnetwb{0.15*\magnetw} % Width of the borders of the magnet
|
||||||
|
\def\magnetmw{0.15*\magnetw} % Width of the middle part of the magnet
|
||||||
|
\def\magnetwg{0.5*\magnetw} % Width of the gap of the magnet
|
||||||
|
|
||||||
|
\def\magnethl{\magnetwb} % Height of the low part of the magnet
|
||||||
|
\def\magnetmh{0.15*\magneth} % Height of the middle part of the magnet
|
||||||
|
\def\magnethg{0.2*\magneth} % Height of the gap of the magnet
|
||||||
|
% ======================
|
||||||
|
|
||||||
|
\begin{scope}[shift={(0.5*\voicecoilw, 0.5*\voicecoilh)}, rotate=#3, shift={(0, -0.5*\voicecoilh)}]
|
||||||
|
% ======================
|
||||||
|
% Magnet
|
||||||
|
% ======================
|
||||||
|
\draw[fill=white] (0, 0) -| ++(0.5*\magnetw, \magneth) -| ++(-0.5*\magnetw+0.5*\magnetwg, -\magnethg) -| (0.5*\magnetw-\magnetwb, \magnethl) -| (-0.5*\magnetw+\magnetwb, \magneth-\magnethg) -| (-0.5*\magnetwg, \magneth) -| (-0.5*\magnetw, 0) -- (cycle);
|
||||||
|
\begin{scope}[shift={(0, \magnethl)}]
|
||||||
|
\draw[fill=red] (-0.5*\magnetmw, 0) rectangle (0.5*\magnetmw, \magnetmh);
|
||||||
|
\draw[fill=blue] (-0.5*\magnetmw, \magnetmh) rectangle (0.5*\magnetmw, 2*\magnetmh);
|
||||||
|
% Top conductive Magnet
|
||||||
|
\draw[fill=white] (-0.5*\magnetmw, 2*\magnetmh) -| (0.5*\magnetmw, -\magnethl+\magneth-\magnethg) -| ++(0.1, \magnethg) -| ++(-0.2-\magnetmw, -\magnethg) -| (-0.5*\magnetmw, \magnetmh);
|
||||||
|
\end{scope}
|
||||||
|
% ======================
|
||||||
|
|
||||||
|
% ======================
|
||||||
|
% Coil
|
||||||
|
% ======================
|
||||||
|
\pgfmathsetmacro{\coilwidth}{0.5*0.5*\magnetmw+0.5*0.1+0.25*\magnetwg}%
|
||||||
|
\draw[] ( \coilwidth, 0.5*\magneth) -- ++(0, 0.7*\magneth);
|
||||||
|
\draw[] (-\coilwidth, 0.5*\magneth) -- ++(0, 0.7*\magneth);
|
||||||
|
% Point on the coil
|
||||||
|
\foreach \x in {0,1,...,9}
|
||||||
|
{
|
||||||
|
\node[circle,inner sep=0.6pt,fill] at ( \coilwidth, \x*0.7*\magneth/10+0.5*\magneth);
|
||||||
|
\node[circle,inner sep=0.6pt,fill] at (-\coilwidth, \x*0.7*\magneth/10+0.5*\magneth);
|
||||||
|
}
|
||||||
|
\draw[fill=white] (-0.5*\magnetw, 1.2*\magneth) rectangle ++(\magnetw, \magnethg);
|
||||||
|
% ======================
|
||||||
|
|
||||||
|
% ======================
|
||||||
|
% Coordinates
|
||||||
|
% ======================
|
||||||
|
% Force
|
||||||
|
\coordinate[] (vc_force) at (0, \magneth-0.5*\magnethg);
|
||||||
|
% Coil
|
||||||
|
\coordinate[] (vc_coil) at (0, \voicecoilh);
|
||||||
|
% Magnet
|
||||||
|
\coordinate[] (vc_magnet) at (0, 0);
|
||||||
|
% Coil Wires
|
||||||
|
\coordinate[] (vc_wire_one) at ( \coilwidth, 1.2*\magneth);
|
||||||
|
\coordinate[] (vc_wire_two) at (-\coilwidth, 1.2*\magneth);
|
||||||
|
% ======================
|
||||||
|
\end{scope}
|
||||||
|
}
|
||||||
|
|
||||||
|
\newcommand{\AxisRotator}[1][rotate=0]{%
|
||||||
|
\tikz [x=0.1cm,y=0.30cm,-stealth,#1] \draw (0,0) arc (-150:150:1 and 1);%
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
->-/.style={
|
||||||
|
decoration={
|
||||||
|
markings,
|
||||||
|
mark = at position #1 with {\arrow{>}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
postaction={decorate}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\tikzset{%
|
||||||
|
-<-/.style={
|
||||||
|
decoration={
|
||||||
|
markings,
|
||||||
|
mark = at position #1 with {\arrow{<}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
postaction={decorate}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{%
|
||||||
|
labelc/.style= {%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
shape=circle,
|
||||||
|
inner sep=2pt,
|
||||||
|
outer sep=6pt,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\tikzset{block/.default={0.8cm}{0.8cm}}
|
||||||
|
\tikzset{addb/.append style={scale=0.7}}
|
||||||
|
\tikzset{node distance=0.6}
|
BIN
tikz/figs-tikz/classical_feedback_small.pdf
Normal file
BIN
tikz/figs-tikz/simscape_nano_hexapod.png
Normal file
After Width: | Height: | Size: 158 KiB |
BIN
tikz/figs-tikz/simscape_picture.jpg
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
tikz/figs-tikz/simscape_simulations.pdf
Normal file
273
tikz/figures.org
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
#+TITLE: Tikz Figures
|
||||||
|
:DRAWER:
|
||||||
|
#+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>
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{/home/thomas/Cloud/thesis/papers/dehaeze21_mechatronics_approach_nass/tikz/}{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+ :eval no-export
|
||||||
|
#+PROPERTY: header-args:latex+ :exports both
|
||||||
|
#+PROPERTY: header-args:latex+ :mkdirp yes
|
||||||
|
#+PROPERTY: header-args:latex+ :output-dir figs
|
||||||
|
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
|
||||||
|
:END:
|
||||||
|
|
||||||
|
* Mechatronic Approach
|
||||||
|
#+begin_src latex :file nass_mechatronics_approach.pdf
|
||||||
|
\graphicspath{ {/home/thomas/Cloud/thesis/papers/dehaeze21_mechatronics_approach_nass/tikz/figs-tikz} }
|
||||||
|
|
||||||
|
\begin{tikzpicture}
|
||||||
|
% Styles
|
||||||
|
\tikzset{myblock/.style= {draw, fill=white, text width=3cm, align=center, minimum height=1.8cm}};
|
||||||
|
\tikzset{mylabel/.style= {anchor=north, below, font=\bfseries\small, color=black, text width=3cm, align=center}};
|
||||||
|
\tikzset{mymodel/.style= {anchor=south, above, font=\small, color=black, text width=3cm, align=center}};
|
||||||
|
\tikzset{mystep/.style= {->, ultra thick}};
|
||||||
|
|
||||||
|
% Blocks
|
||||||
|
\node[myblock, fill=lightblue, draw, label={[mylabel, text width=9.8cm] Dynamical Models / Simulations / Control}, minimum height = 6cm, text width = 9.8cm] (model) at (0, 0) {};
|
||||||
|
|
||||||
|
\node[myblock, fill=lightgreen, label={[mylabel] $\mu$ Station}, left = 3 of model.south west, anchor=south east] (mustation) {};
|
||||||
|
\node[myblock, fill=lightgreen, label={[mylabel] Disturbances}, left = 3 of model.west] (dist) {};
|
||||||
|
\node[myblock, fill=lightgreen, label={[mylabel] $\nu$ Hexapod}, left = 3 of model.north west, anchor=north east] (nanohexapod) {};
|
||||||
|
|
||||||
|
\node[myblock, fill=lightyellow, label={[mylabel] Mech. Design}, above = 1 of model.north] (mechanical) {};
|
||||||
|
\node[myblock, fill=lightyellow, label={[mylabel] Instrumentation}, left = 1 of mechanical] (instrumentation) {};
|
||||||
|
\node[myblock, fill=lightyellow, label={[mylabel] FEM}, right = 1 of mechanical] (fem) {};
|
||||||
|
|
||||||
|
\node[myblock, fill=lightred, label={[mylabel] Assembly}, right = 3 of model.north east, anchor=north west] (mounting) {};
|
||||||
|
\node[myblock, fill=lightred, label={[mylabel] Test Benches}, right = 3 of model.east] (testbenches) {};
|
||||||
|
\node[myblock, fill=lightred, label={[mylabel] Implementation}, right = 3 of model.south east, anchor=south west] (implementation) {};
|
||||||
|
|
||||||
|
% Text
|
||||||
|
\node[mymodel] at (mustation.south) {Multiple stages\\Complex dynamics\\Solid bodies};
|
||||||
|
\node[mymodel] at (dist.south) {Ground motion\\Vibrations\\Position errors};
|
||||||
|
\node[mymodel] at (nanohexapod.south) {Different concepts\\ Optimal geometry \\ Choice of sensors};
|
||||||
|
|
||||||
|
\node[mymodel] at (instrumentation.south) {Sensors, Actuators\\Amplifiers\\Control electronics};
|
||||||
|
\node[mymodel] at (mechanical.south) {Parts optimization\\Proper integration\\Ease of assembly};
|
||||||
|
\node[mymodel] at (fem.south) {Optimize key parts:\\Flexible joints\\Plates};
|
||||||
|
|
||||||
|
\node[mymodel] at (mounting.south) {Mounting Tools:\\Struts\\ Nano-Hexapod};
|
||||||
|
\node[mymodel] at (testbenches.south) {Instrumentation\\APA, Struts\\Hexapod};
|
||||||
|
\node[mymodel] at (implementation.south) {Test Benches\\$\mu$ Station};
|
||||||
|
|
||||||
|
% Links
|
||||||
|
\draw[->] (dist.east) -- node[above, midway]{Measurements} node[below,midway]{} (dist.east-|model.west);
|
||||||
|
\draw[->] (mustation.east) -- node[above, midway]{Measurements} node[below, midway]{CAD Model} (mustation.east-|model.west);
|
||||||
|
|
||||||
|
\draw[->] ($(nanohexapod.east-|model.west)+(0, 0.2)$) -- node[above, midway]{Optimization} ($(nanohexapod.east)+(0, 0.2)$);
|
||||||
|
\draw[<-] ($(nanohexapod.east-|model.west)-(0, 0.2)$) -- node[below, midway]{Model} ($(nanohexapod.east)-(0, 0.2)$);
|
||||||
|
|
||||||
|
\draw[->] ($(fem.south|-model.north)+(0.2, 0)$) -- node[right, midway]{Specif.} ($(fem.south)+(0.2,0)$);
|
||||||
|
\draw[<-] ($(fem.south|-model.north)-(0.2, 0)$) -- node[left, midway,align=right]{Super\\Element} ($(fem.south)-(0.2,0)$);
|
||||||
|
|
||||||
|
\draw[->] ($(mechanical.south|-model.north)+(0.2, 0)$) -- node[right, midway]{Specif.} ($(mechanical.south)+(0.2,0)$);
|
||||||
|
\draw[<-] ($(mechanical.south|-model.north)-(0.2, 0)$) -- node[left, midway]{3D parts} ($(mechanical.south)-(0.2,0)$);
|
||||||
|
|
||||||
|
\draw[->] ($(instrumentation.south|-model.north)+(0.2, 0)$) -- node[right, midway]{Specif.} ($(instrumentation.south)+(0.2,0)$);
|
||||||
|
\draw[<-] ($(instrumentation.south|-model.north)-(0.2, 0)$) -- node[left, midway]{Model} ($(instrumentation.south)-(0.2,0)$);
|
||||||
|
|
||||||
|
\draw[->] ($(testbenches.west-|model.east)+(0, 0.2)$) -- node[above, midway]{Control Laws} ($(testbenches.west)+(0, 0.2)$);
|
||||||
|
\draw[<-] ($(testbenches.west-|model.east)-(0, 0.2)$) -- node[below, midway]{Refinement} ($(testbenches.west)-(0, 0.2)$);
|
||||||
|
|
||||||
|
\draw[->] ($(implementation.west-|model.east)+(0, 0.2)$) -- node[above, midway]{Control Laws} ($(implementation.west)+(0, 0.2)$);
|
||||||
|
\draw[<-] ($(implementation.west-|model.east)-(0, 0.2)$) -- node[below, midway]{Refinement} ($(implementation.west)-(0, 0.2)$);
|
||||||
|
|
||||||
|
% Main steps
|
||||||
|
\node[font=\bfseries, rotate=90, anchor=south, above] (conceptual_phase_node) at (dist.west) {Conceptual Phase};
|
||||||
|
\node[font=\bfseries, above] (detailed_phase_node) at (mechanical.north) {Detail Design Phase};
|
||||||
|
\node[font=\bfseries, rotate=-90, anchor=south, above] (implementation_phase_node) at (testbenches.east) {Experimental Phase};
|
||||||
|
\begin{scope}[on background layer]
|
||||||
|
\node[fit={(conceptual_phase_node.north|-nanohexapod.north) (mustation.south east)}, fill=lightgreen!50!white, draw, dashed, inner sep=2pt] (conceptual_phase) {};
|
||||||
|
\node[fit={(detailed_phase_node.north-|instrumentation.west) (fem.south east)}, fill=lightyellow!50!white, draw, dashed, inner sep=2pt] (detailed_phase) {};
|
||||||
|
\node[fit={(implementation_phase_node.north|-mounting.north) (implementation.south west)}, fill=lightred!50!white, draw, dashed, inner sep=2pt] (implementation_phase) {};
|
||||||
|
% \node[above left] at (dob.south east) {DOB};
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
% Between main steps
|
||||||
|
\draw[mystep, dashed, postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={Concept Validation}}}] (conceptual_phase.north) to[out=90, in=180] (detailed_phase.west);
|
||||||
|
\draw[mystep, dashed, postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={Procurement}}}] (detailed_phase.east) to[out=0, in=90] (implementation_phase.north);
|
||||||
|
|
||||||
|
% % Inside Model
|
||||||
|
% \node[inner sep=1pt, outer sep=6pt, anchor=north west, draw, fill=white, thin] (multibodymodel) at ($(model.north west) - (0, 0.5)$)
|
||||||
|
% {\includegraphics[width=5.6cm]{simscape_nano_hexapod.png}};
|
||||||
|
|
||||||
|
% \node[inner sep=1pt, outer sep=6pt, anchor=south west, draw, fill=white, thin] (simscape) at (model.south west)
|
||||||
|
% {\includegraphics[width=5.6cm]{simscape_picture.jpg}};
|
||||||
|
|
||||||
|
% % Feedback Model
|
||||||
|
% \node[inner sep=3pt, outer sep=6pt, anchor=north east, draw, fill=white, thin] (simscape_sim) at ($(model.north east) - (0, 0.5)$)
|
||||||
|
% {\includegraphics[width=3.6cm]{simscape_simulations.pdf}};
|
||||||
|
|
||||||
|
% % FeedBack
|
||||||
|
% \node[inner sep=3pt, outer sep=6pt, anchor=south east, draw, fill=white, thin] (feedback) at (model.south east)
|
||||||
|
% {\includegraphics[width=3.6cm]{classical_feedback_small.pdf}};
|
||||||
|
\end{tikzpicture}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/nass_mechatronics_approach.png]]
|
||||||
|
|
||||||
|
* Schematic Representation - NASS
|
||||||
|
#+begin_src latex :file nass_concept_schematic.pdf
|
||||||
|
\begin{tikzpicture}
|
||||||
|
% Parameters
|
||||||
|
\def\blockw{6.0cm}
|
||||||
|
\def\blockh{1.2cm}
|
||||||
|
|
||||||
|
% Translation Stage
|
||||||
|
\begin{scope}
|
||||||
|
% Translation Stage - fixed part
|
||||||
|
\draw[fill=black!40] (-0.5*\blockw, 0) coordinate[](tyb) rectangle (0.5*\blockw, 0.15*\blockh);
|
||||||
|
\coordinate[] (measposbot) at (0.5*\blockw, 0);
|
||||||
|
|
||||||
|
% Tilt
|
||||||
|
\path[] ([shift=(-120:4*\blockh)]0, 4.9*\blockh) coordinate(beginarc) arc (-120:-110:4*\blockh) %
|
||||||
|
-- ([shift=(-70:4*\blockh)]0, 4.9*\blockh) arc (-70:-60:4*\blockh)%
|
||||||
|
|- ++(-0.15*\blockw, 0.6*\blockh) coordinate (spindlene)%
|
||||||
|
|- ($(beginarc) + (0.15*\blockw, 0.2*\blockh)$) coordinate (spindlesw) -- ++(0, 0.4*\blockh) coordinate(tiltte) -| cycle;
|
||||||
|
|
||||||
|
% Spindle
|
||||||
|
\coordinate[] (spindlese) at (spindlesw-|spindlene);
|
||||||
|
\draw[fill=black!30] ($(spindlese)+(-0.1,0.1)+(-0.1*\blockw, 0)$) -| ($(spindlene)+(-0.1, 0)$) -| coordinate[pos=0.25](spindletop) ($(spindlesw)+(0.1,0.1)$) -| ++(0.1*\blockw, -\blockh) -| coordinate[pos=0.25](spindlebot) cycle;
|
||||||
|
|
||||||
|
\draw[dashed, color=black!60] ($(spindletop)+(0, 0.2)$) -- ($(spindlebot)+(0,-0.2)$);
|
||||||
|
|
||||||
|
|
||||||
|
% Tilt
|
||||||
|
\draw[fill=black!60] ([shift=(-120:4*\blockh)]0, 4.9*\blockh) coordinate(beginarc) arc (-120:-110:4*\blockh) %
|
||||||
|
-- ([shift=(-70:4*\blockh)]0, 4.9*\blockh) arc (-70:-60:4*\blockh)%
|
||||||
|
|- ++(-0.15*\blockw, 0.6*\blockh) coordinate (spindlene)%
|
||||||
|
|- ($(beginarc) + (0.15*\blockw, 0.2*\blockh)$) coordinate (spindlesw) -- ++(0, 0.4*\blockh) -| cycle;
|
||||||
|
|
||||||
|
% Translation Stage - mobile part
|
||||||
|
\draw[fill=black!10, fill opacity=0.5] (-0.5*\blockw, 0.2*\blockh) -- (-0.5*\blockw, 1.5*\blockh) coordinate[](tyt) -- (0.5*\blockw, 1.5*\blockh) -- (0.5*\blockw, 0.2*\blockh) -- (0.35*\blockw, 0.2*\blockh) -- (0.35*\blockw, 0.8*\blockh) -- (-0.35*\blockw, 0.8*\blockh) -- (-0.35*\blockw, 0.2*\blockh) -- cycle;
|
||||||
|
|
||||||
|
% Translation Guidance
|
||||||
|
\draw[dashed, color=black!60] ($(-0.5*\blockw, 0)+( 0.075*\blockw,0.5*\blockh)$) circle (0.2*\blockh);
|
||||||
|
\draw[dashed, color=black!60] ($( 0.5*\blockw, 0)+(-0.075*\blockw,0.5*\blockh)$) circle (0.2*\blockh);
|
||||||
|
|
||||||
|
% Tilt Guidance
|
||||||
|
\draw[dashed, color=black!60] ([shift=(-110:4*\blockh)]0, 4.8*\blockh) arc (-110:-120:4*\blockh);
|
||||||
|
\draw[dashed, color=black!60] ([shift=( -70:4*\blockh)]0, 4.8*\blockh) arc (-70:-60:4*\blockh);
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
% Micro-Hexapod
|
||||||
|
\begin{scope}[shift={(spindletop)}]
|
||||||
|
% Parameters definitions
|
||||||
|
\def\baseh{0.2*\blockh} % Height of the base
|
||||||
|
\def\naceh{0.2*\blockh} % Height of the nacelle
|
||||||
|
\def\baser{0.22*\blockw} % Radius of the base
|
||||||
|
\def\nacer{0.18*\blockw} % Radius of the nacelle
|
||||||
|
|
||||||
|
\def\armr{0.2*\blockh} % Radius of the arms
|
||||||
|
\def\basearmborder{0.2}
|
||||||
|
\def\nacearmborder{0.2}
|
||||||
|
|
||||||
|
\def\xnace{0} \def\ynace{\blockh-\naceh} \def\anace{0}
|
||||||
|
\def\xbase{0} \def\ybase{0} \def\abase{0}
|
||||||
|
|
||||||
|
% Hexapod1
|
||||||
|
\begin{scope}[shift={(\xbase, \ybase)}, rotate=\abase]
|
||||||
|
% Base
|
||||||
|
\draw[fill=white] (-\baser, 0) coordinate[](uhexabot) rectangle (\baser, \baseh);
|
||||||
|
|
||||||
|
\coordinate[] (armbasel) at (-\baser+\basearmborder+\armr, \baseh);
|
||||||
|
\coordinate[] (armbasec) at (0, \baseh);
|
||||||
|
\coordinate[] (armbaser) at (\baser-\basearmborder-\armr, \baseh);
|
||||||
|
|
||||||
|
% Nacelle1
|
||||||
|
\begin{scope}[shift={(\xnace, \ynace)}, rotate=\anace]
|
||||||
|
\draw[fill=white] (-\nacer, 0) rectangle (\nacer, \naceh);
|
||||||
|
\coordinate[] (uhexatop) at (0, \naceh);
|
||||||
|
\coordinate[] (armnacel) at (-\nacer+\nacearmborder+\armr, 0);
|
||||||
|
\coordinate[] (armnacec) at (0, 0);
|
||||||
|
\coordinate[] (armnacer) at (\nacer-\nacearmborder-\armr, 0);
|
||||||
|
\end{scope}
|
||||||
|
% Nacelle1 END
|
||||||
|
|
||||||
|
\draw[] (armbasec) -- (armnacer);
|
||||||
|
\draw[] (armbasec) -- (armnacel);
|
||||||
|
\draw[] (armbasel) -- (armnacel);
|
||||||
|
\draw[] (armbasel) -- (armnacec);
|
||||||
|
\draw[] (armbaser) -- (armnacec);
|
||||||
|
\draw[] (armbaser) -- (armnacer);
|
||||||
|
\end{scope}
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
% NASS
|
||||||
|
\begin{scope}[shift={(uhexatop)}]
|
||||||
|
% Parameters definitions
|
||||||
|
\def\baseh{0.1*\blockh} % Height of the base
|
||||||
|
\def\naceh{0.1*\blockh} % Height of the nacelle
|
||||||
|
\def\baser{0.16*\blockw} % Radius of the base
|
||||||
|
\def\nacer{0.14*\blockw} % Radius of the nacelle
|
||||||
|
|
||||||
|
\def\armr{0.1*\blockh} % Radius of the arms
|
||||||
|
\def\basearmborder{0.2}
|
||||||
|
\def\nacearmborder{0.2}
|
||||||
|
|
||||||
|
\def\xnace{0} \def\ynace{0.6*\blockh-\naceh} \def\anace{0}
|
||||||
|
\def\xbase{0} \def\ybase{0} \def\abase{0}
|
||||||
|
|
||||||
|
% Hexapod1
|
||||||
|
\begin{scope}[shift={(\xbase, \ybase)}, rotate=\abase]
|
||||||
|
% Base
|
||||||
|
\draw[fill=red!50!black] (-\baser, 0) coordinate[](nhexabot) rectangle (\baser, \baseh);
|
||||||
|
|
||||||
|
\coordinate[] (armbasel) at (-\baser+\basearmborder+\armr, \baseh);
|
||||||
|
\coordinate[] (armbasec) at (0, \baseh);
|
||||||
|
\coordinate[] (armbaser) at (\baser-\basearmborder-\armr, \baseh);
|
||||||
|
|
||||||
|
% Nacelle1
|
||||||
|
\begin{scope}[shift={(\xnace, \ynace)}, rotate=\anace]
|
||||||
|
\draw[fill=red!50!black] (-\nacer, 0) rectangle (\nacer, \naceh);
|
||||||
|
\coordinate[] (nhexatop) at (0, \naceh);
|
||||||
|
\coordinate[] (armnacel) at (-\nacer+\nacearmborder+\armr, 0);
|
||||||
|
\coordinate[] (armnacec) at (0, 0);
|
||||||
|
\coordinate[] (armnacer) at (\nacer-\nacearmborder-\armr, 0);
|
||||||
|
\coordinate[] (measpostop) at (\nacer, \naceh);
|
||||||
|
\end{scope}
|
||||||
|
% Nacelle1 END
|
||||||
|
|
||||||
|
\draw[color=red!50!black] (armbasec) -- (armnacer);
|
||||||
|
\draw[color=red!50!black] (armbasec) -- (armnacel);
|
||||||
|
\draw[color=red!50!black] (armbasel) -- (armnacel);
|
||||||
|
\draw[color=red!50!black] (armbasel) -- (armnacec);
|
||||||
|
\draw[color=red!50!black] (armbaser) -- (armnacec);
|
||||||
|
\draw[color=red!50!black] (armbaser) -- (armnacer);
|
||||||
|
|
||||||
|
% Force actuator
|
||||||
|
\coordinate[] (nassfbot) at (0.8*\baser, \baseh);
|
||||||
|
\coordinate[] (nassftop) at (armnacec-|nassfbot);
|
||||||
|
\end{scope}
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
% Sample
|
||||||
|
\begin{scope}[shift={(nhexatop)}]
|
||||||
|
\draw[fill=white] (-0.1*\blockw, 0) coordinate[](samplebot) rectangle coordinate[pos=0.5](samplecenter) (0.1*\blockw, \blockh) coordinate[](sampletop);
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
% Laser
|
||||||
|
\begin{scope}[shift={(samplecenter)}]
|
||||||
|
\draw[color=red, -<-=0.5] (samplecenter) node[circle, fill=red, inner sep=0pt, minimum size=3pt]{} -- node[midway, above, color=black]{X-ray} ($(samplecenter)+(0.5*\blockw,0)$);
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
%% Measurement
|
||||||
|
\draw[dashed, color=black!50] (measposbot) -- ++(0.8,0) coordinate (measposbotend);
|
||||||
|
\draw[dashed, color=black!50] (measpostop) -- (measpostop-|measposbotend) coordinate (measpostopend);
|
||||||
|
\draw[<->, dashed] ($(measposbotend)+(-0.2, 0)$) -- node[midway, left](d){$d$} ($(measpostopend)+(-0.2, 0)$);
|
||||||
|
|
||||||
|
%% Control
|
||||||
|
\draw[<->, line width=0.5pt] (nassfbot) -- node[midway, right](F){$F$} (nassftop);
|
||||||
|
\node[draw, block={2.3em}{1.7em}, right=0.3 of F] (K){$K$};
|
||||||
|
\draw[->] (d.west) -| ($(K.east)+(0.5, 0)$) -- (K.east);
|
||||||
|
\draw[->] (K.west) -- (F.east);
|
||||||
|
\end{tikzpicture}
|
||||||
|
#+end_src
|
707
tikz/flycheck_config.org
Normal file
@ -0,0 +1,707 @@
|
|||||||
|
#+TITLE: LaTeX Configuration for Tikz Figures
|
||||||
|
:DRAWER:
|
||||||
|
#+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>
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:latex+ :tangle config.tex
|
||||||
|
#+PROPERTY: header-args:latex+ :exports code
|
||||||
|
:END:
|
||||||
|
|
||||||
|
* Packages
|
||||||
|
#+begin_src latex
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage[T1]{fontenc}
|
||||||
|
|
||||||
|
\usepackage[french, english]{babel} % Last language is main language
|
||||||
|
|
||||||
|
\usepackage{lmodern} % Latin Modern Font
|
||||||
|
\usepackage{gensymb} % Generic symbols for both text and math mode
|
||||||
|
|
||||||
|
\usepackage{standalone} % Used to generate standalone Tikz
|
||||||
|
|
||||||
|
\usepackage{amsmath} % Main math Package
|
||||||
|
\usepackage{mathtools} % Extension package to amsmath
|
||||||
|
\usepackage{amsthm} % Typesetting theorems (AMS style)
|
||||||
|
\usepackage{amsfonts} % More fonts from the AMS
|
||||||
|
\usepackage{textcomp} % provide many text symbols
|
||||||
|
\usepackage{steinmetz} % For phase symbol
|
||||||
|
|
||||||
|
\usepackage{xstring} % Utils to manipulate strings
|
||||||
|
\usepackage{etoolbox} % Add basic if/then
|
||||||
|
\usepackage{esvect} % Beautyfull vectors
|
||||||
|
\usepackage{graphicx} % Enhanced support for graphics
|
||||||
|
\usepackage{grffile} % Used by matlab2tikz
|
||||||
|
|
||||||
|
\usepackage{microtype} % typographic tuning
|
||||||
|
\usepackage{setspace} % for line spacing, e.g. \onehalfspacing
|
||||||
|
\usepackage{tabularx} % table features
|
||||||
|
\usepackage{enumitem} % for simple list modifications
|
||||||
|
\usepackage{booktabs} % better table support
|
||||||
|
|
||||||
|
\usepackage{stackengine} %
|
||||||
|
|
||||||
|
\usepackage[load-configurations=abbreviations]{siunitx} % SI units
|
||||||
|
\sisetup{
|
||||||
|
locale = US,
|
||||||
|
detect-all,
|
||||||
|
range-phrase=--,
|
||||||
|
range-units=single
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Tikz related packages
|
||||||
|
#+begin_src latex
|
||||||
|
\usepackage{tikz} % Tikz
|
||||||
|
\usepackage{tikzscale} % Used to scale Tikz graphics
|
||||||
|
\usepackage{adjustbox} % Used to proper positioning of tikz pictures
|
||||||
|
\usepackage{circuitikz} % Draw electronic circuits
|
||||||
|
\usepackage{pgfpages} % Needed to use notes
|
||||||
|
\usepackage{pgfplots} % Used to plot functions
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Tikz Libraries
|
||||||
|
#+begin_src latex
|
||||||
|
\usetikzlibrary{arrows} % Arrow tip library
|
||||||
|
\usetikzlibrary{arrows.meta} % Add some arrows
|
||||||
|
\usetikzlibrary{calc} % The library allows advanced Coordinate Calculations
|
||||||
|
\usetikzlibrary{intersections} % calculate intersections of paths
|
||||||
|
\usetikzlibrary{matrix} %
|
||||||
|
\usetikzlibrary{patterns} %
|
||||||
|
\usetikzlibrary{shapes} % Defines circle and rectangle
|
||||||
|
\usetikzlibrary{shapes.geometric} % Use for the shape diamond and isosceles triangle
|
||||||
|
\usetikzlibrary{snakes} % snake=coil and snake=zigzag using segment amplitude=10pt
|
||||||
|
\usetikzlibrary{positioning} % Additional options for placing nodes
|
||||||
|
\usetikzlibrary{3d} % Plot 3D shapes
|
||||||
|
\usetikzlibrary{spy} % Creating a magnified area
|
||||||
|
\usetikzlibrary{decorations.text} % Used to make text follows a curve
|
||||||
|
\usetikzlibrary{decorations.pathmorphing} % deformation of a path
|
||||||
|
\usetikzlibrary{decorations.markings} % Used for spring and damper
|
||||||
|
\usetikzlibrary{babel} % A tiny library that make the interaction with the babel package easier
|
||||||
|
\usetikzlibrary{plotmarks} % This library defines a number of plot marks
|
||||||
|
\usetikzlibrary{fit} % Used to make rectangle as nodes by specifying two points
|
||||||
|
\usetikzlibrary{backgrounds} % Used to put things under others
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* PGF Plot libraries and config
|
||||||
|
#+begin_src latex
|
||||||
|
\usepgfplotslibrary{patchplots}
|
||||||
|
\usepgfplotslibrary{groupplots}
|
||||||
|
|
||||||
|
\pgfplotsset{compat=newest}
|
||||||
|
\pgfplotsset{plot coordinates/math parser=false}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Setup size of figures
|
||||||
|
#+begin_src latex
|
||||||
|
\newlength{\fheight}
|
||||||
|
\newlength{\fwidth}
|
||||||
|
|
||||||
|
\setlength{\fwidth}{85mm}
|
||||||
|
\setlength{\fheight}{112mm}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Setup Arrows style
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{>=Stealth}
|
||||||
|
% Setup default Linewidth
|
||||||
|
\tikzset{every path/.style={line width=1pt}}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Colors
|
||||||
|
#+begin_src latex
|
||||||
|
\usepackage{xcolor}% Color extension
|
||||||
|
|
||||||
|
\definecolor{colorblack}{rgb}{0, 0, 0}
|
||||||
|
\definecolor{colorblue}{HTML}{0072bd}
|
||||||
|
\definecolor{colorred}{HTML}{d95218}
|
||||||
|
\definecolor{coloryellow}{HTML}{ecb01f}
|
||||||
|
\definecolor{colorpurple}{HTML}{7d2e8e}
|
||||||
|
\definecolor{colorgreen}{HTML}{77ab2f}
|
||||||
|
|
||||||
|
\definecolor{lightblue}{HTML}{dbf0ff}
|
||||||
|
\definecolor{lightred}{HTML}{f9d9cb}
|
||||||
|
\definecolor{lightyellow}{HTML}{faf0d1}
|
||||||
|
\definecolor{lightpurple}{HTML}{efdcf4}
|
||||||
|
\definecolor{lightgreen}{HTML}{e6f3d3}
|
||||||
|
|
||||||
|
% Main color
|
||||||
|
\definecolor{maincolor}{RGB}{89, 9, 38}
|
||||||
|
\definecolor{secondcolor}{RGB}{20, 9, 89}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Control
|
||||||
|
** Blocks
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
block/.style n args={2}{%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
minimum width = #1,
|
||||||
|
minimum height = #2,
|
||||||
|
},
|
||||||
|
block/.default={1.2cm}{1.0cm}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Branches
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzstyle{branch}=[fill,shape=circle,minimum size=4pt,inner sep=0pt]
|
||||||
|
\tikzstyle{->top}=[-{Stealth[color=black, scale=0.8]}, draw=white, double=black, double distance=1pt, line width=1pt]
|
||||||
|
\tikzstyle{<-top}=[{stealth[color=black, scale=0.8]}-, draw=white, double=black, double distance=1pt, line width=1pt]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Hand Writen Style
|
||||||
|
Usefull for schematic plots
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzstyle{handwriten}=[decorate,decoration={random steps,amplitude=0.1pt,segment length=0.8pt}]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** DAC
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
DAC/.style={%
|
||||||
|
draw,
|
||||||
|
signal,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** ADC
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
ADC/.style={%
|
||||||
|
draw,
|
||||||
|
signal,
|
||||||
|
signal to = west,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Gain
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
gain right/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=-90
|
||||||
|
},
|
||||||
|
gain left/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=90
|
||||||
|
},
|
||||||
|
gain top/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=0
|
||||||
|
},
|
||||||
|
gain bottom/.style={%
|
||||||
|
draw,
|
||||||
|
regular polygon,
|
||||||
|
regular polygon sides = 3,
|
||||||
|
inner sep = 2pt,
|
||||||
|
shape border rotate=180
|
||||||
|
},
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Add / Substract / Divide / Multiply block
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{% Add block with Circled operations
|
||||||
|
addc/.style n args={5}{%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
circle,
|
||||||
|
outer sep = 0pt,
|
||||||
|
inner sep = 0pt,
|
||||||
|
minimum size = 2em,
|
||||||
|
execute at begin node={\LARGE $#1$},
|
||||||
|
append after command={\pgfextra{\let\mainnode=\tikzlastnode}
|
||||||
|
\ifx#2\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, above left] at (\mainnode.west) {$#2$}%
|
||||||
|
\fi
|
||||||
|
\ifx#3\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, above right] at (\mainnode.north) {$#3$}%
|
||||||
|
\fi
|
||||||
|
\ifx#4\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, below right] at (\mainnode.east) {$#4$}%
|
||||||
|
\fi
|
||||||
|
\ifx#5\empty\else
|
||||||
|
node[draw, circle, outer sep=6pt, inner sep=0pt, below left] at (\mainnode.south) {$#5$}%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addc/.default={+}{}{}{}{},
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{% Add Block
|
||||||
|
addb/.style n args={5}{%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
circle,
|
||||||
|
outer sep = 0pt,
|
||||||
|
inner sep = 0pt,
|
||||||
|
minimum size = 2em,
|
||||||
|
execute at begin node={\LARGE $#1$},
|
||||||
|
append after command={\pgfextra{\let\mainnode=\tikzlastnode}
|
||||||
|
\ifx#2\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, above left] at (\mainnode.west) {$#2$}%
|
||||||
|
\fi
|
||||||
|
\ifx#3\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, above right] at (\mainnode.north) {$#3$}%
|
||||||
|
\fi
|
||||||
|
\ifx#4\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, below right] at (\mainnode.east) {$#4$}%
|
||||||
|
\fi
|
||||||
|
\ifx#5\empty\else
|
||||||
|
node[outer sep=2pt, inner sep=0pt, below left] at (\mainnode.south) {$#5$}%
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
},
|
||||||
|
addb/.default={+}{}{}{}{},
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Plots
|
||||||
|
** Default line caps
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{
|
||||||
|
every axis plot/.append style={line join=round},
|
||||||
|
every axis plot/.append style={line cap=round},
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Grid
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{grid style={black}}
|
||||||
|
\pgfplotsset{major grid style={black!30!white}}
|
||||||
|
\pgfplotsset{minor grid style={black!10!white}}
|
||||||
|
\pgfplotsset{xmajorgrids}
|
||||||
|
\pgfplotsset{ymajorgrids}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Lines
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{separate axis lines=false} % draw axis as rectangle and not as 4 lines
|
||||||
|
\pgfplotsset{every outer x axis line/.append style={black}}
|
||||||
|
\pgfplotsset{every outer y axis line/.append style={black}}
|
||||||
|
\pgfplotsset{axis background/.style={fill=white}}
|
||||||
|
\pgfplotsset{axis x line*=bottom} % solid line on the bottom with thin on the top
|
||||||
|
\pgfplotsset{axis y line*=left} % solid line on the left with thin on the right
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Ticks
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{every y tick label/.append style={font=\color{black}}}
|
||||||
|
\pgfplotsset{every y tick/.append style={black}}
|
||||||
|
\pgfplotsset{every x tick label/.append style={font=\color{black}}}
|
||||||
|
\pgfplotsset{every x tick/.append style={black}}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Size
|
||||||
|
If =scale only axis=false= (the default), pgfplots will try to produce the desired width including labels, titles and ticks.
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{scale only axis=true}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Label
|
||||||
|
Used to align all of ylabel of one figure.
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{ylabel absolute}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Legend
|
||||||
|
#+begin_src latex
|
||||||
|
% https://tex.stackexchange.com/questions/54794/using-a-pgfplots-style-legend-in-a-plain-old-tikzpicture#54834
|
||||||
|
|
||||||
|
% argument #1: any options
|
||||||
|
\newenvironment{customlegend}[1][]{%
|
||||||
|
\begingroup
|
||||||
|
% inits/clears the lists (which might be populated from previous
|
||||||
|
% axes):
|
||||||
|
\csname pgfplots@init@cleared@structures\endcsname
|
||||||
|
\pgfplotsset{#1}%
|
||||||
|
}{%
|
||||||
|
% draws the legend:
|
||||||
|
\csname pgfplots@createlegend\endcsname
|
||||||
|
\endgroup
|
||||||
|
}%
|
||||||
|
|
||||||
|
% makes \addlegendimage available (typically only available within an
|
||||||
|
% axis environment):
|
||||||
|
\def\addlegendimage{\csname pgfplots@addlegendimage\endcsname}
|
||||||
|
|
||||||
|
% definition to insert numbers
|
||||||
|
% \pgfkeys{/pgfplots/number in legend/.style={%
|
||||||
|
% /pgfplots/legend image code/.code={%
|
||||||
|
% \node at (0.125,-0.0225){#1}; % <= changed x value
|
||||||
|
% },%
|
||||||
|
% },
|
||||||
|
% }
|
||||||
|
\pgfplotsset{
|
||||||
|
every legend to name picture/.style={west}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Upper and Lower bounds
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{upperbound}=[line cap=round, postaction={decorate,draw,decoration={border, segment length=0.2cm, amplitude=0.3cm, angle=60}}]
|
||||||
|
\pgfplotsset{lowerbound}=[line cap=round, postaction={decorate,draw,decoration={border, segment length=0.2cm, amplitude=0.3cm, angle=-60}}]
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And we add the corresdonding
|
||||||
|
#+begin_src latex
|
||||||
|
\pgfplotsset{
|
||||||
|
/pgfplots/upperbound/.style 1 args={
|
||||||
|
legend image code/.code={
|
||||||
|
\draw[##1, upperbound]
|
||||||
|
plot coordinates {
|
||||||
|
(0cm,0cm)
|
||||||
|
(0.6cm,0cm)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Pole
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
pole/.style{%
|
||||||
|
color=red,
|
||||||
|
cross out,
|
||||||
|
draw,
|
||||||
|
inner sep=0pt,
|
||||||
|
outer sep=0pt,
|
||||||
|
minimum size=#1pt
|
||||||
|
},
|
||||||
|
pole/.default={4}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Zero
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
zero/.style{%
|
||||||
|
color=red,
|
||||||
|
circle,
|
||||||
|
draw,
|
||||||
|
inner sep=0pt,
|
||||||
|
outer sep=0pt,
|
||||||
|
minimum size=#1pt
|
||||||
|
},
|
||||||
|
zero/.default={4}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Mechanical
|
||||||
|
** Spring
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
spring/.style={%
|
||||||
|
thick,
|
||||||
|
decoration={
|
||||||
|
zigzag,
|
||||||
|
pre length = #1cm,
|
||||||
|
post length = #1cm,
|
||||||
|
segment length = 6
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
spring/.default={0.2}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Coil
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
coil/.style n args={2}{%
|
||||||
|
thick,
|
||||||
|
decoration={
|
||||||
|
coil,
|
||||||
|
pre length = #1cm,
|
||||||
|
post length = #2cm,
|
||||||
|
segment length = 4
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
coil/.default={0.3}{0.3}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Damper
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
damper/.style n args={2}{%
|
||||||
|
thick,
|
||||||
|
decoration={markings, mark connection node=dmp, mark=at position 0.5 with {
|
||||||
|
\node (dmp) [thick,
|
||||||
|
inner sep = 0pt,
|
||||||
|
transform shape,
|
||||||
|
rotate =-90,
|
||||||
|
minimum width = #1pt,
|
||||||
|
minimum height = #2pt,
|
||||||
|
draw=none] {};
|
||||||
|
\draw [thick] ($(dmp.north east)+(0.6*#2pt,0)$) -- (dmp.south east) -- (dmp.south west) -- ($(dmp.north west)+(0.6*#2pt,0)$);
|
||||||
|
\draw [thick] ($(dmp.north)+(0,-0.3*#1pt)$) -- ($(dmp.north)+(0,0.3*#1pt)$);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
damper/.default={12}{3}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Actuator
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
actuator/.style n args={2}{%
|
||||||
|
thick,
|
||||||
|
draw=none,
|
||||||
|
decoration={
|
||||||
|
markings,
|
||||||
|
mark connection node=my node,
|
||||||
|
mark=at position .5 with {
|
||||||
|
\node [draw, inner sep=0pt, minimum width=#1cm, minimum height=#2cm,
|
||||||
|
transform shape, fill=white] (my node) {};
|
||||||
|
},
|
||||||
|
mark=at position .0 with {
|
||||||
|
\draw[<-] (0, 0) -- (my node);
|
||||||
|
},
|
||||||
|
mark=at position 1.0 with {
|
||||||
|
\draw[<-] (0, 0) -- (my node);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
decorate
|
||||||
|
},
|
||||||
|
actuator/.default={0.5}{0.2}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Ground
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
ground/.style n args={2}{%
|
||||||
|
fill,
|
||||||
|
pattern = north east lines,
|
||||||
|
draw = none,
|
||||||
|
anchor = north,
|
||||||
|
minimum width = #1cm,
|
||||||
|
minimum height = #2cm,
|
||||||
|
append after command={
|
||||||
|
(\tikzlastnode.north west) edge (\tikzlastnode.north east)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ground/.default={2.5}{0.3}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Force Sensor
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
forcesensor/.style n args={2}{%
|
||||||
|
rectangle,
|
||||||
|
outer sep=0pt,
|
||||||
|
inner sep=0pt,
|
||||||
|
draw=black,
|
||||||
|
fill=white!60!black,
|
||||||
|
anchor=south,
|
||||||
|
minimum width =#1cm,
|
||||||
|
minimum height=#2cm,
|
||||||
|
append after command={
|
||||||
|
[every edge/.append style={
|
||||||
|
thick,
|
||||||
|
black,
|
||||||
|
}]
|
||||||
|
(\tikzlastnode.north west) edge (\tikzlastnode.south east)
|
||||||
|
(\tikzlastnode.north east) edge (\tikzlastnode.south west)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
forcesensor/.default={2.0}{0.5}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Inertial Sensor
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
inertialsensor/.style={%
|
||||||
|
rectangle,
|
||||||
|
outer sep=0pt,
|
||||||
|
inner sep=0pt,
|
||||||
|
draw=black,
|
||||||
|
fill=white!60!black,
|
||||||
|
anchor=south east,
|
||||||
|
minimum size=#1cm,
|
||||||
|
append after command={
|
||||||
|
[every edge/.append style={
|
||||||
|
thick,
|
||||||
|
black,
|
||||||
|
}]
|
||||||
|
(\tikzlastnode.north west) edge (\tikzlastnode.south east)
|
||||||
|
(\tikzlastnode.north east) edge (\tikzlastnode.south west)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
inertialsensor/.default={0.3}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Cross
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzstyle{cross}=[path picture={
|
||||||
|
\draw[black]
|
||||||
|
(path picture bounding box.south east) -- (path picture bounding box.north west) (path picture bounding box.south west) -- (path picture bounding box.north east);
|
||||||
|
}]
|
||||||
|
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Piezoelectric actuator
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
piezo/.style n args={3}{%
|
||||||
|
draw,
|
||||||
|
rectangle,
|
||||||
|
minimum width = #1cm,
|
||||||
|
minimum height = #2cm,
|
||||||
|
fill=blue!10!white,
|
||||||
|
anchor=center,
|
||||||
|
append after command={
|
||||||
|
[every edge/.append style={
|
||||||
|
thick,
|
||||||
|
black,
|
||||||
|
}]
|
||||||
|
\foreach \i in {1,...,#3}{
|
||||||
|
(${\i/(1+#3)}*(\tikzlastnode.north west)+{(1+#3-\i)/(1+#3)}*(\tikzlastnode.south west)+0.1*(#1,0)$) edge (${\i/(1+#3)}*(\tikzlastnode.north east)+{(1+#3-\i)/(1+#3)}*(\tikzlastnode.south east)-0.1*(#1,0)$)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
piezo/.default={2}{4}{10}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Voice coil
|
||||||
|
#+begin_src latex
|
||||||
|
\def\voicecoil#1#2#3{
|
||||||
|
% ======================
|
||||||
|
% Parameters
|
||||||
|
% ======================
|
||||||
|
\def\voicecoilw{#1} % Total Width
|
||||||
|
\def\voicecoilh{#2} % Total Height
|
||||||
|
|
||||||
|
\def\magnetw{\voicecoilw} % Width of the magnet
|
||||||
|
\def\magneth{\voicecoilh/1.4} % Height of the magnet
|
||||||
|
|
||||||
|
\def\magnetwb{0.15*\magnetw} % Width of the borders of the magnet
|
||||||
|
\def\magnetmw{0.15*\magnetw} % Width of the middle part of the magnet
|
||||||
|
\def\magnetwg{0.5*\magnetw} % Width of the gap of the magnet
|
||||||
|
|
||||||
|
\def\magnethl{\magnetwb} % Height of the low part of the magnet
|
||||||
|
\def\magnetmh{0.15*\magneth} % Height of the middle part of the magnet
|
||||||
|
\def\magnethg{0.2*\magneth} % Height of the gap of the magnet
|
||||||
|
% ======================
|
||||||
|
|
||||||
|
\begin{scope}[shift={(0.5*\voicecoilw, 0.5*\voicecoilh)}, rotate=#3, shift={(0, -0.5*\voicecoilh)}]
|
||||||
|
% ======================
|
||||||
|
% Magnet
|
||||||
|
% ======================
|
||||||
|
\draw[fill=white] (0, 0) -| ++(0.5*\magnetw, \magneth) -| ++(-0.5*\magnetw+0.5*\magnetwg, -\magnethg) -| (0.5*\magnetw-\magnetwb, \magnethl) -| (-0.5*\magnetw+\magnetwb, \magneth-\magnethg) -| (-0.5*\magnetwg, \magneth) -| (-0.5*\magnetw, 0) -- (cycle);
|
||||||
|
\begin{scope}[shift={(0, \magnethl)}]
|
||||||
|
\draw[fill=red] (-0.5*\magnetmw, 0) rectangle (0.5*\magnetmw, \magnetmh);
|
||||||
|
\draw[fill=blue] (-0.5*\magnetmw, \magnetmh) rectangle (0.5*\magnetmw, 2*\magnetmh);
|
||||||
|
% Top conductive Magnet
|
||||||
|
\draw[fill=white] (-0.5*\magnetmw, 2*\magnetmh) -| (0.5*\magnetmw, -\magnethl+\magneth-\magnethg) -| ++(0.1, \magnethg) -| ++(-0.2-\magnetmw, -\magnethg) -| (-0.5*\magnetmw, \magnetmh);
|
||||||
|
\end{scope}
|
||||||
|
% ======================
|
||||||
|
|
||||||
|
% ======================
|
||||||
|
% Coil
|
||||||
|
% ======================
|
||||||
|
\pgfmathsetmacro{\coilwidth}{0.5*0.5*\magnetmw+0.5*0.1+0.25*\magnetwg}%
|
||||||
|
\draw[] ( \coilwidth, 0.5*\magneth) -- ++(0, 0.7*\magneth);
|
||||||
|
\draw[] (-\coilwidth, 0.5*\magneth) -- ++(0, 0.7*\magneth);
|
||||||
|
% Point on the coil
|
||||||
|
\foreach \x in {0,1,...,9}
|
||||||
|
{
|
||||||
|
\node[circle,inner sep=0.6pt,fill] at ( \coilwidth, \x*0.7*\magneth/10+0.5*\magneth);
|
||||||
|
\node[circle,inner sep=0.6pt,fill] at (-\coilwidth, \x*0.7*\magneth/10+0.5*\magneth);
|
||||||
|
}
|
||||||
|
\draw[fill=white] (-0.5*\magnetw, 1.2*\magneth) rectangle ++(\magnetw, \magnethg);
|
||||||
|
% ======================
|
||||||
|
|
||||||
|
% ======================
|
||||||
|
% Coordinates
|
||||||
|
% ======================
|
||||||
|
% Force
|
||||||
|
\coordinate[] (vc_force) at (0, \magneth-0.5*\magnethg);
|
||||||
|
% Coil
|
||||||
|
\coordinate[] (vc_coil) at (0, \voicecoilh);
|
||||||
|
% Magnet
|
||||||
|
\coordinate[] (vc_magnet) at (0, 0);
|
||||||
|
% Coil Wires
|
||||||
|
\coordinate[] (vc_wire_one) at ( \coilwidth, 1.2*\magneth);
|
||||||
|
\coordinate[] (vc_wire_two) at (-\coilwidth, 1.2*\magneth);
|
||||||
|
% ======================
|
||||||
|
\end{scope}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Axis Rotator
|
||||||
|
#+begin_src latex
|
||||||
|
\newcommand{\AxisRotator}[1][rotate=0]{%
|
||||||
|
\tikz [x=0.1cm,y=0.30cm,-stealth,#1] \draw (0,0) arc (-150:150:1 and 1);%
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Optics
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
->-/.style={
|
||||||
|
decoration={
|
||||||
|
markings,
|
||||||
|
mark = at position #1 with {\arrow{>}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
postaction={decorate}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\tikzset{%
|
||||||
|
-<-/.style={
|
||||||
|
decoration={
|
||||||
|
markings,
|
||||||
|
mark = at position #1 with {\arrow{<}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
postaction={decorate}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Misc
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{%
|
||||||
|
labelc/.style= {%
|
||||||
|
draw,
|
||||||
|
fill=white,
|
||||||
|
shape=circle,
|
||||||
|
inner sep=2pt,
|
||||||
|
outer sep=6pt,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* More Defaults specific to this paper
|
||||||
|
#+begin_src latex
|
||||||
|
\tikzset{block/.default={0.8cm}{0.8cm}}
|
||||||
|
\tikzset{addb/.append style={scale=0.7}}
|
||||||
|
\tikzset{node distance=0.6}
|
||||||
|
#+end_src
|
110
tikz/flycheck_figures.org
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
#+TITLE: Tikz Figures
|
||||||
|
:DRAWER:
|
||||||
|
#+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>
|
||||||
|
|
||||||
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{/home/thomas/Cloud/thesis/papers/dehaeze21_mechatronics_approach_nass/tikz/}{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+ :eval no-export
|
||||||
|
#+PROPERTY: header-args:latex+ :exports both
|
||||||
|
#+PROPERTY: header-args:latex+ :mkdirp yes
|
||||||
|
#+PROPERTY: header-args:latex+ :output-dir figs
|
||||||
|
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
|
||||||
|
:END:
|
||||||
|
|
||||||
|
* Mechatronic Approach
|
||||||
|
#+begin_src latex :file nass_mechatronics_approach.pdf
|
||||||
|
\graphicspath{ {/home/thomas/Cloud/thesis/papers/dehaeze21_mechatronics_approach_nass/tikz/figs-tikz} }
|
||||||
|
|
||||||
|
\begin{tikzpicture}
|
||||||
|
% Styles
|
||||||
|
\tikzset{myblock/.style= {draw, fill=white, text width=3cm, align=center, minimum height=1.8cm}};
|
||||||
|
\tikzset{mylabel/.style= {anchor=north, below, font=\bfseries\small, color=black, text width=3cm, align=center}};
|
||||||
|
\tikzset{mymodel/.style= {anchor=south, above, font=\small, color=black, text width=3cm, align=center}};
|
||||||
|
\tikzset{mystep/.style= {->, ultra thick}};
|
||||||
|
|
||||||
|
% Blocks
|
||||||
|
\node[myblock, fill=lightblue, draw, label={[mylabel, text width=9.8cm] Dynamical Models / Simulations / Control}, minimum height = 8cm, text width = 9.8cm] (model) at (0, 0) {};
|
||||||
|
|
||||||
|
\node[myblock, fill=lightgreen, label={[mylabel] $\mu$ Station}, left = 3 of model.south west, anchor=south east] (mustation) {};
|
||||||
|
\node[myblock, fill=lightgreen, label={[mylabel] Disturbances}, left = 3 of model.west] (dist) {};
|
||||||
|
\node[myblock, fill=lightgreen, label={[mylabel] $\nu$ Hexapod}, left = 3 of model.north west, anchor=north east] (nanohexapod) {};
|
||||||
|
|
||||||
|
\node[myblock, fill=lightyellow, label={[mylabel] Mech. Design}, above = 1 of model.north] (mechanical) {};
|
||||||
|
\node[myblock, fill=lightyellow, label={[mylabel] Instrumentation}, left = 1 of mechanical] (instrumentation) {};
|
||||||
|
\node[myblock, fill=lightyellow, label={[mylabel] FEM}, right = 1 of mechanical] (fem) {};
|
||||||
|
|
||||||
|
\node[myblock, fill=lightred, label={[mylabel] Assembly}, right = 3 of model.north east, anchor=north west] (mounting) {};
|
||||||
|
\node[myblock, fill=lightred, label={[mylabel] Test Benches}, right = 3 of model.east] (testbenches) {};
|
||||||
|
\node[myblock, fill=lightred, label={[mylabel] Implementation}, right = 3 of model.south east, anchor=south west] (implementation) {};
|
||||||
|
|
||||||
|
% Text
|
||||||
|
\node[mymodel] at (mustation.south) {Multiple Stages\\Complex Dynamics\\Solid Bodies};
|
||||||
|
\node[mymodel] at (dist.south) {Ground Motion\\Vibrations\\Pos. Errors};
|
||||||
|
\node[mymodel] at (nanohexapod.south) {Concepts (Soft, Stiff) \\ Geometry \\ Sensors};
|
||||||
|
|
||||||
|
\node[mymodel] at (instrumentation.south) {Sensors\\Amplifiers\\Actuators};
|
||||||
|
\node[mymodel] at (mechanical.south) {Geometry\\Part Optimization\\Integration};
|
||||||
|
\node[mymodel] at (fem.south) {Flexible joints\\APA\\Plates};
|
||||||
|
|
||||||
|
\node[mymodel] at (mounting.south) {Mounting Tools:\\Struts\\ Nano-Hexapod};
|
||||||
|
\node[mymodel] at (testbenches.south) {Instrumentation\\APA, Struts\\Hexapod};
|
||||||
|
\node[mymodel] at (implementation.south) {Test Benches\\$\mu$ Station};
|
||||||
|
|
||||||
|
% Links
|
||||||
|
\draw[->] (dist.east) -- node[above, midway]{Measurements} node[below,midway]{} (dist.east-|model.west);
|
||||||
|
\draw[->] (mustation.east) -- node[above, midway]{Measurements} node[below, midway]{CAD Model} (mustation.east-|model.west);
|
||||||
|
|
||||||
|
\draw[->] ($(nanohexapod.east-|model.west)+(0, 0.2)$) -- node[above, midway]{Optimization} ($(nanohexapod.east)+(0, 0.2)$);
|
||||||
|
\draw[<-] ($(nanohexapod.east-|model.west)-(0, 0.2)$) -- node[below, midway]{Model} ($(nanohexapod.east)-(0, 0.2)$);
|
||||||
|
|
||||||
|
\draw[->] ($(fem.south|-model.north)+(0.2, 0)$) -- node[right, midway]{Specif.} ($(fem.south)+(0.2,0)$);
|
||||||
|
\draw[<-] ($(fem.south|-model.north)-(0.2, 0)$) -- node[left, midway,align=right]{Super\\Element} ($(fem.south)-(0.2,0)$);
|
||||||
|
|
||||||
|
\draw[->] ($(mechanical.south|-model.north)+(0.2, 0)$) -- node[right, midway]{Specif.} ($(mechanical.south)+(0.2,0)$);
|
||||||
|
\draw[<-] ($(mechanical.south|-model.north)-(0.2, 0)$) -- node[left, midway]{3D parts} ($(mechanical.south)-(0.2,0)$);
|
||||||
|
|
||||||
|
\draw[->] ($(instrumentation.south|-model.north)+(0.2, 0)$) -- node[right, midway]{Specif.} ($(instrumentation.south)+(0.2,0)$);
|
||||||
|
\draw[<-] ($(instrumentation.south|-model.north)-(0.2, 0)$) -- node[left, midway]{Model} ($(instrumentation.south)-(0.2,0)$);
|
||||||
|
|
||||||
|
\draw[->] ($(testbenches.west-|model.east)+(0, 0.2)$) -- node[above, midway]{Control Laws} ($(testbenches.west)+(0, 0.2)$);
|
||||||
|
\draw[<-] ($(testbenches.west-|model.east)-(0, 0.2)$) -- node[below, midway]{Refinement} ($(testbenches.west)-(0, 0.2)$);
|
||||||
|
|
||||||
|
\draw[->] ($(implementation.west-|model.east)+(0, 0.2)$) -- node[above, midway]{Control Laws} ($(implementation.west)+(0, 0.2)$);
|
||||||
|
\draw[<-] ($(implementation.west-|model.east)-(0, 0.2)$) -- node[below, midway]{Refinement} ($(implementation.west)-(0, 0.2)$);
|
||||||
|
|
||||||
|
% Steps
|
||||||
|
\draw[mystep] (mustation.north) -- (dist.south);
|
||||||
|
\draw[mystep] (dist.north) -- (nanohexapod.south);
|
||||||
|
\draw[mystep, postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={Validation of Concept}}}] (nanohexapod.north) to[out=90, in=180] (instrumentation.west);
|
||||||
|
\draw[mystep] (instrumentation.east) -- (mechanical.west);
|
||||||
|
\draw[mystep] (mechanical.east) -- (fem.west);
|
||||||
|
\draw[mystep, postaction={decorate,decoration={raise=1ex,text along path,text align=center,text={Procurement}}}] (fem.east) to[out=0, in=90] (mounting.north);
|
||||||
|
\draw[mystep] (mounting.south) -- (testbenches.north);
|
||||||
|
\draw[mystep] (testbenches.south) -- (implementation.north);
|
||||||
|
|
||||||
|
% Inside Model
|
||||||
|
\node[inner sep=1pt, outer sep=6pt, anchor=north west, draw, fill=white, thin] (multibodymodel) at ($(model.north west) - (0, 0.5)$)
|
||||||
|
{\includegraphics[width=5.6cm]{simscape_nano_hexapod.png}};
|
||||||
|
|
||||||
|
\node[inner sep=1pt, outer sep=6pt, anchor=south west, draw, fill=white, thin] (simscape) at (model.south west)
|
||||||
|
{\includegraphics[width=5.6cm]{simscape_picture.jpg}};
|
||||||
|
|
||||||
|
% Feedback Model
|
||||||
|
\node[inner sep=3pt, outer sep=6pt, anchor=north east, draw, fill=white, thin] (simscape_sim) at ($(model.north east) - (0, 0.5)$)
|
||||||
|
{\includegraphics[width=3.6cm]{simscape_simulations.pdf}};
|
||||||
|
|
||||||
|
% FeedBack
|
||||||
|
\node[inner sep=3pt, outer sep=6pt, anchor=south east, draw, fill=white, thin] (feedback) at (model.south east)
|
||||||
|
{\includegraphics[width=3.6cm]{classical_feedback_small.pdf}};
|
||||||
|
\end{tikzpicture}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+RESULTS:
|
||||||
|
[[file:figs/nass_mechatronics_approach.png]]
|