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

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

Fotos do projeto

Primeira versão da junta prismática Imagem 1: Primeira versão da junta prismática

Versão final da junta prismática Imagem 2: Versão final da junta prismática

Caixa de redução para junta de revolução Imagem 4: Caixa de redução para junta de revolução

Primeira montagem Imagem 5: Primeira montagem do robô

Montagem final Imagem 6:Versão final do robô

Robolo de cenoura Imagem 7: Versão final do robô

Robolo de cenoura, com HB Imagem 8: Montagem final com a Handy Board

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:

Decisões de projeto

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

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ô

Caixa de redução




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ô:

Decisões de projeto

Dificuldades

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

Dificuldades

Imagens / Vídeos do robô

Sensores LDR com filtro polarizado

Sensores LDR com filtro polarizado

Parte traseira dos sensores LDR com filtro polarizado

Parte traseira dos sensores LDR com filtro polarizado

Canaleta para organização dos fios

Canaleta para organização dos fios

Break beam para shaft encoding

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:

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.

Figura:: Diminuição no tamanho da estrutura do robô

Figura:: Robô em versão final