RobotDefense2013-2 : Différence entre versions

De Wiki de bureau d'études PeiP
(Programmation du robot :)
(Programmation du robot :)
Ligne 53 : Ligne 53 :
  
 
Pour le programme précédent, on supposait que le robot se trouvait dans une zone entre la cage et la balle, on sait maintenant que cette zone est matérialisée par une large bande de couleur verte située devant la cage. En se mettant dans la situation identique à celle décrite précédemment, le robot doit pouvoir se déplacer pour intercepter la balle mais en même temps il ne doit pas sortir de cette même zone. Ainsi, nous avons placer le programme précédent dans une boucle if (Commut.) qui teste la couleur sous le robot : si la couleur est verte le robot continue à se déplacer suivant la balle sinon cela veut dire qu'il est sorti de la zone et du terrain par la même occasion (le robot étant toujours parallèle à la zone) il recule de 2 rotations et capte la couleur : si elle est verte il continue à se déplacer en fonction de la position de la balle sinon il avance de 4 rotations et capte la couleur : la couleur ne peut être que verte, il continue à se déplacer en fonction de la balle sinon il recule de 2 rotations et recommence.
 
Pour le programme précédent, on supposait que le robot se trouvait dans une zone entre la cage et la balle, on sait maintenant que cette zone est matérialisée par une large bande de couleur verte située devant la cage. En se mettant dans la situation identique à celle décrite précédemment, le robot doit pouvoir se déplacer pour intercepter la balle mais en même temps il ne doit pas sortir de cette même zone. Ainsi, nous avons placer le programme précédent dans une boucle if (Commut.) qui teste la couleur sous le robot : si la couleur est verte le robot continue à se déplacer suivant la balle sinon cela veut dire qu'il est sorti de la zone et du terrain par la même occasion (le robot étant toujours parallèle à la zone) il recule de 2 rotations et capte la couleur : si elle est verte il continue à se déplacer en fonction de la position de la balle sinon il avance de 4 rotations et capte la couleur : la couleur ne peut être que verte, il continue à se déplacer en fonction de la balle sinon il recule de 2 rotations et recommence.
 +
 +
'''Position parallèle'''
 +
 +
Toujours avec la même démarche, en considérant tous les programmes précédents, on se met à présent dans la situation où le robot est arrivé a se placer sur la zone de défense mais pas forcément orienté parallèlement à la zone. Nous avons donc utilisé la boussole pour que le robot s'oriente correctement. Certaines mesures effectuées sur le terrain nous ont indiquées que le robot devait se placer à 200 degrés par rapport au Nord. Ainsi, nous l'avons programmé, grâce à une boucle if (Commut.) (voir image), pour qu'il tourne à faible vitesse tant que la boussole indique une position comprise entre 195° et 205° (la boussole n'étant pas très précises il nous a fallu quelques essais pour trouver cette intervalle).
 +
 +
("screenshot compass")

Version du 29 avril 2014 à 11:01

Introduction :

Ayant choisi de nous occuper de la partie défense, notre but sera donc de construire et de programmer un robot capable de se repérer dans le terrain afin de se placer sur la zone de défense de son camp et intercepter la balle pour éviter que les attaquants ne marquent. Le robot devra alors se repérer à l'aide de capteurs équipés. Nous aborderons donc d'une part la réalisation mécanique du robot et d'autre part l'aspect programmation du robot


Construction du robot

Nous avons commencé par construire la base du robot (le châssis) de manière à ce qu'elle puisse supporter le poids du NXT sans se déformer, que le boitier soit accessible (pour un changement de piles par exemples) et qu'on puisse y placer les différents capteurs.

Par ailleurs, nous nous sommes rendu compte que les roues en caoutchouc dérapaient au moment où le robot tournait , nous les avons donc remplacer par des chenilles, plus stables.

D'autre part, nous avons ajouté le troisième moteur à l'avant du robot représentant un système qui permettrait d'attraper ou de propulser la balle. Cependant, le poids de ce dernier faisait pencher le robot vers l'avant nous l'avons donc rattacher au boitier NXT pour surélever ce moteur ainsi que l'hypothétique bras qui y serait fixé

