1
UNIVERSIDAD DE LAS CIENCIAS INFORMÁTICAS FACULTAD 5
Trabajo de Diploma para Optar por el Título de Ingeniero en Ciencias Informáticas
Título: Sistema de Percepción para Agentes Virtuales
Autores:
Luis Daniel Hernández López Jorge Luis Peña Escobar
Tutor:
Ing. Omar Correa Madrigal
Ciudad de La Habana, Junio del 2008
“Año 50 de la Revolución”
Declaración de Autoría
Declaramos que somos los únicos autores del presente trabajo. Reconocemos a la Universidad de las Ciencias Informáticas como la propietaria de los derechos patrimoniales del presente trabajo, con un carácter exclusivo.
Para que así conste firmamos la presente Declaración de Autoría a los 31 días del mes de mayo del año 2008.
____________________________ ____________________________
Autor Autor
Luis Daniel Hernández López Jorge Luis Peña Escobar
__________________________
Tutor
Omar Correa Madrigal
I
A nuestro tutor por los aportes significativos que hizo al Trabajo de Diploma.
Al Ing. Parra por toda su ayuda en la realización de este trabajo y por ser un gran amigo.
A Abarmarys por todo el apoyo brindado.
Al Gera por soportar nuestra compañía y estar ahí en todo momento.
A todos nuestros amigos por colaborar de una forma u otra con nosotros.
II
A mi mamá en especial por apoyarme y confiar en mí siempre.
A Abarmarys por siempre estar a mi lado, dándome fuerzas para seguir adelante en los momentos más difíciles.
A mi abuela, hermana, sobrinos, a toda mi familia que quiero mucho.
A todos los que han hecho posible que alcance mis metas.
Luis Daniel Hernández López
A mis padres por todo el apoyo brindado en los buenos momentos y en los no tan buenos, por ser mis guías y ejemplo ante la vida y sobre todo por su amor incondicional hacia mí.
A mi tío Lázaro por estar siempre ahí tan cerca de mí, por todo su cariño y ayuda.
A mi familia que sin ellos esto nunca hubiera sido posible.
Jorgito.
III
Resumen
La Realidad Virtual, consiste en realizar simulaciones del mundo real, y de la percepción humana. Entre las herramientas más importantes que se utilizan para el desarrollo de entornos virtuales, se encuentra la Inteligencia Artificial, la cual permite al programador superar su imaginación y la del usuario. Para que un entorno virtual logre mayor realismo, se necesita crear Agentes Virtuales que sean capaces de poseer una percepción casi humana.
El presente trabajo tiene como objetivo desarrollar un Sistema de Percepción para Agentes Virtuales de la Biblioteca de Inteligencia Artificial de la Facultad 5, el cual permitirá obtener los datos de un entorno virtual en tiempo real. En este documento se muestran las facilidades que brindan el uso de un sistema de percepción, así como la funcionalidad de la biblioteca con este módulo. Se desarrolló el diseño completo del sistema, así como su implementación en C++.
Como resultado de este proceso el sistema de percepción que se obtuvo cuenta con las características necesarias para su acople a la biblioteca. Con su desarrollo se facilita la programación de la parte inteligente de los juegos, reduciendo además el tiempo de desarrollo de estas aplicaciones.
Palabras Claves: realidad virtual, inteligencia artificial, sistema de percepción, entornos virtuales, biblioteca de inteligencia artificial.
IV
Tabla de Contenidos
Introducción ... 1
Capítulo 1. Fundamentación Teórica ... 4
1.1. Realidad Virtual ... 4
1.2. Orígenes de la Inteligencia Artificial ... 5
1.3 Surgimiento del término Inteligencia Artificial ... 6
1.4 Tipos de Inteligencia ... 8
1.5. Agentes Inteligentes ... 9
1.6 Percepción en Agentes Inteligentes ... 11
1.7 Sistemas de Percepción ... 12
1.8 Técnicas de Percepción. ... 13
1.8.1 Trazado de rayos ... 13
1.8.2 Técnicas de Ordenamiento Espacial... 14
1.8.2.1 Diagrama de Voronoi ... 15
1.8.2.1.1 Triangulación Delaunay ... 15
1.8.2.2 Jerarquías de Volúmenes Fronteras ... 17
1.8.2.3 Árboles Octales (Octree) ... 18
1.8.2.4 ÁrbolesBSP ... 20
1.8.2.5 Rejilla Regular ... 21
1.8.2.6 Datos manualmente generados ... 22
1.8.2.7 Scripting ... 22
1.8.2.8 La memoria a corto plazo ... 23
1.8.2.9 Detección de Colisiones ... 25
1.8.2.10 Mallas de Navegación ... 26
1.8.2.11 Lista ... 27
1.9 Interacción del Agente con el Sistema de Percepción ... 28
1.9.1 Sensores ... 28
1.9.2 Memoria del Agente ... 29
1.9.3 Time Slicing ... 30
1.9.4 Prioridad de Exploración ... 31
1.9.5 Meta Negociación ... 31
Capítulo 2. Soluciones Técnicas ... 35
V
2.1 Sistema de Percepción ... 35
2.2 Recolector de Datos (Data Gatherer) ... 35
2.2.2 Datos Medioambientales (Environmnet Data) ... 36
2.2.3 Datos Topológicos (Topological Data) ... 37
2.2.4 Faros (Beacon Data) ... 38
2.3 Modelos Cognitivos... 39
2.3.1 Lista ... 39
2.3.2 Árboles Octales (Octree) ... 40
2.3.3 Rejilla Regular ... 40
2.4 Datos ... 41
Capítulo 3. Propuesta del Diseño ... 43
3.1 Reglas del Negocio ... 43
3.2 Modelo del Dominio ... 44
3.2.1 Glosario de Términos del Dominio ... 44
3.3 Captura de Requisitos ... 46
3.3.1 Requisitos Funcionales ... 46
3.3.2 Requisitos No Funcionales ... 46
3.4 Modelo de Casos de Usos del Sistema ... 47
3.4.1 Actores del Sistema ... 47
3.4.2 Casos de Usos del Sistema... 47
3.4.3 Diagrama de Casos de Usos del Sistema ... 47
3.4.4 Descripción de los Casos de Usos del Sistema ... 48
3.5 Diseño del Sistema ... 51
3.5.1 Diagrama de Clases del Diseño... 52
3.5.2 Diagramas de Secuencia………... 52
3.6 Descripción de las Clases del Diseño……….58
3.7 Diagrama de Componentes………..60
3.8 Interacción del Modulo con la Librería………61
Conclusiones ... 62
Recomendaciones ... 63
Referencias Bibliográficas ... 65
Bibliografía ... 68
Glosario ... 70
VI
Índice de Figuras
Figura 1. Ejemplo de Agentes Virtuales ... 9
Figura 2. Ejemplo de Agentes Virtuales ... 10
Figura 3. Ejemplo de Sistema de Percepción” Control de crecimiento y densidad de cultivos de PISCIFACTORIA... 13
Figura 4. Funcionamiento del Algoritmo de Trazado de Rayos ... 13
Figura 5. Ejemplo Diagrama de Voronoi, los puntos azules son los nodos. ... 15
Figura 6. Ejemplo de La Triangulación de Delaunay ... 17
Figure 7. Jerarquía de Volúmenes Frontera ... 17
Figure 8. Método similar al que se utiliza para representar un Octree en 3D ... 19
Figure 9. árbolBSP de un espacio 2D ... 20
Figure 10. Ejemplo de Rejilla Regular... 21
Figure 11. Billy y dos oponentes. Las líneas describen el campo de visión de Billy ... 23
Figure 12. Billy elimina a Basher ... 23
Figure 13. Billy es derrotado ... 24
Figure 14. Ejemplo de Mallas de Navegación ... 26
Figure 15. Ejemplo de toma de decisiones ... 32
Figure 16. Gráfico del evaluador buscar vida ... 33
Figure 17. Fórmula ... 33
Figure 18. Datos Medioambientales compuestos de líneas rectas (las paredes) y círculos (los obstáculos). ... 36
Figure 19. Datos Topológicos y medioambientales. Las flechas y círculos representan los puntos tácticos, los círculos los puntos de ocultación y las flechas las entradas del cuarto. Las líneas indican las paredes cercanas usadas para evitar la colisión. ... 38
Figure 20. Diagrama de clases conceptuales del Modelo de Dominio ... 44
Figure 21. Diagrama Casos de Uso del Sistema de Percepción para Agentes Virtuales ... 48
Figure 22. Diagrama de Clases del Diseño ... 52
Figure 23. Diagrama de Secuencia: Caso de Uso: Adicionar Datos del Sistema ... 53
VII
Figure 24. Diagrama de Secuencia: Caso de Uso: Eliminar Datos del Sistema ... 54
Figure 25. Diagrama de Secuencia: Caso de Uso: Devolver los datos que puede percibir ... 55
Figure 26. Diagrama de Secuencia: Caso de Uso: Devolver lista de datos clasificados según el tipo ... 56
Figure 27. Diagrama de Secuencia: Caso de Uso: Actualizar Beacons ... 57
Figure 28. Diagrama de Componentes ... 61
Figure 29. Relación con la Biblioteca de IA ... 62
1
Introducción
En la actualidad las tecnologías prácticamente dominan al mundo y al hombre, ha evolucionado rápidamente hasta el punto de lograr que lo que se consideraba en un tiempo como ciencia –ficción ahora sea una parte importante de la realidad del hombre. La era de las máquinas inteligentes que pueden procesar gran cantidad de información, que realizan cálculos complejos a velocidades inimaginables, que realizan el trabajo del hombre de igual a igual ha llegado. Es abrumador pero el mundo ha alcanzado un desarrollo que nunca se pensó y no es solo lo que se ha logrado desarrollar, sino lo que se logrará en el futuro.
La utilización de la Inteligencia Artificial no se centra solo en el área de la informática sino que se ha ido expandiendo en diferentes áreas como la salud, la seguridad, la educación, en el ámbito militar, entre otros. En la informática donde más se han utilizado los sistemas de percepción en los Juegos de estrategias.
Una de las herramientas más usadas en la Realidad Virtual es la Inteligencia Artificial, donde el usuario puede probar los límites de su imaginación. La Realidad Virtual no es más que la representación digital de una parte de la Realidad, que da la sensación a los individuos de encontrarse dentro de una situación real, permitiendo interactuar con lo que lo rodea.
Por estas razones puede afirmarse que la realidad virtual es una pseudorrealidad alternativa, perceptivamente hablando, consiste de manera básica en simular todas las posibles percepciones de una persona como los gráficos para la vista, sonido, tacto e incluso sensaciones de aceleración o movimiento. Estas sensaciones se deben presentar al usuario de manera que se siente inmerso en el universo que es generado por el ordenador, hasta el punto de dejar de percibir la realidad.
Actualmente Cuba esta dando sus primeros pasos en cuanto a Inteligencia Artificial se refiere. La Universidad de las Ciencias Informáticas (UCI) ha encaminado su trabajo a este tipo de ciencia, investigando y desarrollando softwares en aras de incrementar nuestros conocimientos sobre este tema. Actualmente se están desarrollando softwares como:
simuladores de conducción, simuladores de un campo de tiro, desarrollo de juegos, simuladores quirúrgicos, entre otros.
2 Uno de los principales problemas que se presentan en los softwares de juego que utilizan la Realidad Virtual es introducir una percepción bastante similar al entorno donde se desarrolla el acontecimiento. La percepción es considerada como uno de los temas más importantes dentro de los juegos que son creados bajo la base de la Inteligencia Artificial.
Cada juego dirige la percepción de manera diferente, se conoce que la percepción más sofisticada puede imitar las limitaciones del mundo real. La percepción es mucho más que ver y oír, abarca todas las maneras en que un NPC (Non Playable Character, un personaje del juego) recoge los datos sobre el mundo, incluyendo el medio ambiente, informaciones topológicas, situaciones de la emboscada y las posiciones de paredes.
Actualmente los proyectos de Realidad Virtual que se desarrollan en la Universidad carecen de un sistema de percepción que les sirva como herramienta o librería que permita lograr una percepción real en cualquier ambiente o situación.
De ahí surge la siguiente interrogante a resolver: ¿Cómo elaborar un sistema de percepción capaz de analizar cualquier entorno y brindar la suficiente información a los Agentes Virtuales para su interacción con los entornos virtuales?
El objeto de estudio son todas las técnicas y algoritmos utilizados en la percepción de los elementos Inteligentes y el campo de acción se centra en los algoritmos y técnicas utilizadas para la percepción en los Videojuegos.
El objetivo general que se propone con este trabajo consiste en desarrollar el Sistema de Percepción para Agentes Virtuales de la Biblioteca de Inteligencia Artificial de la facultad 5.
A continuación se presentan un grupo de tareas que permitirán satisfacer los objetivos que se plantean anteriormente:
Investigar las características de los diferentes tipos de percepciones que existen para los Agentes Virtuales.
Analizar y elaborar la arquitectura que tendrá el sistema.
Investigar los Datos Medioambientales y Analizar los Datos Topológicos.
Analizar e Investigar el uso de la percepción por los Agentes Virtuales.
Investigar sobre el uso de los sensores en los Agentes Virtuales.
Examinar los algoritmos que se deben seguir para implementar el Sistema.
3
Diseñar e implementar el sistema.
4
Capítulo 1. Fundamentación Teórica
La obtención dinámica de los objetos que se encuentran en un entorno virtual, tiene gran importancia para lograr una mejor percepción de los agentes inteligentes; convirtiéndose en uno de los desafíos más grandes a resolver en la realidad virtual.
En el presente capítulo se hace una breve historia de la evolución de la Inteligencia Artificial y se tratan definiciones como Realidad Virtual y Percepción para Agentes Inteligentes, específicamente en juegos que utilizan inteligencia artificial. Se analizaron los diferentes productos de software elaborados en el mundo y que tratan de simular la percepción humana. Se hace una breve introducción a las técnicas básicas que son usadas para lograr obtener una percepción que casi real.
1.1. Realidad Virtual
Concepto con el que se conoce a una serie de tecnologías que pretenden reproducir la realidad mediante la utilización de ordenadores y elementos añadidos. Generalmente, un ordenador genera una imagen falsa que el usuario contempla a través de un casco equipado con un visor especial, de manera que tiene la impresión de estar presente en la escena reproducida por el ordenador. [1]
En su grado más alto de sofisticación, los equipos de realidad virtual se completan con guantes y trajes equipados con sensores, que permiten «percibir» los «estímulos» y
«sensaciones» generados por el ordenador. En definitiva, el usuario percibe como real algo que no lo es. Aunque se ha aplicado mayoritariamente al mundo de los videojuegos, existen ya aplicaciones —en medicina, por ejemplo-- que han permitido importantes avances en la simulación de intervenciones quirúrgicas. [2]
En la actualidad la Realidad Virtual no tendría un desarrollo tan sorprendente si no existiera la Inteligencia Artificial.
Entre las aplicaciones de Realidad Virtual que necesitan de la Inteligencia Artificial encontramos:
5 digital interactivo, con independencia de su soporte. Los video juegos representan en la actualidad una de las entradas más directas de las nuevas generaciones a la cultura informática y a la cultura de la simulación. [3]
Los simuladores son programas de cómputo que representa situaciones de la vida real aplicables a cualquier saber. La simulación pone a disposición del usuario todas las funcionalidades del producto, para investigar y probarlas por sí mismo. El área de aplicación más conocida ha sido la aviación, actualmente existe simuladores para temáticas tan variadas como matemáticas, física, electrónica, matemáticas financieras, medicina, redes de datos, juegos interactivos y software educativo, entre otros. [4]
Los Juegos y los Simuladores son de gran importancia en la actualidad ya que permiten en un ambiente controlado llevar a cabo entrenamientos de situaciones extremas sin poner en peligro a personas.
Entrenamiento en tierra de los pilotos: facilita su aprendizaje sin tener que arriesgar sus vidas, y pone a su alcance la posibilidad de cualquier experimento.
Arquitectos: realizan los planos en realidad virtual evitando así la visita de los compradores.
Creación de nuevos fármacos: la realidad virtual permite ver átomos en tres dimensiones y estudiarlos.
Medicina: crean cadáveres virtuales que evitan el engorro y morbosidad de los cadáveres reales y su escasez.
Diseño de un asesinato: permite reproducir un crimen y así facilitar su juicio.
1.2. Orígenes de la Inteligencia Artificial
La Inteligencia Artificial (IA) ha tenido diversas definiciones desde sus inicios, una de ellas la sitúa dentro de una disciplina que tiene que ver con ciencias de la computación, que corresponde al esfuerzo de diferentes científicos para dotar a las computadoras de inteligencia. Se deriva de esta definición una de las técnicas que más se utiliza en el mundo, que consiste en lograr que un determinado programa se comporte de forma inteligente sin tener en cuenta el tipo de razonamiento que se emplee para lograr este objetivo. [5]
6 Una definición muy extendida es la de Hayes que consideró que la Inteligencia Artificial es la implementación de razonamientos inteligentes mediante técnicas propias de la Computación. Otra definición que también se acepta en un sentido amplio es la de Marvin Minsky (M.I.T.) que indica que la Inteligencia Artificial es una ciencia dedicada a la construcción de máquinas que implementan tareas propias de humanos dotados de Inteligencia. [6]
La inteligencia artificial es la ciencia que enfoca su estudio a lograr la comprensión de entidades inteligentes. Es evidente que las computadoras que posean una inteligencia a nivel humano (o superior) tendrán repercusiones muy importantes en nuestra vida diaria. [7]
1.3 Surgimiento del término Inteligencia Artificial
En 1956 durante un congreso efectuado en Dartmouth Estados Unidos se propuso el término de Inteligencia Artificial para agrupar a todos los métodos técnicas e intentos de simular el intelecto humano en la computadora. Casi todos los especialistas estuvieron de acuerdo con esto y quien acunó el término fue el matemático John MacCarthy (creador de Lisp) profesor del instituto tecnológico de Massachussets (MIT) a demás de MacCarthy son considerados padres de esta disciplina Marvin Minsky también del MIT y Herbert Simon y Allen Newell de la universidad de Carnegie-Mellon. [8]
Desde su surgimiento la Inteligencia Artificial ha tenido muchos críticos como Herbert Dreyfus, Joseph Weizenbaum y John Searle, quienes la ven como un fraude o ciencia ilegítima. Esta ciencia ha evolucionado tanto en la formalización, como en el establecimiento de sus técnicas. A continuación se presenta la evolución histórica de la misma. [9]
Cronología [10]
1936- Turing formaliza el concepto de computadora de propósito general.
1945- Von Neumann concibe el diseño de ―Programa almacenado‖ para PC digitales.
1946- Aparece ENIAC, la primera PC digital de propósito general dedicada.
1950- Turing describe su test para conocer si una PC es inteligente 1955- Bernstein desarrolla el primer programa para jugar ajedrez.
7 1956- MacCarthy organiza la conferencia de Dartmouth e introduce el término de Inteligencia Artificial.
Newell, Shaw y Simon desarrollan el Logia Theorist primer programa de Inteligencia Artificial exitoso.
1957- MacCarthy desarrolla el LISP (primer lenguaje de Inteligencia Artificial). Newell, Shaw y Simon comienzan los trabajos para encontrar un solucionador general de problemas (GPS).
Chomsky introduce transformaciones gramaticales para modelar la sintaxis de los lenguajes naturales.
1965- Feigenbaum desarrolla DENDRAL (1er Sistema Experto).
Dreyfus publica el artículo ―Alchemy And Artificial Intelligence ―
1966- Quillian desarrolla las redes semánticas.
1967- Greenblatt desarrolla MacHack, el primer programa de ajedrez profesionalmente competente.
1970- Aparece Learning Estructural Description for Examples de Winston (Primer artículo que se dedicó al aprendizaje automatizado).
Colmerauer desarrolla el lenguaje de programación Prolog.
1972- Es desarrollada MYCIN, primer sistema experto en utilizar reglas de producción.
Winograd completa el SHRDLU un programa para el procesamiento del lenguaje natural.
1974- En su artículo ―A framework for representing Knowledge‖, Minsky define los marcos.
1975- El MIT inventa la máquina LISP primera especializada en Inteligencia Artificial.
1982- Aparece una teoría sobre visión desarrollada por MARR.
Comienzan las investigaciones los japoneses y la quinta generación de computadoras.
8 1986- Se introduce la primera PC conexionista por Thinking Machines Corporation.
Aparece el primer micro PC de 32 bits.
1987- Primera Conferencia Internacional sobre redes neuronales artificiales.
1988- Primera PC ajedrecista Hitech.
Etapas
1-Oscura
Década de los 50 surgen las Redes Neuronales (RNA).
2- De la Razón
Década de los 60 desarrollo de la lógica y los demostradores de teoremas
3- Romántica
Década de los 70 surgimientos de los Sistemas Expertos
4-Ilustración
Década de los 80 desarrollo del aprendizaje automatizado o extracción.
Automatización del conocimiento 5-Renacimento Gótico
Década de los 90 resurgimientos de las Redes Neuronales.
1.4 Tipos de Inteligencia
Actualmente se conocen tres tipos de Inteligencia Artificial bien definidos, los cuales mencionaremos en orden de acuerdo al grado de desarrollo e investigación que se ha adelantado sobre los mismos: [11]
Sistemas Expertos
9
Sistemas Basados en Lenguaje Natural
1.5. Agentes Inteligentes
Figura 1. Ejemplo de Agentes Virtuales
A continuación presentamos diferentes conceptos formulados sobre los agentes inteligentes más conocidos como AVIs (Agentes Virtuales Inteligentes).
―Los agentes son sistemas computacionales que habitan en entornos dinámicos complejos, perciben y actúan de forma autónoma en ese entorno, realizando un conjunto de tareas y cumpliendo objetivos para los cuales fueron diseñados‖, P. Maes. [12]
―Un agente es un sistema situado en alguna parte de un entorno que percibe dicho entorno y actúa en él en beneficio de su propia agenda, el efecto de su actuación se nota en el entorno.‖ Franklin [13]
10
―Los agentes son entidades que colaboran con sus usuarios para mejorar el cumplimiento de sus tareas de usuario‖, Foner. [14]
―Un agente es un producto SW que sabe hacer cosas que uno podría hacer por si mismo si tuviese tiempo‖, Selker. [15]
En la actualidad se observan Agentes Inteligentes interactuando en los entornos virtuales, por ejemplo: [16]
En los juegos de estrategia.
-Te acercas silenciosamente por detrás a un Agente Inteligentes se vuelve y te dispara.
-Tú corres y te escondes. Sin embargo el Agente Inteligentes va hasta el local donde estás abre la puerta y lanza una granada.
-Notas dos guardias en una torre que vigilan. Hay un área por donde no hay luz, tratas de pasar y sin embargo te disparan.
Figura 2. Ejemplo de Agentes Virtuales
11 Esto significa que los Agente Inteligentes están dotados de un sistema de percepción que les brinda en tiempo real toda la información del entorno que necesitan para comportarse de forma tal que parezca que poseen inteligencia. [17]
1.6 Percepción en Agentes Inteligentes
Se conoce por Percepción al primer conocimiento de una cosa por medio de las impresiones que comunican los sentidos: percepciones sensoriales; las personas daltónicas tienen dificultad en la percepción de ciertos colores.
Manera en que una persona percibe o comprende algo: su percepción del mundo es muy diferente de la nuestra; los sentimientos pueden alterar, en alguna medida, la percepción de los hechos.
La percepción se considera como uno de los temas más importantes dentro de la robótica y los juegos que son creados bajo la base de la Inteligencia Artificial. Cada juego dirige la percepción de manera diferente, se conoce que la percepción más sofisticada puede imitar las limitaciones del mundo real. La percepción es mucho más que ver y oír, abarca todas las maneras en que un NPC (Non Playable Character, un personaje del juego) obtiene la información sobre el mundo, incluyendo la topología del entorno y agentes. [18]
La percepción provee de información a los agentes virtuales para que parezcan lo más real posible. El adelanto en las tecnologías ha permitido al hombre interactuar con mundos virtuales interactivos, esta interacción del usuario con estos entornos virtuales han llevado a la necesidad de crearlos de forma tal que recreen fielmente la realidad, y para ello se debe dotar a los Agentes Inteligentes de sistemas que permitan su comportamiento en los entornos virtuales de forma que simulen la inteligencia a la hora de tomar decisiones. Surge entonces la necesidad de diseñar y crear sistemas de percepción capaces de recopilar la información necesaria del entorno que rodea al Agente Inteligente.
Hoy en día la mayoría de sistemas de percepciones que se desarrollan no solo recopilan esta información, se centran mayormente en la simulación y el entrenamiento de agentes que se especializan para vivir situaciones reales que pueden ser riesgosas para el usuario.
12
1.7 Sistemas de Percepción
En la actualidad se han desarrollado múltiples sistemas de percepción con diferentes finalidades en dependencia de la necesidad a satisfacer. Presentan múltiples usos como en detección, monitorización y modelado de fuegos forestales, protección del medio ambiente, simulación de la percepción sensitiva del hombre, estudiar los lazos que establece un individuo con el espacio que le rodea en una situación de conducción, y es utilizado ilimitadamente en los video juegos.
A continuación mostramos ejemplos de los diferentes Sistemas de Percepción que existen o se están desarrollando en la actualidad:
Modelo de Percepción para Agentes Virtuales Inteligentes basado en el sistema de percepción de los seres humanos: sistema que permite introducir una percepción sensitiva similar a la que poseen los seres humanos que permite a los AVIs percibir, en tiempo real, el entorno que le rodea con una claridad de percepción similar a la que poseen los seres humanos. [19]
Sistema de Simulación para estudiar la percepción humana: estudia los mecanismos unidos a la percepción sensorial del movimiento y del espacio, que permitiendo principalmente una optimización de las herramientas empleadas en materia de realidad virtual. El objetivo del sistema es estudiar los lazos que establece un individuo con el espacio que le rodea en una situación de conducción. En concreto, se trata de investigar las sensaciones de desplazamiento, como la aceleración y el frenado. Los investigadores estudiarán mediante este sistema también el escenario próximo al conductor, y particularmente su percepción en el hábitat. [20]
Control de crecimiento y densidad de cultivos de PISCIFACTORIA: se realiza la aplicación de técnicas de visión por computadora mediante procesamiento de imágenes y sensores de proximetría para determinar el número, tamaño y forma de individuos de diferentes especies en diferentes estados de crecimiento. La adquisición de imágenes se realiza tanto desde el exterior de los tanques como en su interior. [21]
13
Figura 3. Ejemplo de Sistema de Percepción” Control de crecimiento y densidad de cultivos de PISCIFACTORIA
1.8 Técnicas de Percepción.
1.8.1 Trazado de rayos
El algoritmo de Raytracing intenta combinar la idea de trazar rayos para determinar las superficies visibles con la de un proceso de sombreado, donde se tiene en cuenta los efectos globales producidos por las reflexiones, refracciones y sombras arrojadas por otros objetos de la escena. Para conseguir los efectos de reflexión y refracción se trazan rayos recursivamente desde el punto intersección que se está sombreando teniendo en cuenta las propiedades del material del objeto interceptado. [22]
Figura 4. Funcionamiento del Algoritmo de Trazado de Rayos
14 Ventajas [23]
Gran realismo en comparación con otros métodos como el Raycasting o el Scanline Rendering.
Efectos como sombreado, sombras, reflexión y refracción son un resultado natural del proceso.
Relativamente fácil de implementar.
Desventajas: [24]
Intenta simular de forma muy simplificada la interacción de la luz con los objetos.
Traza rayos de luz desde el observador hacia los objetos de la escena donde se reflejará.
Brindan una pobre percepción del entorno.
Afecta considerablemente la eficiencia del sistema.
Debes encuestar varios rayos para obtener una respuesta a una pregunta como
―¿Donde me puedo esconder de un enemigo?‖
1.8.2 Técnicas de Ordenamiento Espacial
Existen diferentes técnicas para lograr ordenar el espacio 3D. El ordenamiento más sencillo que puede pensarse es una simple subdivisión del espacio en cajas idénticas. Esta sencilla técnica se conoce como “divide y vencerás” y consiste en dividir cada coordenada en un número adecuado de partes. El principal problema es la gran cantidad de partes vacías.
Una variante del método, que se utiliza en los juegos en primera persona con recorridos por salas separadas, consiste en la obvia agrupación de objetos los cuales se denominan métodos de celdas y portales. Hay muchas variantes para lograr el ordenamiento espacial en un entorno 3D, las más conocidas son:
Diagrama Voronoi
Jerarquías de Volúmenes Fronteras
Árboles Octales
ÁrbolesBSP
15
1.8.2.1 Diagrama de Voronoi
En su forma más general consiste en dividir el espacio en celdas o sectores, una para cada objeto; de modo que cada celda contiene los puntos del espacio que están más cerca de su objeto que de cualquier otro. La cantidad de variantes se debe al tipo de objetos y a la forma de medir la distancia. El diagrama de Voronoi se obtiene naturalmente en procesos de crecimiento que parten desde “semillas” fijas, Puede verse en el caparazón de una tortuga, o en el crecimiento de cristales en las aleaciones. [28]
Figura 5. Ejemplo Diagrama de Voronoi, los puntos azules son los nodos.
En la Figura 5 se muestran un conjunto de nodos y el diagrama de Voronoi. Todo el espacio se divide en celdas convexas, cada una es el conjunto de puntos más cercanos a su nodo que a otro. En general el Diagrama de Voronoi consiste en dividir el espacio, es aplicada en gran medida para la toma de decisiones en los robots. [29]
1.8.2.1.1 Triangulación Delaunay
Dado el conjunto de nodos, hay muchas triangulaciones posibles. La triangulación que se obtiene como “dual” del diagrama de Voronoi se llama Triangulación Delaunay. Esa dualidad es un concepto extendido de la teoría de grafos. Cada vértice del diagrama es centro de la circunferencia que equidista de los nodos y define el triangulo y se puede ver además la relación uno a uno entre aristas (segmento - mediatriz) y entre celdas y nodos.
[30]
16
Tabla 1. Específica en dos y tres dimensiones la dualidad de elementos.
El método conceptualmente más sencillo aprovecha la característica distintiva de la triangulación Delaunay: las esferas no contienen nodos en el interior. La construcción se realiza agregando los nodos, de a uno, en una triangulación preexistente. Empieza con un gran triangulo de nodos virtuales (inexistentes) que envuelve a todo el conjunto. Para cada nuevo nodo se buscan las esferas que lo contienen, que deben ser reemplazadas por otras nuevas. [31]
La reconstrucción es local, se limita al entorno natural del nuevo nodo, que es la unión de las esferas que lo contienen. El conjunto de triángulos cuyas circunferencias contienen al nuevo nodo forma un polígono que envuelve al nodo y se denomina “cavidad del nodo”, se reemplaza formando nuevos triángulos, cada uno con el nodo y una arista exterior de la cavidad. [32]
En 3D la cavidad es un poliedro y el procedimiento es igual. Cuando existen más de tres puntos “co-circulares” el diagrama de Voronoi tiene un vértice equidistante de cuatro (o más) puntos. En tal caso, la triangulación genera problemas numéricos que se suelen salvar perturbando la posición del nodo entrante para restaurar la condición normal. En 3D el problema es mucho mayor, porque la co-circularidad genera tetraedros aplastados conocidos como slivers. [33]
17
Figura 6. Ejemplo de La Triangulación de Delaunay
1.8.2.2 Jerarquías de Volúmenes Fronteras
Esta jerarquía se basa en la formación de una estructura en árbol, en la que el nodo raíz se corresponde con el volumen que envuelve a todos los objetos que hay en el escenario.
Cada nodo hoja del árbol es un único objeto, y cada nodo interior está formado por un volumen envolvente y una lista de punteros a otros nodos del árbol. Si se agrupa cierto número de volúmenes envolventes en un volumen mayor, es posible, con una única prueba de intersección, eliminar muchos objetos. Si el rayo no intercepta con el volumen envolvente raíz, no es necesario que se estudie su intersección con los objetos o volúmenes que están dentro de él. [34]
Figure 7. Jerarquía de Volúmenes Frontera
18 La jerarquía de volúmenes se basa en la formación de una estructura en árbol, en la que el nodo raíz se corresponde con el volumen que envuelve a todos los objetos que hay en el escenario.
Cada nodo hoja del árbol es un único objeto, y cada nodo interior está formado por un volumen envolvente y una lista de identificadores a otros nodos del árbol. Los autores citados desarrollaron una jerarquía en la que los volúmenes envolventes son paralelepípedos rectangulares (cajas envolventes). Estas cajas pretenden minimizar el tamaño del volumen y encerrar al objeto de la manera más ajustada posible. [35]
1.8.2.3 Árboles Octales (Octree)
Un Octree es una estructura de datos que, en último término, describe cómo se distribuyen los objetos en el espacio tridimensional del escenario. Se trata de un árbol (estructura jerárquica) de orden 8, por lo que cada nodo, en un nivel dado, tiene 8 descendientes. Cada nodo tiene asignada una región cúbica del espacio (vóxel), cuyo tamaño depende del nivel en que se encuentre definido el nodo; la raíz del árbol octal está asociada a todo el espacio del escenario. [36]
Los Octrees se generan mediante la subdivisión recursiva del espacio en ocho partes (octantes). Así, una subregión que esté ocupada por objetos, se irá subdividiendo según este criterio, hasta obtener unos vóxeles de tamaño apropiado, en función de la resolución requerida o de la memoria disponible. En el Octree hay dos tipos de nodos terminales: [37]
Aquellos que corresponden a subregiones vacías
Aquellos que corresponden a vóxeles de tamaño mínimo, que cumplen el criterio de hoja o terminal. Normalmente este criterio especifica que en cada vóxel haya un solo objeto, o parte del objeto (Figura 8).
19
Figure 8. Método similar al que se utiliza para representar un Octree en 3D
Para escenas dinámicas el Octree necesita ser modificado en tiempo real. Para insertar un objeto Volúmenes Fronteras Temporales (TBV) en el árbol, las primitivas del objeto son asociadas con los nodos que este intercepta, y los nodos que están asociados con demasiadas primitivas son subdivididos. A la hora de actualizar el Octree para el movimiento de objetos dinámicos, el objeto puede ser eliminado del árbol y entonces insertado en la nueva posición. [38]
Si la actualización es realizada para un número relativamente pequeño de objetos dinámicos será mucho más eficiente que si se reconstruye el árbol completo. De lo contrario el algoritmo no es óptimo pues se emplea tiempo innecesariamente acoplando nodos que serán inmediatamente subdivididos otra vez. Una mejoría para este algoritmo la aporta el empleo de la técnica del padre inmediato superior que elimina la necesidad de actualizar el Octree completo, sólo es necesario hacerlo para el subárbol que contiene al padre inmediato superior del objeto. [39]
El método del Octree implementado con LCA al unirse con los TBV conforma un algoritmo más óptimo gracias a que el TBV disminuye la cantidad de objetos a actualizar en cada frame de la escena. [40]
20
1.8.2.4 ÁrbolesBSP
El ÁrbolBSP es un método alternativo para la subdivisión del espacio en vóxeles, basado en una partición binaria del espacio, cuyo resultado queda reflejado en los ÁrbolesBSP. La estructura auxiliar usada para representar la subdivisión espacial mediante un árbolBSP es esencialmente un árbol binario, en el que cada nodo, como su nombre indica, tiene solamente dos subnodos. [41]
Figure 9. árbolBSP de un espacio 2D
En la figura anterior se da una idea de cómo se generaría un árbol BSP sobre una escena de dos dimensiones. En 3-D, cada nodo no terminal del árbol BSP representa un plano de partición que divide al espacio en dos mitades. Un nodo terminal representa una región que no puede subdividirse más y, como en los Octrees, tiene asociados punteros a las estructuras de datos que representan los objetos con los que intercepta, o contiene, su correspondiente vóxel. [42]
El algoritmo ÁrbolesBSP tiene un alto costo en comparación con otros algoritmos de visibilidad debido a la cantidad de cálculos numéricos que involucra, el mismo no es muy usado como modelo cognitivo y por tanto no es aprovechado con frecuencia por otros sistemas. Este método es mucho más lento que el algoritmo el Z-buffer jerárquico. Sin embargo es interesante ver como este algoritmo mejora cuando se le incorpora la técnica de los TBV.
21 objetos mismos, mientras que el árbol octal es meramente una estructura de datos auxiliar, por lo que el algoritmo ÁrbolesBSP generalizado a escenas dinámicas es un tanto diferente del basado en árboles octales. La técnica del Naylor BSP-Tree [15] presenta numerosas ventajas sobre el Z-buffer jerárquico, particularmente la independencia del hardware gráfico y del tamaño de la imagen. Por lo cual a la hora de vincular los TBV con los ÁrbolesBSP es recomendado utilizar este método. [43]
1.8.2.5 Rejilla Regular
Se considera la rejilla regular como una estructura que explota el espacio-objeto realizando una división regular del entorno o espacio.
Figure 10. Ejemplo de Rejilla Regular
Las Rejillas Regulares son apropiadas para escenas dinámicas cuando se combinan con los Bounding Volumen para los objetos, porque reubicar o relocalizar las geometrías resulta fácil: basta con sustraerla de la celda actual y colocarla en la nueva. Una debilidad de esta estructura radica en que manejan áreas densas y escasas de objetos, con el mismo tamaño de subdivisión. Esto implica que no se puedan desechar extensas partes del modelo, cosa que con las estructuras jerárquicas si es posible. [44]
22 Por ejemplo: considere una escena de una ciudad, aquí puede que una celda encierre una tienda y por tanto contendrá muchas geometrías, mientras que otra celda encierra solo la porción de una calle, o sea, un pequeño número de geometrías. Se debe tratar de subdividir el espacio en celdas que contengan la mayor cantidad posible de geometrías, porque esto ayuda a que la manipulación de las mismas sea menos costosa. [45]
1.8.2.6 Datos manualmente generados
Los datos son generados manualmente con el objetivo de compensar la poca percepción que presentan los agentes inteligentes, en este caso son los desarrolladores los encargados de añadir los datos topológicos de manera manual en un mundo virtual. Un ejemplo simple constituye el caso de realizar una emboscada, se entrarán manualmente datos topológicos como: la posición de escondites, la activación de zonas, etc. Sin embargo estos datos no constituyen una solución aceptable para la percepción limitada de los agentes inteligentes, porque: [46]
La generación de datos manual no es exhaustiva.
La generación de datos manual consume mucho tiempo.
Los datos generados pueden no ser compatibles con el motor de juego de colisión y los modelos de circulación.
1.8.2.7 Scripting
El scripting es otra de las vías que existe en 3D para superar la limitante de percepción que presentan los agentes inteligentes. Conduce a lograr una percepción 3D detallada, teniendo en cuenta todas las posibilidades. El scripting no es el mejor enfoque para compensar la mala percepción, debido a que: [47]
Es tiempo que se consume.
Interactividad significa que usted no puede prever todo.
Los escenarios se convierten en lineales.
Es complejo, script ricos ajuste hacen más complejo el proceso de producción. Otra forma de superarla en comportamientos incluida la coordinación del equipo, búsqueda de posicionamiento, etc.
23
1.8.2.8 La memoria a corto plazo
Sin memoria a corto plazo un agente no es capaz de considerar los posibles opositores que quedan fuera de su horizonte sensorial. A continuación se explica como ocurre esta técnica:
[48]
En la figura, dos opositores – Gnasher y Basher – Billy están en el campo de visión y elige uno, Basher va a ser su objetivo. Billy se vuelve de frente a Basher y le dispara.
Figure 11. Billy y dos oponentes. Las líneas describen el campo de visión de Billy
Figure 12. Billy elimina a Basher
Por desgracia para Billy, ya que su programador no le ha otorgado una memoria a corto plazo, tan pronto como Gnasher sale de su campo de visión es olvidado. Esto le da la oportunidad Gnasher de acercarse a hurtadillas a Billy ponerlo fuera de juego.
24
Figure 13. Billy es derrotado
Este tipo de secuencia es fácil de evitar si los agentes son capaces de recordar lo que han percibido recientemente por un período de tiempo.
La mayoría de las implementaciones utiliza algunas estructuras para registrar lo que están percibiendo. Cada vez que un agente percibe un nuevo oponente, una instancia de una MemoryRecord es creado y añadido a la memoria de ruta. Una vez que el registro se ha hecho, siempre que el correspondiente oponente es escuchado o visto su registro se actualiza con la información pertinente.
Un robot es capaz de utilizar este mapa de memoria para determinar los opositores que ha percibido recientemente y reaccionar en consecuencia. Además, porque cada registro de memoria, escondites visibilidad, información, puede evitar muchos cálculos de líneas de vista. En lugar de pedir la línea de visión, solicitud que consume mucho tiempo un bot puede simple y rápidamente recuperar el operador booleano, valor almacenado en la memoria de ruta.
El registro de memoria también puede almacenar información general acerca de lo que es la percepción de un modo que ayuda a tomar decisiones. Entre la información común almacenada en los registros de memoria es posible encontrar la última vez que la entidad fue percibida (esto se usa de modo que, incluso cuando no es visible, al recordar lo que escuchó 10 segundos antes), puede recordar el lugar en el que se percibió, si se le disparo, el último tiempo en que fue percibido, etc.).
25
1.8.2.9 Detección de Colisiones
El objetivo de la detección de colisiones es el de reportar de manera automática una intersección entre dos objetos cualesquiera. En el caso particular en que los objetos están en reposo entonces se habla del problema de la detección de intersecciones. El problema de la detección de colisiones aparece en múltiples aplicaciones, tales como el diseño asistido por computadora, la robótica, la automática, la computación gráfica, la animación y la realidad virtual. La importancia de la detección de colisiones es que permite el diseño basado en la simulación, el análisis en ingeniería, la planificación del movimiento en robótica, la animación basada en modelos físicos, la navegación en modelos virtuales, entre otros. [49]
Todas estas aplicaciones involucran el análisis de la intersección y el razonamiento espacial entre objetos en reposo y/o en movimiento. Una gran variedad de técnicas de las ciencias de la computación han sido propuestas para abordar el problema de la detección de colisiones. Entre las más importantes figuran: [50]
Las Representaciones Jerárquicas que consisten en untipo de representación visual donde los elementos se presentan en diferentes niveles, ramas o agrupaciones, que descienden de un nodo raíz. Los árboles cónicos son una representación tridimensional de información jerárquica. La jerarquía se presenta en 3D aumentando al máximo el uso eficaz de espacio de la pantalla disponible y habilitar visualización de la estructura entera.
Las Técnicas de Subdivisión del Espacio: método donde el espacio del escenario se divide en regiones, explicado detalladamente en epígrafes anteriores.
El Razonamiento Geométrico y las Técnicas algebraicas: permiten al implementador optimizar su trabajo, hacerlo mucho más simple y lograr un estándar a la hora de diseñar y desarrollar entornos virtuales.
Diferentes tipos de subproblemas aparecen en la detección de colisiones. El más general es sencillamente determinar si dos objetos se tocan; o si los objetos están compuestos de partes, cuales son las partes que se tocan.
26 A veces se necesita saber cual es la distancia de separación entre dos objetos, entendiendo por ello la distancia Euclídea mínima de separación. Otras veces, cuando los objetos están en movimiento y se conoce su localización en el espacio, surge la pregunta: ¿Habrá una colisión entre ellos? Este es el problema de la predicción de la colisión.
1.8.2.10 Mallas de Navegación
Uno de los modelos cognitivos más utilizados para representar mundos 3D son las mallas de navegación que también se conocen como NavMesh. Una malla de navegación es un conjunto de polígonos convexos que describen los "walkables", es decir que no es más que una superficie de un entorno 3D.
Las mallas de navegación son muy adecuadas para representar casi cualquier tipo de entorno en 3D, siempre y cuando el mundo del juego no cambie demasiado en el transcurso del juego. Este modelo no maneja la dinámica de los obstáculos que podría pasar durante la simulación como enemigos, personajes, cajas, etc.
Figure 14. Ejemplo de Mallas de Navegación
La ventaja de utilizar las mallas de navegación es que el tamaño de la malla no depende del tamaño del mundo, pero si dependen de las formas de las paredes y la geometría del medio ambiente.
27 En el interior de cada uno de los polígonos convexos el agente puede moverse libremente, y es fácil computar el movimiento en las batallas donde los robots son necesarios para en la mayoría de los casos realizar movimientos bruscos para evitar las colisiones o el fuego enemigo.
El inconveniente es que podría ser difícil y tedioso encontrar ―walkables ―en todos los polígonos y las formas de llegar a ellos desde polígonos vecinos. Los ―walkables‖ no son más que los caminos por los que se puede transitar a través de los polígonos.
(Figura 15: muestra de una malla de navegación en tres dimensiones, la NavMesh está representada en alambre.)
1.8.2.11 Lista
La lista constituye un modelo matemático compuesto por la colección de operaciones definidas sobre el conjunto de datos que define el modelo. Es considerada una estructura de datos abstracta (TDA), por lo que se caracteriza por:
Exportar una clase.
Definir un conjunto de operaciones para la manipulación (interfaz).
Utilizar la interfaz como único mecanismo de acceso a los datos (encapsulación).
La lista, es una colección homogénea de elementos con relaciones lineales y dinámica. Se accede a los datos que tiene almacenados entrando una posición.
Son utilizadas para dar solución computacional a diferentes problemas, esto puede ser para almacenar objetos de determinada clase, calcular el máximo, el mínimo o contar las ocurrencias de un elemento.
28 En muchos problemas se imponen restricciones a los elementos que se pueden almacenar en la lista, cuando sus elementos son de un mismo es homogénea, en caso contrario es heterogénea, lo que significa que en la lista puede haber elementos de diferentes tipos.
1.9 Interacción del Agente con el Sistema de Percepción 1.9.1 Sensores
Como en el mundo real, el agente inteligente recibe la información del ambiente usando los sensores. Estos sensores examinan constantemente el entorno en busca de información útil y mantienen actualizado al agente. Para realizar esto, se conectan a los distintos recolectores de datos en el sistema de percepción que proporcionan datos medioambientales, tácticos y dinámicos sobre el mundo.
Cuando un agente se crea, registra los sensores que necesitará. Para un personaje de un perro, no es necesario registrar un sensor topológico porque no necesita recibir la información sobre dónde preparar una emboscada. Sin embargo, necesita registrar un sensor medioambiental para evitar las colisiones y saber dónde va a realizar su próximo movimiento. También, necesitará un Beacon sensor para descubrir al jugador.
Cada uno de los sensores tiene propiedades de filtro que determinan las capacidades sensoriales del agente asociado. Esos atributos se definen según el tipo de datos que el sensor está diseñado para buscar. Por ejemplo, los sensores medioambientales y topológicos definen los atributos de visibilidad que permiten devolver los datos más cercanos y visibles cuando se realiza el escaneo.
De manera similar ocurre con el Beacon sensor que proporciona los atributos para especificar los tipos de Beacons que detectará. Por ejemplo, un sensor particular podría descubrir sólo Beacons del tiroteo.
Cada vez que un agente se actualiza todos sus sensores se actualizan también, causando que se explore el recolector de datos a los que un agente se conecta.
Este escaneo que es implementado en los recolectores de datos de manera que se optimiza según los modelos cognoscitivos elaborados, permitiendo búsquedas rápidas a partir de la vía de árboles de espacio particionado para grandes entornos con gran cantidad de información útil o buscar las listas simples cuando se examinan los ambientes pequeños.
29 Una vez que se finalice el escaneo y se encuentren los datos que coinciden con las propiedades del sensor del filtro, estos datos se almacenan en la memoria del agente.
1.9.2 Memoria del Agente
A menudo la memoria a corto y largo plazo no es incluida como un sistema fundamental en la aplicación de agentes inteligentes. En la arquitectura propuesta sin embargo, este sistema juega un papel fundamental, no sólo sirviendo para mejorar las capacidades de los agentes, sino también para optimizar la recuperación de datos perceptores solicitados por los algoritmos de toma de decisiones.
Como se ha mencionado, una pieza de datos que coincida con los filtros de un sensor se encuentra en los recolectores de datos, se informa al sistema de memoria del agente que posee el sensor. El sistema de memoria posee una serie de ranuras de memoria que almacenan información acerca de los datos de detección.
Cada uno de las ranuras contiene una descripción sobre el tipo de datos que representa.
También, guarda información general como el tiempo y localización dónde el emisor fue percibido por última vez. De esta manera, el agente sabe cómo encontrar el emisor en el medio ambiente.
Uno de los aspectos importantes del sistema de memoria es su capacidad de priorizar los datos. Cuando el agente pide la información sobre los datos informados por sus sensores, la información que devuelve es ordenada por prioridad para que el agente pueda simplificar su lógica de toma de decisión sólo analizando los datos más importantes.
Las prioridades se utilizan también para la gestión de la información que debe mantenerse o la que debe ser suprimida y olvidada. Siempre que alguna información no es útil para el agente o su importancia está por debajo de un umbral mínimo, puede ser descartada por el sistema de memoria.
Cuando los datos son comunicados por un sensor, el agente calcula la base de la prioridad, según proceda, para su personaje en el juego. Así, un perro asigna una alta prioridad a un hueso que puede comer mientras que una persona le asigna al hueso una prioridad menor, ya que no se considera que se trate de un objeto útil.
La prioridad también depende de la duración del tiempo que los datos se percibieron, así como la cantidad de tiempo que ha transcurrido desde que se efectuó la última percepción.
30 Cuanto más largo sea el período en el que los datos se han percibido, mayor es su prioridad, pero cuanto mayor sea el tiempo transcurrido desde que se observó por última vez más baja es la prioridad.
Por ejemplo, suponiendo que un agente entra en una habitación y ve una puerta. En un primer momento, la puerta tiene una baja prioridad por lo que el agente no la analiza de inmediato, pero al cabo de unos segundos, aumenta su prioridad, provocando que sea notificada por el agente y que decida pasar a través. Por unos pocos segundos, el agente recordará la puerta. Después de un tiempo, sin embargo, la puerta tendrá una prioridad tan baja que el agente se olvida de la puerta y se realiza la liberación de la ranura de memoria.
1.9.3 Time Slicing
El enorme mundo de los juego tiene el inconveniente de aumentar el tiempo del sensor de escaneo porque muchos subnodos del modelo cognitivo tienen que ser recorridos, cada uno de los cuales puede contener una gran cantidad de los datos de estos sensores. El Time Slicing ayuda a reducir el estancamiento que se produce cada vez que un sensor escanea.
Básicamente, el sistema puede ser aplicado a manejar dos tipos de Time Slicing: por cada sensor y por agente.
El Time Slicing ―por cada sensor‖ permite difundir el sensor del proceso de exploración durante varios marcos. Cada vez que un sensor realiza una exploración, en lugar de esperar hasta que el recorrido de los modelos cognitivos esté completo, espera las señales de los recolectores de datos que realizan una parte de la exploración de cada uno de los cuadros hasta que se termine la búsqueda.
El segundo tipo de Time Slicing ―por cada agente‖ distribuye agentes sensores a través de múltiples marcos de las solicitudes. En lugar mantener una exploración constante por cada uno de los agente, es posible realizar una exploración por veinte agentes en un marco, y luego veinte más en la siguiente, y así sucesivamente hasta llegar a todos los agentes de actualización. Esto se puede combinar con el nivel de detalle de optimización a fin de que los agentes lejos de los jugadores tengan menos prioridades de escaneo, sólo se puede escanear cada 5-20 segundos, mientras que cerca de los personajes del jugador se escanea constantemente el entorno.
El inconveniente de utilizar el Time Slicing es que los objetos no se perciben de inmediato, esto puede ser unos segundos antes de que sean informados por el agente.
31 Sin embargo, esto también puede agregar un toque de realidad a la percepción del sistema, porque en el mundo real, la mayoría de las personas no obtienen inmediatamente una plena comprensión de su entorno. El número de fotogramas entre sensores es escaneado a fin de reflejar el tiempo de reacción de un determinado agente.
1.9.4 Prioridad de Exploración
Junto con la función de Time Slicing, el sistema permitirá manejar la prioridad de la exploración. La idea aquí es imitar el comportamiento del mundo real, donde los acontecimientos importantes se observan en primer lugar y los detalles se detectan más tarde en los marcos.
Para llevar a cabo la prioridad de escaneo, los modelos cognitivos que componen los recolectores de datos pueden mantener los datos de los sensores ordenados por prioridad.
Cuando se realiza el escaneo, los nodos con mayor prioridad son visitados primero. Por ejemplo, una puerta podría tener una prioridad más alta que un muro y menos prioridad a un cadáver. Por supuesto, a partir del modelo cognitivo los agentes no son específicos, sólo existe un orden de prioridad en todos los agentes. En la práctica, sin embargo, esto no es una gran limitación.
1.9.5 Meta Negociación
El pensamiento basado en metas en un entorno virtual consiste en que la forma de pensar un personaje del juego se asemeja al pensamiento humano. El mismo es fácil de implementar y mejorar, y puede resolver de manera dinámica los imprevistos.
Existen dos tipos de metas, la atómica y la compuesta. La meta atómica no es más que cuando un personaje del juego realiza las acciones básicas como apuntar con el arma a un punto de referencia o recargar un arma. La meta compuesta es la unión de otras metas, un ejemplo de esto es cuando un personaje se dirige a abrir una puerta, el mismo necesita ir al botón que abre la puerta, sigue el camino que se le indica, abre la puerta y la atraviesa.
Cada personaje se va a basar en un pensamiento basado en la máquina de estados finita (FSM). [51]
El Estado 1 es el estado normal, donde se realizan las acciones de:
- Si me queda poca vida huyo.
32
El estado 2 es el estado de bravo, donde se realizan las siguientes acciones:
- Aunque tenga poco vida ataco.
El Estado 3 es el estado de miedo, donde se realizan las siguientes acciones:
- Si veo a alguien me mando a correr.
- Si agarro una vida me pongo en estado normal.
La Toma de Decisiones juega un papel fundamental en algunos tipos de Metas Compuestas, en las cuales se decide entre varias posibles estrategias usando evaluadores.
Ejemplo: [52]
Figure 15. Ejemplo de toma de decisiones
Para tomar una decisión se analizan los datos difusos como la distancia, la vida, estado anímico, entre otros y se escoge la estrategia con mayor puntuación. El Evaluador es el encargado de calcular ―cuanto se desea‖ perseguir esa meta. Por ejemplo, el evaluador de
―buscar vida‖: [53]
33
Figure 16. Gráfico del evaluador buscar vida
Cada evaluador contiene parámetros para configurar:
Figure 17. Fórmula
Mientras más Bias o K, mayor será el deseo. Diferentes personalidades tienen diferentes valores. Por ejemplo: si el personaje es más precavido desea buscar vidas y armas.
Ejemplo: [54]
El diseñador crea un ascensor que se llama utilizando una palanca en el centro de la sala.
El ascensor mueve el agente de pie sobre su plataforma hacia un piso superior. Para la integración de esta nueva entidad normalmente sería necesario cambiar la lógica de algunos agentes para manejar el comportamiento del elevador. Sin embargo, utilizando el sistema de percepción enfocado a un objetivo de negociación se puede lograr.
En el momento en que el ascensor se coloca en el entorno, registra un faro de señalización donde se pueden mover los agentes. Cuando el faro es percibido por el agente, en ese caso el agente que tiene que pasar a un nivel superior, se le pedirá al ―Beacon‖ la manera en que puede pasar. El faro devolverá un objetivo o un script de cómo utilizar correctamente el ascensor, que en este caso sería ―búsqueda de la palanca, tire de ella y, a continuación, de pie sobre la plataforma principal hasta llegar al siguiente piso‖.
35
Capítulo 2. Soluciones Técnicas
En el presente capítulo se proponen las soluciones técnicas para poder obtener una mejor percepción de los agentes inteligentes que se implementen en juegos. Se definen los modelos cognitivos a usar, para almacenar los datos que se obtengan del entorno virtual y se explican las ventajas que proporcionarán su uso.
2.1 Sistema de Percepción
El sistema de percepción a desarrollar permite la personalización de la mayoría de sus módulos para que coincida con el espacio particionado y las estructuras utilizadas para organizar el mundo visual y físico. Fue diseñado para permitir la integración de características, tales como Time Slicing, prioridad de exploración, meta negociación, la circulación de predicción, y la memoria de corto y largo plazo.
El mismo se basa en la percepción humana, y consiste en simular la forma en que las personas reciben los datos del medio ambiente que lo rodea y según su necesidad le de la prioridad a determinados objetos o personas a la hora de realizar sus acciones, con el objetivo de dotar de mayor realismo a los Agentes Virtuales o personajes del juego (NPCs).
2.2 Recolector de Datos (Data Gatherer)
En el presente trabajo existen tres tipos fundamentales de Recolectores de Datos:
Datos Medioambientales
Datos Topológicos
Faros
El Agente Virtual es quien solicita esta información, en dependencia del tipo de dato que necesite recolectar para sí. Los recolectores de datos están encargados de almacenar la información que necesita el Agente Virtual y de proporcionársela.
36 Estos pueden utilizar modelos cognitivos como:
Árboles Octales
Rejilla Regular
Lista
Colección de ellos.
Los modelos cognitivos son utilizados por los recolectores de datos en dependencia de la complejidad del juego y de la velocidad que se requiera para devolver estos datos.
2.2.2 Datos Medioambientales (Environmnet Data)
En un juego, se construyen representaciones gráficas y geométricas del ambiente. Es posible simplificar estas representaciones automáticamente en formas básicas que ayuden a que el personaje del juego comprenda su ambiente. De esta manera, un mundo 3D complejo puede describirse desde una vista superior como la Figura 20, con obstáculos delimitados por los círculos y paredes representadas por líneas rectas.
Figure 18. Datos Medioambientales compuestos de líneas rectas (las paredes) y círculos (los obstáculos).
37 En todo momento, el agente puede realizar consultas al recolector de datos medioambientales para aprender sobre la estructura de su entorno para tomar las decisiones de movimiento. Como las formas devueltas son muy simples, los algoritmos bien documentados como los Steering Behaviors pueden usarse para determinar cómo moverse a un lugar designado mientras se evitan las colisiones o dónde esconderse de un enemigo usando los obstáculos más cercanos. [55]
La técnica aplicada consiste en lograr la descripción exacta del entorno. La descripción exacta del entorno viene desde ficheros, y los diseñadores deben tenerla presente a la hora de crear el entorno virtual. Se sugiere inicializar con WL en caso que sea una pared y OB si es un obstáculo.
2.2.3 Datos Topológicos (Topological Data)
Para los agentes inteligentes, la percepción es más que simple conocimiento sobre la geometría del mundo. La información sobre las características tácticas del ambiente circundante es a menudo también importante, por ejemplo, lugares de escondite, localización del francotirador, las maneras de entrar en un cuarto, y lugares que pueden emboscarse, entre otros.
En el caso de los datos topológicos se aplica la técnica de Análisis Dinámico de la Topología. La información de estos datos se obtendrá desde un fichero a través de un reprocesamiento. Los tipos de datos topológicos que se tendrán en cuenta en el sistema a desarrollar serán:
HidingPos (Escondites).
EnterRoom_IDRoom (Para las entradas a las habitaciones donde IDRoom es el identificador de la habitación).
AtackPos (Lugar de emboscada).
Aunque estos son los únicos datos topológicos previstos para desarrollar el sistema por ahora, los mismos se pueden modificar en dependencia de la complejidad del juego que se esté utilizando.
38 La figura que se muestra a continuación permite observar algunas de las informaciones topológicas y medioambientales que los recolectores de datos pueden proporcionar sobre el mundo.
Figure 19. Datos Topológicos y medioambientales. Las flechas y círculos representan los puntos tácticos, los círculos los puntos de ocultación y las flechas las entradas del cuarto. Las líneas indican las paredes cercanas
usadas para evitar la colisión.
2.2.4 Faros (Beacon Data)
Los recolectores de datos descritos hasta ahora sostienen la información sobre las situaciones estáticas y sobre las estructuras.
Sin embargo, la mayoría de los datos útiles vendrán de los objetos dinámicos o eventos que se crean y modifican en tiempo real (Runtime). El último de los recolectores de datos presentado trata sobre este tipo de información que se encapsula como un ―Beacon‖.
Cada Beacon representa un evento o situación que podrían interesar a los agentes inteligentes. Un ejemplo de Beacon son los mensajes de visibilidad, olores, y sonidos. Si se toma una situación dónde un jugador se está moviendo por un nivel.