You are here

Aula 6 - SOAR: Controlando o WorldServer3D

Objetivo

Nas aulas anteriores, seguimos os tutoriais básicos do Soar para entender seu funcionamento. Para isso, nos servimos de alguns exemplos de interfaceamento do Soar com outros programas (Eaters e TankSoar), que já estavam preparados. Na aula de hoje, utilizaremos o Soar para controlar uma aplicação externa por meio da interface SML. O sistema que desenvolveremos será a mente artificial de um agente capaz de controlar o robô no ambiente WorldServer3D que utilizamos na primeira aula. Para facilitar o acesso ao WS3D e ao WS3DProxy, providenciamos abaixo os links para os referidos projetos no GitHub:

Atividade 1

Para essa atividade, utilizaremos um exemplo de um controlador que utiliza o SOAR para a tomada de decisões. O download dos arquivos com o código fonte desse programa pode ser feito aqui:

Abra o código fonte do DemoSOAR no Netbeans, e faça uma análise de seu funcionamento. Para tanto, siga o roteiro a seguir, registrando as eventuais respostas a perguntas em seu relatório.

Abra o código da classe SimulationSOAR.java, que contém o método main. Observe o uso da classe NativeUtils para resolver o problema do gerenciamento do código JNI para diferentes versões de sistema operacional. Entenda como esse gerenciamento é feito e registre em seu relatório.

Observe que essa solução é estendida ao carregamento de arquivos com código SOAR, para uso do controlador. Como isso é implementado no Demo ?

O loop principal de simulação do DemoSOAR também se encontra no método main. Explique seu funcionamento.

Acesse o código da classe SimulationTask.java, para compreender em mais detalhes o que está acontecendo. Observe que essa classe já se utiliza das classes de apoio em WS3DProxy. Entenda e explique como é feito o acesso ao WorldServer3D, por meio do WS3DProxy.

Observe que a classe SimulationTask utiliza-se da classe SoarBridge, para ter acesso ao SOAR. Explique como é feita a leitura do estado do ambiente no WorldServer3D, e como esses dados sensoriais são enviado para o SOAR. Da mesma forma, explique como os dados enviados pelo SOAR são aproveitados para controlar a criatura no WorldServer3D. Registre suas conclusões no relatório de atividades.

Acesse o conteúdo do arquivo de regras SOAR: soar-rules.soar e tente entender seu funcionamento. Explique o princípio lógico de seu funcionamento.

Para rodar o SoarDebugger junto com a simulação, veja a dica aqui: Rodando o SoarDebugger junto com o DemoSOAR

 

Atividade 2

Cada criatura no WorldServer3D possui um "leaflet", ou seja, uma meta na obtenção de jóias. Modifique o programa DemoSOAR (e também o soar-rules.soar), de tal forma que ele leve em consideração o leaflet de cada criatura para o controle da criatura.

Coloque duas criaturas competindo em um mesmo ambiente, para ver qual delas consegue completar seu "leaflet" com mais rapidez.

Escolha um colega de turma que já tenha concluído essa atividade, e efetue uma competição entre o seu controlador e o desenvolvido por ele.

Ao final dessa aula os seguintes deliverables devem ser entregues ao professor via e-mail:

  • Arquivo ZIP contendo: o JAR do WS3D, o JAR do DemoSOAR, um Shell Script (bash) startando o WS3D com uma criatura sozinha e um Shell Script (bash), startando o WS3D com a competição das 2 criaturas.
  • Arquivo ZIP com o código fonte da sua versão do programa DemoSOAR
  • Arquivo PDF contendo o Relatório de Atividades

 

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer