======= 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. {{:cursos:introrobotica:2015-1:grupo01:tracado.png|}} ===== 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: {{:cursos:introrobotica:2015-1:grupo01:detalhe_braco_menor.jpg|}} {{:cursos:introrobotica:2015-1:grupo01:robo_panoramica.jpg|}} **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: {{:cursos:introrobotica:2015-1:grupo01:codigo.png|}} ===== 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. {{:cursos:introrobotica:2015-1:grupo01:conector_menor.jpg|}} ===== 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. {{:cursos:introrobotica:2015-1:grupo01:tp2-1.png|}} {{:cursos:introrobotica:2015-1:grupo01:tp2-2.png|}} ===== 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: {{:cursos:introrobotica:2015-1:grupo01:slide2.jpg|}} {{:cursos:introrobotica:2015-1:grupo01:slide3.jpg|}} {{:cursos:introrobotica:2015-1:grupo01:slide4.jpg|}} {{:cursos:introrobotica:2015-1:grupo01:slide5.jpg|}} {{:cursos:introrobotica:2015-1:grupo01:slide6.jpg|}} ===== 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: {{:cursos:introrobotica:2015-1:grupo01:robotica_tpfinal_-_23-06.zip|}}