Documentation Technique : Navigation d’un Robot à l’aide de carrés verts
Comment détecter les carrés verts pour connaître la direction à prendre :
Principe de Fonctionnement
Suivi de Ligne : Le robot suit une ligne noire sur le sol.
Détection des Carrés Verts : Le capteur RGB du robot détecte les carrés verts placés le long de la ligne.
Détection des Croisements : Le robot détecte un croisement lorsqu’il rencontre une ligne noire perpendiculaire à la ligne qu’il suit.
Détection des Carrés Verts
En fonction de la position des carrés verts détectés sur le bord de la ligne noire, le robot prend une décision :
Carré Vert à Droite : Le robot tourne à droite.
Carré Vert à Gauche : Le robot tourne à gauche.
Carrés Verts des Deux Côtés : Le robot fait demi-tour.
Utilise une variable dans laquelle on peut stocker des informations. Dans notre cas, nous allons utiliser une variable pour stocker l’information sur la position des carrés verts détectés.
Par exemple une variable nommée vert :
Carré Vert à Droite : vert à 1.
Carré Vert à Gauche : vert à 2.
Carrés Verts des Deux Côtés : vert à 3.
Amélioration du Fonctionnement
Lors des premiers tests, il a été constaté que le robot doit ralentir dès qu’il détecte des carrés verts. Cela lui permet de mieux détecter le croisement et de prendre la bonne décision.
Détection des Croisements
Lorsque le robot détecte un croisement, il va utiliser la variable vert pour prendre une décision.
En fonction de la valeur de la variable vert, le robot va prendre une décision :
Si vert est 1 : Le robot tourne à droite.
Si vert est 2 : Le robot tourne à gauche.
Si vert est 3 : Le robot fait demi-tour.
Après avoir pris la décision et effectué le virage, il est important de réinitialiser la variable vert à 0 pour qu’elle soit prête pour la prochaine détection de carrés verts.
Avance le robot pour s’assurer qu’il ne soit plus sur les carrés verts.
Puis introduit la détection et la prise de décision des carrés verts dans le suivi de ligne :
Paramétrage de la détection des carrés verts
Sur le joystick, tu peux choisir de faire la balance des blancs pour une meilleur détection des couleurs en fonction de ton environnement (pense à poser ton robot sur une zone blanche avant de déclencher la balance des blancs) :
Choisi une couleur pour le capteur RGB avant de lancer le suivi de ligne :
Caractéristiques : 5 capteurs de suivi de ligne (sorties analogiques et digitales), calibration automatique via bouton-poussoir 2 LEDs frontales rouges 4 LEDS RGB Néopixels Capteur de distance ultrason HC-SR0 4Buzzer pour effets sonores 2 motoréducteurs N20 :vitesse de rotation nominale : 266 tr/minmodulation PWM rapport de réduction: 1:75 Capteur infrarouge permettant au robot d’être télécommandé Port d’extension GPIO : 8 ports : P0 P1 P2 P8 P12 P13 P14 P15 avec 3,3V 3 ports pour servomoteur : P0 P1 P2 avec Vbat 2 Ports I2C 3.3V1 Port I2C 5V Alimentation par batterie Li-Ion 18650 3.7V 3500 mAh avec circuit de chargement Tension de charge : 5 V, temps de charge : 4 heures, indicateur du niveau de charge : 4 LED Dimensions du produit : 14 x 101 x 70 mm
Le robot dispose à l’avant de 5 capteurs optiques infrarouge.
Fonctionnement d’un capteur optique infrarouge
Le capteur optique infrarouge est constitué : d’une LED infrarouge d’un photo-transistor Le capteur envoie un signal haut lorsqu’il détecte le noir et un signal bas quand il détecte le blanc.
Puis fais défiler ton écran pour choisir le robot Maqueen Plus
Choisis le mode Bloc et agrandis ton écran en baissant la console du bas :
Pour gérer le tableau de LED de la carte microbit utilise l’instruction « afficher l’image » sous Affichage :
Par exemple allume les LEDs de la manière suivante dans « Au démarrage » :
Tu peux tester en demandant à Téléverser sur la carte :
Demande la connexion avec la carte puis valide le transfert.
Tu utilises les instructions suivantes pour le suivi de la ligne noire.
Pour faire avancer ton robot :
Pour détecter la ligne noire :
Programme pour vérifier que ton robot détecte bien la ligne noire :
Téléverse ton programme :
Puis teste si la LED correspondante s’allume lorsque le phot réflecteur passe sur la ligne noire ? :
Comment calibrer le Maqueen Plus ?
5 capteurs de suivi de ligne sur Maqueen Plus ont chacun une LED bleue qui indique l’état.
Si vous constatez qu’un capteur de suivi de ligne n’est pas sensible à une ligne noire, calibrez-le comme suit :
1. Mettez Maqueen Plus dans la zone d’étalonnage, une feuille noire par exemple. Le mettre sous tension
2.Appuyez sur « Calibration-key » pendant environ 1 seconde, les 2 grandes LED avant clignoteront en vert. Relâchez la touche, puis l’étalonnage est terminé.
Programme ton robot pour qu’il tente de rester sur la ligne noire :
Le capteur de gauche et celui de droite ne captent pas la ligne noire, alors les deux capteurs sont de chaque coté de la ligne noire, le robot peut avancer tout droit. Le capteur de gauche est sur la ligne noire, ramène ton robot vers la gauche. Le capteur de droite est sur la ligne noire, alors ramène ton robot vers la droite.
Premier essai pour suivre la ligne noire
Programme les deux moteurs pour aller tout droit, à gauche et à droite.
Pour ton premier essai réduit la vitesse à 50, le Maqueen est très véloce :
Plus vite
Augmente la vitesse en utilisant une variable :
Utilise un pourcentage de la vitesse pour le moteur qui tourne en sens inverse :
par exemple si on souhaite une vitesse réduite de 35% de la vitesse initiale de 50 : (50 * 35) /100 soit :
Puis arrondir pour obtenir la partie entière de la division :
Augmente petit à petit la vitesse pour voir jusqu’à quand ton robot peut suivre la ligne noire :
Ou diminue ou augmente le pourcentage pour prendre des virages plus larges ou plus serrés :
Améliore ta programmation pour des passages très difficile en utilisant les capteurs arrière gauche et droit :
Quand le capteur arrière droit ou gauche détecte la ligne noire, on peut supposer que le robot est sur une courbe prononcée ou un angle droit de la ligne noire. Afin que le robot puisse suivre la ligne noire, donne la possibilité au robot de tourner plus rapidement sur la détection des capteurs arrière droit ou gauche.
Rajoute des fonctions pour tourner plus droitePlus et gauchePlus qui vont pouvoir suivre la courbe en angle droit :
Puis modifie ton programme pour prendre en compte les capteurs arrière droit et arrière gauche :
Puis téléverse ton programme pour tenter un parcours difficile :
Apprend à utiliser le photo réflecteur IR pour suivre une ligne noire :
Arrêter le robot sur la ligne noire
Programme pour que ton robot s’arrête sur la ligne noire :
Utilise ces instructions pour que ton robot avance jusqu’à la ligne noire :
Le robot reste dans le cadre
Programme ton robot pour qu’il reste dans le cadre de la ligne noire :
Utilise ces instructions pour que ton robot tourne dès qu’il détecte une ligne noire :
Le robot suit la ligne noire
Programme ton robot pour qu’il suive la ligne noire sur ce principe :
Le robot apprend la couleur noire
Rajoute à ton robot un capteur de pression et une LED : avant le suivi de ligne, tu poses ton robot sur la ligne noire puis par un appuie sur le capteur de pression, tu demandes au robot de mémoriser la couleur noire.
Crée une variable noire pour stocker la valeur retournée par le photo réflecteur lorsque le robot est posé sur la ligne noire :
Puis programme pour mémoriser la valeur retournée par le photo réflecteur dans la variable noire :
Passe en mode test et constate comment la variable noire change :
Voici un exemple d’une programmation SCRATCH avec un robot Algora qui passe le parcours le plus difficile en utilisant deux photoréflecteurs.
Pour la construction du robot, trois préconisations :
l’espace entre les deux photoréflecteurs doit être légèrement supérieur à la largeur de la ligne noire.
les photoreflecteurs doivent être le plus proche du sol
les photoréflecteurs doivent être devant mais proche des roues directrices.
Utilise deux capteurs photo réflecteurs IR, un capteur de pression et une LED :
Active le mode test :
Pose ton robot et ses deux photo réflecteurs sur une ligne noire pour visualiser les valeurs retournées :
Tu peux constater les deux photo réflecteurs n’ont obligatoirement pas la même mesure de la valeur de la couleur de la ligne noire. Pour plus de justesse, utilise deux variables pour stocker la valeur de la ligne noire.
D’autre part, il semble plus pertinent de mesurer la ligne noire et d’utiliser cette valeur plutôt que le blanc. Tu peux constater également que la valeur retournée par les photoreflecteurs peut varier lors du déplacement du robot sur la ligne noire.
Utilise une variable « tolerance » afin de prendre en compte des variations dans les mesures de la ligne noire lors du parcours :
Donc avant le lancement du robot, réalise une prise des valeurs des photo réflecteurs sur la ligne noire.
Les valeurs retournées par les deux photo réflecteurs sont mémorisées dans deux variables, une variable pour chaque photo réflecteur. Afin de gérer les fluctuations des mesures du noir, attribue 10 à la variable tolérance.
Puis programme tes fonctions pour que ton robot se déplace tout droit, à droite et à gauche puis puisse s’arrêter.
Pour passer les passages les plus difficiles, tu peux constater que la meilleure solution pour prendre des virages serrés est de faire tourner le robot sur lui même par une inversion des moteurs, un moteur vers l’avant, l’autre vers l’arrière.
Programme pour que ton robot maintienne les deux photo réflecteurs de chaque coté de la ligne noire et ainsi suivre la ligne noire :
si les deux photo réflecteurs sont sur le blanc, le robot va tout droit,
si le photo réflecteur droit A0 est sur le blanc alors le robot doit aller vers la ligne noire en tournant à gauche,
si le photo réflecteur gauche A1 est sur le blanc alors le robot doit rejoindre la ligne noire en tournant à droite :
Puis rajoute au programme principal :
Essaye ton robot après un transfert :
Pose ton robot avec les deux photo réflecteurs sur la ligne noire pour la phase d’apprentissage de la couleur noire , puis appuie sur la capteur de pression. Ton robot suit la ligne noire même dans les courbes difficiles.
Vérifie le comportement de ton robot :
Les deux photo réflecteurs dans le blanc on avance tout droit.
Seul le photo réflecteur droit voit le blanc alors on tourne à gauche,
Seul le photo réflecteur gauche voit le blanc alors on tourne à droite,
Autrement le robot avance tout droit.
Modifie ton programme pour que ton robot s’arrête sur un nouvel appui sur le capteur de pression :
Ton projet doit ressembler à ce programme pour mesurer le temps de ton parcours et l’afficher sur la micro:bit :
Le chronomètre avec la variable « temps » mémorisent le temps de ton parcours. En fin de parcours; avec le bouton A de la micro:bit tu peurras afficher le résultat :
Voila un exemple du parcours :
Après chaque virage, positionne un « attendre » pour te donner la possibilité de repositionner ton robot à la main lors du parcours. Si tu peux éviter cette possibilité tu gagneras du temps.
Au démarrage de ton robot, anime ton robot pour pendant un certain avant son lancement :
A la fin du parcours fait danser ton robot :
Bonne chance le meilleur temps pour l’instant 9 secondes !!!!!!!
Apprendre à construire un robot qui obéit au doigt.
Liste des pièces avant la construction
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
Construction de ton robot :
Le tableau des assignations
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.
Réveiller 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 » :
Eteindre la LED 0
Détecter la présence de ton doigt sur le capteur de lumière
Allumer la LED 0
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.
Passer un ordre à ton robot
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 :
Endormir ton robot
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.
Comment valider un ordre
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.
Faire bouger ton robot au doigt
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 :
En avant (1 appui court puis un appui long)
En arrière (2 appuis courts successifs puis un appui long)
À droite (3 appuis courts successifs puis un appui long)
À gauche (4 appuis courts successifs puis un appui long)
Une solution
Crée une fonction « execution » pour déclencher les mouvements du robot en fonction de la valeur dans ordre :
faire avancer
faire tourner à droite
faire tourner à gauche
et le faire reculer
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 :
Ce capteur à ultrasons, un sonar, utilise l’écho pour déterminer la distance à laquelle se trouve un objet.
L’émetteur permet d’envoyer une impulsion sonore de l’ordre de 40 kHz. Cette impulsion est réfléchie sur un obstacle puis est détectée lorsqu’elle revient au récepteur sous la forme d’un écho.
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 variableobstacle comme une variable globale afin qu’elle soit accessible dans tout le programme.