Manual

Transcrição

Manual
Manual Sci-Soccer
Versão: 2.0
Data: Abril de 2012
Sumário
1.
Contrato de licença do uso do Sci-Soccer ..................................................................................... 3
2.
Introdução ao Sci-Soccer ............................................................................................................... 4
3.
Requisitos Recomendados de Hardware ...................................................................................... 5
4.
Requisitos Recomendados do Hardware do Sistema de Aquisição de Imagens .......................... 5
4.1
Câmera .................................................................................................................................. 5
4.2
Lente Varifocal Auto ÍrisDC ................................................................................................... 6
4.3
Placa de captura .................................................................................................................... 6
5.
Manutenção do Robô Sci-Soccer .................................................................................................. 7
6.
Cuidados ao manusear o robô ...................................................................................................... 9
7.
Instalação do software ................................................................................................................ 10
7.1
Baixando o software............................................................................................................ 10
7.2
Instalando o Sci-Soccer ....................................................................................................... 10
7.3
Desinstalando o Sci-Soccer.................................................................................................. 11
8.
Execução do Programa ................................................................................................................ 11
9.
Utilização do Software ................................................................................................................ 12
9.1
Calibrando o Campo ............................................................................................................ 12
9.2
Calibrando os Robôs para identificação .............................................................................. 13
9.3
Carregando estratégias ....................................................................................................... 17
9.4
Configurando os robôs ........................................................................................................ 18
9.5
Configurando o rádio base .................................................................................................. 21
9.6
Configurando o vídeo .......................................................................................................... 23
10.
Jogando Futebol de robôs ....................................................................................................... 23
10.1
Iniciando .............................................................................................................................. 23
10.2
Pausando ............................................................................................................................. 25
10.3
Marcando placar ................................................................................................................. 25
11.
Precauções com as baterias .................................................................................................... 25
12.
Apêndice.................................................................................................................................. 28
12.1
Apêndice A: Bibliotecas de estratégia ................................................................................. 28
12.2
Apêndice B: Testando o hardware dos robôs com a Giga de Teste .................................... 34
2
1.Contrato de licença do uso do Sci-Soccer
Este instrumento constitui um contrato firmado entre o usuário do software do Sci-Soccer e
a XBot.
1. Concessão de licença: ao adquirir o Sci-Soccer, o usuário poderá utilizá-lo em mais de um
computador ao mesmo tempo, conforme sua necessidade.
2. Propriedade do Software: o software, contido no CD, é de propriedade da XBot. Quando
o usuário adquire o Sci-Soccer, está LICENCIADO a utilizar a cópia do software original.
3. Proteção do Software: o software adquirido não possui proteção contra várias
instalações, pode ser instalado livremente e faz parte do kit Sci-Soccer.
4. Restrições quanto à utilização do Software: o software do Sci-Soccer pode ser executado
em mais de um computador sem a necessidade de uma nova licença. O software pode ser
instalado, usado, modificado, melhorado ou adaptado conforme as necessidades do usuário.
5. Restrição de redistribuição do Software: o software não pode ser redistribuído, a
restrição inclui a sua versão original ou a versão 02 modificada pelo usuário, independente do
propósito.
6. Reprodução do CD do software: é vedada a reprodução do software do Sci-Soccer, em
qualquer circunstância e independente do propósito.
7. Reprodução da documentação: a documentação do software do Sci-Soccer é fornecida
em CD e não é permitida a sua reprodução total ou parcial. É vedada a utilização, para fins
comerciais, desta documentação, sem a prévia autorização por escrito da XBot.
8. Vigência do contrato: este contrato tem duração por tempo indeterminado, limitado
pelo total compromisso de suas cláusulas. O descumprimento de qualquer cláusula implica na
rescisão automática do mesmo.
9. Garantia: a XBot garante que o CD adquirido está livre de defeitos durante a vigência
deste contrato. Caso ocorra algum problema com o CD, a XBot substituirá mediante a devolução
dos originais defeituosos.
10. Atualização do produto: a XBot pode criar periodicamente versões aperfeiçoadas do
software do Sci-Soccer. Nestas ocasiões, a XBot colocará a nova versão à disposição dos Usuários,
repassando-lhes os custos de atualização.
11. Responsabilidade: nem XBot, nem qualquer outra empresa ou pessoa que tenha
participado do processo de criação, produção, comercialização ou entrega do software do SciSoccer, será responsável por quaisquer danos diretos e indiretos, lucros cessantes, interrupção de
negócios, perda de informações, decorrentes do uso ou da impossibilidade de uso do software do
Sci-Soccer, ainda que a XBot tenha sido alertada.
12. Foro do contrato: fica eleito, para esclarecer e dirimir quaisquer dúvidas a respeito
deste contrato, o foro da cidade de São Carlos, São Paulo, com renúncia, pelos contratantes de
qualquer outro, por mais privilegiado que seja.
3
2.Introdução ao Sci-Soccer
O Sci-Soccer é um sistema desenvolvido pela Cientistas Associados Desenvolvimento
Tecnológico Ltda., fabricado e comercializado pela empresa XBot. Este sistema foi projetado para
realizar partidas de futebol de robôs autônomos, da categoria Small Size (conhecida também como
F180) da Robocup (Robot World Cup).
A Robocup é uma competição que se iniciou em 1997, com o objetivo de desenvolver a
Inteligência Artificial (IA), a robótica e campos relacionados. Aos poucos, a Robocup foi adquirindo
prestígio e transformando o futebol de robôs em uma tradição com reconhecimento internacional.
As competições de futebol de robôs são uma tentativa de promover o desenvolvimento científico e
tecnológico nas áreas de Robôs Autônomos e Mecatrônica. Estas competições possuem grande
parte dos desafios encontrados pela robótica móvel do mundo real, tais como, navegação em
ambientes dinâmicos, exploração de ambiente, realização de procedimentos de contingência em
ambientes perigosos ou insalubres e monitoramento ambiental.
Durante uma partida de futebol de robôs existe um sistema de visão computacional global,
situado sobre o campo, responsável por rastrear todos os jogadores e a bola, fornecendo para o
sistema de estratégia as suas respectivas posições. Com a informação da posição dos jogadores e
da bola, o sistema de estratégia vai determinar uma nova ação que será executada pelo robô. Para
que a informação chegue ao robô jogador, há um protocolo de comunicação responsável por
transmitir uma mensagem do computador para o robô. Os motores, as rodas e os dispositivos
mecânicos e eletrônicos presentes no robô são responsáveis por executar a ação recebida.
O sistema de futebol de robôs desenvolvido, denominado Sci-Soccer, inclui os robôs (de um
a cinco por time), o rádio base e o software, com bibliotecas para desenvolvimento e interface do
jogo. O hardware dos robôs foi desenvolvido considerando as normas da Robocup, categoria Small
Size, e utilizando comunicação wireless (rádio base). O software do Sci-Soccer é uma interface
gráfica que envolve quatro módulos:
(i)
Módulo de captura de imagens;
(ii)
Módulo de rastreamento;
(iii)
Módulo de comunicação;
(iv)
Módulo de estratégia de jogo.
As características principais do software do Sci-Soccer são:
(i)
Captura das imagens da câmera para realizar o rastreamento dos robôs e da bola;
(ii)
Processamento das imagens recebidas para determinar a posição dos mesmos;
(iii)
Carregamento da estratégia de jogo;
(iv)
Comunicação entre o robô e o computador.
O software é livre de maneira que possa ser adequado às necessidades do usuário e
também possibilita a criação e execução de novas estratégias de jogo. O software Sci-Soccer foi
desenvolvido para ser utilizado nos sistemas operacionais Debian 6 ou Ubuntu 10.10. Este manual
tem o objetivo de auxiliar na instalação e configuração do software e apresentar os conceitos do
sistema Sci-Soccer, estimulando o desenvolvimento de novas estratégias de jogo.
4
3.Requisitos Recomendados de Hardware
O software Sci-Soccer foi instalado e testado em dois computadores com configurações
distintas: o primeiro computador com processador AMD Athlon 64, dois clocks de 2.5 GHz e 2 GB
de memória RAM utilizando o Sistema Operacional Debian 6 com kernel 3.2 e GNOME 3; o segundo
computador com processador Intel Pentium Dual Core 3.2 GHz e 1 GB de memória RAM utilizando
o Sistema Operacional Ubuntu 10.10 com kernel 2.6 e GNOME 2. Os testes realizados mostraram
que estas configurações foram suficientes para a integração e funcionamento dos módulos de
captura, rastreamento, estratégia e comunicação. Além das configurações citadas acima, é
necessário que o computador tenha uma porta USB 1.1 ou superior e uma placa de captura (ou
aquisição) de vídeo. Mais detalhes na seção seguinte, referente ao sistema de aquisição de
imagens.
4.Requisitos Recomendados do Hardware do
Sistema de Aquisição de Imagens
O software Sci-Soccer utiliza técnicas de processamento de imagens para determinar as
posições dos robôs e da bola. Para realizar a aquisição de imagens, o sistema necessita de um
hardware específico, que inclui uma câmera de aquisição, uma lente varifocal (com autoíris) e uma
placa de captura de vídeo.
4.1 Câmera
As imagens são obtidas a partir de uma câmera posicionada sobre o campo,
aproximadamente a quatro metros de altura. A câmera deve ter as seguintes especificações:
(i)
(ii)
(iii)
(iv)
(v)
(vi)
Câmera de vídeo colorida;
Sensor CCD;
Obturador eletrônico com modos de ajustes manuais (1/60, ..., 1/100.000);
Formato de vídeo NTSC (525 linhas);
Conector de saída BNC;
Compatível com lentes DC (DC Íris), com controle automático de ganho (AGC).
A câmera é conectada à placa de captura de vídeo por meio de um cabo blindado (por
exemplo, cabo coaxial), como mostrado na Figura 4.1.1, com comprimento suficiente que permita a
conexão, tendo até 20 metros.
Figura 4.1.1. Ilustração do sistema adotado no futebol de robôs
5
Para os testes realizados com o software, foi utilizada uma câmera de aquisição marca Kodo
Color Cam KC512NTX (veja Figura 4.1.2); a velocidade do obturador da câmera foi de 1/250, com o
controle automático de ganho ligado.
Figura 4.1.2. Foto da câmera presa sobre campo
Para uma boa captura das imagens é recomendado que a iluminação do campo estivesse
dentro de uma faixa de 500 lux.
4.2 Lente Varifocal Auto ÍrisDC
Lente varifocal permite a regulagem da abertura da lente. Possui íris automática, também
chamada de autoíris, tipo DC a própria câmera comanda a abertura ou fechamento da íris,
compensando as variações de luminosidade rapidamente. Nos testes realizados, foi utilizada uma
lente varifocal, modelo Tamron VariFocal 1/3'' 2.812 mm F/1.4 com autoíris DC (veja Figura 4.2.1).
Figura 4.2.1. Lente Varifocal Tamron VariFocal 1/3'' 2.812
4.3 Placa de captura
O software Sci-Soccer é executado no sistema operacional Linux. As placas de captura,
melhor suportadas por este sistema operacional, são as que possuem driver bttv, pois incluem a
maior parte das placas PCI de baixo custo, como as PixelView PlayTV, PixelView PlayTV Pro e
Pinnacle PCTV Studio/Rave e vários outros modelos. Nos experimentos realizados, foi utilizada a
placa de captura PixelView PlayTV MPEG2 PVM4900 (Figura 4.3.1).
6
Figura 4.3.1. Exemplo de Placa de captura PlayTV MPEG2.
5.Manutenção do Robô Sci-Soccer
Quando o robô não funciona corretamente, deve-se verificar inicialmente se ocorreu algum
dos possíveis problemas com soluções simples:
(i) Rádio base desconectado ou não instalado: se o rádio base não apresentar o indicativo de
envio de dados para o robô (Figura 5.1-a), pode ser que seu cabo USB não esteja bem
conectado no próprio rádio base (Figura 5.1-b) ou no computador (Figura 5.1-c). Para
verificar se o computador foi capaz de detectar corretamente o rádio base, proceda com as
seguintes etapas:
1. Conecte o cabo USB do rádio base a uma porta disponível do computador (Figura 5.1c);
2. Aguarde por, aproximadamente, 10 segundos e execute, em um terminal, o seguinte
comando:
$ ls /dev/ttyUSB*
Se o rádio base estiver conectado corretamente, o dispositivo /dev/ttyUSB0 será listado
pelo comando acima, onde 0 indica o primeiro rádio base detectado. Os próximos rádios
bases instalados e detectados pelo sistema receberão uma numeração sequencial no
diretório /dev. No entanto, é necessário apenas um rádio base ser reconhecido pelo
sistema;
3. Caso não seja detectado o rádio base, é necessário verificar se o driver ftdi_sio é
carregado pelo sistema. Para isto, execute o comando:
$ lsmod
Se o driver ftdi_sio não aparecer listado, é preciso instalá-lo.
(ii) O Robô não realiza as ações solicitadas: se o rádio base estiver acendendo o indicativo de
envio de dados (luz verde) para o robô, mas não acender o indicativo de confirmação de
recebimento de dados (luz vermelha), como mostrado na Figura 5.2, o robô pode estar
desligado. Neste caso, verifique, no robô, se há uma luz verde acesa, indicando que o robô
está ligado; se não estiver, ligue o robô. A Figura 5.3 apresenta a parte traseira do robô com
três indicadores: indicador de problema de hardware, indicador de robô ligado e indicador
de recepção de dados. Depois de ligar o robô, se o indicador de robô ligado não ficar verde,
significa que a bateria está fraca ou mal colocada. Também pode ocorrer do robô não
responder, mesmo estando ligado. Isso ocorre quando a distância do rádio base para o
robô for muito grande, dificultando a comunicação.
(iii) Bateria fraca: se o robô estiver com movimentos muitos lentos, sua bateria deve estar
7
fraca. Verifique se o indicador de robô ligado (Figura 5.3) está vermelho. Se estiver, é
necessário recarregar (ou trocar) as baterias.
(iv) Configurações incorretas no software: depois de verificados e corrigidos os casos (i), (ii) e
(iii) e o robô ainda não estiver respondendo corretamente, verifique se os robôs foram
cadastrados corretamente no software. É necessário informar os endereços do rádio base e
do robô (Figura 5.4-a) e as cores de identificação de cada robô (Figura 5.4-b). Mais detalhes
podem ser encontrados no Capítulo 3.
a) Luz verde no rádio base indicando o
envio de dados para o robô
b) Ligação do cabo USB ao rádio base
c) Ligação do cabo USB ao computador
Figura 5.1. Rádio Base
Figura 5.2. Luz vermelha no rádio base indicando confirmação de recebimento de dados pelo robô.
Embaixo do rádio base há informações para comunicação, como endereço e canal.
Figura 5.3. Indicadores de energia do robô. O indicador do meio fica verde quando o robô está
ligado. Caso o indicador fique vermelho, significa que as baterias estão fracas.
8
a) Etiqueta exemplo com o endereço de identificação do
robô. E.I: Endereço do robô; R.A: Endereço do rádio que
esse robô “escuta”.
b) Exemplo de cores de identificação do robô Sci-Soccer
Figura 5.4. Informações do robô necessárias para comunicação com o software.
6. Cuidados ao manusear o robô
1. Não deixar cair;
2. Não utilizá-lo em ambiente úmido;
3. Utilizá-lo apenas em ambiente planos. Recomendamos o uso de forração;
4. Não colocar a bateria quente no robô. Após carregar as baterias, espere a bateria esfriar
para colocar no robô;
5. Não pressionar o robô contra o chão;
6. Não prender as rodas enquanto o robô está em movimento;
7. Utilizar o robô em ambiente limpo, sem pequenos obstáculos, pois pode dificultar a sua
locomoção;
8. Não colidir em superfícies duras;
9. Não molhar o robô com qualquer tipo de líquido, principalmente solventes, pois pode
danificar a pintura do robô;
10. Limpá-lo utilizando apenas um pano seco;
11. Não guardar o robô em baixas ou altas temperaturas;
12. Certificar que o robô tem espaço suficiente para movimentar-se;
13. Não mover o robô a força;
14. Ler, cuidadosamente, este manual para ter o uso adequado do robô.
9
7.Instalação do software
7.1 Baixando o software
O software pode ser baixado no site da XBot pelo link: www.xbot.com.br/externo
Entre no endereço e digite:
login: xbot
senha: 1234xbot
Entrar no link SciSoccer e baixar os arquivos.
7.2 Instalando o Sci-Soccer
Passo 1: Baixe o arquivo sciSoccer-1.1.tgz do site www.xbot.com.br/externo, conforme as
instruções anteriores.
Passo 2: Copie e cole os arquivos no diretório de instalação de sua preferência. Sugerimos criar um
diretório de instalação dentro da pasta pessoal, da seguinte maneira, via terminal:
$ mkdir SciSoccer
Passo 3: descompacte o arquivo sciSoccer-1.1.tgz no diretório criado com o comando:
$ tar xvzf sciSoccer-1.1.tgz
Passo 4: Depois de descompactado, você terá 5 arquivos, onde X.Y.Z indicam a versão atual do
software.
1. librobot-X.Y.Z.tar.gz (libRobot) - Contém a biblioteca librobot para comunicação básica
com os robôs e rotinas para o processamento de imagens dos robôs.
2. scisoccer-X.Y.Z.tar.gz (sciSoccer) - Contém o aplicativo Sci-Soccer para jogar futebol de
robôs.
3. mesmu-soccer-X.Y.X.tar.gz (Mesmu2P) - Exemplo de estratégia para utilização pelo
Sci-Soccer.
4. template-soccer-X.Y.X.tar.gz (StrategyTemplate) - Template para estratégias a serem
utilizadas pelo Sci-Soccer.
5. README-sciSoccer – Arquivo de ajuda
Passo 5: Descompacte os arquivos no diretório de instalação. Para isso, digite no terminal:
$ tar xvzf librobot-X.Y.Z.tar.gz
$ tar xvzf scisoccer- X.Y.Z.tar.gz
$ tar xvzf mesmu-soccer- X.Y.Z.tar.gz
$ tar xvzf template-soccer- X.Y.Z.tar.gz
Passo 6: Instalando os pacotes. Digite os seguintes comandos no terminal:
Entrando na pasta librobot-X.Y.Z / e instalando uma biblioteca para comunicação básica com os
robôs e rotinas para o processamento de imagens dos robôs:
$ cd librobot-X.Y.Z /
$ sudo apt-get install g++ make libxml++2.6-dev
10
$
$
$
$
./configure
make
su -c ‘make install’ (necessária senha de root)
su -c ‘ldconfig’ (necessária senha de root)
Saindo da pasta anterior:
$ cd ..
Entrando na pasta scisoccer- X.Y.Z e instalando o aplicativo Sci-Soccer para jogar futebol de robôs:
$ cd scisoccer-X.Y.Z
$ sudo apt-get install libgtkmm-2.4-dev libglademm-2.4-dev
libxml++2.6-dev (Pressione 's')
$ ./configure
$ make
$ su -c ‘make install’ (necessária senha de root)
$ su -c ‘ldconfig’ (necessária senha de root)
Saindo da pasta anterior:
$ cd ..
Entrando na pasta mesmu-soccer-X.Y.Z e instalando exemplo de estratégia:
$ cd mesmu-soccer-X.Y.Z
$ ./configure
$ make install
Saindo da pasta anterior:
S cd ..
Passo opcional para instalar o template de estratégia. Não é necessário instalar o template para
poder utilizar o Sci-Soccer.
Entrando na pasta template-soccer-X.Y.Z e instalando template para estratégias:
$ cd template-soccer-X.Y.Z
$ ./configure
$ make install
Passo 7: Para executar o programa, digite:
$ sciSoccer
7.3 Desinstalando o Sci-Soccer
No terminal, realize o procedimento abaixo para os diretórios librobot-X.Y.Z, scisoccer-X.Y.Z
e mesmu-soccer-X.Y.Z:
$ make uninstall
$ make clean
8.Execução do Programa
Para executar o programa, vá ao terminal e digite sciSoccer e pressione Enter.
11
9.Utilização do Software
9.1 Calibrando o Campo
Passo 1: Ative o checkbox Campo.
Passo 2: Vá em Calibrações > Campo.
Passo 3: Posicione a câmera no meio do campo e mexa nos valores até que a demarcação na tela se
alinhe com o campo. Em seguida clique em Feito.
12
9.2 Calibrando os Robôs para identificação
Passo 1: Ative o checkbox Robôs e Bola
Passo 2: Vá em Calibrações > Identificações
Passo 3: Ative o checkbox Amostragem e coloque Raio = 1, Quadros = 2 e Substituir.
Passo 4: Ative o checkbox Amostrar no time a ser identificado.
13
Passo 5: Clique no círculo do meio que está em cima do robô do time. Este círculo identifica a cor
do time.
Passo 6: Confirme se há um círculo identificando apenas os robôs do mesmo time. Caso a
identificação não esteja muito boa, ou seja, quando está pegando outros objetos e partes do
campo, repita o passo 5.
Passo 7: Faça os passos 4 a 6 com os dois times.
Passo 8: Clique em Amostrar no campo Bola para poder identificar a bola.
14
Passo 9: Clique na bola até que ela seja identificada com um quadrado vermelho no jogo sem
problemas.
Passo 10: Ative o checkbox Amostrar no campo Laterais.
Passo 11: Selecione Adicionar.
15
Passo 12: Clique nas laterais dos robôs para o software identificar a frente de cada um.
Passo 13: Para visualizar se os robôs e a bola estão sendo identificados corretamente, basta clicar
em Exibir regra e ver se o software está identificando apenas o que você está pedindo.
Passo 14: Se estiver tudo correto, clique em Feito.
16
9.3 Carregando estratégias
Para poder carregar a(s) estratégia(s), é necessário instalá-la(s) antes para poder gerar o arquivo
com extensão so. Siga os passos que foram feitos na sessão 7.2, para instalar a(s) estratégia(s).
Passo 1: Vá em Configurações > Estratégias.
Passo 2: Ative o checkbox do time a ser usado.
Passo 3: Clique na pasta para carregar a estratégia do time.
Passo 4: Procure a estratégia no computador e clique em Abrir.
17
Passo 5: Depois de carregado a(s) estratégia(s) clique em Feito.
9.4 Configurando os robôs
Passo 1: Vá em Configurações > Robôs.
Passo 2: Coloque o endereço do Robô, que se encontra abaixo dele.
18
Passo 3: Selecione o time.
Passo 4: Selecione o número do robô.
Passo 5: Coloque as cores que identificam o robô no campo.
19
Passo 6: Clique em Inserir
Para atualizar os dados de algum robô, clique nos dados do robô que deseja alterar, mude os dados
que deseja e clique em Atualizar.
Para remover um robô, clique nos dados do robô e em seguida em Remover.
20
9.5 Configurando o rádio base
Passo 1: Vá em Configurações > Rádio.
Passo 2: Selecione o rádio a ser usado para controlar os robôs.
Passo 3: Selecione o canal do rádio.
Passo 4: Selecione a velocidade de 115200.
21
Passo 5: Coloque um valor para timeout (padrão de 60 ms).
Passo 6: Coloque a identificação do rádio base a ser usado, no qual se encontra abaixo do rádio
base.
Passo 7: Clique em Feito.
22
9.6 Configurando o vídeo
Passo 1: Vá em Configurações > Vídeo
Passo 2: Selecione a entrada que está ligado a câmera a ser usada no jogo e clique em Feito.
10. Jogando Futebol de robôs
10.1
Iniciando
Passo 1: Configure o vídeo.
Passo 2: Configure o campo.
Passo 3: Configure os robôs.
Passo 4: Configure o rádio base.
Passo 5: Calibre a identificação dos robôs .
Passo 6: Carregue as estratégias.
Passo 7: Clique em Jogar.
Obs: Os robôs devem estar ligados.
Passo 8: Clique em Novo.
23
Passo 9: Clique na equipe que irá iniciar a partida, time amarelo ou time azul.
Passo 10: Clique em Jogar.
Passo 11: Clique em Feito.
24
10.2
Pausando
Passo 1: Inicie a partida.
Passo 2: Clique em Parar para pausar.
10.3
Marcando placar
Passo 1: Inicie a partida.
Passo 2: Quando uma das equipes marcar um gol clique em Gol dos Amarelos ou Gol dos Azuis.
11. Precauções com as baterias
•
Informações importantes:
As baterias tem uma vida útil de 500 ciclos, se forem bem utilizadas;
As baterias têm auto-descarga, ou seja, se deixadas sozinhas descarregam
naturalmente;
As baterias já vão devidamente formatadas, ou seja, já está com potencial
completo;
25
A partir do momento que a bateria vai descarregando, o desempenho do robô vai
caindo também. Caso o robô diminua consideravelmente o seu desempenho,
significa dizer que as baterias estão fracas e que é necessário carregá-las.
•
Cuidados que se deve ter:
Recomenda-se carregar e descarregar periodicamente se elas forem ficar muito
tempo paradas, devido a auto-descarga;
Devido a auto-descarga, recomenda-se que as baterias sejam guardadas
carregadas;
Após carregar as baterias elas estarão um pouco quentes. Esperar um pouco elas
esfriarem para colocar no robô;
Não esquecer as baterias dentro do robô, pois pode estragar a bateria e todos os
fios no caminho dela até o interruptor do robô, podendo causar problemas ainda
piores se ela vazar dentro do robô;
Evite temperaturas muito altas ou muito baixas, assim como deixá-las onde possam
ter os contatos colocados em curto;
Mantenha as baterias em um local fresco e em uma área de armazenamento seca;
Sempre utilizar o carregador que acompanha no kit;
Não inverter a polaridade da bateria quando colocá-las em carga;
Não exponha as baterias ao fogo;
Não sobrecarregue as baterias ou descarregue-as completamente;
Não exponha as baterias à radioatividade;
26
Ao manusear as baterias, procure manter as temperaturas abaixo:
o Temperatura de carga: 0 a 45ºC;
o Temperatura de descarga: -20 a 50ºC;
o Temperatura de armazenamento: -20 a 35ºC.
•
Recomendações:
Caso as baterias não estejam mais aceitando carga, é necessário dar uma carga
alta corrente de uns 2C (a corrente máxima que a bateria pode fornecer é de
2.000mA) por menos de 1 segundo. Isso ajuda a dissolver os cristais formados
no eletrólito, diminuindo a resistência interna e fazendo-a aceitar carga
novamente. Este procedimento deve ser feito com muito cuidado, pois pode
causar facilmente superaquecimento da bateria ou do fio, portanto não faça se
não tiver experiência com eletricidade e use equipamento de proteção;
Em caso de explosões ou vazamento dos elementos químicos (principalmente
eletrólito), jogue água, imediatamente, na bateria. Evite o contato dos elementos
químicos nos olhos ou a ingestão dos mesmos. Em caso de contato nos olhos,
lave-os por 15 minutos e consulte um médico.
27
12. Apêndice
12.1
Apêndice A: Bibliotecas de estratégia
Um dos objetivos do software Sci-Soccer é estimular a criatividade do usuário para que
desenvolva novas estratégias de jogo. Estas estratégias devem seguir as regras definidas pela
Robocup e oferecem desafios que contribuem com o aprendizado de novos desenvolvedores.
O software traz o exemplo de uma estratégia simples, onde os robôs de cada time se
posicionam para iniciar uma partida de futebol. Em seguida, iniciam a perseguição da bola. Este
exemplo demonstra como acessar as informações de posições dos robôs e da bola e a utilizar as
funções de comunicação com os robôs.
A classe que implementa o exemplo de estratégia é chamada de “StrategyExample”. Esta
classe herda a classe “Strategy” e implementa suas funções virtuais de acordo com o objetivo
definido. A Figura 10.1 apresenta o código da definição da classe “StrategyExample”.
#ifndef _StrategyExample_
#define _StrategyExample_
#include <math.h>
/* inclui arquivos necessários
estratégia */
#include <scis/scisStrategy.hh>
de
libStrategy
para
implementar
a
/***********************************************************************/
/*************************** StrategyExample ****************************/
/* Classe que implementa o exemplo de estratégia simples, onde os robôs de
cada time são posicionados no campo para iniciar uma partida de futebol e
em seguida perseguem a bola. */
class StrategyExample : public scis::Strategy
{
public:
/* construtor da classe, recebendo como parâmetro o objeto que realiza a
comunicação com os robôs e o identificador do time escolhido para jogar.*/
StrategyExample( scis::TeamCommunicator *comm, int teamId );
// destructor vazio
~StrategyExample();
// método responsável pela execução da estratégia criada
void run();
private:
// método responsável pelo posicionamento dos robôs do time escolhido para
jogar.
void initialKick();
28
// método responsável pelo posicionamento dos robôs do time adversário.
void initialKickOther();
/* função responsável pelo envio de comandos de andar e girar aos robôs do
time. Retorna True se (dstX, dstY) foi alcançado. */
bool oneStepTo( scis::TeamInfo &team, int robotId,
int dstX, int dstY );
// função responsável pelo envio de comandos de andar e girar a um robô.
bool oneStepTo( scis::RobotInfo &robot, int dstX, int dstY );
// função responsável pelo cálculo da distância entre o robô e um ponto
escolhido.
int findDistance( scis::RobotInfo &robot, int dstX, int dstY );
// função responsável pelo cálculo do ângulo que o robô deve girar. O
ângulo calculado está no intervalo [-180, +180], em graus.
int findAngle( scis::RobotInfo &robot, int dstX, int dstY );
};
#endif
Figura 10.1 Código da definição da classe “StrategyExample”.
No construtor da classe, são passados o ponteiro “comm” e o identificador do time
escolhido para jogar. O ponteiro “comm” possibilita o acesso às funções de comandos dos robôs,
presentes na biblioteca de comunicação. A implementação das funções da classe
“StrategyExample” é apresentada na Figura 10.2.
#include "StrategyExample.hh"
#include <iostream>
using namespace scis;
using namespace std;
/**********************************************************************/
/******* Funções necessárias para criar a biblioteca dinâmica ********/
/* Note que estas funções não são definidas com a assinatura da estratégia
a ser carregada. */
/*** strategy Factory ***/
extern "C"
scis::Strategy * strategyFactory(scis::TeamCommunicator *comm, int
teamId)
{
return new StrategyExample(comm, teamId);
}
/*** strategy Destroyer ***/
extern "C"
29
void strategyDestroyer(Strategy *strategy)
{
delete strategy;
}
/*** StrategyExample ***/
/*** Construtor ***/
/* os parâmetros 'comm' e 'teamId' são passados diretamente para a classe
Strategy e são usados para a comunicação com os robôs e a identificação do
time escolhido para jogar, respectivamente. */
StrategyExample::StrategyExample(TeamCommunicator
Strategy( comm, teamId )
{
}
*comm,
int
teamId)
:
/*** destructor vazio ***/
StrategyExample::~StrategyExample()
{
}
/*** run ***/
/* Esta função executa a estratégia até que o usuário a interrompa através
do botão 'Parar' na janela de eventos. */
void
StrategyExample::run()
{
TeamInfo team;
TeamInfo opponent;
BallInfo ball;
while (!haveToFinish())
{
// acessa as posições dos robôs e da bola.
getGame(&team, &opponent, &ball);
int robotId = 1;
RobotInfo robot;
// manda um robô ir atrás da bola
if (ball.found && team.getRobot(&robot, robotId))
{
oneStepTo(robot, ball.posX, ball.posY);
int dist;
dist = findDistance(robot, ball.posX, ball.posY);
/* de acordo com a distancia do robô em relação a bola, é enviado um
comando de chute. */
if (dist < 165)
kick(robotId);
}
}
}
30
/*** initial Kick ***/
/* Este método posiciona os robôs do time escolhido para jogar na sua
metade do campo, preparando-os para o início da partida. */
void StrategyExample::initialKick()
{
TeamInfo team;
TeamInfo opponent;
BallInfo ball;
// inicializa uma variável com o número de robôs que há no time.
int numRobots = (getTeamId() == 0 ? 3 : 4);
// inicializa as posições as quais os robôs devem estar para iniciar a
partida.
int pntX[] = {500, 250, 2000, 250};
int pntY[] = {0, 500, 0, -500};
bool reached;
// manda os robôs andarem até as posições iniciais definidas por 'pntX' e
'pntY'
do
{
getGame(&team, &opponent, &ball);
reached = true;
for (int i = 0; i < numRobots; i++)
reached &= oneStepTo(team, i, pntX[i], pntY[i]);
if (haveToFinish())
return;
} while (!reached);
}
/*** initial Kick Other ***/
// Este método posiciona os robôs do time adversário na sua metade do
campo, preparando-os para o inicio da partida.
void StrategyExample::initialKickOther()
{
TeamInfo team;
TeamInfo opponent;
BallInfo ball;
int numRobots = (getTeamId() == 0 ? 3 : 4);
int pntX[] = {-1000, -2000, -200, -200};
int pntY[] = {0, 0, 1500, -1500};
bool reached;
do
{
getGame(&team, &opponent, &ball);
reached = true;
for (int i = 0; i < numRobots; i++)
reached &= oneStepTo(team, i, pntX[i], pntY[i]);
if (haveToFinish())
31
return;
} while (!reached);
}
/*** one Step To ***/
// Esta função encontra um robô no time e invoca a função responsável pelo
envio de comandos de movimentação.
bool StrategyExample::oneStepTo(TeamInfo &team, int robotId, int
dstX, int dstY)
{
RobotInfo robot;
if (team.getRobot(&robot, robotId))
{
if (findDistance(robot, dstX, dstY) < 200)
return true;
oneStepTo( robot, dstX, dstY );
}
return false;
}
/*** one Step To ***/
// Esta função envia comandos de movimentação para um robô escolhido,
fazendo com que ele ande e gire, conforme necessário.
bool StrategyExample::oneStepTo(RobotInfo &robot, int dstX, int
dstY)
{
int angle = findAngle(robot, dstX, dstY);
if (angle < -90)
angle = -90;
if (angle > 90)
angle = 90;
// Distância até a posição definida.
int dist = findDistance(robot, dstX, dstY);
// Correct direction.
if (angle < -10 || angle > 10)
{
float finalAngle = float(angle)/90.0;
turn(robot.id, finalAngle, 0.2);
}
else if (dist > 200)
{
int step = (int)(0.2 * dist);
move(robot.id, step, 0, 0.4);
}
return true;
}
/*** find Distance ***/
// Esta função calcula a distância do robô até o ponto determinado.
32
int StrategyExample::findDistance(scis::RobotInfo &robot, int dstX,
int dstY)
{
int dx = robot.posX - dstX;
int dy = robot.posY - dstY;
return (int) sqrt((dx*dx) + (dy*dy));
}
/*** find Angle ***/
// Esta função calcula o ângulo que o robô deve girar. O ângulo retornado
é dado em graus.
int StrategyExample::findAngle(RobotInfo &robot, int dstX, int dstY)
{
float dirAng = atan2(robot.dirY, robot.dirX);
float posX = dstX - robot.posX;
float posY = dstY - robot.posY;
float posAng = atan2(posY , posX);
int angle = (int)((posAng - dirAng) * (180 / M_PI));
if (angle > 180)
angle -= 360;
if (angle < -180)
angle += 360;
return angle;
}
Figura 10.2. Código da definição da classe “StrategyExample”.
As funções da “StrategyExample” são executadas pela janela de eventos (Seção 8.3). As
funções “initialKick” e “ initialKickOther” implementam as ações dos botões “Chute Inicial” dos dois
times. Estas funções definem a posição inicial de cada robô dos times. Para isto, utilizam a função
“getGame”, implementada na classe “Strategy”, para acessar as posições dos robôs e “oneStepTo”,
que envia comandos de movimentação, através da função “move”, para separar os robôs do time
escolhido dos robôs do time adversário, nas suas respectivas metades do campo (a função “move”
é implementada na classe 'Strategy”). Ao terminar a execução, os robôs ficam aguardando um
evento do usuário para iniciar o jogo.
A função “run” é a responsável pela execução da estratégia criada. Quando o usuário clica
no botão “Jogar”, da janela de eventos (Seção 9.1, passo 7), a função “run” é inicializada e os robôs
partem em busca da bola. Ela utiliza a função “oneStepTo” para enviar comandos de andar aos
robôs e a função “findAngle” para fazê-los girar. Ela é executada até que o usuário clique no botão
“Parar”, da janela de eventos.
Há ainda as funções “strategyFactory” e “strategyDestroyer” que não foram definidas pela
classe StrategyExample, mas são necessárias para permitir que a estratégia possa ser carregada
dinamicamente pelo software.
33
12.2
Apêndice B: Testando o hardware dos
robôs com a Giga de Teste
A Giga de teste funciona apenas em sistema operacional Windows XP - 32 bits.
Preferencialmente XP Professional versão 2002 com Service Pack 3. O software pode ser baixado no
site da XBot pelo link: www.xbot.com.br/externo
Entre no endereço e digite:
login: XBot
senha: 1234XBot
Entre em SciSoccer e baixe o arquivo Software Giga_de_teste.
Passo 1: Plugue o rádio.
Passo 2: Instale o driver do rádio base. Para instalar o rádio base plugue-o no computador e quando
o Windows perguntar se deseja baixar o drive da internet, clique em não e que deseja indicar uma
pasta. Feito isso, indique a pasta do drive para Windows onde foi descompactado o arquivo do
rádio base e clique em OK.
Passo 3: Abra a Giga de Teste e olhará a tela abaixo.
Passo 4: Inicialize a comunicação com a porta COM que está o rádio base.
34
Passo 5: Coloque os valores da identificação do rádio (R.A) e do robô (E.I) que será testado. Essas
informações se encontram na parte de baixo do robô e do rádio.
Passo 6: Coloque o valor 300 em X, 300 em Y e 300 em vel. Isso fará o robô andar 30 cm com uma
velocidade de 300 rpm.
35
Passo 7: Clique em Envia comando_mov_now.
Passo 8: Para testar o chute clique em Envia comando_kick.
Obs: Apenas alguns robôs apresentam chute.
36
Passo 9: Para testar o drible clique em Envia comando_set_drible.
Obs: Apenas alguns robôs apresentam drible.
Passo 10: Se todas as rodas se moveram, o robô chutar e acionar o drible, então o hardware e a
comunicação estão corretas.
Passo 11: Faça os passos 5 a 9 com todos os robôs.
37