TupperBot y sus sistemas de control

Como algunos sabéis, TupperBot es para mi, la mejor manera de poner en práctica mi imaginación, bueno, creo que eso es evidente e cuanto se ve un tupper con ruedas… pero no sólo es hardware lo que he desarrollado para él, aunque sí es lo único de lo que he hablado siempre. En realidad hay un montón de programas y sistemas de control que he ido creando poco a poco en estos 2 años de experiencia.

Básicamente ha habido cuatro sistemas de control diferentes durante este tiempo:

TB, Sistema de control 1TB, Sistema de control 2TB, Sistema de control 3TB, Sistema de control 4

Al principio de los tiempos, cuando yo era realmente pequeño, unos 15 o 16 años, hice una de mis primeras aplicaciones robóticas con un 486 y un coche teledirigido modificado para ser controlado desde el puerto paralelo. De aquello conservo poco, pero me sirvió como base para crear el primer sistema de control de TupperBot:

TB, Sistema de control 1

Es bastante secillo, claro, no se podía pedir mucho mas… jejeje. Únicamente tenía acceso a la dirección, los servos de la cámara y al control del foco, funcionaba por comunicación directa a través del puerto serie y estaba programado en Visual Basic.
Un poco más adelante, cuando hacía las prácticas en Londres, me obsesioné con los sistemas de Visión Artificial, tema que aún me mantiene entretenido. Los primeros programas eran muy sencillos, tanto que sólo me dedicaba a mover los servos de la cámarahaciendo que siguiese una pieza de color azul:

TB, Sistema de control 2

Después de este programa vino toda una saga de sistemas de V.A. con diferentes métodos de corrección que iba improvisando, y ue poco a poco me permitían un muestreo más rápido y un mejor control sobre la cámara… aunque con Visual Basic y mis nulos conociemientos de Programación no conseguí que los servos dejasen de vibrar… Aun así, gracias a aquella pasión por la V.A. cree el tutorial que ya ha

visto mucha gente: Portada Visión Artificial

Claro, tanta Visión Artificial tuvo que afectar a mi cabeza y acabé haciendo que TupperBot fuese manejado íntegramente por señas hechas con las manos, así que el sistema de control avanzó bastante aunque de momento seguia estando asado en VB y en algoritmos de reconociemiento muy básicos, pero todo tenía mejor pinta cuando junté todos los conocimientos:

TB, Sistema de control 3

Aquí ya se ve que tenia ajustes de tolerancia para el reconocimiento, un nivel de resolución que podía variar para mejorar la velocidad de escaneo, control sobre los servos, varios algoritmos de búsqueda: Busca Azul, basado en los niveles RGB; Controastes, es un sistema un poco más complejo que se basa en la búsqueda de los mayores niveles de contraste para no tener que emplear un color fijo al hacer las señas; Hue es el último sistema que hice para este programa, y la mayor diferencia es que no trabaja con espacio RGB tridimensional sino que utiliza un método de tonalidades, más cómodo de manejar y mucho más intuitivo al programar. Todos los “trackbars” o “pinchitos desplazables” que hay en la imagen de la derecha sirven para definir las áreas en las que se hacen las señas,esto lo hice cuando me di cuenta que no es nada calibrar la distancia a la que trabajas de la cámara. Toodos los demás botones son bastante obvios, ¿no?

Por último, el sistema que empleo actualmente y que está en pleno crecimiento, está pensado para TupperBot 2.0, ya que se pueen manejar casi todos los periféricos que llevainstalados:

TB, Sistema de control 4

El aspecto creo que ya esun poco más completo que todas las versiones anteriores, aunque la filosofía es la misma. Voy a explicar las partes más importantes del programa:

·Drivers de Captura: En ese desplegable se puede elegir con qué cámara se quiere controlar el sistema de Visión artificial, normalmente habrá dos, una es la que lleva el robot y otra es la que está fija en el ordenador. Si se elige la que lleva el robot se puede hacer que TB siga una pieza en concreto, una luz o lo que se quiera siempre y cuendo haya una diferencia importante de contraste entre el objeto y el entorno (Esto aun está en desarrollo y tiene muchos fallos). Si, de lo contrario, se elige la cámara del PC, una webcam normal y corriente, se pueden, por ejemplo, hacer señas con la mano al robot y éste actuará en consecuencia (Este sistema si que funciona al 100% :)
· Sensor de movimiento: Este es un método de VA que se basa en la comparación de imágenes consecutivas de modo que sirve para detectar cuando hay movimiento en el entorno o no.
·Iniciar Vectores (botón): Este sistema está aun en desarrollo, la idea es conseguir una representación vectorial del análisis de la imagen, lo que me permitirá tomar medidas interesantes sobre una mano, por ejemplo… ya contaré más sobre esto.
·Sensor de Color: Este es el mismo sistema que desarrollé en los anteriores programas de VA, se basa en el reconociemiento de un color en concreto, y en el ajuste del área de dicho color, es decir, si usamos un guante negro podremos definir los conceptos “cerca” y “lejos” sin la ayuda de Coco… Esto sirve para controlar varios periféricos con un solo sistema, por ejemplo, si acercamos la mano manejaremos la cámara, si la alejamos, los motores, si mostramos un trozo del guante en rojo se maneja el foco R, lo mismo que con el Azul (B) y el Verde (G). el programa hace un recuento del área y va informando en tiempo real del periférico que estamos controlando, y en qué estado lo tenemos.
·Controles Directos: No siempre es cómodo manejar a TB por señas, así que desarrollé este área de botones para poder tener acceso a todos los periféricos de forma rápida y más eficaz.
·Las flechas: como os podéis imaginar, sirven para manejar las ruedas.
·El botón verde TB: Enciende y apaga la Luz del LCD.
·Botón de Ayuda: Muetra todos los comandos en el LCD del robot.
·Botón de Información:Actualiza la información en la pantalla del robot, y envía un informe de estado al PC.
·Botón de Temperatura: Actualiza la temperatura interna del robot, la presenta en el LCD y la envía también al PC.
·Velocidad: Con los botones + y - se cambia de marcha en el robot, así que irá más despacio o más rápido… la verdad es que ya corre bastante.
·Mandar Texto: Con este botón se envía el texto que pongamos a la izquierda directamente al LCD del Robot, da mucho juego cuando lo enseño… jejeje.

Como podéis ver aun faltan muchas cosas que programar, y las ideas se me apelotonan en la cabeza… ahora mismo estoy trabajando en un nuevo sistema de control… mucho más interesante desde el punto de vista de comunicaciones, aunque esta semana avanzaré un poco más en el último programa que he descrito.

5 Responses to “TupperBot y sus sistemas de control”

  1. BoOpS Says:

    Para cuando una actualización sobre los nuevos “periféricos” y el nuevo “panel de mando” jejeje :P

    Tenemos una charlita pendiente…

  2. Mif Says:

    Jajaja… eso es parea el siguiente capítulo… se merece una entrada entera…

  3. mntinside Says:

    Hola Mif! Llevo unos dias intentando ponerme en contacto contigo pero no hay manera, jeje. Si es posible agregame al messenger por favor.

    Salu2

  4. jacob Says:

    Hola quiero felicitarlos por su excelente pagina agradezco que compartan su material con los interesado en aprender y entender sobre visión, por lo cual quiero si es posible contactarme con Uds.

  5. Mif Says:

    ¡Muchas Gracias Jacob!
    Para cualquier cosa aquí esta mi correo: mif@tupperbot.es

Leave a Reply