Binome2015-3 : Différence entre versions

De Wiki de bureau d'études PeiP
(Jour 1)
 
(83 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
== Aptitudes du robot ==
+
<include nopre noesc src="/home/pedago/ppeip/include/video-Robot3-2015-iframe.html" />
 +
__TOC__
 +
<br style="clear: both;">
 +
= Introduction =
  
  - Le robot doit éviter des obstacles (autres robots,buts,...)
+
Dans le cadre de ce bureau d'étude, nous avons pour rôle la réalisation d'un robot capable de participer à un match de foot particulier.
  - Le robot doit repérer les lignes du terrain
+
Le robot est censé prendre une balle infrarouge, avant un 2e robot joueurs, marquer un but. En plus de ça, il doit être capable de reconnaitre et suivre des lignes.
  - Le robot doit reconnaître la balle
 
  - Le robot doit savoir récupérer la balle
 
  - Le robot doit savoir envoyer la balle
 
  - Le robot doit savoir communiquer avec le ramasseur, les buts et le robot adverse.
 
  
 +
Ce wiki relatera les tâches accomplies à chaque séance dans le journal de bord, le raisonnement suivit pour la réalisation des différents éléments du robot ainsi que les difficultés que nous avons rencontrées.
  
== Journal de Bord ==
+
= Aptitudes du robot compétiteur=
  
Jour 1
+
* Le robot doit éviter des obstacles (autres robots,buts,...)
 +
* Le robot doit repérer les lignes du terrain (les suivre pour sortir/rentrer dans le garage, ne pas sortir du terrain)
 +
* Le robot doit reconnaître la balle
 +
* Le robot doit savoir récupérer la balle
 +
* Le robot doit savoir envoyer la balle
 +
* Le robot doit savoir communiquer avec le ramasseur, les buts et le robot adverse.
  
Choix composants robots joueur
+
= Journal de Bord =
  chassis deux roues
 
  
 +
==Séance 1==
  
Jour2
+
*Présentation du projet
 +
*Choix des composantes  du robot joueur: châssis deux roues pour faciliter les rotations
 +
*Début de l'assemblage du châssis.
  
Finalisation montage moteur + boite piles + roue libre
+
----
programme arduino fonctionnement moteur
+
==Séance 2==
  
 +
*Finalisation montage moteur + boite piles + roue libre sur le chassis<br/>
 +
*Découverte de la programmation arduino + fonctionnement moteur
 +
<gallery style="margin: 0 auto;">
 +
Fichier:robot(1).jpg
 +
Fichier:robot(2).jpg
 +
</gallery>
 +
 +
----
 +
==Séance 3==
 +
 +
*Première mise en marche des moteurs : direction + vitesse de rotation
 +
<gallery style="margin: 0 auto;">
 +
Fichier:montage_moteurs_arduino.jpg
 +
</gallery>
 +
 +
----
 +
==Séance 4==
 +
 +
*Imagination de la pince
 +
<gallery style="margin: 0 auto;">
 +
Fichier:schéma_pince.jpg
 +
</gallery>
 +
 +
----
 +
==Séance 5==
 +
 +
*Prise en main du logiciel Free Cads pour modéliser la pince
 +
 +
----
 +
==Séance 6==
 +
 +
*fin de la modélisation de la pince avec Free Cads
 +
<gallery style="margin: 0 auto;">
 +
Fichier:Image_pince.jpg
 +
</gallery>
 +
----
 +
==Séance 6==
 +
 +
*Première utilisation des phototransistors et détermination de la résistance nécessaire (3000 ohm)
 +
*Première utilisation  du servo-moteur à l'aide d'Arduino
 +
*réflexion sur le train d'engrenages à utiliser pour faire fonctionner la pince
 +
 +
----
 +
==Séance 7==
 +
 +
*modélisation sur Free Cads du train d'engrenage
 +
*modélisation sur Free Cads des supports nécessaire au maintien de la pince
 +
<gallery style="margin: 0 auto;">
 +
Fichier:Support_pince_groupe3.jpeg
 +
</gallery>
 +
 +
----
 +
==Séance 8==
  
Taches à faire
+
*Début de la modélisation du PCB sur Fritzing
soudure circuit électrique
+
*Pince robot imprimée
 +
*Création du programme de détection de la balle par les 5 capteurs infrarouges placés devant le robot.
  
== Photos Chassis ==
+
----
 +
==Séance 9==
 +
 
 +
*Modélisation du PCB moteur qui sera placé au dessus de la carte Arduino.
 +
<gallery style="margin: 0 auto;">
 +
Fichier:PCB-mot-groupe3.png
 +
</gallery>
 +
*Suite de la programmation du programme de détection de la balle
 +
 
 +
----
 +
==Séance 10==
 +
 
 +
*Retour sur décision. il faut placer 2 capteurs de lignes sur le PCB, il est beaucoup plus difficile de faire suivre une ligne au robot avec un unique capteur de ligne.
 +
*suite de la programmation du programme de détection de la balle
 +
 
 +
----
 +
==Séance 11==
 +
 
 +
*
 +
*fin de la programmation du programme de détection de la balle
 +
 
 +
----
 +
 
 +
==Séance 12==
 +
 
 +
*Fin de la modélisation du premier PCB, début de la modélisation du second PCB
 +
*Tests du programme de détection de la balle peu concluant : problèmes de court-circuits entre les LED et la carte Arduino. Il faudra refaire des tests lorsqu'on aura les deux PCB
 +
 
 +
----
 +
==Séance 13==
 +
 
 +
*Programme pour éviter les obstacles
 +
 
 +
----
 +
 
 +
==Séance 14==
 +
 
 +
*amélioration du programme de détection de la balle
 +
 
 +
----
 +
==Séance 15==
 +
 
 +
*programmation du mouvement du servomoteur pour ouvrir, fermer et tirer avec la pince
 +
 
 +
----
 +
==Séance 16==
 +
 
 +
*obtention des roues dentées : trop de frictions entre les engrenages, ils ne tournent pas correctement ==> nouvelle impression du support des engrenages
 +
 
 +
----
 +
 
 +
==Séance 17==
 +
 
 +
*Test du train d'engrenage : les roues dentée rengrènement correctement.
 +
<gallery style="margin: 0 auto;">
 +
Fichier:Engrenages_groupe3.jpg
 +
</gallery>
 +
*programmation du suivi d'une ligne par le robot à l'aide des deux capteurs de lignes.
 +
 
 +
----
 +
 
 +
==Séance 18 : 18/04/2016==
 +
 
 +
*obtention du second PCB : soudure
 +
<gallery style="margin: 0 auto;">
 +
Fichier:PCB_2.jpg
 +
</gallery>
 +
*programmation du suivi d'une ligne par le robot à l'aide des deux capteurs de couleur
 +
 
 +
----
 +
==Séance 19==
 +
 
 +
*obtention des supports de la pince
 +
<gallery style="margin: 0 auto;">
 +
Fichier:Support_pince_groupe3.jpeg
 +
</gallery>
 +
 
 +
----
 +
==Séances du 02/05 au 04/05==
 +
 
 +
*fin de l'assemblage du robot avec les PCB fonctionnels et la pince fixé
 +
<gallery style="margin: 0 auto;">
 +
Fichier:Robot_fini_groupe3.jpg
 +
</gallery>
 +
*rectification des programmes et tests sur le robot : capable de suivre la ligne, de ne pas sortir du terrain, de suivre la balle, de l'attraper et de tirer et d'éviter un obstacle
 +
 
 +
----
 +
 
 +
==Séance supplémentaires==
 +
 
 +
Durant ces dernières heures passé à travailler sur le BE, il a fallut peaufiner les différentes fonctions, essentiellement le suivi de ligne, la fonction de la pince et le repérage de balle.
 +
Il a fallut aussi assembler les différentes fonctions en 1 programme pour respecter le mieux possible l'algorithme de base.
 +
 
 +
= Photos Chassis =
 
<gallery style="margin: 0 auto;">
 
<gallery style="margin: 0 auto;">
 
Fichier:Accessoires_robot.jpg
 
Fichier:Accessoires_robot.jpg
Ligne 33 : Ligne 187 :
 
</gallery>
 
</gallery>
  
 +
= Pince =
 +
Le système utilisé pour prendre et propulser la balle infrarouge est une pince qui éjecte la balle, lors de son ouverture.
 +
<gallery style="margin: 0 auto;">
 +
Fichier:Pince-groupe3.png
 +
</gallery>
 +
 +
La motorisation de cette pince est réalisé par un unique servomoteur. Un train d'engrenage sert à transmettre la rotation du servomoteur aux 2 parties de la pince.
 +
 +
 +
Nous avons choisi un tel dispositif car cela ne nécessite qu'un seul servomoteur, ce qui nous permet d'économiser de l'espace à l'avant du robot, les servomoteurs étant plutôt volumineux. Non seulement le servomoteurs, mais aussi les phototransistors, les capteurs de couleurs ainsi que le capteur ultrason se trouvent à l'avant du robot.
 +
 +
Pour réaliser la pince, nous avons d'abord dû effectuer des recherches afin d'explorer les différents mécanismes réalisables.
 +
Ayant quelques connaissances sur le fonctionnement des engrenages, nous nous sommes dit qu'un tel système pourrait être réalisable
 +
 +
 +
Pour réaliser la pince nous avons d'abord dû apprendre à utiliser  le logiciel de modélisation 3D, FreeCad.
 +
C'est à ce moment que nous avons effectuer une première répartition des tâches au sein de notre groupe : l'un s'occupait des deux troncs principaux de la pince et des supports, l'autre des engrenages.
 +
 +
<h5>Le train d'engrenage</h5>
 +
Nous avons choisis de n'utiliser qu'un seul servomoteurs par soucis de gain de place. Il a donc fallut créer un train d'engrenage. La création de ce train d'engrenage a débuté par le choix d'un module de roue dentées à appliquer à chaque roue. Toutes les roues ont un module m = 1.5mm.
 +
Il a fallut ensuite choisir un nombre de dents pour chaque roues qui nos permettrait à la fois d'avoir, un meilleur couple possible pour la pince, le moins de roues possibles et avoir des sens de rotations en sortie différents, mais de même vitesse. Nous avons donc choisis ces caractéristiques.
 +
 +
<gallery style="margin: 0 auto;">
 +
Fichier:Capture.PNG
 +
</gallery>
 +
 +
 +
 +
Nous avons souvent dû effectuer des transformations, notamment sur la taille des éléments de la pince afin que tout les éléments du robot puissent fonctionner ensemble. En effet, nous avons choisis de tester tout le matériel mis à notre disposition le plus tôt possible afin d'estimer quel serait leur meilleur placement sur le robot, leurs nombres nécessaire avant de finaliser la pince, que nous pouvions alors adapter à nos besoins.
 +
 +
<gallery style="margin: 0 auto;">
 +
Fichier:Engrenages_groupe3.jpg
 +
</gallery>
 +
 +
Les engrenages ainsi que les supports (haut et bas) ont été réalisés à la découpeuse laser du Fabricarium. Ces éléments ont dû être d'abord dessiné vectoriellement (format SVG). Le support du train d'engrenage, la pince, l'arbre, ainsi que les tiges ont été réalisées à l'imprimante 3D Witbox.
 +
 +
La prise en main de FreeCad fut plutôt difficile. Il n'était pas rare de recommencer une pièce entièrement à cause de répétitions de mauvaises manipulations du logiciel.
 +
De plus la faible disponibilité de l'imprimante 3D nous a contraint à fabriquer la pince sur toute la durée du projet. Heureusement, la conception de la pince était la première étape de ce projet.
 +
 +
= PCB =
 +
 +
Nous avons utilisé 2 PCB pour ce projet : un PCB placé au-dessus de la carte Arduino et un PCB de forme personnalisée placé à l'avant du robot. Le premier avait pour but de faciliter le câblage qui reliait les moteurs, le contrôleur de moteur et la carte. La carte sans-fil Xbee est, elle aussi branché sur ce PCB.
 +
 +
<gallery style="margin: 0 auto;">
 +
Fichier:PCB-mot-groupe3.png
 +
</gallery>
 +
 +
 +
 +
Le deuxième PCB nous a permis d'installer et de fixer facilement les 5 phototransistor à l'avant du robot. Sur ce dernier sont aussi reliés, les capteurs de lignes, le servomoteur et le capteur à ultrasons. Pour améliorer l'installation du PCB sur le robot, nous avons décidé de lui donner une forme qui épouse la forme de l'avant du robot. La plaque a été dessiné sous Inkscape.
 +
Ce PCB a pour défaut d'avoir la prise du capteur à ultrasons, inversé par rapport au sens vers lequel il devrait pointer.
 +
 +
 +
<gallery style="margin: 0 auto;">
 +
Fichier:circuits_capteurs_v%C3%A9rifi%C3%A9_circuit_imprim%C3%A9.jpg
 +
</gallery>
 +
 +
 +
Le premier PCB nous a causé quelques problèmes au niveau de la soudure des prises. Lors de sa conception sous Fritzing, les écarts entre les zones conductrices et les zones de masses était de moins d'un millimètre. Ce qui a rendu difficile la réalisation des soudures.
 +
 +
= Assemblage du robot et problème du PCB =
 +
 +
Nous avons commencés à assembler notre robot après l'obtention des PCB et après avoir soudé dessus tous les composants nécessaires.
 +
L'utilisation des PCB simplifiait les branchements sur le robot malgré que de nombreux fils étaient toujours nécessaires. Il fallait donc souvent se référer au schéma du PCB et être rigoureux.
 +
Après avoir assemblé tous les composants, fils et PCB sur le robot, nous avons constaté un cour-circuit dans le PCB où sont reliés les différents capteurs (capteur ultrason, capteur de ligne, phototransistor, servomoteur). Nous avons donc réinstallé un à un sur le PCB les différents capteurs pour déterminer l'origine du court-circuit. Le capteur ultrason était en effet mal installé : l'emplacement du capteur était inversé. Au lieu d'être orienté vers l'avant, l'emplacement sur le PCB est prévu pour un capteur à ultrasons orienté vers l'arrière du robot.
 +
<gallery style="margin: 0 auto;">
 +
Fichier:Capteur_ultrason_groupe3.jpeg
 +
</gallery>
 +
Bien que le PCB ne soit pas correct nous n'avons pas décidé d'en refaire un. Des fils ont donc été utilisés pour faire la connexion entre le capteur et le PCB.
 +
 +
= Programmation capteurs de ligne =
 +
 +
A l'aide des capteurs de ligne, notre robot peut suivre une ligne noire ou effectuer une rotation lorsqu'il capte une ligne et qu'il ne doit pas sortir du terrain.
 +
Afin de faciliter le suivit de ligne du robot ou d'éviter qu'il sorte du terrain, nous avons eu l'idée d'installer deux capteurs de lignes de chaque côté du robot, juste devant les roues.
 +
Le suivi de ligne avec un capteur de ligne aurait été possible si les lignes ne se croisaient pas. Le fait d'en avoir 2 permet au robot de repérer des intersections de lignes et ainsi suivre le chemin de manière fluide. Ces 2 capteurs, suffisamment espacé, permettent aussi au robot de repérer facilement une ligne quand il ne la suis pas.
 +
C'est pourquoi, lorsqu'on voulait qu'il ne sorte pas du terrain, l'utilisation de deux capteurs nous permettait de savoir de quel côté tourner pour ne pas sortir du terrain.
 +
<gallery style="margin: 0 auto;">
 +
Fichier:Capteur_ligne_groupe3.jpeg
 +
</gallery>
 +
Le problème rencontré fut que lorsque le robot allait trop vite, il passait trop rapidement au dessus des lignes, le robot n'avait pas le temps de réagir qu'il était soit déjà sorti du terrain, soit il ne suivait plus la ligne (lorsqu'il arrivait à un croisement).
 +
 +
= Programmation des phototransistor afin d'attraper la Balle =
 +
 +
Le premier problème rencontré fut de différencier les rayon infrarouges émis par l'environnement du robot de ceux émis par la balle. Comme la balle émet des rayons infrarouges qui varient avec le temps, nous avons réalisé un algorithme qui prend en compte les deux valeurs extrémales perçues par les phototransistors sur un intervalle de temps au moins égale à une période d'émission de la balle. On soustrait alors la valeur minimale à la valeur maximale et si le résultat est très faible c'est que la balle n'a pas été détectée. Sinon c'est que la balle se trouve en face d'un phototransistor.
 +
 +
Nous avons choisi d'utiliser 5 phototransistors placés à l'avant du robot afin de couvrir un angle important tout en permettant de définir avec précision la position de la balle par rapport au robot.
 +
En effet, si le robot ne perçoit pas le signal caractéristique de la balle, il effectue une rotation d'environ 40° jusqu’à percevoir la balle. Le phototransistor qui perçoit la balle est alors celui qui est en face de la balle. le robot n'a plus qu'à effectuer de faibles rotations jusqu’à ce que le phototransistor du milieu soit en face de la balle (c'est alors celui qui perçoit le signal le plus fort).
 +
Le robot doit alors avancer tout droit dans la direction de la balle.
 +
 +
Un autre problème fut de définir avec précision le distance séparant la balle du robot afin de définir quand fermer les pinces.
 +
 +
 +
Voici la disposition des phototransistor :
 +
<gallery style="margin:0 auto;">
 +
Fichier:PCB_2.jpg
 +
</gallery>
 +
 +
=Déroulement d'un match =
 +
Au départ le robot devait respecter cet algorithme :
 +
 +
 +
# le joueur sort de son garage
 +
# il cherche la balle
 +
# il prend la balle et demande l'activation de la balise du but
 +
# il tire dans le but adverse et demande la désactivation de la balise du but
 +
# il y a un but
 +
## le robot joueur retourne dans son garage, l'algorithme du robot retourne à l'état 1
 +
# il n'y a pas but
 +
## l'algorithme du robot retourne à l'état 2
 +
 +
Malheureusement les carte nécessaire à la communication sans-fil sont arrivées trop tard. Cet absence de carte Xbee nous a forcé à adapter l'algorithme du match, passant de 3 robot (2 joueurs et 1 arbitre), à 1 seul robot. De plus nous avons rencontré des problèmes avec le capteurs à ultrasons (prise inversé, puis problème de programmation). Il n'est donc pas non plus utilisé dans l'algorithme finale, bien que nous savons calculer une distance grâce à lui.
 +
 +
# le robot est posé sur le terrain et s'oriente en direction de la balle
 +
# une fois la balle repérée, le robot avance vers elle
 +
# dès que le phototransistor n°1 détecte la balle, on ferme la pince
 +
# le robot effectue une rotation sur lui-même, avec la balle dans sa pince
 +
# le robot avance jusqu'à détecter une ligne noire et tire la balle
 +
# le robot se met à suivre une ligne pour rentrer dans son garage.
 +
 +
== Conclusion ==
 +
Bien que notre robot ne respecte pas l'algorithme fixé en début de projet, il est pourtant capable de réaliser toute les opérations (excepté la partie communication) définie dans les objectifs. Il est capable de reconnaître et s'orienter dans la direction de la balle infrarouge. Il peut faire fonctionner une pince ainsi qu'expulser la balle. Il est aussi capable de suivre une ligne ou de rester dans le terrain lorsqu'il ne doit pas en sortir. De plus il est équipé d'une carte à communication sans-fil Xbee, utilisé pour qu'il puisse communiquer avec les buts et le robot ramasseur. Malheureusement le temps nous a rattrapé et n'avons pas pu gérer la partie programmation.
  
== Contrôler moteur arduino ==
+
Ce bureau d'étude nous a permis de réaliser un premier projet s'étendant sur un laps de temps aussi important, en équipe. Nous avons alors découvert les aléas du travail en équipe et nous avons pu avoir un aperçu de ce que pourrai être la spécialité IMA à Polytech Lille.
http://bildr.org/2012/04/tb6612fng-arduino/
 

Version actuelle datée du 20 mai 2016 à 11:09


Vidéo HD


Introduction

Dans le cadre de ce bureau d'étude, nous avons pour rôle la réalisation d'un robot capable de participer à un match de foot particulier. Le robot est censé prendre une balle infrarouge, avant un 2e robot joueurs, marquer un but. En plus de ça, il doit être capable de reconnaitre et suivre des lignes.

Ce wiki relatera les tâches accomplies à chaque séance dans le journal de bord, le raisonnement suivit pour la réalisation des différents éléments du robot ainsi que les difficultés que nous avons rencontrées.

Aptitudes du robot compétiteur

  • Le robot doit éviter des obstacles (autres robots,buts,...)
  • Le robot doit repérer les lignes du terrain (les suivre pour sortir/rentrer dans le garage, ne pas sortir du terrain)
  • Le robot doit reconnaître la balle
  • Le robot doit savoir récupérer la balle
  • Le robot doit savoir envoyer la balle
  • Le robot doit savoir communiquer avec le ramasseur, les buts et le robot adverse.

Journal de Bord

Séance 1

  • Présentation du projet
  • Choix des composantes du robot joueur: châssis deux roues pour faciliter les rotations
  • Début de l'assemblage du châssis.

Séance 2

  • Finalisation montage moteur + boite piles + roue libre sur le chassis
  • Découverte de la programmation arduino + fonctionnement moteur

Séance 3

  • Première mise en marche des moteurs : direction + vitesse de rotation

Séance 4

  • Imagination de la pince

Séance 5

  • Prise en main du logiciel Free Cads pour modéliser la pince

Séance 6

  • fin de la modélisation de la pince avec Free Cads

Séance 6

  • Première utilisation des phototransistors et détermination de la résistance nécessaire (3000 ohm)
  • Première utilisation du servo-moteur à l'aide d'Arduino
  • réflexion sur le train d'engrenages à utiliser pour faire fonctionner la pince

Séance 7

  • modélisation sur Free Cads du train d'engrenage
  • modélisation sur Free Cads des supports nécessaire au maintien de la pince

Séance 8

  • Début de la modélisation du PCB sur Fritzing
  • Pince robot imprimée
  • Création du programme de détection de la balle par les 5 capteurs infrarouges placés devant le robot.

Séance 9

  • Modélisation du PCB moteur qui sera placé au dessus de la carte Arduino.
  • Suite de la programmation du programme de détection de la balle

Séance 10

  • Retour sur décision. il faut placer 2 capteurs de lignes sur le PCB, il est beaucoup plus difficile de faire suivre une ligne au robot avec un unique capteur de ligne.
  • suite de la programmation du programme de détection de la balle

Séance 11

  • fin de la programmation du programme de détection de la balle

Séance 12

  • Fin de la modélisation du premier PCB, début de la modélisation du second PCB
  • Tests du programme de détection de la balle peu concluant : problèmes de court-circuits entre les LED et la carte Arduino. Il faudra refaire des tests lorsqu'on aura les deux PCB

Séance 13

  • Programme pour éviter les obstacles

Séance 14

  • amélioration du programme de détection de la balle

Séance 15

  • programmation du mouvement du servomoteur pour ouvrir, fermer et tirer avec la pince

Séance 16

  • obtention des roues dentées : trop de frictions entre les engrenages, ils ne tournent pas correctement ==> nouvelle impression du support des engrenages

Séance 17

  • Test du train d'engrenage : les roues dentée rengrènement correctement.
  • programmation du suivi d'une ligne par le robot à l'aide des deux capteurs de lignes.

Séance 18 : 18/04/2016

  • obtention du second PCB : soudure
  • programmation du suivi d'une ligne par le robot à l'aide des deux capteurs de couleur

Séance 19

  • obtention des supports de la pince

Séances du 02/05 au 04/05

  • fin de l'assemblage du robot avec les PCB fonctionnels et la pince fixé
  • rectification des programmes et tests sur le robot : capable de suivre la ligne, de ne pas sortir du terrain, de suivre la balle, de l'attraper et de tirer et d'éviter un obstacle

Séance supplémentaires

Durant ces dernières heures passé à travailler sur le BE, il a fallut peaufiner les différentes fonctions, essentiellement le suivi de ligne, la fonction de la pince et le repérage de balle. Il a fallut aussi assembler les différentes fonctions en 1 programme pour respecter le mieux possible l'algorithme de base.

Photos Chassis

Pince

Le système utilisé pour prendre et propulser la balle infrarouge est une pince qui éjecte la balle, lors de son ouverture.

La motorisation de cette pince est réalisé par un unique servomoteur. Un train d'engrenage sert à transmettre la rotation du servomoteur aux 2 parties de la pince.


Nous avons choisi un tel dispositif car cela ne nécessite qu'un seul servomoteur, ce qui nous permet d'économiser de l'espace à l'avant du robot, les servomoteurs étant plutôt volumineux. Non seulement le servomoteurs, mais aussi les phototransistors, les capteurs de couleurs ainsi que le capteur ultrason se trouvent à l'avant du robot.

Pour réaliser la pince, nous avons d'abord dû effectuer des recherches afin d'explorer les différents mécanismes réalisables. Ayant quelques connaissances sur le fonctionnement des engrenages, nous nous sommes dit qu'un tel système pourrait être réalisable


Pour réaliser la pince nous avons d'abord dû apprendre à utiliser le logiciel de modélisation 3D, FreeCad. C'est à ce moment que nous avons effectuer une première répartition des tâches au sein de notre groupe : l'un s'occupait des deux troncs principaux de la pince et des supports, l'autre des engrenages.

Le train d'engrenage

Nous avons choisis de n'utiliser qu'un seul servomoteurs par soucis de gain de place. Il a donc fallut créer un train d'engrenage. La création de ce train d'engrenage a débuté par le choix d'un module de roue dentées à appliquer à chaque roue. Toutes les roues ont un module m = 1.5mm. Il a fallut ensuite choisir un nombre de dents pour chaque roues qui nos permettrait à la fois d'avoir, un meilleur couple possible pour la pince, le moins de roues possibles et avoir des sens de rotations en sortie différents, mais de même vitesse. Nous avons donc choisis ces caractéristiques.


Nous avons souvent dû effectuer des transformations, notamment sur la taille des éléments de la pince afin que tout les éléments du robot puissent fonctionner ensemble. En effet, nous avons choisis de tester tout le matériel mis à notre disposition le plus tôt possible afin d'estimer quel serait leur meilleur placement sur le robot, leurs nombres nécessaire avant de finaliser la pince, que nous pouvions alors adapter à nos besoins.

Les engrenages ainsi que les supports (haut et bas) ont été réalisés à la découpeuse laser du Fabricarium. Ces éléments ont dû être d'abord dessiné vectoriellement (format SVG). Le support du train d'engrenage, la pince, l'arbre, ainsi que les tiges ont été réalisées à l'imprimante 3D Witbox.

La prise en main de FreeCad fut plutôt difficile. Il n'était pas rare de recommencer une pièce entièrement à cause de répétitions de mauvaises manipulations du logiciel. De plus la faible disponibilité de l'imprimante 3D nous a contraint à fabriquer la pince sur toute la durée du projet. Heureusement, la conception de la pince était la première étape de ce projet.

PCB

Nous avons utilisé 2 PCB pour ce projet : un PCB placé au-dessus de la carte Arduino et un PCB de forme personnalisée placé à l'avant du robot. Le premier avait pour but de faciliter le câblage qui reliait les moteurs, le contrôleur de moteur et la carte. La carte sans-fil Xbee est, elle aussi branché sur ce PCB.


Le deuxième PCB nous a permis d'installer et de fixer facilement les 5 phototransistor à l'avant du robot. Sur ce dernier sont aussi reliés, les capteurs de lignes, le servomoteur et le capteur à ultrasons. Pour améliorer l'installation du PCB sur le robot, nous avons décidé de lui donner une forme qui épouse la forme de l'avant du robot. La plaque a été dessiné sous Inkscape. Ce PCB a pour défaut d'avoir la prise du capteur à ultrasons, inversé par rapport au sens vers lequel il devrait pointer.



Le premier PCB nous a causé quelques problèmes au niveau de la soudure des prises. Lors de sa conception sous Fritzing, les écarts entre les zones conductrices et les zones de masses était de moins d'un millimètre. Ce qui a rendu difficile la réalisation des soudures.

Assemblage du robot et problème du PCB

Nous avons commencés à assembler notre robot après l'obtention des PCB et après avoir soudé dessus tous les composants nécessaires. L'utilisation des PCB simplifiait les branchements sur le robot malgré que de nombreux fils étaient toujours nécessaires. Il fallait donc souvent se référer au schéma du PCB et être rigoureux. Après avoir assemblé tous les composants, fils et PCB sur le robot, nous avons constaté un cour-circuit dans le PCB où sont reliés les différents capteurs (capteur ultrason, capteur de ligne, phototransistor, servomoteur). Nous avons donc réinstallé un à un sur le PCB les différents capteurs pour déterminer l'origine du court-circuit. Le capteur ultrason était en effet mal installé : l'emplacement du capteur était inversé. Au lieu d'être orienté vers l'avant, l'emplacement sur le PCB est prévu pour un capteur à ultrasons orienté vers l'arrière du robot.

Bien que le PCB ne soit pas correct nous n'avons pas décidé d'en refaire un. Des fils ont donc été utilisés pour faire la connexion entre le capteur et le PCB.

Programmation capteurs de ligne

A l'aide des capteurs de ligne, notre robot peut suivre une ligne noire ou effectuer une rotation lorsqu'il capte une ligne et qu'il ne doit pas sortir du terrain. Afin de faciliter le suivit de ligne du robot ou d'éviter qu'il sorte du terrain, nous avons eu l'idée d'installer deux capteurs de lignes de chaque côté du robot, juste devant les roues. Le suivi de ligne avec un capteur de ligne aurait été possible si les lignes ne se croisaient pas. Le fait d'en avoir 2 permet au robot de repérer des intersections de lignes et ainsi suivre le chemin de manière fluide. Ces 2 capteurs, suffisamment espacé, permettent aussi au robot de repérer facilement une ligne quand il ne la suis pas. C'est pourquoi, lorsqu'on voulait qu'il ne sorte pas du terrain, l'utilisation de deux capteurs nous permettait de savoir de quel côté tourner pour ne pas sortir du terrain.

Le problème rencontré fut que lorsque le robot allait trop vite, il passait trop rapidement au dessus des lignes, le robot n'avait pas le temps de réagir qu'il était soit déjà sorti du terrain, soit il ne suivait plus la ligne (lorsqu'il arrivait à un croisement).

Programmation des phototransistor afin d'attraper la Balle

Le premier problème rencontré fut de différencier les rayon infrarouges émis par l'environnement du robot de ceux émis par la balle. Comme la balle émet des rayons infrarouges qui varient avec le temps, nous avons réalisé un algorithme qui prend en compte les deux valeurs extrémales perçues par les phototransistors sur un intervalle de temps au moins égale à une période d'émission de la balle. On soustrait alors la valeur minimale à la valeur maximale et si le résultat est très faible c'est que la balle n'a pas été détectée. Sinon c'est que la balle se trouve en face d'un phototransistor.

Nous avons choisi d'utiliser 5 phototransistors placés à l'avant du robot afin de couvrir un angle important tout en permettant de définir avec précision la position de la balle par rapport au robot. En effet, si le robot ne perçoit pas le signal caractéristique de la balle, il effectue une rotation d'environ 40° jusqu’à percevoir la balle. Le phototransistor qui perçoit la balle est alors celui qui est en face de la balle. le robot n'a plus qu'à effectuer de faibles rotations jusqu’à ce que le phototransistor du milieu soit en face de la balle (c'est alors celui qui perçoit le signal le plus fort). Le robot doit alors avancer tout droit dans la direction de la balle.

Un autre problème fut de définir avec précision le distance séparant la balle du robot afin de définir quand fermer les pinces.


Voici la disposition des phototransistor :

Déroulement d'un match

Au départ le robot devait respecter cet algorithme :


  1. le joueur sort de son garage
  2. il cherche la balle
  3. il prend la balle et demande l'activation de la balise du but
  4. il tire dans le but adverse et demande la désactivation de la balise du but
  5. il y a un but
    1. le robot joueur retourne dans son garage, l'algorithme du robot retourne à l'état 1
  6. il n'y a pas but
    1. l'algorithme du robot retourne à l'état 2

Malheureusement les carte nécessaire à la communication sans-fil sont arrivées trop tard. Cet absence de carte Xbee nous a forcé à adapter l'algorithme du match, passant de 3 robot (2 joueurs et 1 arbitre), à 1 seul robot. De plus nous avons rencontré des problèmes avec le capteurs à ultrasons (prise inversé, puis problème de programmation). Il n'est donc pas non plus utilisé dans l'algorithme finale, bien que nous savons calculer une distance grâce à lui.

  1. le robot est posé sur le terrain et s'oriente en direction de la balle
  2. une fois la balle repérée, le robot avance vers elle
  3. dès que le phototransistor n°1 détecte la balle, on ferme la pince
  4. le robot effectue une rotation sur lui-même, avec la balle dans sa pince
  5. le robot avance jusqu'à détecter une ligne noire et tire la balle
  6. le robot se met à suivre une ligne pour rentrer dans son garage.

Conclusion

Bien que notre robot ne respecte pas l'algorithme fixé en début de projet, il est pourtant capable de réaliser toute les opérations (excepté la partie communication) définie dans les objectifs. Il est capable de reconnaître et s'orienter dans la direction de la balle infrarouge. Il peut faire fonctionner une pince ainsi qu'expulser la balle. Il est aussi capable de suivre une ligne ou de rester dans le terrain lorsqu'il ne doit pas en sortir. De plus il est équipé d'une carte à communication sans-fil Xbee, utilisé pour qu'il puisse communiquer avec les buts et le robot ramasseur. Malheureusement le temps nous a rattrapé et n'avons pas pu gérer la partie programmation.

Ce bureau d'étude nous a permis de réaliser un premier projet s'étendant sur un laps de temps aussi important, en équipe. Nous avons alors découvert les aléas du travail en équipe et nous avons pu avoir un aperçu de ce que pourrai être la spécialité IMA à Polytech Lille.