Publications: add paper pages (dehaeze18, brumund21, dehaeze20, dehaeze21 x2), drop Fastjack, look for PDFs in journal/
Deploy / deploy (push) Successful in 3s
Deploy / deploy (push) Successful in 3s
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
+++
|
||||
title = "Mechatronics Approach for the Development of a Nano-Active-Stabilization-System"
|
||||
author = ["Dehaeze Thomas"]
|
||||
draft = false
|
||||
venue = "MEDSI 2020"
|
||||
year = 2021
|
||||
pubtype = "conference"
|
||||
doi = "10.18429/JACoW-MEDSI2020-TUIO02"
|
||||
code = "https://git.tdehaeze.xyz/tdehaeze/dehaeze21_mechatronics_approach_nass"
|
||||
video = "https://www.youtube.com/watch?v=kaplQJoqqDg"
|
||||
+++
|
||||
|
||||
> **Abstract**:
|
||||
>
|
||||
> With the growing number of fourth generation light sources, there is an increased need of fast positioning end-stations with nanometric precision.
|
||||
> Such systems are usually including dedicated control strategies, and many factors may limit their performances.
|
||||
> In order to design such complex systems in a predictive way, a mechatronic design approach also known as "model based design", may be utilized.
|
||||
> In this paper, we present how this mechatronic design approach was used for the development of a nano-hexapod for the ESRF ID31 beamline.
|
||||
> The chosen design approach consists of using models of the mechatronic system (including sensors, actuators and control strategies) to predict its behavior.
|
||||
> Based on this behavior and closed-loop simulations, the elements that are limiting the performances can be identified and re-designed accordingly.
|
||||
> This allows to make adequate choices concerning the design of the nano-hexapod and the overall mechatronic architecture early in the project and save precious time and resources.
|
||||
> Several test benches were used to validate the models and to gain confidence on the predictability of the final system's performances.
|
||||
> Measured nano-hexapod's dynamics was shown to be in very good agreement with the models.
|
||||
> Further tests should be done in order to confirm that the performances of the system match the predicted one.
|
||||
> The presented development approach is foreseen to be applied more frequently to future mechatronic system design at the ESRF.
|
||||
|
||||
|
||||
## Conference Paper ([pdf](paper/dehaeze21_mechatronics_approach_nass.pdf)) {#conference-paper--pdf-paper-dehaeze21-mechatronics-approach-nass-dot-pdf}
|
||||
|
||||
|
||||
## Talk ([link](talk/dehaeze21_mechatronics_approach_nass_talk.pdf)) {#talk--link-talk-dehaeze21-mechatronics-approach-nass-talk-dot-pdf}
|
||||
|
||||
<iframe width="720"
|
||||
height="540"
|
||||
src="https://www.youtube.com/embed/kaplQJoqqDg"
|
||||
frameborder="0" allowfullscreen> </iframe>
|
||||
|
||||
|
||||
## Figures ([link]({{< relref "tikz/_index.md" >}})) {#figures--link-tikz-figures-dot-md}
|
||||
|
||||
All the figures in the paper are generated using either [TikZ](https://sourceforge.net/projects/pgf/) or [Inkscape](https://inkscape.org/). The code snippets that was used to generate the figures are accessible [here]({{< relref "tikz/_index.md" >}}).
|
||||
|
||||
|
||||
## Cite this work {#cite-this-work}
|
||||
|
||||
To cite this conference paper use the following bibTeX code.
|
||||
|
||||
```bibtex
|
||||
@inproceedings{dehaeze21_mechat_approac_devel_nano_activ_stabil_system,
|
||||
author = {Dehaeze, T. and Bonnefoy, J. and Collette, C.},
|
||||
title = {Mechatronics Approach for the Development of a
|
||||
Nano-Active-Stabilization-System},
|
||||
booktitle = {MEDSI'20},
|
||||
year = 2021,
|
||||
language = {english},
|
||||
publisher = {JACoW Publishing},
|
||||
series = {Mechanical Engineering Design of Synchrotron Radiation
|
||||
Equipment and Instrumentation},
|
||||
venue = {Chicago, USA},
|
||||
}
|
||||
```
|
||||
|
||||
You can also use the formatted citation below.
|
||||
|
||||
> Dehaeze, T., Bonnefoy, J., & Collette, C., Mechatronics approach for the development of a nano-active-stabilization-system, In MEDSI'20 (2021), JACoW Publishing.
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
@@ -0,0 +1,363 @@
|
||||
+++
|
||||
title = "Tikz Figures"
|
||||
author = ["Dehaeze Thomas"]
|
||||
draft = false
|
||||
+++
|
||||
|
||||
## Mechatronic Approach {#mechatronic-approach}
|
||||
|
||||
```latex
|
||||
\graphicspath{ {/home/thomas/Cloud/thesis/papers/dehaeze21_mechatronics_approach_nass/tikz/figs-tikz} }
|
||||
|
||||
\begin{tikzpicture}
|
||||
% Styles
|
||||
\tikzset{myblock/.style= {draw, thin, color=white!70!black, fill=white, text width=3cm, align=center, minimum height=1.4cm}};
|
||||
\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[draw, fill=lightblue, align=center, label={[mylabel, text width=8.0cm] Dynamical Models}, minimum height = 4.5cm, text width = 8.0cm] (model) at (0, 0) {};
|
||||
|
||||
\node[myblock, fill=lightgreen, label={[mylabel] Disturbances}, left = 3 of model.west] (dist) {};
|
||||
\node[myblock, fill=lightgreen, label={[mylabel] $\mu$ Station}, below = 2pt of dist] (mustation) {};
|
||||
\node[myblock, fill=lightgreen, label={[mylabel] $\nu$ Hexapod}, above = 2pt of dist] (nanohexapod) {};
|
||||
|
||||
\node[myblock, fill=lightyellow, label={[mylabel] Mech. Design}, above = 1 of model.north] (mechanical) {};
|
||||
\node[myblock, fill=lightyellow, label={[mylabel] Instrumentation}, left = 2pt of mechanical] (instrumentation) {};
|
||||
\node[myblock, fill=lightyellow, label={[mylabel] FEM}, right = 2pt of mechanical] (fem) {};
|
||||
|
||||
\node[myblock, fill=lightred, label={[mylabel] Test Benches}, right = 3 of model.east] (testbenches) {};
|
||||
\node[myblock, fill=lightred, label={[mylabel] Assembly}, above = 2pt of testbenches] (mounting) {};
|
||||
\node[myblock, fill=lightred, label={[mylabel] Implementation}, below = 2pt of testbenches] (implementation) {};
|
||||
|
||||
% Text
|
||||
\node[anchor=south, above, text width=8cm, align=left] at (model.south) {Extensive use of models for:\begin{itemize}[noitemsep,topsep=5pt]\item Extraction of transfer functions \\ \item Choice of appropriate control architecture \\ \item Tuning of control laws \\ \item Closed loop simulations \\ \item Noise budgets / Evaluation of performances \\ \item Sensibility to parameters / disturbances\end{itemize}\centerline{Models are at the core the mecatronic approach!}};
|
||||
|
||||
\node[mymodel] at (mustation.south) {Multiple stages \\ Complex dynamics};
|
||||
\node[mymodel] at (dist.south) {Ground motion \\ Position errors};
|
||||
\node[mymodel] at (nanohexapod.south) {Different concepts \\ Sensors, Actuators};
|
||||
|
||||
\node[mymodel] at (instrumentation.south) {Sensors, Actuators \\ Electronics};
|
||||
\node[mymodel] at (mechanical.south) {Proper integration \\ Ease of assembly};
|
||||
\node[mymodel] at (fem.south) {Optimize key parts: \\ Joints, Plates, APA};
|
||||
|
||||
\node[mymodel] at (mounting.south) {Struts \\ Nano-Hexapod};
|
||||
\node[mymodel] at (testbenches.south) {Instrumentation \\ APA, Struts};
|
||||
\node[mymodel] at (implementation.south) {Control tests \\ $\mu$ Station};
|
||||
|
||||
% Links
|
||||
\draw[->] (dist.east) -- node[above, midway]{{\small Measurements}} node[below,midway]{{\small Spectral Analysis}} (dist.east-|model.west);
|
||||
\draw[->] (mustation.east) -- node[above, midway]{{\small Measurements}} node[below, midway]{{\small CAD Model}} (mustation.east-|model.west);
|
||||
|
||||
\draw[->] ($(nanohexapod.east-|model.west)-(0, 0.15)$) -- node[below, midway]{{\small Optimization}} ($(nanohexapod.east)-(0, 0.15)$);
|
||||
\draw[<-] ($(nanohexapod.east-|model.west)+(0, 0.15)$) -- node[above, midway]{{\small Model}} ($(nanohexapod.east)+(0, 0.15)$);
|
||||
|
||||
\draw[->] ($(fem.south|-model.north)+(0.15, 0)$) -- node[right, midway]{{\small Specif.}} ($(fem.south)+(0.15,0)$);
|
||||
\draw[<-] ($(fem.south|-model.north)-(0.15, 0)$) -- node[left, midway,align=right]{{\small Super}\\{\small Element}} ($(fem.south)-(0.15,0)$);
|
||||
|
||||
\draw[->] ($(mechanical.south|-model.north)+(0.15, 0)$) -- node[right, midway]{{\small Specif.}} ($(mechanical.south)+(0.15,0)$);
|
||||
\draw[<-] ($(mechanical.south|-model.north)-(0.15, 0)$) -- node[left, midway,align=right]{{\small CAD}\\{\small model}} ($(mechanical.south)-(0.15,0)$);
|
||||
|
||||
\draw[->] ($(instrumentation.south|-model.north)+(0.15, 0)$) -- node[right, midway]{{\small Specif.}} ($(instrumentation.south)+(0.15,0)$);
|
||||
\draw[<-] ($(instrumentation.south|-model.north)-(0.15, 0)$) -- node[left, midway]{{\small Model}} ($(instrumentation.south)-(0.15,0)$);
|
||||
|
||||
\draw[->] ($(mounting.west-|model.east)+(0, 0.15)$) -- node[above, midway]{{\small Requirements}} ($(mounting.west)+(0, 0.15)$);
|
||||
\draw[<-] ($(mounting.west-|model.east)-(0, 0.15)$) -- node[below, midway]{{\small Model refinement}} ($(mounting.west)-(0, 0.15)$);
|
||||
|
||||
\draw[->] ($(testbenches.west-|model.east)+(0, 0.15)$) -- node[above, midway]{{\small Control Laws}} ($(testbenches.west)+(0, 0.15)$);
|
||||
\draw[<-] ($(testbenches.west-|model.east)-(0, 0.15)$) -- node[below, midway]{{\small Model refinement}} ($(testbenches.west)-(0, 0.15)$);
|
||||
|
||||
\draw[->] ($(implementation.west-|model.east)+(0, 0.15)$) -- node[above, midway]{{\small Control Laws}} ($(implementation.west)+(0, 0.15)$);
|
||||
\draw[<-] ($(implementation.west-|model.east)-(0, 0.15)$) -- node[below, midway]{{\small Model refinement}} ($(implementation.west)-(0, 0.15)$);
|
||||
|
||||
% Main steps
|
||||
\node[font=\bfseries, rotate=90, anchor=south, above] (conceptual_phase_node) at (dist.west) {1 - Conceptual Phase};
|
||||
\node[font=\bfseries, above] (detailed_phase_node) at (mechanical.north) {2 - Detail Design Phase};
|
||||
\node[font=\bfseries, rotate=-90, anchor=south, above] (implementation_phase_node) at (testbenches.east) {3 - Experimental Phase};
|
||||
\begin{scope}[on background layer]
|
||||
\node[fit={(conceptual_phase_node.north|-nanohexapod.north) (mustation.south east)}, fill=lightgreen!50!white, draw, inner sep=2pt] (conceptual_phase) {};
|
||||
\node[fit={(detailed_phase_node.north-|instrumentation.west) (fem.south east)}, fill=lightyellow!50!white, draw, inner sep=2pt] (detailed_phase) {};
|
||||
\node[fit={(implementation_phase_node.north|-mounting.north) (implementation.south west)}, fill=lightred!50!white, draw, inner sep=2pt] (implementation_phase) {};
|
||||
% \node[above left] at (dob.south east) {DOB};
|
||||
\end{scope}
|
||||
|
||||
% Between main steps
|
||||
\draw[mystep, 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, 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}
|
||||
```
|
||||
|
||||
{{< figure src="nass_mechatronics_approach.png" >}}
|
||||
|
||||
|
||||
## HAC-LAC Representation (two columns) {#hac-lac-representation--two-columns}
|
||||
|
||||
```latex
|
||||
\graphicspath{ {/home/thomas/Cloud/thesis/papers/dehaeze21_mechatronics_approach_nass/tikz/figs-tikz} }
|
||||
|
||||
\begin{tikzpicture}
|
||||
\node[inner sep=3pt, fill=white, draw] (plant) at (0, 0)
|
||||
{\includegraphics[width=4.5cm]{nass_concept_schematic.pdf}};
|
||||
|
||||
\coordinate[] (outputf) at ($(plant.south east)!0.75!(plant.north east)$);
|
||||
\coordinate[] (outputx) at ($(plant.south east)!0.25!(plant.north east)$);
|
||||
|
||||
\node[block, left=0.6 of plant] (amp) {Amplifier};
|
||||
\node[DAC, left=0.6 of amp] (dac) {DAC};
|
||||
\node[ADC] (adc) at ($(plant.north-|dac) + (0, 0.2)$) {ADC};
|
||||
\node[addb, left=0.6 of dac] (addu) {};
|
||||
\node[block, above=0.4 of addu] (Kiff) {$\bm{K}_{\mathcal{L}}$};
|
||||
\node[block, left=0.6 of addu] (Kl) {$\bm{K}_{\mathcal{X}}$};
|
||||
\node[block, left=0.6 of Kl] (J) {$\bm{J}$};
|
||||
\node[block, left=0.6 of J] (pos_error) {Pos. Err.};
|
||||
|
||||
\draw[->] (outputf) -- ++(0.2, 0)node[branch]{} |- (adc.east);
|
||||
\draw[->] (outputf) --node[midway, below]{$\bm{\tau}_m$} ++(0.8, 0);
|
||||
|
||||
\draw[->] (outputx) -- ++(0.2, 0)node[branch]{} |- ($(plant.south)+(0, -0.2)$) -| (pos_error.south);
|
||||
\draw[->] (outputx) --node[midway, above]{$\bm{\mathcal{X}}_m$} ++(0.8, 0);
|
||||
|
||||
\draw[->] (pos_error.east) -- node[midway, above]{$\bm{\epsilon}_{\mathcal{X}}$} (J.west);
|
||||
\draw[->] (J.east) -- node[midway, above]{$\bm{\epsilon}_{\mathcal{L}}$} (Kl.west);
|
||||
\draw[->] (Kl.east) -- node[midway, above]{$\bm{u}^\prime$} (addu.west);
|
||||
\draw[->] (addu.east) -- node[midway, above]{$\bm{u}$} (dac.west);
|
||||
\draw[->] (dac.east) -- (amp.west);
|
||||
\draw[->] (amp.east) -- (plant.west);
|
||||
\draw[->] (adc.west) -| (Kiff.north);
|
||||
\draw[->] (Kiff.south) -- (addu.north);
|
||||
\draw[<-] (pos_error.west) -- node[midway, above]{$\bm{r}_\mu$} ++(-0.8, 0);
|
||||
\end{tikzpicture}
|
||||
```
|
||||
|
||||
{{< figure src="nass_hac_lac_block_diagram.png" >}}
|
||||
|
||||
|
||||
## HAC-LAC alternative (one column) {#hac-lac-alternative--one-column}
|
||||
|
||||
```latex
|
||||
\graphicspath{ {/home/thomas/Cloud/thesis/papers/dehaeze21_mechatronics_approach_nass/tikz/figs-tikz} }
|
||||
|
||||
\begin{tikzpicture}
|
||||
% Plant
|
||||
\node[inner sep=3pt, fill=white, draw] (plant) at (0, 0)
|
||||
{\includegraphics[width=4cm]{nass_concept_schematic.pdf}};
|
||||
|
||||
% Plant outputs
|
||||
\coordinate[] (outputf) at ($(plant.south east)!0.8!(plant.north east)$);
|
||||
\coordinate[] (outputx) at ($(plant.south east)!0.2!(plant.north east)$);
|
||||
|
||||
% Blocks
|
||||
\node[addb, left=0.6 of plant] (addu) {};
|
||||
\node[block, above=0.4 of addu] (Kiff) {$\bm{K}_{\text{\tiny IFF}}$};
|
||||
\node[block, left=1.0 of addu] (Kl) {$\bm{K}_{\mathcal{L}}$};
|
||||
\node[block, left=0.6 of Kl] (J) {$\bm{J}$};
|
||||
\node[addb={+}{}{}{}{-}, left=0.6 of J] (pos_error) {};
|
||||
|
||||
% Lines
|
||||
\draw[->] (outputf) -- ++(0.2, 0)node[below]{$\bm{\tau}$} |- ($(plant.north)+(0, 0.2)$) -| (Kiff.north);
|
||||
\draw[->] (outputx) -- ++(0.6, 0)node[above]{$\bm{\mathcal{X}}$} |- ($(plant.south)+(0, -0.4)$) -| (pos_error.south);
|
||||
\draw[->] (pos_error.east) -- node[midway, above]{$\bm{\epsilon}_{\mathcal{X}}$} (J.west);
|
||||
\draw[->] (J.east) -- node[midway, above]{$\bm{\epsilon}_{\mathcal{L}}$} (Kl.west);
|
||||
\draw[->] (Kl.east) -- node[near start, above]{$\bm{u}^\prime$} (addu.west);
|
||||
\draw[->] (addu.east) -- node[midway, above]{$\bm{u}$} (plant.west);
|
||||
\draw[->] (Kiff.south) -- (addu.north);
|
||||
\draw[<-] (pos_error.west) -- node[midway, above]{$\bm{r}$} ++(-0.6, 0);
|
||||
|
||||
% Damped plant
|
||||
\begin{scope}[on background layer]
|
||||
\node[fit={(plant.south-|Kiff.west) ($(plant.north east)+(0.2cm,0.2cm)$)}, fill=black!10!white, draw, dashed, inner sep=0.2cm] (damped_plant) {};
|
||||
\node[above right, align=left] at (damped_plant.south west) {\small Damped\\Plant};
|
||||
\end{scope}
|
||||
\end{tikzpicture}
|
||||
```
|
||||
|
||||
{{< figure src="nass_hac_lac_block_diagram_without_elec.png" >}}
|
||||
|
||||
|
||||
## Mass Spring Damper Model {#mass-spring-damper-model}
|
||||
|
||||
```latex
|
||||
\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}$};
|
||||
\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.5) rectangle (0.9, 2.3) node[pos=0.5]{$\scriptstyle\nu\text{-hexapod}$};
|
||||
\draw[dashed] (0.9, 2.3) -- ++(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, below right=0.2 and 0.1](f);
|
||||
|
||||
\node[forcesensor={1.8}{0.3}] (fsensn) at (0, 1.2){};
|
||||
|
||||
% \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}, below=0.6 of ctrladd] (ctrl) {$K_{X}$};
|
||||
|
||||
\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) -- (ctrladd.south) node[below right]{$u^\prime$};
|
||||
% ====================
|
||||
\end{tikzpicture}
|
||||
```
|
||||
|
||||
{{< figure src="mass_spring_damper_hac_lac.png" >}}
|
||||
|
||||
|
||||
## Mass Spring Damper Model - Bis {#mass-spring-damper-model-bis}
|
||||
|
||||
```latex
|
||||
\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}
|
||||
```
|
||||
@@ -0,0 +1,775 @@
|
||||
+++
|
||||
title = "LaTeX Configuration for Tikz Figures"
|
||||
author = ["Dehaeze Thomas"]
|
||||
draft = false
|
||||
+++
|
||||
|
||||
## Packages {#packages}
|
||||
|
||||
```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
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Tikz related packages {#tikz-related-packages}
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
|
||||
## Tikz Libraries {#tikz-libraries}
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
|
||||
## PGF Plot libraries and config {#pgf-plot-libraries-and-config}
|
||||
|
||||
```latex
|
||||
\usepgfplotslibrary{patchplots}
|
||||
\usepgfplotslibrary{groupplots}
|
||||
|
||||
\pgfplotsset{compat=newest}
|
||||
\pgfplotsset{plot coordinates/math parser=false}
|
||||
```
|
||||
|
||||
|
||||
## Setup Arrows style {#setup-arrows-style}
|
||||
|
||||
```latex
|
||||
\tikzset{>=Stealth}
|
||||
% Setup default Linewidth
|
||||
\tikzset{every path/.style={line width=1pt}}
|
||||
```
|
||||
|
||||
|
||||
## Colors {#colors}
|
||||
|
||||
```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}
|
||||
```
|
||||
|
||||
|
||||
## Control {#control}
|
||||
|
||||
|
||||
### Blocks {#blocks}
|
||||
|
||||
```latex
|
||||
\tikzset{%
|
||||
block/.style n args={2}{%
|
||||
draw,
|
||||
fill=white,
|
||||
minimum width = #1,
|
||||
minimum height = #2,
|
||||
},
|
||||
block/.default={1.2cm}{1.0cm}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Branches {#branches}
|
||||
|
||||
```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]
|
||||
```
|
||||
|
||||
|
||||
### Hand Writen Style {#hand-writen-style}
|
||||
|
||||
Usefull for schematic plots
|
||||
|
||||
```latex
|
||||
\tikzstyle{handwriten}=[decorate,decoration={random steps,amplitude=0.1pt,segment length=0.8pt}]
|
||||
```
|
||||
|
||||
|
||||
### DAC {#dac}
|
||||
|
||||
```latex
|
||||
\tikzset{%
|
||||
DAC/.style={%
|
||||
draw,
|
||||
signal,
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### ADC {#adc}
|
||||
|
||||
```latex
|
||||
\tikzset{%
|
||||
ADC/.style={%
|
||||
draw,
|
||||
signal,
|
||||
signal to = west,
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Gain {#gain}
|
||||
|
||||
```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
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Add / Substract / Divide / Multiply block {#add-substract-divide-multiply-block}
|
||||
|
||||
```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={+}{}{}{}{},
|
||||
}
|
||||
```
|
||||
|
||||
```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={+}{}{}{}{},
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Plots {#plots}
|
||||
|
||||
|
||||
### Default line caps {#default-line-caps}
|
||||
|
||||
```latex
|
||||
\pgfplotsset{
|
||||
every axis plot/.append style={line join=round},
|
||||
every axis plot/.append style={line cap=round},
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Grid {#grid}
|
||||
|
||||
```latex
|
||||
\pgfplotsset{grid style={black}}
|
||||
\pgfplotsset{major grid style={black!30!white}}
|
||||
\pgfplotsset{minor grid style={black!10!white}}
|
||||
\pgfplotsset{xmajorgrids}
|
||||
\pgfplotsset{ymajorgrids}
|
||||
```
|
||||
|
||||
|
||||
### Lines {#lines}
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
|
||||
### Ticks {#ticks}
|
||||
|
||||
```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}}
|
||||
```
|
||||
|
||||
|
||||
### Size {#size}
|
||||
|
||||
If `scale only axis=false` (the default), pgfplots will try to produce the desired width including labels, titles and ticks.
|
||||
|
||||
```latex
|
||||
\pgfplotsset{scale only axis=true}
|
||||
```
|
||||
|
||||
|
||||
### Label {#label}
|
||||
|
||||
Used to align all of ylabel of one figure.
|
||||
|
||||
```latex
|
||||
\pgfplotsset{ylabel absolute}
|
||||
```
|
||||
|
||||
|
||||
### Legend {#legend}
|
||||
|
||||
```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}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Upper and Lower bounds {#upper-and-lower-bounds}
|
||||
|
||||
```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}}]
|
||||
```
|
||||
|
||||
And we add the corresdonding
|
||||
|
||||
```latex
|
||||
\pgfplotsset{
|
||||
/pgfplots/upperbound/.style 1 args={
|
||||
legend image code/.code={
|
||||
\draw[##1, upperbound]
|
||||
plot coordinates {
|
||||
(0cm,0cm)
|
||||
(0.6cm,0cm)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Pole {#pole}
|
||||
|
||||
```latex
|
||||
\tikzset{%
|
||||
pole/.style{%
|
||||
color=red,
|
||||
cross out,
|
||||
draw,
|
||||
inner sep=0pt,
|
||||
outer sep=0pt,
|
||||
minimum size=#1pt
|
||||
},
|
||||
pole/.default={4}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Zero {#zero}
|
||||
|
||||
```latex
|
||||
\tikzset{%
|
||||
zero/.style{%
|
||||
color=red,
|
||||
circle,
|
||||
draw,
|
||||
inner sep=0pt,
|
||||
outer sep=0pt,
|
||||
minimum size=#1pt
|
||||
},
|
||||
zero/.default={4}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Mechanical {#mechanical}
|
||||
|
||||
|
||||
### Spring {#spring}
|
||||
|
||||
```latex
|
||||
\tikzset{%
|
||||
spring/.style={%
|
||||
thick,
|
||||
decoration={
|
||||
zigzag,
|
||||
pre length = #1cm,
|
||||
post length = #1cm,
|
||||
segment length = 6
|
||||
},
|
||||
decorate
|
||||
},
|
||||
spring/.default={0.2}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Coil {#coil}
|
||||
|
||||
```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}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Damper {#damper}
|
||||
|
||||
```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}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Actuator {#actuator}
|
||||
|
||||
```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}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Ground {#ground}
|
||||
|
||||
```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}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Force Sensor {#force-sensor}
|
||||
|
||||
```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}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Inertial Sensor {#inertial-sensor}
|
||||
|
||||
```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}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Cross {#cross}
|
||||
|
||||
```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);
|
||||
}]
|
||||
|
||||
```
|
||||
|
||||
|
||||
### Piezoelectric actuator {#piezoelectric-actuator}
|
||||
|
||||
```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}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Voice coil {#voice-coil}
|
||||
|
||||
```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}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Axis Rotator {#axis-rotator}
|
||||
|
||||
```latex
|
||||
\newcommand{\AxisRotator}[1][rotate=0]{%
|
||||
\tikz [x=0.1cm,y=0.30cm,-stealth,#1] \draw (0,0) arc (-150:150:1 and 1);%
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Optics {#optics}
|
||||
|
||||
```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}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Misc {#misc}
|
||||
|
||||
```latex
|
||||
\tikzset{%
|
||||
labelc/.style= {%
|
||||
draw,
|
||||
fill=white,
|
||||
shape=circle,
|
||||
inner sep=2pt,
|
||||
outer sep=6pt,
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## More Defaults specific to this paper {#more-defaults-specific-to-this-paper}
|
||||
|
||||
```latex
|
||||
\tikzset{block/.default={0.8cm}{0.8cm}}
|
||||
\tikzset{addb/.append style={scale=0.7}}
|
||||
\tikzset{node distance=0.6}
|
||||
```
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
BIN
Binary file not shown.
|
After Width: | Height: | Size: 175 KiB |
Reference in New Issue
Block a user