SDL - Servidor de Sumo. Introducción Este documento presenta los detalles del protocolo utilizado entre el servidor de sumo y los robots luchadores. En el capítulo se presentan los parámetros que se pueden configurar en el servidor, en el capítulo se describe el formato de los mensajes que intercambian el servidor y los luchadores, y en el capítulo 4 se presenta el SDL.. Parámetros de la comunicación La comunicación entre el servidor de sumo y los luchadores se implementa sobre UDP utilizando los siguientes puertos: robot_ip: dirección IP a donde el servidor de sumo envía los mensajes dirigidos al luchador. robot_port: puerto a donde el servidor de sumo envía los mensajes dirigidos al luchador. robot_ip: dirección IP a donde el servidor de sumo envía los mensajes dirigidos al luchador. robot_port: puerto a donde el servidor de sumo envía los mensajes dirigidos al luchador.. Intercambio de mensajes Para delimitar los campos de los mensajes se utiliza el carácter * y los enteros se convierten a ASCII con signo antes de enviarse. Los mensajes que intercambian el servidor de sumo y un luchador son los siguientes: position: el servidor envía este mensaje al luchador para que se posicione en determinado lugar. Normalmente es enviado cuando se da comienzo a un set. Formato: position*x*y*rot*, coordenada (x,y) y rotación donde el árbitro desea ubicar a los luchadores. Donde x e y Z, y r [0,60]. start: el servidor envía este mensaje al luchador para indicarle que el juego ha comenzado, el luchador debe asentir el mensaje. Formato: start*. stop: el servidor envía este mensaje al luchador para indicarle que el juego ha finalizado, el luchador debe asentir el mensaje. Formato: stop*. ok: los luchadores confirman la recepción con este tipo de mensaje. Formato: ok*. update: el servidor envía este mensaje a cada uno de los luchadores para informar el estado del juego y la posición de cada uno. Formato: update*x*y*r*p* xop*yop*rop*pop*, coordenada (x,y), rotación y puntos yuko del luchador que recibe el mensaje, y coordenada (x,y), rotación y puntos yuko del luchador oponente. http://www.fing.edu.uy/inco/eventos/sumo.uy Página de
4. SDL speed: el luchador informa al servidor la velocidad que desea en sus ruedas. Formato: speed*velizq*velder*. Donde las velocidades velizq, elder [-,], velocidades positivas indican movimiento hacia delante y negativas hacia atrás. SYSEM SUMO BLOCK SUMO C[POSIION,SAR,SOP] SIGNALS POSIION, SAR, SOP, MOVE, MOVE, Send, Receive PROCESS SERVER C4[MOVE,MOVE] C[Send] C[Receive] http://www.fing.edu.uy/inco/eventos/sumo.uy Página de
PROCESS SERVER POSIION POSIION[X, Y, R, X, Y, R] Set, NOW + 00 sndok = 0 sndok = 0 Send[IP#POR# position* + X+ * +Y+ * +R] Send[IP#POR# position* + X+ * +Y+ * +R] OK Receive[ip#info] Info == ok sndok == - ip= IP ip = IP sndok++ sndok = - sndok = - sndok <= sndok == - sndok == - && sndok == - sndok++ 4 SAR sndok <= SAR Set, NOW + 00 sndok = 0 sndok = 0 6 http://www.fing.edu.uy/inco/eventos/sumo.uy Página de
6 Send[IP#POR# start ] Send[IP#POR# start ] OK Receive[ip#info] Info == ok sndok == - ip= IP ip = IP sndok++ sndok <= sndok = - sndok = - sndok == - sndok == - && sndok == - sndok++ 8 Set, NOW + 0 sndok <= OK receive[ip# speed *velizq*velder] SOP ip= IP ip = IP Send[IP#POR# stop ] 0 MOVE[Robot, velizq,velder] MOVE[Robot, velizq,velder] Send[IP#POR# stop ] http://www.fing.edu.uy/inco/eventos/sumo.uy Página 4 de
0 GetPlayerData(x,y,angle,score) GetPlayerData(x,y,angle,score) Info = update* +x+ * +y+ * +angle+ * +score+ * +x+ * +y+ * +angle+ * +score Info = update* +x+ * +y+ * +angle+ * +score+ * +x+ * +y+ * +angle+ * +score Send[IP#POR#info] Send[IP#POR#info] http://www.fing.edu.uy/inco/eventos/sumo.uy Página de