domicile - Couloir
Mouvement de la ligne Lego ev3. Commencez en sciences. Capteur de couleur - Mode d'intensité de la lumière ambiante

Voici comment une personne voit la ligne :

Voici comment le robot la voit :


C'est cette fonctionnalité que nous utiliserons lors de la conception et de la programmation d'un robot pour la catégorie compétition « Trajectoire ».

Il existe de nombreuses façons d'apprendre à un robot à voir et à se déplacer le long d'une ligne. Il existe des programmes complexes et des programmes très simples.

Je veux vous parler d'une méthode de programmation que même les enfants de 2-3 ans maîtriseront. À cet âge, il leur est beaucoup plus facile d'assembler des structures selon des instructions, et programmer un robot est une tâche difficile pour eux. Mais cette méthode permettra à l'enfant de programmer le robot pour n'importe quel itinéraire de la piste en 15 à 30 minutes (en tenant compte de la vérification et de l'ajustement étape par étape de certaines des caractéristiques de la trajectoire).

Cette méthode a été testée lors de compétitions de robotique municipales et régionales dans la région de Surgut et l'Okrug-Yugra autonome de Khanty-Mansi et a permis à notre école de remporter les premières places. Au même endroit, j'ai acquis la conviction que ce sujet est très pertinent pour de nombreuses équipes.

Eh bien, commençons.

En préparation à ce type de compétition, la programmation n'est qu'une partie de la solution au problème. Vous devez commencer par concevoir un robot pour une piste spécifique. Dans le prochain article, je vais vous montrer comment faire cela. Eh bien, puisque le mouvement le long d'une ligne est très courant, je vais commencer par la programmation.

Considérons une variante d'un robot avec deux capteurs de lumière, car il est plus compréhensible pour les élèves du primaire.

Les capteurs de lumière sont connectés aux ports 2 et 3. Moteurs aux ports B et C.
Les capteurs sont alignés le long des bords de la ligne (essayez d'expérimenter avec les capteurs à différentes distances les uns des autres et à différentes hauteurs).
Un point important. Pour un meilleur fonctionnement d'un tel circuit, il est conseillé de sélectionner une paire de capteurs en fonction des paramètres. Dans le cas contraire, il sera nécessaire de saisir un bloc pour corriger les valeurs des capteurs.
Installation des capteurs sur le châssis selon le schéma classique (triangle), approximativement comme sur la figure.

Le programme sera composé d'un petit nombre de blocs :


1. Deux blocs de capteur de lumière ;
2. Quatre blocs de « Mathématiques » ;
3. Deux blocs de moteurs.

Deux moteurs sont utilisés pour contrôler le robot. La capacité de chacun est de 100 unités. Pour notre schéma, nous prendrons la valeur moyenne de la puissance du moteur égale à 50. C'est-à-dire que la vitesse moyenne lors de la conduite en ligne droite sera égale à 50 unités. En s'écartant du mouvement en ligne droite, la puissance des moteurs augmentera ou diminuera proportionnellement, en fonction de l'angle de déviation.

Voyons maintenant comment connecter tous les blocs, configurer le programme et ce qui se passera dedans.
Configurons deux capteurs de lumière et affectons-leur les ports 2 et 3.
Prenez le bloc mathématique et choisissez Soustraction.
Relions les capteurs de lumière des sorties "Intensité" avec bus au bloc mathématique aux entrées "A" et "B".
Si les capteurs du robot sont installés symétriquement par rapport au centre de la ligne de voie, les valeurs des deux capteurs seront égales. Après avoir soustrait, nous obtenons la valeur - 0.
Le prochain bloc de mathématiques sera utilisé comme coefficient et vous devez y définir "Multiplication".
Pour calculer le rapport, vous devez mesurer les niveaux "blanc" et "noir" avec l'unité NXT.
Supposons que le blanc soit -70, le noir soit -50.
Ensuite on compte : 70-50 = 20 (la différence entre le blanc et le noir), 50/20 = 2,5 (on fixe la valeur moyenne de la puissance en se déplaçant en ligne droite dans les blocs mathématiques à 50. Cette valeur plus le la puissance lors de la correction du mouvement doit être égale à 100)
Essayez de définir la valeur sur 2,5 à l'entrée "A", puis sélectionnez-la avec plus de précision.
Reliez la sortie "Résultat" du bloc mathématique "Soustraction" précédent à l'entrée "B" du bloc mathématique "Multiplication".
Vient ensuite une paire - un bloc de mathématiques (Addition) et le moteur B.
Mise en place d'un bloc mathématique :
L'entrée "A" est réglée sur 50 (la moitié de la puissance du moteur).
La sortie du bloc "Résultat" est reliée par un bus à l'entrée "Puissance" du moteur B.
Ensuite, la vapeur est un bloc de mathématiques (Soustraction) et le moteur C.
Mise en place d'un bloc mathématique :
L'entrée "A" est réglée sur 50.
L'entrée "B" est reliée par un bus à la sortie "Résultat" du bloc mathématique "Multiplication".
La sortie du bloc "Résultat" est reliée par un bus à l'entrée "Puissance" du moteur C.

À la suite de toutes ces actions, vous recevrez le programme suivant :

Puisque tout cela fonctionnera en boucle, nous ajoutons une "Loop", la sélectionnons et transférons le tout dans une "Loop".

Essayons maintenant de comprendre comment le programme fonctionnera et comment le configurer.


Pendant que le robot se déplace en ligne droite, les valeurs du capteur coïncident, ce qui signifie que la sortie du bloc Soustraction aura une valeur de 0. La sortie du bloc Multiplication donne également la valeur 0. Cette valeur est introduite parallèle à la paire de commande du moteur. Étant donné que ces blocs sont définis sur 50, l'ajout ou la soustraction de 0 n'affecte pas la puissance des moteurs. Les deux moteurs fonctionnent à la même puissance de 50, et le robot roule en ligne droite.

Supposons que la piste fasse un virage ou que le robot dévie de la ligne droite. Que va-t-il se passer ?

La figure montre que l'éclairement du capteur connecté au port 2 (appelés ci-après capteurs 2 et 3) augmente, puisqu'il passe à un champ blanc, et l'éclairement du capteur 3 diminue. Supposons que les valeurs de ces capteurs deviennent : capteur 2 - 55 unités et capteur 3 - 45 unités.
Le bloc "Soustraction" va déterminer la différence entre les valeurs des deux capteurs (10) et la soumettre au bloc de correction (multiplication par un facteur (10 * 2,5 = 25)) puis aux unités de contrôle
moteurs.
Dans le bloc de mathématiques (Addition) contrôle du moteur B à la valeur de la vitesse moyenne 50
25 sera ajouté et la valeur de puissance 75 sera fournie au moteur B.
Dans le bloc mathématique (Soustraction) de la commande du moteur C, 25 sera soustrait de la valeur de vitesse moyenne 50 et la valeur de puissance 25 sera fournie au moteur C.
Ainsi, l'écart par rapport à la ligne droite sera corrigé.

Si la piste tourne brusquement sur le côté et que le capteur 2 est en blanc et que le capteur 3 est en noir. Les valeurs d'éclairage de ces capteurs deviennent : capteur 2 - 70 unités et capteur 3 - 50 unités.
Le bloc "Soustraction" déterminera la différence entre les valeurs des deux capteurs (20) et la soumettra au bloc de correction (20 * 2,5 = 50) puis aux unités de contrôle des moteurs.
Maintenant, dans le bloc mathématique (Addition) de la commande du moteur B, la valeur de puissance 50 + 50 = 100 sera transmise au moteur B.
Dans le bloc mathématique (Soustraction) de la commande du moteur C, la valeur de puissance 50 - 50 = 0 sera transmise au moteur C.
Et le robot fera un virage serré.

Sur les champs blancs et noirs, le robot doit rouler en ligne droite. Si cela ne se produit pas, essayez de faire correspondre les capteurs avec les mêmes valeurs.

Créons maintenant un nouveau bloc et utilisons-le pour déplacer le robot le long de n'importe quelle piste.
Sélectionnez le cycle, puis dans le menu "Edition" sélectionnez la commande "Créer mon bloc".

Dans la boîte de dialogue "Block Constructor", donnez un nom à notre bloc, par exemple, "Go", sélectionnez une icône pour le bloc et cliquez sur "DONE".

Nous avons maintenant un bloc qui peut être utilisé dans les cas où nous avons besoin d'un mouvement de ligne.

L'un des mouvements de base de la construction légère est de suivre la ligne noire.

La théorie générale et des exemples spécifiques de création d'un programme sont décrits sur le site wroboto.ru

Je vais décrire comment nous implémentons cela dans l'environnement EV3, car il existe des différences.

La première chose que le robot doit connaître est la valeur du « point idéal » situé à la frontière du noir et blanc.

L'emplacement du point rouge sur la figure correspond exactement à cette position.

L'option de calcul idéale est de mesurer la valeur du noir et blanc et de prendre la moyenne arithmétique.

Cela peut être fait manuellement. Mais les inconvénients sont visibles immédiatement : même en peu de temps, l'éclairage peut changer et la valeur calculée s'avérera incorrecte.

Cela signifie que vous pouvez faire en sorte que le robot le fasse.

Grâce à nos expériences, nous avons découvert qu'il n'est pas nécessaire de mesurer à la fois le noir et le blanc. Seul le blanc peut être mesuré. Et la valeur de point idéale est calculée comme la valeur du blanc divisée par 1,2 (1,15), en fonction de la largeur de la ligne noire et de la vitesse du robot.

La valeur calculée doit être écrite dans une variable pour pouvoir y accéder ultérieurement.

Calcul du point idéal

Le prochain paramètre impliqué dans le mouvement est le rapport de direction. Plus il est grand, plus le robot réagit aux changements d'éclairage. Mais une valeur trop élevée fera remuer le robot. La valeur est sélectionnée expérimentalement individuellement pour chaque conception de robot.

Le dernier paramètre est la puissance de base des moteurs. Il affecte la vitesse de déplacement du robot. Une augmentation de la vitesse de déplacement entraîne une augmentation du temps de réponse du robot aux changements d'éclairement, ce qui peut conduire à un écart de trajectoire. La valeur est également sélectionnée expérimentalement.

Pour plus de commodité, ces paramètres peuvent également être écrits dans des variables.

Rapport de direction et puissance de base

La logique du mouvement le long de la ligne noire est la suivante : l'écart par rapport au point idéal est mesuré. Plus il est grand, plus le robot doit s'efforcer d'y revenir.

Pour ce faire, nous calculons deux nombres - la valeur de puissance de chacun des moteurs B et C séparément.

Sous forme de formules, cela ressemble à ceci :

Où Isens est la valeur des lectures du capteur de lumière.

Enfin, l'implémentation dans EV3. Il est plus pratique de l'organiser comme un bloc séparé.

Implémentation de l'algorithme

C'est exactement l'algorithme qui a été implémenté dans le robot pour la catégorie intermédiaire WRO 2015



Pour que le robot se déplace en douceur le long de la ligne noire, vous devez le forcer à calculer lui-même la vitesse de déplacement.

Une personne voit une ligne noire et sa bordure claire. Le capteur de lumière fonctionne un peu différemment.

C'est cette propriété du capteur de lumière - l'incapacité de distinguer clairement la frontière du blanc et du noir - et nous l'utiliserons pour calculer la vitesse de déplacement.

Tout d'abord, nous introduisons le concept de « point de trajectoire idéal ».

Les lectures du capteur de lumière vont de 20 à 80, le plus souvent sur le blanc les lectures sont d'environ 65, sur le noir d'environ 40.

Le point idéal est un point conditionnel approximativement au milieu des couleurs blanche et noire, à la suite duquel le robot se déplacera le long de la ligne noire.

Ici, en principe, l'emplacement du point se situe entre le blanc et le noir. Il ne sera pas possible de le poser exactement sur blanc ou noir pour des raisons mathématiques, pourquoi - ce sera clair plus tard.

Empiriquement, nous avons calculé que le point idéal peut être calculé en utilisant la formule suivante :

Le robot doit se déplacer strictement le long du point idéal. Si une déviation se produit dans n'importe quelle direction, le robot doit revenir à ce point.

Composons description mathématique du problème.

Donnée initiale.

Point parfait.

La lecture actuelle du capteur de lumière.

Résultat.

Puissance de rotation du moteur V.

Puissance de rotation du moteur C.

Solution.

Considérons deux situations. Premièrement : le robot s'est écarté de la ligne noire vers la ligne blanche.

Dans ce cas, le robot doit augmenter la puissance de rotation du moteur B et diminuer la puissance du moteur C.

Dans une situation où le robot entre dans la ligne noire, le contraire est vrai.

Plus le robot s'écarte du point idéal, plus il doit y revenir rapidement.

Mais la création d'un tel régulateur est une tâche assez difficile, et elle n'est pas toujours requise dans son ensemble.

Par conséquent, nous avons décidé de nous limiter uniquement au contrôleur P, qui répond de manière adéquate aux écarts par rapport à la ligne noire.

Dans le langage des mathématiques, cela s'écrira ainsi :

où Hb et Hc sont respectivement les puissances finales des moteurs B et C,

Hbase - une certaine puissance de base des moteurs, qui détermine la vitesse du robot. Il est sélectionné expérimentalement, en fonction de la conception du robot et de la netteté des virages.

Itek - lectures actuelles du capteur de lumière.

I id - point idéal calculé.

k - coefficient de proportionnalité, est sélectionné expérimentalement.

Dans la troisième partie, nous verrons comment programmer cela dans l'environnement NXT-G.

Algorithmes de contrôle pour un robot LEGO mobile. Mouvement de ligne avec deux capteurs de lumière

Enseignante en formation complémentaire

Kazakova Lyubov Alexandrovna


Mouvement le long de la ligne

  • Deux capteurs de lumière
  • Contrôleur proportionnel (contrôleur P)

Algorithme de mouvement le long de la ligne noire sans contrôleur proportionnel

  • Les deux moteurs tournent avec la même puissance
  • Si le capteur de lumière droit atteint la ligne noire, la puissance du moteur gauche (par exemple B) diminue ou s'arrête
  • Si le capteur de lumière gauche atteint la ligne noire, alors la puissance de l'autre des moteurs (par exemple, C) diminue (revient à la ligne) diminue ou s'arrête
  • Si les deux capteurs sont sur blanc ou noir, alors il y a un mouvement en ligne droite.

Le mouvement s'organise en changeant la puissance d'un des moteurs


Un exemple de programme de déplacement le long de la ligne noire sans contrôleur P

Le mouvement est organisé en changeant l'angle de rotation


  • Le contrôleur proportionnel (contrôleur P) vous permet de réguler le comportement du robot en fonction de la différence entre son comportement et celui souhaité.
  • Plus le robot s'écarte de la cible, plus il faut de forces pour y revenir.

  • Le régulateur P est utilisé pour maintenir le robot dans un certain état :
  • Maintien de la position du manipulateur Mouvement le long de la ligne (capteur de lumière) Mouvement le long du mur (capteur de distance)
  • Tenir la position du manipulateur
  • Mouvement de ligne (capteur de lumière)
  • Mouvement du mur (capteur de distance)

Suivi de ligne avec un capteur

  • Le but est de se déplacer le long de la frontière "blanc-noir"
  • Une personne peut distinguer la frontière du blanc et du noir. Le robot ne peut pas.
  • La cible du robot est en gris

Carrefour

En utilisant deux capteurs de lumière, il est possible d'organiser le mouvement sur des itinéraires plus complexes



Algorithme de déplacement sur une autoroute avec intersections

  • Les deux capteurs sur blanc - le robot roule en ligne droite (les deux moteurs tournent avec la même puissance)
  • Si le capteur de lumière droit frappe la ligne noire et la gauche sur le blanc, alors un virage à droite se produit
  • Si le capteur de lumière gauche touche la ligne noire et la droite sur le blanc, alors il tourne vers la gauche
  • Si les deux capteurs sont sur noir, alors il y a un mouvement en ligne droite. Vous pouvez compter les intersections ou effectuer certaines actions


Comment fonctionne le contrôleur P

Position des capteurs

O = O1-O2


Algorithme de mouvement le long de la ligne noire avec un contrôleur proportionnel

UV = K * (Ts-T)

  • C - valeurs cibles (prendre les lectures du capteur de lumière sur le blanc et le noir, calculer la moyenne)
  • T - valeur actuelle - nous obtenons du capteur
  • K est le coefficient de sensibilité. Plus il y en a, plus la sensibilité est élevée


15.01.2012, 18:51

Jusqu'à présent, dans les articles sur les algorithmes utilisés pour se déplacer le long d'une ligne, une méthode était envisagée lorsque le capteur de lumière semblait suivre sa bordure gauche ou droite : dès que le robot se déplace vers la partie blanche du champ, le contrôleur renvoie le robot à la frontière, le capteur commence à s'enfoncer plus profondément dans les lignes noires - le régulateur l'a redressé.
Malgré le fait que l'image ci-dessus est pour un contrôleur de relais, le principe général de mouvement du proportionnel (contrôleur P) sera le même. Comme déjà mentionné, la vitesse moyenne d'un tel mouvement n'est pas très élevée et plusieurs tentatives ont été faites pour l'augmenter en raison d'une légère complication de l'algorithme : dans un cas, un freinage « doux » a été utilisé, dans l'autre, en plus des virages , un mouvement vers l'avant a été introduit.
Afin de permettre au robot d'avancer dans certaines zones, une zone étroite a été allouée dans la plage de valeurs donnée par le capteur de lumière, que l'on pourrait classiquement appeler "le capteur est en bordure de ligne".
Cette approche présente un petit inconvénient - si le robot "suit" le bord gauche de la ligne, alors sur les virages à droite, il ne détecte pas immédiatement la courbure de la trajectoire et, par conséquent, passe plus de temps à rechercher la ligne et à tourner . De plus, il est sûr de dire que plus le virage est raide, plus cette recherche est longue.
La figure suivante montre que si le capteur n'était pas du côté gauche de la frontière, mais du côté droit, alors il a déjà détecté la courbure de la trajectoire et commencerait à effectuer des manœuvres de virage.

Par conséquent, c'est une bonne idée d'équiper le robot de deux capteurs à la fois, qui étaient situés sur les côtés opposés de la ligne et, par conséquent, aideraient le robot à réagir plus rapidement aux changements de direction du mouvement.
L'étape suivante consiste à déterminer comment ce changement de conception affectera le programme. Pour simplifier, il faut encore commencer par le contrôleur de relais le plus simple et donc, dans un premier temps, vous intéresser aux positions possibles des capteurs par rapport à la ligne :

En fait, un autre état admissible peut être distingué - sur les itinéraires difficiles, ce sera l'intersection d'une intersection ou une sorte d'épaississement sur le chemin.
Les autres positions des capteurs ne seront pas prises en compte, car soit elles sont dérivées de celles présentées ci-dessus, soit ce sont les positions du robot lorsqu'il a quitté la ligne et ne pourra plus y revenir grâce aux informations des capteurs. En conséquence, toutes les dispositions ci-dessus peuvent être réduites à la classification suivante :
  • le capteur gauche, ainsi que le droit - au-dessus de la surface lumineuse
  • capteur gauche au-dessus de la surface claire, capteur droit au-dessus de l'obscurité
  • capteur gauche au-dessus de la surface sombre, capteur droit au-dessus de la lumière
  • les deux capteurs sont situés au-dessus d'une surface sombre
Si à un certain moment le programme sur le robot détecte l'une de ces positions, il devra réagir en conséquence :
    Si les deux capteurs sont au-dessus de la surface blanche, alors c'est une situation normale dans laquelle la ligne est entre les capteurs, donc le robot doit aller tout droit. Si le capteur gauche est toujours au-dessus de la surface lumineuse, et le capteur droit est déjà au-dessus de la surface sombre, alors le robot a poussé son côté droit sur la ligne. Cela signifie qu'il doit tourner vers la droite pour que la ligne soit à nouveau entre les capteurs. Si le capteur gauche est au-dessus de la surface sombre, et le droit est toujours au-dessus de la lumière, alors pour aligner le robot doit tourner à gauche.Si les deux capteurs sont au-dessus de la surface sombre, alors en général, le robot continue à se déplacer tout droit.

Le diagramme ci-dessus montre immédiatement comment exactement le comportement des moteurs doit changer dans le programme. Maintenant, l'écriture du programme ne devrait pas être difficile. Vous devez commencer par choisir quel capteur sera interrogé en premier. Cela n'a pas vraiment d'importance, alors gardons-le à gauche. Il est nécessaire de déterminer s'il est au-dessus d'une surface claire ou au-dessus d'une surface sombre :
Cette action ne permet pas encore de dire dans quelle direction le robot doit aller. Mais il divisera les états énumérés ci-dessus en deux groupes : (I, II) pour la branche supérieure et (III, IV) pour la branche inférieure. Chacun des groupes a maintenant deux états, vous devez donc en sélectionner un. Si vous regardez de près les deux premiers états I et II, ils diffèrent par la position du capteur droit - dans un cas, il est au-dessus d'une surface claire, dans l'autre - au-dessus d'une surface sombre. C'est ce qui va déterminer le choix de l'action à entreprendre :
Vous pouvez maintenant insérer des blocs qui définissent le comportement des moteurs selon les tableaux ci-dessus : la branche supérieure de la condition imbriquée définit la combinaison "les deux capteurs sur clair", celle du haut - "gauche sur clair, droite sur sombre":
La branche inférieure de la condition principale est responsable d'un autre groupe d'états III et IV. Ces deux conditions diffèrent également l'une de l'autre par le niveau d'éclairement que capte le bon capteur. Ainsi, il déterminera le choix de chacun d'eux :
Les deux branches résultantes sont remplies de blocs de mouvement. La branche supérieure est responsable de l'état "gauche sur sombre, droite sur clair" et celle du bas - pour "les deux capteurs sur sombre".
Il convient de noter que cette conception détermine uniquement comment allumer les moteurs en fonction des lectures des capteurs à un certain endroit du champ, naturellement après un moment le programme doit vérifier si les lectures ont changé afin de corriger le comportement de les moteurs, et après un moment encore, encore, et ainsi de suite. .d. Par conséquent, il doit être placé dans une boucle qui fournira cette vérification itérative :

Un programme aussi simple fournira une vitesse de déplacement assez élevée du robot le long de la ligne sans dépasser ses limites, si vous définissez correctement la vitesse maximale lors de la conduite dans les états I et IV, ainsi que la méthode optimale de freinage dans états II et III - plus les virages sont raides sur la piste, plus le freinage doit être "dur" - la vitesse doit baisser plus vite, et vice versa - avec des virages en douceur, il est tout à fait possible d'appliquer le freinage par la mise hors tension ou même généralement par une légère baisse de vitesse.

Quelques mots distincts doivent également être dits sur le placement des capteurs sur le robot. Evidemment, pour la localisation de ces deux capteurs par rapport aux roues, les mêmes recommandations s'appliqueront que pour un capteur, uniquement pour le sommet du triangle, dans ce cas, le milieu du segment reliant les deux capteurs est pris. La même distance entre les capteurs doit également être choisie à partir des caractéristiques de la piste : plus les capteurs sont proches les uns des autres, plus le robot s'alignera souvent (effectuer des virages relativement lents), mais si les capteurs sont suffisamment écartés , il y a un risque de sortir de la piste, vous devrez donc effectuer des virages plus serrés et des vitesses de déplacement plus lentes sur les sections droites.



 


Lire:



Détermination du sexe de l'enfant par le rythme cardiaque

Détermination du sexe de l'enfant par le rythme cardiaque

C'est toujours excitant. Pour toutes les femmes, cela évoque une variété d'émotions et d'expériences, mais aucune d'entre nous ne perçoit la situation de sang-froid et ...

Comment faire un régime pour un enfant atteint de gastrite: recommandations générales

Comment faire un régime pour un enfant atteint de gastrite: recommandations générales

Pour que le traitement de la gastrite soit efficace et réussi, l'enfant doit être correctement nourri. Les recommandations des gastro-entérologues aideront ...

Quelle est la bonne façon de se comporter avec un mec pour qu'il tombe amoureux ?

Quelle est la bonne façon de se comporter avec un mec pour qu'il tombe amoureux ?

Mentionnez un ami commun. Mentionner un ami commun dans une conversation peut vous aider à créer un lien personnel avec le gars, même si vous n'êtes pas très doué...

Bogatyrs de la terre russe - liste, histoire et faits intéressants

Bogatyrs de la terre russe - liste, histoire et faits intéressants

Il n'y a probablement aucune telle personne en Russie qui n'aurait pas entendu parler des héros. Les héros qui nous sont venus des anciennes chansons-légendes russes - épopées, ont toujours été ...

image de flux RSS