\chapter{Praktická část} \section{3D model} Pro modelování dílů jsem se rozhodl použít CAD software FreeCAD. Pro tento CAD jsem se rozhodl proto, že je opensource a tedy dostupný pro každého, kdo jej chce používat. Software FreeCAD byl nedávno vydán ve verzi 1.0, což ve světě open-source mj. znamená připravenost pro použití v praxi. FreeCAD je univerzální parametrický modelovací systém vydaný pod licencí LGPL, tudíž jej lze libovolně šířit a modifikovat. FreeCAD je také multiplatformní, tudíž jej lze používat v operačních systémech Windows, Linux i MacOS. FreeCAD je napsán v jazyce C++ a pro manipulaci s geometrií využívá knihovny OpenCASCADE. FreeCAD lze jej rozšiřovat pomocí pluginů. FreeCAD též umožňuje psaní vlastních skriptů v jazyce Python a nahrávání vlastních maker. \cite{FreeCAD_wiki} Mnou vytvářené modely vychází z projektu x-scara. \cite{x-scara} Model je rozdělen do tří dílčích částí. První je základna, druhou je rameno a třetí je samotná hlava nástroje. Další částí je sestava s vyhřívanou podložkou. \subsection{Základna} Základna je složena ze hliníkových profilů 20x20mm a 20x40mm. Na základnu je upevněno rameno, které se díky lineárně valivým ložiskům pohybuje po vodící tyči o průměru 8mm. Základna je složena ze hliníkových profilů 20x20mm a 20x40mm. Na základnu je upevněno rameno, které se díky lineárně valivým ložiskům pohybuje po třech vodících tyčích o průměru 8mm. V horní části základny je upevněn krokový motor, který pomocí trapézové tyče o průměru 8mm pohybuje ramenem v ose Z. Pro spojení hliníkových profilů jsem zvolil techniku "Blind Joint", která umožňuje pevné a levné spojení dvou hliníkových profilů. Tuto techniku jsem zvolil i z důvodů snadnější montáže akrylové desky a možnosti zapuštění elektroniky do rámu tiskárny. V zadní části zakladny je též prostor pro upevnění elektroniky. Za akrylovým panelem jsou přimontovány dvě DIN lišty, na které jsou pomocí adaptérů upevněny jednotlivé elektronické prvky. \section{Implementace kinematiky scara do Klippy} Klippy je část firmwaru Klipper, která běží na počítači uvnitř 3D tiskárny, ke kterému je připojena řídící deska. Kód je napsán převážne v jazyce Python, přičemž některé funkce jsou implementovány v jazyce C. Volání těchto funkcí je realizováno použitím rozraní CFFI (C Foreign Function Interface). \cite{klipper_code_overview} \subsection{Přímá a inverzní kinematika} Kinematické transformace se používají k převodu natočení kloubů na souřadnice koncového bodu (přímá transformace) a naopak (inverzní transformace). Pro výpočet transformace je třeba znát délky ramen \(L_1\) a \(L_2\), offsety ramen \(x_{offset}\) a \(y_{offset}\) a Elbow Crosstalk Ratio (ECR). Pro další výpočty je potřebné znát Elbow Crosstalk Ratio (převodový poměr řemenice v ose ramene vůči řemenici v ose kloubu). \begin{equation} ECR = \frac { n_S } { n_E } \end{equation} \subsubsection{Přímá kinematika} \begin{equation} \phi_S = a \end{equation} \begin{equation} \phi_E = b - \frac{a}{ECR} \end{equation} \begin{equation} a\_sin = - \sin(\phi_S) \cdot L_1 \end{equation} \begin{equation} a\_cos = \cos(\phi_S) \cdot L_1 \end{equation} \begin{equation} b\_sin = - \sin(\phi_S + \phi_E) \cdot L_2 \end{equation} \begin{equation} b\_cos = \cos(\phi_S + \phi_E) \cdot L_2 \end{equation} Nakonec je potřeba přičíst odsazení souřadného systému nástroje vůči souřadnému systému báze (konkrétně odsazení kloubu ramene vůči počátku tiskové podložky). \begin{equation} x = a\_sin + b\_sin + x_{offset} \end{equation} \begin{equation} y = a\_cos + b\_cos + y_{offset} \end{equation} \subsubsection{Inverzní kinematika} Nejprve je třeba kompenzovat offset polohy TCP v osách x a y. \begin{equation} x = - (raw_x - x_{offset}) \end{equation} \begin{equation} y = (raw_y - y_{offset}) \end{equation} Dalším krokem je výpočet vzdálenosti od počátku. \begin{equation} hypot = \sqrt{x^2 + y^2} \end{equation} Dále se vypočítají úhly ramen \(\phi_S\) (shoulder) a \(\phi_E\) (elbow). \begin{equation} \phi_S = arctan2 \left( x, y \right) - arccos \left( \frac { x^2 + y^2 + L_1^2 - L_2^2 } { 2 \cdot L_1 \cdot hypot } \right) [\si{\radian}] \end{equation} kde \(L_1\) a \(L_2\) jsou délky ramen. \begin{equation} \phi_E = \frac { \phi_S } { ECR } + arccos \left( \frac { x^2 + y^2 + L_1^2 + L_2^2 } { 2 \cdot L_1 \cdot L_2 } \right) [\si{\radian}] \end{equation} kde \(ECR\) je Elbow Crosstalk Ratio, \(L_1\) a \(L_2\) jsou délky ramen. Následně stačí převést úhel v radiánech na stupně. \begin{equation} \Phi_S = \phi_S \cdot \frac { 180 } { \pi } [\si{\degree}] \end{equation} \begin{equation} \Phi_E = \phi_E \cdot \frac { 180 } { \pi } [\si{\degree}] \end{equation} \section{}