jueves, 21 de junio de 2012


Este codigo realiza un programa de un menu de un restauran con tres entradas, mesajes de salida

pausa :- nl,write('Pulsa <Enter> para continuar '),
skip(10).
pausa1 :- nl,write('Pulsa <Enter> para confirmar el pedido '),
skip(10).

/* borraPantalla <- borra la pantalla */
borraPantalla :- borraLinea(25).
borraLinea(1) :- !,nl.
borraLinea(N) :- nl,N1 is N-1,borraLinea(N1).

/*Escribe caracteres*/
escribe([]).
escribe([X|Y]):-
put(X),
escribe(Y).


% Instrucciones del mensaje de error
error:-
borraPantalla,
escribe("La opción no existe"), nl,
escribe("O el número escrito esta equivocado"),
pausa.

% Instrucciones Del Mensaje de Salida
salida:-
borraPantalla,

escribe("|------¡Que tengan buen provecho gracias por venir------|"),nl,
escribe("|----------Universidad Autónoma De Guerrero---------|"),nl,
escribe("|---------------Facultad de Matemáticas-------------|"),nl,

pausa,
halt.



% Instrucciones Del Manejo de opciones Del Menu Principal

opciones(X):-
( (X = 1) ->
escribe("Pechuga rellena de Pollo"),nl,
escribe("Arroz"),nl,
escribe("frijoles"),nl,
escribe("Refresco de 600 ml"),nl,
pausa1;
(X = 2) ->
escribe("caldo rojo y verde"),nl,
escribe("Arroz"),nl,
escribe("Sopa Fria"),nl,
escribe("Refresco de 600 ml"),nl,
pausa1;
(X = 3) ->
escribe("Carne de res en salsa verde"),nl,
escribe("Arroz"),nl,
escribe("Frijoles"),nl,
escribe("Refresco de 600ml"),nl,
pausa1;
(X = 4) -> salida;
error).

% Instrucciones Menú Principal

menu:-
borraPantalla,
escribe("-------Restaurant Doña chonita---------"),nl,
escribe("-----------Menu principal--------------"),nl,
escribe("Seleccione Su Menu:"),nl,
tab(10),escribe("1) Comida 1"),nl,
tab(10),escribe("2) comida 2"),nl,
tab(10),escribe("3) comida 3"),nl,
tab(10),escribe("4) terminar la orden"),nl,

escribe("Digite el numero de la comida  deseada: "), read(X),
opciones(X),
menu.

% Instrucciones Para Carga el Menú Principal
?-menu.

martes, 17 de enero de 2012

DETECCIÓN DE OBSTÁCULOS EN EL RECORRIDO DE UN ROBOT MÓVIL LEGO UTILIZANDO LÓGICA DIFUSA.

INTRODUCCIÓN.                         
En la robótica móvil se presentan tres problemas fundamentales a resolver: la navegación, la localización, y el reconocimiento del entorno o construcción de mapas de entorno. La navegación requiere tener un conocimiento del entorno donde se desenvuelve el robot para ser eficiente. Este conocimiento del entorno requiere la existencia de un mapa del entorno y requiere que el robot este localizado en dicho mapa. Si la navegación es de tipo deliberativa, se utiliza un mapa del entorno, construido en forma previa por el robot o entregada al robot por su diseñador, para navegar. Si la navegación es de tipo reactiva se navega utilizando únicamente la información percibida por los sensores, para  evitar chocar. Los mapas del entorno permiten que el  robot tenga una representación del medio en que se esté desenvolviendo. La tarea de localización implica que el robot debe conocer en cada momento su posición y su orientación, respecto a una representación global del espacio. Es decir se trata de una auto-localización. Para ello  son utilizados una gran variedad de algoritmos diseñados para que el robot realice tareas específicas  ocupando algunas de sus características físicas [18].

