Grupo 8 - 404! Esse grupo não existe!
Competição
MARIA REBORN RELOADED
Introdução
Figuras frequentes no imaginário dos diretores Hollywoodianos, os robôs têm se tornado cada vez menos um artefato de um futuro distante e de filmes de ficção científica e se integrado cada vez mais ao quotidiano das pessoas. A versatilidade dessas máquinas faz com que sejam empregadas em inúmeras atividades e as torna peças-chave do desenvolvimento da ciência e da realização de atividades de risco.
É difícil pensar em algumas questões sem apontar robôs como solução. Por exemplo, como explorar regiões submersas em profundidades não aconselháveis para mergulhadores? Como explorar ambientes extremamente quentes, frios ou consideravelmente perigosos? Como seria possível realizar explorações em solo marciano sem o auxílio deles? São tarefas complicadas para um humano. No caso de Marte, por exemplo, uma pessoa teria que levar um estoque de alimentos suficiente para no mínimo um ano e meio de viagem, sem falar no tempo que ficaria lá (o robô Curiosity demorou 9 meses para chegar ao Planeta Vermelho).
Pensando nisso, o objetivo desse trabalho é a construção de um robô antibombas autônomo, capaz de se localizar, navegar e coletar minas desativadas em um campo delimitado. Para isso, serão utilizados sensores LDR, óptico-reflexivos, break beams, LED RGB, linhas pretas marcando o campo, luzes polarizadas e lâmpadas comuns.
Especificação da tarefa
O robô deveria ser capaz de realizar as seguintes tarefas:
Ser capaz de ser calibrado em 60 segundos ou menos;
Entrar em modo de espera após a calibração;
Não queimar a largada;
Iniciar o cumprimento da tarefa após acesa a luz de início;
Ser capaz de se orientar segundo a luz polarizada;
Navegar autonomamente pelo campo;
Coletar os blocos que se encontram dispersos no campo;
Carregar o bloco até a base (ou mantê-lo preso ao robô); e
Desligar todos os atuadores ao término de 60 segundos.
Especificações do robô
A estrutura do robô sofreu algumas alterações em relação à do trabalho anterior. Além das duas rodas fixas atuadas de forma independente e uma roda esférica na frente, essa versão do robô conta também com um terceiro motor, responsável pela abertura e fechamento da garra. Para o acionamento das rodas fixas houve uma redução de 3:25 em cada roda e os motores foram acionados com potência variando entre 40% e 80%. Em relação à estrutura, retirou-se o excesso de peças, a fim de que o robô ficasse mais leve e sobrassem mais elementos para a construção da garra. Além disso, as rodas foram movidas mais ainda para trás, para que o robô fosse capaz de subir a rampa. Em relação aos sensores, adicionou-se mais um LDR para a realização da tarefa 4.
A seguir estão algumas fotos mostrando o robô e seus sensores.
Vista frontal do robô, com destaque para a estrutura da garra. LED RGB acima, LDR abaixo.
Vista inferior do robô. É possível ver os sensores break beam, óptico-reflexivos, o sistema de redução e o LDR utilizado para a tarefa 4.
Vista traseira do robô, com destaque para o LDR diferencial.
Desenvolvimento da lógica do código
Para as tarefas de não queimar a largada e iniciar o cumprimento da rotina após acesa a luz de início, foi feito o seguinte: ao entrar em modo de espera, lia-se o valor do LDR localizado na parte de baixo do robô, definindo-se um parâmetro. Após, lia-se em loop o valor desse mesmo LDR de modo que só se saia do ciclo caso o valor lido fosse menor que a metade do valor definido anteriormente, o que significava que a luz havia sido acesa.
Para a coleta de blocos e carregamento dos mesmos até a base, foram utilizadas combinações de funções de abrir/fechar garra, identificação de cores (descrita no TP 3), giro (baseada no uso do break beam), e locomoção para frente e para trás.
Por fim, para o desligamento de todos os atuadores ao término de 60 segundos, algumas funções foram inseridas em loops cuja condição de funcionamento era o tempo estar dentro dos limites, e foram inseridas condições de verificação do tempo entre as funções dentro dos loops, para caso o tempo acabasse antes de o programa voltar à checagem da condição do loop.
Em relação à estratégia, foram criadas três funções:
Uma em que o robô subia a rampa, pegava o bloco azul, saia pela frente, virava 90 graus, andava para a frente, virava 90 graus novamente e voltava arrastando os blocos, sem identificá-los.
Todas as funções se baseavam em seguir as linhas e em giros utilizando a contagem do break beam. Abaixo se encontram vídeos do desempenho do robô na competição.
Problemas encontrados
Os blocos utilizados no treino, por estarem mais danificados, ofereciam muito mais atrito que os utilizados na competição. Na primeira partida, nosso robô chegou a pegar o bloco azul, mas o mesmo caiu durante o giro sobre a rampa. Após, tentamos resolver o problema de duas maneiras: deixar o motor ligado pressionando o bloco, o que acabou por fazer o motor sair da posição. E alterar a garra para que segurasse o bloco mesmo com o motor desligado.
As novas alterações da garra fizeram com que ela se quebrasse quando o robô descia da rampa. Felizmente ele ainda conseguiu levar o bloco azul até a base, mas perdeu a possibilidade de capturar novos blocos. Após, o problema foi resolvido com novas mudanças na garra.
O sistema de identificação e calibração de cores havia sido desenvolvido primeiramente na HandyBoard, e, ao ser migrado para o Arduino, parou de funcionar como esperado. O robô acabou rejeitando a cor verde, por exemplo, achando que era preto.
Subir a rampa foi bastante desafiador. Após resolver os problemas de estrutura/sensores se chocando com a rampa ou então o óptico-reflexivo ficando muito distante e parando de ler, teve-se que resolver o problema de o robô não cair da rampa. Primeiramente o código de seguir linha fazia um motor funcionar e o outro ficar parado. Após muitos ajustes, chegamos à conclusão de que fazer um motor funcionar a 200 e o outro a 100 permitia que o robô andasse mais tempo em reta e que subisse a rampa sem cair.
O robô, durante a competição, bateu duas vezes na parede ao se localizar, o que fez com que seu algoritmo de localização falhasse.
Equipe
Outros Vídeos
Sobe Rampa
Teste Rampa 1
Teste Rampa 2
Teste Rampa 3
Teste Rampa 4
Teste Rampa Final
Tiago Louco Teste
Tiago Louco Final
Final Primeira Partida
Final Segunda Partida