Prévia - Krueger
Introdução
Esse trabalho teve como objetivo a configuração de algumas atividades necessárias para a execução da competição RoboMarte. Embora algumas tarefas ja tinham sido implementadas nos trabalhos anteriores, foram necessárias algumas mudanças que demandaram muito tempo. Em especial, destacamos:
Na parte mecanica:
- Frente do robo modificada para comportar uma garra para segurar blocos de isopor
- Criação da garra com motor para acionamento.
- Uma nova roda (Rollon) na frente do Robô
- Mudança de posição do sensor de cor
Na parte elétrica:
- Inserção de novos sensores ( Break Beam, sensor de toque )
- Fortalecimento dos conectores dos sensores
- Novo Mapeamento de portas
Na parte lógica:
- Logica para segurar e identificar cor do bloco (Break Beam + Acionamento do motor + Sensor de Cor)
- Lógica para subir a rampa
- Lógica para entregar o bloco na base
Iremos detalhar cada uma dessas partes a seguir.
Mudanças estruturais
Garra mecânica
Na especificação da prévia, era requerido que “7. Coletar o bloco que se encontra sobre a linha;”. Consideramos que, para realizar essa tarefa, deveríamos pegar o bloco de modo que ele não caisse caso o robô fosse levantado. Dessa forma, projetamos uma garra mecânica que agarraria o bloco por cima.
Essa garra seria acionada por um motor (no caso, um motor do proprio kit LEGO). Para esse acionamento utilizamos uma redução rosca de arquimedes e uma engrenagem lego (formando uma redução 24:1). Essa redução é interessante também pois trava a garra na posição mesmo com o motor desligado. Dessa forma, a garra obteve boms resultados em termos de grip do bloco de isopor. Embora algumas vezes ele trave um pouco ou a garra esbarra com as laterais. Esses problemas procuraremos solucionar para a competição usando sensores de toque.
Boca coletora
Criamos uma abertura frontal para capturar os blocos. O braço mecânico fica logo a cima dessa abertura. Quando um bloco entra nesse local, utilizamos o sensor Break Beam para detectar a presença de um bloco no alcance do braço. Essa boca comporta 2 blocos, um atras da garra e um na garra. Isso deixou o robô longo, portanto, apoiamos as duas metades dessa boca usando 2 rollons. Essa mudança estrutural ajudou para que o robo subisse a rampa.
Nova posição do sensor de cor
Fixamos o sensor de cor virado para baixo, logo a cima da garra. Dessa forma a distancia entre o bloco e o sensor é constante diminuindo o erro lido pelo sensor. No entanto, ainda temos erro de quando o bloco entra rotacionado na boca. Testamos os valores lidos, e os resultados melhoram em relação ao trabalho anterior.
Mudanças na parte elétrica
Sensores
Construimos um sensor Break Beam dividindo um shaft encoder em 2 metades. Cada uma ficava em uma metade da boca coletora. O principal problema desse sensor era o ruido ambiente.
Para filtrar esse ruido, colocamos esse sensor na porta analogica e filtramos o valor medido no ambiente do valor lido no sensor.
Além disso, colocamos 2 sensores de toque em cada lado da boca coletora
Mapa de portas e Conectores reforçados
Como estavamos cansado de realizar ressoldagens, na ponta da Handyboard, fortalecemos alguns conectores.
Implementação do Algoritmo
Para a execução da prévia, juntamos algoritmos feitos nos tps anteriores por meio de multi-tarefas.
A nova função de largada a partir da luz foi implementada, em que os sensores utilizados para o segue linha são calibrados com base na leitura em cima da lâmpada, quando ela está desligada. Então, o limite setado para o início é o valor médio entre essa leitura e a leitura com a luz ligada (que, no caso, é o valor máximo). Assim, o robô aguarda imóvel até que a luz seja acesa, e então começa a execução de sua rotina.
Há também a nova função de desligar em 60 segundos, que é executada na thread principal, simplesmente aguardando o timer de 60 segundos e então encerrando toda a aplicação.
A função de subir rampa é executada de modo que os motores do carro são ativados para trás, pois há empecilhos para que ele suba de frente, como os sensores de toque.
A função de coletar bloquinhos é executada com base em um sensor break-beam e em um sensor LDR, juntamente com leds RGB. A coleta é feita utilizando uma garra (feita de lego). Quando um bloco é detectado pelo break-beam, a garra segura este bloco para centralizá-lo, alinhando-o com o sensor LDR. Os leds RGB são ativados sequencialmente e, de acordo com as medições do LDR, o bloco pode ser descartado ou a garra continua segurando-o (dependendo da cor). Se a garra continuar segurando o bloquinho, ele é levado para a base. Se não, o robô volta a executar o segue linha.
O Fluxo do algoritmo para a prévia foi o seguinte:
-Espera Luz de Start
-Começa count de 60 segundos
-Localiza-se, determinando o lado do campo
-Posiciona-se 180º em relação à luz
-Anda para frente por 3 segundos
-Começa a procurar e seguir linha (detectando blocos)
-Sempre que um bloco for achado e aceito, levá-o para a base. Depois, volta a seguir linha