Grupo 4 - MoU - Masters of Universe!
TP2: ...Sensores!
Nosso primeiro passo neste trabalho foi a construção do robô sobre o qual montaríamos os sensores, ja que o robô do TP anterior era um tanto instável. A construção Em alguns dias, tínhamos um robô bastante melhor que o anterior (quem dera tivéssemos usado ele para fazer o trajeto quadrado!).
Desafios Encontrados
Pode-se dizer que os maiores desafios encontrados neste trabalho foram reslacionados à montagem elétruca dos sensores. Um dos sensores óticos que foi entregue ao grupo estava queimado, e o outro repondia valores em uma faixa pequena (apenas valores maiores que 190, aproximadamente). Depois disso compramos outro sensor ótico e o montasmos sem um resisor, no entanto o sensor quiemou. Decidimos então usar apenas um sensor ótico para implementar a função do robô seguir a linha preta - isso poderia ser feito melhor com dois sensores, mas também é possível fazê-lo0 com um só, como de fato fizemos. para identificar as cores, decidimos usar um LDR com três leds coloridos - um verde, um azul e um vermelho - ao invés do sensor ótico.
Interface da HandyBoard
Para este, trabalho, programamos a handyboard para realizar medições (correspondentes aos vários exercícios solicitados) e fazer o trajeto sobre a linha preta. A proporção de potência entre os motores e o tempo entre iterações para o algoritmo da linha preta pode ser parametrizada em tempo de execução, com o uso do knob. Também podem ser feitas calibrações de cor preta e branca (para que o robô saiba diferenciar as cores no trajeto sobre a linha) e calibrações para cada uma das cores dos blocos (vermelho, amarelo, azul e verde).
Algoritmo para identificação de cores
A idéia que utilizamos para identificar as cores foi a seguinte: montamos um LDR com os três leds (vermelho, verde e azul) e, após termos posicionado um bloco colorido à frente do sensor, ligamos um led de cada vez e medimos a resposta do LDR com aquele led ligado. Caso tenhamos um bloco vermelho, o LDR responderá valores baixos quando o led vermelho estiver ligado (a luz do led incide no bloco e é refletida de volta no sensor), e valores maiores para os outros. Durante a calibração, caracterizamos cada uma das quatro cores (verde, vermelho, amarelo e azul) como um tripla de valores (r,g,b), que correspondem aos valores da resposta média do LDR quando os leds vermelho, verde e azul estão ligados.
Assim, quando vamos detectar a cor de um bloco, medimos sua tripla de cores (r,g,b) e achamos, dentre as tripla de cores btidfas durante a calibração, aquela que “mais se assemelha” aos valore medidos. Fazemos isso tratando as triplas como pontos no espaço 3-d e medindo a distãncia euclidiana entre o valor medido e os valores calibrados. Caso o valor medido se aproxime mais do valor calibrado para o bloco azul, por exemplo, então deduzimos que detectamos um bloco azul, e imprimimos a resposta no display. Este foi o procedimento adotado para a detecção de cores.
Para esta tarefa, foi muito importante a realização do “networking”. Em particular, não podemos deixar de mencionar o apoio que tivemos do grupo DooM na troca de idéias e experiências com Leds e montagem de sensores.
Algoritmo da linha preta
Foi utilizado apenas um sensor ótico para realização do trajeto da linha preta. Memorizamos os valores Branco e Preto, e determinamos um erro para a diferenciação de ambas as cores(baseado no número de testes que foram realizados). Os sensores mediam aproximadamente 200 na cor branca, e 240 na cor preta.
O segundo fator memorizado era de que lado da linha o robô iria iniciar sua trajetória (Esquerda ou Direita). A partir de então, toda vez que o sensor detectava ter encontrado a linha preta, a indicação era que iria virar para o lado oposto ao último escolhido. Se não tivesse virado ainda, viraria para o lado oposto ao iniciado. E assim, formou-se um zigue-zague que foi sendo corrigido a medida que os conflitos ocorriam.
Mídia
Documentação
Na documentação encontram-se todas as tarefas de exercícios e medições pedidas na especificação.