\documentclass[12pt,a3paper]{article}
\usepackage{better_poster}


% ---- fill in from here

% authors
\title{4 DOF electromagnetic robot arm}
\author{A project in IN5590 by Ahmed Murad E-mail: ahmadmm@ifi.uio.no }

% type of poster: [exp]erimental results, [methods], [theory]
% Disclaimer: the original classification had "study" and "intervention" as separate categories. I group them under experimental results.
\newcommand\postertype{exp} % [exp],[methods],[theory]

\begin{document}

% main point of your study
\makefinding{
\textbf{4 DOF electromagnetic robot arm}.
}


% \makemain{
% }{

% }


% the main text of your poster goes here
\makemain{
    % you can have 1 or 2 columns
    \raggedcolumns
    \begin{multicols}{2}
        \section{Intro}
        A 4 DOF robot arm with a electromagnetic end effector. The robot arm will be controlled by a PC. The electromagnetic end effector will be able to pick up and drop small metal objects, and turn on and off via the controlling PC. All the actuators are rotational.

        The configuration is chosen so we can access a almost sphere around the robot base. The last joint is technically an end effector wrist, and is necessary for the end effector to be parallel to the ground.

        
        \begin{itemize}
        \setlength\itemsep{0.1em}
            \item Pick up and drop small metals
            \item Controlled by PC (code, pre-made path)
            \item Controlled by PC (GUI, dynamically change positions)
        \end{itemize}
        
        
        
        
        \section{Tools}
        The tools needed to complete this project:
        \begin{itemize}
        \setlength\itemsep{0.1em}
            \item 4 Dynamixel AX18
            \item wheel bearing
            \item electromagnet
            \item switch
        \end{itemize}

        The \textbf{Pypot} Python package is used to control the motors. This is sufficient for static control, such as executing pre-made paths. The script for this functionality is named \texttt{manual\_control.py} in the GitHub repository.
        
        For dynamic control using a GUI, the \textbf{Flask} framework is employed. The script \texttt{flask\_control.py} provides a web interface that allows you to control individual motor positions, speed, and torque in real time.
        
        The final script in the repository, \texttt{kinematics.py}, is designed to calculate the robot's inverse kinematics. Given an \(x\), \(y\), and \(z\) position, it computes the required motor angles to achieve the specified position.

        
    % this determines where your columns will be separated
    \columnbreak

        \section{Conclusion}
        I successfully achieved my goal of picking up and dropping off metal objects using an electromagnet.
        
        I also accomplished my goal of controlling the robot arm via a PC and creating pre-defined paths for it to follow. The robot follows these paths smoothly, without any unnecessary stops.
        
        Additionally, I developed a GUI to control the robot. The interface is built using the Flask framework as a web-based application.

        \subsection{future work}
        The kinematics file does not work as intended. One issue I have identified is that it does not account for some motors being reversed, meaning the output results should also be reversed in these cases.
        
        The robot is unstable because it accelerates and decelerates too quickly. This causes the entire robot to swing, as the arm has momentum. There is no obvious way to slow it down and make it approach the desired speed more gradually.
        
        The robot has a relatively high chance of failure. This includes reaching the wrong goal position or, worse, failing to comply with the maximum speed limits. Not adhering to the maximum speed can—and has—posed dangers to the surrounding environment and nearby individuals.
    
    \end{multicols}
}
% If you have extra figures or data to show
\makeextracolumn{
    \includegraphics[width=0.7\linewidth]{images/2.png}
    
    Image of the robot arm

    \vspace{1cm}

    \includegraphics[width=0.8\linewidth]{images/3.png}
    
    Image of the control GUI
}

% footer
% generate qr code from https://www.qr-code-generator.com/ and replace qr_code.png
% default: barcode on the left
\makealtfooter{images/uni_logo.pdf}{images/qr-code.png}

% replace with this like for barcode on the right
%\makealtfooter{images/uni_logo.png}{images/qr-code.png}
 
\end{document}
