Tabela de conteúdos
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:
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
- 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
- Fotos dos projetos: http://flic.kr/s/aHsjSvB6nb
- Vídeos dos testes: http://www.youtube.com/playlist?list=PL2Y9jEEmr2dKUs3hemZZe-rCVhkrV7ebR
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º).
- 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.
- Código Fonte:tede2-codigofonte.zip
Imagens
- 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.
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:
- 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:
- 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:
- Código Fonte:tede3-codigofonte.zip
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:
- Código Fonte:tede4_codigofonte.zip
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:
- Código Fonte: tede5_codigofonte.zip
Imagens
Vídeos
- Sobrevivente:
—-