RobotDefense2013-2 : Différence entre versions

De Wiki de bureau d'études PeiP
m (Programmation du robot :)
(Introduction :)
 
(21 révisions intermédiaires par un autre utilisateur non affichées)
Ligne 1 : Ligne 1 :
 +
<include nopre noesc src="/home/pedago/ppeip/include/video-RobotDéfense2-2013-iframe.html" />
 +
__TOC__
 +
<br style="clear: both;">
 
== Introduction : ==
 
== Introduction : ==
  
Ligne 4 : Ligne 7 :
 
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
 
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 =
== '''Construction du robot''' ==
 
  
  
Ligne 40 : Ligne 42 :
 
''- La boussole électronique :''
 
''- 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.
+
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ée le plus haut possible.
 +
 
 +
''- Le terrain :''
 +
 
 +
[[Fichier:photo.JPG|500px|thumb|left|Le Terrain ]] [[Fichier:Real_terrain.png|225px|right|thumb|Schéma du terrain]]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
  
=='''Programmation du robot :''' ==
+
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
=Programmation du robot : =
  
 
[[Fichier:Avancer_Reculer.JPG|200px|thumb|right|Se déplacer suivant la position de la balle]]
 
[[Fichier:Avancer_Reculer.JPG|200px|thumb|right|Se déplacer suivant la position de la balle]]
Ligne 56 : Ligne 99 :
 
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.
  
 +
[[Fichier:Ou_est_le_nord.JPG|200px|thumb|right|Se placer parallèlement à la zone de défense]]
 +
 +
