Trabalho Prático I
Histórico
30 de Agosto
Procuramos a especificação do trabalho na página, mas não encontramos .
11 de Setembro
Construímos um sistema para converter músicas midi em músicas compatíveis com o IC e com a Handyboard. O problema é que arquivos midi, normalmente são polifônicos, então tivemos que filtrar antes apenas os tons que achamos que identificavam as músicas, o que, às vezes, não coincidia com os tons que o sistema escolhia. Através desse nosso sistema, podemos colocar qualquer midi dentro da Handyboard e tocá-la com as notas e tempos corretos.
12 de Setembro
Terminamos de construir os menus e as interfaces gráficas para usuário. A handyboard está pronta.
13 de Setembro
Começamos a construção do robô, no laboratório de Robótica. Fizemos vários testes de robustez. Largamos o robo de três alturas diferentes, o que nos deu confiança de que o robô é capaz de suportar até as condições mais extremas.
19 de Setembro (tudo que é bom dura pouco :-P)
Hoje terminamos o nosso mais novo robô. Fizemos todos os testes exigidos na página. Calibramos o robô para fazer o quadrado. Tudo parece funcionar bem.
Para o teste de translação utilizamos uma cartolina branca e uma caneta hidrocor. Mais tarde postaremos uma foto com os resultados. Notamos que a diferenca entre 100% de potencia e 60% de potencia foi consideravelmente menor do que a diferenca entre 20% e 60%.
Para a calibracao do quadrado utilizamos opcoes disponiveis em nosso menu. O quadrado ficou bom, com um pouco de imprecisao, natural nesse tipo de trabalho, onde nao existem sensores e as pecas de lego nao sao muito precisas.
Agora nos iremos recarregar a bateria para fazer a apresentacao com a bateria totalmente carregada.
Como de costume, aqui está o video do robô no youtube. Fazendo um belo quadrado!
20 de Setembro
A seguir algumas fotos do robô. O PDF da documentação estará disponivel em breve.
Relatório Final
1 Introdução
O objetivo do trabalho é estudar o funcionamento da HandyBoard e um controle simples para um robô. A proposta para atingir esse objetivo foi desenvoler um robô capaz de desenhar três quadrados (com 30cm de lado) em uma folha de cartolina, implementar o toque de uma música e implementação de um menu para selecionar os modos de operação do robô.
Para o trabalho tinhamos disponíveis peças do kit LEGO dacta, dois motores elétricos e a HandyBoard, acoplada a uma bateria. Bem como fios, solda, tubo termo-retrátil e cola quente. A HandyBoard é uma placa com microcontroladores, entradas para motor, saída de audio e um LCD para a visualização do menu. A HandyBoard é ligada aos motores de forma que ela é a responsável por controlar o comportamento do robô.
2 Estrutura e Funcionamento
Existem duas caixas de engrenagens simétricas dos dois lados do robô. Cada uma foi implementada de forma a ter uma redução de 187.5. Acoplado ao motor existe uma engrenagem de 8 dentes, essa engrenagem gira outra de 24 dentes que está encaixada no eixo que leva a rotação para dentro da caixa de engrenagem, onde existem mais duas reduções de engrenagens de 8 dentes ligadas a de 40 dentes (25 de redução no total). Ao sair da caixa de engrenagens há mais uma redução de uma engrenagem de 16 dentes para uma engrenagem de 40 dentes. Essa engrenagem de 40 dentes está ligada no mesmo eixo das rodas do robô. Para fazer o quadrado a HandyBoard envia 100% de sua potência para os dois motores durante um tempo, depois ele envia 100% para um motor em um sentido e 100% de potência para o outro motor no sentido contrário durante um tempo. Esse processo é repetido 12 vezes (de forma a fazer 3 quadrados). O tempo de andar reto e fazer a curva é configurável no menu “Calibragem”. No item “Tempo Reto” calibra-se o tempo de andar reto. No item “Tempo Curva” calibra-se o tempo que ele fica rodando para fazer o vértice do quadrado. O tempo selecionado é em milisegundos. O menu “Calibragem” possui mais uma terceira opção onde podemos escolher um némero para balancear os motores, de forma a linha ficar o mais reto possível. Todas funções que ligam o motor 1 usam uma variável chamada “const_potencia”, essa é a variável selecionada nessa opção e ela entra na chamada pra ligar o motor da seguinte maneira:
motor(m1, potencia - const_potencia); motor(m2, potencia + const_potencia);
Como um motor é um pouco diferente do outro, precisamos utilizar essa variável para equilibrar as coisas. A opção “multitarefa” faz o robô andar por 30s enquanto toca uma musica. Essa opção também é afetada pela calibragem de “const_potencia”. A opção “musica” apenas toca a mésica sem qualquer atuação do motor. E a opção “Liga motor” liga o motor com a potência escolhida em “Motor direito” e “Motor esquerdo”. Essa opção também é influenciada pela variável “const_potencia”. Como nosso objetivo era fazer um quadrado, descobrimos experimentalmente que o tempo para fazer uma reta deveria ser de aproximadamente 55s e o tempo para a curva de aproximadamente 37s. Apesar disso variar a medida que a bateria descarrega. Já a variável “const_potencia” foi escolhida para ter um valor próximo de −1, tendo em vista que a diferença entre os motores não era muito grande.
3 Aprendizagem
Como o objetivo do trabalho era estudar a HandyBoard e a construção de um robô, a documentação não estaria completa sem que dissessemos o que aprendemos com o projeto. Com uma maioria de alunos de ciência da computação é de se esperar que nossa maior dificuldade foi na montagem do robô. Gastamos aproximadamente uma tarde para ter todo o menu funcionando, com todas opções e calibragens. Já a parte de música gastamos um pouco mais, precisamos fazer um programa que transforma RTTL para um conjunto de funções IC, o que gastou mais tempo que todo o menu, tivemos que debugar o programa e consertar as músicas que baixamos para funcionar adequadamente no beeper da HandyBoard. Nós baixamos as músicas em formato MIDI e transformamos em RTTL usando programas que podem ser encontrados na Internet. Com a programação aprendemos a trabalhar com o formato MIDI. Aprendemos também como trabalhar com IC, uma versão de C com menos recursos. Uma vez que já sabiamos C, aprender a usar o IC foi bem simples. A maior dificuldade foi lembrar das funções, mas para isso usamos uma tabela com os nomes e descrições das funções da biblioteca IC. Já para a construção do robô gastamos uma semana, com vários dias mal dormidos, até que conseguimos chegar na versão final. A nossa maior dificuldade foi fazer uma caixa de engrenagem que funcionasse suavemente, uma vez que as engrenagens sempre tinham mais atrito que o ideal. Aprendemos com isso que o ideal seria reduzir o máximo possível a rotação antes de entrar na caixa de engrenagens. Aprendemos, também, que o ideal ´e não juntar muitas engrenagens em níveis diferentes sem ter peças de lego as separando, uma vez que, mesmo com travamento, esse tipo de configuração não é muito estável e acaba produzindo mais atrito. Aprendemos também que um bom roteamento dos cabos é fundamental para que as engrenagens não acabem estragando os fios. E, se velocidade não é um dos objetivos, é melhor fazer mais reduções e ter um robô lento, mas que anda, do que fazer poucas reduções e ter um robô muito rápido mas que não sai do lugar com o peso da HandyBoard.
4 Experimentos
Os experimentos se encontram na documentação no formato pdf.