Nesta série estarei mostrando o desenvolvimento de um projeto da faculdade, se trata da criação de um ambiente 3D para simulação de navegação autônoma de robôs utilizando algoritmos evolutivos.
Quando o projeto estiver completo estarei postando um artigo mais geral e sério no Blog ALGC Pesquisa, aqui estarei divulgando os paços técnicos para criação do software como uma forma de controle para mim mesma e ao mesmo tempo uma divulgação do material para os interessados.
O objetivo é criar um software que utilize algoritmos evolutivos para simular diversas gerações de robôs, esses que a cada geração deverão "evoluir" e aprender a cumprir suas funções de uma melhor maneira, suas principais funções são navegação pelo mapa e procura/perseguição de objetos. A simulação e evolução deve ser feita sem o modo gráfico para que ocorram mais rapidamente, porem o modo gráfico poderá ser ativado pelo usuário para que o mesmo possa visualizar como os robôs estão se comportando.
O desenvolvimento será dividido inicialmente em quatro partes podendo sofrer alterações se necessário, a primeira parte é o desenvolvimento da geração de mapas, a segunda, o desenvolvimento da geração dos primeiros robôs, a terceiro a aplicação do algoritmo evolutivo e a quarta a aplicação do modo gráfico geral, podendo existir postagens entre essas para devidas correções e mudanças.
Deixando claro que essa série não se trata de um tutorial e sim da divulgação e controle de um projeto.
Iniciaremos nessa primeira parte o desenvolvimento da geração dos mapas onde os robôs serão simulados, o mapa deve ser gerado em código e em modo gráfico caso uma tecla e/ou botão seja pressionado.
O diagrama acima ilustra de modo simples como será feita essa parte.
A geração do mapa em código será feita utilizando uma matriz 50 por 50 onde cada posição guardará o respectivo valor do objeto ali presente. Os possíveis objetos em um mapa são parede (10), pedra do tipo 1 (50), pedra do tipo 2 (100), robô do tipo 1 (1000), robô do tipo 2 (50000), e a posição também pode estar vazia (0). Quando os gráficos forem gerados, os objetos devem estar presentes em suas respectivas posições e além disso devem ser gerados blocos logo a baixo como uma representação do chão.
Foram previstos alguns problemas com as criaturas que chegassem as bordas do mapa e tentassem ver o que tem alem da matriz, por isso foram implementados alguns tratamentos.
Segue o código:
Declarações
O método gerar mapa avança cada posição da matriz gerando automaticamente um objeto na determinada posição. o método atualizar mapa quando chamado esvazia (zera) todas as posições da matriz do mapa e em seguida chama novamente o gerar mapa para que tudo seja criado novamente do zero.
O método atualizar pedras limpa todas as edras do tipo dois do mapa e posteriormente gera novas pedras em novas posições, enquanto o método deletar pedra pega é chamado cada vez que um robô do tipo 1 pega uma pedra do tipo 2.
E por ultimo o método gerar gráficos que é chamado pelo usuário para mostrar a simulação em modo gráfico 3D, o que o método faz é passar por todas as posições da matriz, identificando os objetos de cada posição e instanciando os modelos 3D referentes a cada objeto em suas determinadas posições.
Modelos 3D usados:
Chão
Parede
Pedra 1
Pedra 2
Robô 1
Robô 2
Mapa em modo gráfico gerado:
Nenhum comentário:
Postar um comentário