nxt-g-mindstorms-programing

NXT-G programmation Mindstorms: NXT-G interface de programmation Mindstorms

Cette entrée a été publiée dans Tutoriels en robotique, et marquée avec , , , , , le par .
Lego Mindstorms NXT

Cet article présente NXT-G, l’environnement de développement fourni avec Lego Mindstorms NXT. Nous présenterons les principales caractéristiques de cet environnement graphique et décrirons la manière d’utiliser et de concevoir un programme à l’aide de NXT-G.

Lego Mindstorms NXT

NXT-G Le kit Lego Mindstorms NXT est commercialisé depuis 2006. Ce robot facile à monter et à modifier (puisque s’appuyant sur les célèbres briques Lego) est aussi très complet. Pas moins de 3 servo-moteurs et 4 capteurs sont fournis dans le Kit de base. Mais ce qui fait aussi la différence lorsque l’on parle de robotique personnelle et surtout de robots autonomes, c’est la capacité à programmer le robot.

L’un des intérêts majeurs de la robotique de loisir est en effet de rendre son robot le plus autonome possible et capable de réaliser des tâches spécifiques. En ce sens, disposer d’un système de programmation évolué et également facile à manipuler est un point important dans le choix du robot.

Lego Mindstorms NXT propose un langage de programmation graphique très performant et facile à manipuler, même pour ceux qui n’ont pas de compétences particulières en langages de développement.

Ce langage se nomme NXT-G et est fourni dans le kit de base (ce qui n’est pas le cas avec toutes les gammes robotiques). Nous allons découvrir cet environnement de programmation dans cet article.

L’environnement de développement NXT-G

NXT-GLe CD d’installation fourni avec le kit de base permet d’installer NXT-G. Cet environnement est compatible Mac et PC. Les caractéristiques techniques minimales sont les suivantes :

Microsoft Windows

  • Windows XP Service Pack 2 ou Windows Vista
  • Processeur à 1,5 Ghz
  • 512 Mo de RAM
  • 300 Mo d’espace disque
  • 1 port USB
  • Lecteur de CD-ROM (pour l’installation)
  • Adaptateur Bluetooth (optionnel, requis pour la communication Bluetooth)
Apple Macintosh

  • Apple MacOS X v10.3.9 ou 10.4
  • Processeur Power PC G3, G4, G5 à 1,3 Ghz
  • 512 Mo RAM
  • 300 Mo d’espace disque
  • 1 port USB
  • Lecteur de CD-ROM (pour l’installation)
  • Adaptateur Bluetooth (optionnel, requis pour la communication Bluetooth)

