Robobo antichoque

Introducción

Los robots exploran su entorno, pero deben tener cuidado. Pueden encontrar obstáculos en su camino o llegar al borde de un precipicio. Si aprenden a detectar peligros y evitarlos, no sufrirán daños.

En este tutorial, aprenderás a detectar obstáculos y a detener a Robobo antes de estrellarse. También aprenderás a encender y apagar los LED y a cambiar su color como una señal luminosa.

¡El desafío es la creación de un Robobo Anti-Choque!

Desafío

Creación de un programa que hace que Robobo vaya recto hasta que detecta un obstáculo.

Mediante los sensores infrarrojos frontales, Robobo detectará el obstáculo y, a medida que avanza, cambiará el color de los LED para indicar la distancia al obstáculo (verde si está lejos, amarillo a media distancia y rojo si está cerca). Además, al acercarse al obstáculo, se detendrá para evitar la colisión.

Solución

Una posible solución a este desafío es la siguiente, aunque existen muchas otras. ¿Cuál es la tuya?

Ver fuente
from robobopy.Robobo import Robobo
from robobopy.utils.LED import LED
from robobopy.utils.Color import Color
from robobopy.utils.IR import IR

# Modifica la siguiente línea 
robobo = Robobo('10.113.36.163')
robobo.connect()
 
closeIRValue = 120
mediumIRValue = 30
farIRValue = 10
speed = 20
 
robobo.setLedColorTo(LED.All, Color.OFF)
robobo.moveWheels(speed, speed)
 
while (robobo.readIRSensor(IR.FrontC) < farIRValue)and(robobo.readIRSensor(IR.FrontRR) < farIRValue)and(robobo.readIRSensor(IR.FrontLL) < farIRValue):
    robobo.wait(0.01)
 
robobo.setLedColorTo(LED.All, Color.GREEN)
 
while (robobo.readIRSensor(IR.FrontC) < mediumIRValue)and(robobo.readIRSensor(IR.FrontRR) < mediumIRValue)and(robobo.readIRSensor(IR.FrontLL) < mediumIRValue):
    robobo.wait(0.01)
 
robobo.setLedColorTo(LED.All, Color.MAGENTA)
 
while (robobo.readIRSensor(IR.FrontC) < closeIRValue)and(robobo.readIRSensor(IR.FrontRR) < closeIRValue)and(robobo.readIRSensor(IR.FrontLL) < closeIRValue):
    robobo.wait(0.01)
 
robobo.stopMotors()
robobo.setLedColorTo(LED.All, Color.RED)
 
robobo.wait(2)
robobo.setLedColorTo(LED.All, Color.BLUE)

Desafío adicional

Cuando hayas completado el reto “Anti-shock Robobo”, te proponemos uno nuevo que utiliza los mismos sensores, pero de una forma ligeramente diferente, ¿lo probamos?

Coloca a Robobo sobre una mesa e intenta evitar que se caiga al suelo. Realiza este desafío con cuidado; si Robobo se cae, podría romperse. Prueba tu programa a baja velocidad y mantente alerta por si tienes que atraparlo para evitar que se caiga mientras lo depuras.

Ten en cuenta que los sensores infrarrojos Front-L, Front-R, Back-R y Back-L están inclinados hacia el suelo, por lo que estos son los que se deben utilizar en este nuevo desafío.

Robobo
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.