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 multiagentes
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 globalizase 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
Soccer Monitor
Time A
Time B
Client 1
Client 1
UDP/IP
Client 11
Soccer Server
UDP/IP
Client 11
 Servidor atualiza: ambiente dos agentes = campo dos jogadores
 Cliente do SoccerServer = agente = jogador
 Time = software multi-agentes distribuído em 11 clientes
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,
Message)
%
%
%
%
%
%
angulo da procedência da mensagem auditíva
2 exceções: Direction = self ou referee
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. 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
Download

robocup - Centro de Informática da UFPE