jeudi 10 février 2011

Installer LeJOS NXJ 8.5beta sous Linux Ubuntu 10.04 LTS (Lynx Lucide) via usb/bluetooth

Cette page décrit les opérations qu'il m'a fallu réaliser pour flasher ma brique lego NXT afin d'installer le firmware LEJOS à partir d'un système Linux Ubuntu 10.04. Le cas échant je précise les droits qu'il faut pour réaliser les opérations.

Attention bien que je décrive complètement toutes les opérations, il est important de consulter avant tout la page officielle
Outre la page officielle et mon expérience personnelle, cette page s'appuie aussi sur le site suivant
Les pages précédentes contiennent des éléments pour l'installation du plugin Eclipse. Voir aussi les liens suivant

Prérequis
 (requiert des droits sudo ou root pour installer)

1. Avoir un Java Development Kit (JDK) 1.5 ou 1.6 installé sur sa machine et non un Java Runtime Environment (JRE) qui n'est pas suffisant car ne vous permet pas de compiler des programmes java. Conseille le 1.6 pour certains exemples et testé seulement sur le JDK sun.
aptitude install sun-java6-jdk
Mettre à jour ces variables d'environnement PATH pour pointer vers le répertoire JDK bin (Setting up environment variables) ainsi que JAVA_HOME où se trouve installé le JDK

2. Le programme ant permettra la compilation de LeJOS (il peut être rapproché de make)
aptitude install ant
3. Afin de pouvoir compiler sans souci et utiliser les connexions usb et bluetooth, assurez vous aussi d'avoir les dépendances (principalement des driver/pilotes) suivantes installées
aptitude install libusb libusb-dev bluez libbluetooth-dev
A noter que 
Installation de Lejos
(ce qui suit peut se réaliser dans un simple compte utilisateur)

tar -xvzf lejos_NXJ_0_8_5beta.tar.gz
vous obtenez le répertoire lejos_nxj

2. Donnez les droits d'exécution au sous répertoire bin 
cd lejos_nxj 
chmod a+x bin
3. Puis compilez 
cd build
ant 
Cette opération copie deux drivers créés, libjbluez.so et libjlibnxt.so, dans le répertoire lejos_nxj/bin. D'autres résultats de compilation peuvent se trouver les répertoires lejos_nxj_native/src (jbluez libnxt  nxtvm).

4. Après compilation il vous faut déclarer et mettre à jour quelques variables d'environnement (si vous êtes toujours dans le répertoire lejos_nxj et que vous ne travaillerez que dans ce terminal jusqu'à sa fermeture
export NXJ_HOME=`pwd`
export PATH=${NXJ_HOME}/bin:${PATH}
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH":${NXJ_HOME}/bin
Pour péreniser la modification, éditer votre fichier ~/.bashrc et rajouter les lignes ci-dessus en changeant la valeur de NXJ_HOME par la valeur réelle du chemin. Désormais ces variables seront définies pour tout nouveau terminal ouvert. N'oubliez pas de faire un source ~/.bashrc si vous souhaitez bénéficier de ces modifications dans le terminal où vous venez de faire ces manipulations.

5. L'étape suivante consiste à flasher votre brique lego, en tapant dans un terminal
nxjflash
Si vous obtenez le message suivant

VM file:/.../lejos_nxj/bin/lejos_nxt_rom.bin
Menu file: /.../lejos_nxj/bin/StartUpText.bin
VM size: 52752 bytes.
Menu size: 38016 bytes.
Total image size 91008/94208 bytes.
Locating device in firmware update mode.
No devices in firmware update mode were found.
Searching for other NXT devices.
No NXT found. Please check that the device is turned on and connected.
Alors branchez le cable usb de votre machine à la brique...

Si vous obtenez l'erreur suivante
Error Cannot load a comm driver
Alors réinitaliser la brique manuellement en pressant le bouton caché dans un des trous d'emboitement à l'arrière en haut à gauche de la brique. Puis tapez la commande pendant le toc répétitif.

