lunes, 4 de junio de 2007

Fonera Robot

Este proyecto consistió en hacer un robot con Linux embebido a muy bajo costo, pensándolo bien, creo que me ha salido 0 (cero) euros :-) , no tengo ningún cargo de conciencia con respecto al haber utilizado una fonera para algo que no era para lo que la regalaban los de FON, en primer lugar si te regalan algo puedes hacer lo que te plazca, segundo, indirectamente le hecho publicidad , al menos gente que no conocia la empresa ahora la conoce.
Bueno no me extenderé sobre si Fon violo o no la GPL al distribuir el software capado y que no se podía compilar e instalar el software de manera independiente. Lo que si contare rapidamente es que Fon existe gracias a los hacker de Seattle wireless y su lucha contra Cisco , para que liberaran el software del Linksys wrt54 (descubrieron tenia Linux internamente), gracias a eso se inicio el proyecto OpenWrt , con que funciona el software de Fon.

Bien centrándome en el FonBot, comentar que funciona con 2 motores paso a paso, que si bien no tienen velocidad , si precisión, que era para lo que originalmente habia creado la base movil, ya que lleva un sistema para subir y bajar un marcador, de manera que pueda dibujar lineas en el suelo. Una replicación de los trabajos pioneros del MIT en robótica movil y educativa de los años 60, con su tortuga logo.
Puede ser controlado manualmente desde su pagina web o programar movimientos autónomos con scripts desde una consola SSH.

Los comandos de movimiento del FonBot son:

Girar derecha GD [grados]
Girar izquierda GI [grados]
Avanzar AV [cm]
Atras AT [cm]
Subir marcador LAPIZ 1
Bajar Marcador LAPIZ 0

He querido respetar la esencia del lenguaje LOGO [1]. Deje la tarea inconclusa de portar el LOGO original al procesador MIPS de la fonera, y directamente implemente algo básico sólo el proceso de movimientos y un sistema de odometria , para que el bicho sepa donde se encuentra.

Estos movimientos son pasados como parámetros a una aplicación que procesa estos (uso como compilador el GCC con el IDE Anjuta desde Ubuntu, y luego compilo para la fonera por linea de comando, así me ahorra tiempo y dolores de cabeza ), la he llamado MOVER (ya se, muy original), así escribiendo desde la consola ./MOVER - GD 20 , por ejemplo gira a la derecha 20 grados. También se pude pasar como parámetro un archivo de recorrido, el cual consiste en una lista de comandos los cuales van siendo leídos uno a uno de manera secuencial.

Otra manera de mover el robot de manera autónoma es utilizando la aplicación BUSCAR donde utilizo algoritmos de IA para búsqueda de caminos, basando sus decisiones en un mapa del espacio 2D , el cual es una matriz en un archivo formada por símbolos " " y "*", según sea una posición ocupable o no por el robot, la posición inicial y final sera marcada en el archivo como una "f" . La idea es luego con una cámara IP tomar imagenes zenitales y con la misma fonera leer la imagen e identificar donde esta, su ángulo, y generar el archivo de mapa según se detecten objetos en el suelo.

En cuanto al sistema de control es por el puerto serie con la configuración original de la fonera , 9600 baudios y sin desactivar el acceso a la consola por el puerto serie. He utilizado un 16f628,un uln2008 para los motores, y un TIP 29 para el solenoide del marcador. El Pic esta programado en CCS , y aquí es donde viene lo original y que para nada es el método que debería utilizarse, y que haría que en la facultad te pongan una mala nota :-), pero quería experimentar algo distinto, al esquema clasico en comunicación serie, donde un lado es el CPU y el otro un dispositivo de E/S, lo que he hecho es que el microcontrolador escribe comandos directamente a la fonera, osea el PIC escribe comandos Linux !!! para por ejemplo informarle que el movimiento de los motores ha concluido, y para pasar el estado de variables del PIC ( interesante para leer los ADC ) y luego "montarlo" como un archivo en el sistema de ficheros, asi se puede acceder desde el OpenWrt de manera transparente a estos datos y sin tener que escribir una linea de codigo en la fonera.

Continuara...


5 comentarios:

Alejandro Pustowka dijo...

Hola, está excelente el trabajo que has realizado, pues te comento que en la Universidad del Valle en Cali Colombia, estamos trabajando en un proyecto bastante similar!! Apenas estamos actualizando un blog con la información (te doy la dir para que nos visites http://www.nxbot.blogspot.com/), pero te cuento de manera rápida de que se trata, para que veas las similitudes:
Estamos construyendo un laboratorio de robótica cooperativa, y pues nos hemos puesto a la tarea de construir robots que sean robustos, y que a su vez puedan interactuar con dos robots pioneer que tenemos. Bueno, pues decidimos dotar a los robots cada uno con un router WRTSL54GS (trae puerto usb, le podríamos montar la camara web), montando el openwrt! Además nos pusimos a la tarea de crosscompilar el player, no se si lo hayas escuchado, te anexo también la página http://playerstage.sourceforge.net/
. Entonces, hasta el momento tenemos corriendo el player sobre el openwrt, y hemos creado un sistema microcontrolado el cual controla los motores (que son servos futaba en nuestro caso) y 5 sensores IR, asi como 5 bumpers... en fin, te invito a que visites el blog, es excelente tener a alguien que este trabajando en un proyecto tan parecido al nuestro, podemos intercambiar experiencias!

Unknown dijo...

Compañero!
Ya tengo mi Fonera así que en breve empezaré a seguir vuestros pasos!
Mientras tanto voy leyendo tu blog a menudo junto con el de Boops esperando que publiquéis mas cosas interesantes sobre Foneras!

JuaNLu dijo...

Hola, muy interesante tu trabajo, tengo una dud sobre la alimentación que tiene el robot, en especial que baterías has utilizado para alimentar la fonera asi como qué autonomía tiene. Muchas gracias y de nuevo buen trabajo.

velaeri dijo...

hola muy buenas,
somos un grupo de estudiantes de CFGS de administracion de sistemas informaticos.
tenemos que hacer el proyecto de sistesis del curso.

habiamos decidido en realizar un proyecto que necesariamente utilizamos una foneras.

pero hemos encotrado unos problemas a la hora de subir soft a la Fon.

mi pregunta es que ¿como conseguiste subir el soft modificado para que funcionara?

sabemos que necesitamos un conversor a DB9 para lograrlo pero lo hemos fabricado nosotros (por temas economicos y por temas de que quedará mejor en la presentacion del proyecto) pero no logramos que funcione, no conseguimos conectarnos por SSH.

podrías darnos unas pequeñas indicaciones para poder lograrlo

Creation Factory dijo...

I have a similiar project too:

http://creationfactory.blogspot.com

Luis Teixeira