Tutorial · Intermediário · 30 min

Patinação das rodas: por que a odometria deriva e como combatê-la

Entenda o limite de aderência das rodas, por que um giro no lugar sempre patina e como a patinação sistemática acumula erro na odometria.

Introdução

Faça um robô percorrer um quadrado de um metro de lado, com quatro curvas de 90°, e volte ao ponto inicial. Ele não chega. Calibre o diâmetro das rodas e a bitola até que os trajetos retos fiquem exatos, execute novamente e ele continua não chegando — além de errar por uma margem diferente no carpete e no azulejo.

Este site cita a patinação das rodas como causa na página de odometria, na página de encoders, no projeto micromouse e em mais meia dúzia de páginas. Nenhuma delas diz o que a patinação realmente é, quanto dela existe ou quais partes você pode corrigir.

Um encoder mede a roda, não o solo

Essa frase resume todo o assunto.

Um encoder conta as rotações da roda. A odometria precisa do deslocamento do robô sobre o solo. Os dois valores só são iguais enquanto a região de contato não desliza, e a diferença é a taxa de patinação — a fração do movimento da roda que não se tornou deslocamento do robô:

slip = (wheel travel − ground travel) / wheel travel

Duas consequências moldam tudo o que vem a seguir:

A patinação é invisível por dentro. Nenhum encoder, por melhor que seja, pode detectá-la, porque o encoder está medindo justamente a coisa que se moveu. Essa é a mesma cegueira da folga da caixa de engrenagens e tem o mesmo remédio: uma fonte que meça o mundo externo.

Não é ruído. O ruído se cancela por média; a patinação, em geral, não. A seção penúltima explica por quê.

O limite de aderência no contato

Um pneu só pode empurrar com a força que o atrito transmite:

F_max = µ × N

N é a carga normal realmente apoiada nas rodas acionadas — não toda a carga do robô. O mesmo produto determina quão forte o robô pode empurrar outro objeto, a única situação em que você quer que o limite de aderência no contato seja tão alto quanto possível, em vez de apenas alto o suficiente. Um chassi 2D típico com rodízio concentra cerca de metade a dois terços de sua massa no eixo motriz, e a restante não contribui para a força de tração.

Dividindo a expressão pela massa, o limite se torna uma aceleração:

a_max = µ × (weight fraction on driven wheels) × g
Dois gráficos empilhados. O superior mostra a aceleração máxima antes da patinação subindo conforme a fração do peso sobre as rodas acionadas, para três superfícies: borracha sobre madeira com atrito 0,9, concreto pintado com 0,6 e azulejo empoeirado com 0,3, com uma linha tracejada marcando 0,5 metro por segundo ao quadrado na parte baixa do gráfico. O gráfico inferior mostra o erro de orientação crescendo com o número de giros no lugar de 90 graus para 2 por cento de patinação em uma roda: uma reta para patinação sistemática chegando a 27 graus após 60 curvas, e uma curva de raiz quadrada muito mais plana para patinação de sinal aleatório chegando a cerca de 7 graus.
Em cima: no azulejo empoeirado, com 55% do peso no eixo motriz, um robô consegue 1,6 m/s² antes de as rodas perderem aderência — três vezes os 0,5 m/s² que a página de dimensionamento do motor assumiu, então esse projeto tem margem. Embaixo: a mesma patinação de 2% representa 45° de erro de orientação após 50 curvas se for sistemática e 6° se seu sinal for aleatório. Baixar SVG

A leitura útil do painel superior é que o movimento reto raramente é limitado pela aderência em um robô de hobby. Até a pior superfície mostrada ali oferece mais de três vezes a aceleração solicitada por um projeto típico. Se o seu robô está patinando em linha reta, você está comandando uma variação em degrau em vez de uma rampa — exatamente o que um perfil de movimento existe para evitar.

Girar é outra história.

Um giro no lugar sempre patina

Um robô de acionamento diferencial tem rodas fixas. Elas podem rolar para a frente e para trás, mas não conseguem se deslocar lateralmente — e um giro no lugar exige exatamente esse deslocamento.

Gire o chassi em torno do centro, e cada ponto da região de contato de cada pneu descreve um arco, enquanto a roda só consegue rolar ao longo de uma linha reta tangente a ela. A diferença é o arrastamento lateral: o pneu é arrastado pelo piso durante toda a curva. Uma região de contato larga produz mais arrastamento do que uma estreita, e um rodízio que não gira livremente também entra em atrito com o solo durante a curva.

Portanto, um giro no lugar não é uma manobra que pode patinar. É uma manobra que patina por construção, e a orientação estimada pelos encoders fica errada todas as vezes pela mesma quantidade aproximada e na mesma direção.

Essa última característica é o problema.

A patinação sistemática é o tipo perigoso

Considere uma bitola de 90 mm. Um giro de 90° faz cada roda percorrer 70,7 mm. Se uma roda perder 2% desse valor por arrastamento, a orientação fica 0,9° curta — um número pequeno o bastante para passar despercebido em qualquer curva isolada.

Agora execute um labirinto. O painel inferior da figura mostra dois cenários possíveis:

  • Sinal aleatório — algumas curvas ficam curtas e outras longas. O erro cresce como √N. Após 50 curvas, ele mede cerca de 6°, e constitui realmente um passeio aleatório que você pode modelar.
  • Sistemático — cada curva à esquerda produz arrastamento do mesmo modo e pelo mesmo motivo. O erro cresce como N. Após 50 curvas, ele é 45°, e o robô percorre um corredor que acredita estar em outro lugar.

