Grupo 01

  • Fábio Lelis
  • Leandro
  • Mateus Palhano
  • Wilson

Trabalho Prático I

Tarefa

Construção de um manipulador que deve fazer uma sequência pré-determinada de movimentos, usando como atuador uma caneta para traçar a rota. Esse percurso tem certa tolerância e deve ser feito em no máximo quatro minutos.

Construção

O grupo teve à disposição:

  • kit de peças LEGO
  • dois motores DC 6v
  • HandyBoard

Primeira versão

Devido a natureza do seu espaço de trabalho de 2 DoF, uma opção era um sistema de juntas prismáticas e de revolução e foi essa a escolha do grupo. Na primeira montagem optamos por um braço movimentado por engrenagens que se deslizava sobre uma estrutura fixa. Porém o o movimento não era previsível, o atrito com a base era um empecilho para que o manipulador fizesse o trajeto correto e uma nova estrutura foi experimentada.

Segunda versão

O braço foi alterado para uma superfície em forma de corrente dentada sobre a qual temos agora mais controle. A transmissão de torque para o braço e a redução de velocidade foram feitas usando engrenagens associadas que podem ser vistas no detalhe:

Manipulador em funcionamento durante testes: https://www.youtube.com/watch?v=H3Po8C97lOg

Software

O código foi modularizado de acordo com cada etapa do percurso. Combinando acionamento do motor de rotação por determinado tempo e do motor da junta prismática por determinados passos, de acordo com o objetivo de traçado. Por exemplo para levar o manipulador do ponto 2 ao ponto 3 é executado o trecho de código:

Resultado

O manipulador foi apresentado no dia 08/04/2015 e, dadas as dificuldades encontradas no desenvolvimento, pode-se dizer que o resultado foi satisfatório. O movimento foi aproximado do que era objetivado apresentando um desvio fora da tolerância na última etapa. Observações foram feitas pelo professor em relação à organização de fios e acabamento de um dos conectores.

Conclusão

Como já era esperado, o comportamento de um manipulador não é 100% previsível a partir do software, pois temos variáveis mecânicas e ambientais sobre as quais não temos controle, vista a não disponibilidade de sensores.

Trabalho Prático II

Tarefa

Construção de um robô móvel capaz de percorrer diferentes trajetórias e capaz de realizar três diferentes tarefas simultaneamente (se movimentar, tocar áudio e acender LED).

Decisões de implementação

O robô foi construído com um eixo diferencial nas rodas traseiras e com uma roda esférica dianteira. Algumas mudanças ainda devem ser feitas, a principal é a organização dos fios que ainda atrapalha na manipulação do robô. A outra é a utilização de cola quente, que foi feita de forma exagerada na nossa implementação.

Problemas na implementação

Um dos problemas enfrentados foi no centro de gravidade do robô, pois ele estava deslocado, longe do eixo das rodas matrizes o que acarretava em falta de tração e dificultava o controle do movimento ao girar. Além disso, a primeira roda esférica utilizada na implementação estava tendo dificuldade ao girar, o que também atrapalhava na rotação e movimentação do robô. A causa disso é que ela havia sido feita para girar com fluido e não á vazio. Este problema foi resolvido com a troca da roda esférica dianteira.

Robô em funcionamento (percurso triângulo) https://www.youtube.com/watch?v=iHWsMmYMXpM&feature=youtu.be

Robô em funcionamento (modo multitarefa) https://www.youtube.com/watch?v=0zVEeH7kxZc&feature=youtu.be

Trabalho Prático III

Tarefa

Utilizando-se da mesma base do robô utilizado no Trabalho Prático II, este deve agora identificar cores de blocos que serão posicionados a certa distância a sua frente. Os blocos podem ser vermelho, verde, azul, amarelo ou preto. Além disso deve percorrer um trajeto seguindo uma linha.

Decisões de implementação

Para o reconhecimento de cores foram utilizados desde o início três LEDs em cores vermelho, verde e azul e um sensor LDR que capta a luminosidade refletida sob incidência de cada um dos LEDs.

