La communication entre les Robots - Apprentissage LEGO Mindstorms EV3 (2015)
Chapitre 11. La communication entre les robots
Dans ce chapitre, nous allons explorer comment utiliser la messagerie via Bluetooth pour permettre la communication entre les robots. Nous allons:
· Permettre la communication Bluetooth entre les robots
· Utiliser un robot pour commander un autre
· Programme de deux robots de communiquer pour maintenir une distance de sécurité de conduite
· Utilisez deux robots de collaborer pour trouver une cible cachée
Les tutoriels officiels EV3 vous guidera à travers la mise en place de communication Bluetooth et la mise en place des connexions sur la brique. Les tutoriels se déplacent ensuite à la façon d'envoyer un message d'un robot à l'autre. Un robot de maître EV3 peut contrôler jusqu'à sept robots EV3 esclave. Maître-esclave contrôle robotique est un terme commun en génie. Dans cet agencement, le maître peut communiquer dans les deux sens avec tous les robots esclaves. Cependant, les robots esclaves ne peuvent pas communiquer entre eux. Il existe de nombreux exemples sur le Web à l'aide d'un EV3 comme une télécommande pour un robot complet. Dans ce chapitre, je vais me concentrer sur deux robots complets communiquant entre eux.

Ensuite, nous travaillerons directement avec les briques pour permettre la communication entre les robots. Les didacticiels EV3 avez-vous d'activer la communication complète chaque fois que vous exécutez un programme à l'aide des boutons de briques. En vérité, il vous suffit de permettre aux robots de découvrir l'autre fois à l'aide des boutons de briques. Dans la programmation ultérieure, vous pouvez faire la connexion à l'aide du logiciel.
Dans le menu des paramètres de votre brique EV3, sélectionnez Bluetooth. comme on le voit dans l'image suivante. Pour ce faire, à la fois de vos briques, le maître et l'esclave.

Lorsque vous sélectionnez Bluetooth en appuyant sur le bouton central, vous verrez le menu Bluetooth comme indiqué dans l'image ci-dessous. Vous devez désactiver l'option iPhone / iPad / iPod. Vous voulez avoir à la fois les options Bluetooth et la visibilité sélectionnée. Pour ce faire, sur les deux briques. Une fois cela fait, sélectionnez Connexions sur les deux briques juste pour se assurer qu'ils peuvent voir.

Maintenant, sélectionnez Rechercher comme indiqué dans l'image ci-dessous. Cela permettra à l'appariement entre les briques EV3 pour commencer.

De la brique maître, vous voulez sélectionner le robot auquel vous voulez associer comme indiqué dans l'image ci-dessous. Il vous suffit de le faire sur la brique maître, pas les deux briques.

Lorsque vous sélectionnez le robot à coupler, il vous demandera si vous voulez vous connecter. Cliquez sur Connect pour commencer l'appariement comme indiqué dans l'image suivante:

À ce stade, une invite à accepter l'appariement apparaît sur le robot esclave. Accepter l'appariement. Une fois accepté, il vous demandera un code d'accès comme indiqué dans l'image ci-dessous. Assurez-vous que vous entrez dans le même code d'authentification sur les deux robots.

Après avoir entré le code d'accès, les robots doivent compléter la connexion. Vous verrez l'écran comme le montre l'image suivante:

Ce processus de connexion des robots à l'aide des boutons de brique ne doit être fait une fois. Toutefois, si vous ne faites pas cet appariement initial, lorsque vous essayez d'exécuter les programmes, vous recevrez une erreur.
Dans les didacticiels EV3 (intégrés dans le EV3 LEGO Mindstorms logiciel), ils présentent un exemple de messagerie où les commentaires des codeurs d'arbre d'un moteur sur le robot maître fera bouger le robot esclave. Cependant, les évaluations dans les programmes de didacticiel prend des lectures de position du moteur sur le robot maître. Ceci est très similaire à un bouton sur une télécommande utilisée pour faire bouger votre robot. Je vais plutôt utiliser des valeurs de puissance pour que nous puissions imiter la vitesse du robot maître.
Dans l'exemple suivant, j'ai utilisé deux robots similaires. Les robots ne doivent pas nécessairement être identiques, mais devront avoir le bon moteur branché dans le port B et le moteur gauche dans le port C. J'ai utilisé deux du lanceur de sorts-bots de nos chapitres précédents. Dans ce programme, lorsque vous appuyez sur le robot maître le long d'une surface, le robot slave1 émule les mouvements.
Dans la capture d'écran ci-dessous est le programme à télécharger sur le robot maître. Le programme commence en tournant le Bluetooth de la brique avec la communication Bluetooth sur le bloc. Ensuite, le programme prépare une ligne de communication entre le robot maître et le robot slave1 à la communication Bluetooth Initié bloc. Notez que cela permet au robot maître d'envoyer des messages au robot slave1, mais ne prépare pas le robot maître pour recevoir des messages. Vous devez saisir le nom correct du robot recevant dans ce bloc. Après la réinitialisation du codeur d'arbre sur le moteur C avec le bloc de rotation du moteur, nous entrons dans le bloc infini de boucle appelée Motion. Les valeurs de puissance de courant sont envoyées à partir du bloc de rotation du moteur au message Envoyer des blocs numériques. Je choisi pour avoir un signal pour chaque moteur. Bien que je suis en train de faire le déplacement du robot vers l'arrière et vers l'avant dans ce chapitre, ayant des messages séparés moteur met en place l'option pour vous de modifier le code pour donner des instructions de navigation.

Le programme pour le robot esclave est assez simple comme vous pouvez le voir dans la capture d'écran ci-dessous. Nous commençons par allumer Bluetooth de la brique. A l'intérieur du bloc de boucle, on peut voir le programme accepte à plusieurs reprises des messages de la valeur actuelle de puissance de la messagerie bloc de réception numérique et les envoie au réservoir de Move On bloc.

Parce que ce sont les valeurs de puissance de courant réelle mesurée par le codeur d'arbre sur le robot maître, le robot esclave fait un travail efficace d'imiter le mouvement de l'autre robot.
Maintenir une distance
Nous utiliserons le même programme esclave que nous avons utilisé dans le suivi de la section de leader. Tous la magie se produira dans le programme sur le robot maître. Vous aurez besoin de monter un capteur à ultrasons pointant vers l'arrière sur votre robot maître. Vous pouvez brancher le capteur de mouvement dans l'orifice 4 sur le robot maître. Il sera utilisé pour détecter la distance du robot esclave est. Il y aura deux séquences parallèles, une séquence pour la communication avec l'esclave, et l'autre séquence pour commander le mouvement du robot maître.
Nous commençons la séquence de contrôle comme suit:
1. Définir les blocs variables avec des valeurs pour le gain et la distance de consigne dans notre régulateur proportionnel.
2. Ensuite, les blocs de connexion Bluetooth initient une connexion au robot esclave.
3. Ensuite, notre distance de détection bloc boucle d'envoyer des messages au robot esclave de sorte qu'une distance constante entre les robots peut être maintenue.
4. A l'intérieur du bloc de boucle, le bloc Math avancé calcule la différence entre la valeur de blocage du capteur à ultrasons et la valeur de la distance de consigne, et multiplie cette différence par le gain.
5. Ce niveau de puissance est envoyé au robot esclave par blocs de messagerie.
Un défi simple serait d'ajouter dans une autre variable pour la vitesse du robot maître dans cet algorithme, de sorte que le robot est pas toujours du retard à rattraper.

La deuxième séquence commande le mouvement du robot maître. Nous commençons par une attente bloc de temps afin de permettre au robot esclave quelques secondes pour rattraper son retard avec le robot maître. Ensuite, nous avons le robot maître aller de l'avant pendant quelques secondes, arrêt, puis revenir en arrière. Encore une fois, vous devez lancer le programme sur le robot esclave premier. Lorsque vous exécutez les programmes, vous pouvez jouer avec la valeur pour les variables de gain et de distance. Vous pouvez essayer de créer de nouvelles situations pour simuler la circulation sur une route. Comme un défi supplémentaire, vous pouvez ajouter dans un tracker de ligne proportionnelle aux deux robots et de les suivre une ligne tout en maintenant une distance fixe.
Dans le programme suivant, nous utiliserons deux robots pour essayer de trouver une cible. Sans savoir où la cible est, chaque robot se déplacera vers l'extérieur et chercher une cible. Lorsque la cible est trouvée, l'autre robot rejoindra le robot qui a trouvé la cible. Si ni l'un trouve la cible, les deux robots reviennent à leur position de départ.
Si vous étendez ce modèle à plusieurs robots, nous avons une branche de la robotique appelée essaimage. Comment pouvez-vous utiliser plusieurs robots autonomes pour trouver une cible inconnue dans l'espace à deux dimensions (ou en trois dimensions)? Les utilisations commencent des robots aspirateurs de base jusqu'à voler quad-copters autonomes trouver les randonneurs perdus et les feux de forêt.

