Files
2025-11-27 17:53:13 +01:00

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]]