Já para que o robô seguisse sobre a linha optamos pelo sensor óptico-reflexivo TCRT5000, que consiste num LED que emite luz em comprimento infra-vermelho. A intensidade do reflexo dessa é captado por um foto-transistor e temos assim a localização do dispositivo (sobre a linha preta ou a arena branca).

Para evitar que a claridade externa interferisse na execução da tarefa, o menu , além das opções de descritas acima tem a de calibrar ambos os sensores e estabelecer o padrão de claridade e ruído do ambiente.

Robô lendo as três primeiras cores (utilizando outros objetos) https://www.youtube.com/watch?v=8zmwkqabK1Q

Robô percorrendo uma linha de teste. Mesmo comportamento notado no laboratório https://www.youtube.com/watch?v=Txcu8IODSzI

Experimentos

Medições de valores lidos pelo LDR em diferentes distâncias dele em relação ao bloco vermelho.

Distância Valor Desvio
3mm 134 0
1 cm 109 0
2 cm 78 0
3 cm 32 0
4 cm 17 0

O experimento de amostragem no tempo mostrou grande estabilidade na medição, sem variações relevantes. Além disso a ativação dos motores não alterou os valores.

Trabalho Prático IV

Tarefa

A fim de desenvolver técnicas de controle e tomadas de decisão já visando o trabalho final e a competição de Robôs Mineradores.

São quatro tarefas a serem desempenhadas nessa fase: * Alinhar com luzes polarizadas * Andar alinhado com a parede * Percorrer trajetórias controladas por odômetro * Tomada de decisão com base nos blocos coloridos

Desenvolvimento

A primeira missão era redesenhar o protótipo que nos representou bravamente no Trabalho Prático III. Robustez da estrutura, desenvoltura de movimentos e organização das conexões foram algumas das características que evoluíram em relação ao anterior. Nasce assim nossa base para a competição que, a partir de agora, recebe a alcunha de Joel.

Alinhamento com a luz

Utilizando de um sensor LDR diferencial combinado de filtros de onda, Joel é capaz de se posicionar virado para uma fonte de luz polarizada. Isso é feito dando um giro completo e fazendo a varredura de luminosidade diferencial e se posicionando pro valor máximo ou mínimo, dependendo de qual das duas fontes se quer alinhar.

Wall Following

O Wall Following (algoritmo de percurso alinhado à parede) foi implementado em lógica de 2 turnos (esquerda, direita) e 3 turnos (esquerda, direita, segue reto). Através de um sensor óptico reflexivo ele deveria andar se mantendo uma distância da parede. A execução não foi perfeita, dada aparente falhas com paralelismo de processos, o que causava a não obediência aos comandos de software, bug que será depurado para a versão final.

Odometria

Joel mostrou certa precisão ao percorrer caminhos pré-determinados como reta, triângulo e quadrado. O principal problema foi o sistemático deslizamento quando sobre uma área coberta com fita. Além disso, a implementação de giro deve ser melhorada e melhor controlada.

Tomada de Decisão

Agora devem ser tomadas diferentes decisões de acordo com o bloco encontrado pelo caminho. Dependendo da cor Joel deve dar um passo atrás e virar para esquerda ou direita,inverter o sentido ou parar o trajeto com um beep. Foi satisfatório o desempenho nessa tarefa com excessão dos equívocos causados pela falta de um senso de proximidade ideal. Com a futura inserção desse, ficará mais confiável o encontro com um bloco e para daí ser avaliada sua cor e tomada uma decisão.

Conclusão e Próximos Passos

Mais uma vez muitas dificuldades foram encontradas na comunicação “sistema-mundo real”. Sensores nos dão uma base de percepção do ambiente, mas ela invariavelmente está aquém do que seria o ideal. Isso expõe o comportamento autônomo a incertezas que devem ser contornadas com técnicas de controle, filtragem e calibração. Agora cabe ao grupo escolher, combinar e implementar essas técnicas para que tenhamos um dispositivo inteligente em sua versão definitiva.

Torneio

Tarefa

Preparar o robô para participar da competição. Definimos como objetivo pegar apenas os blocos sobre a bancada, por isso ignoramos todos os demais blocos. O Robô seguiria os seguintes passos: alinhar com a luz polarizada, andar ate a Bancada, pegar o bloco e voltar. Como o robô já fazia as tarefas de seguir linha, se orientar e identificar as cores, era necessário desenvolver um sistema de captura dos blocos e programar rotinas para executar estas tarefas em sequência. Também era necessário aumentar a velocidade do Robô, o que significava rever todo o conjunto de reduções.

Decisões de implementação

Desde o primeiro TP de robôs moveis, o nosso robô apresentava um vão, que inicialmente servia para armazenar a caneta. Coincidentemente este vão era um pouco maior do que os blocos que são utilizados na disciplina, por tanto decidimos que armazenaríamos um bloco por vez neste espaço e retornaríamos a base. Para empurrar o bloco para dentro e posteriormente prende-lo, construímos um “braço” na parte superior dianteira do robô, em uma altura suficiente para que ele pudesse se posicionar sobre a bancada e puxar o bloco para o “chão”. Notamos que ao puxar o bloco ele talvez já caísse no vão, desde que tanto o movimento para trás do robô, quanto o movimento de abaixar o braço fossem rápidos o suficientes. Se o bloco ficasse no com o braço abaixado, ele ficava preso mesmo se o robô fosse levantado. Abaixo 3 videos de testes que realizamos:

https://www.youtube.com/watch?v=srWxv69Cd7k

https://www.youtube.com/watch?v=_p5XvQqwk_w

https://www.youtube.com/watch?v=_p5XvQqwk_w

Após pegar o bloco, o robô decide se ele guarda o bloco, no caso de ser um bloco colorido, ou se ele é descartado, no caso do bloco Preto.

Apresentação

Abaixo os slides da apresentação usada no torneio:

Conclusão

Durante o Torneio, os sensores de seguir linha não funcionaram como o esperado, por isso não chegávamos na posição para pegar o bloco.Isso deve ter ocorrido por um mal contato ou curto circuito talvez, o que nos fez recorrer a tática de, depois de se alinhar com a luz polarizada, andar em linha reta até a mesa. Mesmo assim não conseguimos chegar com o alinhamento necessário para coletar o bloco, já que o nosso braço tinha um tamanho pequeno que dava pouca margem de erro para executar a tarefa.

Devido a esta falta de navegação pela linha, aconteceu do robô ficar perdido em campo, ocorrendo a colisão dele com as paredes, porem sem causar danos severos. Estas colisões poderiam ser evitadas com sensores de toque.

A única vez que ele coletou um bloco colorido ele o descartou porque como iriamos tentar pegar só o bloco azul, desconsideramos o testes com as outras cores e esquecemos que talvez ele pudesse pegar um por engano. Após esta partida concertamos o código para o robô pegar qualquer bloco colorido e descartar apenas o preto. Na vez que ele pegou um bloco preto ele o descartou corretamente.

Por fim, nosso robô não quebrou de forma a imobiliza-lo ou impedi-lo de se locomover de forma adequada, sempre se orientou corretamente e de forma rápida (devido ao seu simples algorítimo de alinhamento, que era girar até atingir o valor de luz calibrado) e sempre saiu de sua base para tentar pegar os blocos, o que não nos rendeu nenhuma pontuação negativa. Isso foi o suficiente para terminar a primeira fase em primeiro lugar com 0 pontos, já que todos os outros grupos tiveram problemas com seus robôs.

Na final melhor de 3, o robô repetiu seu desempenho e novamente não conseguiu pegar nenhum bloco. Como o outro grupo também não pontuou, a competição terminou empatada.

Minha percepção é que se nos tivéssemos nos dedicado um pouco mais poderíamos ter desenvolvido um robô mais funcional e que conseguiria cumprir os objetivos propostos.

Código Utilizado: robotica_tpfinal_-_23-06.zip

cursos/introrobotica/2015-1/grupo01/index.txt · Última modificação: 2015/06/30 02:14 por introrobotica-grupo1