Os robôs reais estão muito mais próximos do segundo cenário. O arrastamento vem de uma geometria que não muda entre curvas e, portanto, o erro também não muda. É por isso que “deriva um pouco” se torna “está perdido” ao longo de uma execução, e é por isso que o micromouse precisa de um giroscópio, não de encoders melhores.

Como medir a patinação

Três testes, do mais barato ao mais informativo.

Faça um trajeto reto e meça. Marque o piso, comande exatamente 1000 mm e meça a distância percorrida. Repita em duas superfícies. Um erro de escala consistente é calibração; um erro que muda com a superfície é patinação.

Faça dez giros e examine o resultado. Comande dez curvas de 90° — 900°, ou duas voltas e meia completas. Marque a orientação inicial e meça a final. Divida o erro por dez. Isso amplifica um erro por curva que, de outro modo, seria impossível de medir, e é o teste mais útil desta página.

Compare os encoders com um giroscópio. Se você tiver um MPU-6050, integre a leitura da taxa de rotação no eixo Z durante uma curva e compare-a com a orientação estimada pelos encoders. A discordância é a patinação, medida diretamente, em tempo real e sem marcações no piso. Onde os dois divergem, os encoders estão errados — o giroscópio não depende do que as rodas fizeram.

Um pico de corrente sem aceleração correspondente é a outra assinatura em tempo real: o motor está trabalhando, mas o robô não está se movendo.

O que realmente ajuda

Use rampas em todos os comandos. Um degrau comandado na velocidade das rodas pede aceleração infinita; o pneu fornece o que consegue e desliza pelo restante. Aplicar um perfil ao comando não custa nada e representa a maior melhoria isolada.

Gire em um arco sempre que puder. Um arco faz as duas rodas rolarem para a frente em velocidades diferentes e gera muito menos arrastamento do que um giro no lugar. Onde o mapa permitir, prefira-o — essa é também a solução para a folga, porque um arco nunca inverte uma roda.

Coloque o peso sobre as rodas motrizes e mantenha o rodízio livre. Carga sobre um rodízio não acionado não produz força de tração.

Estreite a região de contato se você faz muitos giros. Pneus largos e aderentes ajudam a aceleração, mas prejudicam os giros no lugar; o compromisso é real e vale considerá-lo deliberadamente.

Não tente aumentar µ apenas com mais aderência. Mais atrito faz a patinação começar mais tarde, mas não torna a odometria correta. Isso aumenta a margem; não corrige o problema.

O que não ajuda

A odometria de rodas é uma estimativa por integração. Ela não tem referência externa, portanto a patinação, a folga e o erro de diâmetro se acumulam e nunca são corrigidos — essa é a mesma deriva ilimitada descrita no caminho de controle de motores e é uma propriedade do método, não um defeito da sua construção.

A solução é obter uma segunda referência:

  • Um giroscópio corrige a orientação, que é o erro mais prejudicial, e é barato.
  • Referências de parede ou linha redefinem a posição lateral sempre que uma é vista — é assim que um seguidor de parede permanece fiel ao longo de um corredor.
  • Um mapa — por correspondência de varreduras ou SLAM — corrige posição e orientação, ao custo de um LiDAR e muito mais computação.

A odometria é excelente ao longo de um metro e inútil ao longo de cem. Projete em torno disso em vez de tentar corrigi-la.

Quando dá errado

Sintoma Normalmente
O quadrado nunca fecha apesar de trajetos retos perfeitos Arrastamento durante o giro no lugar; meça-o com o teste de dez giros
Distância correta no azulejo, curta no carpete Patinação, não calibração — o erro acompanha a superfície
O erro de orientação cresce continuamente na mesma direção Patinação sistemática; um giroscópio é a solução barata
O erro cresce rapidamente no início e depois se estabiliza em um corredor A parede está corrigindo a posição — a referência está fazendo seu trabalho
O robô só patina durante a partida Degrau comandado em vez de rampa
Giroscópio e encoders discordam durante as curvas Correto — essa discordância é a medição
Pneus mais aderentes não corrigiram a odometria A aderência elevou o limiar de início da patinação; não tornou os encoders honestos
Só uma roda parece patinar Distribuição de carga ou um rodízio preso, não o motor

O hábito que vale levar é o teste de dez giros. Ele converte um erro que ninguém vê em um número e, depois que você tem o número, pode dizer se precisa de um giroscópio, de uma rampa ou de nada.

O conjunto de acionamento em que a patinação é o mecanismo

Tudo acima trata a patinação como uma falha. Em uma base mecanum, ela é o mecanismo de funcionamento: os roletores deslizam lateralmente de propósito, e é assim que o robô consegue se mover de lado. Vale deixar as consequências bem claras, porque elas mudam o que você deve medir, e não o esforço que deve investir para corrigir o robô.

  • A odometria lateral é a informação mais fraca do robô, não um problema de ajuste. O encoder está preso à roda, e a roda deliberadamente não representa o deslocamento do robô sobre o piso.
  • Há uma verificação simples, mas parcialmente cega. Quatro rodas e três graus de liberdade deixam uma equação redundante — FL + FR = RL + RR em qualquer chassi rígido e aderente —; portanto, o resíduo detecta uma roda patinando e não vê as quatro patinando simultaneamente. A dedução está aqui.
  • A solução são rodas auxiliares sem torque. Rodas mortas omnidirecionais montadas sobre molas não recebem torque e, portanto, não patinam por comando; elas transformam a pior informação do robô na melhor.

Reduza a aderência e veja os encoders continuarem insistindo que o robô chegou.

Explore o grafo

Faz parte destas montagens

Projetos e caminhos de aprendizagem que incluem este tutorial.

Leitura complementar

Referências