270 likes | 378 Views
Jacques Robin CIn-UFPE. O que é RoboCup?. Copa de mundo de futebol para robôs físicos e software multi-agentes (softbots) Competição anual associada a uma conferência internacional de IA, robótica ou sistemas multi-agentes Roteiro da apresentação: Motivação e desafios da RoboCup
E N D
Jacques Robin CIn-UFPE
O que é RoboCup? • Copa de mundo de futebol para robôs físicos e software multi-agentes (softbots) • Competição anual associada a uma conferência internacional de IA, robótica ou sistemas multi-agentes • Roteiro da apresentação: • Motivação e desafios da RoboCup • Competições e resultados • SoccerServer • RoboLog • Times do CIn-UFPE • Melhores times da RoboCup’99 divisão softbots
Motivação e desafios da RoboCup • Integrar pesquisa e tecnologia fragmentadas da IA • Percepção computacional (visão, integração de sensores) • Robótica (controle e integração de ações físicas) • Raciocínio, representação do conhecimento e planejamento (reativo e deliberativo) • Aprendizagem de máquina • Sistemas multi-agentes e IA distribuída (comunicação, cooperação, inteligência coletiva emergente) • IA tempo-real • Novo teste de Turing para a IA depois do xadrez • já que conseguimos tornar os computadores mais inteligentes do que Kasparov, • vamos agora tentar eleva-los a um nível de inteligência muito mais alto: o de Zidane !
Histórico • 1992: idéia nasce em um workshop japonês de robótica • 1993: anuncio da Robot-J-League, que logo globaliza-se em Robot World Cup Initiative atendendo apelos da comunidade científica internacional • 1996: pré-RoboCup em Osaka na International Conference on Inteligent Robotics and Systems • 1997: 1a RoboCup em Nagoya no IJCAI’97 • 1998: 2a RoboCup em Paris no ICMAS’98 durante a Copa do Mundo de futebol humano • 1999: 3a RoboCup em Stockholm no IJCAI’99 • 2000: 4a RoboCup em Melbourne no PRICAI’2000
Competições • 4 divisões: • Robôs grandes • 11 robôs do tamanho de R2D2 em quadra de futebol de salão • Robôs pequenos • 5 robôs de diâmetro max 18cm em mesa de ping-pong • visão global autorizada • Robôs com pernas • 3 robô-cachorros da Sony • hardware padronizado • Software multi-agentes (robôs virtuais) • Arquitetura cliente-servidor simulando jogo • SoccerServer implementa o ambiente • 22 clientes implementam os agente jogadores • Comunicação entre jogadores apenas através de strings passadas via o SoccerServer
Robô grande: Robôs pequenos: Robôs cachorros: Competições: fotos
Campeões • 1997: • Grandes: 5 times, 1. ISI/USC (us) • Pequenos: 4 times, 1. CMU (us) • Virtuais: 33 times, • 1. Humboldt U. (de), 2. Tokyo IT (jp), 3. ISI/USC, 4. CMU • 1998 • Grandes: 16 times, 1. Freiburg U, (de), 2. Tubligen U. (de) • Pequenos: 12 times, 1. CMU, 2. Roborros (au) • Virtuais: 34 times, 1. CMU, 2. Humboldt U. • 1999 • Grandes: 20 times, 1. Sharif (?), 2. ART (?), 3. Freiburg U. • Pequenos: 16 times, 1. BigRed (?), 2. FUFighter (?), 3. Lucky Star (?) • Cachorros: 9 times, 1. LRP (fr), 2. UNSW (uk), 3. CMU • Virtuais: 38 times, 1. CMU (us), 2. Freiburg U. (de), 3. Essex (uk)
UDP/IP UDP/IP SoccerServer: arquitetura • Arquitetura clientes-servidor implementa simulador multi-agentes • Servidor atualiza: ambiente dos agentes = campo dos jogadores • Cliente do SoccerServer = agente = jogador • Time = software multi-agentes distribuído em 11 clientes Soccer Monitor Time A Time B Client 1 Client 1 Soccer Server Client 11 Client 11
SoccerServer: comunicação • Recebe strings dos clientes jogadores • codificando suas ações no campo (correr, girar, chutar...) • Atualiza seu modelo do ambiente campo • as conseqüências das ações escolhidas pelos agentes • Manda strings para os clientes jogadores • codificando suas percepções no campo atualizado • visão da bola, dos outros jogadores, audição de mensagens,... • Modelo do campo: • bi-dimensional, atualizado cada 100ms • Comunicação entre jogadores apenas indireta: • ação de falar mandada para o SoccerServer • percepção auditiva recebida do SoccerServer
SoccerServer: propriocepção • Parâmetros: • senseBody(Time, % momento da propriocepção viewMode(Quality, Width), % compromisso entre largura, % qualidade e freqüência da visão stamina(Stamina, % reserva de energia do jogador % parcialmente: - consumida por cada ação % - reabastecida a cada ciclo Effort) % f(Stamina) = percentual da força desejada % da próxima ação efetivamente disponível Speed, % ~ velocidade do jogador HeadAngle, % ângulo cabeça/corpo actionCounts(Kicks, Dashes, Turns, Says, NeckTurns) % número de ações de cada tipo já executada pelo jogador ) • Freqüência: 1 por ciclo
SoccerServer: parámetros da visão • see(Time, % tempo da visão ObjName, % estrutura identificando objeto visto Distance, % posição relativa do objeto visto em coords Direção, % polares centrado no jogador olhando DistChng, DirChng, % derivadas dessas coordenadas polares BodyDir, % quando objeto visto é um jogador, orientação HeadDir) % do corpo e da cabeça relativamente a direção • ObjName = ball | • player(Team,Number) | • goal({l;r}) | % l = left, r = right • line({l|r|t|b}) % t = top, b = bottom • flag/1 | % pontos de referência no campo: • flag/2 | % com argumentos l,r,t,b, e/ou • flag/3). % c = center, p = penalty area, g = goalpoast.
SoccerServer: limites da visão • Campo: • circulo de raio VisibleDistance fixo ao redor do jogador • cone centrado no rosto do jogador de ângulo ViewWidth = {180;90;45} escolhido pelo jogado • Clareza: diminuí com a distância • de perto direção e distância do objeto e se for jogador também cor e número • de longe apenas direção do objeto e se for jogador sem cor nem número • variação contínua entre os dois influência pela escolha de ViewQuality pelo jogador • Confiabilidade: ruído aumenta com distância • Freqüência: inversamente proporcional a ViewQuality e ViewWidth
SoccerServer: audição • Parâmetros: • hear(Time, % tempo da audição Direction, % angulo da procedência da mensagem auditíva % 2 exceções: Direction = self ou referee Message) % string da mensagem em linguagem natural % exceção: linguagem artificial para mensagens % do juiz = kick_off_l | kick_in_l | % corner_kick_r | ... • Limites: • Raio = 50m • Freqüência: • 1 mensagem de jogador por ciclo • caso vários são mandados, apenas o primeiro é ouvido • Nenhum limite para mensagens do juiz
move(X,Y): posicionar jogador no início do jogo dash(Power): acelerar no eixo com força Power turn(Moment): girar corpo de um angulo dependente de Moment e da velocidade do jogador turnNeck(Angle): girar pescoço relativo ao corpo kick(Power,Dir): chutar na direção Dir com força Power catch(Dir): mergulhar na direção Dir para pegar bola; reservado para goleiros say(Message): mandar string no único canal de comunicação compartilhado pelos 22 jogadores change_view(Angle,Quality): mudar compromisso entre largura, profundidade e freqüência da visão Angle = ângulo do cone de visão, 180, 90 ou 45 Quality = high: direção e distancia de cada objeto no cone de visão low: apenas direção dos mesmos Freqüência diminua automaticamente quando Angle e Quality aumentam SoccerServer: ações
SoccerServer: tipo de ambiente • inacessível (percepção parcial e ruidosa) • não determinístico: • execução ruidosa das ações • imprevisibilidade das escolhas do agentes adversários • não confiabilidade de UDP/IP • episódico? (melhor ação depende apenas do estado atual do ambiente e não da sua história?) • dinâmico (o jogo é tempo-real, limite de 100ms para raciocinar sem o ambiente mudar) • contínuo (parâmetros reais em algumas percepções e ações) • ambos cooperativo e antagônico
RoboLog • Interface de alto nível para usar o SoccerServer a partir de Eclipse Prolog (implementado em C) • Estruturado em 4 camada: • camada de redes: • predicados Prolog isomorfos aos comandos do SoccerServer • mas discretizando flux de percepções a ações • e assim implementando sincronização cliente/servidor • camada de raciocínio qualitativo e trigonometria • camada de percepções e ações complexas: • predicados de percepção e ação de granularidade maior do que os comando do SoccerServer • camada de jogador: • código de um agente exemplo com estratégia de jogo simplória • base para prototipagem rápido de times
RoboLog camada 2: ações e percepções complexas • self(Time,X,Y,Dir): posição absoluta instantânea do jogador • myside(Side) e goalside(Side): lado do time do jogador e do gol oposto • goalie(Team,Nr):número dos goleiros • goals(Time,Team,N): placar • object(Time,Name,Id, Dist,Dir,DDist,DDir,X,Y,FaceDir): • coords relativas e absolutas do um objeto qualquer • kick_to(Distance,Dir):chama primitiva kick_to(Power,Dir) várias vezes até a bola estar na distancia Distance
RoboLog camada 4: jogador exemplo com habilidades mínimas • Procura ver a bola e o gol do adversário • Se bola estiver bastante perto para ser dominada: • girar para ficar atrás dela na direção do gol • se a trajetória bola-gol estiver bloqueada por um jogador • tentar driblar jogador lateralmente • senão • se a bola estiver bastante perto do gol, chutar para o gol • senão driblar na direção do gol • Senão • se a bola estiver abaixo de um certo limiar de distância: • girar para ficar orientado na sua direção e acelerar • senão voltar para sua posição de base no campo
camada 1: atualização do modelo do ambiente(t) interpretação das percepções recebidas (passivo) ações de percepção e de comunicação (ativo, guiado por objetivos das camadas mais altas) ex,: onde está a bola agora? camada 2: previsão do modelo do ambiente(t+n) ex,: onde estará a bola daqui a 3 ciclos se chutar nela com força F? envolve modelagem do comportamento dos outros camada 3: habilidades técnicas decomposta em sub-camadas ex, driblar adversários envolve saber conduzir a bola camada 4: habilidades táticas individuais decomposta em sub-camadas ex, chutar ou passar? se passar, passar para quem? camada 5: participação em planos de jogadas coletivas jogadas de bola parada impedimento marcação coordenada CMUnited bi-campeão do mundo: arquitetura em camadas
CMUnited bi-campeão do mundo: tecnologias • Representação do conhecimento e raciocínio simbólico • regras heurísticas analíticas • Aprendizagem de máquina • aprendizagem supervisionado • conexionista (redes neurais) na camada 3, ex, getToBall • simbólico (árvores de decisão) na camada 4, ex, o que fazer com a bola: driblar, passar, chutar para o goal? • aprendizagem por reforço • simbólico na camada 4, ex, para onde lançar a bola? • Ambiente de avaliação e treinamento empírico usando: • SoccerServer Coach Client • Rastreamento em camada • Implementação em C++
Time UMGP (Univeristy of Maryland’s Genetic Programming) • Time automaticamente programada usando aprendizagem evolucionista • 2 vitórias e 2 derrotas na RoboCup’97 • Prêmio da contribuição científica
O que é aprendizagem evolucionista? • Entrada: • sopa primordial de instruções primitivas e construtores • critério de seleção natural (fitness measure) • operadores de criação de novos indivíduos-programas • reprodução, mutação • Saída: • programa combinando instruções primitivas por meio de construtores • melhor indivíduo da ultima geração • Processo iterativo: • criar geração inicial de combinações (programas) aleatórias • organizar torneio entre eles e selecionar os vencedores • criar nova geração combinando seus genes (sub-programas) • recomeçar até veteranos derrotam novatos
Time aleatória (arqueozóico) Futebol de quintal (paleozóico) Evolução dos times da UMGP
Aprender a proteger gol (mesozóico) Aprender ocupação racional do território (cenozóico) Evolução dos times da UMGP
RoboJornalistas: ISAAC Zeng99 annihilated by CMU99! CMU99 absolutely devastated Zeng99 in a 11-0 rout. CMU99 showed their offensive muster, pressing the attack on Zeng99 and keeping the ball in their half of the field for 86% of the game. With this field dominance, they had an easy time scoring on Zeng99. CMU99 handled the ball well, keeping control of the ball for 74% of the game. Zeng99 had their players close together in this game. Better positioning may have helped them contain the CMU99 offense. CMU99 scored using their dribbling technique for 2 of their goals. CMU99 scored using their passing skills for 8 of their goals. CMU99 scored after stealing the ball from an opponent for 1 of their goals. CMU99 did not keep a good amount of distance between their players. Zeng99 did not keep a good amount of distance between their players. CMU99 showed some good ball control skills. This game summary was produced by ISAAC.
Idéias de projetos RoboCup no CIn-UFPE • Times do CIn: • MaracatuRC00 para RoboCopa Brasil 2000 • MaractuRC01 para RoboCup 2001 • Divisão Lego Mindstorm • Ambiente de Desenvolvimento de SoccerBots: • GUI com vasto menu de predicados e classes prontos para testar rapidamente idéias táticas via “cortar e colar” • Ambiente de Suporte a Decisão: • Data Warehouse de estatísticas de jogos • Mineração de dados do data warehouse para descobrir táticas vencedoras • Geração de resumos (hiper)textuais dos resultados da mineração de dados • Disponibilizado na Web para usuários externos