You are here

Aula 1 - Introdução

Objetivos

O objetivo desta aula é oferecer aos alunos um primeiro contato com o ambiente de trabalho a ser utilizado no curso. Para tanto, as seguintes atividades devem ser realizadas:

  • Contato com o Web-site da disciplina
  • Download do Código do Ambiente Virtual que iremos utilizar em nossos trabalhos e sua compilação no Netbeans
  • Geração de um Controlador Manual para o Ambiente Virtual

Atividade 1: Contato com o Web-site da disciplina

Este curso está estruturado de tal forma que em cada aula, os alunos deverão desenvolver um conjunto de atividades, envolvendo o uso de programas computacionais. Utilizaremos principalmente as linguagens Java e C#, a partir da plataforma Linux disponível no laboratório. Todas as atividades estarão disponíveis neste Web-site, e ao final de cada sequência temática de aulas (indicadas na página com as aulas), cada aluno deverá elaborar um relatório, que sofrerá avaliação. Este relatório deverá ser gerado eletronicamente em formato PDF, e enviado por e-mail para o professor.

A partir da página principal, as atividades poderão ser obtidas a partir do link: Aulas do Curso, em Material de Apoio. Se você está lendo essa página, provavelmente já encontrou as atividades da primeira aula.

Atividade 2: Download e Compilação do Código do WorldServer3D

Neste curso, utilizaremos um ambiente virtual desenvolvido pelo grupo de pesquisa do Prof. Gudwin, o WorldServer3D (WS3D). Neste ambiente virtual, é possível criar um conjunto de criaturas virtuais, que são controladas por seus sensores e atuadores, gerenciados por meio de Sockets. Nesta atividade, faremos o download do código Java do WS3D, e faremos sua compilação e execução. Em seguida, geraremos um código executável, na forma de um arquivo JAR que poderá ser utilizado para executar o WS3D.

O download do código fonte do WS3D pode ser feito a partir da página do projeto no GitHub.

Para baixar o código do GitHub a partir diretamente do Netbeans, clique no menu:

Equipe -> Git -> Clonar

e preencha https://github.com/CST-Group/ws3d.git em "URL do Repositório". Preencha a "Pasta de Destino" com um diretório conveniente onde você pretende armazenar o código fonte. Não há necessidade de preencher nem Usuário nem Senha. Esses campos podem ficar vazios. O Netbeans deve baixar o código fonte e em seguida oferecer para abrir o projeto recém encontrado

Atividade 3: Geração de um Controlador Manual para o Ambiente Virtual

Para finalizar as atividades desta aula, desenvolveremos um template de um sistema de controle de uma criatura virtual, para gerar um controlador manual que possa operar uma criatura no WS3D, e da mesma maneira geraremos uma Aplicação Java com esse controlador. Ao final da aula de hoje, deve ser enviado ao professor, via e-mail, um arquivo ZIP contendo o seguinte:

  • Código Fonte (Java) da aplicação de controle manual do WS3D
  • Código Executável (arquivo JAR) com sua versão compilada do WS3D
  • Código Executável (arquivo JAR) com sua versão compilada da aplicação de controle manual do WS3D
  • Arquivo Shell Script (BASH) com os comandos para executar o WS3D e em seguida a App de controle manual
  • Arquivo PDF com um relatório das atividades executadas na aula. 

O acesso a uma aplicação WS3D sendo executada é feito por meio de um socket, aberto na porta 4011. Por meio desse socket, foi criado um protocolo muito simples, onde comandos podem ser enviados ao WS3D e uma resposta deve ser capturada no retorno. Essa resposta pode ser somente um acknowledgment, ou pode conter informações solicitadas, dependendo do comando enviado. Para conhecer a lista de comandos disponíveis, é necessário estudar o código contido no arquivo Main.java do código do WS3D, onde a lista de comandos e suas funções de processamento são definidas. Este é o modo padrão para ter acesso a todos os comandos disponíveis no WS3D. Para facilitar o acesso ao WS3D, entretanto, nosso grupo de pesquisa desenvolveu uma biblioteca Proxy, que abstrai toda a camada de rede, e permite que outros programas escritos em Java possam acessar o WS3D sem a necessidade de tratar os detalhes operacionais do processamento de sockets. O projeto WS3DProxy pode, a semelhança do WS3D ser obtido a partir do seu repositório no GitHub.

O trecho de código a seguir ilustra o uso do WS3DProxy:

WS3DProxy proxy = new WS3DProxy();
try {   
     World w = World.getInstance();
     w.reset();
     World.createFood(0, 350, 75);
     World.createFood(0, 100, 220);
     World.createFood(0, 250, 210);
     Creature c = proxy.createCreature(100,450,0);
     c.start();
     WorldPoint position = c.getPosition();
     double pitch = c.getPitch();
     double fuel = c.getFuel();
     c.moveto(V_SPEED, V_X, V_Y);
    } catch (CommandExecException e) {
     System.out.println("Erro capturado"); 
    }

Inicialmente criamos uma instância do Proxy, capturamos uma instância para o mundo virtual na forma de um objeto da classe World, e a partir desse objeto podemos efetuar uma série de ações, tais como resetar o mundo, criar instâncias de comidas, jóias e criaturas. Tendo-se uma referência para uma criatura, é possível iniciar a mesma, ler seus sensores e enviar comandos via atuadores. Há diversos outros comandos para sensores e atuadores além dos mostrados acima. Veja o código fonte do WS3DProxy para ver as opções disponíveis.

Para finalizar o exercício da aula de hoje, deve-se utilizar o WS3DProxy para se gerenciar a movimentação da criatura manualmente, através do uso do teclado e/ou do mouse. No relatório desta atividade, devem estar disponibilizados tanto o código fonte gerado como o executável do programa de controle, na forma de uma AppJava. Os alunos devem gerar um shell script que inicialize tanto o WS3D como seu software de controle e disponibilizar tudo em um arquivo ZIP em seu repositório de atividades, conforme indicado acima.

 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer