Prof. Dr. Erivelton Geraldo Nepomuceno
Prof. Dr. Marcos Santos de Oliveira
André Luiz Carvalho Ottoni
Carlos Manuel Viriato Neto
Fernanda Felipe de Oliveira
Setembro, 2011
Mini-Curso de Futebol de Robôs Simulado
1. Introdução ao futebol de robôs
O futebol de robôs foi uma forma encontrada para incentivar e possibilitar o
desenvolvimento de atividades científicas e tecnológicas nas áreas de Inteligência
Artificial e Robótica. O principal objetivo do Futebol de Robôs é promover avanços
científicos e tecnológicos para que se retornem para a sociedade os benefícios que os
frutos destas pesquisas e estudos podem gerar, onde podemos citar o desenvolvimento
da comunicação wirelles, aparelhos cada vez mais autônomos, dispositivos e
aparelhos eletrônicos cada vez mais independentes e inteligentes, capazes de
reconhecer comandos por voz, recebendo ordens apenas de seu dono,
desenvolvimento de mecanismos autônomos tais como robôs de busca e resgate
capazes de operar em ambientes críticos para humanos, tais como desastres
químicos, ambientes explosivos, desastres naturais etc. dentre diversos outros
exemplos cuja aplicação se tornou possível por pesquisas e estudos motivados por
desafios, como é o caso do Futebol de Robôs.
O futebol de robôs pode ser descrito como uma equipe robôs que são capazes de
jogar futebol, onde estes robôs são projetados para atuar em campo de forma integrada,
como uma equipe de futebol de humanos. São estudadas as características de atuação
coletiva e implementadas estas características nos robôs, para que estes também possam
atuar em sua equipe (seu time) de forma coletiva, nenhum robô pega a bola e corre com
ela para o gol, todos analisam as possibilidades e escolhem, se passa a bola para outro
companheiro time, se irá cruzar ou mesmo lançar para o gol.
Entre os desafios e problemas a serem estudados, os jogadores robóticos
precisam realizar processos de reconhecimento visuais em tempo real, navegar em
um espaço dinâmico, rastrear objetos em movimento, colaborar com outros robôs
e ter controle para acertar a bola na direção correta. Para atingir esse objetivo os
robôs devem ser autônomos, eficientes, cooperativos, com capacidades de
planejamento, raciocínio e aprendizado, além de atuarem num ambiente tempo real.
1.1 Robocup
A RoboCup é uma organização internacional criada para promover a Inteligência
Artificial (IA), a robótica e campos correlacionados. É uma tentativa de acelerar as
pesquisas de IA e inteligência robótica, provendo assim um problema padrão onde uma
grande quantidade de tecnologias podem ser desenvolvidas, integradas e examinadas. A
RoboCup escolheu o jogo de futebol como o principal tópico de pesquisa, procurando
inovações que podem ser aplicas em problemas sociais significantes e na indústria. O
objetivo principal do projeto RoboCup é que até 2050, seja desenvolvido um time de
robôs humanoides totalmente autônomos e que podem ganhar do com os melhores
jogadores do mundo.
1.2 Competições
Abaixo algumas competições de robótica, divididas em três níveis: regional, nacional e
internacional:
1.1.1
Regionais
 Copa Mineira de Simulação 2D (CMS2D)
http://www.ufsj.edu.br/cms2d/
2
Mini-Curso de Futebol de Robôs Simulado


Olimpíada de Robótica do Campo das Vertentes (ORCV)
http://www.ufsj.edu.br/orcv/
Olimpíada de Robôs da UFJF
http://www.ufjf.br/ramoieee/olimpiadas-de-robos-2011/
1.1.2
Nacionais
 Competição Brasileira de Robótica (CBR)
http://www.cbr2011.org/
 Olimpíada Brasileira de Robótica (OBR)
http://www.obr.org.br/
1.1.3 Internacionais
 Competição Latino America de Robótica (LARC)
http://www.ieeelarc.org/
 Mundial da Robocup
