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:

all1.jpg all2.jpg

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.

garra1.jpg garra2.jpg garralateral.jpg

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.

garra3.jpg

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.

breakbeam.jpg

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

Subindo Rampa

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

Código Fonte

cursos/introrobotica/2012-2/grupo07/previa.txt · Última modificação: 2012/12/16 22:09 por christian.101