Dando soporte a Ubuntu para comunicarse por USB (NXT) / TorreUSB IR (RIS 2.0), Mindstorm Lego
Retomando los proyectos sobre robótica, usando el Mindstorm de Lego (
Sitio Oficial ), se necesita una manera para poder comunicarse con los bloques desde la PC, y en mi caso dede Linux.
En mi máquina (La TX1000, que está enferma aún

), se podia conectarse por bluetooth, en esta nueva no dispongo de un bluetooth, por lo que no queda otra que hacerlo cableado, por USB para el NXT, la nueva versión del RIS y mediante la torre usb por IR ( Infrarojo ) en el RIS 2.0.
Me he basado en un procedimiento hecho por
Trevor Creech, pero he hecho algunas modificaciones

, vamos a configurar nuestra torre para poder comunicarnos con el bloque.
Configurando la Torre de Comunicaciones IR en Ubuntu
Nota: Asumiremos realizar el trabajo siendo root en tu sistema.
0. Este procedimiento, lo he realizado en Ubuntu 8.10.
1. Conecta a tu maquina la torre a un USB libre.
2. mkdir /dev/usb ( Nota: En mi caso no necesite crear el directorio, ya existia

).
3. ln -s /dev/usb/legousbtower0 /dev/usb/lego0 (Nota: en mi caso tuve que eliminar /dev/usb/usb0, ya que existia y era un directorio.)
4. chmod 666 /dev/usb/lego0.
5. echo test > /dev/usb/lego0 ( Nota: observa la luz verde que parpadea en la Torre IR, si es así, todo esta correcto.

.
6. Descarga la última version de los fuentes de NQC, desde el
sitio oficial. (Nota: En mi caso, descarge la Version NQC 3.1r6 ).
7. Lo descargas en un directorio de tu preferencia, para rapida referencia, en mi caso /home/coolsnow/Documentos/lego/nqc, y lo descomprimo dentro. (tar -xvzf nqc-*).
8. Edito el archivo Makefile:
8.1 Elimino el soporte de USB para la torre, busco la linea siguiente,
USBOBJ = rcxlib/RCX_USBTowerPipe_linux.o
8.2 Dado que la torre es USB, cambiaré el puerto por defecto, para que apunte al USB

, buscando la variable DEFAULT_SERIAL_NAME y asignarle el usb, así:
DEFAULT_SERIAL_NAME = "/dev/usb/lego0" ( Nota: es el puerto que acabamos de configurar

).
9. mkdir rcxlib/LegoUSB/
10. cd rcxlib/LegoUSB/
11. wget http://legousb.cvs.sourceforge.net/*checkout*/legousb/LegoUSB/drivers/linux/include/legousbtower.h
12 cd ../../ (estamos en la carpeta de nqc

)
13. make
14. make install
15. export RCX_PORT=usb ( Nota: lo puedes agregar en tu .bashrc, para que no tengas que exporta cada vez que lo necesites. )
16. intenta haciendo esta prueba: nqc -msg 7 (enviar un mensaje por el puerto IR

), revisa las luces verdes, en donde esta recibiendo los datos.
17. Si lo del punto anterior te funciona, entonces ya pudes usar el NQC en tu bloque

y tu maquina. Ahora solo hay que instalar el firmware del RIS en el bloque, inserta el CD del Robotic Invention System, y ejecuta el siguiente comando: nqc -firmware /media/cdrom/firm/firm0309.lgo
18. Descarga ahora tus programas, ejemplo el slot 1, nqc -d programa.nqc.
Si todo ha salido correctamente, ya tienes lo necesario para programar en NQC, para darle vida a tu bloque.
Configurando la Comunicacion por cable USB con el NXT
Ahora vamos a configurar lo necesario para poder hablarle al NXT, el bloque dispone de coneccion Bluetooth, pero en mi máquina actual no dispongo de dicha maravilla, por lo que lo haremos mediante el cable suminstrado por el kit. Un cable USB.
EL NTX, podes ver sus caractéristicas desde su
sitio principal, lo que haremos es usar un software para poder comunicarnos con el bloque, veamos:
Buscando en el tio Google, damos con
esta completa guia de como poder programar el Lego Mindstorm NXT desde GNU/Linux, Ubuntu en mi caso.
Descargamos el programa
t2nm de Pascal Raymond, y lo instalamos:
#tar -xvzf t2n-0.2.tgz
#mv mv t2n-0.2/t2n /usr/bin/
#mv t2n-0.2/udev/70-lego.rules /etc/udev/rules.d/
Ahora conectamos el bloque a la computadora desde el USB, esperamos que en la pantalla lcd aparezca la palabra USB.
Al estar conectada la unidad, podemos revisar el equipo usb conectado, usando lsusb:
#lsusb
...
Bus 001 Device 005: ID 0694:0002 Lego Group
Para obtener datos del bloque podemos ejecutar:
coolsnow@nabuconosor:~/Documentos/lego$ t2n -i
#### NXT INFOS ###############
protocol version=1.124 firmware version=1.1
NXT Name: NXT1
Blutooth address: xx:xx:xx:xx:xx:xx ( por seguridad, no compartire mi mac address del bluetooth del bloque

Blutooth signal: 0 (esta apagado el bluetooth

)
Free user flash: 54576
Esto nos indica que nos estamos comunicando con el bloque desde Linux

. Si desearamos enviar algun programa al bloque, hariamos:
# t2n -put programa1.rxe
Para ejecutarlosólo debemos navegar por la pantalla de nuestro NXT para ejecutar nuestro programa, que estará en My Files -> Software files -> programa1
La ayuda de la aplicación para más detalles:
coolsnow@nabuconosor:~/Documentos/lego$ t2n -help
t2n version 0.2
usage: t2n [options] | t2n -help
recognized options:
-b : check battery level
-i : print nxt info
-ls : list files
-put
: upload file
-get : download file
-v : set verbose mode
-vv : even more verbose
-vvv : gossip
-help : print help and return
-version : print version and return
Como revisión general, vemos los dispositivos USB conectados en nuestro equipo:
#lsusb
...
Bus 001 Device 005: ID 0694:0002 Lego Group
Bus 001 Device 003: ID 0694:0001 Lego Group Mindstorms Tower
Con esto dejamos nuestros bloques reconocidos y listos para la etapa de desarrollo y creación de "robots", para el aprendizaje y exploracón de los RIS (Robotic Invetion System) de Lego.
Felices Hacking!!.