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.