Dans cet exemple particulier, vous devez placer deux robots identiques dos à dos, comme vous pouvez le voir dans l'image précédente. Montez chaque robot avec un capteur de couleur dirigée vers le bas pour rechercher la cible. Dans l'image précédente, la majeure partie du terrain était une surface blanche. Mais comme vous pouvez le voir dans l'image ci-dessous, la cible est une feuille de papier noir. A l'avant de chaque robot, placez un capteur tactile. Lorsque le capteur tactile frappe une barrière, il déclenche le capteur de couleur pour mesurer la couleur sur la surface en dessous. Placez une cible de couleur avant la barrière dans une seule direction.

Sur les deux robots, le capteur tactile est branché sur le port 1 et le capteur de couleur est branché dans le port 3. Le capteur à ultrasons n'est pas nécessaire pour ce programme, mais reste au-dessus de programme de la section Maintenir une distance.
Commençons par examiner le programme du robot esclave. Il y a deux séquences parallèles dans ce programme, comme vous pouvez le voir dans la capture d'écran ci-dessous. La première séquence reçoit des instructions de mouvement du robot maître. Ceci est similaire au bloc esclave boucle des programmes antérieurs, sauf que maintenant je me sers d'un bloc de direction Déplacer pour simplifier la programmation.

La seconde séquence envoie des informations vers le robot maître de la manière suivante:
1. Cette séquence commence seulement une fois le capteur tactile sur le robot esclave a été déclenchée par l'attente tactile bloc capteur changement.
2. Ce qui est différent est que maintenant la communication Bluetooth Initié bloc prépare le robot maître pour recevoir des messages de retour slave1.
3. Ensuite, un bloc de messagerie Envoyer logique renvoie une déclaration vraie booléenne appelée regard au maître. Cela permet au maître de savoir que le robot esclave a atteint le mur et envoie maintenant des informations de couleur.
4. La couleur bloc de détection de boucle envoie constamment des lectures de la valeur du bloc capteur couleur de mesure au maître via le bloc numérique Envoyer messagerie.
Pour simplifier le programme sur le robot maître, je l'ai utilisé plusieurs Mes blocs le troisième de trois séquences parallèles, comme vous pouvez le voir dans la capture d'écran ci-dessous:

