Skip to content
Ricardo Moran edited this page Sep 16, 2021 · 21 revisions

Índice

Tutoriales

Uso del entorno

Una vez abierto el ambiente de simulación de Sumo deberíamos ver una imagen como la siguiente.

El panel de la izquierda, llamado "Control de la Simulación", nos permite cargar tanto los controladores como las estructuras de los robots, así como también iniciar, pausar, y detener la simulación.

IMPORTANTE: Si el panel de "Control de la simulación" no se muestra automáticamente igual podemos abrirlo manualmente siguiendo las instrucciones que se encuentran aquí: Para mostrar el panel del supervisor.

En el panel de "Control de la simulación" podemos observar bajo los títulos "Robot Verde" y "Robot Rojo" los controladores y estructuras cargados para cada robot.

Por defecto, el ambiente carga un controlador vacío y una estructura de base para ambos robots. Si iniciáramos la simulación con esta configuración los robots quedarán quietos en el dohjo hasta que el supervisor declare el empate.

Para cargar un controlador propio debemos hacer click en alguno de los botones denominado "Sin controlador", luego de lo cual se nos presentará una ventana de diálogo en la cual podremos elegir un archivo .py de nuestro sistema.

Una vez cargados los controladores, el panel de supervisor nos mostrará los botones actualizados con el nombre elegido para cada robot como se ve a continuación:

Ahora podemos iniciar la simulación haciendo click en el botón correspondiente y los robots ejecutarán los controladores seleccionados.

Como no cargamos ninguna estructura personalizada ambos robots usarán la estructura base por defecto. Si en cambio quisiéramos personalizar la estructura del robot, antes de inicial la simulación podemos hacer click en el botón de "Robot base", el cual nos abrirá una ventana de diálogo que nos dejará elegir un archivo .json generado por el personalizador.

Videos

IMPORTANTE: Los siguientes videos fueron grabados usando una versión anterior del ambiente de simulación y aunque algunos detalles de la interfaz fueron modificados, casi todas las indicaciones sirven para la versión actual.

  1. Preparando la cancha: Tutorial de instalación del software para jugar a Sumo Robótico
  2. Saliendo al ruedo: manejo del entorno de Sumo Robótico Virtual
  3. ¡A toda marcha!: nos lanzamos a programar nuestro robot
  4. Programación de Sumo Virtual con bloques

Personalización del robot

Para personalizar el robot se usará la página web https://virtual.roboliga.ar/personalizador/. Allí encontrarán una herramienta que les permitirá modificar la posición y rotación de los sensores de distancia y de color.

Luego de realizar las modificaciones deberán exportar los resultados en un archivo .json que podrán cargar en el simulador haciendo click en el botón Robot base.

Documentación sobre la clase RobotRL

La clase RobotRL viene incluida dentro del ambiente de Sumo en el archivo RobotRL.py y nos facilita el control del robot dentro de la simulación.

IMPORTANTE: Esta clase no debe ser modificada, de lo contrario el controlador no funcionará correctamente durante la competencia. Si se desea extender esta clase con nueva funcionalidad recomendamos desarrollar otra clase y hacer que ésta herede de RobotRL.

Creación de un objeto robot

# Crear un objeto RobotRL y asignarlo a la variable "robot"
robot = RobotRL()

Métodos

Velocidad de las ruedas

Las velocidades se definen con un valor entre -100 (máxima velocidad para atrás) y 100 (máxima velocidad para adelante)

# Establecer la velocidad de las dos ruedas
velRI = 50 # Velocidad de rueda izquierda
velRD = 50 # Velocidad de rueda derecha
robot.setVel(velRI, velRD)

# Establecer la velocidad de la rueda izquierda
robot.setVI(75)

# Establecer la velocidad de la rueda derecha
robot.setVD(-75)

# Obtener la velocidad actual de la rueda izquierda
velRI = robot.getVI()

# Obtener la velocidad actual de la rueda derecha
velRD = robot.getVD()

Espera

# Esperar un tiempo determinado (se mantiene el estado actual del robot durante el tiempo especificado)
segundos = 5
robot.esperar(segundos)

# Obtener el tiempo presente del robot
t = robot.tiempoActual()

Sensores

# Obtener el valor de brillo del piso. Valor entre 0 (más oscuro) y 100 (más brillante)
brillo_piso = robot.getColorPiso()
        
# Obtener el color del piso en los tres canales RGB
rojo, verde, azul = robot.getColorPisoRGB()

# Obtener la distancia detectada por el sensor de distancia izquierdo.
# Valor entre 0 y 100 (si no hay nada delante, devuelve 100)
di = robot.getDI()

# Obtener la distancia detectada por el sensor de distancia derecho.
# Valor entre 0 y 100 (si no hay nada delante, devuelve 100)
dd = robot.getDD()

# Chequear si el bumper izquierdo está presionado.
# Devuelve True si está presionado, False si no lo está.
bi = robot.getBI()

# Chequear si el bumper derecho está presionado.
# Devuelve True si está presionado, False si no lo está.
bd = robot.getBD()

Otros

# Finalizar el ciclo de ejecución de este paso y devolver el control al simulador
# (ya definí lo que quería con el robot, le paso el control al simulador)
robot.step()

Clone this wiki locally