Al hilo de un ejercicio que hemos hecho en la asignatura de programación, y los problemas para comprender por qué creamos los programas de este modo, se me ha ocurrido crear físicamente un pequeño rover basado en este robot en 5 minutos.
Resulta que al ladrillo de LEGO Mindstorms NXT que tengo se le puede reemplazar el firmware por otro llamado leJOS NXJ, que permite programar el sistema usando código escrito en Java.
Instalación del software necesario
Trabajo sobre macOS y antes de empezar he tenido que hacer algunos cambios:
- Instalar Java 6 para macOS. Algunos de los componentes necesitan una máquina virtual Java de 32 bits, así que no queda otra que instalar la versión antigua.
- Descargar NXJ y descomprimirlo.
- Crear algunas entradas en el fichero
~/.profile
o~/.bash_profile
:
export NXJ_HOME="<RUTA A LA CARPETA DESCOMPRIMIDA DE NXJ>"
export LEJOS_NXT_JAVA_HOME=$(/usr/libexec/java_home -v1.6)
export PATH="$NXJ_HOME/bin:$PATH"
- Instalar el controlador NXT Fantom desde la web de LEGO, para conectar por USB al NXT.
Actualización del firmware
Advertencia: este proceso sobreescribe el firmware original de LEGO y, si algo va mal, os podéis quedar con un NXT inutilizado. Seguid las instrucciones del tutorial al pie de la letra, NO me hago responsable de lo que ocurra.
Dicho esto, el siguiente paso es instalar el firmware de LeJOS mediante el comando nxjflash
.
Construyendo el rover
Siguiendo las instrucciones y con algunos extras propios, ha quedado así:
Básicamente disponemos de dos motores, conectados en A y B, y un sensor de ultrasonidos, conectado en S1.
¡Hola mundo!
Primera prueba, siguiendo el tutorial:
import lejos.nxt.Button;
public class HolaMundo {
public static void main (String[] args) {
System.out.println("Hola mundo");
Button.waitForAnyPress();
}
}
Compilar y ejecutar el programa
Para compilar los programas, usamos nxjc
y para enlazarlos y ejecutarlos en el ladrillo conectado por USB, nxj
:
$ nxjc HolaMundo.java
$ nxj -r -o HolaMundo.nxj HolaMundo
En la documentación hay más detalles y opciones.
Moviendo el rover
En este repositorio de GitHub están el resto de los ejemplos, junto con un script para compilarlos cómodamente.
¿Y ahora?
Todo lo necesario para hacer programas más complejos está explicado en el tutorial de NXJ.