Grupo 1 - T.E.D.E

Sobre o Tede:
“O mito, o gênio, o papa novinhas, o pedreiro.” - BBC News
“Sabendo que era impossível, Tede foi lá e fez…” - The New York Times
“Até Chuck Norris chora ao ouvir seu nome…” - El Mundo
Tede tirando onda:

Uma fã tirando fotos para o Tede:

Integrantes

Tiago Ruas - Computação.
Elias Soares - Computação.
David Henrique - Automação.
Eugênio Resende - MatComp.

Descrição

  • O trabalho consiste em montar um robô com a Handyboard e kit lego que utilize no máximo 2 motores e que faça um caminho pré-determinado desenhando sempre dentro dos limites permitidos.
  • O robô é da classificação RP com a seguinte geometria e workspace:

  • Decisões de implementação em Interactive C:
    • A mais importante decisão foi a de dividir processos para cada motor, facilitando o entendimento individual.
    • Além disso, foi percebido um padrão de repetição de ligar motor, esperar, desligar e esperar um tempo de sincronia para o próximo caminho, logo essa tarefa foi resumida em uma função void OnSleepOffSync(int m, int power,float time,float sync).
    • Código Fonte : tede1-codigofonte.zip

Imagens

  • Modularização: Braço, Base, Corpo

modulos.jpg

  • Menu - Controlado pelo Knob
    • M0 e M1 finos significa dar uma potência de + ou - 20 para o motor de acordo com o botão pressionado. Serve para testes manuais ou posicionar o robô em um local desejado.

  • Detalhe da Garra:
    • Dois pregadores para acomodar diferentes canetas para testes

  • Detalhes de Reduções
    • Base: 40:1 (Worm) * 1:1 * 40:8 = 40:1 * 5:1 = 200:1
    • Corpo: 24:8 * 24:8 = 3:1 * 3:1 = 9:1

  • Robô montado:

  • Resultado de Testes:

Videos

Desafios

  • O controle dos motores é baseado apenas nas reduções feitas por engrenagens, nível de potência dado ao motor e tempo de funcionamento, o que dificulta os testes, que acabam sendo de aproximações por tentativa e erro.
  • A autonomia da bateria é um fator crucial, pois como o controle dos motores é baseado em potencia e tempo, se a potencia diminui, o cálculo dos tempos já não é o mesmo.
  • O balanceamento se torna complicado ao ter um braço móvel, provocando, por exemplo, mais atrito entre o papel e caneta quando o braço está estendido, ou a desconexão entre o papel e a caneta quando está retraído. Tais considerações devem ser levadas em conta para escolher o nível em que a caneta ficará.
    Para tal, foi convencionado que deve-se retrair ao máximo o braço e escolher uma altura adequada para a caneta poder escrever. Isso acaba causando mais atrito na extensão, mas evita a desconexão na retração.
  • Utilizar a versão de 4 páginas A4 e juntá-las para formar uma página A2 pode parecer simples, mas um pequeno desvio entre páginas pode causar o travamento de uma caneta, alterando o resultado.
  • A folga entre os vários eixos nas reduções da base podem causar pequenas diferenças de resultados. Para minimizar esse efeito, é feito uma “média” dessa folga ao redor do ponto inicial.

Versões e Testes Antigos

Trabalho Prático 2

Descrição e Decisões de Projeto

  • Descrição:
    • Robô terrestre diferencial de 3 rodas, sendo 2 motorizadas independentes e uma esférica não motorizada para dar estabilidade.
  • Calibragem:
    • Não era um requisito, mas achamos que a presença da calibragem ajudaria na execuções de testes e adaptações do robô ao terreno, bateria e outras mudanças, tirando assim a necessidade de recompilar toda vez que tivéssemos que mudar a potência e consequentemente os tempos relativos a um giro de 90 graus ou de andar 30 cm por exemplo.
    • É acessada através de um item de menu, em que você escolhe a potência desejada, então por 3 segundos ele anda para frente, e te pede para retornar através do knob quantos cm ele andou, e depois o mesmo acontece em relação ao ângulo, fazendo um giro de duração de 3 segundos, e te pedindo para retornar através do knob quantos graus ele girou.
    • Os dados coletados alimentam variáveis persistentes que são utilizadas para fazer relações de equivalência para funções como anda(x) e gira(y), sendo x o valor em cm, e y o valor em graus.
  • Avaliação Experimental:
    • Para a avaliação experimental, foi realizado uma calibragem para uma das potências disponíveis (20,40,60,80 e 100) e logo após essa calibragem, foram realizados 5 testes de translação( objetivo de desenhar uma linha de 20cm) e 5 testes de rotação( objetivo de rotacionar 90º).
    • Os testes foram feitos em uma única cartolina (clique para abrir a imagem em um tamanho maior):
    • Resultados (clique para abrir a imagem em um tamanho maior) :
  • Multitarefa:
    • Leds: Foi utilizado os pinos SPI como recomendado no manual da Handyboard.Foi utilizado apenas comandos poke no endereço referente aos pinos SPI, e valores decritos na imagem são valores que acendem apenas 1 led de cada vez. A conexão foi feita da seguinte maneira descrita na imagem:(foi utilizado um cabo USB(4 fios))
      • Não tivemos acesso ao LED azul, e utilizamos um branco em seu lugar.
      • Os duração de cada acendimento foi programada para ser de 1 segundo, e durante a tarefa delimitada por 20 segundos de atividade é possível ver 20 acendimentos =)
    • Música: Lembra daqueles antigos compositores de ringtone em texto da Nokia? Eles utilizam a linguagem RTTTL (Ring Tone Text Transfer Language) e vários toques podem ser encontrados na internet. Como a linguagem é simples, apenas pesquisando como ela funciona foi possível criar um pequeno tradutor em C que lê o formato RTTTL e o traduz para o esquema tone(f,d) e sleep(d) que precisamos: (Utilizamos Voodoo Child do Jimi Hendrix)
    • Movimento: Para o movimento, apenas mandamos o robo girar de um lado a outro, simulando uma dança =)
    • Importante: Ao matar os processos após 20 segundos, um tom poderia continuar ativo, um led acesso, ou o motor continuar ativo, e portanto o tratamento de desligar corretamente algum resíduo é realizado.

Imagens

  • Vista detalhada superior:
  • Vista detalhada inferior:
  • Mudanças (Já que o professor recomendou usar apenas os legos, o segurador foi atualizado para uma versão em que a gravidade nos ajuda) =)
  • LEDs no lego, soldas e proteção com fita isolante:
  • T.E.D.E 2 montado sem a Handyboard:
  • T.E.D.E 2 montado com a Handyboard e LEDs (Visto de cima):
  • Esquema do Menu:

Vídeos

  • TEDE 2 rebocado para não se mover, fazendo a opção Multitarefa por 20 segundos: acionando seus motores, piscando seus LEDs e tocando Jimi Hendrix.
  • Aqui o robô foi calibrado na potência 60 de forma correta em relação ao ângulo, mas propositalmente errada em relação a distância, fazendo que o tempo de uma reta seja correspondente a um tamanho muito menor que os 30cm esperados.
    • Ótimos resultados em pequena escala, mas quando calibrado de forma certa em relação a distância, um desvio para a esquerda quando andando em linha reta começou a atrapalhar os resultados, além do fato de que um pequeno erro angular no giro tem maior impacto quanto maior for a distância percorrida
    • Melhorias: Foi feito um submenu de calibragem responsavel pelo alinhamento, compensando as diferenças entre motores, o resultado já foi bem melhor.




Trabalho Prático 3

Descrição e Decisões de Projeto

  • O objetivo deste trabalho foi familiarizar a utilização de sensores para a realização de tarefas específicas, sendo elas:
    • Identificar uma cor a partir do uso de 1 LDR e LEDs RGB
    • Seguir uma linha utilizando apenas 1 sensor óptico reflexivo.
  • Sensores:
    • Foi utilizado um sensor óptico-reflexivo (TCRT5000) de acordo com a seguinte montagem:
    • E uma combinação de um LED RGB de 4 pinos, com um LDR 7mm:
  • Caracterização do sensor:
    • Como foram feitas as medições:
    • Para a coleta de dados, foi utilizado o sistema de collect_data e dump_data, e foi utilizado um emulador de terminal serial RS232, em que foi possível salvar toda a coleta em um arquivo de texto.(Nesse caso a utilização de carriage return se tornou desnecessária, uma vez que apenas o line feed provia uma formatação ao texto simples de se transferir a uma planilha)
    • O sensor TCRT5000 montado no circuito mostrado anteriormente se mostrou bastante sólido, e não apresentou variações de sinal (ruídos) nas situações estacionárias. Infelizmente esse aspecto acaba com a intenção de detectar os ruídos nessa caracterização de sensor, mas mesmo assim foi realizado os experimentos(em 5 segundos, 100 ou 1000 medições continuavam a mostrar a consistência do sensor).
      • Gráfico mostra a consistência do sensor quando imóvel e próximo ao bloco. Não existiram variações ( O sinal ficou estável em 138)
      • Gráfico que ainda mostra a consistência do sensor quando imóvel e próximo ao bloco, mas com motores acionados. Uma pequena variação ocorreu em uma das medições (sinal 139).
      • Apesar da consistência do sensor, essa pequena variação pode ser culpa dos motores acionados, uma vez que a drenagem da bateria pode influenciar na tensão envolvida para avaliar os sinais analógicos(Vsens).
  • Análise Experimental:
    • Foram realizadas 4 coletas de dados para cada bloco colorido ( Verde, Vermelho e Azul) referentes às distâncias de 5,10,15 e 20 mm:
    • De acordo com esses resultados, um sensor óptico reflexivo só será confiável para realizar identificações de cor quanto menor for a distância em que está operando (nesse caso 5mm), uma vez que é possível ver graficamente diferenças mais claras entre as respostas de cores diferentes.
  • Identificação de cor:
    • Como visto no item sensores, foi utilizado um LED RGB de 4 pinos e um LDR 7mm para a montagem do sensor.
    • Veja vídeo da interface de identificação em funcionamento na seção de vídeos.
    • A sua qualidade para identificar cores em relação ao sensor óptico reflexivo é bastante distinta, tendo muito mais qualidade tanto em relação a diferenciação de cores como em distância do bloco em relação ao sensor.
    • Tal qualidade está associada ao grande brilho dos LEDs, associado com os shields que evitam a dispersão e também pelo fato de estar testando cada faixa de cor separadamente, ao invés de só uma faixa (infravermelho) como acontece no óptico reflexivo
    • Modificações:
      • O vídeo testa apenas verde, vermelho e azul, mas no laboratório existe um bloco amarelo. Ao se avaliar as características de resposta do amarelo, foi incluído sua opção de resposta à detecção de cor.
  • Line-Following:
    • Basicamente foi utilizado um simples algoritmo de sempre virar para um lado quando se está em um estado (dentro da linha), e de virar para o outro lado no outro estado (fora da linha)
    • Foi utilizado o conceito de hysteresis para determinar os limiares de threshold superior e inferior.
    • Modificações:
      • A posição do sensor foi modificada de forma a ficar o mais longe possível do eixo, facilitando a identificação do estado por movimentos menores.
      • A resposta do sensor era tão consistente que a obtenção dos limiares se tornava muito justa, e uma folga de 10% ajudou a melhorar o comportamento geral do algoritmo
  • Estrutura do Menu:

Imagens

  • Vista superior:
  • Vista superior detalhada ( As correntes foram retiradas, uma vez que poderiam ser prejudiciais ao funcionamento correto do robô):
  • Vista inferior:
  • Posição atualizada dos sensores:

Vídeos

  • Identificação de Cor:
    • Atualização: Adição da cor amarela
  • Line Following:
    • Primeiro teste de line_following utilizando calibração por hysteresis (cálculo ainda precisa de melhoras, pois é baseado em min e max de medições, que pelos gráficos se mostraram consistentes).
    • Atualização: Melhoria no cálculo, dando folga as medições que eram bastantes sólidas, ajudando a funcionar até em terrenos irregulares



Trabalho Prático 4

Descrição e Decisões de Projeto

  • O objetivo deste trabalho foi familiarizar a utilização de técnicas de controle, utilizando também odometria básica através de shaft-encoding.
  • Sensores:
    • Foram utilizados:
      • 2 sensores óptico-reflexivo (TCRT5000), sendo um para a tarefa de wall-folowing e outro para identificar a proximidade um objeto a frente do robô.
      • Uma combinação de um LED RGB de 4 pinos, com um LDR 7mm, para a identificação de cor
      • 1 LDR diferencial(composto de 2 LDR comuns) com filtros polarizados, sendo um polarizado verticalmente e outro horizontalmente, para realizar a tarefa de localização.
      • 2 sensores break beam PHCT 203, utilizados juntamente de engrenagens finas com 8 furos, confeccionadas a partir de um desenho recortado em tampas de plástico de sorvete, e pintadas para melhorar a quebra do sinal emitido.
  • Localização:
    • Basicamente, o robô gira 360º coletando dados do maior valor absoluto da diferença do valor do sensor e o valor de centro (valor relativo a mesma quantidade de luz em ambos os LDRs, em prática ficou em torno de 126).
    • Devido a polarização, em uma base, valores menores que o centro indicam area de interesse, e em outra, valores maiores que o centro. Por isso foi utilizado a diferença absoluta entre o valor do sensor e o centro, para ter o mesmo sistema de obtenção de máximo em ambos os casos.
    • Com o valor máximo atribuido, o robô gira até encontrar este mesmo ponto, estando assim direcionado para o campo e alinhado com a luz de base(uma vez que o LDR diferencial encontra-se apontado para trás).
  • Simple Feedback Control:
    • Primeiramente foi dada a opção de calibrar, em que se escolhe o lado que o sensor está (direito ou esquerdo), e depois os limiares interno e externo, que caracterizam a utilização do 3-state.
    • Com tais informações calibradas, o algoritmo faz:
      • Em sua forma normal: se valor do sensor está menor que o externo, faz hard_turn(P1=100, P2=0) para dentro (direita se a parede está à direita por exemplo), se está entre externo e interno, anda reto (P1=100,P2=100), e se está menor que o interno, faz hard_turn para fora(esquerda se a parede está à direita).
      • Na sua forma Gentle Turn: O mesmo esquema, mas suas curvas são mais suaves, trabalhando em potencias como P1=100,P2=80. Esse método é mais suave e mais rápido que o normal.
      • Foi incluido uma avaliação de distância de objeto, assim o robô segue a parede, mas para antes de bater com tudo em uma outra parede a sua frente.
  • Shaft Encoders:
    • Foram utilizados dois break-beams juntamente de dois círculos confeccionados de plastico fino com uma camada de tinta.
    • Foram utilizadas as bibliotecas sencdr1.icb e sencdr0.icb para implementar shaft-encoding
    • Através de medidas como o raio da roda e o raio de giro do robô, funções especificas foram feitas para retornar o valor objetivo de cliques utilizado como parâmetro no controlador PD
    • O controlador PD foi feito de forma a ter p_gain e d_gain variáveis de forma a tentar compensar por diferenças de giros nas rodas
    • Problema: Foi feito um controle baseado em distancia, o que facilitou erros de precisão. Foi apontado pelo professor que o controle deveria ser feito com a velocidade sendo objetivo. Esse problema será corrigido para o próximo trabalho.
  • Tomada de decisão :
  • Primeiramente, foi feito um controlador PD para andar em linha reta até o sensor de proximidade acusar que encontrou um objeto a sua frente. Aqui o controlador ajuda a evitar que o bloco seja atropelado, começando a diminuir a velocidade de uma forma suave.
  • Logo que um objeto foi detectado, roda-se o algoritmo de detecção de cor.
  • Para tal, simplesmente foi reaproveitado o código do trabalho anterior, modificando apenas para que logo depois de identificado, seja chamada uma função de giro ou um beep por exemplo.
  • Estrutura do Menu:

Imagens

  • T.E.D.E 4:
  • Vista Superior:
  • Vista Superior Detalhada:
  • Vista Inferior:
  • Shaft Encoder:
  • LDR Diferencial:

Vídeos

  • Localização:
  • Wall Following:
  • Shaft Encoding:
  • Tomada de decisão:
    • Gravação no laboratório. Bateria fraca influenciou no último passo, detectando um bloco mesmo que não houvesse nenhum ainda.
    • Gravação em casa. Mostrando um melhor funcionamento após carregar a bateria.



Competição

Descrição e Decisões de Projeto

  • O objetivo deste trabalho foi juntar todo o conhecimento coletado durante os outros trabalhos e aplicá-los em uma situação de resgate.
  • Sensores:
    • Foram utilizados:
      • 2 sensores óptico-reflexivo (TCRT5000), sendo um para a tarefa de line-following, outro para identificar a proximidade um objeto a frente da garra.
      • Uma combinação de um LED RGB de 4 pinos, com um LDR 7mm, para a identificação de cor
      • 1 LDR diferencial(composto de 2 LDR comuns) com filtros polarizados, sendo um polarizado verticalmente e outro horizontalmente, para realizar a tarefa de localização.
      • 2 sensores break beam PHCT 203, utilizados juntamente de engrenagens finas com 8 furos, confeccionadas a partir de um desenho recortado em tampas de plástico de sorvete, e pintadas para melhorar a quebra do sinal emitido.
      • 1 sensor de toque para identificar colisão com parede.
      • 1 LDR para identificar a ativação da luz de partida
  • Controle:
    • Foi utilizado controles proporcionais e proporcionais derivativos para controlar a localização diferencial e os movimentos do robô.
  • Estrategias:
    • Sobrevivente: Pega o bloco azul e volta para a base colocando o bloco em cima da plataforma.
    • Sobrevivente Delay: Pega o bloco azul e volta para a base e espera, colocando o bloco em cima da plataforma apenas 10 segundos para o fim da partida.
    • Sobrevivente Mais (Esquerda ou Direita): Realiza a tarefa sobrevivente, e volta ao campo para procurar mais um bloco para trazer a base, ou um preto para colocar na base inimiga.
    • Bloco (Esquerda ou Direita): Apenas procura um bloco para trazer a base, ou um preto para colocar na base inimiga.
  • A COMPETIÇÃO:
    • Infelizmente durante toda a primeira etapa da competição tivemos problemas com o que primeiramente achamos que era problema de bateria da handyboard, mas que foi descoberto ser um curto na fiação de um dos motores que estava impossibilitando o funcionamento da placa.
      • Tal problema nos rendeu vários pontos negativos por não sair de dentro da base.
    • T.E.D.E muda o nome para PHOENIX:
      • Após muita correria no intervalo, e com a ajuda da integrante Letícia do grupo Letroy que nos emprestou um motor novo guardado no laboratóro de robótica, T.E.D.E volta a funcionar, com alguns probleminhas decorrentes a remontagem, mas consegue pontuar e diminuir a grande pontuação negativa.
      • Na sua última volta, consegue realizar a estratégia sobrevivente, e por pouco não deixa o bloco na plataforma, se não fosse pelo encontro desagradável com o robô NI em sua base. (Mas manteve o bloco na garra).
    • Resumo: Foi longe do desejado, e T.E.D.E com todo o seu potencial para realizar as maiores pontuações de plataforma ficou em penúltimo lugar com -2 pontos.
  • Estrutura do Menu:

Imagens

  • T.E.D.E 5:
  • Elevador:
  • Frente:
  • Trás:

Vídeos

  • Sobrevivente:

—-



cursos/introrobotica/2014-1/grupo01/index.txt · Última modificação: 2014/06/03 07:04 por grupo1-141