En este trabajo diseñaremos un algoritmo de detección y localización utilizando lógica difusa. La Lógica Difusa ha sido probada para ser particularmente útil en sistemas expertos y otras aplicaciones de inteligencia artificial. Es también utilizada en algunos correctores de voz para sugerir una lista de probables palabras a reemplazar en una mal dicha. La Lógica Difusa, que hoy en día se encuentra en constante evolución, nació en los años 60 como la lógica del razonamiento aproximado, y en ese sentido podía considerarse una extensión de la Lógica Multivaluada. La Lógica Difusa actualmente está relacionada y fundamentada en la teoría de los Conjuntos Difusos. Según esta teoría, el grado de pertenencia de un elemento a un conjunto va a venir determinado por una función de pertenencia, que puede tomar todos los valores reales comprendidos en el intervalo [0,1] [4] un primer concepto para comprender  mas la lógica difusa se basa en la ley del medio excluido  propuesta por Aristóteles en esta ley se propone que un elemento no puede pertenecer a dos  conjuntos. En el caso de los conjuntos difusos (o multivalentes) se rompe con la ley del medio excluido de Aristóteles y se extiende. Un elemento puede pertenecer parcialmente  a uno o más conjuntos difusos o completar uno de ellos. La pertenencia de los elementos debe de ser igual a una unidad. La base de la lógica difusa esta en reglas como: “si, entonces”, que convierte a los valores de entrada en sus correspondientes valores de salida. El sistema difuso aproxima alguna fusión matemática o ecuación causa-efecto basada en la teoría de conjuntos que posibilita imitar el comportamiento de la lógica humana Se utiliza para realizar operaciones en los conceptos que están fuera de las definiciones de la lógica booleana. Existen operaciones en la lógica booleana las cuales se pueden extender y hacer más precisas en los conjuntos difusos tales como conjunto complemento, unión, intersección, existen otras cuatro operaciones que cumplen con la lógica clásica si presentar cambio alguno asociatividad, conmutatividad, distributividad y las leyes de Morgan [5]. El número de aplicaciones de lógica difusa para control de agentes autónomos ha crecido significativamente debido a sus características. Entre ellas podemos citar el tratamiento robusto de la información imprecisa, la facilidad que ofrece a la hora de interpolar las medidas de los sensores y la flexibilidad en la definición de reglas de control no lineales. Una tendencia actual en el diseño de controladores para robots móviles es el diseño basado en comportamientos. Este diseño consiste en dividir las tareas de control en pequeñas unidades simples. La lógica difusa es una herramienta muy apropiada para el control de robots móviles basado en comportamientos. Gracias a sus capacidades de razonamiento aproximado se consiguen controles que son robustos a la incertidumbre, como puede ser los ruidos o las perturbaciones en las medidas de los sensores.
En este proyecto se utiliza un robot móvil rodante. También se utilizan técnicas de reconocimiento de color y bordes [1], los algoritmos de optimización son necesarios para determinar las distancia óptimas cuando el objeto es localizado, este tipo algoritmos son utilizados en optimización de rutas aéreas [2], el algoritmo utilizado en este proyecto fue modificado y mejorado.
En la actualidad existen proyectos tales como “Aplicación del algoritmo de búsqueda por amplitud en un espacio finito utilizando cámara y sensores de acercamiento a un robot con recursos limitados”[3] que consiste en la aplicación de algoritmos de búsqueda en una cancha de futbol con el objetivo de identificar bordes y colores, tratando de llegar a una de las porterías de la cancha. En el trabajo de Bonarini [4] el control del agente se realiza mediante una base de reglas difusas que determinan una serie de comportamientos básicos. Estos comportamientos se agrupan dentro de dos tipos de entornos. Como pertenecientes a los entornos globales están aquellos comportamientos íntimamente ligados con la consecución de la tarea que debe llevar a cabo el robot. Un comportamiento de este tipo puede ser "seguir pasillo". Los comportamientos incluidos en los entornos de contexto son los encargados de reaccionar ante sucesos del entorno, como por ejemplo, "evitar obstáculo". La elección de un entorno global viene determinada por la tarea a llevar a cabo por el agente, por lo que no es necesario un mecanismo de selección. Sin embargo, el entorno de contexto se va modificando con la ejecución de la tarea, por lo que debe existir un mecanismo que elija el mejor comportamiento para cada entorno de contexto. Esta tarea es llevada a cabo por el algoritmo S-ELF.
En el trabajo de Michaud [5] se implementa el control del robot usando un conjunto de comportamientos codificados mediante una base de reglas de difusas. También hace uso de la lógica difusa a la hora de decidir qué comportamiento es más apropiado para una situación. En la arquitectura propuesta se define un módulo de "recomendaciones" el cual está formado por dos conjuntos de reglas difusas que determinan qué comportamiento activar basándose en los impulsos externos y en las tareas que debe llevar a cabo el agente.

PLANTEAMIENTO DEL PROBLEMA.
El número de aplicaciones de lógica difusa para control de agentes autónomos ha crecido significativamente debido a sus características. Entre ellas podemos citar el tratamiento robusto de la información imprecisa, la facilidad que ofrece a la hora de interpolar las medidas de los sensores y la flexibilidad en la definición de reglas de control no lineales. Para la realización de este proyecto se revisaron varios proyectos como, Pirjanian y Mataric  [6] donde describen el diseño de un controlador para un robot Nomad 200 basado en comportamientos implementados mediante una base de reglas difusas. La coordinación de los comportamientos se lleva a cabo usando los conceptos de la teoría de decisión de objetivo múltiple.
El de [7] Goodridge, Kay y Luo describen un sistema de control reactivo basado en comportamientos. Los comportamientos de control simples se han implementado usando la lógica difusa. Esto comportamientos se combinan mediante reglas difusas para formar comportamientos más complejos. Se ha implementado una red de control de comportamientos, usando las reglas difusas tanto para implementar dichos comportamientos como para arbitrar entre las recomendaciones de control. También se revisaron algunos modelos de elaboración de arquitecturas como son el modelo geométrico que consiste en distinguir entre áreas ocupadas y libres del espacio a explorar, así como representar características geométricas del entorno.
En [8] Gasós y Saffiotti se nos presenta un método de construcción del mapa geométrico en el que
el agente recorre el espacio y recoge información. Los puntos que va detectando el robot mientras se desplaza por el entorno se pre-procesan para eliminar lecturas erróneas y puntos redundantes leídos por el mismo sensor. Cada grupo de medidas se intenta integrar en una línea recta (segmento) y la incertidumbre sobre su posición y localización se representa usando conjuntos difusos. Los segmentos difusos que corresponden a un mismo objeto se combinan para obtener un "borde difuso". Cada segmento difuso proporciona información sobre la posición y la orientación de los bordes de un objeto. Como los segmentos se obtienen de diferentes sensores y posiciones del robot, es necesario detectar y combinar los segmentos que pertenecen al mismo borde. El resultado es un proyección en 2-D sobre el suelo de los objetos localizados en el entorno.
El robot realiza un mapa inicial con las primeras observaciones del entorno. Posteriormente, mientras sigue navegando, crea mapas locales que actualizarán el mapa global obtenido inicialmente. Una aproximación similar se lleva a cabo en [9] por Aguirre y González. En este trabajo se describe un método de construcción de un modelo geométrico del entorno basado en lógica difusa. La idea consiste en construir un mapa de segmentos de cada habitación del entorno para obtener, usando éste como base, un mapa de rejilla. En el recorrido que realiza el robot por la habitación detecta puntos del entorno, de los cuales sólo se almacenan aquellos detectados con un valor de certeza mayor que un umbral dado. Esos puntos se usan para construir líneas rectas, que representarán las paredes de la habitación. La incertidumbre medida se emplea para construir regiones de posibilidad que contendrán las líneas detectadas. Estas regiones se denominan "segmentos difusos" y definen las paredes de la habitación.
El modelo topológico con el modelo se pretende obtener una representación de tipo semántico del entorno (definición de puertas, corredores...) así como la relación que existe entre los objetos detectados, por ejemplo la puerta 1 une las habitaciones A y B. algunos trabajos de este tipo de modelo son estos.
 En [8] y [10] se presenta un método para la construcción del modelo semántico del espacio.  Para ello, a cada objeto relevante (puertas, corredores...) se le asignan una tripleta (x,y,_) que representan la posición en coordenadas cartesianas y la orientación con respecto al eje X. Para tener en cuenta la incertidumbre posicional, a cada característica detectada se le asigna una posición aproximada, representada por un conjunto difuso.
Un mapa semántico aproximado de un espacio de referencia es una tupla hM, type, pos, P1,...,Pni donde M es un conjunto de índices del mapa (nombre de los objetos), type asocia cada objeto con un tipo de objeto (puerta, corredor, pared), pos asocia cada objeto con una posición difusa en el espacio y Pi hacen referencia a características topológicas de los objetos.

Localización el robot debe ser capaz de conocer su situación en el entorno para determinar la siguiente tarea a llevar a cabo. Una solución a este problema puede ser medir la distancia recorrida mediante los sensores propios del robot. Sin embargo, estos sensores son muy sensibles a errores. Para complementar esta información se suelen usar distintos tipos de mapas. La lógica difusa es una herramienta muy utilizada debido a su gran capacidad de tratar con la incertidumbre y los errores en las medidas.
Saffiotti y Wesley en [11] presentan una solución al problema de la estimación de la posición basada en el uso de técnicas difusas. El algoritmo propuesto se basa en que, en cada momento, el robot tiene una idea aproximada de su posición en el mapa representada por un conjunto difuso. Además existe un conjunto de "pistas", que ayudan a la localización, también representadas por un localizador difuso.
Otro modelo es la navegación donde  Graves, Mollenhauer y Skubic en [25] describen el diseño y la implementación de un robot móvil que hace uso de la lógica difusa para la navegación. La implementación consta de dos módulos (denominados Mini Boards): la unidad de inferencia difusa (FIU) y la unidad de supervisión. La unidad de inferencia difusa (FIU) se encarga de leer las señales de los sensores y la baliza del objetivo, fuzzificar estas señales, ejecutar un conjunto de reglas de inferencia difusas y defuzzificar los resultados. Las reglas de inferencia determinan, para cada una de los efectores, la acción a llevar a cabo. El segundo nivel de inferencia realiza una media ponderada con cada una de las salidas calculadas anteriormente para determinar la dirección y la velocidad que tomará el robot. La unidad supervisora consta de un módulo para detectar si el robot está atascado, un módulo para traducir la dirección que le ha pasado la unidad FIU y la unidad de control del motor.
En la percepción nos referimos a la capacidad del robot de detectar características del entorno.
La información referente a estas características se obtiene mediante un sistema de visión, por ejemplo, una cámara de video. Estos datos están muy afectados por la luz del ambiente y la complejidad del entorno. Además el tratamiento de la imagen se produce en tiempo real. Por estos motivos, la lógica difusa constituye una herramienta muy apropiada abordar este aspecto del control de agentes.
En [13], [14] y [15], Howard, Seraji y Tunstel exponen un método basado en lógica difusa para el análisis de las características de un terreno. Se ha diseñado un índice de "Atravesabilidad" (Traversability Index). Las características del terreno primero se convierten en variables difusas. Las funciones de pertenencia de los conjuntos que definen estas variables se usan en un conjunto de reglas difusas que determinan la "atravesabilidad" del terreno. Las variables que se han considerado son la inclinación del terreno, la escabrosidad, las discontinuidades, y la dureza del terreno. Todas estas variables se calculan a partir de las imágenes obtenidas por el sistema de visión del robot. En el trabajo de Li, Jiang y Wang [16] la lógica difusa se emplea en la creación de una base de reglas que nos permiten detectar los bordes de la carretera a partir del sistema de visión con el que está equipado el robot móvil THMR-III. El método seguido consiste en clasificar, usando la base de reglas difusas, cada pixel de la imagen obtenida por el sistema de visión en negro o blanco según pertenezca o no a los bordes.



JUSTIFICACIÓN.
Existen varios  trabajos relacionados con detección de obstáculos utilizando algoritmos de robot móvil en [13], [14] y [15], Howard, Seraji y Tunstel  que habla sobre atravesabilidad de un objeto, los de Graves, Mollenhauer y Skubic en [25] sobres navegación, estos dos trabajos se basan en el modelo de percepción vía sensores externos del robot. El trabajo de [7] Goodridge, Kay y Luo describe un sistema de control reactivo basado en comportamientos, también revisando los procedimientos de algunos  modelos de algoritmos como el  geométrico. En el trabajo de [8] Gasós y Saffiotti  utilizan el modelo  topológico en la navegación de robots [8] y [10].   

Howard, Seraji y Tunstel [13], [14] y [15],  exponen un método basado en lógica difusa para el análisis de las características de un terreno, diseñaron un índice de "Atravesabilidad" (Traversability Index) que consiste en que definen las características del terreno convirtiéndolas en variables difusas. Las funciones de pertenencia de los conjuntos que definen estas variables se usan en un conjunto de reglas difusas que determinan la "atravesabilidad" del terreno. En el trabajo de Li, Jiang y Wang [16] la lógica difusa se emplea en la creación de una base de reglas que nos permiten detectar los bordes de la carretera a partir del sistema de visión con el que está equipado el robot móvil THMR-III. El método seguido consiste en clasificar, usando la base de reglas difusas, cada pixel de la imagen obtenida por el sistema de visión en negro o blanco según pertenezca o no a los bordes.
En vista de que no existe ningún trabajo que utilice lógica difusa para detección y paso de obstáculos sin colisiones decidimos hacer en este trabajo.



