No description has been provided for this image No description has been provided for this image

Robobo: primeros pasos

Contenidos

  • Introducción
  • Programación de Robobo en Python
  • Ejemplo de prueba
  • Monitorización

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.

No description has been provided for this image

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:

No description has been provided for this image

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.

No description has been provided for this image

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

    1. Conectar el ordenador y el smartphone a la misma red WIFI.
    2. Emparejar la base Robobo y el smartphone por Bluetooth
    3. Descargar e instalar la App de Robobo en el smartphone.
    4. 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:

In [ ]:
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:

No description has been provided for this image

En este caso la IP es "192.168.0.130", por lo que la instrucción a ejecutar sería:

In [ ]:
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”.

In [ ]:
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).

No description has been provided for this image No description has been provided for this image

Una vez preparados, simplemente ejecutamos:

In [ ]:
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:

In [ ]:
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:

No description has been provided for this image No description has been provided for this image

A continuación, creamos un archivo “prueba.py” en Visual Studio Code (u otro IDE similar) con el siguiente contenido:

In [ ]:
# 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:

No description has been provided for this image

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.

No description has been provided for this image

La ventana de monitorización mostrará los valores de los diferentes sensors en tiempo real según van cambiando.

https://education.theroboboproject.com