Olá pessoal, tudo bem?

Hoje estamos aqui para falar dos famosos erros que acontecem com os robôs. Já aconteceu da sua equipe estar preparada para fazer uma pontuação muito alta e chega no dia da competição, acontece diversos fatores inesperados com seu robô e você até diz que ele “bugou”. Mas será que ele bugou mesmo? Ou muitas vezes achamos que nosso amigo soltou de maneira torta ou errado né? Nesse artigo iremos explicar como calcular matematicamente o erro do seu robô.

Fatores mecânicos que influenciam na precisão dos robôs

Antes de entrarmos na explicação referente aos erros, precisamos considerar alguns fatores na hora da criação da estrutura do robô. Os fatores abaixo implicam diretamente na eficiência dos robôs e na sua precisão:

  • Cambagem;
  • Centro de Gravidade;
  • Estrutura Sólida/Treliças;
  • Simetria;
  • Apoio;
  • Tamanho da roda.

 

Se o seu robô tiver uma cambagem nula, a chance dele andar reto é maior. Quando o centro de gravidade é muito alto, mais instável será seu robô. Na estrutura do robô deve se considerar uma estrutura sólida (utilizando treliças por exemplo) e um padrão de simetria para equilibrar o peso. Na questão do apoio, não podemos definir um melhor ou pior por conta do atrito que tem em cada apoio, porém é necessário fazer um teste de incerteza linear para tirar conclusões exatas. Esse teste iremos explicar abaixo.

O tamanho da roda influencia diretamente na precisão do robô, quanto maior o diâmetro da roda, maior será distancia que ele conseguirá em um grau do motor do EV3 (Menor medida que podemos girar o motor do EV3/NXT, ou seja, medida mais precisa possível). Porém, quanto menor a roda, menor será a velocidade do seu robô. A imagem abaixo explica muito bem o que difere uma roda pequena de uma roda grande. Fizemos uma postagem explicando especificamente de rodas, clique aqui para conferir.

Entendendo a imprecisão

Quando estamos programando e construindo nossos equipamentos, muitas vezes acreditamos que nossos robôs vão fazer o mesmo trajeto sempre. E ficamos extremamente chateados quando ele não atinge os resultados esperados, mas como dizia o filósofo grego Heráclito:

Não podemos nos banhar duas vezes no mesmo rio porque as águas se renovam a cada instante.

– Heráclito

 

Mas qual é a relação dessa citação com robôs? Fatores externos ou até mesmo internos atrapalham na precisão do nosso robô em larga escala. A partir dessa questão, podemos imaginar o que nos ajuda na precisão do nosso robô, os famosos sensores.

Sensores do EV3

Um sensor é um dispositivo que responde a um estímulo físico/químico de maneira específica e mensurável analogicamente. Portanto, podemos pedir para o nosso robô se alinhar nas linhas utilizando um sensor de luz, ou pedir para o robô andar até o sensor ultrassônico determinada distância da parede. Utilizamos sensores a todo momento na FLL, até mesmo na hora de definir os graus que os motores irão girar. Dentro do motor existe um sensor encoder que define o quanto o motor irá rotacionar.  Os sensores nos ajudam ter referenciais para nos basear. Mas será que isso é o bastante?

Demonstrando a precisão real

Na hora criar a estratégia do nosso robô de FLL, criamos linhas por onde o robô irá passar. Contudo, essas linhas não representam o caminho exato por onde o robô irá passar. A melhor forma de representar a trajetória exata por onde o robô irá passar é calculando a incerteza linear e a incerteza angular do robô e a partir daí, simular em um software gráfico a sua possível trajetória.

Abaixo mostramos um exemplo real da possível trajetória do robô em três pontos, pode-se perceber que conforme maior a distância que o robô percorre, maior vai ficando a abertura do cone e é realmente isso que acontece na prática:

 

Exemplo de trajetória criada para demonstrar o aumento de imprecisão/incerteza
conforme a movimentação do robô.

Incerteza Linear

Quando os dois motores se movimentam no mesmo sentido e de maneira síncrona, temos um movimento linear. Entretanto, quando trabalhamos com LEGO, temos um brinquedo de alta performance nas nossas mãos, mas não extremamente preciso. Em alguns casos, o robô começa andar de maneira torta por contas das questões físicas explícitas acima ou por conta de um motor girar mais que o outro. Isso é normal, mas não podemos ignorar este fator. Logo quanto maior a distância, maior será a sua imprecisão.

Para calcular o quanto o seu robô erra, precisaremos de uma caneta, uma fita crepe e um papel de pelo menos 1,5 metros. Antes de fazermos o teste, crie um programa que o robô ande 1 metro. Você pode fazer isso utilizando a programação de andar em centímetros que está disponível nesse link. Utilize uma força média para que o robô não sofra com o derrapamento no final.

