tutorial da plataforma robocode

Propaganda
Congresso de Inovação, Ciência e Tecnologia do IFSP - 2016
TUTORIAL DA PLATAFORMA ROBOCODE
NATHÁLIA GRANZOTTI ANDREOTTI1 , TIAGO SOARES VITOR²
1Graduando
em Engenharia de Controle e Automação, Bolsista PIBIFSP, IFSP, Câmpus São João da Boa Vista,
[email protected]
2Professor de Engenharia de Controle e Automação, Orientador, IFSP, Câmpus São João da Boa Vista,
[email protected]
Área de conhecimento (Tabela CNPq): Engenharia Mecatrônica – 9.16.00.00-6
Apresentado no
7° Congresso de Iniciação Científica e Tecnológica do IFSP
29 de novembro a 02 de dezembro de 2016 - Matão-SP, Brasil
RESUMO: Este projeto consiste na elaboração de um tutorial para desenvolvimento de robôs na
plataforma Robocode visando implementação de técnicas inteligentes. A característica da plataforma
em promover auxílio à estudantes de programação computacional é explorada a fim de integrar as
áreas de robótica e sistemas inteligentes. O propósito do easy-to-use elaborado abrange a descrição
dos recursos de simulação e instrução para implementação de maneira simples e didática. A partir da
revisão bibliográfica, um procedimento passo a passo é proposto e ao final deste, o usuário será capaz
de desenvolver seu primeiro robô com potencialidade para se locomover e interagir com o ambiente de
forma inteligente. Para validação do procedimento, a programação de um robô é feita de forma
detalhada, sendo este submetido à simulação.
PALAVRAS-CHAVE: robótica; simulação de robôs; linguagens de programação.
TUTORIAL PLATAFORM ROBOCODE
ABSTRACT: This project consists in a tutorial's build for the robots development in the Robocode
platform, seeking implementation of intelligent techniques. The platform's characteristics promotes aid
to computer programming students in order to integrate the areas of robotics and intelligent systems.
The purpose of the easy-to-use prepared covers the description of simulation resources and education
to implement in a simple and didactic way. From the literature review, a step by step procedure is
proposed at the end of this one, the user will be able to develop its first robot with potential to move
around and interact with the environment in a smart way. For method validation, programming a robot
is made in detail, which is submitted to the simulation.
KEYWORDS: robot; simulation Robocode; programming language.
INTRODUÇÃO
O aumento no desempenho de sistemas computacionais e tecnologias contribuíram para que os
robôs pudessem atuar em inúmeras áreas, porém ainda é um desafio atrair atenção de estudantes para
este campo de pesquisa. O software Robocode foi desenvolvido para suprir essa necessidade, sendo
atualmente uma importante ferramenta utilizada para o ensino básico de programação.
O Robocode, plataforma open-source criada pela IBM, administra combates de robôs em
formato de tanque de guerra num campo de batalha virtual. Cada robô é programado por usuários
implementando diferentes estratégias em linguagem Java recorrendo a métodos, atributos e eventos
pré-programados.
Este projeto visa elaborar um procedimento passo a passo instrutivo sobre o uso da plataforma
Robocode. Tal procedimento permite auxiliar o aprendizado em programação e capacitar o usuário na
construção de um robô de navegação inteligente no espaço virtual.
MATERIAL E MÉTODOS
Os recursos utilizados no desenvolvimento da pesquisa foram os softwares Robocode e Java
Virtual Machine (JVM), com o suporte de hardware para a execução dos softwares, ambos podem ser
obtidos pelo próprio site Robocode Team, mencionado nas referências.
O robô é dividido em três principais partes (Figura 1): corpo, radar e arma de fogo (canhão). O
corpo, onde estão localizados o radar e o canhão no topo, é responsável pela movimentação do robô
para frente/trás e direita/esquerda. O radar é usado para detectar os oponentes e pode rotacionar para
direita/esquerda. O canhão também pode rotacionar para direita/esquerda de forma independente.
FIGURA 1. Componentes do Robô tanque
A metodologia aplicada consiste no levantamento das informações da revisão bibliográfica
referentes a criação de robôs. Assim, tem-se o seguinte procedimento proposto (Figura 2):
Início
Conhecer: Regras, Métodos,
Eventos e Funções
Editar, gravar e
compilar robô
Iniciar
batalha
Fim
FIGURA 2. Diagrama de blocos ilustrando procedimento para criação do primeiro robô.
Com o objetivo de se criar as primeiras regras, restringiu-se às seguintes informações: o robô
pode se movimentar para frente/trás e realizar curvas; o canhão pode girar sentido horário/anti-horário
em 360 graus; os tiros podem ser de força > 0 ou <= 3 unidades. Os robôs começam com 100 unidades
de energia e a perdem quando atiram, levam tiros e sofrem colisões; quando o robô chega a energia
zero, explodirá. Vence aquele que perder menos energia até o final (ou que permanecer em batalha).
Os eventos são chamados quando ocorre algo específico ao longo da batalha. Destacam-se os
principais eventos para a construção do robô na Tabela 1.
TABELA 1. Eventos principais do Robocode.
Eventos
É executado quando:
Run
O round for iniciado
onScannedRobot O radar do robô detecta um adversário
onHitRobot
O robô colide com outro
onHitWall
O robô colide com a parede
onHitByBullet
O robô é atingido por uma bala
Dentro da janela de programação de cada evento, deve-se implementar métodos, que servem
para realizar a movimentação do robô ou para retornar um dado desejado. Os mais utilizados para
movimentação são apresentados na tabela 2.
Comando
ahead (double)
back (double)
turnRight/turnLeft
(double)
turnGunRight/
turnGunLeft (double)
TABELA 2. Métodos principais do Robocode.
Parâmetros
Descrição
A distância que o robô Movimenta para frente a distância dada pelo
deverá percorrer
parâmetro.
A distância que o robô Semelhante ao anterior, porém o robô se move
deverá percorrer
para trás.
O ângulo em graus que o
Gira o robô para direita ou esquerda,
robô deverá girar.
respectivamente.
O ângulo em graus que o
Gira o canhão para direita ou esquerda,
canhão deverá girar.
respectivamente.
As funções são procedimentos avançados que se podem acrescentar no código, exemplos são:
mira, tiro e até mesmo dancinhas.
Para criar o programa deve-se entrar em “Robot > Source Editor > File > New > Robot”, então
se escolhe o nome do robô e em seguida o nome do pacote que ele estará inserido. A base do programa
com os principais pacotes e eventos é construída pela própria plataforma, o usuário deve então realizar
as alterações que desejar. Ao final deve-se clicar “Compiler”, será feita a análise de erros; caso não
tenha erros, o robô estará apto a participar das batalhas.
RESULTADOS E DISCUSSÃO
Seguindo o procedimento é possível desenvolver um robô simples, sendo um ponto de partida
para que o usuário use criatividade e técnicas inteligentes. A Figura 3 apresenta o código de um
autômato desenvolvido após o a proposta do tutorial.
FIGURA 3. Programação de um robô simples.
A linha 1 descreve o pacote “Meus_Robos” que conterá os robôs criados. As linhas 2 e 3
importam as bibliotecas relacionadas aos métodos, eventos e a das cores, respectivamente, que são
utilizadas para os robôs.
Tem-se a classe pública “Meu_primeiro_robo” que herda a classe “robot” e implementa o
“public void run”, execução central do programa. Dentro dele se encontra o método para declarar
cores “setColors”. Neste exemplo temos as cores: vermelho, azul e verde para corpo, arma e radar do
robô, respectivamente, resultando na Figura 4.
FIGURA 4. Representação do robô com suas cores definidas.
Em seguida, o programa executa o laço de repetição “while (true)” onde se define as ações do
robô. No exemplo, o robô anda para frente 100 pixels e faz uma rotação do corpo em 90° graus, esses
movimentos se repetem 4 vezes; como resultado, o robô irá mover-se de forma quadricular e ao final
do movimento o canhão rotaciona em 360° graus. Na 21ª linha o evento “onScannedRobot”, ativado
quando o radar detecta o oponente, executa o tiro do canhão com intensidade 3. O evento
“onHitByBullet”, quando se é atingido por uma bala, faz com que robô gire 90° graus para esquerda e,
por fim, ande 80 pixels para trás. Na 28ª linha o evento “onHitRobot”, quando há um choque com o
oponente, define que o robô deve voltar 30 pixels da sua posição. O último evento “onHitWall”,
quando houver um choque com as paredes do campo de batalha, faz o robô voltar 100 pixels da
posição.
O robô apresentado foi compilado e colocado para simulação, demonstrando a viabilidade do
tutorial e o potencial que a plataforma Robocode apresenta para o ensino da linguagem Java e para
compreensão de robôs autônomos.
CONCLUSÕES
Conclui-se que o tutorial da plataforma Robocode é um recurso importante para auxiliar um
público alvo em fase de familiarização com o software, visto que o procedimento proposto capacita o
usuário a desenvolver um primeiro robô. Após esta etapa inicial, o usuário pode potencializar o
desenvolvimento de habilidades em programação e aplicação de técnicas inteligentes.
AGRADECIMENTOS
Ao PIBIFSP, por disponibilizar a bolsa referente à iniciação científica. E ao orientador Tiago
Soares Vitor pela paciência e completude em ensinar e auxiliar na confecção do trabalho proposto.
REFERÊNCIAS
ALAIBA, V.; ROTARU, A. Agent architecture for building Robocode players with SWIProlog. In.: International Multiconference on Computer Science and Information Technology
IMCSIT, 2008, Wisia. Proceedings... Wisia: IEEE, 2008. p. 3-7.
Aprendendo Java usando Robocode. Estudo com Robocode - ::.Prof. Newton – Java. Disponível
em: < https://sites.google.com/site/profnewtonjava/robocode>. Acesso em 02 de jun. 2016
Robocode Team. Robocode homepage. Disponível em: < http://robocode.sourceforge.net/>.
Acesso em 30 de maio 2016.
Robocode Team. RoboWiki site. Disponível em: < http://robowiki.net/>. Acesso em 30 de maio
2016
TUTORIAL Robocode. Estudo com Robocode - ::.Prof. Newton – Java. Disponível em: <
https://sites.google.com/site/profnewtonjava/robocode>. Acesso em 02 de jun. 2016
Download