Robot FlatBot
Contenido
Introducción
El robot FlatBot es una plataforma móvil sencilla que ofrece una superficie plana lo suficientemente grande como para poder transportar objetos de hasta 3 o 4 kilos. Por eso es ideal para poner ruedas a un ordenador portátil. La plataforma lleva incorporada una electrónica que la hace autónoma, es decir, no necesita un PC para que se mueva, aunque si se dispone de éste se podrán hacer aplicaciones de alto nivel.
Descripción
FlaBot se puede considerar como una evolución de la mecánica del robot Skybot, ya que la electronica de control es compatible entre los dos robots al igual que el software.
La diferencia, como hemos dicho, reside en la estructura mecánica, que ahora permite transportar un PC encima como se puede ver en las fotos.
Mecánica
La estructura mecánica de la primera versión es de aluminio de 2mm.
Está hecha de una sola pieza, con cuatro pliegues en cada lateral para ganar consistencia y hacer que pueda soportar al menos 5 Kg, aunque estamos seguros de que aguantará muchos más, otra cosa es que los motores lo muevan.
Lleva dos motores de 8.1 kg-cm, 120rpm a 12v con sus ruedas tractoras de alta adherencia y dos ruedas locas de la marca ALEX 1-0217.
La estructura se ha hecho ampliable en el número de motores, puede llevar hasta 6, tres por cada lado, que podrán mover más de 20Kg sin problemas.
Planos del robot:
Hardware (POR ESCRIBIR)
La tarjeta de control del robot es la SkyControl cuyas principales características son:
- PIC16f876A
- Conexión por USB
- Driver L298B integrado para control de motores
- Conector I2C para conectar sensores
- Conector directo para tres servomecanismos
Configuración de los jumpers:
Enlaces directos:
Firmware (Servidor)
El Firmware es el software que está grabado en el PIC16F876A. Dado que la electrónica es compatible con la del Skybot, todos los programas de éste serán válidos para el Flatbot, pero no tendrá sentido usarlos debido a que su cometido es distinto y además a que le faltan los sensores que tiene el Skybot, por lo que no podrá realizar todas las funciones.
En el Skybot se graban programas que hacen que se comporte de forma autónoma, como por ejemplo seguir una línea negra, evitar obstáculos con los bumpers, etc. Ahora, se busca otro tipo de aplicación, se necesita un programa que disponga de servicios que permitan controlar al robot, pero la inteligencia no residirá en él, como con el Skybot, sino que se hará en un PC externo.
Es lo que llamamos programación CLIENTE-SERVIDOR, una aplicación (servidor) ofrece servicios a otra (cliente) que los usa para lograr un objetivo.
A continuación detallamos algunos de los servidores realizados:
Servidor básico
Se trata de un programa que permite mover el robot mandando caracteres ASCII por el puerto serie.
Por lo tanto, necesitaremos un cliente (PC), que disponga de un terminal de comunicaciones, por ejemplo el "Minicom" en Linux o el Hyperterminal en Windows.
Los parámetros de la comunicación son: 9600 baudios, 8 bits de datos, 1 bit de stop y sin paridad. Es decir 9600, 8n1
Los comandos son:
- q -> adelante
- a -> atras
- o -> izquierda
- p -> derecha
- (espacio) -> parar
Descarga de archivos para la SkyControl
- Fichero Fuente Servidor Básico para SkyControl .c
- Fichero Binario Servidor Básico para SkyControl.hex
Servidor avanzado
Se ha ampliado el programa anterior para añadirle funciones de PWM. Es decir de control de velocidad en los motores. Dado que el controlador utiliza el PIC16f876a se usarán las unidades de PWM internas del micro.
Esas unidades se encargan de generar las señales de PWM de forma automática y permite que nuestro programa se dedique a otras cosa. Como inconveniente diremos que los bit de ON/OFF de los motores se han cableado al Puerto C debido a que ahí residen los pines de salida del PWM.
Los comandos del servidor son:
- Comandos basicos del servidor:
q -> Adelante a -> Atras o -> izquierda p -> derecha ' ' -> parar + -> incrementa la velocidad en +5 - -> decrementa la velocidad en -5 0..5 -> Diferentes valores de velocidad
- Comandos avanzados:
v -> Espera recibir tres dígitos indicando valor velocidad. Ej: v <'1'> <'8'> <'5'> Una vez recibidos los tres digitos devuelve un '.' V -> Espera a recibir un byte que indica la velocidad. Ej: V<61> Una vez recibido el valor devuelve un '.' b -> Espera a recibir dos bytes que indican la velocidad de cada motor primer byte = motor_1 segundo_byte = motor_2 Una vez recibidos los dos bytes devuelve un '.'
- Comando PING
i -> Responde I (para probar conexion
Descarga de archivos para la SkyControl
Programas para la SKYPIC y la SKY293
Todos aquellos que estéis usando un FLatBot pero con las placas SKYPIC y SKY293 en lugar de con la SKYControl tendréis que usar estas versiones de los servidores. La principal diferencia es que en el FLatBot el puerto de control de motores es el Puerto C mientras que en el Skybot es el Puerto B.
Además, para usar el PWM tendréis que haceros un cable especial que una el Puerto C (bit 1 y bit 2) con los enables de los motores en el Puerto B.
Servidor básico
En esta página podrá encontrar el programa sci_menu.c que implementa el servidor básico.
Servidor avanzado
- Fichero Fuente Servidor Avanzado .c para la Skypic
- Fichero Binario Servidor Avanzado .hex para la Skypic
Software PC (Cliente)
El cliente es un programa que se ejecuta en el PC que está encima de Flatbot y que se comunica con el servidor (firmware) por el puerto serie. Este software estará programado en C/C++, python, C#, JAVA, Visual Basic o incluso podrá ser una aplicación de terceros.
Este aspecto es uno de los diferenciadores del Flatbot respecto al Skybot, ya que al poder transportar el PC sobre él podremos hacer programas complejos que necesiten gran capacidad de proceso y que hasta ahora no era posible hacerlos funcionar en el propio robot. Por ejemplo, usando una WEBCAM conectada al PC que controla el Flatbot, podremo hacer seguimiento de objetos por Visión Artificial. Otra aplicación, diametralmente opuesta, es el control del robot desde diferentes dispositivos, como mando de la WII, joystick playstation, móvil, consola de juegos, etc...
Cliente básico para servidor (firmware) básico
El cliente básico por excelencia es cualquier programa terminal de puerto serie.
En Linux tenemos el "minicom" o el "gtkterm"
En windows tenemos el "hyperterminal"
Para que funcionen con el servidor básico tendremos que configurarlos a 9600, 8n1 y sin flujos de ningún tipocomo hemos explicado antes.
Los comandos a enviar son los descritos en Firmware (Servidor) -> Servidor básico
Cliente básico para servidor (firmware) avanzado
Usaremos el mismo entorno que antes 'Cliente básico con servidor básico' salvo que ahora desde el terminal podremos mandar comandos de velocidad.
Además, para que el robot se empiece a mover, primero necesitamos indicar la velocidad. Eso lo podemos hacer mandando las teclas numéricas, '1', '2', ...
Los comandos a enviar son los descritos Firmware (Servidor) -> Servidor avanzado
Cliente avanzado para servidor (firmware) básico
En este caso usaremos un programa en C# para mover el robot.
Este programa se comunica con el robot por el puerte serie y nosotros nos comunicaremos con el programa con el mando de la Wii.
Usamos el PAD del mando, no tiene implementado el control analógico.
- Ejemplo: Cliente para mando de la WII
Cliente avanzado para servidor (firmware) avanzado
Es una mejora del programa anterior, ahora usamos la información analógica para mover el robot, tenemos el control de velocidad en los motores.
- Ejemplo: Cliente para mando de la WII
Montaje
- Tabla jumpers
Configuracion jumpers de la placa SkyControl
Aplicaciones
Ordenador portátil móvil
El FlatBot se ha diseñado para colocar encima de él un ordenador portátil y dotar al robot de una alta capacidad de proceso. Por lo tanto, podremos crear un número de aplicaciones casi infinitas.
Una de las configuración más exitosa es un FlatBot controlado por un portátil ASUS Eee como se puede ver en la foto y video de abajo.
En la tercera sesión del Taller FlatBot se controla el robot usando una WEBCAM (interna o externa), la aplicación de ejemplo es hacer que el robot siga un objeto caracterizado por su color.
300|250</youtube> |
Control con el mando de la wii
Usando la comunicación bluetooth con un portátil (con Bluetooth) podemos controlar a FlatBot usando el mando de la wii, ya sea con un control básico todo o nada, o con un control avanzado que incluye velocidad variable.
300|250</youtube> |
Base móvil para colocar objetos
El FlatBot es ideal para usarlo como una base móvil controlada desde un ordenador. Encima se pueden colocar diferentes objetos. Por ejemplo a Epi. Está sujeto a FlatBot mediante velcro.
300|250</youtube> |
En otra de las pruebas hemos colocado un roboSapiens v2, que tiene un peros de 4.3 Kilos. También está agarrado con velcro a la superficie de FlatBot.
300|250</youtube> | 300|250</youtube> |
También se puede colocar una papelera encima y convertirla en una canasta móvil ;-)
Vídeos
- FlatBot controlado por el mando de la WII
- Movido por un portátil Asus Eee PC
- Transportando a Epi
- Llevando a Robosapiens v2
- Robosapiens v2 bailando encima de FlatBot
Autor
Licencia
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 Spain License. |
Más información
Fe de erratas
- En los planos mecánicos, los taladros para sujetar el sensor de ultrasonidos trasero están mal, el de arriba va abajo y viceversa.
Créditos
Noticias
11/Jun/2008: Versión inicial de esta página