|
|
Robobo: primeros pasos
Introducción
Robobo es un robot educativo compuesto por una base móvil a la que que se acopla un smartphone. El objetivo principal de robot es la enseñanza de los fundamentos de la robótica autónoma, para lo cual debes aprender a programarlo. Robobo se puede programar en Scratch y Python, pero estos cuadernos se centran en el lenguaje de programación Python.
Aunque el objetivo principal es aprender a programar el robot real, existe una versión simulada de Robobo, que es muy útil para el desarrollo de los programas y cuando no tenemos acceso al robot físico. Las principales diferencias son las siguientes:
Robobo real
La base constituye el "cuerpo" del robot, proporcionando movilidad y algunas capacidades de detección, mientras que el smartphone es el cerebro del Robobo, proporcionando capacidad de cálculo y de detección/actuación en el mundo real.
Tanto la base como el smartphone disponen de diversos sensores y actuadores adecuados para el aprendizaje en robótica autónoma, que se pueden observar en la imagen siguiente:
Para más detalles sobre las características y propiedades de la base, revisa: https://education.theroboboproject.com/presentacion-de-robobo
Robobo simulado
Robobo se puede programar también a través de un modelo de simulación realista, denominado RoboboSim.
RoboboSim es un simulador fiel al modelo de robot real, es decir, simula el comportamiento de este. La respuesta de los motores y actuadores se ha desarrollado tras analizar el funcionamiento de los reales, de tal forma que cualquier programa de control desarrollado en el simulador se pueda transferir al robot real sin grandes ajustes.
Todos los programas que realizaremos en estos cuadernos, excepto en uno específico del robot real, se realizarán utilizando RoboboSim, por lo que es importante que revises la documentaión en https://test.theroboboproject.com/configuracion-inicial/robobosim/, donde se explica el uso básico del simulador y sus opciones principales.
Programación de Robobo en Python
Para programar Robobo en Python son necesarios los siguientes elementos:
- En el caso de querer programar el robot real:
- Un ordenador con WIFI y un sistema operativo compatible con Python: Windows, Mac o Linux
- Una red WIFI con conexión a internet a la que se puedan conectar el ordenador y el smartphone. Esta red debe tener un nivel de seguridad que permita la comunicación entre dispositivos de la red.
- Un smartphone con sistema operativo Android 9.0 o superior y con un tamaño de pantalla mínimo de 4,7″ y máximo de 5,5″ (grosor máximo 95 mm).
- Una base Robobo real cargada
- En el caso de querer programar el robot simulado:
- Un ordenador con conexión a internet (WIFI o cable) y un sistema operativo compatible con RoboSim y Python: Windows, Mac o Linux
Instalaciones previas
Antes de comenzar a programar en Python, es necesario instalar los siguientes componentes:
Para programar el robot real, debemos
- Conectar el ordenador y el smartphone a la misma red WIFI.
- Emparejar la base Robobo y el smartphone por Bluetooth
- Descargar e instalar la App de Robobo en el smartphone.
- Enlazar la base con la App de Robobo. Tienes más detalle sobre cómo hacer este proceso en https://test.theroboboproject.com/app-de-robobo/
Para programar el robor simulado: debemos descargar y arrancar el RoboboSim (no requiere instalación), tal y como se detalla en https://test.theroboboproject.com/configuracion-inicial/robobosim/
En ambos casos debemos instalar el lenguaje Python en el sistema operativo, y a continuación la librería robobopy, tal y como se detalla en https://test.theroboboproject.com/introduccion/implementacion-de-python-en-robobo/
Conexión
Todos los programas que se desarrollen en Python para programar a Robobo tienen una primera parte inicial común. Son 3 instrucciones Python para importar la librería robobopy, establecer la IP del robot y realizar la conexión en sí misma:
1) from robobopy.Robobo import Robobo
2) rob = Robobo("IP del robot")
3) rob.connect()
La primera instrucción será siempre la siguiente:
from robobopy.Robobo import Robobo
Si al ejecutarla recibes un error, revisa la instalación de la librería robobopy.
La segunda instrucción crea un objeto de la clase Robobo, y debemos indicar la dirección IP de robot en la red. El proceso para conocer la IP es diferente para el robot real y el simulado.
Robot real
Para conocer la IP del robot real, debes ir al menú principal de la App Robobo en el smartphone, y la verás en la parte superior de la ventana. Por ejemplo:

En este caso la IP es "192.168.0.130", por lo que la instrucción a ejecutar sería:
rob = Robobo("192.168.0.130")
NOTA: esto es solo un ejemplo, en tu caso debes poner la IP de tu smartphone
RoboboSIM
En el caso del simulador, lo habitual es tenerlo instalado en el mismo ordenador en el que se realizan los programas, con lo que la dirección será “localhost”.
rob = Robobo("localhost")
La tercera instrucción es la que realizar la conexión en sí. Para que se pueda ejecutar sin error, el robot real debe estar enlazado con el smartphone como se muestra en la imagen de la izquierda (leds en azul), mientras que para el robot simulado debemos tener RoboboSim abierto y un mundo cargado, por ejemplo el que se muestra en la imagen de la derecha (Four Walls).
|
|
Una vez preparados, simplemente ejecutamos:
rob.connect()
Si no hay ningún error al ejecutar, la conexión se habrá realizado con éxito (el robot real tendrá los leds en color verde).
Desconexión
Es recomendable desconectar el robot de la red al final de cada programa, simplemente añadiendo esta instrucción:
rob.disconnect()
Ejemplo de prueba
Aunque en los cuadernos ejecutaremos muchas instrucciones de manera individual o en grupos, la forma habitual de programar en Python es mediante archivos que incluyen toda la lógica y se ejecutan de forma independiente.
Vamos a probar ahora uno de estos archivos. Para ello, arranca RoboboSim y carga el mundo "Four Walls" como se muestra en estas imágenes:
|
|
A continuación, creamos un archivo “prueba.py” en Visual Studio Code (u otro IDE similar) con el siguiente contenido:
# Importamos la librería
from robobopy.Robobo import Robobo
# Creamos una instancia de la clase Robobo con la dirección IP "localhost"
rob = Robobo("localhost")
# Conectamos con el simulador
rob.connect()
# Robobo se mueve en línea recta durante 4 segundos
rob.moveWheelsByTime(10, 10, 4)
# Desconectamos Robobo
rob.disconnect()
Ejecutamos ese programa de prueba, y si todo ha ido bien, el robot debería moverse en línea recta durante 4 segundos, terminando aproximadamente en la posición que se muestra en la imagen:
Monitorización
Mientras se están creando programas con Robobo, puede ser necesario conocer el valor de los sensores de cara a establecer umbrales o valores de referencia. Por este motivo, Robobo incluye una ventana de monitorización web, que es altamente recomendable tener abierta. Para acceder a esta ventana, basta con ir a esta url: http://monitor.theroboboproject.com/
En la página que se abre, debemos escribir, en la parte superior izquierda, la dirección IP del robot real o bien localhost si estamos usando RoboboSim, y pulsar el botón Connect.
La ventana de monitorización mostrará los valores de los diferentes sensors en tiempo real según van cambiando.