Inicio » Aula » Robot Compacto

Robot Compacto

En esta entrada se presentará de forma breve el proceso de diseño, construcción y programación de un robot compacto para la asignatura de Robótica Móvil, optativa impartida en el Máster de Ingeniería Industrial.

Diseño del cuerpo en QCAD

El principal criterio a la hora de diseñar el robot ha sido la funcionalidad. En virtud de esta, se ha tratado de hacer un robot lo más compacto y funcional posible. Para esta etapa se ha utilizado el software QCAD para diseñar la estructura del cuerpo del robot, la cual después sería cortada por láser sobre madera.

 

 

La principal dificultad en este punto ha sido ajustar bien las dimensions de las partes según los elementos físicos a los que irían unidas. Además, existía una limitación de espacio, que obligó a dedicarle bastante tiempo a la planificación de este. Finalmente, el diseño propuesto (derecha), consta de dos pisos, y aprovecha casi completamente el espacio disponible.

El archivo de QCAD se puede descargar desde aquí:  Descargar archivo QCAD

 

Componentes utilizados

A continuación se detalla una lista de los componentes utilizados en el robot:

  • Arduino Nano ( + Mini USB – USB )
  • I/O Shield
  • Power bank ( + Nano USB – USB )
  • 2 x Servo continuo FS90R
  • 2 x Rueda de goma
  • Rueda loca
  • Ultrasonido HC-SR04
  • Zumbador
  • Matriz de LEDs MAX7219
  • Infrarrojo sensor + emisor TCRT5000
  • Módulo Bluetooth
  • Jumpers

No parece necesario detallar las conexiones entre los componentes, ya que todo se ha basado en llevar jumpers desde los pines del módulo a conectar hasta las entradas apropiadas de Arduino. Además, buscando en internet es inmediato encontrar ejemplos de estas conexiones.

 

Programación en AppInventor y Arduino

AppInventor es una aplicación web basada en programación por bloques que permite desarrollar aplicaciones Android sencillas. Al final, esta herramienta ha resultado ser muy útil, ya que permite interaccionar con el robot de formas muy diversas gracias a la conexión Bluetooth. Arduino, por su parte, es una plataforma de prototipado electrónico de código abierto ampliamente conocida.

En resumen, Arduino será el cerebro del robot, y la aplicación móvil será el mando.

En concreto, se han programado 4 modos de funcionamiento para el robot:

  1. Control por botones
  2. Control por giróscopo
  3. Modo autónomo
  4. Seguilíneas

A continuación, se presentarán algunos de los detalles de diseño de la programación tanto en AppInventor como en Arduino, que más interesantes puedan resultar.

 

AppInventor

Con el objetivo de ser lo más generales posible y facilitar la aplicación del código en un futuro, se ha desarrollado un protocolo de comunicaciones basado en cadenas de texto, sobre el modo transparente de Bluetooth. En esencia, cada 250ms la app envía al Arduino un paquete indicando el modo de funcionamiento en el que está y cualquier otra información adicional asociada a dicho modo (por ejemplo, en el control por acelerómetro envía los valores de pitch y roll).

La imagen anterior muestra la función de AppInventor que implementa el envío de paquetes. Todos ellos comienzan con una s, después incluyen el modo en el que se está (que es un carácter cualquiera), a continuación cualquier información que se le haya pasado como parámetro a la función (por ejemplo los valores de pitch y roll), y finalmente el delimitador de final de paquete que es una e. Obviamente, bt hace referencia a un módulo Bluetooth, que además debe estar conectado al robot.

Un problema que se ha tenido que resolver es que si se utilizan varias páginas en AppInventor (con la idea de tener una página asociada al control de cada uno de los modos), el Bluetooth se desconecta a cada cambio de página, lo cual es un comportamiento no deseable. Para solventar esto, se ha emulado la funcionalidad de utilziar varias páginas mediante  bloques de código que ocultan unos elementos y muestran otros, en función de los botones que se pulsen. Algunos de los bloques que implementan este comportamiento se muestran a continuación:

Así por ejemplo, cuando se pulsa el botón go_auto (ir al modo autónomo, bloque superior derecha) se oculta el menú principal se muestra el botón back y se muestra el menú del modo autónomo. Además, el modo global se establece a A, de tal forma que, ahora, cada 250ms, Arduino recibirá un paquete con la indicación de que entre en el modo autónomo. Por otra parte, el botón back oculta todo excepto el menú principal.

 

Arduino

En cuanto a la programación del Arduino, este consta de un bucle principal en el que se leen los paquetes que va recibiendo por Bluetooth y, según el modo, se activa una rama del switch u otra. Además, si encuentra inconsistencias en los paquetes, los descarta y espera al siguiente, aunque esto es muy poco habitual.

 

Modos de funcionamiento

Muy brevemente se va a describir el funcionamiento de cada uno de los modos:

Control por botones

Arduino recibe un carácter identificando el botón de dirección que se ha pulsado como contenido del paquete, y según este, se desplaza en una dirección determinada o gira en un sentido determinado.

Control por giróscopo

Arduino recibe dos enteros indicando el ángulo de pitch y roll según la inclinación que el giróscopo del móvil detecte. Proporcionalmente a estos valores Arduino hace girar los servos, de tal forma que el control es continuo en velocidad con el pitch, y continuo en ángulo girado con el roll.

Modo autónomo

En este modo Arduino no recibe ninguna información adicional de la aplicación. Utilizando el sensor de ultrasonidos, el vehículo avanza hasta que detecta un obstáculo a menos de 15 cm. Entonces para, retrocede un poco, gira, y sigue avanzando en otra dirección. Esto lo repite hasta que desde la aplicación se seleccione otro modo. Además, durante este modo, en la pantalla se muestra un indicador de la distancia que el sensor de ultrasonidos está midiendo.

Seguilíneas

En este modo es posible calibrar el sensor infrarrojo, indicándole desde la aplicación cuándo está sobre el negro y cuándo está sobre el blanco, de tal forma que se adapte mejor a condiciones de colores cambiantes. Una vez calibrado, el robot hace un sonido indicando que está listo, y tras pulsar el botón de comenzar desde la aplicación, este comienza a seguir la línea. El algoritmo básicamente intenta mantener el robot a una distancia intermedia entre el negro y el blanco a la derecha de la línea, usando para ello un control proporcional.

 

Demostración

En este último apartado se incluye un vídeo demostración de algunas de las funcionalidades del robot y de su aplicación:

Autor

Óscar Pellicer