http://www.robocup2011.org/
1.3 Categorias – Vídeos
1.3.1 Humanoid
1.3.2 Middle Size
1.3.3 Stantart Plataform
1.3.4 Small-Size (F180)
1.3.5 Very Small-Size
1.3.6 Mixed Reality
1.3.7 Simulation 3D
1.3.8 Simulation 2D
1.3.9 Rescue
1.3.10 Rescue Virtual
1.3.11 Junior
3
Mini-Curso de Futebol de Robôs Simulado
2 Noções Iniciais de Simulação 2D
Nessa simulação dois times formados por 11 agentes inteligentes autônomos
disputam uma partida de futebol em duas dimensões. Cada um dos agentes que
representa um jogador recebe apenas informações limitadas sobre a situação do jogo e
precisa decidir cada ação de modo a contribuir com a equipe como um todo.
Os robôs são totalmente autônomos, ou seja, são programados antes das partidas e
não sofrem intervenção humana durante o jogo.
2.1 Estrutura de Comunicação
Figura 1 – Estrutura de comunicação entre os times, o servidor e o monitor.
2.2 Pacotes de Instalação
O sistema de simulação de futebol é composto por 3 módulos principais: o servidor
(soccerserver), o visualizador (soccer monitor) e o vídeo (logplayer).
4
Mini-Curso de Futebol de Robôs Simulado
Figura 2 – Módulos do sistema de futebol simulado.
2.2.1 rcsserver
O simulador é o responsável por realizar a simulação de jogos utilizando para tal uma
arquitetura cliente-servidor. Providencia um campo de futebol virtual e simula o
movimento de todos os objetos no mesmo, controlando o jogo segundo um conjunto de
regras pré-especificado. Os clientes (jogadores) conectam-se ao simulador através de v
sockets UDP. O simulador recebe os comandos dos clientes, executa-os simulando o
movimento de todos os objetos no campo e envia aos clientes informação sensorial.
2.2.2 rcssmonitor
O monitor é a ferramenta que permite visualizar os jogos virtuais realizados, com o
auxílio do simulador. Comunica com o simulador também através de sockets UDP,
recebendo deste as posições de todos os objectos no campo virtual. Efectua depois o
display gráfico desta informação de forma a permitir aos humanos a visualização do
jogo.
2.2.3 rcsslogplayer
O vídeo (Logplayer) é uma aplicação que permite a visualização de jogos pré-gravados
(ficheiros log) à semelhança do que acontece com um gravador de vídeo. A sua
utilização é associada à utilização de um monitor de forma a poder visualizar os jogos.
2.3 Procedimento de instalação
2.3.1 Instalando as dependências pelo modo texto - apt-get
No modo texto, siga os comandos abaixo. Você pode copiar cada um dos comandos, um
de cada vez. O que estiver entre < e > é apenas um comentário sobre o comando, não
devendo ser copiado.
su
<forneça a senha do root. Aqui você estará se logando como root. Caso
use ubuntu,
pode-se usar o comando "sudo su"(sem aspas) e fornecer a senha do
usuário
5
Mini-Curso de Futebol de Robôs Simulado
normal>
apt-get update
<atualiza a lista de pacotes disponíveis na internet>
apt-get install libltdl7 libstdc++6 libboost-filesystem1.40.0 \
libboost-program-options1.40.0 libqtcore4 libqtgui4 \
libqt4-network libxaw7 libxpm4 libxt6 gcc g++ tcsh libqt4-opengl
<Pode copiar as três linhas acima de uma só vez. Esse comando instala
todos os
pacotes necessários.>
Tabela 1 – Pacotes de instalação.
2.3.2 Instalando as dependências pelo modo gráfico - Synaptic
Abra o Synaptic (Sistema->Administração->Gerenciador de Pacotes Synaptic),
clique em “Recarregar” para atualizar as listas de pacotes disponíveis na internet e
depois, usando a ferramenta de busca, selecione os seguintes pacotes para instalação:














libltdl7
libstdc++6
libboost-filesystem1.40.0
libboost-program-options1.40.0
libqtcore4
libqtgui4
libqt4-network
libxaw7
libxpm4
libxt6
gcc
g++
tcsh
libqt4-opengl
2.3.3 Observação sobre as versões dos pacotes
Se você não estiver usando o Debian Testing ou Ubuntu, os pacotes acima
podem ter outros nomes. Nesse caso, procure no synaptic algum pacote que tenha parte
do nome parecido com os pacotes acima.
Também dependendo da sua distribuição, os pacotes libboost-filesystem1.40.0 e
libboost-programoptions1.40 podem estar em outra versão, a 1.38 por exemplo. O
simulador pré-compilado não irá funcionar com essas outras versões do libboost. Você
terá que instalar exatamente a versão do libboost que está na lista da seção anterior.
2.3.4 Instalando os pacotes pré-compilados do Simulador
Abra um terminal, navegue até a pasta onde encontram-se os pacotes, e como
root execute o comando:
dpkg -i *.deb
Tabela 2 – Instalando os pacotes pré-compilados.
O comando acima instalará todos os pacotes .deb contidos na pasta, no caso, os
pacotes do simulador.
6
Mini-Curso de Futebol de Robôs Simulado
Obs: para estar como root digite sudo su (enter) e depois a senha.
Pronto, o simulador está instalado e pronto para ser usado.
2.4 Executando o Simulador
Para executar o simulador vá até o terminal e digite:
rcsoccersim
Tabela 3 – Executando o simulador.
Para executar o logplayer vá até o terminal e digite:
rcsslogplayer
Tabela 4 – Executando o logplayer.
2.4 Funções do Monitor e Logplayer
2.4.1
Visualização de um vídeo de uma partida
a) Abrindo um arquivo de vídeo.
Figura 3 – Abrir vídeo.
b) Barra de controle de vídeo do Logplayer.
Figura 4 - Barra de controle de vídeo do Logplayer.
2.4.2
Visualização de trajetórias
7
Mini-Curso de Futebol de Robôs Simulado
Figura 5 – Traçar rota de jogador e bola.
2.4.3
Análise dos jogadores
Figura 4 – Informações do jogador na partida.
2.4.2 Iniciando uma partida
8
Mini-Curso de Futebol de Robôs Simulado
Figura 5 – Chute inicial (KickOff).
3. Criando um novo time a partir do UvA Trilearn 2003
3.1 Compilando o time
Descompacte o arquivo do time trilearnBase. Abra um terminal, entre na pasta
extraída e execute o comando:
./configure
Tabela 5 – Verificando as dependências.
Isso irá verificar se você tem as dependências instaladas e criar o Makefile do time.
Então, para compilar o time, digite:
make
Tabela 6 – Compilando o time.
O processo acima poderá demorar um pouco. Quanto estiver terminado, o time base
estará compilado e pronto para ser executado.
3.2 Comandos básicos
A) Chute: soc = kickTo( posGoal, SS->getBallSpeedMax() );
B) Carregar a bola
Tipos de dribble :
 Lento: soc = dribble(0, DRIBBLE_SLOW);
 Rápido: soc = dribble(0, DRIBBLE_FAST);
 Outro: soc = dribble(0, DRIBBLE_WITHBALL);
C) Posição do agente


Em X: posAgent.getX();
Em Y:posAgent.getY();
9
Mini-Curso de Futebol de Robôs Simulado
Observação: A origem do sistema de coordenadas é o centro do campo, sendo que a
sua orientação é relativa ao campo de ataque do time. Se o seu time está atacando para a
direita, então a coordenada x positiva estará apontada para a direita e a coordenada y
positiva estará apontada para baixo. Caso o seu time esteja atacando para a esquerda,
então a coordenada x positiva estará direcionada para a esquerda e a coordenada y
positiva estará direcionada para cima. Isso que dizer que você não precisa fazer dois
códigos, um para quando o seu time estiver do lado esquerdo e um para quando o seu
time estiver no lado direito.
Figura 6 – Coordenadas para o time que ataca para a direita.
D) Formação do time: Caso queira alterar a formação do time você deve procurar a
linha
formations->setFormation(FT_433_offensive);
Opções para formação:
 FT_433_offensive;
 FT_334_offensive;
 FT_defensive;
 FT_open_defensive;
 FT_343_attacking.
Observação: no arquivo formations.conf é possível alterar a estrutura das formações
acima, ou até mesmo criar novas.
3.3 Exemplos
A) Chute para o gol
10
Mini-Curso de Futebol de Robôs Simulado
A estratégia do Time Base é chutar para o gol sempre que a bola estiver na área de chute
do jogador.
if( WM->isBallKickable()) // if kickable
{
VecPosition posGoal( PITCH_LENGTH/2.0, (-1 + 2*(WM->getCurrentCycle()%2)) *
0.4 * SS->getGoalWidth() );
soc = kickTo( posGoal, SS->getBallSpeedMax() ); // kick maximal
ACT->putCommandInQueue( soc );
ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) );
Tabela 7 – Chute para o gol.
B) Escolhendo o jogador para chute ou dribble.
if( WM->isBallKickable())
{
// if kickable
VecPosition posGoal( PITCH_LENGTH/2.0, (-1 + 2*(WM>getCurrentCycle()%2)) * 0.4 * SS->getGoalWidth() );
switch(WM->getPlayerNumber()){//Escolhe jogador
case 2:
soc = dribble(0, DRIBBLE_FAST);
break;
case 3:
soc = dribble(0, DRIBBLE_FAST);
break;
case 4:
soc = dribble(0, DRIBBLE_FAST);
break;
case 5:
soc = dribble(0, DRIBBLE_FAST);
break;
case 6:
soc = dribble(0, DRIBBLE_FAST);
break;
case 7:
soc = kickTo( posGoal, SS->getBallSpeedMax() );
break;
case 8:
soc = kickTo( posGoal, SS->getBallSpeedMax() );
break;
case 9:
soc = kickTo( posGoal, SS->getBallSpeedMax() );
break;
case 10:
soc = kickTo( posGoal, SS->getBallSpeedMax() );
break;
case 11:
soc
=
kickTo(
posGoal,
SS->getBallSpeedMax()
break;
);
}
ACT->putCommandInQueue( soc );
ACT->putCommandInQueue( turnNeckToObject( OBJECT_BALL, soc ) );
Tabela 7 – Chute ou dribble.
11
Mini-Curso de Futebol de Robôs Simulado
C) Verificando posição em X para chute.
if( WM->isBallKickable()) // if kickable
{
if (posAgent.getX() < 35)
{
soc = dribble (0,DRIBBLE_SLOW);
}
else
{
VecPosition posGoal( PITCH_LENGTH/2.0, (-1 + 2*(WM->getCurrentCycle()%2))*
0.4 * SS->getGoalWidth() );
soc = kickTo( posGoal, SS->getBallSpeedMax() ); // kick maxima
}
Tabela 8 – Exemplo c.
D)
if( WM->isBallKickable()) // if kickable
{
if (posAgent.getX() < 0)/*está no nosso campo*/
{
soc = kickTo(VecPosition(posAgent.getX()+8, posAgent.getY()), 1);
}
else
{
if (posAgent.getX() < 35)
{
soc = kickTo ( VecPosition (37,15), 0.5);
}
else
{
VecPosition posGoal( PITCH_LENGTH/2.0, (-1 + 2*(WM->getCurrentCycle()
%2)) * 0.4 * SS->getGoalWidth() );
soc = kickTo( posGoal, SS->getBallSpeedMax() ); // kick maximal
}
}
ACT->putCommandInQueue( soc );
Tabela 9 – Exemplo d.
12
Mini-Curso de Futebol de Robôs Simulado
Exercícios:
1) Desenvolver uma estratégia em que os jogadores:



2, 3, 4 e 5 carregam a bola devagar;
6 e 7 carregam a bola rápido;
9, 10 e 11 chutam a bola no gol.
2) Desenvolver uma estratégia com formação 334, em que os jogadores chutam a bola
caso posição X<0 ou X>30. Caso contrário o agente carrega a bola.
3) Alterar a formação FT_433_offensive no o arquivo formations.conf de acordo
com a tabela abaixo.
# Formation 3 = FT_334_offensive
3
-50.0 -25.0 -25.0 -10.0 -30.0
3.0
3.0 15.0 15.0 18.0 18.0 # X_pos
0.0 5.0
0.0
0.5 -5.0 -5.0 11.0 -5.0
5.0 19.0 -19.0 # Y_pos
1
4
2
5
4
6
6
8
8
7
7
# P_type
0.0
0.1
0.6
0.6
0.6
0.6
0.6
0.5
0.6
# X_attr
0.0
0.1
0.25 0.25 0.25 0.25 0.3 0.2
0.2
# Y_attr
0
1
1
1
0
0
0
0
0
#Behind_ball
0.0 -50.5 -45.0 -45.0 -45.0 -30.0 -30.0 -45.0
-2.0
# X_min
0.0 -30.0
0.0
0.0 2.0
20.0 42.0 44.0
45.0
# X_max
Tabela 10 – Exerçicio 3
O que aconteceu?
4) Efetuar uma mudanças em uma das formações no arquivo formations.conf, de forma
que a defesa do time fique mais fechada.
Referências:




PET Engenharia da Computação (UFES): http://www.inf.ufes.br/~pet/
wiki.icmc.usp.br/images/5/5c/Dicas.pdf
paginas.fe.up.pt/~lpreis/Tese/Capitulo8.PDF
De Boer e J. R. Kok, R.: The incremental development of a synthetic multiagent system: The uva trilearn 2001 robotic soccer simulation team. Master’s
thesis, University of Amsterdam, The Netherlands (Feb 2002).
13
Download

Prof. Dr. Erivelton Geraldo Nepomuceno Prof. Dr. Marcos