Max Danilin

Dans l’article précédent, nous avons appris à utiliser un contrôleur PID dans un environnement de programmation visuelle XOD. Nous avons également transformé la plate-forme mBot de Makeblock en un simple robot suiveur. Si vous voulez vous souvenir du sujet, ou si vous ne savez rien sur ce qu’est un contrôleur PID, je vous conseille de lire le premier article de la série.

Dans cet article, nous continuons l’expérience du contrôleur PID. Nous devons utiliser la plate-forme mBot de Makeblock, comme nous le faisions auparavant. La prochaine tâche plus difficile pour nous est de créer un robot suiveur de ligne. Pour rendre cela possible, nous devons étendre les fonctionnalités de mBot. Nous ajoutons un capteur « Me Line Follower ». Puisque ce capteur est fabriqué par le même fabricant, il s’intègre parfaitement à notre robot et est idéal pour notre tâche.

Il existe une bibliothèque XOD pour répéter les exemples décrits. Consultez l’aperçu sur le site Web XOD et ajoutez-le à votre projet XOD en cliquant sur dans le menu et tapez . La bibliothèque s’est améliorée depuis la dernière version, donc si vous l’avez, assurez-vous de l’ajouter à nouveau pour obtenir la dernière version.

Regardez notre mBot amélioré.

mBot avec un capteur de ligne.

Commençons la programmation du robot en lisant les valeurs d’entrée du capteur de ligne. Le premier nœud placé dans le patch est

nœud mbot-line-sensor.

Ce nœud communique avec le capteur via et broches d’entrée. Il a deux broches de sortie et selon le capteur infrarouge gauche et droit sur la carte. La valeur vraie d’une broche de sortie signifie qu’il y a une couleur blanche ou claire devant le capteur infrarouge. Par contre, une valeur fausse signifie que la couleur est noire ou foncée.

« Me Line Follower » a une étiquette bleue. Physiquement, nous le connectons à un «port 1» marqué en bleu sur la carte contrôleur. Dans le programme, nous mettons un nœud correspondant dans le patch et créez les liens nécessaires.

Nœud de capteur mbot-line connecté au port RJ25 1.

Quels sont les modes possibles pour le capteur de ligne? Regardez le croquis.

Conditions possibles du capteur. D’en haut.
  • Situation 1. Les deux LED IR sont sur le terrain. ensembles de nœuds à et fondateur. mBot doit avancer.
  • Situation 2. La LED IR gauche est sur la ligne, tandis que la droite dévie vers la droite. ensembles de nœuds à broche, et à . mBot doit tourner à gauche.
  • Situation 3. La LED IR droite est sur la ligne tandis que la gauche dévie vers la gauche. ensembles de nœuds à broche, et à . mBot doit tourner à droite.
  • Situation 4. Les deux LED IR sont hors ligne. le nœud en sort deux valeurs. mBot doit revenir pour trouver la ligne manquante.

Cependant, il est préférable d’utiliser des capteurs analogiques plutôt que numériques. Dans le même temps, un réseau de capteurs suiveurs de ligne est meilleur qu’une paire de LED IR, mais vous pouvez utiliser ce capteur pour notre exemple.

Pour un régulateur PID, une entrée doit être une seule variable, tandis que sortie et par. Pour résoudre ce problème, nous ajoutons nœud. Ce nœud soustrait deux variables booléennes et produit un nombre.

Soustraction logique.

De cette façon node, les valeurs de sortie peuvent être:

  • 0 pour la première situation;
  • -1 pour la deuxième situation
  • 1 pour la troisième situation
  • 0 pour la quatrième situation.

L’entrée est prête et il est temps de la lier .

nœud de contrôleur pid.

Nous utilisons ces quatre situations pour former le concept «d’erreur» du régulateur PID. La situation où la valeur entrante est 0 et les deux LED IR sont en ligne est idéale pour nous. C’est pourquoi nous devons le créer broche à 0.

Mais ce patch dans sa forme ne peut fonctionner correctement qu’avec la deuxième et la troisième situation. Lorsque mBot perd complètement la ligne, la valeur d’entrée se produit le nœud sera également 0. Dans ce cas, nous devons introduire une condition spéciale.

Nous plaçons trois autres nœuds , et vers le patch et créez des liens comme indiqué dans l’image ci-dessous. Regarde.

Solution de la situation 4.

Cette Le nœud fait une condition de la situation 4. node est utilisé pour définir un coefficient de facteur d’amplification. Attribuer pin à une valeur de 25 et pin à une valeur de 1. Enfin, node multiplie la sortie de au coefficient et le transmet.

Si ce n’est pas la situation 4, le coefficient est 1 et la sortie de reste inchangé. Si tel est le cas, le coefficient est de 25 et la production augmente considérablement.

La valeur de La broche montre à quelle vitesse mBot tourne autour de la recherche de la ligne. Nous choisissons la valeur de 25 empiriquement. Ajustez-le dans votre projet pour trouver ce qui fonctionne le mieux pour vous.

