Ferramentas do usuário

Ferramentas do site


cursos:introrobotica:2016-1:grupo03:projeto_final

Projeto Final - Robô Funcional

1. Introdução

Este trabalho consiste na junção das tarefas realizadas nos trabalhos anteriores, incluindo alguns incrementos com objetivo guiar o desenvolvimento para o para a prévia da competição “Robôs Caça-Aedes”. Preservando as funcionalidades de utilização de sensores e atuadores para formação de uma malha fechada de controle de velocidade, além de realizar processamento de sinais para localização do robô e para identificação de blocos.

As técnicas de odometría desenvolvidas no trabalho prático 4 foram mantidas, para cumprir as mesmas tarefas de locomoção em malha fechada. Odometría consiste no uso de sensores de movimento para estimar a mudança de posição enquanto as tarefas de locomoção são executadas. O uso da odometria permite que os robôs estimem sua posição em relação a uma posição inicial. Para que a odometria seja realizada efetivamente, é preciso que, dentre os aspectos básicos, haja rápida e precisa aquisição de dados, controle e calibração dos sensores.

A principal diferença entre este trabalho e os anteriores, é que além de reconhecer os blocos da arena, a cor dos mesmos, orientação segundo as luzes polarizadas, ele demanda a captura dos blocos. Por isto outros mecanismos foram introduzidos ao robô, que serão detalhados neste documento.

2. Objetivos

O objetivo deste projeto é a contrução de um robô móvel, totalmente autônomo para realização de algumas tarefas específicas e tendo como funcionalidades básicas:

  • Utilizar diversas capacidades sensoriais;
  • Controlar corretamente velocidade, posição e orientação;
  • Navegar em um ambiente semi-estruturado;
  • Coletar apenas os objetos de interesse;
  • Executar eficientemente a missão a partir de planos/estratégias.

Mais especificamente o robô precisará desempenhar 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ô);
  • Desligar todos os atuadores ao término de 60 segundos.

3. Metodologia

Para iniciar a tarefa o robô deve permanecer em modo de espera até que uma luz de partida, posicionada na pista seja acesa e apagada. Para esse controle utilizamos um LDR simples, na base do robo que capta a luminosidade. É importante ressaltar que no código é necessário configurar para que somente valores de alta intensidade (que só serão alcançados com o acendimento da luz de partida), quando captados sejam interpretados como sinal de início, pois caso contrário, o robô poderá “queimar a largada” devido a uma luz externa. Para isso, a leitura do LDR deve retornar um valor inferior a 20. Entretanto o próprio posicionamento do sensor no robô (parte de baixo) auxilia nesse controle, conforme imagem abaixo:

Para se orientar na arena, o robô faz um reconhecimento das luzes polarizadas, sendo capaz de decidir em qual lado ele iniciou as tarefas. Como as fontes de luz apresentam polarizações distintas, é possível, por meio do uso de filtros polarizadores em conjunto com um LDR diferencial, identificar a fonte de luz mais próxima.

Um dos LDR que compõem o LDR diferencial é associado a uma lente polarizadora com polarização no mesmo sentido de uma das fontes, enquanto o outro é associado a uma lente polarizadora com polarização no sentido da outra fonte. Desta forma ao se apontar para uma das duas fontes, é possível distinguir qual dos LDR estão recebendo mais luminosidade e, consequentemente, qual a fonte mais próxima.

O algorítimo foi implementado seguindo a seguinte lógica:

  • Dar um giro para calibrar o sensor, ou seja, obter os valores máximo e mínimo obtidos durante o giro. Dependendo de quão grande o valor máximo ou de quão pequeno o menor, decidimos em qual lado estamos, e se devemos procurar pelo máximo encontrado ou pelo mínimo.
  • No segundo giro, o robô faz uma comparação entre os valores atuais, com um dos valores encontrados na primeira etapa. A velocidade do giro e diretamente proporcional à distância entre o valor atual e o desejado. Quando um valor próximo o suficiente for encontrado, o robô pausa o giro e deve estar de frente à lampada e de costas para a arena.

Os shaft-encoders permanecem no robô, afim de monitorar quão rápido está o deslocamento do robô. Para a construção dos shaft-encoders foram utilizadas chaves ópticas em conjunto com uma peça circular do Kit Lego Dacta que possui 6 furos. Ao encaixar essa peça no eixo das rodas e colocar as chaves ópticas de forma a essa peça passar pelo meio do emissor e receptor da chave, foi possível ler quando havia a passagem de um buraco. Deste modo, foi possível determinar o número de buracos que foram passados, e associando essa medida com o tempo foi possível obter a velocidade dos motores.

Ao obter as medidas de velocidade foi possível realizar a implementação de um controlador PD. A malha de controle desenvolvida segue a figura esquemática da Introdução.

O controlador proporcional foi necessário para ampliar o sinal de erro de forma a obter sinais de potência para o motor, que consiste no sistema a ser controlado. Desta forma este controlador pôde reduzir o erro em regime estacionário. O controlador derivativo foi utilizado de forma a reduzir o overshoot do sinal de velocidade, obtendo em paralelo a redução da oscilação do sinal.

O erro é calculado pela diferença do sinal de velocidade desejado (referência) e o sinal de velocidade obtido (saída). Para realização do controlador diferencial, foi mantida a medida anterior de erro. O erro e a diferença do erro atual e erro anterior são multiplicados pela constante proporcional e derivativa respectivamente. Desta forma obtém-se a potência (esforço de controle) que tentará fazer com que o motor atinja o desempenho necessário para atingir a velocidade desejada.

Utilizando a propriedade multitarefa do Interactive C, o deslocamento do robô, seguindo as linhas pretas foi feita em paralelo com a busca por um bloco. Para seguir as linhas pretas, usamos três sensores opticos-reflexivos, idealmente o sensor no centro do robô tem que se manter sempre em cima da linha preta. Os sensores laterais trabalham na tomada de decisão para fazer curvas e reposicionar o robô na linha preta, caso ele se perca.

Para a busca foi utilizado um LDR, que, quanto mais próximo do bloco, menor é sua leitura. Sendo assim, um bloco é identificado ao ultrapassar um limiar definido por calibração.

Como tentativa de eliminar a influência das fontes de luz do campo e como tentativa de capturar o bloco, foi desenvolvida uma estrutura em volta de onde se encontram o LRD e os LEDs utilizados na identificação de cores.

Os sensores foram calibrados para reconhecer o blocos, suficientemente perto, para que um braço mecânico possa comprimí-los na parede de sua estrutura, e assim prendendo-os. O braço mecânico possui um motor independente dos motores de locomoção, e foi o último mecanismo introduzido no projeto. Quando os blocos ficam suficientemente perto para que os sensores o reconheçam, o mesmo já está dentro desta “caixa” na parte da frente do robô. Com isto o braço mecânico se fecha e comprime o bloco dentro da caixa, possibilitando que o mesmo seja arrastado até a base ou fique preso à estrutura.

4. Menu

Para a competição o menu irá conter apenas uma opção. A opção da competição irá ficar em espera, até que a luz do solo se acenda. Ao acender as luzes o robô irá prosseguir de forma autônoma afim de satisfazer os requisitos da competição.

5. Resultados

Montagem:

Em comparação ao Trabalho Prático 4, o robô atual dispõe de uma cavidade que captura o bloco na pista. Além disso ele possui “braço” ligado a um motor que atua como uma prensa. Ele é ativado para prender o bloco na cavidade. Após exevucação de testes e como pode ser visto no vídeo, ambas as estruturas atingem seu objetivo.

A utilização do sensor LDR na parte de baixo do robô, também cumpriu sua função e este conseguiu manter-se em standby e iniciar a tarefa com o sinal de luz.

As seguintes imagens descrevem a montagem final do robô:

6. Conclusão

Com esse trabalho foi possível colocar em prática o conjunto de conhecimentos e recursos implementados nos demais trabalhos. Além disso, nos permitiu aprimorar os controles de direção, que são recursos fundamentais para a execução das tarefas do trabalho.

Um outro ponto importante foi a possibilidade da elaboração e estudo de estratégias para a competição, que demandará controles diferenciados para a captura dos blocos.

7. Video

cursos/introrobotica/2016-1/grupo03/projeto_final.txt · Última modificação: por 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki