quarta-feira, 17 de fevereiro de 2016

Smart Shep3rd (2)

Concluimos que a função capaz de conduzir as ovelhas ao curral tem o seguinte funcionamento:


É de funcionamento recursivo sendo que na analise das barreiras, caso não esteja numa situação de vitória toma em conta dois movimentos em frente, ou seja as barreiras a uma e a duas casas de distância, conhecidas já na função de reconhecimento.
Com base nas barreiras adjacentes toma então a decisão com base num conjunto de possíveis movimentos.
De modo ao robô não entrar num loop infinito foi definido que caso não haja um conjunto de passos adequado ou caso sejam alcançados 100 passos o processo de procura do caminho termina, devolvendo um indicador de insucesso.
Antes de iniciar o seu movimento, o robô analisa as 4 posições em redor de cada ovelha escolhendo para cada ovelha a melhor posição inicial para conduzi-la. Com base no número de passos para levar cada ovelha e levada primeiro a que serão necessários menos passos e por fim a que serão necessários mais passos.
Um dos casos de insucesso encontrado foi o seguinte:


Chegou-se à conclusão durante a apresentação que a resolução deste caso passava pelo recurso à aleatoriedade da ovelha até uma posição conveniente.
Encontrou-se também um caso em que as ovelhas conseguiam entrar no curral apenas num sentido (contra ponteiros do relógio):


Semelhante a este caso há um que só permite a entrada das ovelhas no sentido do ponteiro do relógio.
Na última fase as principais alterações foram então o planeamento do caminho para condução das ovelhas no momento inicial e a correção do andamento do robô que por vezes era feito com 4 movimentos quando só podia dar 2. Foram também analisadas com mais atenção as situações em que seria preferencial gritar, elaborando-se esquemas das principais:








Como exemplo de funcionamento do robô tomou-se o seguinte exemplo:


segunda-feira, 15 de fevereiro de 2016

Pesquisa Cega - Demos

Para que o robô tenha conhecimento do território do jogo de modo a ganhar há a necessidade de se fazer um estudo ao pavimento de jogo.
Para a pesquisa cega não se teve em conta nenhum algoritmo de pesquisa na integra abordado nas aulas teóricas.
O objetivo do robô nesta fase é tentar pesquisar todos os cacifos de uma linha, tenho em conta o eixo horizontal.


De modo a registar todos os casos mais complexos que se pode encontrar, ao nível da disposição das barreiras, fez-se algumas gravações ainda na fase de correções de código (por isso tem-se uma ovelha a não ser vista, mas como se vê no vídeo anterior isso já está 100% funcional).




sexta-feira, 5 de fevereiro de 2016

Smart Shep3rd


Junção da função go_to com a codificação de um possível caminho, levando a ovelha da sua posição até ao curral através do toque.

De forma a levar as ovelhas até ao curral, baseado na posição primeiramente suposta como ideal para o robô, é preenchido um array (de capacidade máxima de 100 passos) com os movimentos ideais (gritar, tocar, andar para a frente, virar à direita, virar à esquerda e andar para trás).

Foram definidas como prioridades quando ao posicionamento do robô sempre que possível posicionar-se por baixo da ovelha, em seguida à sua esquerda, depois à direita e por fim em cima. Tomou-se como prioritário o toque em vez do grito de modo a minimizar a interação com outras ovelhas, tendo que anteceder os movimentos por dois passos.

quinta-feira, 4 de fevereiro de 2016

Demo GoTo

Abordada uma nova metodologia tem-se aqui o funcionamento da função GoTo, cujo objetivo é encaminhar o robô até a ovelha colocando-o numa posição favorável.

POSIÇÃO INICIAL: (0,5)
POSIÇÃO OBJETIVO: (5,1)

v2 (melhor qualidade):


quinta-feira, 21 de janeiro de 2016

Função para levar as ovelhas

Foi considerado que a melhor maneira de dirigir as ovelhas até ao curral seria analisar jogada a jogada reagindo perante o ambiente. De acordo com a posição do robô (já ao pé da ovelha) é pensado para onde se deslocará a ovelha sendo que o robô a segue da forma mais pertinente.



Função goTo - Metodologia

Parte/Função integrante do projeto. Tem apenas uma premissa: a função é chamada com as coordenadas desejadas e o robô dirige-se para tal coordenada, respeitando as regras do jogo. Segue um esquema com uma possível configuração e respetivas respostas.


Pesquisa Cega - Metodologia

Após falhar as duas iniciais soluções para a pesquisa cega, na seguinte imagem exemplifica-se a nova metodologia que se pretende abordar.