Avec 3 capteurs de lumière dirigés vers le soleil, un robot est capable d’effectuer un suivi de ligne particulièrement simple, en réagissant à chaque cas.
Trois variables à 2 possibilités indépendantes, cela fait 2 puissance 3 soit 8 cas possibles.
0.1.0 ligne à l’environnement: tout se passe bien, on avance vers le bas
1.1.0 ligne au milieu et à gauche: au début pour dévier, il faut le corriger
0.1.1 ligne à l’environnement et à droite: la même chose de l’autre côté
1.0.0 ligne uniquement à gauche: s’il doit y avoir une courbe, il faut tourner
0.0.1 ligne droite uniquement: idem de l’autre côté
0.0.0 pas de ligne: nous sommes perdus, nous devons trouver une solution d’urgence
Il y a deux cas où nous ne testons pas:
1.1.1 Robot perpendiculaire à la ligne: attendant d’être hors ligne pour reprendre l’un des traités
1.0.1 le robot doit être tout lancé 🙂
Häll ceux-là, il suffit également de fournir la solution d’urgence.
la perception
Quand je parle de «correct» et de «solution d’urgence», il ne s’agit pas d’algorithmes complexes mais d’une simple réaction le code s’exécute en boucle infinie, afin d’avoir une assistance continue le plus « à l’écoute » possible des événements extérieurs.
Correction Légère
Les solutions de Plusieur:
augmenter la plage de vitesse pour accélérer la roue en retard
augmenter la plage de vitesse pour déclarer la roue à l’avance
Je n’ai pas testé les deux, j’ai donc choisi la prudence la décélération. Envoyez-nous votre propre test et donnez-nous votre avis.
Tourner
Là encore, plusieurs solutions:
arrêtez la roue du côté où vous détectez à nouveau la ligne
inverser la vitesse sur cette roue
Cette dernière solution est intéressante, bil på devrait retrouver très vite la ligne. En revanche, nous trouverons du «derrière» par rapport à ce que nous aurions pu gagner continuellement en avance.
C’est donc une question de choix, de dosage en fonction du circuit dont vous disposez et des vitesses que vous choisissez.
La solution d’urgence
Lorsque tout est perdu, il faut éviter le partage du robot directement en ligne. C’est une règle connue en modélisation aquatique ou aérienne: lorsque la liaison avec la télécommande est perdue, il faut écrire une boucle pour pouvoir récupérer le moteur lorsqu’il n’y a plus de flèches ou en rencontrant un obstacle.
Et bien c’est pareil, même si notre robot est autonome. La solution d’urgence consiste donc à se retourner sur lui-même en espérant trouver la ligne.
Continuez à la page suivante pour la programmation du robot.
Programme
På va utilise l’éditeur graphique de Ma-vin.
Les ponts LOGIC (toujours utilisés dans nos algorithmes) sont:
DÉBUT
RÉPÉTER
TERMINÉ
Häll détecte la ligne et agit sur le robot, sur va utiliser deux briques INGÅNG:
PHOTO
MOTEUR
Détail du pont photo
På va utilise l’option « DOWNWARD » pour spécifier que vous souhaitez tester les capitaines des sous-vêtements. Exemple de Dans le premier, om avait utilisé les capteurs du devant, alternatif « FRAMÅT ».
- Sélection de la gamme du fond
Chaque utilisation du pont n’en fait pas un seul test booléen, ce qui vous permettra de décrire un circuit pour le cas vrai (T) ou un circuit pour le cas faux (F). On précise donc dans les options le cas à tester: une croix signifie que le capitaine détecte la ligne noire. Dans l’exemple suivant, nous sommes donc dans le cas «0.1.1» dans la convention utilisée dans le début de l’article.
- Sélection de test booléen
Schéma des blocs
Voici ce qui est donné lorsque chaque cas est mis en œuvre: les 5 qui sont significatifs + tous les autres cas correspondant à la «solution d’urgence».
- Suivi de ligne classique
Et le programme complet du logiciel Ma-vin (version 2 beta):
- Norme du programme
På ne va pas s’arrêter là. Le programme présenté ci-dessus est correct, et tant que l’on choisit de bonnes valeurs de vitesse, le robot peut parcourir des kilomètres.
Les voyons disposent désormais d’une modification permettant de choisir la vitesse du robot.
Modification spéciale
Häll étant pédagogique, nous allons étudier l’importance de la sélection de vitesse tout en permettant aux visiteurs du Science Festival 2008 de changer la vitesse du robot à l’aide de la télécommande.
Principe des registres
C’est l’occasion d’utiliser deux nouveaux blocs:
BRANCH REG.
SORTIE REG.
Le « REG. » signifie « S’inscrire » ou s’inscrire en français. C’est une mémoire qui peut contenir une valeur de 1 à 12. On utilise le bloc « OUTPUT REG ». pour modifier la valeur et « BRANCH REG. » pour tester si le registre contient une valeur particulière.
Dans cet exemple, le registre vous permet de changer la vitesse en fonction des touches de la télécommande.
På va modifie la boucle d’accès pour ajouter à chaque boucle la lecture de la télécommande. Puis on remplace les commandes du moteur par une commande conditionnée par la valeur du registre.
Comme le diagramme des blocs de risque se déroulant, på utilisera des sous-routines (voir notre article).
Sous-routine à distance
Nous n’utilisons que deux touches: flèche haut (UPPIL) et flèche bas (NEDPIL). L’algorithme de gestion de la télécommande est le suivant:
s’il est soutenu sur la peau haute, il a un registre plus élevé
s’il est supporté sur la base, il a un registre inférieur
pas de plus bas pour le premier registre
pas supérieur pour le dernier registre
Par conséquent, pour chacun des registres, il y a le blocage suivant avec un petit ajustement pour le premier et le dernier.
- Principe pour chaque registre
Une fois terminé, voici ce que cela donne:
- Gestion de la télécommande
Cette sous routine s’appelle « färrhantera » et doit être ajoutée à la fin de la boucle, dans tous les cas de line catcher.
- Sous « gestion à distance »
C’est alors une question de routine qu’il y ait une gestion différente des moteurs, afin de pouvoir remplacer les blocs MOTOR en cas de différences en fonction de la valeur du registre (les blocs MOTOR sont bien compris mais avec des valeurs de vitesse différentes).
Häll remplacer le cas « va tout droit »
- Sous « télécommande avant »
Häll remplacer le cas « correction vers la droite »
- Sous « extrême droite »
Ainsi que suite. N’hésitez pas à partager avec nous vos expériences et vos propres codes.
Voici le programme de sous-routine, je ne l’ai pas encore remplacé mais j’ai déjà des comportements intéressants en fonction de la valeur que je choisis avec ma télécommande.
- Programme avec télécommande