Ferramentas do usuário

Ferramentas do site


cursos:introrobotica:2019-1:grupo07:index

ESSA PÁGINA CONTÉM A DOCUMENTAÇÃO DE TODOS OS TRABALHOS PRÁTICOS JÁ APRESENTADOS PELO GRUPO 7!

########################################################################################

TRABALHO PRÁTICO 2

Robô Tank Sensor Presença e Cor

Código, programação e sensores Sobre o código utilizado no robô, separamos ele em 5 partes, sendo cada parte as tarefas de fazer uma reta e voltar, fazer um triângulo e fazer um quadrado. Como já tivemos o primeiro contato, refinamos um pouco mais o código dessa vez e utilizamos funções para que não houvesse tanta repetição de código desnecessária, além de deixar mais legível e fácil de dar a manutenção.. As entradas foram feitas a partir dos botões de direção e seleção perto da tela do Arduino, exatamente como foi pedido na especificação e no TP passado. Como andar em linha reta, girar o robô num certo ângulo e fazer-lo voltar a posição eram tarefas semelhantes ao do TP passado, vamos falar sobre os sensores:

Problemas: Devido a uma má interpretação do grupo na leitura da especificação do TP, o sensor de cores utilizando o LDR foi montado de maneira errada, uma vez que a maneira certa era para os LEDs iluminarem o obstáculo e, a partir da luz refletida, o LDR identificaria a cor e iria executar um comando específico dependendo da cor do objeto encontrado. Do jeito que o grupo montou o sensor, achamos que era para que o sensor sozinho identificasse a cor, sem precisar da iluminação dos LED’s e, depois de identificada, ele acenderia o LED da respectiva cor reconhecida, onde estão localizados na outra parte do veículo. Devido a esse problema de interpretação de texto, o robô não conseguiu realizar as tarefas desejadas na apresentação do TP2, mesmo com o código, em tese, funcionando, tendo todos os requisitos de calibração, reconhecimento de reflexão total (branco) e absorção total (preto). Estamos remontando os sensores para o próximo trabalho, uma vez que precisaremos dele funcionando em perfeito estado.

Já o sensor TCRT5000 funcionou perfeitamente, e adaptando o código para ele não reconhecer a cor, fizemos ele detectar obstáculos e girar 90 graus sempre que encontrava algo na frente do robô, assim, vendo sua funcionalidade.

Estrutura e Montagem

Sobre a estrutura e montagem, pensamos fora da caixinha e decidimos não utilizar rodas, e sim as correias, como se fosse um tanque de guerra. Achamos que ficaria mais chamativo, além de parecer mais simples para realizar curvas fechadas e ser um desafio a mais na montagem. Utilizamos uma base bem baixa, o suficiente para encaixar as engrenagens e os motores, e por cima tampamos para ter espaço e poder colocar/encaixar todos os sensores junto do Arduino.

Um problema inesperado que encontramos quando testamos o robô no final foi o fato dele não ter amortecedor (nem borracha entre ele e o chão para amenizar o atrito). Isso fazia com que o arduino chacoalhava muito, causando mau contato na ligação dele e desligando toda hora. Um jeito de última hora que pensamos em resolver foi utilizando esponjinhas de isopor para acomodar bem o arduino e amenizar o atrito, apesar de ter funcionado muito bem, foi uma solução de última hora,e já estamos trabalhando para consertar esse erro e achar outra maneira de estabilizar o Arduino.

Tarefas

Como descrito anteriormente, como interpretamos mal a parte dos LED's do Trabalho Prático, não conseguimos executar a tarefa 2 e a parte da tarefa 3 que envolve a identificação das cores. A tarefa 1 foi executada com êxito, possuindo um pequeno desvio no ângulo ao realizar as curvas. Isso deve-se ao fato de que foi necessário uma diferença de potência de entrada nos motores que inserimos devido a uma das reduções de velocidade estar com mais atrito que a outra. Como não conseguimos resolver esse problema mecânico por completo, foi utilizado uma potência um pouco maior para compensar a perda de energia.

###############################################################################################################