Si maintenant vous obtenez l'erreur suivante
Error: Failed to open %%NXT-SAMBA%% in SAMBA mode
Alors réalisez l'opération en tant que root (n'oubliez pas de déclarer les variables d'environnement).

Si la manipulation en tant que root ne fonctionne pas
Alors, avec l'aide du post suivant http://ubuntuforums.org/showthread.php?t=1123633, réalisez en tant que root les commandes suivantes
rmmod cdc_acm
nxjflash
modprobe -i cdc_acm
Vous obtiendrez un beau Lejos sur votre brique si tout a bien fonctionné.

Tester votre installation

Rajouter les lignes suivantes à la suite de votre ~/.bashrc en réalisant les opérations de pérénisation décrites ci-dessus.
export CLASSPATH=${NXJ_HOME}/lib/classes.jar:${NXJ_HOME}/lib/jtools.jar:${NXJ_HOME}/lib/pccomm.jar:${NXJ_HOME}/lib/pctools.jar:${CLASSPATH}
export CLASSPATH=${NXJ_HOME}/3rdparty/lib/bcel.jar:${NXJ_HOME}/3rdparty/lib/bluecove-gpl.jar:${NXJ_HOME}/3rdparty/lib/bluecove.jar:${NXJ_HOME}/3rdparty/lib/commons-cli.jar:${NXJ_HOME}/3rdparty/lib/cpptasks.jar:${CLASSPATH}
Compilez un programme (ici le programme View qui permet de tester les moteurs et les capteurs via une interaction directe sur la brique) avec
cd projects/samples/View 
nxjc View.java 
Téléchargez le programme compilé sur la brique avec
nxj -r View 
Si vous obtenez le message suivant via une connexion usb (en supposant que le bluetooth n'est pas activé)
leJOS NXJ> Linking...
leJOS NXJ> Uploading...
leJOS NXJ> Searching for any NXT using Bluetooth inquiry
BlueCove version 2.1.0 on bluez
leJOS NXJ> Failed to find any NXTs
leJOS NXJ> Failed to connect to any NXT
an error occurred: No NXT found - is it switched on and plugged in (for USB)?
BlueCove stack shutdown completed
Alors recommencer la manipulation en tant que root...
ou bien rajouter des un groupe qui a des droits sur le port usb (la doc officielle indique comment)
Il vous faudra recompiler le programme en tant que root (donner les droits d'écriture/exécution sur le répertoire et fichiers).

Via bluetooth, après avoir

  • installé les paquets bluez et libbluetooth-dev
  • compilé lego_nxt
  • déclaré les variables d'environnement ci-dessus
  • et allumé et activé le bluetooth > power et la visibility sur la brique

Cela (nxjc et nxj) fonctionnent en simple utilisateur...
... lors de l'upload avec nxj il faudra indiquer le pin (défini dans le menu bluetooth de la brique, par défaut 1234)
Et voilà

Pour utiliser le programme 


Sur la brique
  • Bouton orange pour allumer et sélectionner une option qui s'affiche sur l'écran (descend dans l'arborescence)
  • les flèches de gauche et de droite pour naviguer dans le menu
  • le bouton rectangulaire pour revenir en arrière (remonter dans l'arborescence) et éteindre si vous êtes au niveau le plus haut
Dans Files vous verrez les programmes disponibles sur la brique (il y en a 1 qui s'appelle "view"), il peut être mis en "default"

Quand vous exécutez "view", vous pourrez tester les sensors et les motors. Allez y ca marche !

Le mode bluetooth est à activer si besoin est !


Le volume du son peut être fixé et coupé.

Ne toucher à qu'il y a dans system si seulement vous savez ce que vous faites !!!

D'autres programmes
http://lejos.sourceforge.net/nxt/nxj/tutorial/WheeledVehicles/WheeledVehicles.htm

Aucun commentaire:

Enregistrer un commentaire