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...