Suivi de ligne avec Kp

Comment le capteur quad RGB réagit-il lorsqu'il détecte une ligne?

Les quatre indicateurs du capteur quad RGB vous aident à savoir rapidement ce que le capteur a détecté : lorsque l'arrière-plan est détecté, l'indicateur s'allume ; sinon, l'indicateur ne s'allume pas.

Par défaut, le capteur quad RGB identifie les couleurs plus claires comme des arrière-plans et les couleurs plus sombres comme des lignes.

Comment le capteur différencie-t-il une ligne d'un arrière-plan?

Le capteur quad RGB possède 4 sondes capables de détecter l'intensité lumineuse. Elles fonctionnent en détectant activement l'intensité de la lumière réfléchie après que la lumière de remplissage ait éclairé l'objet.

Le capteur peut déduire la valeur de gris de l'objet. Plus la valeur de gris est élevée, plus l'objet est lumineux, sinon il est plus sombre.

Pour distinguer la ligne de l'arrière-plan, nous devons également donner au capteur une valeur de seuil, indiquant au capteur que les couleurs au-dessus ou en dessous de ce seuil sont des couleurs d'arrière-plan, sinon ce sont des lignes. De cette manière, le capteur peut distinguer les arrière-plans des lignes.

Par défaut, nous définissons une valeur de seuil uniforme pour le capteur quad RGB, afin que vous puissiez l'utiliser dès la sortie de la boîte. Asset 3.png

Valeur de seuil par défaut

Asset 4.png Vous pouvez également définir une nouvelle valeur de seuil ou définir des couleurs sombres comme arrière-plans en apprenant.

Permettez au capteur d'apprendre une nouvelle ligne et un nouvel arrière-plan avec le bouton d'apprentissage

Dans les concours, nous utilisons souvent des cartes de suivi de ligne avec des lignes blanches sur un fond noir (ce qui rend la carte plus durable) ou d'autres combinaisons de couleurs d'arrière-plan et de lignes. Dans ces cas, nous devons utiliser la fonction de calibrage du capteur quad RGB.