TRABALHO PRÁTICO 3

Introdução

Robôs móveis possuem a capacidade de se moverem ao redor de seus ambientes e não estão fixados a uma localização física. Por conta dessa maior versatilidade, muitas destas aplicações, frequentemente, demandam um alto grau de precisão e exatidão dos robôs durante a execução das tarefas atribuídas.Estas características são obtidas, geralmente, através do uso de controles realimentados.

Objetivo: Este TP tem como objetivo familiarizar com os problemas de localização, desenvolvimento de odometria básica e técnicas de controle e navegação.

O Trabalho Prático foi dividido em três partes: Localização: O robô deve identificar as lâmpadas polarizadas dispostas nas extremidades do campo por meio de um LDR diferencial, alinhando em direção à luz mais próxima. O sensor LDR diferencial consiste na união de dois LDR simples cobertos com filtros polarizadores defasados de 90°, de forma que, quando expostos a uma fonte luz polarizada, tendam ao valor máximo ou mínimo, dependendo da orientação da polarização da fonte. Foi construído uma estrutura mais alta com os sensores lado a lado, divididos por um obstáculo com o objetivo de dividir parcialmente as luzes provenientes de regiões situadas à direita e esquerda da frente do robô. O código verificava o valor de maior resistência dos sensores, ou seja, aquele que recebia mais luz, enquanto o robô faz um giro de 360º em torno do seu próprio eixo, e quando percebe a maior resistência, salva o ângulo em relação à posição inicial, assim, pela odometria, ele se virava para a fonte mais intensa que achava e ia em direção , até chegar o mais próximo possível dela e, assim, dentro da “área” do campo.

Odometria: Utilizando sensores break-beam como um tipo de shaft-encoders, foi possível controlar a velocidade através da Velocidade Angular de rotação. O sensor foi colocado para contar os furos de uma engrenagem intermediária à redução. Dessa forma foi calculado a proporção de dentes e foi encontrado o número de 295 sinais por volta completa do robô em torno do seu próprio eixo e 43 sinais para que o robô deslocasse 10cm na vida real. Após esse cálculo, foi adicionado ao menu do arduíno as opções de realizar os desenhos especificados na descrição do trabalho (Reta, Quadrado, Triângulo) em dimensões variadas. Acoplado a uma das engrenagens do motor, instalamos um sensor break-bean, com ele, realizamos testes previamente para determinar um número base e trabalhar em cima dele. Não foi possível a implementação do controle PD, como solicitado no enunciado do trabalho, uma vez que sua implementação é complexa, demorada e demanda de muitos mais testes prévios do que os que foram realizados, mas existiu um controle atuando em cima da distância que o robô andava, a partir dela ele calculava o número de voltas necessárias para atingir a distância/ângulo e, assim, se movimentava e localizava.

Navegação: Foi adicionado dois sensores LDR na parte frontal inferior do robô, apontados para o chão, para identificar as linhas pretas e orientar o robô através das mesmas. Foi implementada uma máquina de estados na qual teriam 4 estados, no caso, 4 possibilidades de leituras dos sensores, um mais pra esquerda e um mais pra direita do centro:

Ambos sensores estarem na parte branca do campo;
O sensor esquerdo na parte branca e o direito nas linhas pretas;
O sensor direito na parte branca e o esquerdo nas linhas pretas;
Ambos sensores estarem nas linhas pretas do campo. 

No caso dos 3 primeiros estados, era indiferente de qual estado veio para este, uma vez que quando os dois sensores estiverem lendo a parte branca, devem ir reto até achar uma linha e seguir elas, e quando as leituras estiverem diferentes, ele só tem que trocar o lado que ele está indo e alinhar com a parte preta, seguindo ela como orientação e direção. Já no quarto estado, quando ambos estiverem lendo a linha preta, quer dizer que, ou ele acabou de encontrar a linha (vindo do primeiro estado pra esse), ou ele chegou em um cruzamento e precisa saber para qual lado virar, uma vez que ele já vai ter começado a curva, então é fundamental saber de qual estado ele veio para, assim, determinar a direção da curva e se ele não vai sair andando em direções erradas.