Maintenant, la deuxième, troisième et autre situation est décrite et seule la première reste intacte. Pour résoudre ce problème, nous devons placer le seul nœud et liez-le comme indiqué dans l’image ci-dessous.

Solution de la situation 1.

Dans la première situation, les deux et les valeurs des broches sont fausses et mBot avance. Il n’y a pas d’erreurs. Nous connectons noeud avec épingler nœud d’attendre une nouvelle déviation entrante.

La dernière étape de la création du patch consiste à transférer la valeur multipliée vers les moteurs. Nous avons mis trois notes , et au patch. Nous créons également une constante pour stocker la valeur du taux de base des mBots et créer des liens. Le patch terminé est illustré ci-dessous.

Le plâtre fini.

Cette Le nœud contrôle les moteurs. Une valeur positive fait reculer la roue, tandis que la valeur négative la fait avancer. Cette Le nœud constant enregistre la vitesse de base du mBot. Il varie de -1 à 0 et nous le fixons à -0,8. Cette et les nœuds calculent la vitesse du moteur avec l’allée sortie et constante de configuration. Le patch est prêt à être testé. Il est maintenant temps de configurer le contrôleur PID.

Comme vous vous en souvenez peut-être, un contrôleur PID ajuste la sortie en fonction de trois facteurs. Ils sont proportionnels, intégraux et dérivés. Laisser tous les coefficients égaux à zéro fait errer mbot sans aucun comportement. Comme nous l’avons fait dans les exemples précédents, nous devons choisir expérimentalement les valeurs des coefficients.

Facteur Kp

Mettons la valeur 3 dans pin, laissez les autres coefficients être 0 et téléchargez le patch. Pour tester le comportement du robot, nous faisons un petit éperon sur le sol.

Valeur Kp 3.

Comme vous pouvez le voir, l’oscillation est trop élevée avec ce coefficient. mBot essaie de suivre la ligne, mais il secoue et quitte finalement la piste. Fixons 0,1 coefficient.

La valeur 0,1 de Kp.

Maintenant, lorsque le robot perd la ligne, il revient trop longtemps. En effet, l’erreur a trop peu d’effet sur le changement de régime du moteur. Pour les essais et erreurs, nous sélectionnons une valeur correcte 0,7.

La valeur 0,7 de Kp.

Regardez l’explication graphique du comportement de mBot. Cela montre comment La valeur change le mouvement du robot.

L’influence de Kp sur le terrain.

Facteur Kd

Ajustement de coefficient, nous rendons le mouvement plus fluide. Cependant, le robot ne peut toujours pas terminer la piste. Apparemment, l’autre virage sur son chemin est trop raide, et Le nœud répond lentement. Pour résoudre ce problème, nous devons définir une valeur non nulle coefficient.

La première fois que nous désactivons la valeur 3 . Il s’est avéré que la valeur 3 est loin d’être la bonne. Nous faisons de nombreux tests pour trouver la bonne valeur. Nous choisissons la valeur 1 comme la meilleure.

La valeur Kd 1.

MBot complète la piste. Voir le croquis ci-dessous. Augmentation de valeur, nous augmentons le délai de mise en ligne du robot et réduisons le délai de retour en ligne en cas de perte.

L’influence de Kp sur le terrain.

Facteur Ki

L’élu et les coefficients conviennent parfaitement à notre robot. Mais qu’en est-il ?

En fait, nous n’avons pas besoin de le créer. Pour un robot suiveur de ligne, c’est peut être utile dans des cas très spécifiques.

Par exemple. La piste au sol est infiniment droite. Le robot se déplace strictement le long de la ligne, mais il y a un léger désaccord de production au sujet des moteurs. Après une longue période de temps, ce petit problème se transforme en une contraction incontrôlée. Cette facteur élimine ces problèmes.

Nous essaierons d’utiliser d’une manière très inhabituelle.

Lorsque le robot est hors ligne, une entrée est requise vaut 0. Si elle est 0, la valeur multipliée pour les moteurs est également 0 (25 * 0 = 0).

Le fait est que le robot ne bouge pas dans des conditions idéales. Les capteurs infrarouges touchent toujours les pièces défectueuses de la piste ou interfèrent avec les taches sombres sur le sol. Ainsi, lorsque le robot est hors ligne, l’entrée doit être désactivée n’est pas constant à 0. En ajoutant , nous nous débarrassons de la valeur multipliée nulle. 25 coefficient à épingler noeud fait tourner le robot très rapidement s’il perd la ligne. Pour le test nous mettons 2 valeur.

Valeur Ki 2.

Conclusion

Nous avons créé un robot suiveur de ligne cool avec un simple programme XOD. Grâce au contrôleur PID, c’était si simple.

Assurez-vous de suivre les nouveaux articles, car nous faisons de nouveaux projets éducatifs!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *