Introducción
Los robots exploran su entorno, pero deben hacerlo con cuidado. Pueden encontrar obstáculos en su camino o llegar al borde de un precipicio. Aprender a detectar estos peligros y parar a tiempo evitará que se hagan daño.
En este tutorial aprenderás a detectar obstáculos y harás que Robobo pare a tiempo. También aprenderás a encender/apagar los leds y cambiar su color a modo de señal luminosa.
¡El reto es la creación de un Robobo Anti-Choque!
pre-requisitos
Antes de empezar este reto, te recomendamos leer los siguientes apartados del manual de programación de Robobo:
RETO: ROBOBO ANTICHOQUE
Crea un programa que haga que Robobo avance hacia delante hasta que detecte un obstáculo.
A través de los sensores de infrarrojos delanteros, Robobo detectará el obstáculo y, a medida que avanza, cambiará el color de los leds para indicar la distancia al obstáculo (verde si está lejos, amarillo a distancia media y rojo cuando esté cerca). Además, cuando está muy cerca del obstáculo, se detendrá para evitar la colisión.
SOLUCIÓN
Una posible solución a este reto es la siguiente, aunque hay muchas otras. ¿Cuál es la tuya?
async function main(){ var Robobo = require('./lib/robobo'); robobo = new Robobo('10.113.36.163'); await robobo.connect(); var closeIRValue = 120, mediumIRValue = 30, farIRValue = 10, speed = 20; robobo.setLedColorTo('all','off'); robobo.moveWheels(speed,speed); while ((robobo.readIRSensor('Front-C') < farIRValue)&&(robobo.readIRSensor('Front-RR') < farIRValue)&&(robobo.readIRSensor('Front-LL') < farIRValue)) { await robobo.update(); } robobo.setLedColorTo('all','green'); while ((robobo.readIRSensor('Front-C') < mediumIRValue)&&(robobo.readIRSensor('Front-RR') < mediumIRValue)&&(robobo.readIRSensor('Front-LL') < mediumIRValue)) { await robobo.update(); } robobo.setLedColorTo('all','magenta'); while ((robobo.readIRSensor('Front-C') < closeIRValue)&&(robobo.readIRSensor('Front-RR') < closeIRValue)&&(robobo.readIRSensor('Front-LL') < closeIRValue)) { await robobo.update(); } robobo.stopMotors(); robobo.setLedColorTo('all','red'); await robobo.pause(2); robobo.setLedColorTo('all','blue'); } main()
RETO ADICIONAL
Cuando hayas completado el reto de “ROBOBO ANTI-CHOQUE” te proponemos este otro reto que utiliza los mismos sensores, pero de una forma un poco distinta, ¿te atreves?
Pon a caminar a Robobo sobre una mesa y evita que se caiga. Realiza este reto con cuidado, si Robobo se cae se puede romper. Utiliza una velocidad lenta para las pruebas de tu programa y mantente atento por si tienes que cogerlo para evita que se caiga mientras depuras tu programa.
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 son estos los que deberás utilizar en este nuevo reto.