Voir comment détecter un obstacle :
Maintenant tu peux venir modifier ton programme qui utilise la radio pour piloter ton robot :
Voir comment détecter un obstacle :
Maintenant tu peux venir modifier ton programme qui utilise la radio pour piloter ton robot :
Apprendre à utiliser :
Apprendre à construire un robot qui obéit au doigt.
Carte ARDUINO | 1 | |
Batterie | 1 | |
Cable USB | 1 | |
Moteur CC plus les deux moyeux | 2 | |
Capteur de lumière | 1 | |
Bloc blanc ou de différentes couleurs | 6 | |
Demi-cube | 2 |
Demi-cube | 4 | |
Disque | 1 | |
LED rouge | 1 | |
Buzzer | 1 | |
Roue | 2 | |
barre | 2 |
Clique sur le menu Edition en haut de l’écran et choisis Paramètres des ports
Clique ensuite sur le bouton Tout décocher .
Puis indique tous les éléments que tu as rajoutés sur ton robot.
A la mise sous tension de ton robot, celui-ci est dans un état « endormi ». En mettant le doigt sur le capteur de lumière, le robot se réveille et allume une LED.
Ta mission
Ton robot se réveille dès qu’il détecte la présence de ton doigt sur le capteur de lumière puis allume une LED.
Tu dois réaliser le programme suivant après « Démarrer le programme » :
Dès que tu as écrit ton programme, clique sur le menu Exécuter en haut de l’écran et choisis Transférer.
Une solution
Teste ton code en activant le mode test :
Visualise que ton capteur de lumière fonctionne correctement en posant ton doigt sur le capteur de lumière et vérifie la valeur sur le tableau des capteurs.
Vérifie la valeur du capteur de lumière sans ton doigt sur ce dernier :
Puis vérifie la valeur du capteur de lumière avec ton doigt sur ce dernier :
Exécute ce programme par un clic sur Démarrer le programme :
Pose ton doigt sur le capteur de lumière, la LED doit s’allumer :
Pour que ton programme fonctionne dans toutes les situations de lumière ambiante, tu vas créer une variable pour mémoriser la valeur de la lumière ambiante :
Mémorise ainsi la valeur de la lumière ambiante dans cette variable :
Ainsi tu peux détecter la présence du doigt sur le capteur avec une tolérance de variance de la lumière de 20 :
Puis attendre que le doigt ne soit plus présent :
Dès que tu as écrit ton programme, clique sur le menu Exécuter en haut de l’écran et choisis Transférer.
La LED 0 s’allume dès que tu mets ton doigt sur le capteur puis elle s’éteint dès que tu enlèves ton doigt.
Ta mission
Tu vas utiliser cet alghorithme comme fonction pour le réveil de ton robot.
L’idée principale est d’attendre que l’utilisateur pose son doigt sur le capteur de lumière, puis d’allumer la LED 0 pour indiquer que le robot est prêt à être utilisé.
Une solution
Dès que tu as écrit ton programme, clique sur le menu Exécuter en haut de l’écran et choisis Transférer.
Ta mission
Maintenant que tu as la possibilité de réveiller ton robot, tu vas lui donner des ordres par l’appui sur le capteur de lumière. Deux appuis et ton robot se rendort.
Une solution
Tu dois créer une variable pour mémoriser l’ordre donné par l’utilisateur de ton robot :
Comme tu l’as expérimenté précédemment, détecte l’appui sur le capteur de lumiére puis son relachement afin de mémoriser l’ordre.
Active le mode test pour tester ton programme :
Vérifie que la variable « ordre » est bien cochée pour qu’elle soit visible :
Dans la partie droite en haut de l’écran, visualise les valeurs de « ordre » en fonction de la progression de ton programme.
Au lancement de ton programme « ordre » est égal à la valeur zéro.
Réveille ton robot en posant ton doigt sur le capteur de lumière.
Puis pose à nouveau ton doigt sur le capteur, tant que ton doigt est sur le capteur tu entends le buzzer, dès que tu relaches ton doigt du capteur, la variable « ordre » s’incémente de la valeur 1.
Si tu appuies de nouveau ordre s’incrémente à 2 et le robot s’éteint :
Ton robot doit s’endormir si tu ne passes plus d’ordre au bout d’un certain temps. Pour cela tu utilises le chronomètre pour mesurer le temps pendant lequel aucun ordre n’est donné :
Dès que tu as écrit ton programme, clique sur le menu Exécuter en haut de l’écran et choisis Transférer.
Ta mission
Pour valider l’ordre donné, tu utilises un appui plus long, par exemple plus d’une seconde :
Dès que tu as écrit ton programme, clique sur le menu Exécuter en haut de l’écran et choisis Transférer.
Ta mission
Maintenant, tu peux faire bouger ton robot en lui donnant des ordres par des appuis successifs sur le capteur de lumière.
En appuyant plusieurs fois, tu peux donner des ordres à ton robot pour qu’il se déplace :
Une solution
Crée une fonction « execution » pour déclencher les mouvements du robot en fonction de la valeur dans ordre :
A toi d’écrire les fonctions avancer, reculer, droite, gauche.
Dès que tu as écrit ton programme, clique sur le menu Exécuter en haut de l’écran et choisis Transférer.
Ton maqueen doit disposer de ce dispositif, deux gros yeux :
Programme pour visualiser dans la console les valeurs retournées par le dispositif de sonar pour détecter les obstacles :
Tu peux visualiser soit les valeurs avec la console ou sous forme graphique :
Arrondie la valeur de la distance pour obtenir une valeur entière :
Optimise pour détecter seulement un obstacle entre > à 0 et < 20 centimètres :
Supprime tous les retours ayant une valeur inférieure à 0 pour conserver la valeur précédente. Il est possible que des valeurs de retour soient égales à -1 dans une série de valeurs indiquant la distance à un obstacle.
N’oublie pas de déclarer la variable obstacle
comme une variable globale afin qu’elle soit accessible dans tout le programme.
Nous utilisons l’affichage du robot pour obtenir des informations primordiales afin d’optimiser son utilisation lors de la compétition. Ces informations comprennent :
À chaque interaction avec les boutons A ou B, nous vérifierons que l’utilisateur a bien relâché le bouton avant de commencer une nouvelle action.
En appuyant sur le bouton B, le suivi de ligne noire du robot est lancé. Un nouvel appui sur ce même bouton B arrêtera le robot.
►Vérifie que lorsque tu appuies sur le bouton B, les LED s’affichent en vert, puis en rouge lors d’un nouvel appui.
Nous avons constaté que le calibrage du capteur RGB et de la balance des blancs doit être effectué en fonction des particularités du tapis ou de la lumière ambiante. Pour ce faire, le bouton A permet de lancer la demande de calibrage. L’appui sur le bouton A affiche un message pour confirmer l’opération. Ensuite, l’utilisateur doit effectuer un appui long sur le bouton B pour lancer l’opération de calibrage
► Opération en deux phases suite à l’appui sur le bouton A :
Suite à nos différents tests, nous nous apercevons que le calibrage est primordial pour le bon fonctionnement du robot. D’ailleurs cette opération est bien prise en compte dans le règlement.
Place le dispositif RGB du robot sur une feuille blanche, puis utilise le bouton A pour calibrer le robot.
Grâce à l’utilisation du joystick, l’utilisateur peut modifier le sens du suivi de la ligne, soit à droite, soit à gauche. Un affichage confirme son choix.
►Par le joystick nous changeons l’affichage du suivi de ligne vers la droite ou vers la gauche.
Pour le suivi de la ligne noire, les moteurs EM1 et EM2 sont utilisés. Deux variables, puissance_droite et puissance_gauche, permettent le paramétrage des deux moteurs. Le moteur droit EM2 est monté à l’envers sur le robot. Pour compenser cela, le paramétrage du moteur droit est multiplié par -1.
►Avec cette programmation, le robot doit avancer tout droit à la vitesse minimale mais il ne prend pas en compte la ligne noire. Nous devons utiliser les capteurs RGB pour que notre robot suive la ligne noire soit par la droite soit par la gauche.
L’unité pour faire tourner les moteurs du MBOT V2 est le tour par minute (RPM). La bibliothèque mblock utilise des valeurs comprises entre -100 et 100 pour contrôler la vitesse des moteurs, où -100 correspond à la vitesse maximale dans le sens inverse des aiguilles d’une montre, 0 correspond à l’arrêt et 100 correspond à la vitesse maximale dans le sens des aiguilles d’une montre.
Les LED s’affichent en fonction de la détection de la ligne noire. Cette fonction affiche les LEDs sur des cas non traités par notre programme
La variable sens_ligne_noire détermine le sens du suivi de la ligne noire, soit par la droite (« D »), soit par la gauche (« G »).
En fonction de sens_ligne_noire, le robot suit la ligne noire en privilégiant les possibilités par la droite, soit les possibilités par la gauche. En fonction du sens de suivi de la ligne, le programme donne plus d’importance aux détecteurs RGB les plus extrêmes R2 ou L2.
Si le suivi de la ligne noire se fait par la droite, le programme donne plus d’importance au détecteur RGB R2 pour tourner à droite.
Si le suivi de la ligne noire se fait par la gauche, le programme donne plus d’importance au détecteur RGB L2 pour tourner à gauche.
Si les détecteurs R2 ou L2 ne détectent pas la ligne noire alors le robot doit suivre la ligne noire en avançant tout droit.
Pour tourner fortement à droite, le moteur droit tourne dans le sens contraire des aiguilles d’une montre et le moteur gauche tourne dans le sens des aiguilles d’une montre. Ainsi, le robot tourne sur place vers la droite.
Pour tourner fortement à gauche, le moteur gauche tourne dans le sens contraire des aiguilles d’une montre et le moteur droit tourne dans le sens des aiguilles d’une montre. Ainsi, le robot tourne sur place vers la gauche.
Le robot roule tout droit quand les détecteurs RGB R2 et L2 ne sont pas sollicités
►Le robot suit la ligne noire, soit par la droite, soit par la gauche. Cependant, le robot manque de précision sur des parcours d’une ligne noire avec des courbes ou des angles droits. Nous devons l’améliorer en prendre en compte les capteurs RGB R1 et L1.
En analysant plus finement les capteurs RGB R1 et L1, le suivi de la ligne noire est possible en maintenant le robot au centre de la ligne noire.
► Le robot suit la ligne noire, mais rencontre parfois des difficultés sur les angles droits. Nous avons effectué des tests avec différentes vitesses, mais la vitesse minimale de 30RPM semble être la plus sûre, tandis que la vitesse maximale de 40RPM permet une petite accélération en ligne droite.
Cependant, en fonction du poids du robot, de l’installation de la pince et de l’équilibrage du robot avec un poids à l’arrière, la vitesse minimale peut être amenée à changer. Nous devons donc être vigilants et ajuster la vitesse en fonction des modifications apportées au robot.
En utilisant l’accéléromètre du mBot, on peut détecter l’inclinaison du robot et ainsi ajuster la puissance en fonction de la pente : accélérer dans une montée et ralentir dans une descente.
► La plus grande difficulté rencontrée est l’équilibrage du robot. En effet, lorsque le robot monte une pente, les moteurs ont tendance à le déséquilibrer vers l’arrière. De plus, avec l’installation de la pince, le robot est déséquilibré vers l’avant. Pour pallier ce problème, nous avons mis en place un dispositif pour équilibrer le robot équipé de la pince en ajoutant un poids sur l’arrière du robot. Cela permet de stabiliser le robot et d’améliorer la performance du capteur RGB pour suivre la ligne noire dans les franchissements et les passages de pentes. Nous avons effectué plusieurs tests pour ajuster le poids et trouver le bon équilibre en fonction des différentes configurations rencontrées.
Le robot détecte et évite les obstacles sur la ligne noire. Pour cela, le capteur sonore du mBot v2 est utilisé pour la détection de l’obstacle. Lorsqu’un obstacle est détecté, le robot s’arrête et attend un petit moment pour confirmer la détection. Cette double vérification permet d’éviter les faux positifs, par exemple lorsqu’un objet passe brièvement devant le capteur sans constituer un obstacle réel.
► Nous avons vérifié que le déplacement à droite ou à gauche ne dépasse pas 25 cm, comme demandé dans le règlement de la RoboCup. Cependant, la plus grande difficulté a été de reprendre la ligne noire en fonction de la configuration de celle-ci après l’obstacle. En effet, selon l’angle de sortie de l’obstacle et la position de la ligne noire, le robot peut avoir du mal à retrouver le tracé et à poursuivre le suivi de la ligne noire. Nous avons donc dû travailler sur les algorithmes afin de détecter la ligne et se positionner sur la ligne pour améliorer la performance du robot dans ces situations.
Les indicateurs verts permettent de déterminer le sens de suivi de la ligne noire en fonction de leur position. Nous avons choisi d’utiliser les algorithmes de suivi par la droite ou par la gauche de la ligne noire. Si un indicateur vert est détecté sur les capteurs R1 ou R2 du RGB, la variable sens_suivi_ligne_noire est réglée sur « D » pour un suivi à droite. Si un indicateur vert est détecté sur les capteurs L1 ou L2 du RGB, la variable sens_suivi_ligne_noire est réglée sur « G » pour un suivi à gauche
► Notre dispositif ne prend pas en compte le cas d’une croix sans indicateur vert. Or, le règlement de la RoboCup demande que le robot roule tout droit dans cette situation. Actuellement, notre algorithme fait tourner le robot à droite ou à gauche en fonction de sa position. Nous devons donc prendre en compte cette alternative et modifier notre algorithme en conséquence pour que le robot suive les règles de la compétition.
Comment économiser l’énergie du robot ? Deux voies possibles : éteindre les LED du dispositif RGB lorsque le robot n’utilise pas les capteurs pour le suivi de la ligne noire, et éteindre l’écran après un certain temps d’inactivité.
Les LED et l’écran sont des composants qui consomment de l’énergie. En les éteignant lorsqu’ils ne sont pas nécessaires, on peut réduire la consommation d’énergie du robot et prolonger son autonomie. Il est donc recommandé d’éteindre les LED du dispositif RGB lorsque le robot n’utilise pas les capteurs pour le suivi de la ligne noire, et d’éteindre l’écran après un certain temps d’inactivité, par exemple après 30 secondes sans interaction de l’utilisateur.
► L’économie de la batterie repose principalement sur l’extinction de l’écran lorsque le robot roule et sur l’extinction des LEDs du capteur RGB lorsque le robot est au repos. En effet, ces deux éléments sont des consommateurs importants d’énergie. En les éteignant lorsqu’ils ne sont pas nécessaires, nous pouvons prolonger l’autonomie de la batterie et ainsi améliorer les performances du robot pendant la compétition.
Nous utilisons l’affichage du robot pour obtenir des informations primordiales afin d’optimiser son utilisation lors de la compétition. Ces informations comprennent :
À chaque interaction avec les boutons A ou B, nous vérifierons que l’utilisateur a bien relâché le bouton avant de commencer une nouvelle action.
En appuyant sur le bouton B, le suivi de ligne noire du robot est lancé. Un nouvel appui sur ce même bouton B arrêtera le robot.
►Vérifie que lorsque tu appuies sur le bouton B, les LED s’affichent en vert, puis en rouge lors d’un nouvel appui.
Nous avons constaté que le calibrage du capteur RGB et de la balance des blancs doit être effectué en fonction des particularités du tapis ou de la lumière ambiante. Pour ce faire, le bouton A permet de lancer la demande de calibrage. L’appui sur le bouton A affiche un message pour confirmer l’opération. Ensuite, l’utilisateur doit effectuer un appui long sur le bouton B pour lancer l’opération de calibrage
► Opération en deux phases suite à l’appui sur le bouton A :
Suite à nos différents tests, nous nous apercevons que le calibrage est primordial pour le bon fonctionnement du robot. D’ailleurs cette opération est bien prise en compte dans le règlement.
Place le dispositif RGB du robot sur une feuille blanche, puis utilise le bouton A pour calibrer le robot.
Grâce à l’utilisation du joystick, l’utilisateur peut modifier le sens du suivi de la ligne, soit à droite, soit à gauche. Un affichage confirme son choix.
►Par le joystick nous changeons l’affichage du suivi de ligne vers la droite ou vers la gauche.
Pour le suivi de la ligne noire, les moteurs EM1 et EM2 sont utilisés. Deux variables, puissance_droite et puissance_gauche, permettent le paramétrage des deux moteurs. Le moteur droit EM2 est monté à l’envers sur le robot. Pour compenser cela, le paramétrage du moteur droit est multiplié par -1.
►Avec cette programmation, le robot doit avancer tout droit à la vitesse minimale mais il ne prend pas en compte la ligne noire. Nous devons utiliser les capteurs RGB pour que notre robot suive la ligne noire soit par la droite soit par la gauche.
L’unité pour faire tourner les moteurs du MBOT V2 est le tour par minute (RPM). La bibliothèque mblock utilise des valeurs comprises entre -100 et 100 pour contrôler la vitesse des moteurs, où -100 correspond à la vitesse maximale dans le sens inverse des aiguilles d’une montre, 0 correspond à l’arrêt et 100 correspond à la vitesse maximale dans le sens des aiguilles d’une montre.
Les LED s’affichent en fonction de la détection de la ligne noire. Cette fonction affiche les LEDs sur des cas non traités par notre programme
La variable sens_ligne_noire détermine le sens du suivi de la ligne noire, soit par la droite (« D »), soit par la gauche (« G »).
En fonction de sens_ligne_noire, le robot suit la ligne noire en privilégiant les possibilités par la droite, soit les possibilités par la gauche. En fonction du sens de suivi de la ligne, le programme donne plus d’importance aux détecteurs RGB les plus extrêmes R2 ou L2.
Si le suivi de la ligne noire se fait par la droite, le programme donne plus d’importance au détecteur RGB R2 pour tourner à droite.
Si le suivi de la ligne noire se fait par la gauche, le programme donne plus d’importance au détecteur RGB L2 pour tourner à gauche.
Si les détecteurs R2 ou L2 ne détectent pas la ligne noire alors le robot doit suivre la ligne noire en avançant tout droit.
Pour tourner fortement à droite, le moteur droit tourne dans le sens contraire des aiguilles d’une montre et le moteur gauche tourne dans le sens des aiguilles d’une montre. Ainsi, le robot tourne sur place vers la droite.
Pour tourner fortement à gauche, le moteur gauche tourne dans le sens contraire des aiguilles d’une montre et le moteur droit tourne dans le sens des aiguilles d’une montre. Ainsi, le robot tourne sur place vers la gauche.
Le robot roule tout droit quand les détecteurs RGB R2 et L2 ne sont pas sollicités
►Le robot suit la ligne noire, soit par la droite, soit par la gauche. Cependant, le robot manque de précision sur des parcours d’une ligne noire avec des courbes ou des angles droits. Nous devons l’améliorer en prendre en compte les capteurs RGB R1 et L1.
En analysant plus finement les capteurs RGB R1 et L1, le suivi de la ligne noire est possible en maintenant le robot au centre de la ligne noire.
► Le robot suit la ligne noire, mais rencontre parfois des difficultés sur les angles droits. Nous avons effectué des tests avec différentes vitesses, mais la vitesse minimale de 30RPM semble être la plus sûre, tandis que la vitesse maximale de 40RPM permet une petite accélération en ligne droite.
Cependant, en fonction du poids du robot, de l’installation de la pince et de l’équilibrage du robot avec un poids à l’arrière, la vitesse minimale peut être amenée à changer. Nous devons donc être vigilants et ajuster la vitesse en fonction des modifications apportées au robot.
En utilisant l’accéléromètre du mBot, on peut détecter l’inclinaison du robot et ainsi ajuster la puissance en fonction de la pente : accélérer dans une montée et ralentir dans une descente.
► La plus grande difficulté rencontrée est l’équilibrage du robot. En effet, lorsque le robot monte une pente, les moteurs ont tendance à le déséquilibrer vers l’arrière. De plus, avec l’installation de la pince, le robot est déséquilibré vers l’avant. Pour pallier ce problème, nous avons mis en place un dispositif pour équilibrer le robot équipé de la pince en ajoutant un poids sur l’arrière du robot. Cela permet de stabiliser le robot et d’améliorer la performance du capteur RGB pour suivre la ligne noire dans les franchissements et les passages de pentes. Nous avons effectué plusieurs tests pour ajuster le poids et trouver le bon équilibre en fonction des différentes configurations rencontrées.
Le robot détecte et évite les obstacles sur la ligne noire. Pour cela, le capteur sonore du mBot v2 est utilisé pour la détection de l’obstacle. Lorsqu’un obstacle est détecté, le robot s’arrête et attend un petit moment pour confirmer la détection. Cette double vérification permet d’éviter les faux positifs, par exemple lorsqu’un objet passe brièvement devant le capteur sans constituer un obstacle réel.
► Nous avons vérifié que le déplacement à droite ou à gauche ne dépasse pas 25 cm, comme demandé dans le règlement de la RoboCup. Cependant, la plus grande difficulté a été de reprendre la ligne noire en fonction de la configuration de celle-ci après l’obstacle. En effet, selon l’angle de sortie de l’obstacle et la position de la ligne noire, le robot peut avoir du mal à retrouver le tracé et à poursuivre le suivi de la ligne noire. Nous avons donc dû travailler sur les algorithmes afin de détecter la ligne et se positionner sur la ligne pour améliorer la performance du robot dans ces situations.
Les indicateurs verts permettent de déterminer le sens de suivi de la ligne noire en fonction de leur position. Nous avons choisi d’utiliser les algorithmes de suivi par la droite ou par la gauche de la ligne noire. Si un indicateur vert est détecté sur les capteurs R1 ou R2 du RGB, la variable sens_suivi_ligne_noire est réglée sur « D » pour un suivi à droite. Si un indicateur vert est détecté sur les capteurs L1 ou L2 du RGB, la variable sens_suivi_ligne_noire est réglée sur « G » pour un suivi à gauche
► Notre dispositif ne prend pas en compte le cas d’une croix sans indicateur vert. Or, le règlement de la RoboCup demande que le robot roule tout droit dans cette situation. Actuellement, notre algorithme fait tourner le robot à droite ou à gauche en fonction de sa position. Nous devons donc prendre en compte cette alternative et modifier notre algorithme en conséquence pour que le robot suive les règles de la compétition.
Comment économiser l’énergie du robot ? Deux voies possibles : éteindre les LED du dispositif RGB lorsque le robot n’utilise pas les capteurs pour le suivi de la ligne noire, et éteindre l’écran après un certain temps d’inactivité.
Les LED et l’écran sont des composants qui consomment de l’énergie. En les éteignant lorsqu’ils ne sont pas nécessaires, on peut réduire la consommation d’énergie du robot et prolonger son autonomie. Il est donc recommandé d’éteindre les LED du dispositif RGB lorsque le robot n’utilise pas les capteurs pour le suivi de la ligne noire, et d’éteindre l’écran après un certain temps d’inactivité, par exemple après 30 secondes sans interaction de l’utilisateur.
► L’économie de la batterie repose principalement sur l’extinction de l’écran lorsque le robot roule et sur l’extinction des LEDs du capteur RGB lorsque le robot est au repos. En effet, ces deux éléments sont des consommateurs importants d’énergie. En les éteignant lorsqu’ils ne sont pas nécessaires, nous pouvons prolonger l’autonomie de la batterie et ainsi améliorer les performances du robot pendant la compétition.
Crée une nouvelle fonction « attente_bouton_relache » dans mes blocs :
Les deux moteurs EM1 et EM2 sont utilisés pour faire avancer le MBOT. Crée deux variables pour piloter les deux moteurs :
Le moteur droit EM2 est monté à l’envers sur le robot. Pour compenser cela, le paramétrage du moteur droit est multiplié par -1. Crée une fonction pour le suivi de la ligne noire :
Teste ton robot : il doit avancer tout droit lorsque tu appuies sur le bouton B puis s’arrête lorsque tu réappuies sur le bouton B ou le bouton A.
►Avec cette programmation, le robot doit avancer tout droit mais il ne prend pas en compte la ligne noire. Nous devons utiliser les capteurs RGB pour que notre robot suive la ligne noire.
L’unité pour faire tourner les moteurs du MBOT V2 est le tour par minute (RPM). La bibliothèque mblock utilise des valeurs comprises entre -100 et 100 pour contrôler la vitesse des moteurs, où -100 correspond à la vitesse maximale dans le sens inverse des aiguilles d’une montre, 0 correspond à l’arrêt et 100 correspond à la vitesse maximale dans le sens des aiguilles d’une montre.
Essaye le suivi de la ligne noire avec ces deux versions de MBOT.
Le MBOT de base avec son dispositif de rotule sur l’avant du robot. :
Et une autre version du MBOT avec 4 roues, deux dont toujours motrices avec l’ajout de cet axe fabriqué avec une imprimante 3D :
Tu vas constater des différences de comportement de ton robot notamment à cause du frottement sur le sol lors des virages des deux roues installées à l’avant du robot.
Nous utilisons l’affichage du robot pour obtenir des informations primordiales afin d’optimiser son utilisation lors de la compétition. Ces informations comprennent :
À chaque interaction avec les boutons A ou B, nous vérifierons que l’utilisateur a bien relâché le bouton avant de commencer une nouvelle action.
En appuyant sur le bouton B, le suivi de ligne noire du robot est lancé. Un nouvel appui sur ce même bouton B arrêtera le robot.
►Vérifie que lorsque tu appuies sur le bouton B, les LED s’affichent en vert, puis en rouge lors d’un nouvel appui.
Nous avons constaté que le calibrage du capteur RGB et de la balance des blancs doit être effectué en fonction des particularités du tapis ou de la lumière ambiante. Pour ce faire, le bouton A permet de lancer la demande de calibrage. L’appui sur le bouton A affiche un message pour confirmer l’opération. Ensuite, l’utilisateur doit effectuer un appui long sur le bouton B pour lancer l’opération de calibrage
► Opération en deux phases suite à l’appui sur le bouton A :
Suite à nos différents tests, nous nous apercevons que le calibrage est primordial pour le bon fonctionnement du robot. D’ailleurs cette opération est bien prise en compte dans le règlement.
Place le dispositif RGB du robot sur une feuille blanche, puis utilise le bouton A pour calibrer le robot.
Grâce à l’utilisation du joystick, l’utilisateur peut modifier le sens du suivi de la ligne, soit à droite, soit à gauche. Un affichage confirme son choix.
►Par le joystick nous changeons l’affichage du suivi de ligne vers la droite ou vers la gauche.
Pour le suivi de la ligne noire, les moteurs EM1 et EM2 sont utilisés. Deux variables, puissance_droite et puissance_gauche, permettent le paramétrage des deux moteurs. Le moteur droit EM2 est monté à l’envers sur le robot. Pour compenser cela, le paramétrage du moteur droit est multiplié par -1.
►Avec cette programmation, le robot doit avancer tout droit à la vitesse minimale mais il ne prend pas en compte la ligne noire. Nous devons utiliser les capteurs RGB pour que notre robot suive la ligne noire soit par la droite soit par la gauche.
L’unité pour faire tourner les moteurs du MBOT V2 est le tour par minute (RPM). La bibliothèque mblock utilise des valeurs comprises entre -100 et 100 pour contrôler la vitesse des moteurs, où -100 correspond à la vitesse maximale dans le sens inverse des aiguilles d’une montre, 0 correspond à l’arrêt et 100 correspond à la vitesse maximale dans le sens des aiguilles d’une montre.
Les LED s’affichent en fonction de la détection de la ligne noire. Cette fonction affiche les LEDs sur des cas non traités par notre programme
La variable sens_ligne_noire détermine le sens du suivi de la ligne noire, soit par la droite (« D »), soit par la gauche (« G »).
En fonction de sens_ligne_noire, le robot suit la ligne noire en privilégiant les possibilités par la droite, soit les possibilités par la gauche. En fonction du sens de suivi de la ligne, le programme donne plus d’importance aux détecteurs RGB les plus extrêmes R2 ou L2.
Si le suivi de la ligne noire se fait par la droite, le programme donne plus d’importance au détecteur RGB R2 pour tourner à droite.
Si le suivi de la ligne noire se fait par la gauche, le programme donne plus d’importance au détecteur RGB L2 pour tourner à gauche.
Si les détecteurs R2 ou L2 ne détectent pas la ligne noire alors le robot doit suivre la ligne noire en avançant tout droit.
Pour tourner fortement à droite, le moteur droit tourne dans le sens contraire des aiguilles d’une montre et le moteur gauche tourne dans le sens des aiguilles d’une montre. Ainsi, le robot tourne sur place vers la droite.
Pour tourner fortement à gauche, le moteur gauche tourne dans le sens contraire des aiguilles d’une montre et le moteur droit tourne dans le sens des aiguilles d’une montre. Ainsi, le robot tourne sur place vers la gauche.
Le robot roule tout droit quand les détecteurs RGB R2 et L2 ne sont pas sollicités
►Le robot suit la ligne noire, soit par la droite, soit par la gauche. Cependant, le robot manque de précision sur des parcours d’une ligne noire avec des courbes ou des angles droits. Nous devons l’améliorer en prendre en compte les capteurs RGB R1 et L1.
En analysant plus finement les capteurs RGB R1 et L1, le suivi de la ligne noire est possible en maintenant le robot au centre de la ligne noire.
► Le robot suit la ligne noire, mais rencontre parfois des difficultés sur les angles droits. Nous avons effectué des tests avec différentes vitesses, mais la vitesse minimale de 30RPM semble être la plus sûre, tandis que la vitesse maximale de 40RPM permet une petite accélération en ligne droite.
Cependant, en fonction du poids du robot, de l’installation de la pince et de l’équilibrage du robot avec un poids à l’arrière, la vitesse minimale peut être amenée à changer. Nous devons donc être vigilants et ajuster la vitesse en fonction des modifications apportées au robot.
En utilisant l’accéléromètre du mBot, on peut détecter l’inclinaison du robot et ainsi ajuster la puissance en fonction de la pente : accélérer dans une montée et ralentir dans une descente.
► La plus grande difficulté rencontrée est l’équilibrage du robot. En effet, lorsque le robot monte une pente, les moteurs ont tendance à le déséquilibrer vers l’arrière. De plus, avec l’installation de la pince, le robot est déséquilibré vers l’avant. Pour pallier ce problème, nous avons mis en place un dispositif pour équilibrer le robot équipé de la pince en ajoutant un poids sur l’arrière du robot. Cela permet de stabiliser le robot et d’améliorer la performance du capteur RGB pour suivre la ligne noire dans les franchissements et les passages de pentes. Nous avons effectué plusieurs tests pour ajuster le poids et trouver le bon équilibre en fonction des différentes configurations rencontrées.
Le robot détecte et évite les obstacles sur la ligne noire. Pour cela, le capteur sonore du mBot v2 est utilisé pour la détection de l’obstacle. Lorsqu’un obstacle est détecté, le robot s’arrête et attend un petit moment pour confirmer la détection. Cette double vérification permet d’éviter les faux positifs, par exemple lorsqu’un objet passe brièvement devant le capteur sans constituer un obstacle réel.
► Nous avons vérifié que le déplacement à droite ou à gauche ne dépasse pas 25 cm, comme demandé dans le règlement de la RoboCup. Cependant, la plus grande difficulté a été de reprendre la ligne noire en fonction de la configuration de celle-ci après l’obstacle. En effet, selon l’angle de sortie de l’obstacle et la position de la ligne noire, le robot peut avoir du mal à retrouver le tracé et à poursuivre le suivi de la ligne noire. Nous avons donc dû travailler sur les algorithmes afin de détecter la ligne et se positionner sur la ligne pour améliorer la performance du robot dans ces situations.
Les indicateurs verts permettent de déterminer le sens de suivi de la ligne noire en fonction de leur position. Nous avons choisi d’utiliser les algorithmes de suivi par la droite ou par la gauche de la ligne noire. Si un indicateur vert est détecté sur les capteurs R1 ou R2 du RGB, la variable sens_suivi_ligne_noire est réglée sur « D » pour un suivi à droite. Si un indicateur vert est détecté sur les capteurs L1 ou L2 du RGB, la variable sens_suivi_ligne_noire est réglée sur « G » pour un suivi à gauche
► Notre dispositif ne prend pas en compte le cas d’une croix sans indicateur vert. Or, le règlement de la RoboCup demande que le robot roule tout droit dans cette situation. Actuellement, notre algorithme fait tourner le robot à droite ou à gauche en fonction de sa position. Nous devons donc prendre en compte cette alternative et modifier notre algorithme en conséquence pour que le robot suive les règles de la compétition.
Comment économiser l’énergie du robot ? Deux voies possibles : éteindre les LED du dispositif RGB lorsque le robot n’utilise pas les capteurs pour le suivi de la ligne noire, et éteindre l’écran après un certain temps d’inactivité.
Les LED et l’écran sont des composants qui consomment de l’énergie. En les éteignant lorsqu’ils ne sont pas nécessaires, on peut réduire la consommation d’énergie du robot et prolonger son autonomie. Il est donc recommandé d’éteindre les LED du dispositif RGB lorsque le robot n’utilise pas les capteurs pour le suivi de la ligne noire, et d’éteindre l’écran après un certain temps d’inactivité, par exemple après 30 secondes sans interaction de l’utilisateur.
► L’économie de la batterie repose principalement sur l’extinction de l’écran lorsque le robot roule et sur l’extinction des LEDs du capteur RGB lorsque le robot est au repos. En effet, ces deux éléments sont des consommateurs importants d’énergie. En les éteignant lorsqu’ils ne sont pas nécessaires, nous pouvons prolonger l’autonomie de la batterie et ainsi améliorer les performances du robot pendant la compétition.
Sur l’interface de programmation MBLOCK installer les trois options :
Plage de détection : 5 à 15 mm de l’objet à détecter
Double pression : lorsque vous appuyez deux fois sur le bouton, le capteur quad RVB commence à mémoriser les valeurs des couleurs de l’arrière-plan (le blanc) et de la ligne noire pour le suivi de ligne. Pour effectuer cette opération, placez les capteurs de lumière sur le parcours avec une ligne noire et appuyez deux fois sur le bouton. Lorsque vous voyez les LED clignoter rapidement, faites glisser les capteurs RVB d’un côté à l’autre au-dessus de la ligne noire sur le fond blanc du parcours pendant environ 2,5 secondes. Les valeurs des paramètres obtenues sont automatiquement stockées.
Si l’apprentissage échoue, les LED clignotent lentement et vous devez recommencer l’apprentissage.
Pour détecter la ligne noire nous avons utilisé les instructions suivantes :
Pour mesurer les deux capteurs du centre :
Pour mesurer les quatre capteurs :
Pour mesurer un capteur :
En mesurant la ligne noire, ou le fond ou une couleur :
Le capteur à ultrasons 2 peut être utilisé pour détecter la distance entre un obstacle et celui-ci. L’émetteur de gauche transmet les ondes ultrasonores et le récepteur de droite reçoit les ondes ultrasonores réfléchies.
Les êtres humains peuvent entendre des sons de 20 à 20 000 Hz. Les ondes sonores dont les fréquences sont supérieures à 20 000 Hz sont appelées ondes ultrasonores. Les ondes sonores sont réfléchies par les obstacles rencontrés et sont reçues par le récepteur du capteur à ultrasons. En fonction du temps écoulé entre l’émission et la réception, les distances entre le capteur à ultrasons et les obstacles peuvent être calculées.
Présence d’un obstacle :
Distance avec un obstacle
Un moteur électrique encodeur est un moteur équipé d’un dispositif appelé encodeur. L’encodeur est un capteur qui mesure la position angulaire ou la vitesse de rotation du moteur. Il fournit des informations précises sur la position du moteur, ce qui est essentiel pour contrôler avec précision le mouvement du robot.
EM1 : correspond au moteur gauche
EM2 : correspond au moteur droit (attention il est monté à l’envers, pour le faire avancer mettre un nombre négatif)
Utilise ce que tu as pu faire précédemment pour détecter un obstacle :
et les fonctions pour faire avancer, tourner, reculer ton robot :
Pour parcourir le labyrinthe le robot doit à chaque obstacle prendre la décision soit de tourner à droite ou soit de tourner à gauche, autrement il avance :
Sur l’obstacle avant de tourner le robot doit reculer :
Maintenant en fonction de l »obstacle ‘obstacle et de l’endroit où se trouve le robot, celui-ci doit tourner à droite ou à gauche.
Utilise une variable pour numéroter les obstacles :
Et maintenant prendre la bonne décision en fonction du labyrinthe :
Lancer https://makecode.microbit.org/#
Crée un nouveau projet :
Dans MakeCode tu vas rajouter une nouvelle extension pour piloter les moteurs :
saisie cette url pour rechercher l’extension pour ploter les moteurs de DFROBOT : https://github.com/DFRobot/pxt-motor
Puis valide :
Exemple d’un programme pour faire avancer ton robot par l’appui du bouton A et l’arrêter par l’appui du bouton B :
Choisir un numéro de groupe différent
Téléverse sur le MAQUEEN et sur la carte MICRO:BIT puis teste :