http://dx.doi.org/10.18359/ravi.2002

Artículo
Revista Academia & Virtualidad 9(2): 59-72, 2016

Emulación del videojuego 'Pong', mediante robots móviles con herramientas LEGO® MindStorms NXT 2.01

Wilson Infante Moreno2, Juan C. Bautista Rodríguez3 & Edwin Berdugo Romero4
Universidad Distrital, Colombia


Recibido, noviembre 27 de 2015
Concepto evaluación, junio 08 de 2016
Aceptado, junio 30 de 2016

Referencia: Infante Moreno, W.; Bautista Rodriguez, J.; Berdugo Romero, E. (2016). "Emulación del Videojuego 'Pong', mediante robots móviles con herramientas LEGO® MindStorms NXT 2.0". Revista Academia y Virtualidad, 9, (2), 59-72


Resumen

El presente trabajo describe la elaboración e implementación de dos robots móviles, utilizando LEGO® MindStorms NXT 2.0 y la aplicación en la plataforma Lab VIEW, para reproducir de forma física el videojuego Pong®, con el fin de implementar las acciones de bloquear y lanzar una pelota en fútbol robótico, así como también introducir el estudio de asignación de roles o tareas a este escenario, lo que permite de alguna manera que los robots actúen de forma defensiva y ofensiva al cambiar de rol según la situación de juego. Debido a que cada robot presenta comportamientos muy simples y su interacción permite un procedimiento global, no se utilizó un estructura explícita de coordinación ni un protocolo de comunicación entre los miembros del sistema para la asignación de tareas, tal como lo realizan los mecanismos swarm intelligence, inspirado en colonias de insectos. Se observó en diferentes pruebas el buen desempeño y funcionamiento de los robots móviles para comportamiento global muy parecido al juego Pong®.

Palabras clave: fútbol robótico. Lab VIEW, LEGO® MindStorms, sensor, videojuego Pong®.




Videogame emulator 'Pong', using mobile robots with tools LEGO® MindStorms NXT 2.0

Abstract

This paper describes the deployment and implementation of two mobile robots using LEGO® MindStorms NXT 2.0 and application upon Lab VIEW platform to play physically the videogame Pong® in order to implement actions, such as block and throw a ball playing robot soccer as well as introducing the study of roles or tasks in this scenario, which allows somehow machines may act performing defensive and offensive roles according to the game situation. Because each robot has very simple moves and interaction allows a global procedure, there is not an explicit coordination structure or communication protocol among members of the system to allocate tasks, such as swarm intelligence mechanisms. We could see good performance and operation by mobile robots, something very similar to Pong® game deployment observed in different tests.

Keywords: robot soccer. Lab VIEW, LEGO® MindStorms, sensor, videogame Pong®.



Emulação do videojogo 'Pong', por médio de robôs móveis com ferramentas LEGO® MindStorms NXT 2.0

Resumo

No presente trabalho descreve-se a elaboração e aplicação de dois robôs móveis, utilizando LEGO® MindStorms NXT 2.0 e a aplicação em plataforma Lab VIEW, para reproduzir de forma física o videojogo Pong®, com o propósito de aplicar as ações de bloqueio e lançamento de uma pelota, em futebol robótico, e por sua vez introduzir o estudo da assinação de roles ou tarefas a este cenário, o que permite de algum jeito que os robôs atuem de jeito defensivo e ofensivo ao mudar de papel segundo a situação de jogo. Dado que cada robô apresenta comportamentos muito simples e sua interação permite um procedimento global, não se utilizou uma estrutura explícita de coordenação nem um protocolo de comunicação entre os membros do sistema para a assinação de tarefas, do jeito que é realizado nos mecanismos swarm intelligence, inspirados em colônias de insetos. Notou-se nas diferentes provas o bom desempenho e funcionamento dos robôs móveis para comportamento global muito parecido com jogo de Pong®.

Palavras chave: futebol robótico, Lab VIEW, LEGO® MindStorms, sensor, videojogo Pong®.




Introducción

