217 lines
10 KiB
Org Mode
217 lines
10 KiB
Org Mode
#+TITLE: Decoupling Properties of the Cubic Architecture
|
|
:DRAWER:
|
|
#+LANGUAGE: en
|
|
#+EMAIL: dehaeze.thomas@gmail.com
|
|
#+AUTHOR: Dehaeze Thomas
|
|
|
|
#+PROPERTY: header-args:latex :headers '("\\usepackage{tikz}" "\\usepackage{import}" "\\import{$HOME/Cloud/tikz/org/}{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+ :tangle no
|
|
#+PROPERTY: header-args:latex+ :eval no-export
|
|
#+PROPERTY: header-args:latex+ :exports results
|
|
#+PROPERTY: header-args:latex+ :mkdirp yes
|
|
#+PROPERTY: header-args:latex+ :output-dir figs
|
|
#+PROPERTY: header-args:latex+ :post pdf2svg(file=*this*, ext="png")
|
|
:END:
|
|
|
|
#+latex: \clearpage
|
|
|
|
#+begin_src latex :file detail_kinematics_cubic_schematic_full.pdf :results file
|
|
\begin{tikzpicture}
|
|
\begin{scope}[rotate={45}, shift={(0, 0, -4)}]
|
|
% We first define the coordinate of the points of the Cube
|
|
\coordinate[] (bot) at (0,0,4);
|
|
\coordinate[] (top) at (4,4,0);
|
|
\coordinate[] (A1) at (0,0,0);
|
|
\coordinate[] (A2) at (4,0,4);
|
|
\coordinate[] (A3) at (0,4,4);
|
|
\coordinate[] (B1) at (4,0,0);
|
|
\coordinate[] (B2) at (4,4,4);
|
|
\coordinate[] (B3) at (0,4,0);
|
|
|
|
% Center of the Cube
|
|
\coordinate[] (cubecenter) at ($0.5*(bot) + 0.5*(top)$);
|
|
|
|
% We draw parts of the cube that corresponds to the Stewart platform
|
|
\draw[] (A1)node[]{$\bullet$} -- (B1)node[]{$\bullet$} -- (A2)node[]{$\bullet$} -- (B2)node[]{$\bullet$} -- (A3)node[]{$\bullet$} -- (B3)node[]{$\bullet$} -- (A1);
|
|
|
|
% ai and bi are computed
|
|
\def\lfrom{0.0}
|
|
\def\lto{1.0}
|
|
|
|
\coordinate(a1) at ($(A1) - \lfrom*(A1) + \lfrom*(B1)$);
|
|
\coordinate(b1) at ($(A1) - \lto*(A1) + \lto*(B1)$);
|
|
\coordinate(a2) at ($(A2) - \lfrom*(A2) + \lfrom*(B1)$);
|
|
\coordinate(b2) at ($(A2) - \lto*(A2) + \lto*(B1)$);
|
|
\coordinate(a3) at ($(A2) - \lfrom*(A2) + \lfrom*(B2)$);
|
|
\coordinate(b3) at ($(A2) - \lto*(A2) + \lto*(B2)$);
|
|
\coordinate(a4) at ($(A3) - \lfrom*(A3) + \lfrom*(B2)$);
|
|
\coordinate(b4) at ($(A3) - \lto*(A3) + \lto*(B2)$);
|
|
\coordinate(a5) at ($(A3) - \lfrom*(A3) + \lfrom*(B3)$);
|
|
\coordinate(b5) at ($(A3) - \lto*(A3) + \lto*(B3)$);
|
|
\coordinate(a6) at ($(A1) - \lfrom*(A1) + \lfrom*(B3)$);
|
|
\coordinate(b6) at ($(A1) - \lto*(A1) + \lto*(B3)$);
|
|
|
|
% We draw the fixed and mobiles platforms
|
|
\path[fill=colorblue, opacity=0.2] (a1) -- (a2) -- (a3) -- (a4) -- (a5) -- (a6) -- cycle;
|
|
\path[fill=colorblue, opacity=0.2] (b1) -- (b2) -- (b3) -- (b4) -- (b5) -- (b6) -- cycle;
|
|
\draw[color=colorblue, dashed] (a1) -- (a2) -- (a3) -- (a4) -- (a5) -- (a6) -- cycle;
|
|
\draw[color=colorblue, dashed] (b1) -- (b2) -- (b3) -- (b4) -- (b5) -- (b6) -- cycle;
|
|
|
|
% The legs of the hexapod are drawn
|
|
\draw[color=colorblue] (a1)node{$\bullet$} -- (b1)node{$\bullet$};
|
|
\draw[color=colorblue] (a2)node{$\bullet$} -- (b2)node{$\bullet$};
|
|
\draw[color=colorblue] (a3)node{$\bullet$} -- (b3)node{$\bullet$};
|
|
\draw[color=colorblue] (a4)node{$\bullet$} -- (b4)node{$\bullet$};
|
|
\draw[color=colorblue] (a5)node{$\bullet$} -- (b5)node{$\bullet$};
|
|
\draw[color=colorblue] (a6)node{$\bullet$} -- (b6)node{$\bullet$};
|
|
|
|
% Unit vector
|
|
\draw[color=colorred, ->] ($0.9*(a1)+0.1*(b1)$)node{$\bullet$} -- ($0.65*(a1)+0.35*(b1)$)node[right]{$\hat{\bm{s}}_3$};
|
|
\draw[color=colorred, ->] ($0.9*(a2)+0.1*(b2)$)node{$\bullet$} -- ($0.65*(a2)+0.35*(b2)$)node[left]{$\hat{\bm{s}}_4$};
|
|
\draw[color=colorred, ->] ($0.9*(a3)+0.1*(b3)$)node{$\bullet$} -- ($0.65*(a3)+0.35*(b3)$)node[below]{$\hat{\bm{s}}_5$};
|
|
\draw[color=colorred, ->] ($0.9*(a4)+0.1*(b4)$)node{$\bullet$} -- ($0.65*(a4)+0.35*(b4)$)node[below]{$\hat{\bm{s}}_6$};
|
|
\draw[color=colorred, ->] ($0.9*(a5)+0.1*(b5)$)node{$\bullet$} -- ($0.65*(a5)+0.35*(b5)$)node[left]{$\hat{\bm{s}}_1$};
|
|
\draw[color=colorred, ->] ($0.9*(a6)+0.1*(b6)$)node{$\bullet$} -- ($0.65*(a6)+0.35*(b6)$)node[right]{$\hat{\bm{s}}_2$};
|
|
|
|
% Labels
|
|
\node[above=0.1 of B1] {$\tilde{\bm{b}}_3 = \tilde{\bm{b}}_4$};
|
|
\node[above=0.1 of B2] {$\tilde{\bm{b}}_5 = \tilde{\bm{b}}_6$};
|
|
\node[above=0.1 of B3] {$\tilde{\bm{b}}_1 = \tilde{\bm{b}}_2$};
|
|
\end{scope}
|
|
|
|
% Height of the Hexapod
|
|
\coordinate[] (sizepos) at ($(a2)+(0.2, 0)$);
|
|
\coordinate[] (origin) at (0,0,0);
|
|
|
|
\draw[->, color=colorgreen] (cubecenter.center) node[above right]{$\{B\}$} -- ++(0,0,1);
|
|
\draw[->, color=colorgreen] (cubecenter.center) -- ++(1,0,0);
|
|
\draw[->, color=colorgreen] (cubecenter.center) -- ++(0,1,0);
|
|
|
|
\node[] at (cubecenter.center){$\bullet$};
|
|
\node[above left] at (cubecenter.center){$\{C\}$};
|
|
|
|
% Useful part of the cube
|
|
\draw[<->, dashed] ($(A2)+(0.5,0)$) -- node[midway, right]{$H_{C}$} ($(B1)+(0.5,0)$);
|
|
\end{tikzpicture}
|
|
#+end_src
|
|
|
|
#+RESULTS:
|
|
[[file:figs/detail_kinematics_cubic_schematic_full.png]]
|
|
|
|
#+begin_src latex :file detail_kinematics_cubic_schematic.pdf :results file
|
|
\begin{tikzpicture}
|
|
\begin{scope}[rotate={45}, shift={(0, 0, -4)}]
|
|
% We first define the coordinate of the points of the Cube
|
|
\coordinate[] (bot) at (0,0,4);
|
|
\coordinate[] (top) at (4,4,0);
|
|
\coordinate[] (A1) at (0,0,0);
|
|
\coordinate[] (A2) at (4,0,4);
|
|
\coordinate[] (A3) at (0,4,4);
|
|
\coordinate[] (B1) at (4,0,0);
|
|
\coordinate[] (B2) at (4,4,4);
|
|
\coordinate[] (B3) at (0,4,0);
|
|
|
|
% Center of the Cube
|
|
\coordinate[] (cubecenter) at ($0.5*(bot) + 0.5*(top)$);
|
|
|
|
% We draw parts of the cube that corresponds to the Stewart platform
|
|
\draw[] (A1)node[]{$\bullet$} -- (B1)node[]{$\bullet$} -- (A2)node[]{$\bullet$} -- (B2)node[]{$\bullet$} -- (A3)node[]{$\bullet$} -- (B3)node[]{$\bullet$} -- (A1);
|
|
|
|
% ai and bi are computed
|
|
\def\lfrom{0.2}
|
|
\def\lto{0.8}
|
|
|
|
\coordinate(a1) at ($(A1) - \lfrom*(A1) + \lfrom*(B1)$);
|
|
\coordinate(b1) at ($(A1) - \lto*(A1) + \lto*(B1)$);
|
|
\coordinate(a2) at ($(A2) - \lfrom*(A2) + \lfrom*(B1)$);
|
|
\coordinate(b2) at ($(A2) - \lto*(A2) + \lto*(B1)$);
|
|
\coordinate(a3) at ($(A2) - \lfrom*(A2) + \lfrom*(B2)$);
|
|
\coordinate(b3) at ($(A2) - \lto*(A2) + \lto*(B2)$);
|
|
\coordinate(a4) at ($(A3) - \lfrom*(A3) + \lfrom*(B2)$);
|
|
\coordinate(b4) at ($(A3) - \lto*(A3) + \lto*(B2)$);
|
|
\coordinate(a5) at ($(A3) - \lfrom*(A3) + \lfrom*(B3)$);
|
|
\coordinate(b5) at ($(A3) - \lto*(A3) + \lto*(B3)$);
|
|
\coordinate(a6) at ($(A1) - \lfrom*(A1) + \lfrom*(B3)$);
|
|
\coordinate(b6) at ($(A1) - \lto*(A1) + \lto*(B3)$);
|
|
|
|
% We draw the fixed and mobiles platforms
|
|
\path[fill=colorblue, opacity=0.2] (a1) -- (a2) -- (a3) -- (a4) -- (a5) -- (a6) -- cycle;
|
|
\path[fill=colorblue, opacity=0.2] (b1) -- (b2) -- (b3) -- (b4) -- (b5) -- (b6) -- cycle;
|
|
\draw[color=colorblue, dashed] (a1) -- (a2) -- (a3) -- (a4) -- (a5) -- (a6) -- cycle;
|
|
\draw[color=colorblue, dashed] (b1) -- (b2) -- (b3) -- (b4) -- (b5) -- (b6) -- cycle;
|
|
|
|
% The legs of the hexapod are drawn
|
|
\draw[color=colorblue] (a1)node{$\bullet$} -- (b1)node{$\bullet$}node[below right]{$\bm{b}_3$};
|
|
\draw[color=colorblue] (a2)node{$\bullet$} -- (b2)node{$\bullet$}node[right]{$\bm{b}_4$};
|
|
\draw[color=colorblue] (a3)node{$\bullet$} -- (b3)node{$\bullet$}node[above right]{$\bm{b}_5$};
|
|
\draw[color=colorblue] (a4)node{$\bullet$} -- (b4)node{$\bullet$}node[above left]{$\bm{b}_6$};
|
|
\draw[color=colorblue] (a5)node{$\bullet$} -- (b5)node{$\bullet$}node[left]{$\bm{b}_1$};
|
|
\draw[color=colorblue] (a6)node{$\bullet$} -- (b6)node{$\bullet$}node[below left]{$\bm{b}_2$};
|
|
\end{scope}
|
|
|
|
% Height of the Hexapod
|
|
\coordinate[] (sizepos) at ($(a2)+(0.2, 0)$);
|
|
\coordinate[] (origin) at (0,0,0);
|
|
|
|
\draw[->, color=colorgreen] ($(cubecenter.center)+(0,2.0,0)$) node[above right]{$\{B\}$} -- ++(0,0,1);
|
|
\draw[->, color=colorgreen] ($(cubecenter.center)+(0,2.0,0)$) -- ++(1,0,0);
|
|
\draw[->, color=colorgreen] ($(cubecenter.center)+(0,2.0,0)$) -- ++(0,1,0);
|
|
|
|
\node[] at (cubecenter.center){$\bullet$};
|
|
\node[right] at (cubecenter.center){$\{C\}$};
|
|
|
|
\draw[<->, dashed] (cubecenter.center) -- node[midway, right]{$H$} ($(cubecenter.center)+(0,2.0,0)$);
|
|
\end{tikzpicture}
|
|
#+end_src
|
|
|
|
#+RESULTS:
|
|
[[file:figs/detail_kinematics_cubic_schematic.png]]
|
|
|
|
#+begin_src latex :file detail_kinematics_centralized_control.pdf
|
|
\begin{tikzpicture}
|
|
\node[block] (Jt) at (0, 0) {$\bm{J}^{-\intercal}$};
|
|
\node[block, right=0.5 of Jt] (G) {$\bm{G}$};
|
|
\node[block, right=0.5 of G] (J) {$\bm{J}^{-1}$};
|
|
\node[block, left=0.7 of Jt] (Kx) {$\bm{K}_{\mathcal{X}}$};
|
|
|
|
\draw[->] (Kx.east) node[above right]{$\bm{\mathcal{F}}$} -- (Jt.west);
|
|
\draw[->] (Jt.east) -- (G.west) node[above left]{$\bm{\tau}$};
|
|
\draw[->] (G.east) -- (J.west) node[above left]{$\bm{\mathcal{L}}$};
|
|
\draw[->] (J.east) -- ++(0.8, 0);
|
|
\draw[->] ($(J.east) + (0.4, 0)$)node[]{$\bullet$} node[above]{$\bm{\mathcal{X}}$} -- ++(0, -1) -| ($(Kx.west) + (-0.4, 0)$) -- (Kx.west);
|
|
|
|
\begin{scope}[on background layer]
|
|
\node[fit={(Jt.south west) (J.north east)}, fill=black!20!white, draw, dashed, inner sep=4pt] (Px) {};
|
|
\node[anchor={south}] at (Px.north){\small{Cartesian Plant}};
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
#+end_src
|
|
|
|
#+RESULTS:
|
|
[[file:figs/detail_kinematics_centralized_control.png]]
|
|
|
|
#+begin_src latex :file detail_kinematics_decentralized_control.pdf
|
|
\begin{tikzpicture}
|
|
\node[block] (G) at (0,0) {$\bm{G}$};
|
|
|
|
\node[block, left= of G] (Kl) {$\bm{K}_{\mathcal{L}}$};
|
|
|
|
\draw[->] (Kl.east) -- node[midway, above]{$\bm{\tau}$} (G.west);
|
|
\draw[->] (G.east) -- ++(1.0, 0);
|
|
\draw[->] ($(G.east) + (0.5, 0)$)node[]{$\bullet$} node[above]{$\bm{\mathcal{L}}$} -- ++(0, -1) -| ($(Kl.west) + (-0.5, 0)$) -- (Kl.west);
|
|
|
|
\begin{scope}[on background layer]
|
|
\node[fit={(G.south west) (G.north east)}, fill=black!20!white, draw, dashed, inner sep=4pt] (Pl) {};
|
|
\node[anchor={south}] at (Pl.north){\small{Strut Plant}};
|
|
\end{scope}
|
|
\end{tikzpicture}
|
|
#+end_src
|
|
|
|
#+RESULTS:
|
|
[[file:figs/detail_kinematics_decentralized_control.png]]
|