\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}
