Sistema de Visión Visión es la ventana al mundo de muchos organismos. Su función principal es reconocer y localizar objetos en el ambiente mediante el procesamiento de las imágenes. La visión computacional es el estudio de estos procesos, para entenderlos y construir máquinas con capacidades similares. La visión para un sistema puede definirse como: “Visión es un proceso que produce a partir de las imágenes del mundo exterior, es una descripción que es útil para el observador y que no tiene información irrelevante” Durante el partido de fútbol las decisiones de qué caminos y decisiones tomarán los robots depende de la percepción completa del juego. Para el proyecto pensamos implementar un sistema de visión que sea lo más robusto posible. Un sistema sólido será la base para definir la correcta ubicación del equipo; así como de lo que está sucediendo en el juego. La parte del software de la visión debe utilizar algoritmos eficientes. Un algoritmo eficiente se define en este caso como aquel que permita ubicar rápida y confiablemente a los robots; reduciendo el intervalo del tiempo entre que cada imagen es capturada y procesada. Aquí también cabe resaltar que la velocidad del lenguaje en que se programe el algoritmo no debe ir en contra de la meta de tiempo de procesamiento. Para que el sistema de visión cumpla correctamente con su meta existen los siguientes requerimientos: a) Se debe montar una cámara de video a máximo 2.5 metros de altura que permita visualizar la cancha. b) Cada equipo tiene un color asignado. Además de que cada jugador tiene a su vez un color asignado que le distingue de sus compañeros. Estos colores deberán poder ser visibles por la cámara El color superior referencia el equipo. El color inferior identifica al jugador. c) Las etiquetas que se utilicen para colocar los colores deberán buscar reducir los cambios de intensidad en los colores; incluso en situaciones con poca iluminación. El proceso de visión lo hemos dividido en cuatro fases básicas: a) Obtener la imagen de la cancha con los robots cada determinado tiempo. b) Barrer la imagen buscando los colores que identifiquen a los robots y pelota con que jugamos. c) Cada píxel encontrado que se ajuste a los colores que pertenecen a cualquiera de los agentes del juego se somete a un análisis algorítmico. Así se busca determinar si esos píxeles pertenecen en realidad a algún agente. d) Se determinan la información de cada agente; su número de ID, su posición en la cancha y orientación. Sin embargo, antes que de continuar hablando de algoritmos y programación, es necesario que entendamos como se obtienen las imágenes desde la cámara, como llegan al programa y como es que haremos uso de estas imágenes: Existe un sistema de visión implementando en Visual C++ para Windows. Dentro de este paquete se contemplan las funciones de reconocimiento de colores, calibración de la cámara, comunicación con el puerto serial (Com1 ó Com2), manejo de los datos recibidos por la cámara y desplegado en pantalla de lo capturado. El sistema está enfocado al uso de VxDs. Los VxD´s (Virtual Device Driver) son específicos de Windows 95, 98 y ME. Estos drivers son utilizados por el sistema para interactuar con dispositivos de hardware o para crear hardware "virtual" a partir de software. Además, tienen acceso directo al kernel del sistema operativo. Hoy día los Vxds son obsoletos, ya que ningún Windows reciente los soporta; NT4, 2000 y XP no usan Vxds. Así mismo, el código depende de un DLL llamado MVLib.dll. MVLib.dll tiene las funciones necesarias para poder comunicar el software con la cámara y el sistema de visión. Dentro del DLL se definen acciones de digitalización de la señal, buffereo de los datos recibidos y desplegado de gráficos en pantalla. Esta DLL es provista por el fabricante. El programa trabaja a partir de configuraciones que son definidas por el usuario dependiendo de las situaciones que imperen en el juego. En cada configuración se puede definir el tamaño de los robots, el tamaño de la pantalla, la intensidad y los colores que tiene asociado cada equipo durante el juego. Sistema de Control Analizando el simulador que se nos proporcionó, encontramos que el sistema de control se compone de los siguientes elementos: 1. Medio Ambiente 2. Robots El proceso de control se basa en la interpretación de los estados posibles del medio ambiente, y en base a esto se toman las decisiones de cómo controlar los movimientos y jugadas de los robots. Para lograr que los robots respondan adecuadamente a estos estímulos del medio ambiente, el “objeto robot” debe tener los siguientes atributos: 1. Posición en coordenadas polares 2. Velocidad en ambas ruedas Asi mismo el medio ambiente cuenta con atributos necesarios para que los robots interpreten los datos y realicen las acciones necesarias. Los atributos del medio ambiente son: 1. Dimensiones de cancha 2. Posición de la bola 3. Estado del juego 4. Robots (ambos equipos) 5. Posesión de la bola Los estados que se identifican en el medio ambiente son los siguientes: 1. Jugando (por omisión) 2. Bola libre 3. Inicio de juego 4. Tiro Penal 5. Tiro libre 6. Saque de meta El sistema de control está enfocado a una arquitectura reactiva, donde los robots Yujin actúan acorde a los estímulos recibidos desde el medio ambiente. Entre los principales modos de actuar que deben tener los robots identificamos los siguientes: 1. Ataque 2. Defensa 3. Tiro 4. Portero Estas reacciones se ven respaldadas por una serie de instrucciones de bajo nivel que son encargadas del movimiento del robot. Entre las que se encuentran: 1. Avance 2. Giro 3. Velocidad Referencias Bibliográficas SUCAR, Luis E. GOMEZ, Giovanni “Procesamiento de Imágenes y Visión Computacional” Departamento de Computación. ITESM Campus Cuernavaca RUSSELL Stuart, NORVIG Peter “Inteligencia Artificial, un enfoque moderno” Prentice Hall, 1996