Instalación de LeJOS en Linux

lejoslogoEl proceso de instalación de LeJOS en Linux es algo complicado (la gente que se haya pegado con cualquier plataforma de Linux entenderá el porqué), pero sin embargo lleva menos tiempo que su instalación en Windows. En este artículo trataré de explicar paso a paso la instalación de LeJOS y todos los componentes necesarios, así como finalmente hacer un pequeño programa y lograr subirlo al NXT y que funcione.

Antes de empezar con la instalación os recomiendo que trabajéis como root, ya que os ahorrará problemas. Si trabajáis como un usuario normal tendréis que usar el comando sudo para la ejecución de la mayoria de comandos que vienen en este artículo, así como para la creación de ciertos archivos y carpetas.

Instalación de Java

Puesto que LeJOS se basa en Java, lo primero que necesitaremos descargarnos es el JDK (Java Development Kit). Este lo podemos encontrar en la siguiente dirección:

Descargas de Java Sun

El JDK incluye todo lo que necesitamos. La instalación depende de la plataforma de Linux (por ejemplo en Ubuntu nos lo podemos descargar e instalar desde Sistema -> Administración -> Gestor de Paquetes Synaptic), pero en cualquier caso las instrucciones de instalación están en la misma página de Java. Es posible que necesitemos crear y exportar una variable de entorno indicando el emplazamiento de la instalación de Java, para ello seguir las instrucciones en la sección de instalación del LeJOS.

Linux-2
El Gestor de Paquetes Synaptic es de gran utilidad a la hora de instalar cualquier tipo de paquete

Instalación de LeJOS

Una vez instalado todo esto necesitaremos el software de LeJOS, que podéis encontrar en la sección de descargas de la página de LeJOS:

Descargas de LeJOS

Elegís Linux/Mac OSX leJOS NXJ, y os lo descargáis. Una vez descargado hay que descomprimirlo, renombrar la carpeta como lejos y moverla a /opt, de modo que la dirección quede /opt/lejos/.

Linux-1

Para poder usar la conexión USB necesitaremos descargarnos los paquetes libusb-0.1-4 y libusb-dev, así como los paquetes libbluetooth3 y libbluetooth-dev para el uso del bluetooth. Podemos tanto descargarlas con el Gestor de Paquetes Synaptic si estamos en Ubuntu, como instalarlos directamente con el comando apt-get install:

apt-get install libusb-0.1-4 libusb-dev libbluetooth3 libbluetooth-dev

Ahora añadimos las variables de entorno de las nuevas librerías para todos los usuarios (incluyendo las de Java comentadas anteriormente). Para ello crearemos un script de shell en la carpeta /etc/profile.d/ llamado lejos.sh (realmente puede tener cualquier nombre), y le añadimos las siguientes líneas:

#!/bin/bash

export NXJ_HOME=”/opt/lejos”
export JAVA_HOME=”/usr/lib/jvm/java-6-sun-1.6.0.15″ //aquí debeís escribir la carpeta donde tengáis instalado Java, que por defecto será algo parecido a esto.
export PATH=$PATH:$NXJ_HOME/bin:$JAVA_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NXJ_HOME/bin

Linux-3
Siendo root podremos crear este tipo de archivos sin problemas

No os olvidéis de compilar la librería. Abrir una terminal y escribir:

cd /opt/lejos/build

cuando estéis en dicha carpeta ejecutad:

ant

Ahora necesitamos crear un grupo de usuarios, al que llamaremos lego:

addgroup lego

Posteriormente añadimos nuestro usuario al grupo lego:

usermod -a lego nombre_usuario

Ahora necesitamos añadir reglas udev para poder usar los puertos USB sin problemas, para ello crearemos el archivo /etc/udev/rules.d/70-lego.rules y lo rellenaremos con las siguientes líneas:

# Lego NXT
BUS==”usb”, SYSFS{idVendor}==”03eb”, GROUP=”lego”, MODE=”0660″
BUS==”usb”, SYSFS{idVendor}==”0694″, GROUP=”lego”, MODE=”0660″

Hecho todo esto ya tenemos todo listo para usar LeJOS. Para empezar vamos a instalar el firmware de LeJOS en nuestro NXT. Para ello necesitaremos enganchar nuestro robot a un puerto USB, encenderlo y ejecutar el comando:

/opt/lejos/bin/nxjflashg

Y nos saldrá la siguiente pantalla:

Elige “Start Program” y saldrá:

Presiona OK, y te preguntará:

Si eliges “Yes” se borrarán todos los archivo en el NXT. Es recomendable hacer esto para que los archivos antiguos no interfieran, por tanto es importante que lo tengáis todo guardado en el ordenador. Posteriormente saldrá el siguiente mensaje:

