{{tag>robotique science éducation logiciels}} ---- ====== Lego MindStorms NXT sur Ubuntu ====== Grâce à 2 petits programmes, il est possible de connecter le dernier robot programmable de Lego à un système d'exploitation Ubuntu. Avec l'un vous compilez le programme que vous avez écrit(en langage [[http://bricxcc.sourceforge.net/nbc/|NXC]]), avec l'autre, vous le transférez. ===== Programmes nécessaires ===== * NBC Beta Releases(1.0.1 b35): disponible [[http://sourceforge.net/project/downloading.php?groupname=bricxcc&filename=nbc-1.0.1.b35.tgz|ici]] * Talk 2 NXT: disponible [[http://www-verimag.imag.fr/~raymond/edu/lego/t2n/t2n-0.2.tgz|ici]] ===== Installation ===== Téléchargez les deux archives sur le bureau. Ouvrez un terminal et entrez les commandes suivantes:\\ $ cd Bureau $ ls nbc-1.0.1.b35.tgz t2n-0.2.tgz $ tar zxf nbc-1.0.1.b35.tgz $ tar zxf t2n-0.2.tgz $ ls nbc-1.0.1.b35.tgz nxt t2n-0.2 t2n-0.2.tgz $ sudo cp 'nxt/nbc' '/usr/bin' $ sudo cp 't2n-0.2/t2n' '/usr/bin' Il se peut que nbc renvoie une erreur lors de sa première exécution. La cause : le programme n'est pas reconnu en tant qu'exécutable. Entrez alors cette commande: $ sudo chmod a+rx '/usr/bin/nbc' ===== Un petit test (Optionnel) ===== Ce test est tout à fait facultatif mais il vous garantira le fonctionnement des 2 programmes et vous apprendra à les utiliser. Veillez à garder votre terminal ouvert pendant toute la durée du test.\\ ==== Écriture du programme ==== Ouvrez un éditeur de texte et collez ces lignes de code: // -*- coding: utf-8 -*- // Exemple NXC: Hello // In the latest versions of nbc this line is implicit #include "NXCDefs.h" task main() { // Write the text on the LCD TextOut(20, LCD_LINE3, "Hello world!"); // Wait 3 seconds Wait(3000); } Enregistrez ce fichier sur le bureau sous le nom **hello.nxc**. ==== Compilation ==== Toujours dans votre terminal: $ cd Bureau $ ls hello.nxc $ nbc hello.nxc -O=hello.rxe //c'est un O pas un 0 $ ls hello.nxc hello.rxe ==== Détection du NXT via l'USB ==== Dans votre terminal, entrez la commande: lsusb Dans le rapport généré, il devrait y avoir une ligne ressemblant à celle-ci: Bus 002 Device 003: ID 0694:0002 Lego Group Cette ligne vous indique que le NXT est bien **branché**, **allumé** et **reconnu** par le système. ==== Transfert du programme ==== Pour savoir si le robot est bien connecté, tapez la commande qui permet de récupérer les informations à son sujet: $ t2n -i Cette commande induit une erreur au niveau de la configuration USB. Passez les 2 étapes suivantes si ce n'est pas le cas. === Résolution de l'erreur === Copiez en tant que super-utilisateur le fichier **70-lego.rules** présent dans le dossier **t2n-0.0/udev/** dans **/etc/udev/rules.d**. $ sudo cp '/home/votre_login/Bureau/t2n-0.2/udev/70-lego.rules' '/etc/udev/rules.d/' Après avoir copié ce fichier, tapez la commande suivante ou redémarrez. $ sudo udevadm trigger Enfin, retentez la commande ''t2n -i'' et si l'erreur est toujours présente, passez à l'autre solution. Elle est cependant plus contraignante que celle-ci. === Autre solution === Loguez vous en root. $ sudo -i password: $ === Suite === Si tout fonctionne, quand vous avez retapé la commande ''t2n -i'', les informations du NXT s'affichent et indiquent que tout est opérationnel. Vous pouvez entamer le transfert. #### NXT INFOS ############### protocol version=1.124 firmware version=1.1 NXT Name: NXT Blutooth address: XX:XX:XX:XX:XX:XX Blutooth signal: 0 Free user flash: 57116 Pour transférer le programme, placez-vous dans le répertoire où vous avez enregistré votre fichier compilé **hello.rxe** et tapez la commande de transfert. $ cd Bureau (ou /home/votre_login/Bureau quand vous êtes en root) $ t2n -put hello.rxe ==== Sur le NXT ==== Débranchez le robot, laissez-le allumé et situez-vous dans son répertoire **My Files/Software Files/** et démarrez votre programme **hello**. ===== Remerciements ===== [[http://forum.ubuntu-fr.org/profile.php?id=5840|Zergy]] pour son aide qui a poussé à la création de cette documentation. =) ---- --- //[[Utilisateurs:MiCrOsCo-PuCe]] Le 05/11/2007, à 19:42//