08-dic-2008

Wumpus

El mundo del Wumpus es un laberinto compuesto de casillas, en cada una de
las cuales puede haber un agujero sin fondo, un monstruo (El Wumpus), un montón de
oro, o nada. La tarea del agente consiste en entrar al laberinto, recorrerlo hasta
encontrar el oro, tomarlo y regresar a la salida sin haber caído en ningún agujero o haber
sido devorado por el Wumpus.
La siguiente figura muestra el Mundo del Wumpus:
He aqui el laberinto del mundo del wumpus, realmente suena más fácil de lo que parece ya que en está práctica nos hemos encontrado todo el salon con muchos problemas una vez más de hardware ya que resulta que el sensor de luz que trae el robot no es capaz de detectar los colores de las hojas los cuales nos proporcionaron, ya que obtiene lecturas diferentes cada vez que cambian las condiciones de luz en donde se encuentre ya sea por luz natural, o artificial un simple cambio e posicion intensidad, sombra, y las lecturas arrojan diferentes valores para el mismo color, agregandole que se va chueco etc, total un verdadero desafío que intentamos sortear entre todo el salón, tratando de mitigar el problema utilizando el accesorio deled que trae el kit, así como la luz roja, etc. mil y un formas, y no lo logramos por lo que al final decidimos todos en que ibamos a entregar un wumpus virtual, es decir el laberinto simulado en la computadora, y nos olvidaríamos del robot, con todo y que unos compañeors hicieron un tablero digno de la carrera de diseño con el monstruo, pozos, y todo el rollo jejeje.

Base de conocimiento:
La base de conocimientos del robot, en realidad parte de un laberinto 4x4, en el cual sabe hacia donde y hasta donde se puede mover, y que la casilla en que se encuentra es "segura", de ahí en más la matriz vacía del laberinto, la ira llenando con base a la información del mundo real que reciba conla cual, va ir marcando las casillas en su matriz, como "pozo", "posible pozo", "casilla segura", "monstruo", "posivle monstruo", "oro", etc. Conforme va recorriendo el laberinto con todo esto ira completando su base de conocimientos del mapa para poder recorrerlo y encontrar el oro.

Código fuente:
El código fuente se puede descargar de [aqui]

Relación base de conocimientos -hardware:
En realidad termino por no haber relación alguna entre la base de conocimientos y el hardware, ya que el hardware fue al final prácticamente imposible de utilizar para obtener información fidedigna del mundo real para la base de conocimientos, ya que los colores no se pudieron leer bien por lo que optamos por una técnica que supliría la información dada por el hardware, con una matriz del mapa en la cual de manera manual nosotros tenemos los valores del laberinto, y entonces simulamos la lectura con el sensor, cuando el algoritmo va recorriendo su mapa en blanco lee la información que le arrojaría el lector, de la casilla que contiene toda la información y lo guarda en su base de conocimiento, de la misma forma en que lo haría si esa información la estuviera obteniendo del lector, y así va construyendo su base de conocimientos y tomando decisiónes para obtener el oro. De esta forma se tiene el algoritmo listo para que si se resuleve el problema de hardware con una ligera modificación al código podemos utilizarlo, para que funcione como deba :)

Media:

01-dic-2008

Agentes reflexivos (Laberinto

He aquí el reporte de agentes reflexivos, la práctica la cual se trato de lograr hacer que el pequeño "wall-e" pudiese salir de cualquier configuración de laberinto, la más dificil configuración de laberinto que se nos presenta es la siguiente:

Asi que el reto va consistir en resolverlo, y si resuelve este pues en teoría sería capaz de resolver todos los demás, los cuales son más fáciles.
Lo primero que intentamos fue lo mencionado en la actividad 1 de la práctica, utilizando el lenguaje de programación gráfica de Lego Nxt, hicimos un while en el que el robot fuera caminando, y con el sonar detectando si hay una pared, de ser así diera vuelta a la cabeza 180 grados para buscar otro camino y diera vuelta 90° al primer camino que encontrara.

En un principio no llego el agente a la meta ya que se le dificultaban las vueltas a la izquierda, creo que esto fue por que le falto mejorar nuestro algoritmo, lo cual enseguida hicimos, para que pudiera dar las veultas un poco mas despacio y checara más seguido 180° en busca de obstaculos y que su primer opción fuese siempre dar vuelta a la derecha a menos que no se pudiera, además de agregar el contador de vueltas para que pudiera tomar mejores decisiones.

Esta vez si llego a la meta pero luego de modificar ciertas cosas del laberinto, como la anchura del camino ya que tenía dificultad dando vueltas, ya que de repente se iba chueco, por que el piso tenía surquitos, lo cual lo destabilizaba y se iba inclinado con lo que nuestro algoritmo comenzaba a fallar.

Todo lo que sigio fue estar adapando los grados y velocidad de las vueltas, la velocidad de avance, cada cuanto checara obstaculos etc. Para que lograra llegar a la meta.

Al final por fin lo logramos, aunque un compañero se interpurso en el camino de la menta he hizo que se retornara ¬¬.

Le pondríamos un 9 ya que depende de un ambiente muy controlado, ya que cosas como los surcos lo afectan mucho, pero creo que eso ya no es problema de algoritmo si no más bien, del hardware, ya que no da para mucho, el balanceo del robot, las llantas etc., aunque lo esutivmos en todo el salon desarmando y armando de distintas formas, creo que no se pudo superar nunca el efecto negativo que producían los surcos en su trayectoría.

Las reglás de condición accción fueron simples es que avance hasta que con el sonar detecte un obstaculo, en este caso, de haberlo busca un camino libre, por default si hay dos siempre toma el de la derecha, en caso de no haberlo gira 90° y repote el procedimiento, y en caso de haber un camino intermedio en su recorrido y este esta a la derecha, da vuelta y lo recorre, y lleva el contador de vueltas para evitar que no repita caminos que ha dado con sus vueltas a la derecha.

Aqui los archivos:
[click]
[click]

He aqui fotos del agente, que por cierto se tuvo que ir reconstruyendo de diversas formas para poder lograr una versión que estuviese más balanceado y se fuera menos chueco: