Tabela de conteúdos
Grupo 9 - Robolo de cenoura
Trabalho prático 1: manipulador robótico
Objetivo
O objetivo deste trabalho é a construção de um manipulador robótico, que deverá percorrer a trajetória pré-definida na especificação do Trabalho Prático 1.
Decisões de projeto
O grupo decidiu por pensar rapidamente na ideia de como seria o Software do robô (não queríamos determinar o movimento do robô na “força bruta”), para então escolher o tipo de manipulador que iríamos adotar (tendo dois motores, as melhores ideias seriam RP ou RR).
Software / Algoritmo
A ideia do grupo é mapear a área que contém a trajetória a ser cumprida, através de um sistema de coordenadas cartesiano [x,y] onde x e y são inteiros e seus valores medidos em milímetros. O centro desse sistema de coordenadas seria o centro da área, ou seja, a posição 200mm por 200mm com relação ao centro apresentado na especificação do TP1.
Sendo assim, dada uma posição xy, a ser atingida, e a posição atual, o robô saberia calcular qual o deslocamento que deveria ser empregado pela junta prismática e o giro que a junta rotacional deveria realizar. Portanto, bastaria obter empiricamente a velocidade de deslocamento da junta prismática, com o seu motor na potência máxima e a velocidade da junta de revolução, na mesma situação, para saber, aproximadamente, por quanto tempo cada motor deveria operar, entre um ponto e outro. E isso sem qualquer tipo de sensoriamento, conforme especificação do TP.
É claro que, seguindo por apenas esta lógica, certamente o robô sairia da trajetória. Por exemplo: entre os pontos iniciais especificados, existem pontos que estão distantes um do outro. Isto torna possível que a distância entre a trajetória e o centro do robô, diminua e depois aumente (ou vice-versa) durante um mesmo deslocamento retilíneo entre um ponto e outro. Para solucionar este problema, programamos o robô para, dados um ponto inicial e um ponto de destino (por exemplo, P1 e P2 da especificação do TP), gerar mais 8 pontos entre eles, equidistantes, construindo uma trajetória dividida em 10 pontos. Assim, para cada deslocamento entre dois pontos não tão distantes (calculados), o Robolo de Cenoura determina por quanto tempo e em que sentido os motores das juntas rotacional e prismática devem operar.
Funcionamento: Definimos as posições dos pontos P1, P2, P3, P4, P5 e P6, definimos o ponto inicial como sendo P1. Em um loop iterativo, entre os pontos Pi e Pi+1, o robô cria 10 pontos intermediários (incluindo Pi e Pi+1), também de forma iterativa (ou seja, não são armazenados 10 pontos, mas sim determinados a cada passo) para calcular cada passo da trajetória.
Estrutura
- Decidimos construir um robô com duas juntas: Uma junta de revolução e uma junta prismática
- Dado que o motor a ser utilizado na junta de revolução operava a 5580rpm, em 9V, construímos uma caixa de redução que totaliza uma redução de 275:1, obtendo uma velocidade angular de 2*pi/5 rad/s.
- Também utilizamos uma redução de 40:1 para a junta prismática, utilizando uma transmissão com parafuso sem fim e uma engrenagem de 40 dentes, que nos deu aproximadamente 40mm/s de deslocamento do lápis.
Tendo como base a ideia do software, optamos por um manipulador RP ao invés de um RR por, no início do projeto, acreditarmos que o controle do robô seria mais fácil bem como a determinação do posicionamento do robô no sistema de coordenadas adotado.
Dificuldades
- Handyboard #9 apresentou aparente defeito no armazenamento de carga da bateria
- Acoplamento do motor a um eixo de Lego: O motor tinha um eixo de motor de DVD. Compramos um suporte de DVD (peça que encaixa no DVD e o gira) e vimos que esta não desliza sobre o eixo. Utilizando abraçadeiras, prendemos uma peça de lego ao suporte, centralizamos e encaixamos um eixo nela.
- Detectada “folga” na junta de revolução, no dia da apresentação, que gerava instabilidade no movimento. Esta folga foi causada, principalmente, pelo alto valor da redução: um grande movimento sobre o eixo final, corresponde a um movimento ainda mínimo no eixo inicial, eixo onde é acoplado o motor.
- Conciliação de horários dos integrantes do grupo, implicando em poucas reuniões para elaboração do trabalho.
- Posicionamento da HandyBoard na estrutura: destacamos este erro, pois focamos fortemente a estrutura do robô e demos pouca atenção ao tamanho da Handyboard, cujo posicionamento, por isso, foi um pouco improvisado e geraria muitos problemas caso o robô se movimentasse.
Fotos do projeto
Imagem 1: Primeira versão da junta prismática
Imagem 2: Versão final da junta prismática
Imagem 4: Caixa de redução para junta de revolução
Imagem 5: Primeira montagem do robô
Vídeo
Robolo de Cenoura em operação:
Trabalho prático 2: Robótica móvel
Objetivos
Desenvolver um robô que se desloque em três trajetórias pré-definidas. Espera-se:
- a implementação de seu controle com o conceito de malha aberta, isto é, o dispositivo atuador irá funcionar sem uma variável monitorando sua atividade e realimentando-o;
- a execução de tarefas em paralelo: acionamento de leds durante o deslocamento;
- o trajeto percorrido deverá ser desenhado em uma folha de papel;
- opções de operação disponíveis em um menu na Handyboard.
Decisões de projeto
- a rotação do motor, em função de sua alta velocidade, diversas vezes arremessou engrenagens durante o funcionamento. Para contornar essa situação, as engrenagens ligadas diretamente ao motor foram conectadas por correias. Além disso, o motor será utilizado com a alimentação a 50% da sua capacidade total. Com essa velocidade o robô consegue ser rápido o suficiente, sem prejudicar as suas estruturas.
- o lápis usado para desenhar a trajetória do robô foi posicionado o mais próximo possível do eixo central das rodas traseiras. Isso aumenta a exatidão de onde serão desenhadas as linhas.
- Foram utilizadas caixas que reduzem em 75x a rotação do motor.
- para conferir mais liberdade às trajetórias curvas do robô, foi usada uma terceira roda, esférica, oposta às outras duas, com 3DoF.
Software/Algoritmo
Inspirado na metodologia adotada para o Software do Trabalho Prático 1, o software desta versão do Robolo de Cenoura se baseia na velocidade linear e a velocidade angular do robô (calculadas utilizando a rotação do eixo da roda e o raio da roda e revisadas empiricamente). Depois de definidas estas constantes, foram determinadas duas funções: função de deslocamento (Walkouglas) e função de rotação (Turnouglas). A primeira recebe via parâmetro a distância desejada (cm) e determina o tempo que os motores devem ser ligados e realiza o deslocamento. A segunda recebe o ângulo que se deseja rotacionar (rad), e calcula por quanto tempo os motores devem ser acionados, em sentido contrário um do outro, além do sentido de giro do robô (horário ou anti-horário). Com base nisso, o seguinte código é executado:
#define RETA 30.0 //distancia a ser percorrida em linha reta
#define RAIZ_DE_2 1.41421
void Retouglas() {
Turnouglas(PI/2.0);
Walkouglas(RETA);
Turnouglas(PI);
Walkouglas(RETA);
Turnouglas(PI/2.0);
}
void Triangulouglas() {
Walkouglas(RETA);
Turnouglas(PI/2.0 + PI/4.0);
Walkouglas(RETA * RAIZ_DE_2);
Turnouglas(PI/2.0 + PI/4.0);
Walkouglas(RETA);
Turnouglas(PI/2.0);
}
void Quadradouglas(){
int i;
for (i = 0; i < 4; i = i + 1) {
Walkouglas(RETA);
Turnouglas(PI/2.0);
}
}
P.S.: Em outro arquivo, PI está definido como 3,14159.
Dificuldades
- Conciliação de horários dos integrantes do grupo, implicando em poucas reuniões para elaboração do trabalho.
- A restrição de peças é sempre um fator importante nas dificuldades de montagem do robô. A montagem das caixas de redução, bem como a garantia do giro simétrico dos motores foi uma dificuldade muito encontrada por nós durante a montagem do robô.
Experimentos
Foram realizados alguns testes para modelar o funcionamento do motor, tendo em vista que o controle do funcionamento dele é em malha aberta, ou seja, não envolve o uso de sensores. Para medir a velocidade linear de movimentação do robô a determinadas tensões, foram medidas as distâncias percorridas em 5 segundos para o motor funcionando a 20% da potencia máxima e a 50% da potência máxima.
Os gráficos acima representam nos pontos os valores medidos. Os traços vermelhos superior e inferior representam os máximos e mínimos medidos, e o traço azul dentro desse intervalo indica o valor médio. Para obter um valor específico para as velocidades, utilizamos o valor médio, e a incerteza da velocidade é o desvio padrão.
A conclusão que chegamos é que as velocidades lineares do motor são:
Para o motor operando a 20% da capacidade: V = 8,19 +- 0,11 cm/s
Para o motor operando a 50% da capacidade: V = 1,78 +- 0,16 cm/s
Para a velocidade angular do motor, tentamos medir a 20% também, contudo a uma potencia mais baixa o robô não girou corretamente. Como o ponto de operação foi definido para a 50% da capacidade, fizemos o teste da velocidade angular para essa potência. Foram medidos os tempos necessários para que o robô girasse 90 graus. Em posse desses valores, dividimos o ângulo pi/2 pelos tempos necessários em segundos para obter as medidas de velocidades angulares.
O gráfico acima representa nos pontos os valores medidos. Os traços vermelhos superior e inferior representam os máximos e mínimos medidos, e o traço azul dentro desse intervalo indica o valor médio. Para obter um valor específico para as velocidades, utilizamos o valor médio, e a incerteza da velocidade é o desvio padrão.
O valor da velocidade angular obtido para os motores operando a 50% da capacidade foi:
W = 0,4893 +- 0,0197 rad/s
Imagens / Vídeos do robô
Estágio intermediário de desenvolvimento do robô
Estágio intermediário de desenvolvimento do robô
Estágio intermediário de desenvolvimento do robô
Trabalho prático 3: Sensores
Objetivos
Construir um robô que atue no ambiente de acordo com a leitura de seus sensores. Espera-se que o robô:
- percorra uma trajetória seguindo linhas pretas sobre o chão;
- identifique blocos de isopor de múltiplas cores;
Decisões de projeto
- Montagem de sensor óptico-reflexivo: sensor pronto não encontrado
- Sensores usados no line following posicionados próximos ao eixo das rodas
- Posicionamento do sensor na parte dianteira do robô, que identifica as cores dos blocos aproximando-se deles
- sensor embutido entre peças, de modo a diminuir influência da luz ambiente no sensor
Dificuldades
- Conciliação de horários dos integrantes do grupo, implicando em poucas reuniões para elaboração do trabalho.
- Tratamento os valores lidos pelo sensor na memória da Handyboard, pois os valores numéricos terminavam com outros caracteres não numéricos (ex.: 199E, 28Ã).
- Incerteza de dados do sensor LDR
Imagens / Vídeos do robô
Sensor LDR + LEDs (montagem para identificação de blocos coloridos)
Sensor LDR + LEDs (montagem para identificação de blocos coloridos)
Posicionamento do sensor óptico (montagem intermediária)
Posicionamento do sensor óptico (montagem intermediária)
Trabalho prático 4: Sensores
Objetivos
Desenvolvimento de odometria básica (shaft-encoding) e familiarização com técnicas básicás de controle.
Decisões de projeto
- Instalação de dois sensores break-beam para implementação da odometria básica
- Uso de um disco de seis furos em cada sensor break-beam para medição de odometria
- Construção de sensores LDR diferenciais utilizando filtros polarizados para identificar para que lado do campo o robô está virado.
- O sensor LDR com LEDs na parte frontal do robô, construído na etapa anterior, foi mantido
Dificuldades
- Regular o sensor diferencial para identificar o lado do campo
- Regular a odometria de forma correta para o robô andar em linha reta
- Conciliação de horários dos integrantes do grupo, implicando em poucas reuniões para elaboração do trabalho.
Imagens / Vídeos do robô
Sensores LDR com filtro polarizado
Parte traseira dos sensores LDR com filtro polarizado
Canaleta para organização dos fios
Break beam para shaft encoding
Trabalho Final: Robô Caça-Aedes
Introdução
O trabalho final da disciplina “Introdução à Robótica” teve como um tema atual: O mosquito Aedes Aegypti. Esse mosquito, que é responsável pela transmissão do vírus Zika, da febre Chicungunya, da Dengue e da Febre Amarela foi tema de diversos documentários durante esse ano, e portanto, serviu como a motivação para o trabalho final da disciplina.
Objetivos e Regras
Essencialmente, o objetivo do robô é recolher material. Para identificar os materiais de maior valor, o robô deve utilizar uma identificação por cores. Para iniciar sua tarefa, o robô deve aguardar o acendimento da luz na base, e após essa etapa, ele tem 60 segundos para levar o maior numero de blocos até a base, ou afixá-los em sua estrutura.
O campo dispõe de linhas marcadoras no chão e luzes polarizadas para localização, e blocos de diferentes cores distribuidos sobre o campo. O bloco preto trata de material contaminado, isso significa que ele não deve ser levado para a base, sob pena de perda de pontos na competição.
Os robôs tem que estar contidos, no máximo, em um cubo de aresta 30cm, ser totalmente autônomo e controlado apenas pelo controlador escolhido pelos grupos.
Decisões de Projeto
A estratégia escolhida para a busca dos blocos foi seguir a linha até se encontre algum dos blocos, e depois deslocá-lo para a base. Os equipamentos utilizados para isso foram:
- Sensor LDR + 3 leds para identificação de cores dos blocos
- Dois sensores LDR com lentes polarizadoras (orientação do robô a partir de luzes polarizadas)
- Uma roda esférica e duas motorizadas; em cada roda motorizada, um break beam para shaft encoders
- Dois sensores óticos para identificação das linhas na superfície
Estrutura
Foram realizados ajustes estruturais para que o chassi ficasse mais firme.
Figura::Chassi do robô na montagem final
A torre onde se encontram os LDR's com lentes polarizadoras foi reduzida, a fim de diminuir o peso do robô, Além disso boa parte da estrutura foi reduzida para tornar o robô mais leve e, portanto, mais eficiente.
