Prenda a fita na parte frontal do robô de modo que ela risque o papel como mostra a imagem abaixo:

A caneta não pode estar abaixo da linha do robô para não atrapalhar sua trajetória

Em seguida, posicione o papel de maneira que ele fique estendido e reto. Utilize algo para distanciar o robô das paredes verticais, pode ser um gabarito construído de LEGO. Solte o robô pelo menos 25 vezes do mesmo ponto inicial com a caneta presa, faça círculos indicando os pontos finais onde o robô parou. Depois de fazer as marcações, meça com uma régua a distância do ponto mais alto para o ponto mais baixo como mostra a figura abaixo:

Portanto podemos dizer que em 1 metro que nosso robô andou, ele poderia ter andado 4 cm para baixo ou para cima. Com essa medida, podemos concluir a incerteza linear de qualquer distância. Essa medida é proporcional e podemos descobrir através de uma regra de três simples. Por exemplo: se a incerteza linear é 4cm/m, se o robô percorrer 20 centímetros, ele terá 0,8 cm de incerteza linear como mostra a figura abaixo:

O cálculo para distâncias menores se baseia na medida maior.
Basta fazer uma proporção para saber a incerteza linear para qualquer distância.

Incerteza Angular

Em curvas também temos o acúmulo de erro nos motores, principalmente se a curva for feita com um motor para um sentido e o outro para outro sentido. (Isso é explicado no post “Andando Milimetricamente”, para ver clique aqui). Nós recomendamos que as curvas sejam feitas travando um motor e girando o outro diminuindo a movimentação do outro motor. Com as curvas dessa maneira, podemos analisar a incerteza durante as curvas ou incerteza angular. Para isso, vamos criar precisar de uma fita crepe uma caneta laser (não precisa ser um laser profissional).  O laser será a nossa marcação na parede após as curvas como demonstrada a figura abaixo:

Você pode fazer os testes de incerteza angular na própria mesa da FLL.

O primeiro passo é prender uma fita no laser para que ele fique sempre ligado da seguinte maneira:

Em seguida, prenda o laser no robô de maneira que ele fique reto e não atrapalhe na hora de realizar as curvas como mostrado na figura abaixo:

Prenda um pedaço de aproximadamente 20 cm na parede da mesa e faça uma marcação inicial onde o laser está apontando. Crie um programa inicial onde seu robô ande exatamente 360º no próprio eixo com uma força baixa. Você pode fazer isso usando a programação “Curva B” ou “Curva C” disponível nesse link. O vídeo abaixo mostra como deve ser feita a programação:

(OBS: Coloque um bloco “Esperar” de 2 segundos no início da programação para que a força do seu dedo não interfira na trajetória do robô)

Após a programação de 360º ser criada, crie uma com 1800º no próprio eixo e utilize uma força média que você costuma utilizar nas programações do seu robô. Faça pelo menos 20 amostras soltando o robô sempre do mesmo ponto e marcando o ponto onde o laser parou. O resultado será aproximadamente o abaixo:

Em seguida, meça a distância da maior e da menor amostra. Essa será a sua incerteza angular em 5 voltas. Divida essa distância por 5 e aí você terá a incerteza angular a cada giro de 360º no próprio eixo. No caso do nosso robô a incerteza angular é de 1,68 cm / 360º. Todos os robôs possuem incertezas lineares e angulares, basta você considerar isso e construir mecanismos que hajam diminuam a sua interferência.

Note que ali a marcação “18” está bem distante das demais, podemos associá-la com a Lei de Murphy, onde isso é possível acontecer. Porém, considere essa marcação também, o seu robô pode agir de acordo com a Lei de Murphy no dia do campeonato.

Conclusão

Por mais preciso que seu robô seja, concluímos com os teste que qualquer dispositivo eletromecânico está sujeito à erros. É preciso entendê-los e analisá-los e construir mecanismos para que diminuam as chances de erro, como travas ou alinhadores referenciais. Também é imprescindível a utilização de sensores para verificação de posicionamento tais como sensores de luz, rotação, botão, ultrassônicos e giroscópios.

A estratégia é fundamental também pois como foi provado com os testes, o quanto menos o robô se desloca, menor será o erro. Logo, se você tiver uma boa estratégia onde o robô realize missões sem perder sua precisão, você terá mais chances de realizar aquelas missões. Abaixo você confere a nossa estratégia para etapa nacional com todos os pontos de incerteza e todos os referenciais utilizados em X e Y para zerar o erro.

 

Exemplo de referencial mecânico:

Trava mecânica na base da missão compartilhada (Animal Allies)

Exemplo de referencial sensorial:

Controle P ou Controle P.I.D. no sensor de luminosidade, conhecido como seguidor de linha

Exemplo de referêncial sensorial + mecânico = SUCESSO