====== 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: {{:cursos:introrobotica:2012-2:grupo07:previa:all1.jpg?300}} {{:cursos:introrobotica:2012-2:grupo07:previa:all2.jpg?400}} __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. {{:cursos:introrobotica:2012-2:grupo07:previa:garra1.jpg?300}} {{:cursos:introrobotica:2012-2:grupo07:previa:garra2.jpg?300}} {{:cursos:introrobotica:2012-2:grupo07:previa:garralateral.jpg?300}} ==== 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. {{:cursos:introrobotica:2012-2:grupo07:previa:garra3.jpg?300}} ==== 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. {{:cursos:introrobotica:2012-2:grupo07:previa:breakbeam.jpg?400}} ===== 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 ===== [[http://www.youtube.com/watch?v=rb6jdsBoZHA&feature=youtu.be|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| Prévia(main)}} {{:cursos:introrobotica:2012-2:grupo07:calibracoes.txt| Calibrações}} {{:cursos:introrobotica:2012-2:grupo07:encoder.txt| Shaft-Encoder}} {{:cursos:introrobotica:2012-2:grupo07:polarizacao.txt| Localização(por polarização)}} {{:cursos:introrobotica:2012-2:grupo07:rampa.txt| Rampa}} {{:cursos:introrobotica:2012-2:grupo07:seguelinha.txt| Segue Linha}} {{:cursos:introrobotica:2012-2:grupo07:bloco.txt| Blocos}} {{:cursos:introrobotica:2012-2:grupo07:utils.txt| Utils (defines, variáveis e funções globais)}}