Resultados: Ao executar as tarefas de Localização e dos movimentos utilizando a Odometria antes da apresentação, obtivemos sucesso, onde as figuras geométricas ficaram perfeitamente executadas. Minutos antes da apresentação, as pilhas descarregam e, como o controle não foi implementado com malha fechada, ao realizar as mesmas atividades com o arduíno energizado na fonte, tivemos um resultado diferente, não conseguindo realizar as tarefas com exatidão. A parte da navegação foi testada separada do robô e fora do campo utilizado na apresentação do trabalho porque um dos sensores queimou na hora da montagem e somente tivemos tempo para testar de fato um dia antes da apresentação. Dessa forma, não conseguimos identificar o problema a tempo e a atividade não foi executada.

Conclusão: Como dito acima, toda a parte de sensores, odometria e código foi feita em paralelo com a montagem e manutenção do robô, e acabamos enfrentando problemas que não imaginávamos que poderiam acontecer ao juntar os dois. O comportamento do Hardware foi imprevisto e isso afetou completamente o resultado final do nosso trabalho, uma vez que o controle atuava na distância, não media a velocidade e nossas pilhas foram drenadas, o que obrigou a gente a fazer a apresentação na fonte, dando uma diferença significativa para a odometria e jogando todos nossos testes para um número base para vala. Apesar do código funcionar muito bem, o controle das funções pela tela do arduino estava com problemas, o que atrapalhou muito o input da distância desejada para realização dos movimentos. Outro fator problemático que enfrentamos foi o desenvolvimento separado do arduino e do robô e a pouca quantidade de testes que realizamos, por fatores pessoais de cada integrante do grupo, era inviável o desenvolvimento e realização de testes junto do arduino e do robô, mas estamos trabalhando nos sensores e nas partes que não funcionaram bem para ajustar e consertar até a competição final.

########################################################################################

TRABALHO PRÁTICO 4

Robô TANK e a competição

Introdução: A proposta do trabalho final foi a implementação de tudo que foi aprendido ao longo da disciplina em uma competição de robôs, onde o tema foi limpeza urbana, na qual os robôs deveriam, através de um sistema de pontuação de cor nos blocos e esferas, coletar os mesmos, de acordo com a pontuação deles e, aquele que fizer mais pontos, seria o vencedor. Como apresentação antes da competição, foi avaliado os requisitos do robô para a competição e documentação. A competição em si não foi avaliativa, uma vez que era uma apresentação do que foi aprendido na disciplina para o público, meio que uma propaganda.

Código, programação e sensores: Sobre o código utilizado no robô, de novidade e que não foi abordado anteriormente, é a estratégia usada na competição, uma vez que o controle, localização e odometria já haviam sido implementados. Pensamos em seguir uma das linhas na arena e coletar todos os blocos não preto que encontrarmos pelo caminho, sem levar para base, vai ficar explícito na parte de estrutura de montagem.

Estrutura e Montagem:

Sobre a estrutura e montagem, expandimos a base do TANK feita no trabalho passado, e isso permitiu que o robô pudesse ter mais espaço, tanto para acomodar a garra dentro dele (quando ela é erguida para dentro do robô e solta o bloco) quanto para passar toda a fiação com segurança, sem chance de se enroscarem nas engrenagens e sem ficarem expostos. Segue um vídeo sobre como foi essa estrutura e ela em funcionamento.

Concluindo, a matéria tem uma carga horária extra classe surreal, e o trabalho de testar, montar e programar o robô parece um loop infinito, mas é gratificante ver o funcionamento das coisas e como os trabalhos vão escalando de maneira gradativa para uma apresentação final. Infelizmente, o robô apresentou alguns defeitos ao longo de sua execução, mas acontece. No mais, o TANK foi um projeto ambicioso e muito grande para o espaço de tempo, mas conquistou toda a torcida da competição e mostrou que tem mais coisas do que ganhar na matéria.

cursos/introrobotica/2019-1/grupo07/index.txt · Última modificação: por 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki