====== Prévia da Competição: A.S.S.A.H.A.F.====== {{:cursos:introrobotica:2009-2:grupo4:previa:governor3k3-assahaf.png|}} ===== Introdução ===== Com o objetivo de preparar o robô para a competição (Robô Vírus), a prévia visa a execução de tarefas básicas que o agente deverá executar no dia da competição. Como iniciar autonomamente e finalizar a execução em 60 segundos, por exemplo. Além das tarefas básicas, o robô também deverá executar etapas que poderão entrar em sua estratégia na competição, como subir a rampa e identificar a cor dos blocos. Os itens que deverão ser apresentados são: -Ser capaz de ser calibrado em 60 segundos ou menos; -Entrar em modo de espera após a calibração; -Ser posicionado manualmente sobre a luz de partida mas em uma orientação arbitrária e orientar-se segundo a luz polarizada; -Iniciar o cumprimento da sua tarefa após acesa a luz de início; -Não queimar a largada; -Aprender a orientar-se no campo autonomamente; -Coletar o bloco que encontra-se sobre a linha; -Identicar a cor do bloco; -Carregar o bloco até a base; -Subir e descer uma rampa 5 cm com 18 graus de inclinação (aproximadamente); -Desligar todos os atuadores ao término dos 60 segundos. ===== Dificuldades ===== Como todos os objetivos abordados na prévia já haviam sido explorados em trabalhos anteriores, tentamos desenvolver um protótipo que driblava as dificuldades que por ventura poderiam aparecer, de acordo com as nossas experiências anteriores. Apesar disso, acabamos nos deparamos com alguns impecílios, sendo eles: * **Perda de potência:** Como a tarefa de seguir linha e andar reto possuem uma certa dificuldade na parte de controle, optamos em desenvolver um robô com um eixo único e, consequentemente, atuado por apenas 1 motor. Essa abordagem gerou uma certa deficiência na potência, acarretando na perda de torque. Devido a esse fator, optamos em não nos aventurarmos na rampa e converter o torque nescessário para tal em velocidade. * **Captura dos blocos:** No primeiro momento o grupo havia pensado em uma estrutura para capturar e armazenar os blocos no interior do robô. Contudo tal tarefa se tornou muito dispendiosa e acabamos optando em arrastá-los. Como eles não seriam presos ao agente, tivemos a tarefa adicional de depositá-los na base. ===== Implementação ===== Foram utilizados dois motores para a movimentação do robô, um para a translação e outro para a rotação. O controle das rodas é definido por um avançado sistema de engrenagens e diferenciais. Quando um motor domina esse atuador o outro é desativado. Essa forma de implementação possibilita um controle simples e preciso do robô a nível de software, já que há a garantia de locomoção em linha reta e rotação sobre o seu próprio eixo. {{:cursos:introrobotica:2009-2:grupo4:previa:15122009194.jpg?512x384|Diferenciais}} Os principais sensores utilizados para a locomoção são os sensíveis ao toque, que estão posicionados na parte frontal e na traseira do robô. Para a localização e orientação, são utilizados dois sensores LDRs de uma forma diferencial para encontrarmos a posição da luz polarizada que marca o campo amigo. Além disso, os sensores de toque são responsáveis por alinhá-lo de forma perpendicular às paredes. Um outro sensor LDR localizada em sua base permite o acionamento do robô ao disparo da luz de partida. Além disso, o robô conta com um sensor infra-vermelho para identificar que um bloco está dentro das suas garras. Nesse primeiro momento a identificação da cor do bloco não foi implementada. {{:cursos:introrobotica:2009-2:grupo4:previa:15122009192.jpg?512x384|A.S.S.A.H.A.F.}} {{:cursos:introrobotica:2009-2:grupo4:previa:15122009193.jpg?512x384|LDRs Diferenciais}} {{:cursos:introrobotica:2009-2:grupo4:previa:15122009195.jpg?512x384|LDR para a luz de partida}} De acordo com as especificações dos sensores, a forma mais natural de comportamento do agente é seguindo o paradigma reativo. No melhor estilo Reactive Groucho simplificado. O agente começa a partida tentando localizar a luz polarizada que marca a sua casa. Após isso, ele segue de forma perpendicular à reta que liga a fonte de luz com a rampa até se chocar com a parede. Uma pequena ré seguida de uma rotação de aproximadamente 90 graus é executada. O robô então segue de ré até se chocar com a próxima parede ortogonal à última, alinhando-se de forma correta. Todas as colisões possuem um algoritmo de tratamento baseado em tentativas e timers. Se apenas um dos sensores tocar um objeto, o robô irá tentar corrigir a sua orientação, tentando encostar o segundo simultaneamente. Após um certo tempo ele irá desistir da tentativa, através de um mecanismo de timeout. Após esse processo o agente segue para a frente para encontrar os blocos. Quando isso ocorrer, ele irá tentar retornar para a base e depositá-los. ===== Conclusão ===== Apesar do não cumprimento de duas tarefas da prévia, realizamos os outros objetivos com êxito. O robô necessita de poucas modificações para a competição. Essas alterações são principalmente relacionadas ao software, como a implementação de mais mecanismos de correções de falhas e possíveis situações que comprometam a integridade dos componentes do agente. ===== Arquivos ===== {{:cursos:introrobotica:2009-2:grupo4:previa:previag4.pdf|Relatório}} [[http://www.dcc.ufmg.br/~vgs/robotica/previaG4.ic|Código Fonte]]