======= 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|}}