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