Getting Started 1. Introducción Este documento presenta la información relevante y los procedimientos requeridos para comenzar a utilizar el software del campeonato, con el fin de implementar la estrategia del luchador. Al principio puede parecer complicado el uso de todos los paquetes de software disponibles, siendo el objetivo principal de éstos que el entorno sobre el cual trabajen los participantes sea lo más parecido al del campeonato. El simulador es un mundo virtual (motor físico) que se encarga de emular el comportamiento de los robots en el mundo real. Este simulador permite programar estrategias sin necesidad de contar con los robots físicos. El servidor de juego es comandado por el árbitro humano, el cual se encarga de enviar información de estado y recibir comandos. Además de este software es necesario contar con dos estrategias (una para cada luchador). En la figura 1 se muestra la interacción entre estos elementos. En el capítulo 2 se presentan los paquetes de software requeridos para ejecutar los diversos componentes del juego, en el capítulo 3 se describe el software disponible para bajar de la página del evento, y en el capítulo 4 se muestra como compilar un luchador de ejemplo y como ejecutar las aplicaciones requeridas por el juego. 2. Requerimientos de software Es necesario disponer del siguiente software: Java SDK [1], usado por el servidor ya que éste está implementado en java. Java 3D [2], usado por el servidor para la visualización (muestra los luchadores y el dohyo). sumoserver.jar, el servidor de juego. sumouysim, el simulador que emula el comportamiento de los robots en un mundo real. Adicionalmente se deberá disponer de las estrategias de ambos luchadores, las cuales dotan a los robots de inteligencia. Las mismas deben implementar el protocolo definido entre el luchador y el servidor [3]. http://www.fing.edu.uy/inco/eventos/sumo.uy Página 1 de 5
Estretegia del luchador 1 velocidad del luchador 1 Simulador velocidad de los luchadores Servidor comandos: reposicionar, start y stop Arbitro Humano velocidad del luchador 2 3. Software disponible Estretegia del luchador 2 Figura 1. Interacción entre el software y el árbitro humano. Introducción El software mínimo requerido para comenzar a programar la estrategia de un luchador es el simulador y el servidor. Simulador El simulador está implementado sobre la biblioteca de modelado físico ODE [4]. El mismo permite implementar estrategias sin necesidad de contar con los robots reales. El simulador recibe desde el servidor comandos de velocidades de los robots, simula este comportamiento usando ODE y envía la información de al servidor. El simulador está implementado en lenguaje C, en la sección descargas se puede obtener las fuentes del mismo y los binarios (linux y windows). http://www.fing.edu.uy/inco/eventos/sumo.uy Página 2 de 5
Para correr el simulador se debe ejecutar el binario:./sumouysim (linux) Desde el explorador de windows realizar doble click sobre el ejecutable SumoUYSim.exe (windows). Servidor El servidor brinda una interfaz gráfica para el árbitro humano, se conecta al simulador y a las estrategias. Desde la interfaz gráfica es posible enviarles comandos a los robots. Estos comandos indican el estado del juego y son los siguientes: Reposicionar: envía a las estrategias el comando reposicionar para que estos coloquen a sus luchadores en la posición de inicio. Start: envía a las estrategias el comando start, lo cual indica el comienzo del juego. Stop: envía a las estrategias el comando stop, para que las estrategias frenen a sus robots, y no procesen la información de recibida. Figura 2. Visualización del simulador. El servidor está implementado en Java por lo que requiere disponer de la máquina virtual instalada en el computador. El servidor incluye la visualización del dohyo y, para esto utiliza Java3D por lo que será necesario tener instalado este paquete antes de ejecutar el servidor. Para correr el simulador debe utilizarse el comando java jar sumoserver.jar http://www.fing.edu.uy/inco/eventos/sumo.uy Página 3 de 5
Estrategias Para implementar una estrategia, los participantes pueden utilizar las APIs que implementan la comunicación entre el luchador y el servidor, las mismas se brindan en lenguaje C y Java. El uso de estas APIs elimina la necesidad de implementar el protocolo de comunicaciones con el servidor. Si lo desean los participantes podrán implementar su luchador en cualquier lenguaje, en este caso deberán implementar previamente el protocolo de comunicaciones entre el servidor y el luchador [3]. Para compilar el jugador de ejemplo C++ use el siguiente comando: g++ -o jugador -g jugador.cpp apisumouyc.cpp -lncurses Luchadores de ejemplo Para evaluar sus estrategias los participantes podrán descargar las estrategias brindadas como ejemplo: Jugador C++ Jugador Aleatorio Java Jugador Simple Java También se pueden bajar del sitio las estrategias implementadas por participantes en eventos pasados. 4. Modo de uso 1. Descargar sumoserver.jar, SumoUYSim y el jugador.cpp en un directorio. 2. Iniciar el simulador:./sumouysim 3. Iniciar el servidor: java -jar sumoserver.jar 4. Iniciar el jugador:./jugador 5. Agente y entorno Agente es todo aquello que puede considerarse que percibe su ambiente mediante sensores y responde a actúa en tal ambiente por medio de actuadores. Agente percepciones acciones Entorno Figura 3. Esquema Agente-Entorno. http://www.fing.edu.uy/inco/eventos/sumo.uy Página 4 de 5
Los participantes deben implementar la estrategia del luchador. Para ello deberán interactuar con el servidor según el modelo de agente. El servidor envía las percepciones al luchador y el luchador responde con la acción que desea emprender. Las acciones que la estrategia puede realizar son fijar la velocidad en las ruedas izquierda y derecha del robot que comanda. Las velocidades permitidas van desde el -5 al 5, donde valores positivos indican movimientos hacia delante y valores negativos hacia atrás. La velocidad cero deja libre a la rueda del luchador. Las percepciones que recibe la estrategia son la tanto del luchador propio como del oponente. 6. Referencias [1] Java 2 Platform, Standard Edition, http://java.sun.com [2] Java 3D API, https://java3d.dev.java.net/ [3] Protocolo entre el servidor y el luchador, http://www.fing.edu.uy/inco/eventos/sumo.uy/documentos/protocoloservidor.pdf [4] Open Dynamics Engine (ODE), http://www.ode.org/ http://www.fing.edu.uy/inco/eventos/sumo.uy Página 5 de 5