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
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 + RRem 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.
- ProjetoConstrua um robô Mecanum que se desloca lateralmente
- ProjetoConstrua um rover GPS de pontos de passagem que dirige sozinho
- Caminho de aprendizagemAcionamento holonômico: mover-se de lado sem girar
- Caminho de aprendizagemControle de motores para robôs: roteiro de aprendizagem
- Caminho de aprendizagemSeguimento de caminhos para robôs: roteiro de aprendizagem
Leitura complementar