OBJETIVOS
·         OBJETIVO GENERAL.
El objetivo de este proyecto es diseñar  y aplicar un algoritmo para la detección y paso de obstáculos sin colisiones, utilizando lógica difusa  con un robot LEGO móvil rodante.


·         OBJETIVOS PARTICULARES.
1.       diseño del algoritmo utilizando lógica difusa para la detección y eliminación de colisiones con un obstáculo.
2.       programación del algoritmo utilizando el IDE robot C (que utiliza un lenguaje similar a C y C++) y  verificando con el simulador, para después probarlo con el robot LEGO móvil.

LÍMITES Y ALCANCES.
Este proyecto está limitado solamente al diseño y aplicación del algoritmo, así como al cumplimiento de los objetivos generales y particulares, las cuestiones como comparación de este proyecto con otros o la modificación para agregar más opciones al algoritmo se dejan como trabajo futuro.




METODOLOGÍA.
La realización del proyecto está basado en la necesidad de crear un algoritmo que sea capaz de localizar y evadir obstáculos para ello será dividido en tres fases.
Primera fase: Lo primero que hicimos fue investigar  qué  tipo robot y que tipo plataforma o arquitectura  se utilizará. Para poder elegir el robot a utilizar se cotejo con varios tipos entre ellos  el modelo SRV-1 con sistema de visión estereoscópica de la compañía Surveyor. El sistema de visión estereoscópica se compone de dos cámaras, cada una de ellas incluye su propio procesador, la desventaja más grande es el precio, ya que es demasiado caro, otro robot cotejado fue el que se programa con scratch el cual tampoco nos sirvió por qué no utiliza “datalogin”, es decir, que los sensores que ocupa no trasmiten señales externas, además de que el robot es fijo y serviría para poder detectar los objetos, el otro fue el robot LEGO algunas de las ventajas de este robot son Fácil de montar y desmontar, no es necesario usar soldadura, ni tornillo. Todo lo que se arma se puede desarmar rápidamente. Además, eso permite usar las piezas en múltiples diseños distintos. Muy extendido por todo el mundo, lo que permite encontrar gran cantidad de información e ideas por Internet, diseños, soluciones, participar en foros, competiciones. No es un pack cerrado, es decir, se puede comprar más ampliaciones de lego, adquirir piezas deterioradas o perdidas, o añadir piezas echas manualmente, como por ejemplo, sensores o motores, e incluso circuitos neumáticos. Múltiples posibilidades y lenguajes de programación, desde el nivel más básico e intuitivo, como el Robolab, uso de lenguajes conocidos como C o Java, utilización de Linux. Que sea escalable, es decir, que a partir de un material básico haya opciones de ampliación. Muy indicado para entornos educativos, desde colegios a universidades, pues se puede aprender de forma fácil tanto mecánica como electrónica. Unas de las desventajas serian colocación de las baterías. Tanto en el NXT cómo en el RCX de LEGO, se alimentan mediante seis pilas AA R6, que deben ser colocadas dentro del ladrillo. Esto obliga a diseñar el robot con la necesidad de acceder directamente al bloque, para poder cambiar las pilas, limitando la construcción del robot. Relación masa-volumen. Las piezas LEGO no son útiles en diseños donde la relación masa-volumen se hace crítica. Por ejemplo, para construir un robot de SUMO, no sería eficiente, pues la estructura LEGO es demasiado liviana, y se deberían añadir pesos para hacer el robot más robusto, o el caso contrario, para construir robot pequeños, ligeros, y resistentes, las piezas LEGO son mucho peores que los materiales cómo la fibra de carbono. Precio. Obviamente, comprar un robot “prefabricado”, resulta un poco más  caro que construirte tu propio robot, además de que la licencia es multiplataforma, es decir, que se puede utilizar en Windows, Linux, Mac, por ello y la viabilidad de uso se eligió el ROBOT LEGO.
Segunda fase: Una vez elegido el robot móvil se precederá al diseño y elaboración del algoritmo de localización y detección para ello se utilizara palabras claves en C y C++ así como código en los mismos leguajes de programación.
Tercera fase: Ya terminado el algoritmo se procederá a probarlo primero en un simulador 3D donde se verá si el algoritmo realizara  lo programado y detectar errores y corregirlos, ya depurado y corregidos los errores, vía USB se montara el programa en el NTX del robot LEGO y se experimentará con el robot.

