O objetivo deste projeto foi criar um algoritmo para permitir ao Bot'n Roll ONE A resolver labirintos usando somente o seguidor de linha! O código foi desenvolvido para que o robô siga a linha preta num fundo branco, uma forma simples e barata de se construir um labirinto! O video acima mostra o desafio e explica o algoritmo.
Download do código fonte deste projeto: MazeSolver.zip
Podes consultar o código on-line clicando aqui!
Na primeira vez que usares este programa tens que configurar a velocidade e a pausa do robô:
1. No menu, seleciona cada parâmetro e define-o da seguinte forma:
speed = 40
pause = 300
debug = OFF
Nota: Pode ser necessário ajustar os valores mais tarde, mas estes valores padrão funcionam na maioria dos casos utilizando uma bateria de 12V carregada.
2. Seleciona "Start Run" e pressiona o botão Enter (no canto inferior direito).
3. O robô entra no modo "Explorar Labirinto" e explora o labirinto virando à esquerda sempre que possível, usando o algoritmo "Left Hand on The Wall". Ele guarda o percurso durante a movimentação e emite um sinal sonoro a cada intersecção detectada.
4. Quando atinge a meta (um quadrado preto) toca uma melodia e apresenta a mensagem "FINNISHED" (terminado) no LCD.
5. 2s mais tarde, apresenta na linha 1 do LCD o caminho guardado e na linha 2 o novo caminho mais curto calculado.
6. Pressiona qualquer tecla para voltar ao Menu. Podes alterar qualquer parâmetro, se achares necessário.
7. Coloca o robô de volta na posição inicial e seleciona "Start Run" (iniciar).
8. O robô agora entra no modo "Caminho mais Curto" e resolve o labirinto usando o caminho aprendido, que deve corresponder ao caminho mais curto.
9. Quando atingir a meta toca a melodia novamente.
Notas:
1) No final do modo "Caminho mais curto" volta para o modo "Explorar Labirinto" e podes agora colocar o robô num local diferente no labirinto.
2) O robô está em constante detecção de obstáculos. Retira do caminho todos os obstáculos que possam interferir com o robô caso contrário não irá gravar o caminho correto.
3) Diverte-te!