OBJETIVO
Este trabalho prático tem como objetivo a implementação conjunta de tudo que foi visto durante o curso, incluindo manipulação de objetos, odometria, navegação, localização, além da utilização do sensor adequado para cada função distinta como por exemplo sensores LDR para identificar cores. É um grande desafio pela quantidade de funções que devem ser implementadas ao mesmo tempo. Para a parte de localização, o robô deverá identificar por meio de uma lâmpada com lentes polarizadas em que extremidade ele está localizado definindo assim qual será seu campo e para onde o mesmo deverá voltar para deixar os blocos coletados. A parte de odometria feita no trabalho prático anterior foi aprimorada dando assim mais precisão para os movimentos pelo campo de competição, utilizando sensores break-beam como um tipo de shaft-encoders, de forma que teremos o controle da quantidade de rotações de cada uma das rodas do robô, podendo assim fazer o controle de velocidade de cada uma e distância percorrida, este recurso também é de grande importância para a parte de localização, já que é através da informação de quantas voltas cada roda deu em uma direção que será possível voltar até o ponto de maior intensidade luminosa.
MATERIAL UTILIZADO
* 3 motores DC. * 2 sensores óptico reflexivos para a line follow. * 1 LDR diferencial para localização. * 1 LDR para dar início aos movimentos * 2 sensores break-beam, sendo um para cada roda, sendo responsáveis pela odometria
ESTRUTURA
Com relação ao trabalho pratico anterior, a quantidade de reduções, mesmo sendo menores em relação ao primeiro, ainda foram excessivas, sendo assim alteradas de uma proporção de 54:1 para 27:1, já que neste trabalho a velocidade de locomoção é de grande importância, desde que ainda haja torque suficiente para subir a rampa de inclinação equivalente a 18 graus e altura aproximada de 5cm. Os testes foram feitos e o robô agiu dentro destas expectativas. A caixa de redução também ganhou um formato diferenciado, sendo colocadas as engrenagens além de lateralmente, acima umas das outras de forma que um espaço menor foi ocupado.
Primeiro foi pensado em um diferencial duplo
O diferencial duplo necessita de um torque muito maior, portanto decidimos alterar de volta para o sistema que já vinhamos utilizando.
Utilizamos o próprio eixo de rotação das rodas, que são movidas separadamente por motores diferentes para colocar uma engrenagem pequena de 14 dentes, de forma que possamos através de um sensor break-beam contar quantas vezes um feixe de luz foi interrompido por estes dentes e assim definir aproximadamente quantos graus cada roda girou. O sensor foi montado embaixo de nossa estrutura principal. As rodas também foram alteradas para dar maior agilidade e robustez ao robô de forma que a odometria seja mais precisa e ele seja mais ágil em sua locomoção na procura pelos blocos.
Para a parte de navegação, os dois sensores foram colocados na parte da frente do robô, virados para baixo, embaixo da base principal da estrutura, de forma que haja uma distância entre eles um pouco maior que a largura da linha preta a ser seguida.
Para a parte de localização, foram colocados dois sensores do tipo LDR na parte de cima e traseira do robô, de forma que estes sensores fiquem numa altura suficiente para receber diretamente a luz vinda das lâmpadas nas extremidades do campo. Para que a distância entre as lâmpadas fosse comparada, os sensores foram colocados um ao lado do outro, cada um com uma lente polarizada de uma forma (uma na vertical e outra na horizontal), lembrando que as lâmpadas nas extremidades do campo também tem na frente, lentes polarizadas da mesma forma (uma na vertical e outra na horizontal). Foram feitos testes e a iluminação exterior não interfere na leitura dos sensores.
Para que os blocos sejam pegos, foi colocada uma garra na parte dianteira, com um modelo semelhante a uma pinça, movidos por um motor que atua em ambos os lados da pinça de forma simultânea e igualitária, para que a pinça tenha força suficiente para agarrar o bloco, foi implementada também uma caixa de reduções, de forma que o torque seja grande e a velocidade pequena, dando assim uma precisão maior para a pinça. O motor é acionado por um sensor LDR que identifica a presença de algo a frente pela variação na intensidade da luz que chega ao sensor. Ao longo da pinça foram colocadas rodas de borracha para aumentar o atrito entre o bloco e a pinça. (segue abaixo uma foto para melhor compreensão)
O arduino foi fixado na estrutura na parte traseira do robô, com o uso de peças em volta do mesmo, de forma que ficou bem firme, em uma posição que facilita o acesso a suas entradas e saídas, já a bateria foi colocada na parte central, de forma que não prejudicasse o equilíbrio e de forma que não ocupe muito espaço, sendo fixado da mesma forma que a placa de arduino. (FOTO ARDUINO E BATERIA)
PROGRAMAÇÃO
O processo de funcionamento se inicia quando a função “TP 04” do menu é selecionado. o robô fica em modo de espera até que a luz instalada na bancada sensibilize o LDR em baixo do robô.
void largada(int luz_ambiente){
int leitura;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Esperando luz");
while(leitura < luz_ambiente ){
leitura = analogRead(LDR_start);
}
}
Após o “start” o robô se localizava a partir do LDR diferencial, vira em direção a rampa segue a linha até encontrar um bloco. Ao encontrar o bloco, o robô reconhece a cor do bloco.
void retornaCor(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print(leitura_LDR[0]);
lcd.setCursor(6,0);
lcd.print(leitura_LDR[1]);
lcd.setCursor(0,1);
lcd.print(leitura_LDR[2]);
lcd.setCursor(6,1);
lcd.print(leitura_LDR[3]);
if(leitura_LDR[3]*0.85 < leitura_LDR[2] && leitura_LDR[3]*1.10 > leitura_LDR[2]){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Azul");
}
else if(leitura_LDR[3]*0.90 < leitura_LDR[1] && leitura_LDR[3]*1.10 > leitura_LDR[1]){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Verde");
}
else if(leitura_LDR[3]*0.90 < leitura_LDR[0] && leitura_LDR[3]*1.10 > leitura_LDR[0]){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Vermelho");
}
else {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Preto");
}
}
Caso o blobo for preto o robô vira solta o bloco e volta a seguir linha até encontrar um bloco.
MODIFICAÇÕES FEITAS AO LONGO DA MONTAGEM
O projeto sofreu grandes e significativas mudanças ao longo de sua montagem. A princípio as rodas eram giradas simultaneamente por apenas um motor, utilizando um sistema de diferencial duplo. Quando necessário um segundo motor era acionado fazendo as rodas girarem de forma independente. Este sistema só era possível pela montagem no eixo principal das rodas em que foi empregado dois diferenciais. Após insistir por algum tempo neste método e obter resultados negativos decorrentes do baixo torque e velocidade, a ideia foi abandonada, reestruturando completamente o robô. Várias maneiras de segurar o também bloco foram pensadas até chegar na garra atual. Algumas formas de pegar o bloco foram descartadas por seu tamanho e peso que eram desnecessários, outros foram descartados por sua complexidade além do necessário para esta função. Com relação ao resto da estrutura, não houveram grandes discussões acerca de sua montagem.

