diff --git a/slides.pdf b/slides.pdf index f895203..f6a516a 100644 Binary files a/slides.pdf and b/slides.pdf differ diff --git a/slides.tex b/slides.tex index e2de0b7..d059704 100644 --- a/slides.tex +++ b/slides.tex @@ -46,11 +46,11 @@ \begin{figure} \centering \begin{tikzpicture} - \draw[vulm, fill=yulm!30] (0, 0) rectangle +(2, 2) node[pos=.5] {\texttt{.svg}}; + \draw[vulm, rounded corners, fill=yulm!30] (0, 0) rectangle +(2, 2) node[pos=.5] {\texttt{.svg}}; \draw[vulm, ->] (2, 1) -- (3, 1); - \draw[vulm, fill=yulm!30] (3, 0) rectangle +(2, 2) node[pos=.5] {\texttt{.gc}}; + \draw[vulm, rounded corners, fill=yulm!30] (3, 0) rectangle +(2, 2) node[pos=.5] {\texttt{.gc}}; \draw[vulm, ->] (5, 1) -- (6, 1); - \draw[vulm, fill=yulm!30, double] (6, 0) rectangle +(2, 2) node[pos=.5] {\texttt{PMB}}; + \draw[vulm, rounded corners, fill=yulm!30, double] (6, 0) rectangle +(2, 2) node[pos=.5] {\texttt{PMB}}; \end{tikzpicture} \end{figure} \visible<2->{Le format GCode est standardisé, et indépendant des capacités de la machine.} @@ -110,16 +110,16 @@ \begin{minipage}{.5\textwidth} \begin{tikzpicture} \pic(comp0) [ - draw, fill = gray!30, pic text = {Contrôleur de Petite Machine à Bois}, scale=.3 + draw, fill = gray!30, pic text = {Contrôleur de Petite Machine à Bois}, scale=.25 ] {computer}; \coordinate (cnc) at ($(comp0-c.south) + (0, -1)$); - \path (comp0-c.east) edge [loop right, min distance=.7cm, in=330, out=30, looseness=8, -{Latex[width=3mm]}, vulm] node[right, vulm, rectangle, fill=yulm!30, draw=vulm] {GCode} (comp0-c.east); - \draw[vulm, fill=yulm!30] ($(cnc) + (-1, 0)$) rectangle +(2, -1) node[pos=0.5] {Socket}; + \path (comp0-c.east) edge [loop right, min distance=.7cm, in=330, out=30, looseness=8, -{Latex[width=3mm]}, vulm] node[right, vulm, rectangle, fill=yulm!30, draw=vulm, rounded corners] {GCode} (comp0-c.east); + \draw[vulm, fill=yulm!30, rounded corners] ($(cnc) + (-1, 0)$) rectangle +(2, -1) node[pos=0.5] {Socket}; \draw[vulm, ->, double] ($(comp0-c.south) + (0.2, 0)$) --node[anchor=west, vulm]{$\omega_{c}$} ($(cnc.north) + (0.2, 0)$); \draw[vulm, <-, double] ($(comp0-c.south) + (-0.2, 0)$) --node[anchor=east, vulm]{$\theta$} ($(cnc.north) + (-0.2, 0)$); \draw[vulm, ->, double] ($(cnc) + (0.2, -1)$) -- node[anchor=west, vulm]{$\omega_{c}$} ($(cnc) + (0.2, -2)$);; \draw[vulm, <-, double] ($(cnc) + (-0.2, -1)$) -- node[anchor=east, vulm]{$\theta$} ($(cnc) + (-0.2, -2)$);; - \draw[vulm, fill=yulm!30] ($(cnc) + (-2, -2)$) rectangle +(4, -1) node[pos=0.5] {Petite Machine à Bois}; + \draw[vulm, fill=yulm!30, rounded corners] ($(cnc) + (-2, -2)$) rectangle +(4, -1) node[pos=0.5] {Petite Machine à Bois}; \end{tikzpicture} \end{minipage} \hfill @@ -128,7 +128,7 @@ \node[vulm, font=\small] (top) at (0, 0) {\parbox{.9\linewidth}{\textbf{Contrôleur:} traduit le GCode et envoie les vitesses de commande $\omega_{c}$ pour les moteurs.}}; \node[vulm, font=\small] (mid) at ($(top.south) + (0, -2)$) {\parbox{.9\linewidth}{\textbf{Socket:} sert d'intermédiaire pour la connexion (PMB).}}; \node[vulm, font=\small] (bot) at ($(mid.south) + (0, -2)$) {\parbox{.9\linewidth}{\textbf{Petite Machine à Bois:} envoie les positions $\theta$ de ses moteurs pas-à-pas.}}; - \node[draw=vulm, thick, fit={(top) (mid) (bot)}, inner sep=3pt] (box) {}; + \node[draw=vulm, thick, fit={(top) (mid) (bot)}, inner sep=3pt, rounded corners] (box) {}; \end{tikzpicture} \end{minipage} \hfill @@ -163,20 +163,20 @@ \begin{frame} \frametitle{Contrôleur Matériel} Le module matériel du contrôleur maintient une représentation mémoire de la position \emph{théorique} de la tête, transmise au contrôleur. - Il demande à la soc (et donc au \emph{vrai} matériel) les positions mesurées des moteurs pas-à-pas. + Il demande à la socket (et donc au \emph{vrai} matériel) les positions mesurées des moteurs pas-à-pas. \begin{figure} \centering \begin{tikzpicture} - \draw[vulm, fill=yulm!30] (0, 0) rectangle +(2, 1) node[pos=0.5] (h) {Matériel}; - \draw[vulm, fill=yulm!30] (6, 0) rectangle +(2, 1) node[pos=0.5] (c) {Contrôleur}; - \draw[vulm, fill=yulm!30] (0, -2) rectangle +(2, 1) node[pos=0.5] (s) {Socket}; - \draw[vulm, ->] ($(h.east) + (.2, 0.1)$) -- node[above, vulm] {Position $\rho$ \& Cible $\tau$} ($(c.west) + (-0.1, 0.1)$); - \draw[vulm, <-] ($(h.east) + (.2, -0.1)$) -- node[below, vulm] {Déplacement $\Gamma_{c}$} ($(c.west) + (-0.1, -0.1)$); + \draw[vulm, rounded corners, fill=yulm!30] (0, 0) rectangle +(2, 1) node[pos=0.5] (h) {Matériel}; + \draw[vulm, rounded corners, fill=yulm!30] (6, 0) rectangle +(2, 1) node[pos=0.5] (c) {Contrôleur}; + \draw[vulm, rounded corners, fill=yulm!30] (0, -2) rectangle +(2, 1) node[pos=0.5] (s) {Socket}; + \draw[vulm, ->] ($(h.east) + (.25, 0.1)$) -- node[above, vulm] {Position $\rho$ \& Cible $\tau$} ($(c.west) + (-0.1, 0.1)$); + \draw[vulm, <-] ($(h.east) + (.25, -0.1)$) -- node[below, vulm] {Déplacement $\Gamma_{c}$} ($(c.west) + (-0.1, -0.1)$); \draw[vulm, ->] ($(h.south) + (.1, -.3)$) -- node[right, vulm] {$\omega_{c}$} ($(s.north) + (.1, 0.3)$); \draw[vulm, <-] ($(h.south) + (-.1, -.3)$) -- node[left, vulm] {$\theta$} ($(s.north) + (-.1, 0.3)$); \end{tikzpicture} \end{figure} - Il envoie ensuite à la soc pour envoyer les vitesses de commandes traduites dans la spécification des moteurs. + Il envoie ensuite les vitesses de commandes traduites dans la spécification des moteurs. \end{frame} \begin{frame} @@ -192,12 +192,12 @@ \begin{frame} \frametitle{Simulateur} - Pour modéliser la Petite Machine à Bois, on construit un simulateur physique simple. - Le simulateur tourne en continu, et ne change de vitesse pour résoudre les équations qu'à chaque changement de direction. - On a ensuite par le PFD: - \begin{equation*} - \dot{J_{\omega}} = \underset{\text{Inertie}}{-f\omega} + \underset{\text{Couple Commande}}{\left( \omega_{c} - \omega_{t} \right)}, \hfill \omega_{t + 1} = \omega_{t} + \Delta t \left( -f\omega + \left( \omega_{c} - \omega_{t} \right) \right) - \end{equation*} + Le simulateur tourne en continu, et ne change de vitesse pour résoudre les équations qu'à chaque changement de direction.\\ + On a ensuite par intégration directe du PFD: + \begin{align*} + J\dot{\omega} = \underset{\text{Friction}}{-f_{0} \times \omega_{t}} + \underset{\text{Gain Moteur}}{\Gamma \left(\omega_{c} - \omega_{t} \right)} \\ + \omega_{t + \Delta t} = \omega_{t} + \underset{\text{Inertie}}{J^{-1}} \times \Delta t \left( -f\omega + \Gamma\left( \omega_{c} - \omega_{t} \right) \right) + \end{align*} On introduit par ailleurs un terme d'erreur lié aux frottements, et on peut encore raffiner le modèle. \end{frame} @@ -206,7 +206,7 @@ \begin{frame} \frametitle{Intérêt} - L'utilisation d'un soc et d'un modèle théorique restreint comme intermédiaire permet de prendre en compte, durant les phases de test, les différents facteurs d'erreurs pouvant intervenir durant l'exécution: + L'utilisation d'une socket et d'un modèle théorique restreint comme intermédiaire permet de prendre en compte, durant les phases de test, les différents facteurs d'erreurs pouvant intervenir durant l'exécution: \begin{itemize} \item Une connexion trop volatile; \item Des erreurs liées au glissement des moteurs pas-à-pas; @@ -218,7 +218,8 @@ \begin{frame} \frametitle{Réalisme de la Simulation} \begin{itemize} - \item La simulation est pour l'instant peu réaliste car nos modèles physiques sont simplifiés. On ne prend notamment pas en compte le matériau de découpe. + \item La simulation est pour l'instant peu réaliste car nos modèles physiques sont simplifiés. + \item Nos moteurs sont modélisés par des moteurs asynchrones plus que pas-à-pas. \item Le contrôleur pour l'instant implémenté ne prend pas en compte la suite des instructions dans sa globalité, et en particulier ne prévoit pas de restreindre l'effort sur les moteurs, en revenant le plus possible à $\omega = 0$. \end{itemize} \end{frame}