RobotCompetition2014-3

De Wiki de bureau d'études PeiP
Révision datée du 29 mars 2015 à 13:46 par Amariett (discussion | contributions) (Première étape : La construction :)

Introduction :

Le but de ce bureau d'étude est, pour notre groupe, de concevoir un robot joueur en LEGO Mindstorm. Pour cela notre robot doit être capable de repérer la balle et ensuite avancer vers elle. Il doit aussi pouvoir la prendre, faire une rotation en direction du but adverse et tirer. Nous voulons avant tout, construire notre robot selon nos exigences, ensuite le programmer en fonction de la balle, et pour finir le programmer en fonction des buts et de l'arbitre, tout cela en NXC (Not Exactly C).

Première étape : La construction :

Avant de commencer cette étape nous avons effectuer plusieures recherches internet pour nous donner une idée de la forme que pouvait avoir notre robot. Nous n'avons rien trouvé de conforme à nos exigences et nous avons donc décidé de l'assembler selon notre instinct.


Nous voulions dans un premier temps avoir un robot avec trois roues : Deux devants et une à l'arrière, pour faciliter les rotations. les deux devants sont reliées à des moteurs alors que celle à l'arrière est libre, elle sert à stabiliser le robot.

Vue de dessous.jpg

Notre second critère était que le robot soit léger pour faciliter ses déplacements. On s'est vite rendu compte que cela n'était pas possible car pas assez stables. A cause d'un problème de couple au niveau des deux roues avants, nous avons dû ajouter des fixations et donc augmenter le poids du robot. Cette idée fut donc vite abandonnée.

Premier Robot 1.png Pinces.jpg

Ensuite, nous avons rajouté des "pinces" à l'avant car l'idée de base était que le robot n'ait qu'à effectuer une rotation rapide en direction du but une fois que la balle se trouvait dans ces "pinces" pour tirer, mais cela était inefficace. Nous nous sommes donc penchés sur un système avec un moteur et un balancier pour tirer.


Les différents capteurs.jpg


Au cours de tests, un problème nous est apparu avec le robot ci-dessus : nous pouvions capturer la balle mais lorsque nous tournions celle-ci s'échappait des pinces du robot. Nous avons apporté les modifications nécessaire à la résolution de ce problème. Nous avons donc changé notre balancier : il ressemble maintenant un simple angle droit qui capture la balle lorsque celle-ci passe entre les "pinces". Le robot garde alors la balle contre lui, le temps de trouver le but, puis le balancier se déploie pour tirer la balle.


Robot joueur final.jpg


Pour les capteurs, nous avons positionné le capteur à ultrasons en hauteur avec une vue plongeante pour qu'il puisse repérer la balle quand elle est au niveau des pinces. Ensuite le capteur infrarouge se situe en dessous du capteur à ultrasons, pour avoir une vue panoramique et pouvoir détecter la balle à bonne distance de notre robot. Le capteur de couleurs se trouve en dessous du robot, au niveau du sol, car il ne peut pas détecter les couleurs avec une distance supérieure à 2cm (On peut le voir sur la première photo). Pour détecter les autres robots nous avons rajouté un autre capteur à ultrasons sur une des pinces. Nous avons d'abord pensé que la position de ce capteur allait gêner la capture de la balle. Après quelques tests il s'est avéré que non.

Capteurs 2.jpg

Le robot fût amélioré à mesure que le programme avançait. La construction et la programmation se sont faîtes de manière simultanée.

Deuxième étape : Le programme :

En premier lieu nous avons cherché à comprendre comment fonctionnait le langage nxc. Pour cela nous nous sommes aidés d'un site regroupant les principales formules de ce langage ([1]). Grâce à cela nous avons fait en sorte que le robot avance tout droit, tourne, recule... C'est à la suite de ces quelques lignes de code que le problème de couple au niveau des roues nous est apparu.


La seconde étape fût d'apprendre à se servir des différents capteurs. Pour commencer, nous nous sommes intéressés au capteur le plus important, le capteur infrarouge. Ce capteur était notre priorité car il permet de repérer tous les éléments du terrain: la balle et les buts. Ce capteur fonctionne grâce à cinq senseurs chacun orienté dans une direction différente, sur 180°. A chacun de ses senseurs correspond une valeur variant de 0 à 255. On a donc écrit un programme permettant d'afficher les valeurs de chaque senseur. Grâce à ces valeurs nous avons pu écrire un programme qui permettait au robot de repérer la balle et de se diriger vers elle. Ce programme utilisait des valeurs précises, on a vite vu les limites du capteur infrarouge: il manque de précision lorsque la balle est proche ou derrière lui. On a donc décidé de ne plus utiliser de valeurs précises, mais uniquement des 0. Après le capteur infrarouge, nous nous sommes attaqués au capteur ultrason, qui nous servait à détecter la balle, et à déclencher le balancier. Ce capteur est assez précis et facile à utiliser. Le seul bémol est que pour les valeurs inférieures à 7cm, il ne détecte pas toujours correctement. Le dernier capteur que nous avons utilisé est le capteur de couleur. Il nous sert à repérer les lignes rouges délimitant les bords du terrain. Ce capteur fonctionne bien, mais doit être presque collé à la ligne pour la repérer. Nous n'avons pas eu de problème avec ce capteur, car nous l'avions déjà placé au niveau du sol.

Troisième étape : Les Tests :

Ce projet étant nouveau pour nous, notre projet eut plusieurs problèmes tout au long de sa mise en marche. Tous ces problèmes sont apparus lors des différents tests. Mais ces tests nous ont aussi permis d'en régler la majorité. Dans cette partie nous allons vous décrire l'ensemble des tests réalisés au cours de ce bureau d'étude.


Un des plus gros problème qui nous a été confronté était de différencier les deux buts et la balle. Nous avons eu l'idée de différencier leurs fréquences et faire aussi varier la fréquence de réception du capteur(600Hz et 1200Hz). Pour ces test, nous avons eu besoin de deux programmes, des variantes d'un programme précédent. Un qui permettait d'afficher les valeurs des différents senseurs lorsqu'ils étaient réglés sur 600Hz et sur 1200Hz. Nous avons aussi eu besoin d'un mètre et de plusieurs balles. Nous avons ensuite utilisé la valeurs du senseur du milieu (le numéro 3), pour des distances variant entre 30cm et 3m.

Test Infrarouge.jpg

Nous avons pu en conclure que le capteur ne voyait que la valeur de 600Hz ou presque, lorsqu'il était réglé sur 600Hz. Suite à cela il nous a semblé logique de définir la balle à 600Hz. Une fois la balle dans les pieds et le capteur réglé sur 1200Hz il ne voyait presque plus la balle mais bien l'autre signal de 1200Hz qui représentait le but.

Suite à ce choix le problème est que si notre joueur se trouve face à son propre but il va tirer dans cette direction.