{{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//