La fonction apprentissage permet au capteur quad RGB de trouver la couleur de la lumière de remplissage et la valeur de seuil qui correspondent le mieux à la lumière ambiante actuelle, à la couleur d'arrière-plan et à la couleur de la ligne. Les méthodes sont les suivantes.

  • Double clic : déclenche l'apprentissage du suivi de ligne.

    • Placez les deux sondes du capteur sur l'arrière-plan de la carte de suivi de ligne, et double-cliquez sur le bouton apprentissage.
    • Lorsque vous voyez les deux indicateurs de suivi de ligne clignoter rapidement, à une hauteur fixe sur l'arrière-plan, secouez le capteur jusqu'à ce que les indicateurs arrêtent de clignoter rapidement (cela prendra environ 2,5 secondes).
    • Les paramètres d'apprentissage seront automatiquement enregistrés. Si l'apprentissage échoue, les deux indicateurs de suivi de ligne passeront en clignotement lent et vous devrez réapprendre.
  • Appui long : basculez la couleur de la lumière de remplissage (généralement, vous n'avez pas besoin de basculer la couleur de la lumière de remplissage, elle sera définie automatiquement après un apprentissage réussi)

Écrire un programme simple de suivi de ligne

Commençons par regarder un programme simple de suivi de ligne.

Répéter
Si (la tête du mBot est alignée avec la ligne)
	Le mBot avance tout droit
Si (la tête du mBot est sur le côté gauche de la ligne).
	Le mBot tourne à droite à un angle
Si (la tête du mBot est sur le côté droit de la ligne).
	Le mBot tourne à gauche à un angle

En anglais

Repeat 
	If (the head of the mBot is aligned with the line)
		The mBot goes straight ahead
	If (the head of the mBot is on the left side of the line).
		The mBot turns right at an angle
	If (the head of the mBot is on the right side of the line).
		The mBot turns left at an angle		

Notez que ce programme ne discute pas encore de ce qu'il faut faire lorsque le mBot s'écarte de la ligne, alors permettez-moi d'imbriquer une instruction if-else pour résoudre ce problème.

Répéter
	Si
		Si (la tête du mBot est alignée avec la ligne)
		Le mBot avance tout droit
	Si (la tête du mBot est sur le côté gauche de la ligne).
		Le mBot tourne à droite à un angle
	Si (la tête du mBot est sur le côté droit de la ligne).
		Le mBot tourne à gauche à un angle
	Sinon
	Le mBot s'arrête	

Il existe également des blocs pour diriger le mBot. image.png

Lire la position du mBot par rapport à la ligne à partir du statut de suivi de ligne

Avec la bonne définition des couleurs de ligne et d'arrière-plan, nous pouvons mieux comprendre le statut de suivi de ligne du capteur quad RGB.

Le capteur quad RGB se compose de nombres binaires de 4 bits allant de 0000 à 1111, correspondant aux nombres décimaux de 0 à 15. Les nombres binaires, de haut en bas, correspondent aux résultats de la détection de ligne et d'arrière-plan détectés par les capteurs L2, L1, R1, R2. Lorsque le capteur détecte une couleur d'arrière-plan, le bit correspondant lit 1, sinon, il lit 0. Voici un résumé du statut de lecture et des résultats de détection des capteurs.

Statut de suivi de ligne (Décimal)Statut de suivi de ligne (Binaire)État L2État L1État R1État R2Illustration (lignes noires sur fond blanc)
00000LigneLigneLigneLigneimage.png
10001LigneLigneLigneArrière-planimage.png
20010LigneLigneArrière-planLigneimage.png
30011LigneLigneArrière-planArrière-planimage.png
40100LigneArrière-planLigneLigneimage.png
50101LigneArrière-planLigneArrière-planimage.png
60110LigneArrière-planArrière-planLigneimage.png
70111LigneArrière-planArrière-planArrière-planimage.png
81000Arrière-planLigneLigneLigneimage.png
91001Arrière-planLigneLigneArrière-planimage.png
101010Arrière-planLigneArrière-planLigneimage.png
111011Arrière-planLigneArrière-planArrière-planimage.png
121100Arrière-planArrière-planLigneLigneimage.png
131101Arrière-planArrière-planLigneArrière-planimage.png
141110Arrière-planArrière-planArrière-planLigneimage.png
151111Arrière-planArrière-planArrière-planArrière-planimage.png

Lire la position du mBot par rapport à la ligne à partir de la valeur de déviation

Sur la base de la lecture de la valeur de gris des sondes du capteur L1 et R1, ainsi que de la définition des couleurs de ligne et d'arrière-plan par le capteur, le capteur est capable de calculer la déviation du mBot par rapport au centre de la ligne.

  • Lorsque le capteur est du côté gauche de la ligne, la valeur de déviation < 0 ; dans ce cas, la tête du mBot doit tourner à droite, et les roues gauche du mBot doivent accélérer ; les roues droite doivent décélérer.
  • Lorsque le capteur est du côté droit de la ligne, la valeur de déviation > 0 ; dans ce cas, la tête du mBot doit tourner à gauche, et les roues gauche du mBot doivent décélérer ; les roues droite doivent accélérer.

En combinant le réglage de la vitesse des moteurs du châssis mBot et la définition de la vitesse avant du moteur encodeur (dans le sens antihoraire est la vitesse avant), on peut voir que si le mBot doit avancer tout droit à une vitesse de base, les roues gauche doivent tourner dans le sens antihoraire ; les roues droite doivent tourner dans le sens horaire. Nous pouvons définir la vitesse du moteur encodeur comme suit : Roue gauche : vitesse de base, roue droite : -1*vitesse de base.

Par conséquent, la valeur de déviation peut être utilisée pour augmenter ou diminuer dynamiquement la vitesse des moteurs pour un suivi de ligne plus fluide.

Lorsque le capteur est du côté gauche de la ligne, la valeur de déviation < 0 ; dans ce cas, la tête du mBot doit tourner à droite, et les roues gauche du mBot doivent accélérer ; vitesse gauche = vitesse de base + valeur absolue * valeur de déviation = vitesse de base - valeur de déviation les roues droite doivent décélérer, vitesse droite = -1*(vitesse de base-valeur absolue(valeur de déviation))=-1*(vitesse de base+valeur de déviation)

Lorsque le capteur est du côté droit de la ligne, la valeur de déviation > 0 ; dans ce cas, la tête du mBot doit tourner à gauche, et les roues gauche du mBot doivent décélérer ; vitesse gauche = vitesse de base - valeur absolue * valeur de déviation = vitesse de base - valeur de déviation Les roues droite doivent accélérer, vitesse droite = -1*(vitesse de base+valeur absolue(valeur de déviation))=-1*(vitesse de base+valeur de déviation)

Pour résumer, nous pouvons obtenir la formule pour régler la vitesse des moteurs lors du suivi de ligne. vitesse gauche = vitesse de base - valeur de décalage vitesse droite =-1*(vitesse de base+décalage)

La vitesse de base est la vitesse de base du mBot suivant la ligne, et la valeur de déviation est la position du mBot par rapport à la ligne telle qu'inférée par le capteur de suivi de ligne.

Appliquer le concept de Kp

Bien que très rudimentaire, avec vitesse gauche=vitesse de base-valeur de déviation vitesse droite =-1(vitesse de base+valeur de déviation)* un contrôle en boucle fermée simple est mis en œuvre. Le RPM du moteur contrôle le mouvement du mBot, qui change sa position par rapport à la ligne. La position du mBot est détectée par le capteur quad RGB et calculée comme une valeur de déviation, et finalement nous utilisons la valeur de déviation pour définir un nouveau RPM de moteur pour le mBot.

Cependant, si nous utilisons la formule ci-dessus directement, nous pouvons facilement constater que les résultats réels ne sont pas satisfaisants. Nous savons que nous devons tourner à droite lorsque le mBot s'écarte à gauche, mais s'il ne tourne pas à droite ou s'il tourne trop loin, il ne pourra pas obtenir un meilleur résultat de suivi de ligne. Nous avons besoin d'un paramètre pour contrôler l'effet de la valeur de déviation sur le degré de virage. C'est là que le contrôleur proportionnel "Kp" intervient.

Dans l'algorithme de contrôle de robot plus complexe, les ingénieurs introduisent souvent un contrôleur proportionnel intégrateur et différentiel pour lisser l'ensemble du processus de contrôle. Cependant, cela est beaucoup plus complexe et nous n'allons pas l'approfondir ici.

Avec le concept de Kp, nous pouvons réécrire la formule originale comme suit vitesse gauche=vitesse de base-Kp*valeur de déviation vitesse droite =-1(vitesse de base+Kp*valeur de déviation)*

En général, plus la vitesse de base est grande, plus la valeur de Kp devra être grande pour éviter que le mBot ne tourne pas à temps, tandis que plus la vitesse de base est petite, plus la valeur de Kp devra être petite pour éviter une surrotation. Il n'y a pas de réglage de Kp fixe, mais vous devez choisir la valeur en fonction de votre situation et de vos besoins.