La première séquence définit des valeurs par défaut pour plusieurs variables et réinitialise certaines valeurs de capteur. Nous commençons par la définition des blocs variables logiques booléens EV3-M et EV3-S à false (M pour le maître et S pour esclave). Ces variables gardent trace du moment où le capteur tactile sur chaque robot a été déclenché, et changeront true après leurs capteurs tactiles respectifs ont été déprimés. La couleur de bloc variable numérique garde une trace de robot a détecté la cible. La valeur par défaut de 0 indique que ni robot a détecté la cible. La valeur 1 indique le maître a détecté la cible, et une valeur de 2 indiquera que slave1 a détecté la cible. Un nouveau capteur, nous n'avons pas discuté avant le bloc capteur minuterie. Vous pouvez effectivement avoir jusqu'à huit capteurs individuels de minuterie tout en cours d'exécution de façon indépendante. Nous allons utiliser deux capteurs de minuterie. Nous allons utiliser une minuterie capteur pour mesurer le temps de Voyage qu'il faut pour atteindre le mur pour chaque robot. Nous utilisons la réinitialisation bloc temporisateur à zéro ces compteurs au début du programme.
La seconde séquence envoie des ordres de commande de mouvement pour le robot esclave, en plus de garder la trace du temps de Voyage pour le robot esclave. Nous commençons le fil en lançant la communication avec le robot esclave. Notez que nous avons un bloc de comparaison messagerie boucle. A l'intérieur du bloc est la commande pour le robot esclave de se déplacer vers l'avant. Le déclencheur de rompre cette boucle est donnée lorsque l'instruction vraie booléenne est reçue du bloc logique d'envoi de messagerie appelé regard sur le robot esclave. Ensuite, le temps de Voyage du robot esclave est enregistré en envoyant la valeur du bloc de mesure de minuterie 2 au bloc variable numérique appelé 2. Enfin, un Messagerie Envoyer bloc numérique commande l'esclave d'arrêter, et la variable booléenne EV3-S est changé true pour indiquer que l'esclave a atteint la barrière.
1. Une fois que le robot maître a été mis en mouvement, le premier 1 My Block arrête le robot maître une fois qu'il a atteint la barrière et enregistre le temps de Voyage.
2. Les deux Touchez Mes bloc vérifie pour voir si les deux robots ont atteint leurs barrières respectives.
4. Ensuite, un bloc mathématique calcule la somme des temps de parcours individuels de chaque robot individuel.
Dans la capture d'écran ci-dessous, si nous regardons à l'intérieur du 1 My Block, nous pouvons voir que le robot maître attend un changement d'état du capteur tactile, puis arrête le robot. À ce stade, la minuterie de mesurer le temps 1 bloc envoie sa valeur au bloc variable numérique 1 pour enregistrer la durée du temps de Voyage pour le robot maître. En outre, une véritable déclaration est envoyée à la logique booléenne bloc variable EV3-M pour enregistrer que le robot maître a atteint la barrière.

Dans la capture d'écran ci-dessous, nous pouvons voir à l'intérieur de deux tactile Mon Bloc. Ceci est une boucle logique booléenne qui continue à boucle jusqu'à ce qu'il reçoive une véritable déclaration des opérations logiques et bloc. Cela ne devient vrai la fois le bloc logique variable EV3-M et la variable logique bloc EV3-S sont à true. Comme le bloc logique de la variable EV3-S est modifiée en une séquence parallèle, cette arrête la troisième séquence jusqu'à ce que le robot esclave a atteint la barrière.



Fin de la recherche
Nous allons maintenant examiner chacun des trois choix dans notre bloc de commutation. Chaque cas dans le bloc de commutation exécute une série de commandes en fonction desquelles robot a découvert la cible.
Choix 1 indique que le maître a trouvé le robot. Ainsi, une commande est envoyée à l'esclave de rejoindre le robot maître. Les commandes du moteur sont envoyés au robot esclave pour une quantité de temps qui est la valeur numérique du trajet variable. La valeur du voyage est la somme du temps qu'il faut pour que les deux robots pour atteindre leurs objectifs respectifs. De cette façon, nous pouvons rapprocher la quantité de temps il faudra pour un robot pour revenir.
Dans la capture d'écran ci-dessous, nous pouvons voir l'onglet 2. qui est le cas lorsque l'esclave trouve la cible. De même, le temps de Voyage est dictée à nouveau par le numérique voyage variable.

Le cas par défaut est lorsque ni robot trouve la cible. Dans ce cas, les deux robots vont revenir à l'endroit où ils ont commencé. Dans la capture d'écran ci-dessous, vous pouvez voir les commandes de mouvement séparées pour chaque robot, mais la durée de chaque voyage de retour miroirs respectifs combien de temps il a fallu pour atteindre leur destination.

Une fois que les robots sont retournés à l'origine, vous pouvez envoyer les robots à nouveau pour essayer d'acquérir la cible. Vous pouvez étendre cette idée à plusieurs robots, qui est le concept de l'essaim.
Dans ce chapitre, vous avez appris à utiliser la messagerie et de la communication Bluetooth entre les robots. Vous avez appris à faire des robots interagissent les uns avec les autres. Vous avez également appris comment mettre à jour dynamiquement les mouvements d'un robot esclave en fonction des commentaires du capteur. Enfin, vous avez vu comment la puissance de plusieurs robots travaillant ensemble nous permet d'accomplir plus d'un robot peut par lui-même.
Dans le chapitre suivant, nous allons explorer l'un des programmes avancés de LEGO, Gyro Boy.