====== Trabalho Prático 1 ======
===== Introdução =====
O primeiro trabalho teve como objetivo a familiarização dos alunos com a montagem geral de um robô feito de lego e com o controle dele através de software. Assim, o objetivo do trabalho inicial foi a montagem de um robô que desenhasse, sobre uma cartolina, três círculos e três quadrados sobrescritos. Além disso, foi pedida a realização de quatro exercícios do livro texto.
===== Estrutura mecânica =====
{{:cursos:introrobotica:2011-2:grupo04:robot02.jpg?200|}}
A estrutura mecânica construída para o robô foi projetada para permanecer firme mesmo em caso de quedas de mais de 30cm de altura ou impactos semelhantes. Do mesmo modo, ela foi feita para que as rotações do motor não deslocassem suas estruturas. Isso foi feito través da montagem de diversas peças de forma cruzada, com o auxílio de pequenos pinos, para que a força dos impactos pudesse ser bem distribuída na estrutura do robô.
^^^
|{{:cursos:introrobotica:2011-2:grupo04:3.jpg?200|}}|{{:cursos:introrobotica:2011-2:grupo04:4.jpg?200|}}|
===== Motor e engrenagens =====
Na montagem foram utilizadas apenas uma engrenagem e um pinhão em cada roda, isto para que a transferência de potência do motor do robô, para duas rodas, desse uma certa velocidade, sem sacrificar a potência necessária para se obter uma tração razoável sobre a superfície por onde o robô se deslocaria.
^^^
|{{:cursos:introrobotica:2011-2:grupo04:1.jpg?200|}}|{{:cursos:introrobotica:2011-2:grupo04:5.jpg?200|}}|
===== Montagem da Caneta =====
A caneta foi colocada entre os eixos das duas rodas, isto permitiu que o robô pudesse rotacionar mantendo a ponta da caneta no mesmo lugar. Para mantermos a caneta no lugar, construímos uma estrutura com legos, de forma que a caneta fosse encaixada, sem se mexer ao longo do percurso, na verdade, a caneta podia se deslocar verticalmente, assim permitindo que o traço deixado pela caneta fosse continuo, independentemente das oscilações na superfície por onde o robô passasse.
===== Sensores =====
Os sensores utilizados neste trabalho foram os Shaft Encoders, que são capazes de medir a quantidade de rotações feitas por uma determinada peça circular. No caso, eles foram utilizados para a medição das rotações das rodas do robô para que, através de operações sobre este número, fosse estimada a distância que o robô se deslocou. Este método gera uma imprecisão considerável, uma vez que a as mais sutis imprecisões da superfície de contato sob o robô geravam erros nas mudanças, uma vez que nem sempre uma rotação da roda significava uma determinada distância percorrida. Entretanto, devido às limitações do projeto estes foram os únicos sensores utilizados.
{{:cursos:introrobotica:2011-2:grupo04:2.jpg?200|}}
===== Handy board e o software do projeto =====
Responsável pelo armazenamento e execução dos códigos que faziam o robô se movimentar, a handy board ficou conectada aos motores do robô durante todo o processo de execução da tarefa proposta. Os softwares criados controlavam a direção e velocidade angular de rotação das rodas, para que assim o robô pudesse se deslocar em linha reta ou fazer curvas: para este segundo caso, bastava fazer as rodas girarem em direções contrárias.
A imprecisão gerada pela limitação dos sensores relacionada à instabilidade da superfície, e à imprecisão dos motores fez necessária a inclusão de correções de erro de calculo no software: fez-se o programa de modo que, a cada poucos segundos, fossem verificadas as velocidades das duas rodas do robô e, caso estas fossem diferentes, estas fossem corrigidas.
===== Execução do trabalho =====
==== Quadrado ====
==== Círculo ====
===== Conclusão =====
Na apresentação final do trabalho o robô, executando os quadrados e círculos propostos com ótima precisão. Os integrantes do grupo foram familiarizados com todo o processo e as dificuldades da montagem e programação de um robô de lego. Deste modo, os objetivos do trabalho foram cumpridos.
===== Exercícios complementares =====
==== Exercício 1 ====
Utilizamos os sensores break-beam para construir um shaft-encoder. Fizemos a montagem mostrada na Figura 5.9. Seção 5.2.3 do livro, para execução do exercício. Calibramos os parâmetros de um controle Proportional Derivative (PD).
{{:cursos:introrobotica:2011-2:grupo04:pdcontrol.jpg|}}
Para a coleta dos dados alteramos o algoritmo proposto no livro de referência. O programa obtido é mostrado abaixo.
#include sencdr0.icb
#define SAMPLES 750
#define pgain 4
#define dgain 1
int data[SAMPLES];
void collect_data(){
int i, power=-100, counts, velocity;
counts = 100;
for(i=0; i< 249;){
power = (pgain * (0 - counts) - dgain * velocity);
if(power<0){
velocity = -encoder0_velocity;
counts -= encoder0_counts;
}else{
velocity = encoder0_velocity;
counts += encoder0_counts;
}
if(power<-100)power=-100;
if(power>100)power=100;
motor(0, power);
printf("%d %d %d\n",counts,velocity, power);
data[i++] = counts;
data[250+i] = velocity;
data[500+i] = power;
encoder0_counts=0;
msleep(30L);
}
}
int main (){
collect_data();
off(0);
off(1);
}
==== Exercício 4 ====
Nós encontramos algumas dificuldades em manter o robô em linha reta, uma delas foi a calibração dos parâmetros de controle. Outra dificuldade foi porque fizemos os testes com o robô em uma superfície escorregadia, o que causava resultados aleatórios. Outra dificuldade encontrada foi na folga existente entre as engrenagens do motor e da roda, e como o sensor estava localizado no eixo do motor, a roda podia deslocar alguns milímetros sem o sensor detectar. O sensor por utilizar uma roda com apenas 6 buracos, é bem discreto, o que gerava erros de contagem de distância e consequentemente desvios laterais na reta.
==== Medida do erro de rotação ====
{{:cursos:introrobotica:2011-2:grupo04:errorot.png|}}
Testamos a rotação de 90º no robô em 3 diferentes potências, e para cada potência, fizemos 3 testes. Acima podemos visualizar os resultados dos teste. Podemos perceber que apesar da diferença de potências, as rotações foram próximas porque usamos shaft encoders.
==== Medida do erro de translação ====
{{:cursos:introrobotica:2011-2:grupo04:errotra.png|}}
Na imagem acima, encontra-se os resultados de alguns testes feitos. Podemos ver que quanto maior a potência maior é a distância percorrida e maior é a diferença da distância medida (em milimetros) na programa e a distância real, acreditamos que isto se deve as arrancadas, que podem fazer as rodas deslizarem sem sair do lugar.
===== Referências =====
MARTIN, Fred G. //Robotic Explorations: An Introduction to Engineering Through Design//. Prentice Hall; ISBN: 0-130-89568-7.\\