Un robot puede estar programado para desarrollar una serie de instrucciones, pero podríamos querer hacer que esas instrucciones fueran monitoreadas por una persona. Para ello, utilizaremos alguna manera de disponer de un control remoto.

Pero vamos a pensar cuáles pueden ser las acciones a ejecutar en función de una interfaz desarrollada por nosotros mismos para un robot con movimiento.

  • Accionamiento de movimiento ininterrumpido
  • Accionamiento de movimiento instantáneo
  • Accionamiento de modo de operación

Para explicar estos modelos de acción vamos a observar con AppInventor y Ardublockly qué programación llevar en cada uno de los casos.

Para crear una comunicación remota, hemos de programar por una parte el emisor del mensaje y por otro lado el receptor de dicho mensaje. En este caso, haremos de emisor, una aplicación móvil y nuestro receptor será un robot capaz de moverse con dos servomotores.

Realizaremos los pasos para desarrollar el modo de emparejamiento en una comunicación Bluetooth que ya explicamos en una lección anterior. Pero podríamos desarrollar cualquier tipo de comunicación remota.

 

Accionamiento de movimiento ininterrumpido

Este es el caso más sencillo, en el que cada botón de nuestra interfaz de la aplicación manda un mensaje a nuestro robot y éste responde para ejecutar una acción que no terminará a menos que se lo digamos.

Y la programación de nuestro robot será en este caso la siguiente.

En este caso la aplicación dispone de 5 botones y cada uno de ellos, implica la ejecución de una función de movimiento.

En el momento que presionemos un botón, ésta acción de movimiento permanecerá inalterable hasta que presionemos cualquier otro botón.


 

Accionamiento de movimiento continuado – Press and Release

Curiosamente, pueden existir aplicaciones que hayan sido creadas por otras personas. En nuestro caso, vamos a utilizar Robopad++.

Ocurre que con Robopad++, cada uno de los botones que presionamos, parece que se ejecutan varias letras de orden en lugar de una.

En este caso, nuestro robot, aparentemente, en el mismo momento que avanza, debería parar. Ya que ejecuta una S leida en el anterior programa que lo obliga a…. no hacer nada.

Esto se debe a que las letras, se envían tan rápidamente que no le ha dado tiempo a procesar en la aplicación el presionado del botón; que envía solo la letra U hasta su liberación; que envía la letra S.

Si mantenemos presionado el botón, nuestro robot avanzará de forma continuada hasta que dejemos de presionar; ya que habrá enviado una letra S.

Para realizar este modelo de control con App Inventor, hemos de utilizar otros bloques de evento diferentes asociados al botón.

De este modo, nuestra aplicación envía la U sobre el botón presionado y en el momento que dejamos de presionar, enviamos una S, que es la que realiza la parada y nuestro robot responderá en tiempo real; ya que la ejecución de estados permanece en el robot.


Accionamiento de modo de operación

El accionamiento de modo de operación se lleva a cabo, cuando en lugar de ejecutar acciones de movimiento, ya seán instantáneos o mantenidos; lo que establecemos con el mensaje es el modelo de comportamiento de nuestro robot.

Por ejemplo, nuestro robot Beetle, puede tener varios sensores; en nuestro caso , sensores de luz, para que sea atraido por la luz y ejecutar el movimiento o con sensores infrarrojos para realizar un siguelineas.

Resultado de imagen de beetle robopad

Como no podemos establecer sobre nuestro robot los dos comportamientos simultaneamente, lo que haremos será definir por Bluetooth el comportamiento que queremos que ejecute en función del mensaje enviado.

Para ello utilizaremos variables de estado para crear estos modelos. En este caso definiremos 3 estados de operación:

  • BEETLE para el modo huyeluz del escarabajo
  • FOLLOW para el modo siguelineas
  • MANUAL para el modo de control remoto.

 

Los modos para considerar que el robot sea autónomo son el BEETLE y el FOLLOW, que realizan acciones de movimiento que estan programadas en función de las lecturas de sus sensores. Es decir, no requieren de intervención humana.

Es por ello, que las funciones FollowLineMode y LightMode son las encargadas de recopilar las lecturas y desarrollar el movimiento.

Para saber más sobre cómo se crean estas funciones y obtener el código, dirigiros al siguiente enlace.