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.