Uno de los primeros videojuegos fue creado por William Highinbotham en 1958, y corresponde al nombre Pong®, llamado en su momento "Tenis para dos", usando un osciloscopio de laboratorio, cuyo juego consiste en rechazar una bola que se desplaza por la pantalla y devolverla al tocar las líneas blancas (véase figura 1). Posteriormente en 1975, se comercializa la consola Atari Pong, que fue un rotundo éxito comercial para la época [índice Latino, s.f.]. Años más tarde, en 1992, el profesor Alan K. Mackworth de la Universidad British Columbia, Vancouver Canadá, presentó la idea que los robots pudiesen jugar fútbol, cuyo proyecto denominó Dynamo. Para entonces se desarrolló un ambiente flexible para experimentos con múltiples robots para realizar funciones o tareas de atrapar y lanzar una pelota; los robots no eran autónomos ya que se controlaban por mandos a distancia por medio de radio. Paralelamente, un grupo de investigadores en Japón pensaron en el juego del fútbol como un factor para producir nuevas tecnologías en el campo de la robótica y así crear una liga de fútbol de robots. Al poco tiempo se crea un mundial de fútbol robótico conocido como RoboCup Soccer, donde el objetivo principal de las competencias es la investigación en la cooperación de sistemas multi-robots en entornos dinámicos, con la mayor autonomía posible así como también en áreas referentes a la inteligencia artificial, sistemas de control, comportamiento, aprendizaje, planeación en tiempo real, asignación de tarea, visión artificial, entre otras (Kitano, 1995; The Robocup Federation, 1998).

Llevando el desarrollo del video juego Pong, a algo más abstracto, se busca que los resultados de este proyecto sean implementados como estrategia de fútbol robótico, un ambiente más dinámico, implementando la asignación de tareas o roles en los dos robots Lego de este proyecto (Guerrero J. 2011)..

Metodología

Desarrollo de hardware

Las tecnologías desarrolladas gracias a la implementación en el fútbol robótico han sido bastantes, tanto así que existen diferentes competencias y categorías en ese aspecto como RoboCup (RoboCup Org., RoboCup 2011,) teniendo presente los reglamentos de la FIRA (Federation of International Robot-Soccer Association-FIRA, s.f). éstas llaman la atención en diversos ambientes porque es experimental, dinámico y divertido, ya que se acerca al fútbol real, a lo que no son ajenas otras líneas de investigación en la robótica, pues se espera que en un futuro un equipo de robots juegue con un equipo de seres humanos.

Evidentemente en el juego Pong existen dos roles: bloquear y lanzar una pelota; estos dos roles son similares en otros juegos, por ejemplo, el hockey, el balón mano y el fútbol (donde el arquero es el que bloquea y el delantero es el que lanza). Estas son las habilidades que los robots deben cumplir para dar seguimiento al objetivo del juego, cambiando de roles y dependiendo de si la pelota viene o va. El diseño del robot se realizó teniendo como objetivo el cumplimiento de las funciones de un arquero (tapar) y un delantero (lanzar). Por tal motivo, este dispositivo tiene que moverse de tal manera que no entre la pelota al arco y luego rechazarla, intentando anotarle un punto a su contrincante en el arco adversario.

Para la elaboración del proyecto, se tuvieron en cuenta las habilidades básicas que son requeridas al emular el videojuego Pong, cuyos recursos son el kit LEGO® MindStroms Nxt 2.0. En el videojuego es necesario desplazarse para detener la pelota; para ello se usaron dos servomotores del kit, motores DC que incorporan un sensor de posición con un grado de resolución y una velocidad de rotación del eje de 170 rpm que además consume una corriente de 60 mA sin carga. Como es habitual en motores de corriente continua, la velocidad de rotación es proporcional a la tensión aplicada a ellos, (véase figura 2; Pinto & Bermúdez, 2007). Además este motor consume 2A cuando el eje está bloqueado. Para ello está protegido por un termistor sin dañar el motor por el aumento de corriente. Su mayor peso para levantar es 50 N.cm (véase tabla 1 y figura 3; Hurbain).

Otra de las características que tiene este proyecto es que el robot se desplaza hacia donde se dirige la bola (IRball), por ello el robot utiliza un sensor infrarrojo denominado IRSeeker (figura 4). El receptor IRSeeker es capaz de recibir señales infrarrojas (como las que emite la IRball) de dos formas distintas: modo modulada (CA) o modo de modulación (DC). En el CA, el sensor detecta señales IR moduladas filtrando la mayoría de señales infrarrojas que produzcan interferencia (como la luz del sol); éste se ajusta a las señales de onda cuadrada a 1200Hz. En la figura 4 se muestra el área de visión del sensor IRSeeker. La bola usada es la IRBall HiTechnic de Lego, ya que ésta emite señal de infrarrojos, consta de un array de leds distribuidos de forma uniforme por toda la esfera. Además, tiene cuatro modos de emisión: pulso modulado, emisión continua DC, 600Hz - onda modulada de 600Hz, 1200Hz - onda Modulada de 1200Hz (véase figura 5) (HiTechnic Products, 2001).

Para que el robot realice los movimientos dependiendo de las entradas de los sensores, el robot móvil consta de un bloque de control y procesamiento denominado "ladrillo" que será el encargado de realizar las funciones de control que sean impuestas (véase figura 6), además se encuentran las entradas y salidas, así como medios de comunicación y visualización según el kit de Lego MindStorms NXT 2.0 programado mediante la plataforma Lab VIEW.

Además de la movilidad que le permite tapar, el robot cambia de rol a delantero teniendo la posibilidad de golpear la pelota para anotar. En consecuencia, se adaptó un servomotor más, el cual controla los dispositivos para golpear la pelota "brazos". Durante el proceso se fueron adaptando engranajes que le proporcionaron dos "brazos" operados por un solo servomotor, aumentando en un 45% el área de respuesta para rechazar la bola.

Durante el proyecto hubo algunos problemas de diseño, ya que se pretendía colocar dos motores para el movimiento del robot; sin embargo, después de las respectivas pruebas se demostró que no era necesario, pues para moverse en una sola dirección sólo basta un motor. Otros dos inconvenientes (estabilidad y movilidad) no resultaron relevantes, pues las dimensiones de los robots generan suficiente equilibrio para que oscile, así como velocidad de respuesta. En la figura 7 se puede observar la estructura final del robot implementado en la simulación del juego Pong®.

A continuación, en la figura 8, se muestra la caracterización del sensor IRSeeker, en el cual se aprecian semicírculos que van aumentando su radio en 10cm y en el centro se encuentra el sensor IRSeeker, del cual salen cuatro líneas que delimitan las nueve zonas, pero para el proyecto sólo se necesitaron cinco, desde la zona 3 hasta la zona 7, ya que las zonas 1, 2, 8 y 9 no son necesarias porque la bola nunca será lanzada desde la izquierda ni desde la derecha del robot en forma paralela.

Construcción del área de juego

Para el proyecto se necesitó un área de juego que cumpliera las siguientes condiciones:

El área de juego se construyó con madecor, material que proporciona agarre para que el robot se desplace sin patinar y le facilite respuestas adecuadas. Para controlar el área de juego se colocaron dos bandas laterales del mismo material, que no permiten que la pelota se salga del juego. No obstante, la pelota no rebota bien en la madera, por tal motivo se adecuaron las bandas como en una mesa de billar, con un material suave para que no pierda la energía cinética que lleva el esférico. Durante el proyecto se usó silicona fría e icopor, siendo este último el de más fácil instalación, que le permitió a la pelota rebotar adecuadamente. Pensando en la portabilidad del área de juego, se dividió en dos partes iguales unidas por una línea de bisagras en la parte inferior de la plataforma, la cual generó en el centro del mismo una leve inclinación sin causar perturbación en el desplazamiento de la pelota, tal como se puede ver en la figura 9.

Desarrollo del software

El programa que se usó para desarrollar este proyecto fue Lab VIEW, en el cual se fueron programando etapas como el movimiento, el golpeo y la posición de la pelota (véase figura 10). Con el movimiento lo primero fue programar un motor para comprobar el funcionamiento, mediante las ayudas que ofrece Lab VIEW de tener bloques de cada elemento. Inicialmente se desarrolló estableciendo un tiempo de avance para las pruebas; sin embargo, en el proyecto no era útil porque debía moverse de acuerdo al desplazamiento de la pelota y no a un tiempo determinado. Esta etapa se caracterizó por una gran cantidad de pruebas en cuanto al movimiento del robot, que ayudaron a mejorar la programación según las respuestas que se esperaban de éste.

