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.

viernes, 15 de julio de 2011

Demostración final

Aqui encontraras la documentacion para usar el programa.

https://rapidshare.com/files/775793383/Documentacion_de_usuario.pdf

y los codigo fuente del progama

https://rapidshare.com/files/860542826/proyecto.zip

Sistemas distribuidos

Sistemas distribuidos


Objetivo: Planear la distribución de su software (en el sentido de sistemas distribuidos).


Contenido esperado de la entrada: Redacción donde indiquen arquitecturas, tecnologías y/o middleware que pueden utilizar para hacer que su software sea distribuido. Es válido utilizar imágenes para la explicación.

Pruebas unitarias

Pruebas unitarias


Objetivo: Correr casos de prueba en su software.


Contenido esperado de la entrada: Reporte de resultados de pruebas (pueden poner el resultado que les arrojó la herramienta de pruebas).

Interfaz gráfica

Interfaz gráfica


Objetivo: Codificar la interfaz gráfica de su software.


Contenido esperado de la entrada: Capturas de pantalla con interfaz gráfica (real) de su software.

Que tal tratare de explicar que es lo que hace cada pantalla y como funciona.


Ventana Principal - Aqui nos mustra 2 botones el cual nos permite hacer, como su nombre lo indica, las acciones correspondientes. Agregar Archivo, abre un nueva ventana para seleccionar el archivo y Ver Archivos, te lleba a vizualizador que es donde nosotros podemos ver lo que esta contenido.


Agregar Archivo - En esta seccion tu proporcionaras los datos de tu archivo y decidiras si lo quieres guardar o concelar. Al dar click en el boton guardar con los campos vacios, no agregara el archivo y te mostrara un mensaje de Vuelve a intentar. El JFielText es para indicarle el nombre que nosotros le queremos dar al archivo, no necesariamente tiene que ser el mismo, mas bien un nombre para recordarlo.



Al hacer click en el boton Examinar, aparecera una pantalla similar a la de abajo, en donde tu podras elegir tu archivo, entre cualquier directorio, esto lo hise gracias a una libreria llamada JFileChooser



Visualizador, contiene los botones, siguientes lo cual su accion es ir hacia adelante o atras entre el total de archivos, elimiar el archivo en el que te encuentras, eliminar el archivo.

Boton Suguiente - avanza entre el total de archivos



Eliminar un arhivo permite borrar el archivo seleccionado de la base de datos, el problema con este boton es que al dar click si lo elimina, pero el rastro queda en visualizador, entonces cuando "vualves a pasar por donde estaba tu archivo eliminado" te muestra un error (lo cual no deberia hacer) y despues no te permita hacer otra cosa.

y el boton ver, me falto hacerlo funcionar bien, el objetivo era que al hacer tu click en el, te abriera el pdf como si lo abrieras desde cualquier otro lado, estaba leyendo pero no pude implemtarlo.



No se preocupen por la capacidad que tiene este programa, pieso terminarlo para vacaciones, ya con menos presiones.

Eventos, excepciones y errores

Todos los try-catch siguientes, estan relaccionados con la base de datos, cada uno ellos interectua con la base de datos, para si hubo un error te lo muestre en el momento preciso y no despues.



try.catch para obtener el id del archivo posicionado


try-catch para conectar a la base de datos

try-catch para inizialisar el arreglo


try-catch para asegurar que nos podemos mover entre los archivos, ya estando dentro de visualizador



El filtro que se encarga para solo escojer "pdf o text"