O objetivo do trabalho é ganhar familiaridade com técnicas de controle e odometria através do uso do shaft-encoding e LDR diferencial Para a execução do projeto foram utilizados as peças do kit de LEGO e a HandyBoard, dois motores, 3 LEDs, 2 chaves ópticas e um 2 sensores LDR.
Primeiramente foi necessário melhorar a construção do robô. Utilizamos as peças descartáveis do lego para melhorar a construção do sensor LDR e dos LEDs.
Para montar o LDR diferencial, colamos as lentes polarizadas em uma peça de lego, e em sua parte dianteira encaixamos os LDRs.
Foram utilizadas duas chaves óticas para medir a velocidade das rodas, porém devido a pequena distância entre o emissor e o sensor, tivemos que utilizar engrenagens finas de 14 dentes para calcular a quebra de sinais ao invés da roda com 6 buracos.
Para se localizar o robô gira 360 graus em torno do próprio eixo para encontrar a posição com o maior valor. Depois ele tenta se apontar para essa posição. Segue um video da execução
Foram utilizados 2 chaves ópticas C860TP como break-beams. No código foram utilizadas as bibliotecas fencdr6.icb e fencdr4.icb para facilitar a implementação do shaft-encoding. Essas bibliotecas realizam automaticamente o calculo do número de mudanças no valores obtido pelas chaves ópticas. Através de medidas como o raio da roda e o raio de giro do robô, foi possível detectar o número de trocas de valor que seriam necessários para andar uma determinada distância. Dessa forma desenvolvemos um controlador PD que tentava aproximar o giro dar rodas. Segue um video do robô realizando um trajeto triangular.
Através das funções de movimento utilizando o controlador PD (para andar em linha reta) o robô se deslocava até que a interferência calculada pelo LDR frontal fosse pequena, indicando um bloco a sua frente, e então executava-se o algoritmo de detecção de cor previamente feito na prática anterior; sendo adicionadas somente as condicionais para as ações respectivas às cores de cada bloco. Segue o video do robô detectando um bloco vermelho e realizando a ação necessária.
As chaves ópticas eram muito estreitas para serem utilizadas em conjunto com as rodas. A bateria utilizada na placa parou de funcionar no dia da apresentação, nos custando varias horas de aperfeiçoamento do projeto como um todo. Uma chave óptica recebia sinal com menor frequência que a outra, sendo necessário reduzir esse erro no código. Esse erro se deu provavelmente devido ao fato de que tivemos que usar engrenagens muito pequenas.
Fomos capazes de utilizar todos os sensores de forma correta e fazer com que o robô realizasse todas as tarefas pedidas.