Para el caso de golpear la pelota, se hizo lo mismo a fin de verificar que un solo motor era suficiente para devolverla. Después de observar cómo trabajaba la parte del mecanismo y generar el movimiento en el golpeo, se debió acoplar con la posición y orientación de la pelota; de esta forma se pudo desplazar en la dirección adecuada y se logró devolver con satisfacción la pelota al robot adversario; en el siguiente paso se ensayó con el sensor IRSeeker, el cual arrojaba los datos en una matriz y por esto no se podría dar una instrucción especifica, como ir a la derecha, izquierda o golpear cuando estaba en el centro del campo. Así que se tuvo que separar cada dato, con esto se determinó si los datos estaban llegando a la derecha o izquierda y poder desplazar el robot hacia el lado indicado. En un principio se compararon los datos con una constante y se determinó si era mayor o menor, para moverse o no, pero esto sólo daba valores de falso o verdadero, así que se cambió para dar más posibilidades, asumiendo rangos de valores enteros; asimismo, se detiene el robot si ya no puede avanzar más o si no es necesario debido a la orientación de la pelota.

A pesar de la propiedad del sensor IRSeeker para recopilar datos, este sensor era insuficiente si los datos que recogía no estaban separados, por ello se utilizó el Unbundle, el cual separa en un vector las direcciones; al tener el vector por separado por el bloque Index Array, de esta forma cada dato se tomó en forma independiente; en la figura 11 se puede observar el diagrama de bloques del Lab VIEW creado.

Después de haber separado los datos se determinó a qué umbral llegaba desde el centro, derecha o izquierda y al saber esto se compararon con la función GREATER? mediante un dato determinado por pruebas, y si supera ese valor se toma como verdadero en un CASE donde, dependiendo del lugar de la recepción se producirá una respuesta del motor según la función (posición o despeje). Para que se detenga el robot, en caso de que la pelota no se encuentre en el punto de despeje, se usó la función EQUAL?, la cual significa igualdad utilizando los datos recopilados de izquierda y derecha de tal manera, y si son iguales el motor se detendrá (véase figura12).

Después de separar los datos, se decidió la dirección de desplazamiento; se colocó un selector en el que se tomó una decisión por dónde irse en forma de CASE. Dentro de éste se ubicó otro CASE, el cual tomó diferentes rangos, siendo más eficaz al ir por la pelota, quitando el comparador para frenar el robot; además, para el centro del desplazamiento del robot se dieron distintos rangos dentro de ellos READ ROTATION, en el que no deja que el motor avance después de ciertas distancias, y de este modo se evita que el robot se golpee con las bandas laterales que limitan el campo (véase figura 13).

Resultados

Después de implementar todo el proceso, observamos que el robot es más estable cuando se usan cuatro ruedas para su propulsión y posición, ya que al tener contacto con la pelota lanzada, no se desestabiliza y logra golpearla de forma adecuada. El uso de un sensor en la parte frontal del robot, más que en otro lugar del mismo, le permite tener un rango visible y eficaz para el reconocimiento de la luz infrarroja emitida por la pelota, al estar a la misma altura. Todo esto permite que haya interacción dinámica entre los robots emulando de esta forma el videojuego Pong. El uso de un solo sensor arrojó buenos resultados abarcando la visibilidad en su área de juego; por lo que no fue necesario ningún otro sensor.

El tablero en el que se llevó a cabo el juego es una parte fundamental, pues la superficie cumple con las condiciones de permitir el movimiento de los robots sin dejar que se deslicen, ya que esto afectaría su desempeño en el momento de ir al encuentro con la bola, adicionalmente las bandas laterales permiten que ésta rebote para que no se detenga, característica del videojuego Pong.

Asimismo, con el sensor de posición (Encoder), que posee el motor del kit Nxt, se pudo determinar mediante pruebas a cuántos grados podría dar el robot sin chocar con las bandas (límite de desplazamiento horizontal) mejorando en +/- 45% su respuesta en el desplazamiento para evitar que la bola entrara en su "portería".