Que viene a decir que os asegureis de que el NXT esta enchufado a la corriente mediante el alimentador (más que nada para que no se apage a mitad del proceso), de que esta enchufado por puerto USB, y por supuesto de que está encendido.

Cuando aceptéis se mostrará el siguiente cuadro, en el que se detalla el proceso de la instalación:

Cuando termine os preguntará que si queréis instalar otro NXT. Si no queréis hacer este proceso con ningún ladrillo NXT más, que será lo más habitual, hay que presionar “No”:

Ahora ya tenemos al NXT preparado para ejecutar programas de LeJOS. Cada vez que queráis ejecutar esta utilidad no tenéis más que volver a ejecutar el nxjflashg que se encontrará en la carpeta bin de la instalación de/opt/lejos/bin/.

Instalación de Eclipse y Programa de Prueba

Lo que necesitamos ahora es un entorno de programación para poder crear y compilar nuestros programas. Eclipse es un entorno de desarrollo integrado de código abierto (es gratis, freeware) multiplataforma (que permite el desarrollo de programas en diferentes lenguajes de programación, gracias a la capacidad de poder crear e instalar plugins (accesorios) para expandirlo), basado en Java. Voy a explicar como se haría con Eclipse ya que es bastante cómodo en general para trabajar. Lo primero es descargarse el Eclipse. Podéis instalarlo mediante el Gestor de Paquetes Synaptic si estáis en Ubuntu, o mediante el comando:

apt-get install eclipse

Una vez instalado lo encontraréis en Aplicaciones -> Programación, o el equivalente en otras plataformas Linux. Cuando lo ejecuteis por primera vez os pedirá que elijáis un “workspace” o carpeta de trabajo, elegir el más comodo para vosotros:

Linux-6

Una vez abierto clickear en la flecha grande dentro del circulo que pone Go to Workbench, y entraréis en lo que es la zona de trabajo. Ahora crearemos un pequeño programa de prueba. Le dais a File -> New -> Java Project y os saldrá un menú:

Linux-7

Ponerle de nombre HolaMundo y darle a Next. En la pestaña Libraries elegir Add External JARs… y elegir classes.jar que por defecto se encontrará en /opt/lejos/build/lib:

Linux-8

Por ultimo darle a Finish. Ahora necesitaremos crear una clase, para ello haremos click derecho encima de HolaMundo -> New -> Class. Tendremos que elegir un nombre para la clase, (HolaMundo por ejemplo), y marcaremos la casilla public static void main (String[] args)

Linux-9

Ahora ya tenemos la clase, por lo que podemos escribir el programa:

import lejos.nxt.*;

public class HolaMundo {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
LCD.drawString(“Hola Mundo”,3,4);
Button.waitForPress();
}

}

Una vez escrito necesitaremos guardarlo, compilarlo, para ello tendremos que decirle a Eclipse lo que necesita para compilar un programa de LeJOS, ya que el por si no lo sabe. En el menú Run -> External Tools -> External Tools Configuration vamos a crear una configuración para compilar y otra para linkar y subir el programa al NXT. En program elegimos New Launch Configuration, no saldrá un menú, en el que pondremos un nombre (LeJOS Compilacion para la de compilación y LeJOS Link para linkar). Además necesitáis poner la localización de los comandos de LeJOS para compilar (njxc) y linkar y subir (nxj), así como los parámetros que usan dichos comandos. Debería quedar de la siguiente forma:

Linux-4
Linux-5

Ahora podremos acceder a nuestras configuraciones de compilación y linkeo y upload. Compilar y posteriormente linkar y subir haciendo click en dichas configuraciones (recordad tener el NXT encendido y enganchado por USB cuando le deis click a LeJOS Upload):

HolaMundo6

Si no da error el NXT pitará y el programa estará ya subido. Para ejecutarlo solo necesitáis darle en el NXT a Files, seleccionar vuestro programa con el botón del centro y darle a Execute program. Finalmente podréis ver que en la pantalla os sale Hola Mundo, y en cuanto apretéis cualquier botón saldrá del programa (que es esactamente lo que hace el código escrito anteriormente). Espero que consigáis que os funcione la instalación. Si tenéis cualquier duda no dejéis de escribir en el foro.

Comentarios sobre el Firmware

Para poder trabajar con LeJOS en el ladrillo NXT es necesario sobreescribir el Firmware que trae de fábrica. Esto quiere decir que no podremos ejecutar aplicaciones programadas con el software gráfico NXT-G hasta que no volvamos a reescribir el firmware original que el ladrillo NXT traía cuando lo compramos. El proceso de vuelta para restituir el firmware original de LEGO es equivalente al proceso seguido cuando actualizamos el firmware. Este proceso está explicado en el artículo sobre el Firmware.

One thought on “Instalación de LeJOS en Linux

  1. Hay una errata en el comando usermod. Deberia ser

    # usermod -a -G lego nombre_usuario