Tabela de conteúdos

Objetivo

Neste trabalho, o robô deveria cumprir uma série de tarefas, que juntas tornavam necessária a utilização de todo o conhecimento adquirido durante o semestre.
As tarefas que o robô deveria realizar foram:

  1. Ser capaz de ser calibrado em 60 segundos ou menos
  2. Entrar em modo de espera após a calibração
  3. Não queimar a largada
  4. Iniciar o cumprimento da tarefa após acesa a luz de início
  5. Ser capaz de se orientar segundo a luz polarizada
  6. Navegar autonomamente pelo campo
  7. Coletar os blocos que se encontram dispersos no campo
  8. Carregar o bloco até a base (ou mantê-lo preso ao robô)
  9. Desligar todos os atuadores ao término de 60 segundos

Além do cumprimento de todas as tarefas acima, deveríamos construir um robô que antendesse aos seguintes intes relacionados à organização estrutural:

  1. Utilizar apenas os componentes fornecidos (e aprovados nas regras)
  2. Não apresentar fios soltos e nem soldas expostas
  3. Ter o comprimento dos fios bem dimensionado
  4. Não possuir partes soltas
  5. Possuir estrutura rígida
  6. Caber inicialmente em um cubo de 30cm ou menos de aresta
  7. Possuir todas as partes conectadas por peças Lego
  8. Não soltar peças intencionalmente
  9. Não danificar o robô oponente
  10. Não ser perigoso de qualquer maneira

Estrutura

Neste trabalho, realizamos algumas modificações estruturais para melhor atender aos objetivos citados acima. A principal mudança foi feita na base, pois a base do nosso robô anterior era muito pequena, impossibilitando o acréscimo de uma garra para segurar os blocos.
Dessa forma, nossa primeira modificação foi aumentar a base e organizar melhor a posição de cada elemento.

Em seguida, acrescentamos todos os sensores utilizados no trabalho anterior, e recolocamos o par LDR + LED para possibilitar a identificação da cor dos blocos. Sendo assim, nosso robô possui o seguinte conjunto de sensores:

Um LDR diferencial, responsável por identificar uma maior variação na intensidade de luz quando o robô alinhava-se com as lâmpadas polarizadas, permitindo assim, localizá-las no campo.

Dois sensores break beam nas rodas, para que um pudéssemos projetar um controle de velocidade. Utilizando o break beam, foi possível controlar o número de rotações tanto da roda esquerda quanto da roda direita, nos permitindo modificar a potência de cada motor para controlar a velocidade e a direção do robô, bem como a distância percorrida

Dois sensores LDR com a função de realizar a identificação da linha preta no campo para que o robô pudesse segui-la.

Fixamos o LED RGB e o LDR na parte frontal e inferior do robô, próximo a um dos LDR detectores de linha, fazendo com que tanto os LED quanto o LDR ficassem direcionados para o centro de cada bloco, permitindo a identificação de obstáculo e a cor do mesmo.

Por fim, adicionamos um LDR na parte inferior do robô, com o simples objetivo de detectar a grande variação de luz quando a luz de início da partida fosse acesa, indicando ao robô a permissão para iniciar suas ações.

Ao final do trabalho, obtivemos uma estrutura rígida, dentro dos limites estabelecidos e que atendeu bem às necessidades de cada tarefa.


Software

No software não tivemos muitas adições dado que a maior parte das tarefas foram feitas nos trabalhos anteriores. De novidade neste trabalho temos o modo de espera, as funções de controle da garra e as duas estratégias que são basicamente pra qual lado da mesa a busca deve ser feita.

Para implementar as estratégias fizemos pequenas modificações na função de seguir linha, para que a seguisse até encontrar um bloco, onde verificamos a sua cor e caso seja preto o empurramos para lateral da mesa dando sequência na busca. Encontrado um bloco válido basta retornar com ele pra base.

Por último, melhoramos nossas opções para calibrar os parâmetros já que não sabíamos como seria no dia da competição e mudamos o funcionamento da multitarefa, utilizada para parar o robô após os 60 segundos, agora todo o processo ocorre em uma thread e o fluxo principal a encerra após o fim do tempo e desliga todos os atuadores, não havendo assim possibilidade de ultrapassar o tempo determinado.


Dificuldades

As únicas dificuldades enfrentadas pelo nosso grupo foram relacionadas a estrutura. A nossa necessidade de adicionar uma garra na estrutura, para pegar os blocos, resultou na obrigação de aumentar a base interna da plataforma. Tivemos que refletir bastante sobre os melhores lugares para colocar os sensores e aturadores, e por fim, conseguimos uma estrutura robusta e com espaços otimizados. Construir a garra também foi um desafiador, pois não dispúnhamos de tantas peças de lego sobrando, e as garras que montávamos não ficavam tão seguras. No fim, decidimos montar uma garra única, que comprime o bloco em uma “parede” vertical de um lado. Assim, o bloco ficava mais firme e a estrutura mais robusta.


Testes

Inúmeros testes foram feitos no decorrer desse trabalho (nem todos filmados). Muitos deles foram testes relacionados a realização de alguma função separadamente, dentre todas aquelas que devem ser cumpridas para completar o objetivo proposto desse trabalho prático.

Ou seja, devido a mudança na estrutura do robo e reposicionamento de sensores, precisamos testar, por exemplo, se o robo se alinharia a luz polarizada como feito no trabalho prático passado, tal teste está representado no vídeo 1, abaixo:

Além disso, testes acerca da sua navegação em linha, reconhecimento de bloco e identificação de cores também foram realizados separadamente. Nem sempre o resultado obtido foi o esperado, mas ao fim, o robo identificava o obstáculo (cubo - “bomba”) de forma satisfatória.

O robô realizando todas as operações em conjunto: dar a laragada após a luz inferior ser acesa, alinhar-se a luz polarizada, seguir a linha preta até identificar um bloco, estão representadas nos vídeos abaixo. Importante ressaltar que o nosso Robo, Adam, não consegue identificar a cor preta e a distinguir das demais!