Update for the new hugo website

This commit is contained in:
2026-09-27 19:44:53 +02:00
parent 5399416bb3
commit 2ab6ae6a55
17 changed files with 1512 additions and 2280 deletions
+13
View File
@@ -0,0 +1,13 @@
.PHONY: help hugo
help:
@echo "Usage: make <command>"
@echo " hugo - Export the org files to the Hugo website (~/Sites/website)"
hugo:
@files=$$(grep -rli --include='*.org' --exclude-dir=.git '^#+hugo_base_dir:' . | sort); \
if [ -z "$$files" ]; then echo "No Org file with #+hugo_base_dir found"; exit 1; fi; \
for f in $$files; do \
echo "==> Exporting $$f"; \
emacsclient -e "(with-current-buffer (find-file-noselect \"$(CURDIR)/$${f#./}\") (org-hugo-export-wim-to-md))" > /dev/null || exit 1; \
done
+14
View File
@@ -1,4 +1,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
#+hugo_base_dir: ~/Sites/website
#+hugo_section: research
#+hugo_bundle: dehaeze21_mechatronics_approach_nass
#+export_file_name: _index
#+hugo_custom_front_matter: :venue "MEDSI 2020" :year 2021 :pubtype "conference"
#+hugo_custom_front_matter: :doi "10.18429/JACoW-MEDSI2020-TUIO02"
#+hugo_custom_front_matter: :code "https://git.tdehaeze.xyz/tdehaeze/dehaeze21_mechatronics_approach_nass"
#+hugo_custom_front_matter: :video "https://www.youtube.com/watch?v=kaplQJoqqDg"
:DRAWER: :DRAWER:
#+SUBTITLE: Dehaeze Thomas, Bonnefoy Julien, Collette Christophe #+SUBTITLE: Dehaeze Thomas, Bonnefoy Julien, Collette Christophe
@@ -47,6 +55,12 @@ The presented development approach is foreseen to be applied more frequently to
#+end_export #+end_export
* Figures ([[file:tikz/figures.org][link]])
:PROPERTIES:
:UNNUMBERED: t
:END:
All the figures in the paper are generated using either [[https://sourceforge.net/projects/pgf/][TikZ]] or [[https://inkscape.org/][Inkscape]]. The code snippets that was used to generate the figures are accessible [[file:tikz/figures.org][here]].
* Cite this work * Cite this work
:PROPERTIES: :PROPERTIES:
:UNNUMBERED: t :UNNUMBERED: t
BIN
View File
Binary file not shown.
+80 -47
View File
@@ -1,55 +1,70 @@
@inproceedings{dehaeze18_sampl_stabil_for_tomog_exper, @InProceedings{dehaeze18_sampl_stabil_tomog_exper_presen,
author = {Thomas Dehaeze and M. Magnin Mattenet and Christophe author = {T. Dehaeze and M. Magnin-Mattenet and C. Collette},
Collette}, title = {{Sample Stabilization for Tomography Experiments in Presence
title = {Sample Stabilization For Tomography Experiments In Presence of Large Plant Uncertainty}},
Of Large Plant Uncertainty}, booktitle = {Proc. 10th Mechanical Engineering Design of Synchrotron
booktitle = {MEDSI'18}, Radiation Equipment and Instrumentation Int. Conf. (MEDSI'18)},
year = 2018, year = 2018,
pages = {153--157},
doi = {10.18429/JACoW-MEDSI2018-WEOAMA02}, doi = {10.18429/JACoW-MEDSI2018-WEOAMA02},
month = 12, language = {english},
} month = {Jun.},
paper = {WEOAMA02},
@inproceedings{brumund21_multib_simul_reduc_order_flexib_bodies_fea, publisher = {JACoW Publishing},
author = {Philipp Brumund and Thomas Dehaeze}, venue = {Paris, France},
title = {Multibody Simulations with Reduced Order Flexible Bodies
obtained by FEA},
booktitle = {MEDSI'20},
year = 2021,
month = 07,
} }
@article{souleille18_concep_activ_mount_space_applic, @article{souleille18_concep_activ_mount_space_applic,
author = {Souleille, Adrien and Lampert, Thibault and Lafarga, V and author = {{Souleille}, A. and {Lampert}, T. and {Lafarga}, V. and
Hellegouarch, Sylvain and Rondineau, Alan and Rodrigues, {Hellegouarch}, S. and {Rondineau}, A. and {Rodrigues}, G. and
Gon{\c{c}}alo and Collette, Christophe}, {Collette}, C.},
title = {A Concept of Active Mount for Space Applications}, title = {{A Concept of Active Mount for Space applications}},
journal = {CEAS Space Journal}, journal = {CEAS Space Journal},
volume = 10,
number = 2,
pages = {157-165},
year = 2018, year = 2018,
doi = {10.1007/s12567-017-0180-6},
keywords = {Launcher disturbances, Vibration damping, Active mount},
month = jun,
} }
@article{dehaeze21_activ_dampin_rotat_platf_using, @article{dehaeze21_activ_dampin_rotat_platf_using,
author = {Thomas Dehaeze and Christophe Collette}, author = {T. Dehaeze and C. Collette},
title = {Active Damping of Rotating Platforms Using Integral Force title = {{Active Damping of Rotating Platforms Using Integral Force
Feedback}, Feedback}},
journal = {Engineering Research Express}, journal = {Engineering Research Express},
volume = 3,
number = 1,
pages = 015036,
year = 2021, year = 2021,
doi = {10.1088/2631-8695/abe803}, doi = {10.1088/2631-8695/abe803},
month = 2, month = {mar},
publisher = {{IOP} Publishing},
} }
@phdthesis{rankers98_machin, @phdthesis{rankers97_machin,
author = {Rankers, Adrian Mathias}, author = {A.M. Rankers},
day = 13,
isbn = {90-365-0957-2},
language = {English},
month = 6,
publisher = {Universiteit Twente},
school = {University of Twente}, school = {University of Twente},
title = {Machine dynamics in mechatronic systems: An engineering title = {{Machine Dynamics in Mechatronic Systems, an Engineering
approach.}, Approach}},
year = 1998, year = 1997,
} }
@book{schmidt20_desig_high_perfor_mechat_third_revis_edition, @book{schmidt20_desig_high_perfor_mechat,
author = {Schmidt, R Munnig and Schitter, Georg and Rankers, Adrian}, author = {Schmidt, R. Munnig and Schitter, G. and Rankers, A. and Van
title = {The Design of High Performance Mechatronics}, Eijk, J.},
title = {{The Design of High Performance Mechatronics: High-Tech
Functionality by Multidisciplinary System Integration}},
year = 2020, year = 2020,
publisher = {Ios Press}, publisher = {IOS Press},
edition = {3nd},
isbn = {161499367X},
} }
@inproceedings{geraldes17_mechat_concep_new_high_dynam_dcm_sirius, @inproceedings{geraldes17_mechat_concep_new_high_dynam_dcm_sirius,
@@ -64,15 +79,20 @@
publisher = {JACoW Publishing, Geneva, Switzerland}, publisher = {JACoW Publishing, Geneva, Switzerland},
} }
@inproceedings{brendike19_esrf_doubl_cryst_monoc_protot, @inproceedings{brendike19_esrf_doubl_cryst_monoc_protot_contr_concep,
author = {Brendike, Maxim and Berruyer, G and Gonzalez, H and author = {M. Brendike and others},
Ducott{\'e}, Ludovic and Guilloud, C and Perez, M and Baker, title = {{ESRF-Double Crystal Monochromator Prototype - Control
R}, Concept}},
title = {ESRF-Double Crystal Monochromator Prototype--Control booktitle = {presented at the 17th Int. Conf. on Accelerator and Large
Concept}, Experimental Physics Control Systems (ICALEPCS'19)},
booktitle = {17th International Conference on Accelerator and Large
Experimental Physics Control Systems},
year = 2019, year = 2019,
pages = 777,
doi = {10.18429/JACoW-ICALEPCS2019-TUCPL05},
language = {english},
month = {Oct.},
paper = {TUCPL05},
publisher = {JACoW Publishing},
venue = {New York, NY, USA},
} }
@article{holler18_omny_tomog_nano_cryo_stage, @article{holler18_omny_tomog_nano_cryo_stage,
@@ -81,18 +101,22 @@
and A. Menzel and B. Sarafimov and S. Maag and X. Wang and V. and A. Menzel and B. Sarafimov and S. Maag and X. Wang and V.
Thominet and H. Walther and T. Lachat and M. Vitins and O. Thominet and H. Walther and T. Lachat and M. Vitins and O.
Bunk}, Bunk},
title = {Omny-A Tomography Nano Cryo Stage}, title = {{Omny-A Tomography Nano Cryo Stage}},
journal = {Review of Scientific Instruments}, journal = {Review of Scientific Instruments},
volume = 89,
number = 4,
pages = 043706,
year = 2018, year = 2018,
doi = {10.1063/1.5020247}, doi = {10.1063/1.5020247},
} }
@misc{dimper15_esrf_upgrad_progr_phase_ii, @techreport{dimper15_esrf_upgrad_progr_phase_ii,
author = {R. Dimper and H. Reichert and P. Raimondi and L. Ortiz and author = {R. Dimper and H. Reichert and P. Raimondi and L. Ortiz and
F. Sette and J. Susini}, F. Sette and J. Susini},
institution = {{ESRF}},
note = {The orange book}, note = {The orange book},
title = {{ESRF} Upgrade Programme Phase {II} (2015-2022) - Technical title = {{ESRF Upgrade Programme Phase {II} (2015-2022) - Technical
Design Study}, Design Study}},
year = 2015, year = 2015,
} }
@@ -108,8 +132,8 @@
author = {A. Preumont and M. Horodinca and I. Romanescu and B. de author = {A. Preumont and M. Horodinca and I. Romanescu and B. de
Marneffe and M. Avraam and A. Deraemaeker and F. Bossens and Marneffe and M. Avraam and A. Deraemaeker and F. Bossens and
A. Abu Hanieh}, A. Abu Hanieh},
title = {A Six-Axis Single-Stage Active Vibration Isolator Based on title = {{A Six-Axis Single-Stage Active Vibration Isolator Based on
Stewart Platform}, Stewart Platform}},
journal = {Journal of Sound and Vibration}, journal = {Journal of Sound and Vibration},
volume = 300, volume = 300,
number = {3-5}, number = {3-5},
@@ -117,3 +141,12 @@
year = 2007, year = 2007,
doi = {10.1016/j.jsv.2006.07.050}, doi = {10.1016/j.jsv.2006.07.050},
} }
@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,
month = 07,
}
Binary file not shown.
+9 -13
View File
@@ -3,15 +3,11 @@
\documentclass[a4paper, keeplastbox, biblatex]{jacow} \documentclass[a4paper, keeplastbox, biblatex]{jacow}
\usepackage{graphicx} \usepackage{graphicx}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{bm}
\usepackage{subcaption} \usepackage{subcaption}
\usepackage{siunitx} \usepackage{siunitx}
\usepackage[USenglish, english]{babel} \usepackage[USenglish, english]{babel}
\setcounter{footnote}{1} \setcounter{footnote}{1}
\setlist[itemize]{noitemsep} \setlist[itemize]{noitemsep}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
\addbibresource{TUIO02.bib} \addbibresource{TUIO02.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-07-26} \date{2021-07-26}
@@ -39,14 +35,14 @@ With the new \(4^\text{th}\) generation machines, there is an increasing need of
These systems are usually including feedback control loops and therefore their performances are not only depending on the quality of the mechanical design, but also on its correct integration with the actuators, sensors and control system. These systems are usually including feedback control loops and therefore their performances are not only depending on the quality of the mechanical design, but also on its correct integration with the actuators, sensors and control system.
In order to optimize the performances of such system, it is essential to consider a design approach in which the structural design and the control design are integrated. In order to optimize the performances of such system, it is essential to consider a design approach in which the structural design and the control design are integrated.
This approach, also called the ``mechatronics approach'', was shown to be very effective for the design many complex systems \cite{rankers98_machin,schmidt20_desig_high_perfor_mechat_third_revis_edition}. This approach, also called the ``mechatronics approach'', was shown to be very effective for the design many complex systems \cite{rankers97_machin,schmidt20_desig_high_perfor_mechat}.
Such design methodology was recently used for the development of several systems used by the synchrotron community \cite{geraldes17_mechat_concep_new_high_dynam_dcm_sirius,holler18_omny_tomog_nano_cryo_stage,brendike19_esrf_doubl_cryst_monoc_protot}. Such design methodology was recently used for the development of several systems used by the synchrotron community \cite{geraldes17_mechat_concep_new_high_dynam_dcm_sirius,holler18_omny_tomog_nano_cryo_stage,brendike19_esrf_doubl_cryst_monoc_protot_contr_concep}.
The present paper presents how the ``mechatronic approach'' was used for the design of a Nano Active Stabilization System (NASS) for the ESRF ID31 beamline. The present paper presents how the ``mechatronic approach'' was used for the design of a Nano Active Stabilization System (NASS) for the ESRF ID31 beamline.
\section{NASS - MECHATRONICS APPROACH} \section{NASS - MECHATRONICS APPROACH}
\subsection{The ID31 Micro-Station} \subsection{The ID31 Micro-Station}
The ID31 micro-station is used to position samples along complex trajectories \cite{dehaeze18_sampl_stabil_for_tomog_exper}. The ID31 micro-station is used to position samples along complex trajectories \cite{dehaeze18_sampl_stabil_tomog_exper_presen}.
It is composed of several stacked stages (represented in yellow in Fig.~\ref{fig:nass_concept_schematic}) which allows an high mobility. It is composed of several stacked stages (represented in yellow in Fig.~\ref{fig:nass_concept_schematic}) which allows an high mobility.
This however limits the position accuracy to tens of micrometers. This however limits the position accuracy to tens of micrometers.
@@ -63,7 +59,7 @@ This system should be able to actively stabilize the sample position down to ten
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
\includegraphics[scale=1,scale=0.9]{TUIO02_f1.pdf} \includegraphics[scale=0.9]{TUIO02_f1.pdf}
\caption{\label{fig:nass_concept_schematic}NASS - Schematic representation. 1) Micro-station, 2) Nano-hexapod, 3) Sample, 4) Metrology system.} \caption{\label{fig:nass_concept_schematic}NASS - Schematic representation. 1) Micro-station, 2) Nano-hexapod, 3) Sample, 4) Metrology system.}
\end{figure} \end{figure}
@@ -73,7 +69,7 @@ It consists of three main phases:
\begin{figure*} \begin{figure*}
\centering \centering
\includegraphics[scale=1,width=0.9\linewidth]{TUIO02_f2.pdf} \includegraphics[width=0.9\linewidth]{TUIO02_f2.pdf}
\caption{\label{fig:nass_mechatronics_approach}Overview of the mechatronics approach used for the design of the NASS.} \caption{\label{fig:nass_mechatronics_approach}Overview of the mechatronics approach used for the design of the NASS.}
\end{figure*} \end{figure*}
@@ -195,7 +191,7 @@ The mounted nano-hexapod is shown in Fig.~\ref{fig:nano_hexapod_picture}.
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
\includegraphics[scale=1,width=0.9\linewidth]{TUIO02_f5.pdf} \includegraphics[width=0.9\linewidth]{TUIO02_f5.pdf}
\caption{\label{fig:nano_hexapod_picture}Nano-hexapod on top of the micro-station.} \caption{\label{fig:nano_hexapod_picture}Nano-hexapod on top of the micro-station.}
\end{figure} \end{figure}
@@ -225,7 +221,7 @@ The same bench was also used with the struts in order to study the added effects
\begin{figure}[htbp] \begin{figure}[htbp]
\centering \centering
\includegraphics[scale=1,scale=1]{TUIO02_f6.pdf} \includegraphics[scale=1]{TUIO02_f6.pdf}
\caption{\label{fig:test_bench_apa_schematic}Schematic of the bench used to identify the APA dynamics.} \caption{\label{fig:test_bench_apa_schematic}Schematic of the bench used to identify the APA dynamics.}
\end{figure} \end{figure}
@@ -267,13 +263,13 @@ Even the off-diagonal elements (effect of one actuator on the encoder fixed in p
\begin{figure}[htbp] \begin{figure}[htbp]
\begin{subfigure}[t]{0.49\linewidth} \begin{subfigure}[t]{0.49\linewidth}
\centering \centering
\includegraphics[width=0.95\linewidth]{TUIO02_f8a.pdf} \includegraphics[width=0.98\linewidth]{TUIO02_f8a.pdf}
\caption{\label{fig:nano_hexapod_identification_comp_simscape_de} Encoder $d_{e_i}/u_i$.} \caption{\label{fig:nano_hexapod_identification_comp_simscape_de} Encoder $d_{e_i}/u_i$.}
\end{subfigure} \end{subfigure}
\hfill \hfill
\begin{subfigure}[t]{0.49\linewidth} \begin{subfigure}[t]{0.49\linewidth}
\centering \centering
\includegraphics[width=0.95\linewidth]{TUIO02_f8b.pdf} \includegraphics[width=0.98\linewidth]{TUIO02_f8b.pdf}
\caption{\label{fig:nano_hexapod_identification_comp_simscape_Vs} Force sensor $V_{s_i}/u_i$.} \caption{\label{fig:nano_hexapod_identification_comp_simscape_Vs} Force sensor $V_{s_i}/u_i$.}
\end{subfigure} \end{subfigure}
\caption{\label{fig:nano_hexapod_identification_comp_simscape}Comparison of the measured Frequency Response functions (FRF) with the Simscape model. From the excitation voltage to the associated encoder (\subref{fig:apa_test_bench_results_de}) and to the associated force sensor stack (\subref{fig:apa_test_bench_results_Vs}).} \caption{\label{fig:nano_hexapod_identification_comp_simscape}Comparison of the measured Frequency Response functions (FRF) with the Simscape model. From the excitation voltage to the associated encoder (\subref{fig:apa_test_bench_results_de}) and to the associated force sensor stack (\subref{fig:apa_test_bench_results_Vs}).}
@@ -284,7 +284,7 @@ CLOSED: [2021-07-09 ven. 13:37]
#+Beamer: } #+Beamer: }
** DONE Complexity of the Micro-Station Dynamics (Model Analysis) ** DONE Complexity of the Micro-Station Dynamics (Modal Analysis)
CLOSED: [2021-07-09 ven. 13:41] CLOSED: [2021-07-09 ven. 13:41]
\vspace{-1em} \vspace{-1em}
View File

Before

Width:  |  Height:  |  Size: 242 KiB

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.
Binary file not shown.
+550 -477
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 3.6 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

Executable → Regular
View File

Before

Width:  |  Height:  |  Size: 2.6 MiB

After

Width:  |  Height:  |  Size: 2.6 MiB

+3
View File
@@ -1,4 +1,7 @@
#+TITLE: LaTeX Configuration for Tikz Figures #+TITLE: LaTeX Configuration for Tikz Figures
#+hugo_base_dir: ~/Sites/website
#+hugo_section: research/dehaeze21_mechatronics_approach_nass/tikz
#+export_file_name: config
:DRAWER: :DRAWER:
#+HTML_LINK_HOME: ../index.html #+HTML_LINK_HOME: ../index.html
#+HTML_LINK_UP: ../index.html #+HTML_LINK_UP: ../index.html
+4 -87
View File
@@ -1,4 +1,8 @@
#+TITLE: Tikz Figures #+TITLE: Tikz Figures
#+hugo_base_dir: ~/Sites/website
#+hugo_section: research/dehaeze21_mechatronics_approach_nass
#+hugo_bundle: tikz
#+export_file_name: _index
:DRAWER: :DRAWER:
#+HTML_LINK_HOME: ../index.html #+HTML_LINK_HOME: ../index.html
#+HTML_LINK_UP: ../index.html #+HTML_LINK_UP: ../index.html
@@ -286,90 +290,3 @@
#+RESULTS: #+RESULTS:
[[file:figs/mass_spring_damper_hac_lac.png]] [[file:figs/mass_spring_damper_hac_lac.png]]
* Mass Spring Damper Model - Bis
#+begin_src latex :file mass_spring_damper_nass.pdf
\begin{tikzpicture}
% ====================
% Parameters
% ====================
\def\bracs{0.05} % Brace spacing vertically
\def\brach{-12pt} % Brace shift horizontaly
% ====================
% ====================
% Ground
% ====================
\draw (-0.9, 0) -- (0.9, 0);
\draw[dashed] (0.9, 0) -- ++(0.5, 0);
\draw[->] (1.3, 0) -- ++(0, 0.4) node[right]{$w$};
% ====================
% ====================
% Granite
\begin{scope}[shift={(0, 0)}]
\draw[fill=white] (-0.9, 1.2) rectangle (0.9, 2.0) node[pos=0.5]{$\scriptstyle\text{granite}$};
\draw[spring] (-0.7, 0) -- ++(0, 1.2);
\draw[damper] ( 0, 0) -- ++(0, 1.2);
\draw[dashed] ( 0.9, 2.0) -- ++(2.0, 0) coordinate(xg);
% \draw[decorate, decoration={brace, amplitude=8pt}, xshift=\brach] %
% (-0.9, \bracs) -- ++(0, 2.0) node[midway,rotate=90,anchor=south,yshift=10pt]{Granite};
\end{scope}
% ====================
% ====================
% Stages
\begin{scope}[shift={(0, 2.0)}]
\draw[fill=white] (-0.9, 1.2) rectangle (0.9, 2.0) node[pos=0.5]{$\scriptstyle\mu\text{-station}$};
\coordinate (mustation) at (0.9, 1.6);
\draw[spring] (-0.7, 0) -- ++(0, 1.2);
\draw[damper] ( 0, 0) -- ++(0, 1.2);
\draw[actuator] ( 0.7, 0) -- ++(0, 1.2) node[midway, right=0.1](ft){$f_t$};
% \draw[decorate, decoration={brace, amplitude=8pt}, xshift=\brach] %
% (-0.9, \bracs) -- ++(0, 2.0) node[midway,rotate=90,anchor=south,yshift=10pt]{$\mu\text{-station}$};
\end{scope}
% ====================
% ====================
% NASS
\begin{scope}[shift={(0, 4.0)}]
\draw[fill=white] (-0.9, 1.2) rectangle (0.9, 2.0) node[pos=0.5]{$\scriptstyle\nu\text{-hexapod}$};
\draw[dashed] (0.9, 2.0) -- ++(2.0, 0) coordinate(xnpos);
\draw[spring] (-0.7, 0) -- ++(0, 1.2) node[midway, left=0.1]{};
\draw[damper] ( 0, 0) -- ++(0, 1.2) node[midway, left=0.2]{};
\draw[actuator] ( 0.7, 0) -- ++(0, 1.2) coordinate[midway, right=0.1](f);
% \draw[decorate, decoration={brace, amplitude=8pt}, xshift=\brach] %
% (-0.9, \bracs) -- ++(0, 2.2) node[midway,rotate=90,anchor=south,yshift=10pt]{$\nu\text{-hexapod}$};
\end{scope}
% ====================
% ====================
% Measured Displacement
\draw[<->, dashed] ($(xg)+(-0.1, 0)$) node[above left](d){$d$} -- ($(xnpos)+(-0.1, 0)$);
% ====================
% ====================
% IFF Control
% \node[block={2em}{1.5em}, right=0.6 of fsensn] (iff) {$K_{\scriptscriptstyle IFF}$};
% \node[addb] (ctrladd) at (f-|iff) {};
\node[block={2em}{1.5em}, right=0.6 of mustation] (ctrl) {$K$};
% \draw[->] (fsensn.east) -- node[midway, above]{$\tau_m$} (iff.west);
% \draw[->] (iff.south) -- (ctrladd.north);
% \draw[->] (ctrladd.west) -- (f.east) node[above right]{$u$};
\draw[->] (d.west) -| (ctrl.south);
\draw[->] (ctrl.north) |- (f) node[above right]{$u$};
% ====================
\end{tikzpicture}
#+end_src
#+RESULTS:
[[file:figs/mass_spring_damper_nass.png]]
-707
View File
@@ -1,707 +0,0 @@
#+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
View File
@@ -1,110 +0,0 @@
#+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.