'''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é à 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, si le robot n'est pas dans la bonne position 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 quelques essais était nécessaires pour trouver cette intervalle).
 +
 +
[[Fichier:Aller_dans_la_zone_verte.JPG|200px|thumb|left|Se placer sur la zone verte]]
 +
 +
'''Aller dans la zone verte'''
 +
 +
Au cours des derniers programmes nous avons considéré le robot comme étant déjà dans la zone de défense; intéressons nous maintenant à son chemin depuis un endroit quelconque vers la zone verte. Ainsi, le robot positionné dans le terrain de manière aléatoire, nous avons utiliser la boussole pour qu'il puisse se positionner face à la zone de défense et ensuite se diriger vers celle-ci; le robot ne s’arrêtera donc pas tant que la couleur situé en dessous de lui ne sera pas de couleur verte.
 +
Nous savons que les cage si situe à, à peu prés 115° par rapport au Nord : le robot va donc tourner "sur lui-même" jusqu'à ce que la boussole indique une position entre 100° et 130°. Ensuite, le robot avance tant que le capteur n'indique pas de vert et enfin, une fois qu'il indique, le robot avance de 2,5 rotations de façon à être bien au milieu de la zone.
 +
 +
[[Fichier:Eviter_robot.JPG|200px|thumb|right|Eviter un robot]]
 +
 +
'''Eviter les autres robots'''
  
 +
La dernière facette de ce robot qu'il nous reste à exploiter est celle du capteur à ultra-sons. En effet, lors de son chemin du terrain vers sa zone de défense, le robot peut rencontrer d'autres robots. Ainsi, ce capteur lui permettra d'éviter tous chocs. Dans ce programme, au moment où le robot avance vers la zone verte lorsque le capteur à ultra-sons détecte un objet à moins de 25 cm, le robot se tourne de 0,75 rotation vers la gauche et capte la distance que l'on enregistre dans une variable numérique appelée "Distance gauche" si cette distance est supérieure à 25 cm (une constante) le robot avance de 1,5 rotations dans cette direction et le robot se remet face à la zone pour s'y diriger, si la distance mesurée est inférieure alors le robot se tourne vers la droite de 1,5 rotations et avance de 1,5 rotations et de même le robot continue son chemin, le robot ennemi ne pouvant pas être à gauche et à droite.
  
'''Position parallèle'''
+
= Problèmes rencontrés / Conclusion =
 +
 
 +
Pour finir, lors de ce Bureau d'étude, nous avons rencontrés quelques problèmes à différentes étapes de notre projet auxquels nous avons essayé d'apporter des solutions. En effet, tout d'abord notre robot présentait un problème de stabilité évident une fois construit car il était bien trop large, nous avons du reprendre sa construction depuis le début ce qui nous a pris un temps précieux. Ensuite, le projet a connu une phase où nous ne pouvions pas vraiment avancer car le terrain n'était pas encore matérialiser. Ainsi, après concertation avec l'autre groupe chargé aussi du robot de défense nous avons pu être fixé et pouvoir avancer. De plus, le non fonctionnement des LED infrarouge que devait porté les cages de but pour être repéré par les robots nous as amené à utiliser une boussole pour ceci. Enfin le dernier problème majeur rencontré était celui du capteur de couleur : après de nombreux test nous avions compris que ce capteur était trop influencé par la lumière extérieur, nous lui avons donc rajouté un "cache" élaboré à l'aide d'un tube en carton et de scotch noir ce qui nous a fortement aidé.
  
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é à 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).
+
Parallèlement à ces problèmes, de nombreuses idées n'ont pas pu être mise en place comme celle du capteur à cartes RFID qui n'a pas été utilisé car au final il n'y avait pas sa place.
  
("Screenshot ou est le nord")
+
Pour conclure, ce bureau d'étude nous a beaucoup apporté. En effet, hormis la découverte pratique de la spécialité IMA, nous avons pu apprendre à travailler en projet, c'est à dire travailler en autonomie en binôme avec des contraintes et des objectifs à atteindre établis dans un cahier des charges ce qui créait en nous une démarche de mise en oeuvre pour avancer. Ce fut donc une période très enrichissante et instructive.

Version actuelle datée du 21 mai 2014 à 12:32


Vidéo HD


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ée le plus haut possible.

- Le terrain :

Le Terrain
Schéma du terrain




















Programmation du robot :

Se déplacer suivant la position de la balle

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.

Se déplacer sans sortir de la zone verte

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.

Se placer parallèlement à la zone de défense

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é à 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, si le robot n'est pas dans la bonne position 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 quelques essais était nécessaires pour trouver cette intervalle).

Se placer sur la zone verte

Aller dans la zone verte

Au cours des derniers programmes nous avons considéré le robot comme étant déjà dans la zone de défense; intéressons nous maintenant à son chemin depuis un endroit quelconque vers la zone verte. Ainsi, le robot positionné dans le terrain de manière aléatoire, nous avons utiliser la boussole pour qu'il puisse se positionner face à la zone de défense et ensuite se diriger vers celle-ci; le robot ne s’arrêtera donc pas tant que la couleur situé en dessous de lui ne sera pas de couleur verte. Nous savons que les cage si situe à, à peu prés 115° par rapport au Nord : le robot va donc tourner "sur lui-même" jusqu'à ce que la boussole indique une position entre 100° et 130°. Ensuite, le robot avance tant que le capteur n'indique pas de vert et enfin, une fois qu'il indique, le robot avance de 2,5 rotations de façon à être bien au milieu de la zone.

Eviter un robot

Eviter les autres robots

La dernière facette de ce robot qu'il nous reste à exploiter est celle du capteur à ultra-sons. En effet, lors de son chemin du terrain vers sa zone de défense, le robot peut rencontrer d'autres robots. Ainsi, ce capteur lui permettra d'éviter tous chocs. Dans ce programme, au moment où le robot avance vers la zone verte lorsque le capteur à ultra-sons détecte un objet à moins de 25 cm, le robot se tourne de 0,75 rotation vers la gauche et capte la distance que l'on enregistre dans une variable numérique appelée "Distance gauche" si cette distance est supérieure à 25 cm (une constante) le robot avance de 1,5 rotations dans cette direction et le robot se remet face à la zone pour s'y diriger, si la distance mesurée est inférieure alors le robot se tourne vers la droite de 1,5 rotations et avance de 1,5 rotations et de même le robot continue son chemin, le robot ennemi ne pouvant pas être à gauche et à droite.

Problèmes rencontrés / Conclusion

Pour finir, lors de ce Bureau d'étude, nous avons rencontrés quelques problèmes à différentes étapes de notre projet auxquels nous avons essayé d'apporter des solutions. En effet, tout d'abord notre robot présentait un problème de stabilité évident une fois construit car il était bien trop large, nous avons du reprendre sa construction depuis le début ce qui nous a pris un temps précieux. Ensuite, le projet a connu une phase où nous ne pouvions pas vraiment avancer car le terrain n'était pas encore matérialiser. Ainsi, après concertation avec l'autre groupe chargé aussi du robot de défense nous avons pu être fixé et pouvoir avancer. De plus, le non fonctionnement des LED infrarouge que devait porté les cages de but pour être repéré par les robots nous as amené à utiliser une boussole pour ceci. Enfin le dernier problème majeur rencontré était celui du capteur de couleur : après de nombreux test nous avions compris que ce capteur était trop influencé par la lumière extérieur, nous lui avons donc rajouté un "cache" élaboré à l'aide d'un tube en carton et de scotch noir ce qui nous a fortement aidé.

Parallèlement à ces problèmes, de nombreuses idées n'ont pas pu être mise en place comme celle du capteur à cartes RFID qui n'a pas été utilisé car au final il n'y avait pas sa place.

Pour conclure, ce bureau d'étude nous a beaucoup apporté. En effet, hormis la découverte pratique de la spécialité IMA, nous avons pu apprendre à travailler en projet, c'est à dire travailler en autonomie en binôme avec des contraintes et des objectifs à atteindre établis dans un cahier des charges ce qui créait en nous une démarche de mise en oeuvre pour avancer. Ce fut donc une période très enrichissante et instructive.