jueves, 5 de enero de 2012

Instalar Lejos en LinuX

Que tal, como primera entrada en el Taller de Prog. Orientada a Obj. es necesario que les muestre como instalar las herramientas necesarias; así que sin tantas palabras, empecemos....

1.-Descargamos lo necesario
  • Java-jdk
    • Escribimos en la terminal: sudo apt-get install openjdk-6-jdk
  • Controladores ( necesitamos 4 )
    • Abrimos la synaptic e instalamos: libusb-0.-4, libusb-dev, libbluetooth3, libbluetooth-dev
  • lejos

2.- "Jugar" con el archivo descargado( lejos_NXJ_0_9_0beta.tar.gz )

  • Lo descomprimimos, desde la terminal: tar xvzf lejos_NXJ_0_9_0beta.tar.gz
  • Renombramos la carpeta lejos_nxj a lejos
    En la terminal: mv lejos_nxj lejos
  • Movemos la carpeta lejos a /usr/share/
    En la terminal: sudo mv lejos /usr/share/
  • Damos privilegios a la carpeta bin de lejos
    En la terminal: sudo chmod 777 /usr/share/lejos/bin --recursive

3.-Añadir las variables de entorno

  • Creamos un archivo llamado lejos.sh (puede tener cualquier nombre) en /etc/profile.d/, el cual le añadiremos la sig. lineas
    • "Siendo root podremos crear este tipo de archivos sin problemas"
    • En terminal: gedit /etc/profile.d/lejos.sh
    • #!/bin/bash
      export NXJ_HOME=/usr/share/lejos
      export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

      export PATH=/usr/share/lejos/bin:$PATH
      export PATH=/usr/lib/jvm/java-6-openjdk/bin:$PATH

      export CLASSPATH=/usr/share/lejos/lib/nxt/classes.jar:$CLASSPATH
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NXJ_HOME/bin
    • Chequen que las direcciones sean correctas y en caso de tener otra versión instalada de "java-jdk" modifiquen sus lineas

  • Cada vez que toquemos el archivo lejos.sh tenemos que compilarlo, para ello nos movemos a /usr/share/lejos/build/ y ejecutamos ant

Antes de avanzar al ultimo paso comprobamos que hasta aqui lo hemos hecho bien, para ello reiniciaremos la computadora y cuando ya este lista, compilaremos el primer programa para el NXT.

Primer programa:

import lejos.nxt.*;

public class HolaMundo {

public static void main(String[] args) {
LCD.drawString("Hola Mundo",3,4);
Button.waitForPress();
}

}

Compilarlo:

4.- Muy bien, ahora necesitamos añadir reglas udev para poder usar los puertos USB sin problemas.
  • "Siendo root podremos hacer lo siguiente sin problemas"
  • Creamos un grupo de usuarios, al que llamaremos lego:

    En la terminal: addgroup lego

    Después añadimos nuestro usuario al grupo lego:

    En la terminal: usermod -a -G lego nombre_usuario
    en mi caso:
    usermod -a -G lego osvaldo

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

    • En la terminal: gedit /etc/udev/rules.d/70-lego.rules
    • # Lego NXT
      BUS=="
      usb", SYSFS{idVendor}=="03eb", GROUP="lego", MODE="0660" /* Atmel */
      BUS=="
      usb", SYSFS{idVendor}=="0694", GROUP="lego", MODE="0660" /* Lego */
      BUS=="
      usb", SYSFS{idVendor}=="0a12", GROUP="lego", MODE="0660" /* Dongle */
  • 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 conectar nuestro robot a un puerto USB, encenderlo y ejecutar el comando:

  • a) En la terminal: /usr/share/lejos/bin/nxjflashg

  • b) Nos mostrara una ventana como la siguiente

  • c) Le damos "Start program"

  • d) Ok

  • e) Yes (formatera todo el NXT)
  • f) y esperamos
    • en caso de que nos marque "Bad news: An error has ocurred lejos.pc.comm.NXTCommException: Failed to open device in SAM-BA mode", bastara con reiniciar manualmente el NXT y volver al inciso "a"
  • Cuando termine nos preguntará que si queremos instalar otro NXT
    NO


Recuerdan que compilamos el archivo HolaMundo.java, bueno, ahora lo descargaremos al NXT y asi terminar con este tutorial.


Para usar Eclipse les recomiendo leer esta entrada(de la cual yo me he basado para hacer este tutorial), el cual les enseña como configurarlo para ahorrarnos mas tiempo. Saludos cualquier duda, ya saber que hacer.


REFERENCIAS

http://blog.electricbricks.com/es/2010/03/tutorial-java-lejos-lego-mindstorms-nxt-3/
http://robobyte.blogspot.com/2010/02/instalar-lejos-en-ubuntu-910.html
http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/GettingStartedLinux.htm

Entrada #1 - Diseño del Proyecto

Este es un mini-proyecto que les ayudara a entender lo conceptos básicos de POO y si estas comenzando con "legos NXJ", este blog te puede dar la orientación necesaria para empezar a trabajar con tus propios proyectos.

A lo que vamos:

Idea General:
Desarrollaremos un "carro inteligente" el cual sea capaz de estacionarse solo, entre 2 objetos. De lo importante a identificar es en que lugares el carro puede estacionarse y en cuales no. La estructura del carro...tiene que ser la mas parecida a un auto real, para que los resultados sean los mas precisos.

Modo de Funcionar:
El NXT estará conectado a 2 motores y 2 sensores ultrasónicos.
  • 1 motor se encargada de darle la dirección al carro (izquierda o derecha).
  • 1 motor sera el encargado de avanzar hacia adelante o atrás.
  • Un sensor se colocara en la parte trasera del auto, para no chocar, mientras el otro se pondrá en una lateral, para cuando el sensor detecte la distancia mínima, se dirá que el auto quedo estacionado.



Idea vaga del prototipo del carro.