Ces quelques photos montrent l'évolution du robot pendant la réalisation :

L'emplacement de capteurs :

Zones localisées par le capteur infrarouge

- Le capteur Infrarouge :

Il permet au robot de savoir ou se trouve une source émettant un signal infrarouge (la balle ou la cage de but) par rapport à sa position. Ce capteur reçoit ainsi le signal dans différentes zones (9 zones) correspondant à des intervalles d'angles comme le montre l'image. Ainsi, en fonction de la zone localisée le robot fera le mouvement adéquat. Ce capteur doit donc être placé de façon à ce qu'aucuns éléments de sa structure interne ne le cache.

- Le capteur à ultrasons :

Ce capteur permet au robot d'éviter la collision avec un obstacle se trouvant devant lui, il a donc été placé à l'avant.

- Le capteur de couleurs :

En captant les différentes couleurs du sol sous le robot, ce capteur permet au robot de se placer dans sa zone de défense (large bande verte le sol étant noir) mais aussi d'éviter de sortir du terrain, les bordures étant en bleu. Nous l'avons donc placé de manière à ce qu'il soit très proche du sol (quelques millimètres).

- La boussole électronique :

Elle permet au robot de savoir si il se situe face à son but ou face au but adverse. Elle sera donc placer dans le même sens que le robot. Par ailleurs certaines interférences électromagnétiques peuvent influencer sur les résultats donnés par cette boussole, elle sera donc placé le plus haut possible.

Programmation du robot :

Se déplacer pour intercepter la balle

La première idée qui nous ait venu était d'écrire un programme permettant au robot de se positionner entre la balle et la cage de but de son camp afin d'empêcher l'attaquant de marquer. Pour cela, nous avons utilisé les différentes zones localisées par le capteur infrarouge. En se mettant d'abord dans la situation où le robot se serait déjà placer devant la cage et parallèlement à celle-ci : il ne lui reste plus qu'à se déplacer vers l'avant ou vers l’arrière pour intercepter la balle. Ainsi, si le signal est capté dans les zones 1, 0 et 9 le robot recule, pour les zones 2 et 8 il reste immobile et enfin pour le reste des zones il avance comme le montre la photo ci-contre.

("Screenshot avancer reculer")

Rester dans la zone de défense

Pour le programme précédent, on supposait que le robot se trouvait dans une zone entre la cage et la balle, on sait maintenant que cette zone est matérialisée par une large bande de couleur verte située devant la cage. En se mettant dans la situation identique à celle décrite précédemment, le robot doit pouvoir se déplacer pour intercepter la balle mais en même temps il ne doit pas sortir de cette même zone. Ainsi, nous avons placer le programme précédent dans une boucle if (Commut.) qui teste la couleur sous le robot : si la couleur est verte le robot continue à se déplacer suivant la balle sinon cela veut dire qu'il est sorti de la zone et du terrain par la même occasion (le robot étant toujours parallèle à la zone) il recule de 2 rotations et capte la couleur : si elle est verte il continue à se déplacer en fonction de la position de la balle sinon il avance de 4 rotations et capte la couleur : la couleur ne peut être que verte, il continue à se déplacer en fonction de la balle sinon il recule de 2 rotations et recommence.

Position parallèle

Toujours avec la même démarche, en considérant tous les programmes précédents, on se met à présent dans la situation où le robot est arrivé a se placer sur la zone de défense mais pas forcément orienté parallèlement à la zone. Nous avons donc utilisé la boussole pour que le robot s'oriente correctement. Certaines mesures effectuées sur le terrain nous ont indiquées que le robot devait se placer à 200 degrés par rapport au Nord. Ainsi, nous l'avons programmé, grâce à une boucle if (Commut.) (voir image), pour qu'il tourne à faible vitesse tant que la boussole indique une position comprise entre 195° et 205° (la boussole n'étant pas très précises il nous a fallu quelques essais pour trouver cette intervalle).

("screenshot compass")