Jacques Robin CIn-UFPE
description
Transcript of Jacques Robin CIn-UFPE
Jacques RobinCIn-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
Competições: fotos Robô grande:
Robôs pequenos:
Robôs cachorros:
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)
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 ServerUDP/IP UDP/IP
Client 1
Client 11Client 11
Client 1
Time A Time BSoccer Monitor
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
SoccerMonitor
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
SoccerServer: ações
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: 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
CMUnited bi-campeão do mundo:
arquitetura em camadas
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: 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
Evolução dos times da UMGP
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)
RoboJornalistas: ISAAC
Zeng99 annihilated by CMU99! CMU99 absolutely devastated Zeng99 in a 11-0 rout. CMU99showed their offensive muster, pressing the attack on Zeng99and keeping the ball in their half of the field for 86% of thegame. With this field dominance, they had an easy time scoringon Zeng99. CMU99 handled the ball well, keeping control of theball for 74% of the game. Zeng99 had their players closetogether in this game. Better positioning may have helped themcontain the CMU99 offense. CMU99 scored using their dribbling technique for 2 of theirgoals. CMU99 scored using their passing skills for 8 of theirgoals. CMU99 scored after stealing the ball from an opponentfor 1 of their goals. CMU99 did not keep a good amount ofdistance between their players. Zeng99 did not keep a goodamount of distance between their players. CMU99 showed somegood 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