Robot FlatBot

De WikiRobotics
Revisión del 07:25 17 jul 2008 de Hitec (Discusión | contribuciones) (Mecánica)

Saltar a: navegación, buscar
Portátil encima del FlatBot
Vista superior
Vista inferior

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 chapa 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 estimamos que puedan mover más de 20Kg.

Planos del robot:

Hardware (POR ESCRIBIR)

  • PIC16f876A
  • USB
  • L293B
  • Motores
  • Sensor ultrasonidos

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 grababan programas que hacían que se comportase 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


En esta página podrá encontrar el programa sci_menu.c que implementa lo anterior.

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

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

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.

FlatBot con un portátil Asus Eee encima
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.

Epi encima del FlatBot
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 ;-)

Robosapiens v2 encima del FlatBot
Una papelera móvil

Vídeos

Autor

Licencia

Cc logo.png This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 Spain License.

Más información

Créditos

Noticias

11/Jun/2008: Versión inicial de esta página