Ferramentas do usuário

Ferramentas do site


cursos:introrobotica:2018-1:grupo06:tp2

Trabalho prático 2: Locomoção, sensores & paralelismo

O projeto
O TP2 aborda a robótica móvel e as interações entre o robô e ambiente. O braço manipulador do último TP teve que ser desmontado (:c) para elaborarmos uma estrutura sobre rodas capaz de realizar movimentos simples de rotação e movimentação linear. Além disso, o novo robô utiliza sensores para medir algumas informações básicas do ambiente.

Foram definidas três tarefas para este trabalho, e cada uma delas pode ser acessada independentemente por meio de um menu programado no Arduino:

  1. locomover-se em três trajetos pré-definidos: uma linha reta, um quadrado e um triângulo;
  2. Utilizar o sensor para identificar a cor de cubos presentes no laboratório;
  3. Realizar a locomoção e identificação de cubos em paralelo, tomando uma decisão baseada na cor do cubo.

A estrutura

O nosso robô tem formato de paralelepípedo, com uma extensão que comporta a roda esférica e um sensor de luminosidade. O interior contém dois motores (e as respectivas reduções), um para cada roda comum. O Arduino encaixa-se no topo da estrutura.

Programação

Como as tarefas propostas eram independentes, estas foram divididas entre o grupo para agilizar a programação:

  • Tarefa 1: locomoção - A movimentação do robô baseia-se em duas funções, avanco() e rotacao(). Cada uma recebe uma velocidade e um tempo em milissegundos como parâmetros. Para realizar a tarefa 1, aplicamos uma sequência dessas funções para cada forma geométrica necessária, com um intervalo de 10 segundos entre cada uma para reorientar o robô. As velocidades e tempos foram determinados empiricamente, de acordo com as pilhas disponíveis para o projeto. [foto dele mexendo]

  • Tarefa 2: Sensoriamento - O sensor foi construído combinando um sensor LDR e um LED que emite as três cores primárias (RGB). Os componentes foram montado em uma placa e encaixados na estrutura de lego na parte frontal do robô. O programa controla a emissão das três faixas de luz, capta a resposta de cada uma e, comparando as informações recebidas, determina a cor do objeto colocado à sua frente.

  • Tarefa 3: multitarefa - As tarefas simultâneas consistem em locomover o robô em linha reta, até que ele encontre um cubo colorido. A partir daí, o robô tomaria uma decisão de acordo com a cor do cubo encontrado (virar para a direita, virar para a esquerda, dar meia-volta, dar uma volta completa). Passados 10 segundos sem encontrar nenhum cubo, o robô para.
    A tarefa 3 foi programada usando as funções implementadas nas tarefas 1 e 2, adaptadas para não utilizarem a função delay() do Arduino (Essa função bloqueia o processamento do Arduino, impedindo a realização do paralelismo).

Desafios encontrados

O principal desafio encontrado está nas rodas do robô. O uso de motores diferentes causa problemas para equalizar a velocidade das rodas. Se as rodas se movimentarem com velocidades diferentes, o robô não consegue se movimentar em linha reta.

A primeira tentativa de solução foi utilizar motores “iguais”. Mesmo assim as velocidades estavam um pouco diferentes. Essa discrepância foi amenizada alterando a redução de um dos motores para compensar, além de um pouco de tentativa&erro no código.

Outro desafio importante foi realizar a tarefa 3. Demoramos para fazer a matemática correta dos 10 segundos (por exemplo, resetar o contador depois de encontrar um bloco), resultando em algumas batidas e tombamentos.

Conclusão

Com relação ao projeto de manipuladores, foi mais fácil corrigir as discrepâncias entre os motores que contornar os problemas causados pelo atrito do manipulador. Entretanto, o paralelismo adiciona desafios um pouco mais complicados na robótica, obrigando-nos a utilizar os recursos do processador de forma mais eficiente.

Considerações para o próximo projeto

Para o próximo projeto, devemos considerar diminuir o peso do robô para aumentar a vida útil das pilhas, e sobrarem peças Lego para aumentar o reforço estrutural do robô.

Galeria

cursos/introrobotica/2018-1/grupo06/tp2.txt · Última modificação: por 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki