Tabela de conteúdos
Introdução:
Neste trabalho nos foi proposto o desafio de desenvolver um robô com uma caneta
presa em um braço e que este conseguisse realizar um percurso prédeterminado
As condições impostas na especificação eram de que não se era permitido o uso de
sensores e o uso de mais de dois motores. Abaixo seguese uma ilustração
mostrando qual o caminho que o robô deveria percorrer:
Com a base fixada no centro do quadrado cinza e a caneta sempre sobre o papel durante o percurso, o braco do robô deveria percorrer o caminho de P1 a P6 sem sair da linha pontilhada. O tempo máximo estipulado para a realização da tarefa foi de quatro minutos.
Tomada de decisões:
A primeira decisão que tivemos que tomar foi o número de motores e os tipos de juntas que usaríamos. Optamos pelo uso de dois motores pelo fato do movimento ser em cima de um plano. O uso de apenas um motor tornaria a implementação mais complexa. Optamos também pela implementação do robô com uma junta de revolução e uma prismática.
Após essas definições iniciais, começamos a montar o corpo do robô com lego. Primeiramente montamos a base onde fica a junta de revolução e construímos uma caixa de redução de 75:1.
Após a montagem da base, construímos o braço, conectamos a caneta e começamos a fazer alguns testes. O torque fornecido pela caixa era satisfatório e o movimento de revolução estava sendo feito corretamente.
Sendo assim, partimos para a implementação da junta prismática. Foi aí que tivemos as maiores dificuldades. A princípio tentamos fazer o movimento de translação sem caixa de redução mas não obtemos torque suficiente. Construímos uma caixa de redução 1:25 e o problema foi resolvido.
A partir deste momento o robô já executava os movimentos de translação e rotação mas percebemos que o movimento de translação ainda não era executado corretamente. Isso se devia a um problema de baixa sustentação do braço. A peça que ligava a base ao braco era muito pequena. A solução encontrada foi aumentar o tamanho dessa peça e assim conseguimos resolver o problema.
Acima podese ver o braço final. Repare no aumento da peça de conexão embaixo do motor.
Testes:
Os nossos testes foram feitos na base de tentativa e erro. Os dois motores funcionam ao mesmo tempo. E buscamos encontrar combinações entre o tempo de funcionamento de ambos que nos desse o caminho desejado. Tivemos muitas dificuldade nesses testes pois o processo era muito sujeito a erros, como:
1) A caneta deveria começar sempre no mesmo ponto 2) A medida que testávamos muitas vezes o papel ficava sobrecarregado de tinta e o atrito da caneta com o papel mudava, alterando sua posição final 3) A folha não estar completamente colada na mesa
Dividimos os testes em trechos. Primeiro fizemos o movimento de P1 a P2. Cada trecho foi dividido entre 5 a 8 passos no programa. Depois fazemos os testes para P2 a P3. Quando acabamos, testamos o percurso P1 a P3 e assim fizemos ate chegar a P6.
A fim de simular “passos” no motor foi implementada uma função para executar passos em determinados intervalos. A função recebe como parâmetro o numero do motor, uma forca(potencia do motor variando de 100 a 100), um tempo de pulso (tempo em que o motor irá ficar ligado) e um tempo entre o pulso (tempo que o motor ira ficar desligado, quando este tempo acabar o motor é ligado novamente ficando ligado o tempo de pulso passado como parâmetro) void executarPassoMotor(int m, int forca, float tempoPulso, float tempoEntrePulso) {
while(emExecucao){
motor(m, forca);
sleep(tempoPulso);
off(m);
sleep(tempoEntrePulso);
}
}
Utilizando esta função foram criados os passos para percorrer o caminho.
O fonte completo pode ser acessado em : https://github.com/wagnerteixeira/Robotica
Após todos os testes feitos, obtivemos nossa versão do robô final que pode ser vista abaixo:


