Add few figures + tikz config

This commit is contained in:
Thomas Dehaeze 2021-07-12 14:49:24 +02:00
parent 60f55175b3
commit b3c58e77b2
24 changed files with 2512 additions and 77 deletions

View File

@ -1,10 +1,14 @@
#+TITLE: MECHATRONICS APPROACH FOR THE DEVELOPMENT OF A NANO-ACTIVE-STABILIZATION-SYSTEM
:DRAWER:
#+LATEX_CLASS: jacow
#+LaTeX_CLASS_OPTIONS: [a4paper, keeplastbox, biblatex]
#+LATEX_CLASS_OPTIONS: [a4paper, keeplastbox, biblatex]
#+OPTIONS: toc:nil
#+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)}}}
#+AUTHOR: T. Dehaeze\textsuperscript{1,}\thanks{thomas.dehaeze@esrf.fr}, J. Bonnefoy, ESRF, Grenoble, France
#+AUTHOR: @@latex:\\@@
@ -12,12 +16,13 @@
#+AUTHOR: @@latex:\\@@
#+AUTHOR: \textsuperscript{1}also at Precision Mechatronics Laboratory, University of Liege, Belgium
#+LaTeX_HEADER: \usepackage{pdfpages,multirow,ragged2e}
#+LaTeX_HEADER: \usepackage{graphicx,tabularx,booktabs}
#+LaTeX_HEADER: \usepackage{blindtext}
#+LaTeX_HEADER: \usepackage[USenglish]{babel}
#+LaTeX_HEADER: \addbibresource{ref.bib}
#+LaTeX_HEADER: \setcounter{footnote}{1}
#+LATEX_HEADER: \usepackage{pdfpages,multirow,ragged2e}
#+LATEX_HEADER: \usepackage{graphicx,tabularx,booktabs}
#+LATEX_HEADER: \usepackage{blindtext}
#+LATEX_HEADER: \usepackage[USenglish]{babel}
#+LATEX_HEADER: \setcounter{footnote}{1}
#+LATEX_HEADER_EXTRA: \usepackage[colorlinks=true, allcolors=blue]{hyperref}
#+LATEX_HEADER_EXTRA: \addbibresource{ref.bib}
:END:
* BUILD :noexport:
@ -32,9 +37,6 @@
("\\paragraph{%s}" . "\\paragraph*{%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
* 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.
#+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
* ACKNOWLEDGMENTS
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.

View File

@ -1,4 +1,4 @@
% Created 2021-06-28 lun. 11:31
% Created 2021-07-12 lun. 14:47
% Intended LaTeX compiler: pdflatex
\documentclass[a4paper, keeplastbox, biblatex]{jacow}
@ -6,10 +6,11 @@
\usepackage{graphicx,tabularx,booktabs}
\usepackage{blindtext}
\usepackage[USenglish, english]{babel}
\addbibresource{ref.bib}
\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}
\date{2021-06-28}
\date{2021-07-12}
\title{MECHATRONICS APPROACH FOR THE DEVELOPMENT OF A NANO-ACTIVE-STABILIZATION-SYSTEM}
\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.
\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}
\label{sec:orgd68d15d}
\label{sec:org45fae73}
\section{ACKNOWLEDGMENTS}
\label{sec:orgf6f432d}
\label{sec:org36b4615}
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
\end{document}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

View File

@ -1,66 +1,57 @@
@article{martinez2016,
title = {ID16B: a hard X-ray nanoprobe beamline at the ESRF for nano-analysis},
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},
journal = {Journal of synchrotron radiation},
volume = {23},
pages = {344--352},
year = {2016},
month = {1},
doi = {10.1107/S1600577515019839},
publisher = {International Union of Crystallography}
}
@unpublished{DucotteMEDSI2016,
author = {Ducotte, L and Clement, J.M and Gleyzolle, H and Wright, J},
title = {The new ID11 nanoscope end-station - a nano-tomography scanner},
note = {presented at MEDSI'16, Barcelona, Spain, Sept. 2016, unpublished}
}
@inproceedings{ogurreck2013nanotomography,
title = {The nanotomography endstation at the PETRA III imaging beamline},
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},
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}
@inproceedings{dehaeze18_sampl_stabil_for_tomog_exper,
author = {Thomas Dehaeze and M. Magnin Mattenet and Christophe
Collette},
title = {Sample Stabilization For Tomography Experiments In Presence
Of Large Plant Uncertainty},
booktitle = {MEDSI'18},
year = 2018,
number = 10,
pages = {153--157},
doi = {10.18429/JACoW-MEDSI2018-WEOAMA02},
url = {https://doi.org/10.18429/JACoW-MEDSI2018-WEOAMA02},
address = {Geneva, Switzerland},
isbn = {978-3-95450-207-3},
language = {english},
month = {Dec},
publisher = {JACoW Publishing},
series = {Mechanical Engineering Design of Synchrotron Radiation
Equipment and Instrumentation},
venue = {Paris, France},
}
@article{McInroy1999a,
author = {McInroy, J.E.},
journal = {Proc. of the 1999 IEEE International Conference On Control Applications, Kohala Coast, Hawaii, USA},
pages = {508--513},
title = {Dynamic modeling of flexure jointed hexapods for control purposes},
doi = {10.1109/CCA.1999.806694},
year = {1999}
}
@article{preumont2007,
author = {Preumont, A. and Horodinca, M. and Romanescu, I. and de Marneffe, B. and Avraam, M. and Deraemaeker, A. and Bossens, F.},
journal = {Journal of Sound and Vibration},
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}
@inproceedings{brumund21_multib_simul_reduc_order_flexib_bodies_fea,
author = {Philipp Brumund and Thomas Dehaeze},
title = {Multibody Simulations with Reduced Order Flexible Bodies
obtained by FEA},
booktitle = {MEDSI'20},
year = 2021,
language = {english},
publisher = {JACoW Publishing},
series = {Mechanical Engineering Design of Synchrotron Radiation
Equipment and Instrumentation},
venue = {Chicago, USA},
}
@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
View 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
View 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}

1
tikz/figs Symbolic link
View File

@ -0,0 +1 @@
../paper/figs

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

273
tikz/figures.org Normal file
View 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
View 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
View 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]]

Binary file not shown.