RobotDefense2013-1 : Différence entre versions
(→Réalisation mécanique du Robot) |
(→Réalisation mécanique du Robot) |
||
Ligne 2 : | Ligne 2 : | ||
Nous avons commencé par construire le "châssis" du robot avec les roues, nous avons décidé d'utiliser des chenilles plutôt que des pneus (pour que le robot avant droit). | Nous avons commencé par construire le "châssis" du robot avec les roues, nous avons décidé d'utiliser des chenilles plutôt que des pneus (pour que le robot avant droit). | ||
− | [[Fichier: | + | [[Fichier:photo2.JPG|200px|thumb|right|chassis + NXT]] |
+ | Ensuite nous avons construit le support du nxt. Un support qui peut se rabattre vers l'avant. De plus, il est accessible car séparé du reste et à l'arrière. On peut ainsi le retirer relativement aisément. | ||
− | |||
− | |||
Ligne 14 : | Ligne 13 : | ||
Pour symboliser un moyen de taper la balle, nous avons ajouté le 3ème moteur avec une batte à l'avant droit du robot. | Pour symboliser un moyen de taper la balle, nous avons ajouté le 3ème moteur avec une batte à l'avant droit du robot. | ||
− | + | ||
Ligne 61 : | Ligne 60 : | ||
== Programmation du Robot== | == Programmation du Robot== | ||
+ | [[Fichier:prog_glob.png|400px|thumb|right|programme global suivre source IR, eviter les obstacles et s'arreter a 40cm de la source]] | ||
Pour programmer le robot, nous utilisons le logiciel Lego Mindstorm | Pour programmer le robot, nous utilisons le logiciel Lego Mindstorm | ||
Ligne 66 : | Ligne 66 : | ||
Nous avons commencé par faire repérer un émetteur IR (la balle ici, mais on pourra utiliser les buts plus tard) et faire avancer le robot vers l'émetteur. | Nous avons commencé par faire repérer un émetteur IR (la balle ici, mais on pourra utiliser les buts plus tard) et faire avancer le robot vers l'émetteur. | ||
Le robot commence par repérer l'émetteur, voir si il se trouve a sa gauche ou a sa droite (en utilisant la fonction DegDirection du capteur IR). Une fois l'émetteur repéré, le robot se tourne de manière à se mettre en face de l'émetteur. Ensuite il avance. Tout au long de son avancé vers l'émetteur, le robot continue de tester s'il se trouve toujours bien en face de l'émetteur. Si non, il corrige sa trajectoire avant de continuer à avancer. | Le robot commence par repérer l'émetteur, voir si il se trouve a sa gauche ou a sa droite (en utilisant la fonction DegDirection du capteur IR). Une fois l'émetteur repéré, le robot se tourne de manière à se mettre en face de l'émetteur. Ensuite il avance. Tout au long de son avancé vers l'émetteur, le robot continue de tester s'il se trouve toujours bien en face de l'émetteur. Si non, il corrige sa trajectoire avant de continuer à avancer. | ||
+ | [[Fichier:suivre_IR.png|400px|thumb|right|suivre la source IR]] | ||
Nous avons découvert une nouvelle façon de faire suivre la source infrarouge, en reliant la valeur de l'angle renvoyé par le capteur infrarouge a la direction en degré du mouvement. On obtient un suivi de la source plus fluide et efficace (ainsi qu'un programme plus léger). | Nous avons découvert une nouvelle façon de faire suivre la source infrarouge, en reliant la valeur de l'angle renvoyé par le capteur infrarouge a la direction en degré du mouvement. On obtient un suivi de la source plus fluide et efficace (ainsi qu'un programme plus léger). | ||
Ligne 75 : | Ligne 76 : | ||
'''Ajout d'une procédure pour éviter un obstacle.''' | '''Ajout d'une procédure pour éviter un obstacle.''' | ||
Ensuite, nous avons inclus dans ce programme la capacité d'éviter un obstacle sur sa trajectoire via le capteur ultrasons. De la même manière que le robot test sa distance avec l'émetteur IR, ici il test, au long de son avancée, s'il y a un obstacle à une distance symbolisée par une constante. Si le capteur trouve un obstacle a une distance inférieure à la constante, le robot s'arrête. | Ensuite, nous avons inclus dans ce programme la capacité d'éviter un obstacle sur sa trajectoire via le capteur ultrasons. De la même manière que le robot test sa distance avec l'émetteur IR, ici il test, au long de son avancée, s'il y a un obstacle à une distance symbolisée par une constante. Si le capteur trouve un obstacle a une distance inférieure à la constante, le robot s'arrête. | ||
+ | [[Fichier:evit_obj.png|400px|thumb|right|éviter un obstacle par le coté le plus aproprié]] | ||
le robot se tourne d'abord a gauche d'un angle de 30° mesure la distance de l'objet le plus proche, se tourne a droite de 60° mesure la distance de l'objet le plus proche, compare les deux valeurs et se tourne vers la direction ou l'objet est le moins proche. le robote avance ensuite sur 20cm puis le programme reprend (test d'obstacle, recherche de la source infrarouge etc...). | le robot se tourne d'abord a gauche d'un angle de 30° mesure la distance de l'objet le plus proche, se tourne a droite de 60° mesure la distance de l'objet le plus proche, compare les deux valeurs et se tourne vers la direction ou l'objet est le moins proche. le robote avance ensuite sur 20cm puis le programme reprend (test d'obstacle, recherche de la source infrarouge etc...). | ||
'''création de fonction.''' | '''création de fonction.''' | ||
Nous avons découvert la fonction création de bloc du logiciel lego mindstorm. Nous avons donc créé une fonction determinant et renvoyant la frequence de pulsation d'une source infrarouge (si la periode est inferieur a 1s). | Nous avons découvert la fonction création de bloc du logiciel lego mindstorm. Nous avons donc créé une fonction determinant et renvoyant la frequence de pulsation d'une source infrarouge (si la periode est inferieur a 1s). |
Version du 13 février 2014 à 16:22
Réalisation mécanique du Robot
Nous avons commencé par construire le "châssis" du robot avec les roues, nous avons décidé d'utiliser des chenilles plutôt que des pneus (pour que le robot avant droit).
Ensuite nous avons construit le support du nxt. Un support qui peut se rabattre vers l'avant. De plus, il est accessible car séparé du reste et à l'arrière. On peut ainsi le retirer relativement aisément.
Pour symboliser un moyen de taper la balle, nous avons ajouté le 3ème moteur avec une batte à l'avant droit du robot.
Enfin, nous avons ajouté le capteur infrarouge en hauteur, sur la partie gauche du robot.
Tests moteurs - Capteurs
Test avancer On a vérifié que le robot avançait en ligne droite, savait tourner et même faire un demi tour sur place. C'est lors de ces test que nous avons décidé d'utiliser des chenilles plutôt que des pneus.
Tests ultrasons
Nous avons surélevé le nxt par rapport au capteur ultrason, car lorsque celui est rabattu vers l'avant, il gênait le capteur. (photo à venir)
Ensuite, on a demander à visualiser la distance avec ce capteur. Nous avons remarqué que la distance maximum programmable est de 2,55m. De plus, l'affichage qui se fait centimètres, nous a révélé que sa précision était adéquate (au centimètre).
Test couleur
Nous avons du abaisser le capteur couleur(h=~2mm), car étant trop haut, il ne détectait pas les différentes couleurs. une fois abaissé, nous avons pu demander au robot différentes actions comme faire demi tour dans le cas d'une ligne de limite de terrain. Ainsi, le robot ne dépasse pas entièrement la ligne. (photo à venir)
Test infra rouge
On a d'abord du télécharger le module IRSeeker sur www.hitechnics.com pour l'intégrer au software lego mindstorm nxt.
Ce qui nous a permis de tester les différents paramètres de la détection infrarouge.
la force (Strength) qui indique si la balle est proche ou loin, sur un échelle allant de 340(la balle est collé au récepteur) à 10( à une distance supérieur à 5m) en analysant la force du signal.
Direction (IRDirection) qui indique où se trouve la balle sur une échelle de 0 à 9. Si la balle se trouve derrière on obtient 0. Si la balle se trouve à la perpendiculaire gauche du récepteur on obtient 1. Si la balle se trouve directement en face, on a 5. Enfin si la balle se trouve à la perpendiculaire droit on a 9. Si la balle se trouve entre ces directions, les valeurs varient. En résumé, [1,5] la balle est à gauche, [5,9] la balle est à droite.
Degrés (DegDirection) indique la même chose que la direction, mais en degrés. On obtient une échelle de degrés de 0 à -150, avec -120 a la perpendiculaire gauche et 120 à la perpendiculaire droite. En résumé, [0,120] la balle est devant à droite, [120,-150] la balle est derrière à droite, [-150,-120] la balle est derrière à gauche, et [-120,0] la balle est devant à gauche. On remarque la précision vers l'arrière laisse à désirer.
Le module permet aussi de choisir si l'on souhaite détecter une émission infrarouge continue (DC) ou alternative, avec une fréquence (AC).
à tester --> Utilisation de degrés ou de direction.
Test lecteur RFID
On a d'abord du télécharger le module RFID Read sur generationrobot.
Ensuite, comme pour le capteur couleur, nous avons du rapprocher le capteur du sol (h=~2mm), autrement, le robot ne détectais pas assez bien la carte RFID. (voir photo)
On a su faire repérer au robot la présence, ou non, d'une carte RFID sur son passage, et d'agir en conséquence (changer de direction, s'arrêter...)
à tester --> utilisation de plusieurs cartes pour assigner des ordres différents par cartes.
Programmation du Robot
Pour programmer le robot, nous utilisons le logiciel Lego Mindstorm
1er programme, repérer un émetteur InfraRouge, avancer vers celui-ci puis s'arrêter à une certaine distance de celui ci Nous avons commencé par faire repérer un émetteur IR (la balle ici, mais on pourra utiliser les buts plus tard) et faire avancer le robot vers l'émetteur. Le robot commence par repérer l'émetteur, voir si il se trouve a sa gauche ou a sa droite (en utilisant la fonction DegDirection du capteur IR). Une fois l'émetteur repéré, le robot se tourne de manière à se mettre en face de l'émetteur. Ensuite il avance. Tout au long de son avancé vers l'émetteur, le robot continue de tester s'il se trouve toujours bien en face de l'émetteur. Si non, il corrige sa trajectoire avant de continuer à avancer.
Nous avons découvert une nouvelle façon de faire suivre la source infrarouge, en reliant la valeur de l'angle renvoyé par le capteur infrarouge a la direction en degré du mouvement. On obtient un suivi de la source plus fluide et efficace (ainsi qu'un programme plus léger).
Pour l'arrêt, on utilise la fonction Strength du capteur IR. On compare, tout au long de l'avancée du robot vers l'émetteur, la force du signal à une constante. Par exemple, 90. Lorsque le capteur trouve un signal supérieur à 90, le robot s'arrête. Ceci permet de définir une certaine distance entre le robot et l'émetteur, de manière a ce que lors d'un match, le robot se position à une certaine distance de son but. Ainsi il ne masque pas le but, mais se trouve dans une "zone de défense".
Ajout d'une procédure pour éviter un obstacle.
Ensuite, nous avons inclus dans ce programme la capacité d'éviter un obstacle sur sa trajectoire via le capteur ultrasons. De la même manière que le robot test sa distance avec l'émetteur IR, ici il test, au long de son avancée, s'il y a un obstacle à une distance symbolisée par une constante. Si le capteur trouve un obstacle a une distance inférieure à la constante, le robot s'arrête.
le robot se tourne d'abord a gauche d'un angle de 30° mesure la distance de l'objet le plus proche, se tourne a droite de 60° mesure la distance de l'objet le plus proche, compare les deux valeurs et se tourne vers la direction ou l'objet est le moins proche. le robote avance ensuite sur 20cm puis le programme reprend (test d'obstacle, recherche de la source infrarouge etc...).
création de fonction. Nous avons découvert la fonction création de bloc du logiciel lego mindstorm. Nous avons donc créé une fonction determinant et renvoyant la frequence de pulsation d'une source infrarouge (si la periode est inferieur a 1s).