Lo que hemos hecho para esta práctica es recoger información de la cámara, debido a la gran cantidad de información que ofrece este sensor hemos analizado únicamente la línea de abajo.
Analizamos dónde está el color rojo y para saber cual es el comportamiento según el lugar de este color hemos dividido la línea en 7 zonas:
- Zona central: indica que se recorre correctamente la línea y por lo tanto tan solo hay que avanzar sin corrección de giro.
- Zonas de ligera desviación: estas zonas estás a ambos lados de la zona central, si el rojo está en una de estas zonas el ángulo de giro es ligero hacia ese lado.
- Zonas de moderada desviación: son zonas a continuación de la anterior, el ángulo de giro es más pronunciado.
- Zonas de esquina: son las zonas más externas, indican que se ha llegado a una esquina por lo que el comportamiento es retroceder a la vez que se gira hacia el lado donde está la línea. La razón por la que se retrocede es ganar algo de tiempo.
También está implementada la opción de pérdida de línea, en ese caso lo que hacemos es retroceder hasta encontrar de nuevo nuestra línea roja.
Con todo esto hemos conseguido recorrer el circuito en 2 minutos 20 segundos.
Por alguna razón al grabar el vídeo el framerate es diferente del tiempo real, así que dura unos 4 minutos, de todas formas se puede ver en el contador de tiempo del simulador el tiempo real que son 150 segundos menos los diez que tardamos en hacer click para que iniciase.
miércoles, 4 de junio de 2008
martes, 3 de junio de 2008
Practica 3: El Rescate (2)
La segunda parte de la práctica consiste en conseguir comunicación por bluetooth con otro robot para que se coordinen en el recorrido, la cuestión es que al encontrarnos con algo de frente no sabemos si estamos frente a un robot o frente a un obstáculo, de modo que intentamos abrir la conexión y es el otro robot el que debería avisarnos de que estamos cerca.
En caso de que estemos cerca de algo y no nos contestara deberemos ejecutar la maniobra de evasión de obstáculo.
Como se puede ver en el vídeo la comunicación por bluetooth estaba separada del resto del movimiento, esto se debía a que la cantidad de funciones, variables y constantes llenaba la tabla de símbolos del programa que según hemos leído está limitada a 255 entradas, la solución ha sido escribir un código mas monolítico.
En caso de que estemos cerca de algo y no nos contestara deberemos ejecutar la maniobra de evasión de obstáculo.
Como se puede ver en el vídeo la comunicación por bluetooth estaba separada del resto del movimiento, esto se debía a que la cantidad de funciones, variables y constantes llenaba la tabla de símbolos del programa que según hemos leído está limitada a 255 entradas, la solución ha sido escribir un código mas monolítico.
Practica 3: El Rescate (1)
Enunciado
La idea de esta práctica es programar el robot para que siga una línea en la cual se encontrará discontinuidades, obstáculos (latas) y heridos, el comportamiento debe ser adecuado en cada situación como se indica en la guía.
Lo primero que hemos hecho es programar un sigue lineas básico que es capaz de seguir un camino completo, recuerda el último giro realizado de modo que para el siguiente giro toma la curva en la misma dirección, esto ayuda para que las curvas largas se hagan mas rápido.
Para las discontinuidades se comienza el mismo procedimiento de giro y si tras un numero n de iteraciones no se ha conseguido de nuevo encontrar la línea se alinea con la posición anterior y avanza hasta encontrar la linea o repetir el procedimiento.
Los heridos son de dos tipos, los plateados se toman como un caso especial de las discontinuidades, al encontrar un valor de luz menor que el de la línea puede ser el de un herido plateado o el del fondo. Si es un herido el robot hace un sonido y sigue.
Los heridos de color verde se consideran parte de la línea, de modo que solo se encuentran cuando se está avanzando, de esta manera durante el avance se comprueba el color encontrado, si es parecido al verde se comprueba que realmente está sobre un herido girando 10 grados y recomprobando.
Hicimos esto porque existe la posibilidad de que el borde de la línea se confunda con el verde.
Por último añadimos la funcionalidad de esquivar obstáculos, en nuestro caso una lata. Para poder identificarlo usamos el sensor de ultrasonidos que va tomando medidas constantemente, en el momento que identifica que hay un obstáculo cercano deja de seguir la línea y bordea la lata. Una vez bordeada vuelve a buscar la línea y sigue con el recorrido.

La idea de esta práctica es programar el robot para que siga una línea en la cual se encontrará discontinuidades, obstáculos (latas) y heridos, el comportamiento debe ser adecuado en cada situación como se indica en la guía.
Lo primero que hemos hecho es programar un sigue lineas básico que es capaz de seguir un camino completo, recuerda el último giro realizado de modo que para el siguiente giro toma la curva en la misma dirección, esto ayuda para que las curvas largas se hagan mas rápido.
Para las discontinuidades se comienza el mismo procedimiento de giro y si tras un numero n de iteraciones no se ha conseguido de nuevo encontrar la línea se alinea con la posición anterior y avanza hasta encontrar la linea o repetir el procedimiento.
Los heridos son de dos tipos, los plateados se toman como un caso especial de las discontinuidades, al encontrar un valor de luz menor que el de la línea puede ser el de un herido plateado o el del fondo. Si es un herido el robot hace un sonido y sigue.
Los heridos de color verde se consideran parte de la línea, de modo que solo se encuentran cuando se está avanzando, de esta manera durante el avance se comprueba el color encontrado, si es parecido al verde se comprueba que realmente está sobre un herido girando 10 grados y recomprobando.
Hicimos esto porque existe la posibilidad de que el borde de la línea se confunda con el verde.
Por último añadimos la funcionalidad de esquivar obstáculos, en nuestro caso una lata. Para poder identificarlo usamos el sensor de ultrasonidos que va tomando medidas constantemente, en el momento que identifica que hay un obstáculo cercano deja de seguir la línea y bordea la lata. Una vez bordeada vuelve a buscar la línea y sigue con el recorrido.

Rescue.java
Suscribirse a:
Entradas (Atom)