L’environnement NXT-G est une version spécifique du produit professionnel LabView (http://www.ni.com/labview) édité par National Instruments. Autant dire que la plate-forme de base est solide. LabView est en effet très largement utilisé dans l’industrie.

A quoi ressemble l’interface du logiciel de programmation Mindstorms NXT-G ?

La figure ci-dessous présente l’environnement de développement NXT-G.

Environnement de programmation Mindstorms NXT-G
  • La palette liste les blocs fonctionnels que l’on peut glisser/déposer sur la zone de travail.
  • La zone de travail est le lieu de conception de votre programme.
  • Le panneau de configuration présente les paramètres que vous pouvez ajuster lorsque vous sélectionnez un bloc dans la zone de travail
  • Le contrôleur permet de compiler le programme et de le transférer au robot (par connexion USB ou par Bluetooth).
  • Le Robot Center est le lieu où sont contenus les tutoriels vous permettant de construire et programmer l’une des 4 grandes catégories de robots réalisables à l’aide de Lego Mindstorms NXT (Les véhicules, les bras robotisés, les animaux et les humanoïdes). Ces tutoriels se comportent comme des vidéos vous permettant de réaliser vos premiers programmes pas à pas de manière très didactique. Un second onglet est disponible dans cet espace et permet l’accès au portail Lego où vous pourrez accéder aux forums, télécharger des sons supplémentaires pour votre robot…
  • L’aide en ligne contient toute l’aide nécessaire pour utiliser l’interface

Principes de programmation Mindstorms à l’aide de NXT-G

La programmation à l’aide de NXT-G est entièrement graphique. Vous n’avez pas besoin de connaître la programmation pour réaliser des programmes évolués à l’aide de cet environnement NXT-G. Vous ne réaliserez aucune ligne de code à proprement parlé à l’aide de cet environnement.

Par défaut, la zone de travail présente uniquement un point de départ. A partir de ce point de départ, vous glissez et déposez l’une des blocs de la palette NXT-G. Les blocs NXT-G s’ajoutent les uns derrière les autres sur un axe que l’on appelle le rayon de séquence.

Rayon de séquence NXT-G

Les blocs NXT-G qui ne sont pas reliés à un axe de séquence ne sont pas pris en compte par le programme. Il est possible de faire en sorte que plusieurs séquences de programmes s’effectuent en parallèle.

Pour ce faire, des rayons de séquence supplémentaires peuvent être créés à partir du point de départ comme le présente la figure suivante.

Rayons de séquence multiples dans NXT-G

Blocs disponibles dans Mindstorms NXT-G

NXT-G est fourni avec 35 blocs. Il est possible de télécharger sur le web des blocs supplémentaires et également de constituer ses propres blocs. Lors de l’achat d’un capteur non standard (par exemple la webcam CMUCam), le capteur est fourni avec un CD contenant un bloc supplémentaire permettant de manipuler et d’interagir avec le capteur.

Nous pouvons classer les blocs en 7 grandes familles comme le fait l’aide de NXT-G.

  1. Les blocs courants
  2. Les blocs d’action
  3. Les blocs de capteurs
  4. Les blocs de flux
  5. Les blocs de données
  6. Les blocs avancés
  7. Les blocs personnalisés

A l’aide de cette liste, il est aisé de se rendre compte que la palette de programmes que l’on peut réaliser à l’aide de NXT-G est très large. Faisons un tour rapide (non exhaustif) des blocs NXT-G pour Mindstorms proposés.

Bloc Description
Bloc « Afficher »
bloc NXT-G afficher
Ce bloc NXT-G permet d’afficher un texte sur l’écran LCD de la brique intelligente NXT
Bloc « Boucle »
Bloc NXT-G Boucle
Ce bloc NXT-G permet de réaliser une boucle dans votre programme, vous permettant ainsi de réaliser un même ensemble d’actions plusieurs fois tant que certaines conditions ne sont pas remplies
Bloc « Moteur »
Bloc Moteur NXT-G
Ce bloc NXT-G permet d’activer un servomoteur. Il est possible d’indiquer le sens, la vitesse et la durée de la rotation
Bloc « Son »
Bloc Son NXT-G
Ce bloc NXT-G permet de jouer un son (un bip, une série de différentes intonations enregistrées ou un fichier son) depuis la brique intelligence NXT
Bloc « Commutation »
Bloc commutation NXT-G
Ce bloc NXT-G permet de créer des conditions dans votre programme et ainsi ne réaliser certaines actions que si des conditions spécifiques sont réunies.
Bloc « Capteur de rotation »
Bloc capteur de rotation NXT-G
Ce bloc NXT-G vous permet de déterminer le nombre et/ou l’angle de rotation effectué par un servomoteur.
Bloc « Capteur sonar à ultrasons »
Bloc capteur sonar ultrasons NXT-G
Ce bloc NXT-G permet d’interagir avec le capteur à ultrasons (détecteur d’obstacle) et ainsi déterminer les obstacles et leur distance du robot.
Bloc « Capteur photosensible »
Bloc capteur photosensible NXT-G
Ce bloc NXT-G permet d’interagir avec le capteur photosensible et ainsi déterminer la quantité de lumière reçue par le capteur
Bloc « Capteur sonore »
Bloc capteur sonore NXT-G
Ce bloc NXT-G permet d’interagir avec le capteur sonore et ainsi déterminer l’intensité du son qui arrive sur ce capteur.
Bloc « Capteur de contact »
Bloc capteur de contact NXT-G
Ce bloc NXT-G permet d’interagir avec le capteur de contact et ainsi déterminer si le capteur a été pressé ou au contraire relâché.
Bloc « Comparaison »
Bloc comparaison NXT-G
Ce bloc NXT-G vous permet d’effectuer une comparaison logique dans votre programme.
Bloc « Maths »
Bloc Maths NXT-G
Ce bloc NXT-G permet de réaliser des calculs élémentaires comme l’addition, la soustraction, la multiplication et la division.
Bloc « Réception de message Bluetooth »
Bloc réception Message Bluetooth NXT-G
Ce bloc NXT-G vous permet de traiter un message reçu par communication Bluetooth. Il existe également un bloc permettant d’envoyer des messages via Bluetooth. En utilisant la technologie de communication sans fil Bluetooth, votre robot peut communiquer avec votre PC ou d’autres robots Lego Mindstorms NXT
Bloc « Timer »
Bloc Timer NXT-G
Ce bloc NXT-G permet de gérer un chronomètre
Bloc « Variable »
Bloc variable NXT-G
Ce bloc NXT-G, très utile, vous permet de créer et manipuler des variables dans votre programme.

Un premier programme pour votre robot Lego Mindstorms NXT à l’aide de NXT-G

Le premier programme que nous allons concevoir ici est relativement simple. Il utilise le capteur de son et affiche le niveau sonore (en pourcentage de la sensibilité du capteur) sur l’écran de la brique intelligente du Robot.

Le programme final est représenté par le schéma suivant :

Programme NXT-G

Nous allons bâtir ce programme pas à pas.

Depuis le menu Fichier, cliquez sur Nouveau. Cela créée un nouveau programme avec une zone de travail vierge. Pour plus de facilité, utilisez la palette entière (cliquez sur le second onglet en bas à gauche, dans la barre d’outils verticale).

Ouvrez la liste de blocs « Capteurs » et faites glisser le capteur sonore sur le rayon de séquence comme le montre la figure suivante :

Première étape d'un programme Simple réalisé avec NXT-G

Dans la liste de blocs « Avancé », faîtes glisser le bloc « Nombre en texte » comme le présente l’étape suivante.

Seconde étape d'un programme Simple réalisé avec NXT-G

Maintenant que vous avez saisi le principe, répétez ce type d’opération afin de placer sur le rayon de séquence successivement les blocs suivants :

  • Le bloc « Variable » qui se trouve dans la liste de blocs « Données ». Dans le panneau de configuration de ce bloc, sélectionnez la variable de type texte et veillez à ce que le bouton « Ecrire » soit coché. Cela indique à notre programme que la variable que nous allons utiliser est une variable en écriture.
  • Le bloc « Texte » qui se trouve dans la liste de blocs « Avancé »
  • Le bloc « Afficher » qui se trouve dans la liste « Action ». Dans la liste déroulante présentée dans le panneau de configuration, sélectionnez « Texte ». Cela indique au bloc qu’il s’attend à afficher des données textuelles.
  • Le bloc « Attendre » qui se trouve dans la liste « Flux ». Ce dernier bloc vous permet d’indiquer le temps entre deux mesures (nous le laissons à 2 secondes par défaut).

Placez l’ensemble de cette séquence dans une boucle afin que le programme se répète plusieurs fois et que vous obteniez ainsi des mesures à intervalles régulier.

Pour cela, faites glisser un bloc « Boucle » qui se trouve dans la liste de bloc « Flux » puis déplacez l’ensemble des blocs se trouvant dans la zone de travail à l’intérieur de la boucle tout en conservant leur ordre et en veillant à ce qu’ils restent sur le rayon de séquence (souvenez vous qu’un bloc qui ne se trouve pas sur un rayon de séquence attaché au point de démarrage n’est pas interprété par le programme sans qu’il ne génère une erreur pour autant).

Par défaut, la boucle est réglée sur « Pour toujours ». Cela signifie que le programme tournera indéfiniment, jusqu’à ce que vous arrêtiez celui-ci en appuyant sur l’un des boutons de la brique intelligente.

Si vous le souhaitez, vous pouvez modifier cela en cliquant sur la boucle et en affectant un nombre défini d’affichage dans le panneau de configuration correspondant au bloc boucle (le panneau de configuration se met à jour automatiquement en fonction du bloc sur lequel vous venez de cliquer). Si vous souhaitez n’afficher que 10 mesures, dans la liste déroulante, sélectionnez « Compteur » et inscrivez 10 dans la zone « Compter » qui apparait dessous.

A ce stade, votre programme ressemble à la figure ci-dessous.

Troisième étape d'un programme simple NXT-G

Il reste à présent à lier les blocs de manière à ce qu’ils se passent des données.

Pour échanger des informations, les blocs utilisent des fils de données. Les fils de données servent à faire passer des informations d’un bloc à l’autre. La couleur du fil de données détermine le type de données :

  • Les données numériques sont transmises par les fils jaunes
  • Les données logiques (booléennes) sont transmises par les fils vert
  • Les données texte sont transmises par les fils orange

Lorsque votre fil est gris, cela signifie souvent que le connecteur d’entrée attend une valeur d’un type qui n’est pas celui qui est défini par le connecteur de sortir du premier bloc. On appelle cela un fil coupé. Les fils coupés sont donc des erreurs dans votre programme.

La figure suivante vous en dit un peu plus sur les plots et les fils de données dans NXT-G :

Fils de données avec NXT-G

A présent que vous en savez un peu plus et que vous vous êtes exercés à ouvrir les plots de données, tirer des fils de données entre les blocs, terminons notre programme.

Reprenez la première figure de ce paragraphe et tirez les fils de données entre les bons connecteurs. Rappelez-vous qu’un fil de données gris et pointillé vous indique que vous vous êtes trompés. Seuls les fils de couleurs sont corrects.

Commentons un peu ces fils de données. Pour plus de clarté, nous les avons numéroté.

4ème étape d'un programmer simple NXT-G
  1. Ce premier fil permet de passer le niveau sonore lu par le capteur sonore au bloc qui va transformer la valeur numérique en valeur texte. Le premier bloc propose donc un fil de couleur jaune (c’est une valeur numérique qui est lu). Le bloc qui transforme le nombre en texte attendant bien un fil de couleur jaune.
  2. Le second fil passe la mesure ainsi transformée en texte (d’où la couleur orange du fil) à une variable de type texte.
  3. La variable ainsi renseignée est mise en mémoire (elle est extraite de la variable) grâce au bloc texte et au fil de couleur orange.
  4. Enfin, le dernier fil de données passe la variable lu au bloc Afficher qui va afficher la valeur sur l’écran de la brique intelligence NXT.

Enregistrez votre travail puis testez-le sur votre Robot Lego Mindstorms NXT en cliquant sur le bouton « Télécharger et exécuter » qui se trouve au centre du contrôleur.

Remarque : les données qui sont lues par le capteur sonore, sont des données relatives, en pourcentage de sa sensibilité. Cela n’indique pas une mesure en décibels par exemple. Il existe sur le marché des capteurs plus sensibles et indiquant un niveau de décibels et compatibles avec Lego Mindstorms NXT. Toutefois, étant donné que vous pouvez étalonner les capteurs (à l’aide d’une brique fournie dans NXT-G), vous pouvez relier les valeurs mesurées à des niveaux de décibels.

Pour aller plus loin avec NXT-G

National Instruments, l’éditeur du logiciel professionnel LabView propose un toolkit qui s’adapte à LabView et permet d’aller ainsi plus loin dans la création et le développement robotique.

L’idée de National Instruments est assez simple : fournir un environnement simple et efficace avec NXT-G et ensuite, pour ceux qui désirent aller plus loin et industrialiser leur création robotique, LabView devient l’outil naturel. Dans cette conception, Lego Mindstorms NXT se comporte comme une plateforme prototype.

Génération Robots (http://www.generationrobots.com)

Tout usage et reproduction soumis à autorisation explicite préalable.