271 lines
12 KiB
Org Mode
271 lines
12 KiB
Org Mode
|
#+TITLE: Active Damping of Rotating Platforms using Integral Force Feedback - 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/dehaeze20_contr_stewa_platf/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+ :buffer no
|
||
|
#+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:
|
||
|
|
||
|
Configuration file is accessible [[file:config.org][here]].
|
||
|
|
||
|
* X-Y Rotating Positioning Platform
|
||
|
#+begin_src latex :file system.pdf
|
||
|
\begin{tikzpicture}
|
||
|
% Angle
|
||
|
\def\thetau{25}
|
||
|
|
||
|
% Rotational Stage
|
||
|
\draw[fill=black!60!white] (0, 0) circle (4.3);
|
||
|
\draw[fill=black!40!white] (0, 0) circle (3.8);
|
||
|
|
||
|
% Label
|
||
|
\node[anchor=north west, rotate=\thetau] at (-2.5, 2.5) {\small Rotating Stage};
|
||
|
|
||
|
% Rotating Scope
|
||
|
\begin{scope}[rotate=\thetau]
|
||
|
% Rotating Frame
|
||
|
\draw[fill=black!20!white] (-2.6, -2.6) rectangle (2.6, 2.6);
|
||
|
% Label
|
||
|
\node[anchor=north west, rotate=\thetau] at (-2.6, 2.6) {\small Suspended Platform};
|
||
|
|
||
|
% Mass
|
||
|
\draw[fill=white] (-1, -1) rectangle (1, 1);
|
||
|
% Label
|
||
|
\node[anchor=south west, rotate=\thetau] at (-1, -1) {\small Payload};
|
||
|
|
||
|
% Attached Points
|
||
|
\node[] at (-1, 0){$\bullet$};
|
||
|
\draw[] (-1, 0) -- ++(-0.2, 0) coordinate(cu);
|
||
|
\draw[] ($(cu) + (0, -0.8)$) coordinate(actu) -- ($(cu) + (0, 0.8)$) coordinate(ku);
|
||
|
\node[] at (0, -1){$\bullet$};
|
||
|
\draw[] (0, -1) -- ++(0, -0.2) coordinate(cv);
|
||
|
\draw[] ($(cv) + (-0.8, 0)$)coordinate(kv) -- ($(cv) + (0.8, 0)$) coordinate(actv);
|
||
|
|
||
|
% Spring and Actuator for U
|
||
|
\draw[actuator={0.6}{0.2}] (actu) -- node[above=0.1, rotate=\thetau]{$F_u$} (actu-|-2.6,0);
|
||
|
\draw[spring=0.2] (ku) -- node[above=0.1, rotate=\thetau]{$k$} (ku-|-2.6,0);
|
||
|
\draw[damper={8}{8}] (cu) -- node[above left=0.2 and -0.1, rotate=\thetau]{$c$} (cu-|-2.6,0);
|
||
|
|
||
|
\draw[actuator={0.6}{0.2}] (actv) -- node[left, rotate=\thetau]{$F_v$} (actv|-0,-2.6);
|
||
|
\draw[spring=0.2] (kv) -- node[left, rotate=\thetau]{$k$} (kv|-0,-2.6);
|
||
|
\draw[damper={8}{8}] (cv) -- node[left=0.1, rotate=\thetau]{$c$} (cv|-0,-2.6);
|
||
|
\end{scope}
|
||
|
|
||
|
% Inertial Frame
|
||
|
\draw[->] (-4, -4) -- ++(2, 0) node[below]{$\vec{i}_x$};
|
||
|
\draw[->] (-4, -4) -- ++(0, 2) node[left]{$\vec{i}_y$};
|
||
|
\draw[fill, color=black] (-4, -4) circle (0.06);
|
||
|
\node[draw, circle, inner sep=0pt, minimum size=0.3cm, label=left:$\vec{i}_z$] at (-4, -4){};
|
||
|
|
||
|
\draw[->] (0, 0) node[above left, rotate=\thetau]{$\vec{i}_w$} -- ++(\thetau:2) node[above, rotate=\thetau]{$\vec{i}_u$};
|
||
|
\draw[->] (0, 0) -- ++(\thetau+90:2) node[left, rotate=\thetau]{$\vec{i}_v$};
|
||
|
\draw[fill, color=black] (0,0) circle (0.06);
|
||
|
\node[draw, circle, inner sep=0pt, minimum size=0.3cm] at (0, 0){};
|
||
|
\draw[dashed] (0, 0) -- ++(2, 0);
|
||
|
\draw[] (1.5, 0) arc (0:\thetau:1.5) node[midway, right]{$\theta$};
|
||
|
|
||
|
\draw[->] (3.5, 0) arc (0:40:3.5) node[midway, left]{$\Omega$};
|
||
|
\end{tikzpicture}
|
||
|
#+end_src
|
||
|
|
||
|
#+RESULTS:
|
||
|
[[file:figs/system.png]]
|
||
|
|
||
|
* X-Y Rotating Positioning Platform
|
||
|
#+begin_src latex :file control_diagram_iff.pdf
|
||
|
\tikzset{block/.default={0.8cm}{0.8cm}}
|
||
|
\tikzset{addb/.append style={scale=0.7}}
|
||
|
\tikzset{node distance=0.6}
|
||
|
|
||
|
\begin{tikzpicture}
|
||
|
\node[block={1.8cm}{2.2cm}] (G) {$\bm{G}_f$};
|
||
|
|
||
|
% Inputs of the controllers
|
||
|
\coordinate[] (output1) at ($(G.south east)!0.75!(G.north east)$);
|
||
|
\coordinate[] (output2) at ($(G.south east)!0.25!(G.north east)$);
|
||
|
\coordinate[] (input1) at ($(G.south west)!0.75!(G.north west)$);
|
||
|
\coordinate[] (input2) at ($(G.south west)!0.25!(G.north west)$);
|
||
|
|
||
|
\node[block, left=1.8 of input1] (K1) {$K_F$};
|
||
|
\node[block] (K2) at ($(K1.east|-input2)+(0.6, 0)$) {$K_F$};
|
||
|
|
||
|
% Connections and labels
|
||
|
\draw[->] (K1.east) -- (input1)node[above left]{$F_u$}node[below left]{$-$};
|
||
|
\draw[->] (K2.east) -- (input2)node[above left]{$F_v$}node[below left]{$-$};
|
||
|
|
||
|
\draw[->] (output1) -- ++(0.8, 0) node[above left]{$f_u$};
|
||
|
\draw[->] (output2) -- ++(0.8, 0) node[above left]{$f_v$};
|
||
|
|
||
|
\draw[->] ($(output1)+(0.2, 0)$)node[branch]{} -- ++(0, 1.2) -| ($(K1.west) + (-0.8, 0)$)coordinate(start) -- (K1.west);
|
||
|
\draw[->] ($(output2)+(0.2, 0)$)node[branch]{} -- ++(0, -1.2) -| (start|-K2) -- (K2.west);
|
||
|
|
||
|
\begin{scope}[on background layer]
|
||
|
\node[fit={(K1.north west) (K2.south east)}, inner sep=6pt, draw, dashed, fill=black!20!white] (K) {};
|
||
|
\node[below left] at (K.north east) {$\bm{K}_F$};
|
||
|
\end{scope}
|
||
|
\end{tikzpicture}
|
||
|
#+end_src
|
||
|
|
||
|
#+RESULTS:
|
||
|
[[file:figs/control_diagram_iff.png]]
|
||
|
|
||
|
* Decentralized Integral Force Feedback
|
||
|
#+begin_src latex :file system_iff.pdf
|
||
|
\begin{tikzpicture}
|
||
|
% Angle
|
||
|
\def\thetau{25}
|
||
|
|
||
|
% Rotational Stage
|
||
|
\draw[fill=black!60!white] (0, 0) circle (4.3);
|
||
|
\draw[fill=black!40!white] (0, 0) circle (3.8);
|
||
|
|
||
|
% Label
|
||
|
\node[anchor=north west, rotate=\thetau] at (-2.5, 2.5) {\small Rotating Stage};
|
||
|
|
||
|
% Rotating Scope
|
||
|
\begin{scope}[rotate=\thetau]
|
||
|
% Rotating Frame
|
||
|
\draw[fill=black!20!white] (-2.6, -2.6) rectangle (2.6, 2.6);
|
||
|
% Label
|
||
|
\node[anchor=north west, rotate=\thetau] at (-2.6, 2.6) {\small Suspended Platform};
|
||
|
|
||
|
% Mass
|
||
|
\draw[fill=white] (-1, -1) rectangle (1, 1);
|
||
|
% Label
|
||
|
\node[anchor=south west, rotate=\thetau] at (-1, -1) {\small Payload};
|
||
|
|
||
|
% Attached Points
|
||
|
\node[] at (-1, 0){$\bullet$};
|
||
|
\draw[] (-1, 0) -- ++(-0.2, 0) coordinate(au);
|
||
|
\node[] at (0, -1){$\bullet$};
|
||
|
\draw[] (0, -1) -- ++(0, -0.2) coordinate(av);
|
||
|
|
||
|
% Force Sensors
|
||
|
\draw[fill=white] ($(au) + (-0.2, -0.5)$) rectangle ($(au) + (0, 0.5)$);
|
||
|
\draw[] ($(au) + (-0.2, -0.5)$)coordinate(actu) -- ($(au) + (0, 0.5)$);
|
||
|
\draw[] ($(au) + (-0.2, 0.5)$)coordinate(ku) -- ($(au) + (0, -0.5)$);
|
||
|
|
||
|
\draw[fill=white] ($(av) + (-0.5, -0.2)$) rectangle ($(av) + (0.5, 0)$);
|
||
|
\draw[] ($(av) + ( 0.5, -0.2)$)coordinate(actv) -- ($(av) + (-0.5, 0)$);
|
||
|
\draw[] ($(av) + (-0.5, -0.2)$)coordinate(kv) -- ($(av) + ( 0.5, 0)$);
|
||
|
|
||
|
% Spring and Actuator for U
|
||
|
\draw[actuator={0.6}{0.2}] (actu) -- coordinate[midway](actumid) (actu-|-2.6,0);
|
||
|
\draw[spring=0.2] (ku) -- node[above=0.1, rotate=\thetau]{$k$} (ku-|-2.6,0);
|
||
|
|
||
|
% \draw[actuator={0.6}{0.2}] (actv) -- node[right, rotate=\thetau]{$F_v$} (actv|-0,-2.6);
|
||
|
\draw[actuator={0.6}{0.2}] (actv) -- coordinate[midway](actvmid) (actv|-0,-2.6);
|
||
|
\draw[spring=0.2] (kv) -- node[left, rotate=\thetau]{$k$} (kv|-0,-2.6);
|
||
|
|
||
|
\node[block={0.8cm}{0.6cm}, rotate=\thetau] (Ku) at ($(actumid) + (0, -1.2)$) {$K_{F}$};
|
||
|
\draw[->] ($(au) + (-0.1, -0.5)$) |- (Ku.east) node[below right, rotate=\thetau]{$f_{u}$};
|
||
|
\draw[->] (Ku.north) -- ($(actumid) + (0, -0.1)$) node[below left, rotate=\thetau]{$F_u$} node[below right, rotate=\thetau]{$-$};
|
||
|
|
||
|
\node[block={0.8cm}{0.6cm}, rotate=\thetau] (Kv) at ($(actvmid) + (1.2, 0)$) {$K_{F}$};
|
||
|
\draw[->] ($(av) + (0.5, -0.1)$) -| (Kv.north) node[above right, rotate=\thetau]{$f_{v}$};
|
||
|
\draw[->] (Kv.west) -- ($(actvmid) + (0.1, 0)$) node[below right, rotate=\thetau]{$F_v$} node[above right, rotate=\thetau]{$-$};
|
||
|
\end{scope}
|
||
|
|
||
|
% Inertial Frame
|
||
|
\draw[->] (-4, -4) -- ++(2, 0) node[below]{$\vec{i}_x$};
|
||
|
\draw[->] (-4, -4) -- ++(0, 2) node[left]{$\vec{i}_y$};
|
||
|
\draw[fill, color=black] (-4, -4) circle (0.06);
|
||
|
\node[draw, circle, inner sep=0pt, minimum size=0.3cm, label=left:$\vec{i}_z$] at (-4, -4){};
|
||
|
|
||
|
\node[draw, circle, inner sep=0pt, minimum size=0.3cm] at (0, 0){};
|
||
|
\draw[->] (0, 0) node[above left, rotate=\thetau]{$\vec{i}_w$} -- ++(\thetau:2) node[above, rotate=\thetau]{$\vec{i}_u$};
|
||
|
\draw[->] (0, 0) -- ++(\thetau+90:2) node[left, rotate=\thetau]{$\vec{i}_v$};
|
||
|
\draw[dashed] (0, 0) -- ++(2, 0);
|
||
|
\draw[] (1.5, 0) arc (0:\thetau:1.5) node[midway, right]{$\theta$};
|
||
|
\node[] at (0,0) {$\bullet$};
|
||
|
|
||
|
\draw[->] (3.5, 0) arc (0:40:3.5) node[midway, left]{$\Omega$};
|
||
|
\end{tikzpicture}
|
||
|
#+end_src
|
||
|
|
||
|
#+RESULTS:
|
||
|
[[file:figs/system_iff.png]]
|
||
|
|
||
|
* Springs in parallel
|
||
|
#+begin_src latex :file system_parallel_springs.pdf
|
||
|
\begin{tikzpicture}
|
||
|
% Angle
|
||
|
\def\thetau{25}
|
||
|
|
||
|
% Rotational Stage
|
||
|
\draw[fill=black!60!white] (0, 0) circle (4.3);
|
||
|
\draw[fill=black!40!white] (0, 0) circle (3.8);
|
||
|
|
||
|
% Label
|
||
|
\node[anchor=north west, rotate=\thetau] at (-2.5, 2.5) {\small Rotating Stage};
|
||
|
|
||
|
% Rotating Scope
|
||
|
\begin{scope}[rotate=\thetau]
|
||
|
% Rotating Frame
|
||
|
\draw[fill=black!20!white] (-2.6, -2.6) rectangle (2.6, 2.6);
|
||
|
% Label
|
||
|
\node[anchor=north west, rotate=\thetau] at (-2.6, 2.6) {\small Suspended Platform};
|
||
|
|
||
|
% Mass
|
||
|
\draw[fill=white] (-1, -1) rectangle (1, 1);
|
||
|
% Label
|
||
|
\node[anchor=south west, rotate=\thetau] at (-1, -1) {\small Payload};
|
||
|
|
||
|
% Attached Points
|
||
|
\draw[] (-1, 0) -- ++(-0.2, 0) coordinate(au);
|
||
|
\draw[] (0, -1) -- ++(0, -0.2) coordinate(av);
|
||
|
|
||
|
% Force Sensors
|
||
|
\draw[fill=white] ($(au) + (-0.2, -0.5)$) rectangle ($(au) + (0, 0.5)$);
|
||
|
\draw[] ($(au) + (-0.2, -0.5)$)coordinate(actu) -- ($(au) + (0, 0.5)$);
|
||
|
\draw[] ($(au) + (-0.2, 0.5)$)coordinate(ku) -- ($(au) + (0, -0.5)$);
|
||
|
\node[below=0.1, rotate=\thetau] at ($(au) + (-0.1, -0.5)$) {$f_{u}$}
|
||
|
|
||
|
\draw[fill=white] ($(av) + (-0.5, -0.2)$) rectangle ($(av) + (0.5, 0)$);
|
||
|
\draw[] ($(av) + ( 0.5, -0.2)$)coordinate(actv) -- ($(av) + (-0.5, 0)$);
|
||
|
\draw[] ($(av) + (-0.5, -0.2)$)coordinate(kv) -- ($(av) + ( 0.5, 0)$) ;
|
||
|
\node[right=0.1, rotate=\thetau] at ($(av) + (0.5, -0.1)$) {$f_{v}$}
|
||
|
|
||
|
% Spring and Actuator for U
|
||
|
\draw[actuator={0.6}{0.2}] (actu) -- node[below=0.1, rotate=\thetau]{$F_u$} (actu-|-2.6,0);
|
||
|
\draw[spring=0.2] (ku) -- node[below=0.1, rotate=\thetau]{$k_a$} (ku-|-2.6,0);
|
||
|
\draw[spring=0.2] (-1, 0.8) -- node[above=0.1, rotate=\thetau]{$k_p$} (-1, 0.8-|-2.6,0);
|
||
|
|
||
|
\draw[actuator={0.6}{0.2}] (actv) -- node[right=0.1, rotate=\thetau]{$F_v$} (actv|-0,-2.6);
|
||
|
\draw[spring=0.2] (kv) -- node[right=0.1, rotate=\thetau]{$k_a$} (kv|-0,-2.6);
|
||
|
\draw[spring=0.2] (-0.8, -1) -- node[left=0.1, rotate=\thetau]{$k_p$} (-0.8, -1|-0,-2.6);
|
||
|
\end{scope}
|
||
|
|
||
|
% Inertial Frame
|
||
|
\draw[->] (-4, -4) -- ++(2, 0) node[below]{$\vec{i}_x$};
|
||
|
\draw[->] (-4, -4) -- ++(0, 2) node[left]{$\vec{i}_y$};
|
||
|
\draw[fill, color=black] (-4, -4) circle (0.06);
|
||
|
\node[draw, circle, inner sep=0pt, minimum size=0.3cm, label=left:$\vec{i}_z$] at (-4, -4){};
|
||
|
|
||
|
\node[draw, circle, inner sep=0pt, minimum size=0.3cm] at (0, 0){};
|
||
|
\draw[->] (0, 0) node[above left, rotate=\thetau]{$\vec{i}_w$} -- ++(\thetau:2) node[above, rotate=\thetau]{$\vec{i}_u$};
|
||
|
\draw[->] (0, 0) -- ++(\thetau+90:2) node[left, rotate=\thetau]{$\vec{i}_v$};
|
||
|
\draw[dashed] (0, 0) -- ++(2, 0);
|
||
|
\draw[] (1.5, 0) arc (0:\thetau:1.5) node[midway, right]{$\theta$};
|
||
|
\node[] at (0,0) {$\bullet$};
|
||
|
|
||
|
\draw[->] (3.5, 0) arc (0:40:3.5) node[midway, left]{$\Omega$};
|
||
|
\end{tikzpicture}
|
||
|
#+end_src
|
||
|
|
||
|
#+RESULTS:
|
||
|
[[file:figs/system_parallel_springs.png]]
|