
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.
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.
Le 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
|
Apple Macintosh
|
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.
La figure ci-dessous présente l’environnement de développement 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. 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 de boîtes de la palette. Les blocs s’ajoutent les uns derrière les autres sur un axe que l’on appelle le rayon de séquence
Les blocs 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.
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.
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 proposés.
| Bloc | Description |
| Bloc "Afficher"
|
Ce bloc permet d’afficher un texte sur l’écran LCD de la brique intelligente NXT |
| Bloc "Boucle"
|
Ce bloc 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"
|
Ce bloc permet d’activer un servomoteur. Il est possible d’indiquer le sens, la vitesse et la durée de la rotation |
| Bloc "Son"
|
Ce bloc 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"
|
Ce bloc 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"
|
Ce bloc vous permet de déterminer le nombre et/ou l’angle de rotation effectué par un servomoteur. |
| Bloc "Capteur d'ultrasons"
|
Ce bloc permet d’interagir avec le capteur à ultrasons et ainsi déterminer les obstacles et leur distance du robot. |
| Bloc "Capteur photosensible"
|
Ce bloc permet d’interagir avec le capteur photosensible et ainsi déterminer la quantité de lumière reçue par le capteur |
| Bloc "Capteur sonore"
|
Ce bloc permet d’interagir avec le capteur sonore et ainsi déterminer l’intensité du son qui arrive sur ce capteur. |
| Bloc "Capteur de contact"
|
Ce bloc 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"
|
Ce bloc vous permet d’effectuer une comparaison logique dans votre programme. |
| Bloc "Maths"
|
Ce bloc permet de réaliser des calculs élémentaires comme l’addition, la soustraction, la multiplication et la division. |
| Bloc "Réception de message Bluetooth"
|
Ce bloc 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"
|
Ce bloc permet de gérer un chronomètre |
| Bloc "Variable"
|
Ce bloc, très utile, vous permet de créer et manipuler des variables dans votre programme. |
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 :
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 :
Dans la liste de blocs « Avancé », faîtes glisser le bloc « Nombre en texte » comme le présente l’étape suivante.
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 :
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.
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 :
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 :
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és.
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 lu 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. |
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.
| NXTLineReader Capteur suiveur de ligne pour Lego Mindstorms NXT |
|
|
solution ecommerce