Entrega Final: Robot Rescatista
Para la cuarta y última entrega del robot rescatista debemos agregar las funciones que faltaban para realizar la tarea completa, es decir:
- Diferenciar a las diferentes tarjetas y actuar de acorde a cada una de ellas.
- Mejorar la función de agarrar a las víctimas.
- Diseñar la función de dejar a las víctimas una vez vuelva al Campo de primeros auxilios (Salida/Entrada del laberinto).
Debido a que los colores de las tarjetas no eran muy vivos y estábamos teniendo problemas con la calibración de los canales de color, editamos la imagen de la tarjeta para lograr que los colores fueran más intensos. A continuación imprimimos un total de 20 tarjetas de las cuales 7 son víctimas rojas, 7 víctimas amarillas, 3 son verdes y 3 más son fallecidos.
Img 1. Tarjetas de las víctimas |
Una vez calibrados los tres canales para captar los colores rojo, amarillo y verde se procedió a especificar qué hacer en cada caso. Todos los grupos acordamos en conjunto usar una pieza de Lego amarilla como víctima. En caso de encontrar a una víctima y no haber visto ninguna tarjeta antes, se supone que es el cuarto caso: se trata de un fallecido. Por tanto el robot lo evade dando una vuelta de 180°.
Img 2. Víctima situada a un cuadro de su tarjeta. |
En caso de encontrar una tarjeta roja, se inicia un DFS que busca hacia todas las direcciones posibles a un cuadro de distancia. Al encontrar a la víctima en esa proximidad, la agarra y vuelve al lugar del laberinto donde vio a la tarjeta. Entonces prosigue con la navegación.
Si en cambio encuentra a una tarjeta amarilla, la evita y prosigue buscando a las rojas.
Una vez que haya recorrido todo el laberinto y dejado en el Campo de primeros auxilios a las víctimas en estado crítico (rojas), vuelve a entrar al laberinto pero en esta oportunidad en busca de las víctimas amarillas. Por tanto cuando las consiga las rescatará como hizo anteriormente con las rojas y al final las dejará también en el campo de primeros auxilios.
![]() |
Img 3. Detalle del parachoques de calibración |
Si encuentra una tarjeta verde en el primer recorrido, cuando está buscando a los rojos, inicia el DPS de búsqueda y cuando ubica a la víctima le hace un beep para “informarle hacia donde está la salida”. Durante el segundo recorrido, si encuentra una tarjeta verde, la evita dando una vuelta de 180° pues él ya sabe que le informó cómo escapar en el primero.
A pesar de que nuestro sistema de control para la navegación es satisfactoriamente bueno, va acumulando error y después de cierto tiempo (30 secs – 1 min) comienza a presentar oscilaciones de gran amplitud y por tanto a no ir en línea recta. Esto puede traer problemas impredecibles, como quedarse trancado contra alguna esquina. Como solución decidimos implementar una rutina de calibración que se ejecuta en ciertos eventos de frecuencia moderada. Dicha rutina consiste en avanzar a la mitad de la velocidad por un corto tiempo para chocar contra la pared y gracias a un parachoques, que además le evita cualquier daño, cuadrarse con ella para quedar derecho. A continuación retrocede un pequeño tiempo para quedar de nuevo en el centro del cuadro y proseguir con la navegación.
Para porder identificar la salida del laberinto, construimos en lego un indicador de colores verde y rojo. Elegimos éstos colores para que el programa no lo confundiera con ninguna tarjeta. Dicho indicador presenta una cruz roja para indicar que es el "campo de primeros auxilios".
Img 4. Indicador de salida del laberinto (Campo de primeros auxilios). |
A continuación una demostración del comportamiento del PROFETA DE LA DEVASTACIÓN realizando la tarea completa:
No hay comentarios:
Publicar un comentario