Bibliografía.

[1] Rafael C. González, Richard E. Woods, Tratamiento digital de imágenes, (USA: Addison-
Wesley, 1996).

[2] Stuart J. Russell, Peter Norving, Inteligencia Artificial, (México: Prentice Hall).
[3] Aplicación del algoritmo de búsqueda por amplitud en un espacio finito utilizando cámara y sensores de acercamiento a un robot con recursos limitados.
M. M. Bustillo 1, E. Coraza1, A. Campeche1 , A. Zehe 2 , J. I. Cortez1
Benemérita Universidad Autónoma de Puebla, Laboratorio de Arquitectura de Computadoras
1 Facultad de Ciencias de la Computación
2 Facultad de Ciencias de la Electrónica
[4] Learning to compose fuzzy behaviors for autonomous agents, A. Bonarini, F. Basso, International Journal on Approximate Reasoning, 17 (4), 409-432, 1997.

[5] Selecting behaviors using fuzzy logic, F. Michaud, In Proc. IEEE Int. Conf. on Fuzzy Systems,
Barcelona, Spain, 585-592, 1997.
[6] A decision-theoretic approach to fuzzy behavior coordination, P. Pirjanian, M. Mataric, IEEE International Symposium on Computational Intelligence in Robotics and Automation, 1999.
[7] Multi-layered fuzzy behavior fusion for reactive control of an autonomous mobile robot , S. G.
Goodridge, M. G. Kay, R. C. Luo, In Proc. IEEE Int. Conf. on Fuzzy Systems, Barcelona, Spain ,
579-584, 1997.
[8] Using Fuzzy Sets to Represent Uncertain Spatial Knowledge in Autonomous Robot , J. Gasós, A. Saffiotti, Spatial Cognition and Computation, Kluwer Academic Publishers, Hingham, MA, USA ,
1, 205-226, 1999.
[9] Integrating Fuzzy Topological Maps and Fuzzy Geometric Maps for Behavior-Based Robots , E.
Aguirre, A. González, International Journal of Intelligent Systems, 17, 333-368, 2003.
[10] Uncertainty Representation for mobile robots: perception, modeling and navigation in unknown environment. , J. Gasós, A. Rosetti, Fuzzy Sets and Systems.
[11] Perception-based self-localization using fuzzy locations , A. Saffiotti, L. P. Wesley, Reasoning with
Uncertainty in Robotics. LNAI. Berlin. DE., Editado por M. van Lambalgen, L. Dorst, F. Voorbraak
, Springer-Verlag , 368-385, 1996.
[12] The FuzzBug Mobile Robot , S. Graves, J. Mollenhauer, M. Skubic, Technical Report 93-041,
Department of Computer Science, Texas A&M University , Mayo 1993.
[13] A Real-Time Autonomous Rover Navigation System , Ayanna Howard, Homayoun Seraji, In Proc. of the World Automation Congress, 2000. (http://citeseer.ist.psu.edu/howard00realtime.html)

[14] Enhancing Fuzzy Robot Navigation Systems by Mimicking Human Visual Perception of Natural
Terrain Traversability , Ayanna Howard, Edward Tunstel, Dean Edwards, Carlson Alan, Joint 9th
IFSA World Congress/20th NAFIPS International Conference, Vancouver, Canada, Julio 2001.
(http://robotics.jpl.nasa.gov/people/tunstel/papers/ifsa_nafips01.pdf)

[15] A Rule-Based Fuzzy Traversability Index for Mobile Robot Navigation , Ayanna Howard, Homayoun Seraji, Edward Tunstel, IEEE International Conference on Robotics and Automation, Seoul (Korea), Mayo 2001. (http://citeseer.ist.psu.edu/howard01rulebased.html)

[16] Road recognition for vision navigation of an autonomous vehicle by fuzzy reasoning , W. Li, X.
Jiang, Y. Wang, Fuzzy Sets and Systems, 93, 275-280, 1998.
[17] Aplicación de la Lógica Difusa en Robótica. Carmen López Martínez
Programa de Doctorado: Diseño, Análisis y Aplicaciones de Sistemas Inteligentes Curso:"Planificación y Robótica" klopez@ugr.es

[18] AUTO-LOCALIZACION DE UN ROBOT MOVIL  AIBO MEDIANTE EL METODO DE MONTE CARLO
Pablo Guerrero, Javier Ruiz-del-Solar
Dept. Ing. El.ctrica, Casilla 412-3, Universidad de Chile.

domingo, 6 de noviembre de 2011

ALGORITMO DE BUSQUEDA

En la robótica pueden ser utilizados diversidad de algoritmos que se eligen y aplican de
acuerdo a la tarea que debe realizar el robot y de las características de éste.
Se aplican técnicas de estimación de bordes y filtros para el reconocimiento de objetos por medio del color, se utilizan algoritmos de búsqueda que tienen aplicaciones en cualquier problema de búsqueda en espacio de estados por ejemplo en optimización de rutas aéreas. Los algoritmos de optimización son necesarios para determinar la distancia óptima, cuando el objeto es localizado.
La descripción de las etapas de desarrollo que son: los recursos del robot, descripción del
espacio de trabajo, función de la cámara en la búsqueda y el análisis del algoritmo de
búsqueda por amplitud y la modificación que se realizo para la solución de nuestro problema.
El algoritmo de búsqueda es un procedimiento de control en el que se revisan
todas las trayectorias de una determinada longitud antes de crear una trayectoria más larga.

Sus características son las siguientes:
Los nodos se expanden por orden no decreciente de profundidad.
Se implementa usando una estructura de cola para la lista de nodos.
Suponiendo un factor de ramificación r y un camino hasta la solución de profundidad
por el número de nodos expandidos en el peor de los casos es: r0 + r + r2 + ... + rp
Complejidad en tiempo y espacio: O(r)p

Su procedimiento es el siguiente:

Crea una agenda de un elemento (el nodo raíz)
hasta que la agenda este vacía o se alcance la meta
si el primer elemento es la meta
entonces acaba
si no elimina el primer elemento y
añade sus sucesores al final de la agenda.

Bibliografía:
  • ·         Internet Electronic Journal Nanociencia et Moletrónica

Diciembre 2003, Vol. 1; N°2, págs. 120-133

sábado, 5 de noviembre de 2011

LOGICA DIFUSA

En Psicología: Resolución de problemas que implica cierto grado de inferencia e intuición para lograr la conclusión propia; vista como una distinción crucial entre la inteligencia humana y la mecánica.

En Inteligencia Artificial: Método de razonamiento de maquina similar al pensamiento humano, que puede procesar información incompleta o incierta, característico de muchos sistemas expertos.

Una de las disciplinas con mayor número de seguidores es la llamada lógica difusa o borrosa, la lógica que utiliza expresiones que no son totalmente ciertas ni completamente falsas, es decir puede tomar un valor cualquiera dentro de un conjunto de valores que están entre la verdad absoluta y la falsedad  total. La lógica difusa permite tratar información imprecisa, en términos de conjuntos borrosos que se combinan en reglas para definir acciones; un ejemplo de esto sería: si la temperatura es alta entonces enfriar mucho, entonces  decimos que los sistemas de control basados en lógica difusa combinan variables de entrada, definidos en conjuntos difusos, por medio de grupos de reglas que producen uno o varios valores de salida.
Comercialmente la lógica difusa se ha utilizado con éxitos para la fabricación de maquinas y productos de consumo. En aplicaciones correctas, los sistemas difusos son simples y pueden ser entendidos y utilizados  por personas no especialistas en sistemas de control.
Una muestra de aplicaciones comerciales y de consumo son las siguientes:
Control de ambiente:
Equipos  de aire acondicionado
Humidificadores
Equipos para la casa:
Lavadoras y secadoras
Aspiradoras
Tostadores
Hornos de microondas
Y mas
“La lógica difusa  es una lógica alternativa a la lógica clásica que pretende agregar un grado de vaguedad en las cosas que evalúa. “
“En vez de trabajar con el clásico concepto de inclusión o exclusión, introduce una función que expresa el grado de “pertenencia” de una variable hacia un atributo o “variable lingüística” tomando valores enel rango de 0 a 1.”


Ejemplo de lógica difusa:

Lógica Difusa establece que una puerta no tiene por que estar necesariamente abierta o cerrada, existen además otros estados:
Puerta abierta (1)
Puerta bastante abierta (0.8)
Puerta abierta a medias (0.5)
Puerta casi cerrada (0.1)
Una puerta está cerrada (0)


Bibliografía:

Ø  Fuzzy Logic (Lógica Difusa)   autor: HILDA CALLEJAS.
Ø  Fuzzy Logic Systems              autor: Jim Vernon.
Ø  Cap2.prn.pdf                           autor: Rosanna.

domingo, 2 de octubre de 2011

TRES Y NINGUNO POR UTILIZAR

No se cual elegir player, simulador virtual de robot o lego 


"Player es una interfaz de texto y solo para linus o sus plataformas, programacion en C y C++"


"VRS una interfas mas grafica, 3D, o 2D como lo quieras poner, parecido al LEGO"
http://robotica.isa.upv.es/virtualrobot/


"LEGO grafico totalmente, 3D, diseñado especialmente para desarrollar actividades para niños, tambien enseñan a programar a los niños"
http://www.lego.com/es-es/

lunes, 12 de septiembre de 2011

CAPITULO 3.- RESOLVER PROBLEMAS MEDIANTE BUSQUEDA

¿Que es un agente resolvedor de problemas?

Para mi un agente resolvente de problemas es un metodo que elige las secuencias o ruta a seguir para llegar a una solucion optima de un problema.  para a un agente resolvente tenemos que identificar algunos elementos como lo  son el problema y la solución. Estos algoritmos no son de información o como dice el libro no son informados ya que la unica informacion que te dan es el titulo del problema, el algoritmo es de informar ya que busca secuencias de solucion o formas de como llegar a un resultado optimo.

Para poder aplicar el agente resolvente tenemos que fijarnos un objetivo claro y hacernos unas preguntas ¿que hacer? y ¿como lo puedo hacer?


Estos son creo yo algunos pasos que podemos seguir para resolver un problema:
1.- formulacion del objetivo 2.-formulacion del problema 3.- busqueda 4.-solucion5.-ejecucion
"El agente puede construir secuencias de acciones que alcanzan sus objetivos ".

sabemos que este agente esta basado en objetivos, estos tipos de agentes que son inteligentes deben de maximar su rendimiento tratando de encontrar su objetivo y lograr satisfacerlo.

Al proceso de hallar un secuencia de solucion se le conoce como busqueda el cual es un algoritmo que toma como principio un problema y devuelve una solucion y una vez encontrada la solucion tenemos que proceder a la ejecucion de las acciones asi podemos mostrar o crear un pequeño modelo de agente <<formular, buscar, ejecutar>>

bibliografia: INTELIGENCIA ARTIFICIAL
UN ENFOQUE MODERNO
Segunda edición
Stuart J. Russell y Peter Norvig

martes, 6 de septiembre de 2011

PRIMER CAPITULO INTRODUCCION A LA INTELIGENCIA ARTIFICIAL

Vamos a ver este es la primera entrada, aunque deberían ser ya tres pero bueno el maestro nos explico que deberíamos escribir en nuestro blogger lo que no nosotros pensábamos de la IA (inteligencia artificial) entre mis compañeros discutimos que era  o mas o menos nos hacercaramos a un definición, yo pienso que la inteligencia artificial es una ciencia que desarrolla sistemas donde sistema trate de hacemejar o igualar la reacciones humanas, así como sus acciones, la forma de pensar y establezca comunicación como un verdadero humano, tambien entendí de este capitulo que existen 6 características que debe tener un sistema de IA de las que me acuerdo:
1.- Que interprete el lenguaje natural del desarrollador.
2.- Que el sistema razone.
3.- Que el sistema aprenda solo. 
4.- Que el sistema tenga la opción de manipular objetos.
también en se ve en el capitulo los diferentes enfoques en el que el ser humano se desarrolla como lo son el enfoque racional, el enfoque que incluye las leyes del pensamiento(simbolos y la logica).
mis compañeros casi comparten la misma opnion en lo visto aunque cada uno tiene una deficion algo diferente ala que yo presento.
y como el maestro nos dijo que la prenguta es la mejor forma de aprender yo pregunto: 
¿ Para ti que es la IA?

puedes consultar el siguiente libro:
INTELIGENCIA ARTIFICIAL
UN ENFOQUE MODERNO
Segunda edición
Stuart J. Russell y Peter Norvig