De otra parte, durante el juego se demuestra la interacción de los dos robots, aunque éstos estén configurados de la misma manera, tanto en hardware como en la programación, no garantiza que siempre gane el mismo robot sino, por el contrario, se intercambian de ganador. Tal como se ilustra en las figuras 14 y 15, se puede observar que el ganador es el robot 2, al tomar los datos de la tabla; sin embargo, la posición de la pelota es aleatoria y por esta razón puede que en otros encuentros cambie el ganador.

En la tabla 3 se muestra la cantidad de veces que tapa y golpea la pelota cada robot, durante diferentes instantes. En el momento que la pelota está en la mitad del tablero, el robot activa las "manos", una en dirección a las manecillas del reloj y la otra en dirección contraria, para darle un mejor golpe a la pelota y que ésta pueda salir disparada con mayor velocidad hacia el campo contrario.

Durante el juego resulta notorio, que dependiendo de las condiciones de juego (posición y orientación de la pelota en el tablero), se logró establecer una conducta básica de comportamiento (atrapar y lanzar) donde se determina un rol de arquero y anotador en instantes específicos indicados (véanse figuras 16 y 17).

Conclusiones


1Artículo de investigación científica y tecnológica, resultado del proyecto de investigación "Robótica móvil autónoma", del grupo de investigación ROMA de la Universidad Distrital Francisco José de Caldas. Bogotá
2Ingeniero Control Electrónico, Universidad Distrital Francisco José de Caldas. winfantem@udistrital.edu.co
3Tecnólogo Electrónica, Universidad Distrital Francisco José de Caldas. jcbautistar@correo.udistrital.edu.co.
4Ingeniero Industrial, Universidad Distrital Francisco José de Caldas. eoberdugor@udistrital.edu.co




Referencias

Federation of International Robot-Soccer Association (FIRA). (2012). 12 FIRA Games and Rules. Recuperado de: www.fira.net/contents/sub01/sub01_7.asp#bylaw12 (enero 18 de 2012)

Guerrero J. (2011). "Nuevas metodologías para la asignación de tareas y formación de coaliciones en sistemas multi-robot" Universitat de les Ules Balears Departament de Ciències Matemàtiques i Informática, Palma de Mallorca. Recuperado de: ibdigital.uib.es/greenstone/collect/tesisUIB/import/TDX-10803-32147.pdf (enero 18 de 2012).

Hiroaki, K. Minoru, A. & Yasuo, K. (1995). RoboCup: The Robot World Cup Initiative. Recuperado de: citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.49.7511&rep=rep1&type=pdf (noviembre 15 de 2011).

HiTechnic Products, Dataport Systems, Inc. (2001). The NXT IRSeeker V2. Recuperado de: www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=nsk1042 (octubre 18 de 2011).

Hurbain, Ph. (2011). Lego® Technic Motors compared characteristics. Guía de Robótica LEGO MindStorms Nxt. Recuperado de: www.philohome.com/motors/motorcomp.htm (enero 20 de 2012).

índice latino, (s.f.). "Historia de los Videojuegos: Videoconsolas" Recuperado de: indicelatino.com/juegos/historia/consolas/ (noviembre 15 de 2011).

Pinto M. & Bermúdez G. (2007). Determinación de los Parámetros para el Servomotor NXT LEGO Mindstorms® con Técnicas de Identificación de Sistemas. Recuperado de: www.iiis.org/CDs2008/CD2008CSC/CISCI2008/PapersPdf/C098SE.pdf (noviembre 15 de 2011).

RoboCup (2011). The World Championship on robotics. Recuperado de: www.robocup2011.org/about-robocup/ (enero 19 de 2012).

_. (2012). La competencia de fútbol robótica en México. Recuperado de: lacuevadelamo.blogspot.com/2012/06/robocup-la-competencia-de-futbol.html (enero 18 de 2012).

The Robocup Federation. (1998). "RoboCup Soccer" Recuperado de: www.robocup.org/robocup-soccer/ (diciembre 14 de 2011).