\documentclass[a4paper,dvips,pdftex,titlepage]{article} \title{Présentation du robot} \author{équipe du robot \\ APB Team} \usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} \usepackage[french]{babel} \usepackage{fancyhdr} \usepackage[dvips]{graphicx} \usepackage{verbatim} \usepackage{times} \usepackage{vmargin} \pagestyle{fancy} \parskip=10pt \baselineskip=12pt \parindent=20pt % alinéa \lhead{\small{APB Team}} \rhead{description du robot } \newcommand{\graphtt}[1]{ \begin{center} \includegraphics[width=.5\textwidth]{#1} \end{center} } \newcommand{\grapht}[1]{ \begin{center} \includegraphics[width=\textwidth]{#1} \end{center} } \newcommand{\graph}[1]{ \begin{center} \includegraphics{#1} \end{center} } \begin{document} \maketitle \tableofcontents \pagebreak Cette description du robot comporte trois parties:\newline \begin{itemize} \item une partie mécanique, \item une partie électronique et \item une partie informatique. \end{itemize} \section{Partie mécanique} \subsection{Description générale} Le robot est composé de deux parties indpendantes : une partie haute avec les cartes électronique et une partie basse avec les moteurs et le système de chargement/déchargement des balles. La coque est ralisé en plexiglass ce qui permet de monter et démonter ce robot très rapidement et de manière très simple. voir schéma. le chassis est en aluminium alors que la coque est en plexi. \subsection{Partie Moteur} le moteur est géré par un renvoi d'angle en T avec un rapport de réduction de 10. Il est alimenté en 12V sous environ 1 Ampère. Sa puissance maximale est de 20 W pour un couple de 244 mNm Nous avons décidé de choisir ce moteur car il correspondait parfaitement à nos attentes qui étaient un moteur puissant, fiable et rapide. \subsection{Partie Benne} La benne a été créé à l'aide d'une plaque d'aluminium plié. Sur cette plaque, sont installés un moteur et un rouleau permettant aux balles d'être avalées ou rejetées selon le sens dans lequel le rouleau tourne. La benne est soulevé par un servo pour permettre aux balles de passer le petit muret lors du déchargement. Pour les dimensions de la benne, se référer au plan ci joint. \grapht{remontage_4.jpg} \subsection{Partie rangement des cartes} La partie supérieure du robot est constituée de deux modules indépendants : le premier est un bac conteneur de cartes qui permet de retirer et d'installer toutes les cartes de façon simple et rapide. \subsection{Partie console de puissance} Nous avons créé un module d'alimentation externe appelé NESTOR(V0.2). Pour selectionner la source d'alimentation du robot, se trouve ce module constitué de switch pour les différentes cartes électronique et les moteurs. Un accès pour intégrer un écran sur la carte PC104 a été installé ainsi qu'un accès au reset et à l'arrêt de la carte mère. Le bouton rouge obligatoire coupe l'arrivé en courant de toutes les parties mécaniques. \grapht{control.jpg} \pagebreak \section{Partie électronique} L'électronique a une présence forte dans notre robot. Elle est représenté par un total de 5 cartes électronique en plus de la carte mère (PC104). \subsection{carte de puissance} La carte de puissance a pour objectif de de transmettre la puissance depuis les batteries aux moteurs. Elle est contrôlée par la carte d'asservissement qui lui fournie les instructions necessaire quant à la puissance à délivrer. \grapht{puissance.jpg} \subsection{carte d'alimentation} Cette carte à pour rôle de proposer une connectique unique pour toutes les alimentations. Elle propose du 5V non régulé, du 5V régulé, du 12V non régulé et du 12V régulé. Ces alimentations sont utilisées autant par les cartes que les servo-moteurs. Par contre les moteurs de déplacement sont alimentés par une baterie différente afin d'éviter les chutes de tension et les parasites. \subsection{carte de d'asservissement} La carte d'asservissement a un rôle très important, c'est elle qui contrôle que les moteurs ont bien suivi les instructions de la carte mère. La carte mère peux donner un ordre en vitesse pour chaque moteur. Toutes les 32 ms, la carte d'asservissement va rapporter à la carte mère l'avancement réel à gauche et à droite afin de calculer la position du robot. Comme c'est la carte mère qui contrôle la position et la carte d'asservissement qui contrôle la vitesse, on peut faire toute sorte de trajectoires fantaisistes. \subsection{carte capteurs} La carte capteur est simple, elle est chargé de retransmettre à la carte mère via le port serie l'état du capteur demandé. Elle est aussi chargée de commander deux servos-moteur. Elle est constituée d'entrées capteurs contact et d'entrés comparées ainsi que 4 entrées capteurs qui sont transformées en numérique via le PIC et ses convertisseurs analogiques/numérique (malheureusement la conversion numérique n'est aparement pas trés heureuse...). \grapht{capteur.jpg} \subsection{carte mère} La carte mère est le module qui va prendre toutes les décisions. La carte mère que nous avons utilisée est une PC104. Elle est simple d'utilisation et elle est conçue pour être embarquée. Elle comprend 10 ports séries grâce à une carte d'extension qui rajoute 8 port series. \graph{pc104.jpg} \pagebreak \section{Partie informatique} \subsection{Module camera} Le robot est équipé d'une camera. Elle nous permet de détecter les balles et les palmiers. La detection se fait en plusieurs étapes: \begin{itemize} \item Aquisition; \item Traitement de l'image; \item Detection et filtrage des groupes de pixels; \item Conversion dans le repère du robot. \end{itemize} L'aquisition se fait grâce à l'interface Video4linux et la camera attachée au port USB. Le traitement de l'image permet pour chaque pixel de déterminer à quel objet il appartient. Cela se fait avec un réseau neuronal sur chaque pixel en fonction de la couleur. La calibration se fait automatiquement par aprentissage du réseau. \graph{camera.jpg} Pour les groupes, dès qu'un pixel correspondant à une balle est trouvé, le programme cherche autour de ce pixel afin de trouver des pixels de balles et en déduire la taille de la balle. La conversion dans le repere du robot se fait par des équations du second degrés que l'on doit calibrer avec des points pris sur une image. \subsection{Module asservissement en position} Ce module est directement connecté à la carte d'asservissement. C'est lui qui permet de faire les trajectoires que l'on veut. Le principe de base est la ``carotte''. Selon la trajectoire que l'on veut obtenir, on place un point devant le robot. Par projection dans le repère du robot, on trouve une erreur linéaire et angulaire. Ces erreurs sont multipliées par des coefficients puis appliquées sur la vitesse des roues. \subsection{Détermination du chemin} Afin d'eviter les obstacles, le robot intègre un algorithme de détermination du plus court chemin. Nous utilisons un algorithme de Dijkstra. Le plus compliqué est de générer le graph que l'on donne à l'algorithme. Pour cela on place des points tout autour des obstacles et on relie les points qui ne traversent pas d'obstacle (ou pour être plus précis, les segments qui ne se raprochent pas trop des obstacles). \graphtt{g.png} \graphtt{g1.png} \subsection{Intelligente artificielle} L'intelligence du robot est programmée dans un automate directement dans le programme de la carte mêre. Ce n'est pas trés flexible, mais c'est plus simple. On change d'état dans l'automate en fonction de l'état des capteurs, des tempos, des déplacements, etc... \end{document}